diff --git a/.DS_Store b/.DS_Store index 9498e50..4e48a82 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/CHANGELOG.md b/CHANGELOG.md index 0336a47..ffca296 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [6.0.4](https://github.com/mailjet/mailjet-apiv3-nodejs/compare/v6.0.3...v6.0.4) (2023-07-24) + + +### Bug Fixes + +* content-length header for GET requests ([be51c9d](https://github.com/mailjet/mailjet-apiv3-nodejs/commits/be51c9d94e20b35329a3331ddfe5ab80030fbf7c)) + ### [6.0.3](https://github.com/mailjet/mailjet-apiv3-nodejs/compare/v6.0.2...v6.0.3) (2023-07-12) diff --git a/README.md b/README.md index 6d1068d..7ab96b6 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ # Mailjet JS [![Build Status](https://travis-ci.org/mailjet/mailjet-apiv3-nodejs.svg?branch=master)](https://travis-ci.org/mailjet/mailjet-apiv3-nodejs) -![Current Version](https://img.shields.io/badge/version-6.0.3-green.svg) +![Current Version](https://img.shields.io/badge/version-6.0.4-green.svg) ## Overview diff --git a/dist/CHANGELOG.md b/dist/CHANGELOG.md index 0336a47..ffca296 100644 --- a/dist/CHANGELOG.md +++ b/dist/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [6.0.4](https://github.com/mailjet/mailjet-apiv3-nodejs/compare/v6.0.3...v6.0.4) (2023-07-24) + + +### Bug Fixes + +* content-length header for GET requests ([be51c9d](https://github.com/mailjet/mailjet-apiv3-nodejs/commits/be51c9d94e20b35329a3331ddfe5ab80030fbf7c)) + ### [6.0.3](https://github.com/mailjet/mailjet-apiv3-nodejs/compare/v6.0.2...v6.0.3) (2023-07-12) diff --git a/dist/README.md b/dist/README.md index 6d1068d..7ab96b6 100644 --- a/dist/README.md +++ b/dist/README.md @@ -10,7 +10,7 @@ # Mailjet JS [![Build Status](https://travis-ci.org/mailjet/mailjet-apiv3-nodejs.svg?branch=master)](https://travis-ci.org/mailjet/mailjet-apiv3-nodejs) -![Current Version](https://img.shields.io/badge/version-6.0.3-green.svg) +![Current Version](https://img.shields.io/badge/version-6.0.4-green.svg) ## Overview diff --git a/dist/VERSION.md b/dist/VERSION.md index 39c5d6a..b1a3205 100644 --- a/dist/VERSION.md +++ b/dist/VERSION.md @@ -1 +1 @@ -6.0.3 \ No newline at end of file +6.0.4 \ No newline at end of file diff --git a/dist/mailjet.node.js b/dist/mailjet.node.js index 61e4ad5..61cf641 100644 --- a/dist/mailjet.node.js +++ b/dist/mailjet.node.js @@ -1,3 +1,3 @@ /*! For license information please see mailjet.node.js.LICENSE.txt */ -!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?exports.mailjet=a():e.mailjet=a()}(this,(()=>{return e={9118:(e,a,i)=>{e.exports={parallel:i(9162),serial:i(1357),serialOrdered:i(9087)}},7651:e=>{function a(e){"function"==typeof this.jobs[e]&&this.jobs[e]()}e.exports=function(e){Object.keys(e.jobs).forEach(a.bind(e)),e.jobs={}}},5912:(e,a,i)=>{var n=i(9265);e.exports=function(e){var a=!1;return n((function(){a=!0})),function(i,o){a?e(i,o):n((function(){e(i,o)}))}}},9265:e=>{e.exports=function(e){var a="function"==typeof setImmediate?setImmediate:"object"==typeof process&&"function"==typeof process.nextTick?process.nextTick:null;a?a(e):setTimeout(e,0)}},7594:(e,a,i)=>{var n=i(5912),o=i(7651);e.exports=function(e,a,i,s){var t=i.keyedList?i.keyedList[i.index]:i.index;i.jobs[t]=function(e,a,i,o){return 2==e.length?e(i,n(o)):e(i,a,n(o))}(a,t,e[t],(function(e,a){t in i.jobs&&(delete i.jobs[t],e?o(i):i.results[t]=a,s(e,i.results))}))}},4528:e=>{e.exports=function(e,a){var i=!Array.isArray(e),n={index:0,keyedList:i||a?Object.keys(e):null,jobs:{},results:i?{}:[],size:i?Object.keys(e).length:e.length};return a&&n.keyedList.sort(i?a:function(i,n){return a(e[i],e[n])}),n}},5353:(e,a,i)=>{var n=i(7651),o=i(5912);e.exports=function(e){Object.keys(this.jobs).length&&(this.index=this.size,n(this),o(e)(null,this.results))}},9162:(e,a,i)=>{var n=i(7594),o=i(4528),s=i(5353);e.exports=function(e,a,i){for(var t=o(e);t.index<(t.keyedList||e).length;)n(e,a,t,(function(e,a){e?i(e,a):0!==Object.keys(t.jobs).length||i(null,t.results)})),t.index++;return s.bind(t,i)}},1357:(e,a,i)=>{var n=i(9087);e.exports=function(e,a,i){return n(e,a,null,i)}},9087:(e,a,i)=>{var n=i(7594),o=i(4528),s=i(5353);function t(e,a){return ea?1:0}e.exports=function(e,a,i,t){var r=o(e,i);return n(e,a,r,(function i(o,s){o?t(o,s):(r.index++,r.index<(r.keyedList||e).length?n(e,a,r,i):t(null,r.results))})),s.bind(r,t)},e.exports.ascending=t,e.exports.descending=function(e,a){return-1*t(e,a)}},9669:(e,a,i)=>{e.exports=i(1609)},7970:(e,a,i)=>{"use strict";var n=i(4867),o=i(6026),s=i(4097),t=i(5327),r=i(3685),c=i(5687),p=i(938).http,l=i(938).https,u=i(7310),d=i(9796),m=i(7288).version,f=i(7874),x=i(2648),v=i(644),h=/https:?/,b=["http:","https:","file:"];function g(e,a,i){if(e.hostname=a.host,e.host=a.host,e.port=a.port,e.path=i,a.auth){var n=Buffer.from(a.auth.username+":"+a.auth.password,"utf8").toString("base64");e.headers["Proxy-Authorization"]="Basic "+n}e.beforeRedirect=function(e){e.headers.host=e.host,g(e,a,e.href)}}e.exports=function(e){return new Promise((function(a,i){var y;function w(){e.cancelToken&&e.cancelToken.unsubscribe(y),e.signal&&e.signal.removeEventListener("abort",y)}var k=function(e){w(),a(e)},j=!1,_=function(e){w(),j=!0,i(e)},C=e.data,E=e.headers,S={};if(Object.keys(E).forEach((function(e){S[e.toLowerCase()]=e})),"user-agent"in S?E[S["user-agent"]]||delete E[S["user-agent"]]:E["User-Agent"]="axios/"+m,n.isFormData(C)&&n.isFunction(C.getHeaders))Object.assign(E,C.getHeaders());else if(C&&!n.isStream(C)){if(Buffer.isBuffer(C));else if(n.isArrayBuffer(C))C=Buffer.from(new Uint8Array(C));else{if(!n.isString(C))return _(new x("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",x.ERR_BAD_REQUEST,e));C=Buffer.from(C,"utf-8")}if(e.maxBodyLength>-1&&C.length>e.maxBodyLength)return _(new x("Request body larger than maxBodyLength limit",x.ERR_BAD_REQUEST,e));S["content-length"]||(E["Content-Length"]=C.length)}var O=void 0;e.auth&&(O=(e.auth.username||"")+":"+(e.auth.password||""));var A=s(e.baseURL,e.url),T=u.parse(A),R=T.protocol||b[0];if(-1===b.indexOf(R))return _(new x("Unsupported protocol "+R,x.ERR_BAD_REQUEST,e));if(!O&&T.auth){var P=T.auth.split(":");O=(P[0]||"")+":"+(P[1]||"")}O&&S.authorization&&delete E[S.authorization];var B=h.test(R),N=B?e.httpsAgent:e.httpAgent;try{t(T.path,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(a){var z=new Error(a.message);z.config=e,z.url=e.url,z.exists=!0,_(z)}var L={path:t(T.path,e.params,e.paramsSerializer).replace(/^\?/,""),method:e.method.toUpperCase(),headers:E,agent:N,agents:{http:e.httpAgent,https:e.httpsAgent},auth:O};e.socketPath?L.socketPath=e.socketPath:(L.hostname=T.hostname,L.port=T.port);var D,F=e.proxy;if(!F&&!1!==F){var q=R.slice(0,-1)+"_proxy",M=process.env[q]||process.env[q.toUpperCase()];if(M){var U=u.parse(M),I=process.env.no_proxy||process.env.NO_PROXY,H=!0;if(I&&(H=!I.split(",").map((function(e){return e.trim()})).some((function(e){return!!e&&("*"===e||"."===e[0]&&T.hostname.substr(T.hostname.length-e.length)===e||T.hostname===e)}))),H&&(F={host:U.hostname,port:U.port,protocol:U.protocol},U.auth)){var V=U.auth.split(":");F.auth={username:V[0],password:V[1]}}}}F&&(L.headers.host=T.hostname+(T.port?":"+T.port:""),g(L,F,R+"//"+T.hostname+(T.port?":"+T.port:"")+L.path));var K=B&&(!F||h.test(F.protocol));e.transport?D=e.transport:0===e.maxRedirects?D=K?c:r:(e.maxRedirects&&(L.maxRedirects=e.maxRedirects),e.beforeRedirect&&(L.beforeRedirect=e.beforeRedirect),D=K?l:p),e.maxBodyLength>-1&&(L.maxBodyLength=e.maxBodyLength),e.insecureHTTPParser&&(L.insecureHTTPParser=e.insecureHTTPParser);var G=D.request(L,(function(a){if(!G.aborted){var i=a,s=a.req||G;if(204!==a.statusCode&&"HEAD"!==s.method&&!1!==e.decompress)switch(a.headers["content-encoding"]){case"gzip":case"compress":case"deflate":i=i.pipe(d.createUnzip()),delete a.headers["content-encoding"]}var t={status:a.statusCode,statusText:a.statusMessage,headers:a.headers,config:e,request:s};if("stream"===e.responseType)t.data=i,o(k,_,t);else{var r=[],c=0;i.on("data",(function(a){r.push(a),c+=a.length,e.maxContentLength>-1&&c>e.maxContentLength&&(j=!0,i.destroy(),_(new x("maxContentLength size of "+e.maxContentLength+" exceeded",x.ERR_BAD_RESPONSE,e,s)))})),i.on("aborted",(function(){j||(i.destroy(),_(new x("maxContentLength size of "+e.maxContentLength+" exceeded",x.ERR_BAD_RESPONSE,e,s)))})),i.on("error",(function(a){G.aborted||_(x.from(a,null,e,s))})),i.on("end",(function(){try{var a=1===r.length?r[0]:Buffer.concat(r);"arraybuffer"!==e.responseType&&(a=a.toString(e.responseEncoding),e.responseEncoding&&"utf8"!==e.responseEncoding||(a=n.stripBOM(a))),t.data=a}catch(a){_(x.from(a,null,e,t.request,t))}o(k,_,t)}))}}}));if(G.on("error",(function(a){_(x.from(a,null,e,G))})),G.on("socket",(function(e){e.setKeepAlive(!0,6e4)})),e.timeout){var $=parseInt(e.timeout,10);if(isNaN($))return void _(new x("error trying to parse `config.timeout` to int",x.ERR_BAD_OPTION_VALUE,e,G));G.setTimeout($,(function(){G.abort();var a=e.transitional||f;_(new x("timeout of "+$+"ms exceeded",a.clarifyTimeoutError?x.ETIMEDOUT:x.ECONNABORTED,e,G))}))}(e.cancelToken||e.signal)&&(y=function(e){G.aborted||(G.abort(),_(!e||e&&e.type?new v:e))},e.cancelToken&&e.cancelToken.subscribe(y),e.signal&&(e.signal.aborted?y():e.signal.addEventListener("abort",y))),n.isStream(C)?C.on("error",(function(a){_(x.from(a,e,null,G))})).pipe(G):G.end(C)}))}},5448:(e,a,i)=>{"use strict";var n=i(4867),o=i(6026),s=i(4372),t=i(5327),r=i(4097),c=i(4109),p=i(7985),l=i(7874),u=i(2648),d=i(644),m=i(205);e.exports=function(e){return new Promise((function(a,i){var f,x=e.data,v=e.headers,h=e.responseType;function b(){e.cancelToken&&e.cancelToken.unsubscribe(f),e.signal&&e.signal.removeEventListener("abort",f)}n.isFormData(x)&&n.isStandardBrowserEnv()&&delete v["Content-Type"];var g=new XMLHttpRequest;if(e.auth){var y=e.auth.username||"",w=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";v.Authorization="Basic "+btoa(y+":"+w)}var k=r(e.baseURL,e.url);function j(){if(g){var n="getAllResponseHeaders"in g?c(g.getAllResponseHeaders()):null,s={data:h&&"text"!==h&&"json"!==h?g.response:g.responseText,status:g.status,statusText:g.statusText,headers:n,config:e,request:g};o((function(e){a(e),b()}),(function(e){i(e),b()}),s),g=null}}if(g.open(e.method.toUpperCase(),t(k,e.params,e.paramsSerializer),!0),g.timeout=e.timeout,"onloadend"in g?g.onloadend=j:g.onreadystatechange=function(){g&&4===g.readyState&&(0!==g.status||g.responseURL&&0===g.responseURL.indexOf("file:"))&&setTimeout(j)},g.onabort=function(){g&&(i(new u("Request aborted",u.ECONNABORTED,e,g)),g=null)},g.onerror=function(){i(new u("Network Error",u.ERR_NETWORK,e,g,g)),g=null},g.ontimeout=function(){var a=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",n=e.transitional||l;e.timeoutErrorMessage&&(a=e.timeoutErrorMessage),i(new u(a,n.clarifyTimeoutError?u.ETIMEDOUT:u.ECONNABORTED,e,g)),g=null},n.isStandardBrowserEnv()){var _=(e.withCredentials||p(k))&&e.xsrfCookieName?s.read(e.xsrfCookieName):void 0;_&&(v[e.xsrfHeaderName]=_)}"setRequestHeader"in g&&n.forEach(v,(function(e,a){void 0===x&&"content-type"===a.toLowerCase()?delete v[a]:g.setRequestHeader(a,e)})),n.isUndefined(e.withCredentials)||(g.withCredentials=!!e.withCredentials),h&&"json"!==h&&(g.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&g.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&g.upload&&g.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(f=function(e){g&&(i(!e||e&&e.type?new d:e),g.abort(),g=null)},e.cancelToken&&e.cancelToken.subscribe(f),e.signal&&(e.signal.aborted?f():e.signal.addEventListener("abort",f))),x||(x=null);var C=m(k);C&&-1===["http","https","file"].indexOf(C)?i(new u("Unsupported protocol "+C+":",u.ERR_BAD_REQUEST,e)):g.send(x)}))}},1609:(e,a,i)=>{"use strict";var n=i(4867),o=i(1849),s=i(321),t=i(7185),r=function e(a){var i=new s(a),r=o(s.prototype.request,i);return n.extend(r,s.prototype,i),n.extend(r,i),r.create=function(i){return e(t(a,i))},r}(i(5546));r.Axios=s,r.CanceledError=i(644),r.CancelToken=i(4972),r.isCancel=i(6502),r.VERSION=i(7288).version,r.toFormData=i(7675),r.AxiosError=i(2648),r.Cancel=r.CanceledError,r.all=function(e){return Promise.all(e)},r.spread=i(8713),r.isAxiosError=i(6268),e.exports=r,e.exports.default=r},4972:(e,a,i)=>{"use strict";var n=i(644);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var a;this.promise=new Promise((function(e){a=e}));var i=this;this.promise.then((function(e){if(i._listeners){var a,n=i._listeners.length;for(a=0;a{"use strict";var n=i(2648);function o(e){n.call(this,null==e?"canceled":e,n.ERR_CANCELED),this.name="CanceledError"}i(4867).inherits(o,n,{__CANCEL__:!0}),e.exports=o},6502:e=>{"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:(e,a,i)=>{"use strict";var n=i(4867),o=i(5327),s=i(782),t=i(3572),r=i(7185),c=i(4097),p=i(4875),l=p.validators;function u(e){this.defaults=e,this.interceptors={request:new s,response:new s}}u.prototype.request=function(e,a){"string"==typeof e?(a=a||{}).url=e:a=e||{},(a=r(this.defaults,a)).method?a.method=a.method.toLowerCase():this.defaults.method?a.method=this.defaults.method.toLowerCase():a.method="get";var i=a.transitional;void 0!==i&&p.assertOptions(i,{silentJSONParsing:l.transitional(l.boolean),forcedJSONParsing:l.transitional(l.boolean),clarifyTimeoutError:l.transitional(l.boolean)},!1);var n=[],o=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(a)||(o=o&&e.synchronous,n.unshift(e.fulfilled,e.rejected))}));var s,c=[];if(this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)})),!o){var u=[t,void 0];for(Array.prototype.unshift.apply(u,n),u=u.concat(c),s=Promise.resolve(a);u.length;)s=s.then(u.shift(),u.shift());return s}for(var d=a;n.length;){var m=n.shift(),f=n.shift();try{d=m(d)}catch(e){f(e);break}}try{s=t(d)}catch(e){return Promise.reject(e)}for(;c.length;)s=s.then(c.shift(),c.shift());return s},u.prototype.getUri=function(e){e=r(this.defaults,e);var a=c(e.baseURL,e.url);return o(a,e.params,e.paramsSerializer)},n.forEach(["delete","get","head","options"],(function(e){u.prototype[e]=function(a,i){return this.request(r(i||{},{method:e,url:a,data:(i||{}).data}))}})),n.forEach(["post","put","patch"],(function(e){function a(a){return function(i,n,o){return this.request(r(o||{},{method:e,headers:a?{"Content-Type":"multipart/form-data"}:{},url:i,data:n}))}}u.prototype[e]=a(),u.prototype[e+"Form"]=a(!0)})),e.exports=u},2648:(e,a,i)=>{"use strict";var n=i(4867);function o(e,a,i,n,o){Error.call(this),this.message=e,this.name="AxiosError",a&&(this.code=a),i&&(this.config=i),n&&(this.request=n),o&&(this.response=o)}n.inherits(o,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var s=o.prototype,t={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach((function(e){t[e]={value:e}})),Object.defineProperties(o,t),Object.defineProperty(s,"isAxiosError",{value:!0}),o.from=function(e,a,i,t,r,c){var p=Object.create(s);return n.toFlatObject(e,p,(function(e){return e!==Error.prototype})),o.call(p,e.message,a,i,t,r),p.name=e.name,c&&Object.assign(p,c),p},e.exports=o},782:(e,a,i)=>{"use strict";var n=i(4867);function o(){this.handlers=[]}o.prototype.use=function(e,a,i){return this.handlers.push({fulfilled:e,rejected:a,synchronous:!!i&&i.synchronous,runWhen:i?i.runWhen:null}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){n.forEach(this.handlers,(function(a){null!==a&&e(a)}))},e.exports=o},4097:(e,a,i)=>{"use strict";var n=i(1793),o=i(7303);e.exports=function(e,a){return e&&!n(a)?o(e,a):a}},3572:(e,a,i)=>{"use strict";var n=i(4867),o=i(8527),s=i(6502),t=i(5546),r=i(644);function c(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new r}e.exports=function(e){return c(e),e.headers=e.headers||{},e.data=o.call(e,e.data,e.headers,e.transformRequest),e.headers=n.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),n.forEach(["delete","get","head","post","put","patch","common"],(function(a){delete e.headers[a]})),(e.adapter||t.adapter)(e).then((function(a){return c(e),a.data=o.call(e,a.data,a.headers,e.transformResponse),a}),(function(a){return s(a)||(c(e),a&&a.response&&(a.response.data=o.call(e,a.response.data,a.response.headers,e.transformResponse))),Promise.reject(a)}))}},7185:(e,a,i)=>{"use strict";var n=i(4867);e.exports=function(e,a){a=a||{};var i={};function o(e,a){return n.isPlainObject(e)&&n.isPlainObject(a)?n.merge(e,a):n.isPlainObject(a)?n.merge({},a):n.isArray(a)?a.slice():a}function s(i){return n.isUndefined(a[i])?n.isUndefined(e[i])?void 0:o(void 0,e[i]):o(e[i],a[i])}function t(e){if(!n.isUndefined(a[e]))return o(void 0,a[e])}function r(i){return n.isUndefined(a[i])?n.isUndefined(e[i])?void 0:o(void 0,e[i]):o(void 0,a[i])}function c(i){return i in a?o(e[i],a[i]):i in e?o(void 0,e[i]):void 0}var p={url:t,method:t,data:t,baseURL:r,transformRequest:r,transformResponse:r,paramsSerializer:r,timeout:r,timeoutMessage:r,withCredentials:r,adapter:r,responseType:r,xsrfCookieName:r,xsrfHeaderName:r,onUploadProgress:r,onDownloadProgress:r,decompress:r,maxContentLength:r,maxBodyLength:r,beforeRedirect:r,transport:r,httpAgent:r,httpsAgent:r,cancelToken:r,socketPath:r,responseEncoding:r,validateStatus:c};return n.forEach(Object.keys(e).concat(Object.keys(a)),(function(e){var a=p[e]||s,o=a(e);n.isUndefined(o)&&a!==c||(i[e]=o)})),i}},6026:(e,a,i)=>{"use strict";var n=i(2648);e.exports=function(e,a,i){var o=i.config.validateStatus;i.status&&o&&!o(i.status)?a(new n("Request failed with status code "+i.status,[n.ERR_BAD_REQUEST,n.ERR_BAD_RESPONSE][Math.floor(i.status/100)-4],i.config,i.request,i)):e(i)}},8527:(e,a,i)=>{"use strict";var n=i(4867),o=i(5546);e.exports=function(e,a,i){var s=this||o;return n.forEach(i,(function(i){e=i.call(s,e,a)})),e}},3784:(e,a,i)=>{e.exports=i(6882)},5546:(e,a,i)=>{"use strict";var n=i(4867),o=i(6016),s=i(2648),t=i(7874),r=i(7675),c={"Content-Type":"application/x-www-form-urlencoded"};function p(e,a){!n.isUndefined(e)&&n.isUndefined(e["Content-Type"])&&(e["Content-Type"]=a)}var l,u={transitional:t,adapter:("undefined"!=typeof XMLHttpRequest?l=i(5448):"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)&&(l=i(7970)),l),transformRequest:[function(e,a){if(o(a,"Accept"),o(a,"Content-Type"),n.isFormData(e)||n.isArrayBuffer(e)||n.isBuffer(e)||n.isStream(e)||n.isFile(e)||n.isBlob(e))return e;if(n.isArrayBufferView(e))return e.buffer;if(n.isURLSearchParams(e))return p(a,"application/x-www-form-urlencoded;charset=utf-8"),e.toString();var i,s=n.isObject(e),t=a&&a["Content-Type"];if((i=n.isFileList(e))||s&&"multipart/form-data"===t){var c=this.env&&this.env.FormData;return r(i?{"files[]":e}:e,c&&new c)}return s||"application/json"===t?(p(a,"application/json"),function(e,a,i){if(n.isString(e))try{return(a||JSON.parse)(e),n.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(i||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var a=this.transitional||u.transitional,i=a&&a.silentJSONParsing,o=a&&a.forcedJSONParsing,t=!i&&"json"===this.responseType;if(t||o&&n.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(t){if("SyntaxError"===e.name)throw s.from(e,s.ERR_BAD_RESPONSE,this,null,this.response);throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:i(3784)},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};n.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),n.forEach(["post","put","patch"],(function(e){u.headers[e]=n.merge(c)})),e.exports=u},7874:e=>{"use strict";e.exports={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}},7288:e=>{e.exports={version:"0.27.2"}},1849:e=>{"use strict";e.exports=function(e,a){return function(){for(var i=new Array(arguments.length),n=0;n{"use strict";var n=i(4867);function o(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,a,i){if(!a)return e;var s;if(i)s=i(a);else if(n.isURLSearchParams(a))s=a.toString();else{var t=[];n.forEach(a,(function(e,a){null!=e&&(n.isArray(e)?a+="[]":e=[e],n.forEach(e,(function(e){n.isDate(e)?e=e.toISOString():n.isObject(e)&&(e=JSON.stringify(e)),t.push(o(a)+"="+o(e))})))})),s=t.join("&")}if(s){var r=e.indexOf("#");-1!==r&&(e=e.slice(0,r)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}},7303:e=>{"use strict";e.exports=function(e,a){return a?e.replace(/\/+$/,"")+"/"+a.replace(/^\/+/,""):e}},4372:(e,a,i)=>{"use strict";var n=i(4867);e.exports=n.isStandardBrowserEnv()?{write:function(e,a,i,o,s,t){var r=[];r.push(e+"="+encodeURIComponent(a)),n.isNumber(i)&&r.push("expires="+new Date(i).toGMTString()),n.isString(o)&&r.push("path="+o),n.isString(s)&&r.push("domain="+s),!0===t&&r.push("secure"),document.cookie=r.join("; ")},read:function(e){var a=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return a?decodeURIComponent(a[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},1793:e=>{"use strict";e.exports=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}},6268:(e,a,i)=>{"use strict";var n=i(4867);e.exports=function(e){return n.isObject(e)&&!0===e.isAxiosError}},7985:(e,a,i)=>{"use strict";var n=i(4867);e.exports=n.isStandardBrowserEnv()?function(){var e,a=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");function o(e){var n=e;return a&&(i.setAttribute("href",n),n=i.href),i.setAttribute("href",n),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}return e=o(window.location.href),function(a){var i=n.isString(a)?o(a):a;return i.protocol===e.protocol&&i.host===e.host}}():function(){return!0}},6016:(e,a,i)=>{"use strict";var n=i(4867);e.exports=function(e,a){n.forEach(e,(function(i,n){n!==a&&n.toUpperCase()===a.toUpperCase()&&(e[a]=i,delete e[n])}))}},4109:(e,a,i)=>{"use strict";var n=i(4867),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var a,i,s,t={};return e?(n.forEach(e.split("\n"),(function(e){if(s=e.indexOf(":"),a=n.trim(e.substr(0,s)).toLowerCase(),i=n.trim(e.substr(s+1)),a){if(t[a]&&o.indexOf(a)>=0)return;t[a]="set-cookie"===a?(t[a]?t[a]:[]).concat([i]):t[a]?t[a]+", "+i:i}})),t):t}},205:e=>{"use strict";e.exports=function(e){var a=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return a&&a[1]||""}},8713:e=>{"use strict";e.exports=function(e){return function(a){return e.apply(null,a)}}},7675:(e,a,i)=>{"use strict";var n=i(4867);e.exports=function(e,a){a=a||new FormData;var i=[];function o(e){return null===e?"":n.isDate(e)?e.toISOString():n.isArrayBuffer(e)||n.isTypedArray(e)?"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}return function e(s,t){if(n.isPlainObject(s)||n.isArray(s)){if(-1!==i.indexOf(s))throw Error("Circular reference detected in "+t);i.push(s),n.forEach(s,(function(i,s){if(!n.isUndefined(i)){var r,c=t?t+"."+s:s;if(i&&!t&&"object"==typeof i)if(n.endsWith(s,"{}"))i=JSON.stringify(i);else if(n.endsWith(s,"[]")&&(r=n.toArray(i)))return void r.forEach((function(e){!n.isUndefined(e)&&a.append(c,o(e))}));e(i,c)}})),i.pop()}else a.append(t,o(s))}(e),a}},4875:(e,a,i)=>{"use strict";var n=i(7288).version,o=i(2648),s={};["object","boolean","number","function","string","symbol"].forEach((function(e,a){s[e]=function(i){return typeof i===e||"a"+(a<1?"n ":" ")+e}}));var t={};s.transitional=function(e,a,i){function s(e,a){return"[Axios v"+n+"] Transitional option '"+e+"'"+a+(i?". "+i:"")}return function(i,n,r){if(!1===e)throw new o(s(n," has been removed"+(a?" in "+a:"")),o.ERR_DEPRECATED);return a&&!t[n]&&(t[n]=!0,console.warn(s(n," has been deprecated since v"+a+" and will be removed in the near future"))),!e||e(i,n,r)}},e.exports={assertOptions:function(e,a,i){if("object"!=typeof e)throw new o("options must be an object",o.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),s=n.length;s-- >0;){var t=n[s],r=a[t];if(r){var c=e[t],p=void 0===c||r(c,t,e);if(!0!==p)throw new o("option "+t+" must be "+p,o.ERR_BAD_OPTION_VALUE)}else if(!0!==i)throw new o("Unknown option "+t,o.ERR_BAD_OPTION)}},validators:s}},4867:(e,a,i)=>{"use strict";var n,o=i(1849),s=Object.prototype.toString,t=(n=Object.create(null),function(e){var a=s.call(e);return n[a]||(n[a]=a.slice(8,-1).toLowerCase())});function r(e){return e=e.toLowerCase(),function(a){return t(a)===e}}function c(e){return Array.isArray(e)}function p(e){return void 0===e}var l=r("ArrayBuffer");function u(e){return null!==e&&"object"==typeof e}function d(e){if("object"!==t(e))return!1;var a=Object.getPrototypeOf(e);return null===a||a===Object.prototype}var m=r("Date"),f=r("File"),x=r("Blob"),v=r("FileList");function h(e){return"[object Function]"===s.call(e)}var b=r("URLSearchParams");function g(e,a){if(null!=e)if("object"!=typeof e&&(e=[e]),c(e))for(var i=0,n=e.length;i0;)t[s=n[o]]||(a[s]=e[s],t[s]=!0);e=Object.getPrototypeOf(e)}while(e&&(!i||i(e,a))&&e!==Object.prototype);return a},kindOf:t,kindOfTest:r,endsWith:function(e,a,i){e=String(e),(void 0===i||i>e.length)&&(i=e.length),i-=a.length;var n=e.indexOf(a,i);return-1!==n&&n===i},toArray:function(e){if(!e)return null;var a=e.length;if(p(a))return null;for(var i=new Array(a);a-- >0;)i[a]=e[a];return i},isTypedArray:w,isFileList:v}},1076:function(e,a,i){"use strict";function n(e){return n="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},n(e)}var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var a,i=1,n=arguments.length;i{"use strict";var i;Object.defineProperty(a,"__esModule",{value:!0}),function(e){e.Get="get",e.Post="post",e.Put="put",e.Delete="delete"}(i||(i={})),a.default=i},4771:function(e,a,i){"use strict";function n(e){return n="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},n(e)}var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var a,i=1,n=arguments.length;i0&&o[o.length-1])||6!==s[0]&&2!==s[0])){t=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]-1?"text/plain":"application/json"},e.prototype.getRequestBody=function(e){return[x.default.Put,x.default.Post,x.default.Delete].includes(this.method)?e:void 0},e.prototype.buildFullUrl=function(){var a,i,n=this.client.getConfig(),o=null!==(a=this.config.host)&&void 0!==a?a:n.host,s=null!==(i=this.config.version)&&void 0!==i?i:n.version;return(0,u.default)(e.protocol,o,s,this.subPath,this.url)},e.prototype.buildSubPath=function(){if(this.actionPath){var e="contactslist"===this.resource&&"csvdata/text:plain"===this.actionPath,a="batchjob"===this.resource&&"csverror/text:csv"===this.actionPath;return e||a?"DATA":this.subPath}var i="send"===this.resource,n=this.resource.indexOf("sms")>-1;return i||n?"":"REST"},e.prototype.makeRequest=function(a,i,n){var s,t={url:a,params:n,data:this.getRequestBody(i),method:this.method,responseType:"json",headers:{"User-Agent":this.getUserAgent(),"Content-Type":this.getContentType(a)},transformResponse:function(a){var i="string"==typeof a,n="json"===this.responseType;return a&&i&&n?e.parseToJSONb(a):a}};e.isBrowser()&&(t.headers["X-User-Agent"]=t.headers["User-Agent"]);var r=this.getCredentials();r.apiToken?t.headers.Authorization="Bearer ".concat(r.apiToken):t.auth={username:r.apiKey,password:r.apiSecret};var c=this.client.getConfig(),p=this.client.getOptions();p.timeout&&(t.timeout=p.timeout),p.proxy&&(t.proxy=p.proxy),p.headers&&Object.keys(p.headers).length>0&&(t.headers=o(o({},t.headers),p.headers));var l=null!==(s=this.config.output)&&void 0!==s?s:c.output;return l&&(t.responseType=l),p.maxBodyLength&&(t.maxBodyLength=p.maxBodyLength),p.maxContentLength&&(t.maxContentLength=p.maxContentLength),(0,m.default)(t)},e.prototype.setBaseURL=function(e){return this.url=e.toLowerCase(),this},e.prototype.id=function(e){if(!["string","number"].includes(n(e)))throw new Error('Argument "value" must be string or number');return this.url=(0,u.default)(this.url,e.toString()),this},e.prototype.action=function(e){if("string"!=typeof e)throw new Error('Argument "name" must be string');switch(this.actionPath=e.toLowerCase(),this.actionPath){case"csvdata":this.actionPath="csvdata/text:plain";break;case"csverror":this.actionPath="csverror/text:csv"}return this.url=(0,u.default)(this.url,this.actionPath),this.subPath=this.buildSubPath(),this},e.prototype.request=function(e,a,i){var n,o,s,t,r;return void 0===e&&(e={}),void 0===a&&(a={}),void 0===i&&(i=!0),c(this,void 0,void 0,(function(){var c,l,u,d,x,v,h,b,g,y;return p(this,(function(p){switch(p.label){case 0:if(c=this.buildFullUrl(),this.setBaseURL(this.resource),!i)return[2,{body:b=this.getRequestBody(e),params:a,url:c}];p.label=1;case 1:return p.trys.push([1,3,,4]),[4,this.makeRequest(c,e,a)];case 2:return[2,{response:l=p.sent(),body:l.data}];case 3:if((u=p.sent())instanceof m.AxiosError)throw(d=new Error).code=u.code,d.config=u.config,u.response?(x=u.response,v=x.status,h=x.statusText,b=x.data,d.response=u.response,d.statusCode=v,d.statusText=h,g=null!==(n=null==b?void 0:b.ErrorMessage)&&void 0!==n?n:u.message,d.originalMessage=g,d.message='Unsuccessful: Status Code: "'.concat(d.statusCode,'" Message: "').concat(g,'"'),b&&("string"==typeof(y=null===(r=null===(t=null===(s=null===(o=b.Messages)||void 0===o?void 0:o[0])||void 0===s?void 0:s.Errors)||void 0===t?void 0:t[0])||void 0===r?void 0:r.ErrorMessage)&&(d.message+=";\n".concat(y)),(0,f.setValueIfNotNil)(d,"ErrorMessage",b.ErrorMessage),(0,f.setValueIfNotNil)(d,"ErrorCode",b.ErrorCode),(0,f.setValueIfNotNil)(d,"ErrorIdentifier",b.ErrorIdentifier),(0,f.setValueIfNotNil)(d,"ErrorRelatedTo",b.ErrorRelatedTo))):(d.response=null,d.statusCode=null,d.statusText=null,d.originalMessage=u.message,d.message='Unsuccessful: Error Code: "'.concat(d.code,'" Message: "').concat(u.message,'"')),d;throw u;case 4:return[2]}}))}))},e.parseToJSONb=function(e){if("string"!=typeof e)throw new Error('Argument "text" must be string');var a;try{a=h.parse(e)}catch(e){a={}}return a},e.isBrowser=function(){return"object"===("undefined"==typeof window?"undefined":n(window))},e.protocol="https://",e}();a.default=b},5917:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.SentCampaign=a.DraftCampaign=void 0,function(e){!function(e){e.Tool2="tool2",e.HTML2="html2",e.MJML="mjml"}(e.EditMode||(e.EditMode={})),function(e){e[e.AXCanceled=-3]="AXCanceled",e[e.Deleted=-2]="Deleted",e[e.Archived=-1]="Archived",e[e.Draft=0]="Draft",e[e.Programmed=1]="Programmed",e[e.Sent=2]="Sent",e[e.AXTested=3]="AXTested",e[e.AXSelected=4]="AXSelected"}(e.CampaignDraftStatus||(e.CampaignDraftStatus={})),function(e){e.AXCancelled="AXCancelled",e.Deleted="Deleted",e.Archived="Archived",e.Draft="Draft",e.Programmed="Programmed",e.Sent="Sent",e.AXTested="AXTested",e.AXSelected="AXSelected"}(e.CampaignDraftSendingStatus||(e.CampaignDraftSendingStatus={}))}(a.DraftCampaign||(a.DraftCampaign={})),function(e){!function(e){e[e.Transactional=1]="Transactional",e[e.Marketing=2]="Marketing",e[e.Unknown=3]="Unknown"}(e.CampaignType||(e.CampaignType={}))}(a.SentCampaign||(a.SentCampaign={}))},7566:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Common=void 0,function(e){!function(e){e.Day="Day",e.Week="Week",e.Month="Month",e.Year="Year"}(e.Period||(e.Period={}))}(a.Common||(a.Common={}))},235:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.ContactProperties=a.BulkContactManagement=void 0,function(e){!function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.Remove="remove",e.UnSub="unsub"}(e.ManageContactsAction||(e.ManageContactsAction={})),function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.UnSub="unsub",e.DuplicateOverride="duplicate-override",e.DuplicateNoOverride="duplicate-no-override"}(e.ImportListAction||(e.ImportListAction={})),function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.Remove="remove",e.UnSub="unsub",e.ExcludeMarketing="excludemarketing",e.IncludeMarketing="includemarketing"}(e.ImportCSVMethod||(e.ImportCSVMethod={})),function(e){e.Upload="Upload",e.Completed="Completed",e.Abort="Abort"}(e.CSVImportStatus||(e.CSVImportStatus={})),function(e){e.Completed="Completed",e.InProgress="In Progress",e.Error="Error"}(e.JobStatus||(e.JobStatus={}))}(a.BulkContactManagement||(a.BulkContactManagement={})),function(e){!function(e){e.Str="str",e.Int="int",e.Float="float",e.Bool="bool",e.DateTime="datetime"}(e.DataType||(e.DataType={})),function(e){e.Static="static",e.Historic="historic"}(e.NameSpace||(e.NameSpace={}))}(a.ContactProperties||(a.ContactProperties={}))},8354:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Message=void 0,function(e){!function(e){e[e.UserUnknown=1]="UserUnknown",e[e.MailboxInactive=2]="MailboxInactive",e[e.QuotaExceeded=3]="QuotaExceeded",e[e.InvalidDomain=4]="InvalidDomain",e[e.NoMailHost=5]="NoMailHost",e[e.RelayOrAccessDenied=6]="RelayOrAccessDenied",e[e.SenderBlocked=7]="SenderBlocked",e[e.ContentBlocked=8]="ContentBlocked",e[e.PolicyIssue=9]="PolicyIssue",e[e.SystemIssue=10]="SystemIssue",e[e.ProtocolIssue=11]="ProtocolIssue",e[e.ConnectionIssue=12]="ConnectionIssue",e[e.GreyListed=13]="GreyListed",e[e.PreBlocked=14]="PreBlocked",e[e.DuplicateInCampaign=15]="DuplicateInCampaign",e[e.SpamPreBlocked=16]="SpamPreBlocked",e[e.BadOrEmptyTemplate=17]="BadOrEmptyTemplate",e[e.ErrorInTemplateLanguage=18]="ErrorInTemplateLanguage",e[e.TypoFix=19]="TypoFix",e[e.BlackListed=20]="BlackListed",e[e.SpamReporter=21]="SpamReporter"}(e.MessageState||(e.MessageState={})),function(e){e[e.Transactional=1]="Transactional",e[e.Marketing=2]="Marketing",e[e.Unknown=3]="Unknown"}(e.FromType||(e.FromType={})),function(e){e[e.Processed=0]="Processed",e[e.Queued=1]="Queued",e[e.Sent=2]="Sent",e[e.Opened=3]="Opened",e[e.Clicked=4]="Clicked",e[e.Bounce=5]="Bounce",e[e.Spam=6]="Spam",e[e.Unsub=7]="Unsub",e[e.Blocked=8]="Blocked",e[e.SoftBounce=9]="SoftBounce",e[e.HardBounce=10]="HardBounce",e[e.Deferred=11]="Deferred"}(e.MessageStatus||(e.MessageStatus={})),function(e){e.Unknown="unknown",e.Queued="queued",e.Sent="sent",e.Opened="opened",e.Clicked="clicked",e.Bounce="bounce",e.Spam="spam",e.Unsub="unsub",e.Blocked="blocked",e.HardBounced="hardbounced",e.SoftBounced="softbounced",e.Deferred="deferred"}(e.CurrentMessageStatus||(e.CurrentMessageStatus={})),function(e){e.Sent="sent",e.Opened="opened",e.Clicked="clicked",e.Bounced="bounced",e.Blocked="blocked",e.Unsub="unsub",e.Spam="spam"}(e.EventType||(e.EventType={}))}(a.Message||(a.Message={}))},3635:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Segmentation=void 0,function(e){!function(e){e.Used="used",e.UnUsed="unused",e.Deleted="deleted"}(e.SegmentStatus||(e.SegmentStatus={}))}(a.Segmentation||(a.Segmentation={}))},7410:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.SendEmailV3_1=void 0,function(e){!function(e){e.AccountDefault="account_default",e.Disabled="disabled",e.Enabled="enabled"}(e.TrackOpens||(e.TrackOpens={})),function(e){e.AccountDefault="account_default",e.Disabled="disabled",e.Enabled="enabled"}(e.TrackClicks||(e.TrackClicks={})),function(e){e.Success="success",e.Error="error"}(e.ResponseStatus||(e.ResponseStatus={}))}(a.SendEmailV3_1||(a.SendEmailV3_1={}))},2256:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.DNS=a.Sender=void 0,function(e){!function(e){e.Transactional="transactional",e.Bulk="bulk",e.Unknown="unknown"}(e.EmailType||(e.EmailType={})),function(e){e.Inactive="Inactive",e.Active="Active",e.Deleted="Deleted"}(e.SenderStatus||(e.SenderStatus={}))}(a.Sender||(a.Sender={})),function(e){!function(e){e.OK="OK",e.Error="Error",e.NotChecked="Not checked"}(e.DKIMConfigurationCheckStatus||(e.DKIMConfigurationCheckStatus={})),function(e){e.OK="OK",e.Error="Error"}(e.DKIMConfigurationStatus||(e.DKIMConfigurationStatus={})),function(e){e.OK="OK",e.Error="Error",e.NotChecked="Not checked",e.NotFound="Not found"}(e.SPFConfigurationCheckStatus||(e.SPFConfigurationCheckStatus={})),function(e){e.OK="OK",e.Error="Error"}(e.SPFConfigurationStatus||(e.SPFConfigurationStatus={}))}(a.DNS||(a.DNS={}))},5295:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.APIKeyConfiguration=void 0,function(e){!function(e){e.Normal="Normal",e.SoftLock="Softlock",e.HardLock="Hardlock"}(e.RunLevel||(e.RunLevel={}))}(a.APIKeyConfiguration||(a.APIKeyConfiguration={}))},6083:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Statistic=void 0,function(e){!function(e){e.SentCampaign="Campaign",e.ABTesting="AX",e.Draft="NL"}(e.CampaignOverviewIDType||(e.CampaignOverviewIDType={})),function(e){e.Tool="tool",e.HTML="html",e.Tool2="tool2",e.HTML2="html2",e.MJML="mjml"}(e.CampaignOverviewEditMode||(e.CampaignOverviewEditMode={})),function(e){e.Full="full",e.Unknown="unknown"}(e.CampaignOverviewEditType||(e.CampaignOverviewEditType={})),function(e){e.Campaign="Campaign",e.APIKey="APIKey",e.List="List",e.Sender="Sender"}(e.CounterSource||(e.CounterSource={})),function(e){e.Highest="Highest",e.Hour="Hour",e.Day="Day",e.Lifetime="Lifetime"}(e.CounterResolution||(e.CounterResolution={})),function(e){e.Message="Message",e.Event="Event"}(e.CounterTiming||(e.CounterTiming={})),function(e){e.Open="open",e.Click="click"}(e.EmailEvent||(e.EmailEvent={}))}(a.Statistic||(a.Statistic={}))},4098:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Template=void 0,function(e){!function(e){e.Full="full",e.Basic="basic",e.NewsLetter="newsletter",e.ECommerce="e-commerce",e.Events="events",e.Travel="travel",e.Sports="sports",e.Welcome="welcome",e.ContactPropertyUpdate="contact-property-update",e.Support="support",e.Invoice="invoice",e.Anniversary="anniversary",e.Account="account",e.Activation="activation"}(e.Categories||(e.Categories={})),function(e){e.ContainsAny="containsany",e.ContainsAll="containsall",e.IsSubSet="issubset"}(e.CategoriesSelectionMethod||(e.CategoriesSelectionMethod={})),function(e){e[e.DragAndDropBuilder=1]="DragAndDropBuilder",e[e.HTMLBuilder=2]="HTMLBuilder",e[e.SavedSectionBuilder=3]="SavedSectionBuilder",e[e.MJMLBuilder=4]="MJMLBuilder"}(e.EditMode||(e.EditMode={})),function(e){e.ApiKey="apikey",e.User="user",e.Global="global"}(e.OwnerType||(e.OwnerType={})),function(e){e.Marketing="marketing",e.Transactional="transactional",e.Automation="automation"}(e.Purposes||(e.Purposes={})),function(e){e.ContainsAny="containsany",e.ContainsAll="containsall",e.IsSubSet="issubset"}(e.PurposesSelectionMethod||(e.PurposesSelectionMethod={}))}(a.Template||(a.Template={}))},1174:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Webhook=void 0,function(e){!function(e){e.Open="open",e.Click="click",e.Bounce="bounce",e.Spam="spam",e.Blocked="blocked",e.UnSub="unsub",e.Sent="sent"}(e.EventType||(e.EventType={})),function(e){e[e.Click=1]="Click",e[e.Bounce=2]="Bounce",e[e.Spam=3]="Spam",e[e.Blocked=4]="Blocked",e[e.Unsubscribe=5]="Unsubscribe",e[e.Open=6]="Open",e[e.Sent=7]="Sent"}(e.EventTypeValue||(e.EventTypeValue={})),function(e){e.Dead="dead",e.Alive="alive"}(e.Status||(e.Status={}))}(a.Webhook||(a.Webhook={}))},4310:(e,a,i)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.APIKeyConfiguration=a.DNS=a.Sender=a.Webhook=a.Statistic=a.Template=a.Segmentation=a.SentCampaign=a.DraftCampaign=a.ContactProperties=a.BulkContactManagement=a.Message=a.SendEmailV3_1=a.Common=void 0;var n=i(7566);Object.defineProperty(a,"Common",{enumerable:!0,get:function(){return n.Common}});var o=i(7410);Object.defineProperty(a,"SendEmailV3_1",{enumerable:!0,get:function(){return o.SendEmailV3_1}});var s=i(8354);Object.defineProperty(a,"Message",{enumerable:!0,get:function(){return s.Message}});var t=i(235);Object.defineProperty(a,"BulkContactManagement",{enumerable:!0,get:function(){return t.BulkContactManagement}}),Object.defineProperty(a,"ContactProperties",{enumerable:!0,get:function(){return t.ContactProperties}});var r=i(5917);Object.defineProperty(a,"DraftCampaign",{enumerable:!0,get:function(){return r.DraftCampaign}}),Object.defineProperty(a,"SentCampaign",{enumerable:!0,get:function(){return r.SentCampaign}});var c=i(3635);Object.defineProperty(a,"Segmentation",{enumerable:!0,get:function(){return c.Segmentation}});var p=i(4098);Object.defineProperty(a,"Template",{enumerable:!0,get:function(){return p.Template}});var l=i(6083);Object.defineProperty(a,"Statistic",{enumerable:!0,get:function(){return l.Statistic}});var u=i(1174);Object.defineProperty(a,"Webhook",{enumerable:!0,get:function(){return u.Webhook}});var d=i(2256);Object.defineProperty(a,"Sender",{enumerable:!0,get:function(){return d.Sender}}),Object.defineProperty(a,"DNS",{enumerable:!0,get:function(){return d.DNS}});var m=i(5295);Object.defineProperty(a,"APIKeyConfiguration",{enumerable:!0,get:function(){return m.APIKeyConfiguration}})},9006:function(e,a,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.setValueIfNotNil=a.isPureObject=a.isUndefined=a.isNull=a.isNil=void 0;var o=n(i(1808));a.isNil=o.default;var s=n(i(7376));a.isNull=s.default;var t=n(i(5034));a.isUndefined=t.default;var r=n(i(1818));a.isPureObject=r.default;var c=n(i(1190));a.setValueIfNotNil=c.default},1808:function(e,a,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});var o=n(i(7376)),s=n(i(5034));a.default=function(e){return(0,s.default)(e)||(0,o.default)(e)}},7376:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.default=function(e){return null===e}},1818:(e,a)=>{"use strict";function i(e){return i="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},i(e)}Object.defineProperty(a,"__esModule",{value:!0}),a.default=function(e){return"object"===i(e)&&null!==e&&(Object.getPrototypeOf(e)===Object.prototype||null===Object.getPrototypeOf(e))}},5034:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.default=function(e){return void 0===e}},1190:function(e,a,i){"use strict";function n(e){return n="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},n(e)}var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});var s=o(i(1808)),t=o(i(7376));a.default=function(e,a,i){if("object"!==n(e)||(0,t.default)(e))throw Error('Argument "targetObject" is not object');if(!a)throw Error('Argument "path" is required');(0,s.default)(i)||(e[a]=i)}},4431:function(e,a,i){var n;!function(o){"use strict";var s,t=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,r=Math.ceil,c=Math.floor,p="[BigNumber Error] ",l=p+"Number primitive has more than 15 significant digits: ",u=1e14,d=14,m=9007199254740991,f=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],x=1e7,v=1e9;function h(e){var a=0|e;return e>0||e===a?a:a-1}function b(e){for(var a,i,n=1,o=e.length,s=e[0]+"";np^i?1:-1;for(r=(c=o.length)<(p=s.length)?c:p,t=0;ts[t]^i?1:-1;return c==p?0:c>p^i?1:-1}function y(e,a,i,n){if(ei||e!==c(e))throw Error(p+(n||"Argument")+("number"==typeof e?ei?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function w(e){var a=e.c.length-1;return h(e.e/d)==a&&e.c[a]%2!=0}function k(e,a){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(a<0?"e":"e+")+a}function j(e,a,i){var n,o;if(a<0){for(o=i+".";++a;o+=i);e=o+e}else if(++a>(n=e.length)){for(o=i,a-=n;--a;o+=i);e+=o}else aD?h.c=h.e=null:e.e=10;u/=10,p++);return void(p>D?h.c=h.e=null:(h.e=p,h.c=[e]))}v=String(e)}else{if(!t.test(v=String(e)))return o(h,v,f);h.s=45==v.charCodeAt(0)?(v=v.slice(1),-1):1}(p=v.indexOf("."))>-1&&(v=v.replace(".","")),(u=v.search(/e/i))>0?(p<0&&(p=u),p+=+v.slice(u+1),v=v.substring(0,u)):p<0&&(p=v.length)}else{if(y(a,2,I.length,"Base"),10==a)return $(h=new H(e),P+h.e+1,B);if(v=String(e),f="number"==typeof e){if(0*e!=0)return o(h,v,f,a);if(h.s=1/e<0?(v=v.slice(1),-1):1,H.DEBUG&&v.replace(/^0\.0*|\./,"").length>15)throw Error(l+e)}else h.s=45===v.charCodeAt(0)?(v=v.slice(1),-1):1;for(i=I.slice(0,a),p=u=0,x=v.length;up){p=x;continue}}else if(!r&&(v==v.toUpperCase()&&(v=v.toLowerCase())||v==v.toLowerCase()&&(v=v.toUpperCase()))){r=!0,u=-1,p=0;continue}return o(h,String(e),f,a)}f=!1,(p=(v=n(v,a,10,h.s)).indexOf("."))>-1?v=v.replace(".",""):p=v.length}for(u=0;48===v.charCodeAt(u);u++);for(x=v.length;48===v.charCodeAt(--x););if(v=v.slice(u,++x)){if(x-=u,f&&H.DEBUG&&x>15&&(e>m||e!==c(e)))throw Error(l+h.s*e);if((p=p-u-1)>D)h.c=h.e=null;else if(p=z)?k(c,t):j(c,t,"0");else if(s=(e=$(new H(e),a,i)).e,r=(c=b(e.c)).length,1==n||2==n&&(a<=s||s<=N)){for(;rr){if(--a>0)for(c+=".";a--;c+="0");}else if((a+=s-r)>0)for(s+1==r&&(c+=".");a--;c+="0");return e.s<0&&o?"-"+c:c}function K(e,a){for(var i,n=1,o=new H(e[0]);n=10;o/=10,n++);return(i=n+i*d-1)>D?e.c=e.e=null:i=10;p/=10,o++);if((s=a-o)<0)s+=d,t=a,x=(l=v[m=0])/h[o-t-1]%10|0;else if((m=r((s+1)/d))>=v.length){if(!n)break e;for(;v.length<=m;v.push(0));l=x=0,o=1,t=(s%=d)-d+1}else{for(l=p=v[m],o=1;p>=10;p/=10,o++);x=(t=(s%=d)-d+o)<0?0:l/h[o-t-1]%10|0}if(n=n||a<0||null!=v[m+1]||(t<0?l:l%h[o-t-1]),n=i<4?(x||n)&&(0==i||i==(e.s<0?3:2)):x>5||5==x&&(4==i||n||6==i&&(s>0?t>0?l/h[o-t]:0:v[m-1])%10&1||i==(e.s<0?8:7)),a<1||!v[0])return v.length=0,n?(a-=e.e+1,v[0]=h[(d-a%d)%d],e.e=-a||0):v[0]=e.e=0,e;if(0==s?(v.length=m,p=1,m--):(v.length=m+1,p=h[d-s],v[m]=t>0?c(l/h[o-t]%h[t])*p:0),n)for(;;){if(0==m){for(s=1,t=v[0];t>=10;t/=10,s++);for(t=v[0]+=p,p=1;t>=10;t/=10,p++);s!=p&&(e.e++,v[0]==u&&(v[0]=1));break}if(v[m]+=p,v[m]!=u)break;v[m--]=0,p=1}for(s=v.length;0===v[--s];v.pop());}e.e>D?e.c=e.e=null:e.e=z?k(a,i):j(a,i,"0"),e.s<0?"-"+a:a)}return H.clone=e,H.ROUND_UP=0,H.ROUND_DOWN=1,H.ROUND_CEIL=2,H.ROUND_FLOOR=3,H.ROUND_HALF_UP=4,H.ROUND_HALF_DOWN=5,H.ROUND_HALF_EVEN=6,H.ROUND_HALF_CEIL=7,H.ROUND_HALF_FLOOR=8,H.EUCLID=9,H.config=H.set=function(e){var a,i;if(null!=e){if("object"!=typeof e)throw Error(p+"Object expected: "+e);if(e.hasOwnProperty(a="DECIMAL_PLACES")&&(y(i=e[a],0,v,a),P=i),e.hasOwnProperty(a="ROUNDING_MODE")&&(y(i=e[a],0,8,a),B=i),e.hasOwnProperty(a="EXPONENTIAL_AT")&&((i=e[a])&&i.pop?(y(i[0],-v,0,a),y(i[1],0,v,a),N=i[0],z=i[1]):(y(i,-v,v,a),N=-(z=i<0?-i:i))),e.hasOwnProperty(a="RANGE"))if((i=e[a])&&i.pop)y(i[0],-v,-1,a),y(i[1],1,v,a),L=i[0],D=i[1];else{if(y(i,-v,v,a),!i)throw Error(p+a+" cannot be zero: "+i);L=-(D=i<0?-i:i)}if(e.hasOwnProperty(a="CRYPTO")){if((i=e[a])!==!!i)throw Error(p+a+" not true or false: "+i);if(i){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw F=!i,Error(p+"crypto unavailable");F=i}else F=i}if(e.hasOwnProperty(a="MODULO_MODE")&&(y(i=e[a],0,9,a),q=i),e.hasOwnProperty(a="POW_PRECISION")&&(y(i=e[a],0,v,a),M=i),e.hasOwnProperty(a="FORMAT")){if("object"!=typeof(i=e[a]))throw Error(p+a+" not an object: "+i);U=i}if(e.hasOwnProperty(a="ALPHABET")){if("string"!=typeof(i=e[a])||/^.?$|[+\-.\s]|(.).*\1/.test(i))throw Error(p+a+" invalid: "+i);I=i}}return{DECIMAL_PLACES:P,ROUNDING_MODE:B,EXPONENTIAL_AT:[N,z],RANGE:[L,D],CRYPTO:F,MODULO_MODE:q,POW_PRECISION:M,FORMAT:U,ALPHABET:I}},H.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!H.DEBUG)return!0;var a,i,n=e.c,o=e.e,s=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===s||-1===s)&&o>=-v&&o<=v&&o===c(o)){if(0===n[0]){if(0===o&&1===n.length)return!0;break e}if((a=(o+1)%d)<1&&(a+=d),String(n[0]).length==a){for(a=0;a=u||i!==c(i))break e;if(0!==i)return!0}}}else if(null===n&&null===o&&(null===s||1===s||-1===s))return!0;throw Error(p+"Invalid BigNumber: "+e)},H.maximum=H.max=function(){return K(arguments,T.lt)},H.minimum=H.min=function(){return K(arguments,T.gt)},H.random=(s=9007199254740992,_=Math.random()*s&2097151?function(){return c(Math.random()*s)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var a,i,n,o,s,t=0,l=[],u=new H(R);if(null==e?e=P:y(e,0,v),o=r(e/d),F)if(crypto.getRandomValues){for(a=crypto.getRandomValues(new Uint32Array(o*=2));t>>11))>=9e15?(i=crypto.getRandomValues(new Uint32Array(2)),a[t]=i[0],a[t+1]=i[1]):(l.push(s%1e14),t+=2);t=o/2}else{if(!crypto.randomBytes)throw F=!1,Error(p+"crypto unavailable");for(a=crypto.randomBytes(o*=7);t=9e15?crypto.randomBytes(7).copy(a,t):(l.push(s%1e14),t+=7);t=o/7}if(!F)for(;t=10;s/=10,t++);ti-1&&(null==t[o+1]&&(t[o+1]=0),t[o+1]+=t[o]/i|0,t[o]%=i)}return t.reverse()}return function(n,o,s,t,r){var c,p,l,u,d,m,f,x,v=n.indexOf("."),h=P,g=B;for(v>=0&&(u=M,M=0,n=n.replace(".",""),m=(x=new H(o)).pow(n.length-v),M=u,x.c=a(j(b(m.c),m.e,"0"),10,s,e),x.e=x.c.length),l=u=(f=a(n,o,s,r?(c=I,e):(c=e,I))).length;0==f[--u];f.pop());if(!f[0])return c.charAt(0);if(v<0?--l:(m.c=f,m.e=l,m.s=t,f=(m=i(m,x,h,g,s)).c,d=m.r,l=m.e),v=f[p=l+h+1],u=s/2,d=d||p<0||null!=f[p+1],d=g<4?(null!=v||d)&&(0==g||g==(m.s<0?3:2)):v>u||v==u&&(4==g||d||6==g&&1&f[p-1]||g==(m.s<0?8:7)),p<1||!f[0])n=d?j(c.charAt(1),-h,c.charAt(0)):c.charAt(0);else{if(f.length=p,d)for(--s;++f[--p]>s;)f[p]=0,p||(++l,f=[1].concat(f));for(u=f.length;!f[--u];);for(v=0,n="";v<=u;n+=c.charAt(f[v++]));n=j(n,l,c.charAt(0))}return n}}(),i=function(){function e(e,a,i){var n,o,s,t,r=0,c=e.length,p=a%x,l=a/x|0;for(e=e.slice();c--;)r=((o=p*(s=e[c]%x)+(n=l*s+(t=e[c]/x|0)*p)%x*x+r)/i|0)+(n/x|0)+l*t,e[c]=o%i;return r&&(e=[r].concat(e)),e}function a(e,a,i,n){var o,s;if(i!=n)s=i>n?1:-1;else for(o=s=0;oa[o]?1:-1;break}return s}function i(e,a,i,n){for(var o=0;i--;)e[i]-=o,o=e[i]1;e.splice(0,1));}return function(n,o,s,t,r){var p,l,m,f,x,v,b,g,y,w,k,j,_,C,E,S,O,A=n.s==o.s?1:-1,T=n.c,R=o.c;if(!(T&&T[0]&&R&&R[0]))return new H(n.s&&o.s&&(T?!R||T[0]!=R[0]:R)?T&&0==T[0]||!R?0*A:A/0:NaN);for(y=(g=new H(A)).c=[],A=s+(l=n.e-o.e)+1,r||(r=u,l=h(n.e/d)-h(o.e/d),A=A/d|0),m=0;R[m]==(T[m]||0);m++);if(R[m]>(T[m]||0)&&l--,A<0)y.push(1),f=!0;else{for(C=T.length,S=R.length,m=0,A+=2,(x=c(r/(R[0]+1)))>1&&(R=e(R,x,r),T=e(T,x,r),S=R.length,C=T.length),_=S,k=(w=T.slice(0,S)).length;k=r/2&&E++;do{if(x=0,(p=a(R,w,S,k))<0){if(j=w[0],S!=k&&(j=j*r+(w[1]||0)),(x=c(j/E))>1)for(x>=r&&(x=r-1),b=(v=e(R,x,r)).length,k=w.length;1==a(v,w,b,k);)x--,i(v,S=10;A/=10,m++);$(g,s+(g.e=m+l*d-1)+1,t,f)}else g.e=l,g.r=+f;return g}}(),C=/^(-?)0([xbo])(?=\w[\w.]*$)/i,E=/^([^.]+)\.$/,S=/^\.([^.]+)$/,O=/^-?(Infinity|NaN)$/,A=/^\s*\+(?=[\w.])|^\s+|\s+$/g,o=function(e,a,i,n){var o,s=i?a:a.replace(A,"");if(O.test(s))e.s=isNaN(s)?null:s<0?-1:1;else{if(!i&&(s=s.replace(C,(function(e,a,i){return o="x"==(i=i.toLowerCase())?16:"b"==i?2:8,n&&n!=o?e:a})),n&&(o=n,s=s.replace(E,"$1").replace(S,"0.$1")),a!=s))return new H(s,o);if(H.DEBUG)throw Error(p+"Not a"+(n?" base "+n:"")+" number: "+a);e.s=null}e.c=e.e=null},T.absoluteValue=T.abs=function(){var e=new H(this);return e.s<0&&(e.s=1),e},T.comparedTo=function(e,a){return g(this,new H(e,a))},T.decimalPlaces=T.dp=function(e,a){var i,n,o,s=this;if(null!=e)return y(e,0,v),null==a?a=B:y(a,0,8),$(new H(s),e+s.e+1,a);if(!(i=s.c))return null;if(n=((o=i.length-1)-h(this.e/d))*d,o=i[o])for(;o%10==0;o/=10,n--);return n<0&&(n=0),n},T.dividedBy=T.div=function(e,a){return i(this,new H(e,a),P,B)},T.dividedToIntegerBy=T.idiv=function(e,a){return i(this,new H(e,a),0,1)},T.exponentiatedBy=T.pow=function(e,a){var i,n,o,s,t,l,u,m,f=this;if((e=new H(e)).c&&!e.isInteger())throw Error(p+"Exponent not an integer: "+J(e));if(null!=a&&(a=new H(a)),t=e.e>14,!f.c||!f.c[0]||1==f.c[0]&&!f.e&&1==f.c.length||!e.c||!e.c[0])return m=new H(Math.pow(+J(f),t?2-w(e):+J(e))),a?m.mod(a):m;if(l=e.s<0,a){if(a.c?!a.c[0]:!a.s)return new H(NaN);(n=!l&&f.isInteger()&&a.isInteger())&&(f=f.mod(a))}else{if(e.e>9&&(f.e>0||f.e<-1||(0==f.e?f.c[0]>1||t&&f.c[1]>=24e7:f.c[0]<8e13||t&&f.c[0]<=9999975e7)))return s=f.s<0&&w(e)?-0:0,f.e>-1&&(s=1/s),new H(l?1/s:s);M&&(s=r(M/d+2))}for(t?(i=new H(.5),l&&(e.s=1),u=w(e)):u=(o=Math.abs(+J(e)))%2,m=new H(R);;){if(u){if(!(m=m.times(f)).c)break;s?m.c.length>s&&(m.c.length=s):n&&(m=m.mod(a))}if(o){if(0===(o=c(o/2)))break;u=o%2}else if($(e=e.times(i),e.e+1,1),e.e>14)u=w(e);else{if(0==(o=+J(e)))break;u=o%2}f=f.times(f),s?f.c&&f.c.length>s&&(f.c.length=s):n&&(f=f.mod(a))}return n?m:(l&&(m=R.div(m)),a?m.mod(a):s?$(m,M,B,void 0):m)},T.integerValue=function(e){var a=new H(this);return null==e?e=B:y(e,0,8),$(a,a.e+1,e)},T.isEqualTo=T.eq=function(e,a){return 0===g(this,new H(e,a))},T.isFinite=function(){return!!this.c},T.isGreaterThan=T.gt=function(e,a){return g(this,new H(e,a))>0},T.isGreaterThanOrEqualTo=T.gte=function(e,a){return 1===(a=g(this,new H(e,a)))||0===a},T.isInteger=function(){return!!this.c&&h(this.e/d)>this.c.length-2},T.isLessThan=T.lt=function(e,a){return g(this,new H(e,a))<0},T.isLessThanOrEqualTo=T.lte=function(e,a){return-1===(a=g(this,new H(e,a)))||0===a},T.isNaN=function(){return!this.s},T.isNegative=function(){return this.s<0},T.isPositive=function(){return this.s>0},T.isZero=function(){return!!this.c&&0==this.c[0]},T.minus=function(e,a){var i,n,o,s,t=this,r=t.s;if(a=(e=new H(e,a)).s,!r||!a)return new H(NaN);if(r!=a)return e.s=-a,t.plus(e);var c=t.e/d,p=e.e/d,l=t.c,m=e.c;if(!c||!p){if(!l||!m)return l?(e.s=-a,e):new H(m?t:NaN);if(!l[0]||!m[0])return m[0]?(e.s=-a,e):new H(l[0]?t:3==B?-0:0)}if(c=h(c),p=h(p),l=l.slice(),r=c-p){for((s=r<0)?(r=-r,o=l):(p=c,o=m),o.reverse(),a=r;a--;o.push(0));o.reverse()}else for(n=(s=(r=l.length)<(a=m.length))?r:a,r=a=0;a0)for(;a--;l[i++]=0);for(a=u-1;n>r;){if(l[--n]=0;){for(i=0,f=j[o]%y,v=j[o]/y|0,s=o+(t=c);s>o;)i=((p=f*(p=k[--t]%y)+(r=v*p+(l=k[t]/y|0)*f)%y*y+b[s]+i)/g|0)+(r/y|0)+v*l,b[s--]=p%g;b[s]=i}return i?++n:b.splice(0,1),G(e,b,n)},T.negated=function(){var e=new H(this);return e.s=-e.s||null,e},T.plus=function(e,a){var i,n=this,o=n.s;if(a=(e=new H(e,a)).s,!o||!a)return new H(NaN);if(o!=a)return e.s=-a,n.minus(e);var s=n.e/d,t=e.e/d,r=n.c,c=e.c;if(!s||!t){if(!r||!c)return new H(o/0);if(!r[0]||!c[0])return c[0]?e:new H(r[0]?n:0*o)}if(s=h(s),t=h(t),r=r.slice(),o=s-t){for(o>0?(t=s,i=c):(o=-o,i=r),i.reverse();o--;i.push(0));i.reverse()}for((o=r.length)-(a=c.length)<0&&(i=c,c=r,r=i,a=o),o=0;a;)o=(r[--a]=r[a]+c[a]+o)/u|0,r[a]=u===r[a]?0:r[a]%u;return o&&(r=[o].concat(r),++t),G(e,r,t)},T.precision=T.sd=function(e,a){var i,n,o,s=this;if(null!=e&&e!==!!e)return y(e,1,v),null==a?a=B:y(a,0,8),$(new H(s),e,a);if(!(i=s.c))return null;if(n=(o=i.length-1)*d+1,o=i[o]){for(;o%10==0;o/=10,n--);for(o=i[0];o>=10;o/=10,n++);}return e&&s.e+1>n&&(n=s.e+1),n},T.shiftedBy=function(e){return y(e,-9007199254740991,m),this.times("1e"+e)},T.squareRoot=T.sqrt=function(){var e,a,n,o,s,t=this,r=t.c,c=t.s,p=t.e,l=P+4,u=new H("0.5");if(1!==c||!r||!r[0])return new H(!c||c<0&&(!r||r[0])?NaN:r?t:1/0);if(0==(c=Math.sqrt(+J(t)))||c==1/0?(((a=b(r)).length+p)%2==0&&(a+="0"),c=Math.sqrt(+a),p=h((p+1)/2)-(p<0||p%2),n=new H(a=c==1/0?"5e"+p:(a=c.toExponential()).slice(0,a.indexOf("e")+1)+p)):n=new H(c+""),n.c[0])for((c=(p=n.e)+l)<3&&(c=0);;)if(s=n,n=u.times(s.plus(i(t,s,l,1))),b(s.c).slice(0,c)===(a=b(n.c)).slice(0,c)){if(n.e0&&x>0){for(s=x%r||r,u=f.substr(0,s);s0&&(u+=l+f.slice(s)),m&&(u="-"+u)}n=d?u+(i.decimalSeparator||"")+((c=+i.fractionGroupSize)?d.replace(new RegExp("\\d{"+c+"}\\B","g"),"$&"+(i.fractionGroupSeparator||"")):d):u}return(i.prefix||"")+n+(i.suffix||"")},T.toFraction=function(e){var a,n,o,s,t,r,c,l,u,m,x,v,h=this,g=h.c;if(null!=e&&(!(c=new H(e)).isInteger()&&(c.c||1!==c.s)||c.lt(R)))throw Error(p+"Argument "+(c.isInteger()?"out of range: ":"not an integer: ")+J(c));if(!g)return new H(h);for(a=new H(R),u=n=new H(R),o=l=new H(R),v=b(g),t=a.e=v.length-h.e-1,a.c[0]=f[(r=t%d)<0?d+r:r],e=!e||c.comparedTo(a)>0?t>0?a:u:c,r=D,D=1/0,c=new H(v),l.c[0]=0;m=i(c,a,0,1),1!=(s=n.plus(m.times(o))).comparedTo(e);)n=o,o=s,u=l.plus(m.times(s=u)),l=s,a=c.minus(m.times(s=a)),c=s;return s=i(e.minus(n),o,0,1),l=l.plus(s.times(u)),n=n.plus(s.times(o)),l.s=u.s=h.s,x=i(u,o,t*=2,B).minus(h).abs().comparedTo(i(l,n,t,B).minus(h).abs())<1?[u,o]:[l,n],D=r,x},T.toNumber=function(){return+J(this)},T.toPrecision=function(e,a){return null!=e&&y(e,1,v),V(this,e,a,2)},T.toString=function(e){var a,i=this,o=i.s,s=i.e;return null===s?o?(a="Infinity",o<0&&(a="-"+a)):a="NaN":(null==e?a=s<=N||s>=z?k(b(i.c),s):j(b(i.c),s,"0"):10===e?a=j(b((i=$(new H(i),P+s+1,B)).c),i.e,"0"):(y(e,2,I.length,"Base"),a=n(j(b(i.c),s,"0"),10,e,o,!0)),o<0&&i.c[0]&&(a="-"+a)),a},T.valueOf=T.toJSON=function(){return J(this)},T._isBigNumber=!0,null!=a&&H.set(a),H}(),s.default=s.BigNumber=s,void 0===(n=function(){return s}.call(a,i,a,e))||(e.exports=n)}()},9779:(e,a,i)=>{var n=i(3837),o=i(2781).Stream,s=i(3463);function t(){this.writable=!1,this.readable=!0,this.dataSize=0,this.maxDataSize=2097152,this.pauseStreams=!0,this._released=!1,this._streams=[],this._currentStream=null,this._insideLoop=!1,this._pendingNext=!1}e.exports=t,n.inherits(t,o),t.create=function(e){var a=new this;for(var i in e=e||{})a[i]=e[i];return a},t.isStreamLike=function(e){return"function"!=typeof e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e&&!Buffer.isBuffer(e)},t.prototype.append=function(e){if(t.isStreamLike(e)){if(!(e instanceof s)){var a=s.create(e,{maxDataSize:1/0,pauseStream:this.pauseStreams});e.on("data",this._checkDataSize.bind(this)),e=a}this._handleErrors(e),this.pauseStreams&&e.pause()}return this._streams.push(e),this},t.prototype.pipe=function(e,a){return o.prototype.pipe.call(this,e,a),this.resume(),e},t.prototype._getNext=function(){if(this._currentStream=null,this._insideLoop)this._pendingNext=!0;else{this._insideLoop=!0;try{do{this._pendingNext=!1,this._realGetNext()}while(this._pendingNext)}finally{this._insideLoop=!1}}},t.prototype._realGetNext=function(){var e=this._streams.shift();void 0!==e?"function"==typeof e?e(function(e){t.isStreamLike(e)&&(e.on("data",this._checkDataSize.bind(this)),this._handleErrors(e)),this._pipeNext(e)}.bind(this)):this._pipeNext(e):this.end()},t.prototype._pipeNext=function(e){if(this._currentStream=e,t.isStreamLike(e))return e.on("end",this._getNext.bind(this)),void e.pipe(this,{end:!1});var a=e;this.write(a),this._getNext()},t.prototype._handleErrors=function(e){var a=this;e.on("error",(function(e){a._emitError(e)}))},t.prototype.write=function(e){this.emit("data",e)},t.prototype.pause=function(){this.pauseStreams&&(this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.pause&&this._currentStream.pause(),this.emit("pause"))},t.prototype.resume=function(){this._released||(this._released=!0,this.writable=!0,this._getNext()),this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.resume&&this._currentStream.resume(),this.emit("resume")},t.prototype.end=function(){this._reset(),this.emit("end")},t.prototype.destroy=function(){this._reset(),this.emit("close")},t.prototype._reset=function(){this.writable=!1,this._streams=[],this._currentStream=null},t.prototype._checkDataSize=function(){if(this._updateDataSize(),!(this.dataSize<=this.maxDataSize)){var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this._emitError(new Error(e))}},t.prototype._updateDataSize=function(){this.dataSize=0;var e=this;this._streams.forEach((function(a){a.dataSize&&(e.dataSize+=a.dataSize)})),this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize)},t.prototype._emitError=function(e){this._reset(),this.emit("error",e)}},9435:e=>{var a=1e3,i=60*a,n=60*i,o=24*n,s=7*o,t=365.25*o;function r(e,a,i,n){var o=a>=1.5*i;return Math.round(e/i)+" "+n+(o?"s":"")}e.exports=function(e,c){c=c||{};var p,l,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var r=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(r){var c=parseFloat(r[1]);switch((r[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*t;case"weeks":case"week":case"w":return c*s;case"days":case"day":case"d":return c*o;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*i;case"seconds":case"second":case"secs":case"sec":case"s":return c*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}}}(e);if("number"===u&&isFinite(e))return c.long?(p=e,(l=Math.abs(p))>=o?r(p,l,o,"day"):l>=n?r(p,l,n,"hour"):l>=i?r(p,l,i,"minute"):l>=a?r(p,l,a,"second"):p+" ms"):function(e){var s=Math.abs(e);return s>=o?Math.round(e/o)+"d":s>=n?Math.round(e/n)+"h":s>=i?Math.round(e/i)+"m":s>=a?Math.round(e/a)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},1227:(e,a,i)=>{a.formatArgs=function(a){if(a[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+a[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const i="color: "+this.color;a.splice(1,0,i,"color: inherit");let n=0,o=0;a[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),a.splice(o,0,i)},a.save=function(e){try{e?a.storage.setItem("debug",e):a.storage.removeItem("debug")}catch(e){}},a.load=function(){let e;try{e=a.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},a.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},a.storage=function(){try{return localStorage}catch(e){}}(),a.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),a.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],a.log=console.debug||console.log||(()=>{}),e.exports=i(2447)(a);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},2447:(e,a,i)=>{e.exports=function(e){function a(e){let i,o,s,t=null;function r(...e){if(!r.enabled)return;const n=r,o=Number(new Date),s=o-(i||o);n.diff=s,n.prev=i,n.curr=o,i=o,e[0]=a.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let t=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((i,o)=>{if("%%"===i)return"%";t++;const s=a.formatters[o];if("function"==typeof s){const a=e[t];i=s.call(n,a),e.splice(t,1),t--}return i})),a.formatArgs.call(n,e),(n.log||a.log).apply(n,e)}return r.namespace=e,r.useColors=a.useColors(),r.color=a.selectColor(e),r.extend=n,r.destroy=a.destroy,Object.defineProperty(r,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==t?t:(o!==a.namespaces&&(o=a.namespaces,s=a.enabled(e)),s),set:e=>{t=e}}),"function"==typeof a.init&&a.init(r),r}function n(e,i){const n=a(this.namespace+(void 0===i?":":i)+e);return n.log=this.log,n}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return a.debug=a,a.default=a,a.coerce=function(e){return e instanceof Error?e.stack||e.message:e},a.disable=function(){const e=[...a.names.map(o),...a.skips.map(o).map((e=>"-"+e))].join(",");return a.enable(""),e},a.enable=function(e){let i;a.save(e),a.namespaces=e,a.names=[],a.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(i=0;i{a[i]=e[i]})),a.names=[],a.skips=[],a.formatters={},a.selectColor=function(e){let i=0;for(let a=0;a{"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?e.exports=i(1227):e.exports=i(39)},39:(e,a,i)=>{const n=i(6224),o=i(3837);a.init=function(e){e.inspectOpts={};const i=Object.keys(a.inspectOpts);for(let n=0;n{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),a.colors=[6,2,3,4,5,1];try{const e=i(2130);e&&(e.stderr||e).level>=2&&(a.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}a.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,a)=>{const i=a.substring(6).toLowerCase().replace(/_([a-z])/g,((e,a)=>a.toUpperCase()));let n=process.env[a];return n=!!/^(yes|on|true|enabled)$/i.test(n)||!/^(no|off|false|disabled)$/i.test(n)&&("null"===n?null:Number(n)),e[i]=n,e}),{}),e.exports=i(2447)(a);const{formatters:s}=e.exports;s.o=function(e){return this.inspectOpts.colors=this.useColors,o.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},s.O=function(e){return this.inspectOpts.colors=this.useColors,o.inspect(e,this.inspectOpts)}},3463:(e,a,i)=>{var n=i(2781).Stream,o=i(3837);function s(){this.source=null,this.dataSize=0,this.maxDataSize=1048576,this.pauseStream=!0,this._maxDataSizeExceeded=!1,this._released=!1,this._bufferedEvents=[]}e.exports=s,o.inherits(s,n),s.create=function(e,a){var i=new this;for(var n in a=a||{})i[n]=a[n];i.source=e;var o=e.emit;return e.emit=function(){return i._handleEmit(arguments),o.apply(e,arguments)},e.on("error",(function(){})),i.pauseStream&&e.pause(),i},Object.defineProperty(s.prototype,"readable",{configurable:!0,enumerable:!0,get:function(){return this.source.readable}}),s.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)},s.prototype.resume=function(){this._released||this.release(),this.source.resume()},s.prototype.pause=function(){this.source.pause()},s.prototype.release=function(){this._released=!0,this._bufferedEvents.forEach(function(e){this.emit.apply(this,e)}.bind(this)),this._bufferedEvents=[]},s.prototype.pipe=function(){var e=n.prototype.pipe.apply(this,arguments);return this.resume(),e},s.prototype._handleEmit=function(e){this._released?this.emit.apply(this,e):("data"===e[0]&&(this.dataSize+=e[1].length,this._checkIfMaxDataSizeExceeded()),this._bufferedEvents.push(e))},s.prototype._checkIfMaxDataSizeExceeded=function(){if(!(this._maxDataSizeExceeded||this.dataSize<=this.maxDataSize)){this._maxDataSizeExceeded=!0;var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this.emit("error",new Error(e))}}},2261:(e,a,i)=>{var n;e.exports=function(){if(!n){try{n=i(5158)("follow-redirects")}catch(e){}"function"!=typeof n&&(n=function(){})}n.apply(null,arguments)}},938:(e,a,i)=>{var n=i(7310),o=n.URL,s=i(3685),t=i(5687),r=i(2781).Writable,c=i(9491),p=i(2261),l=["abort","aborted","connect","error","socket","timeout"],u=Object.create(null);l.forEach((function(e){u[e]=function(a,i,n){this._redirectable.emit(e,a,i,n)}}));var d=w("ERR_FR_REDIRECTION_FAILURE","Redirected request failed"),m=w("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded"),f=w("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),x=w("ERR_STREAM_WRITE_AFTER_END","write after end");function v(e,a){r.call(this),this._sanitizeOptions(e),this._options=e,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],a&&this.on("response",a);var i=this;this._onNativeResponse=function(e){i._processResponse(e)},this._performRequest()}function h(e){var a={maxRedirects:21,maxBodyLength:10485760},i={};return Object.keys(e).forEach((function(s){var t=s+":",r=i[t]=e[s],l=a[s]=Object.create(r);Object.defineProperties(l,{request:{value:function(e,s,r){if("string"==typeof e){var l=e;try{e=g(new o(l))}catch(a){e=n.parse(l)}}else o&&e instanceof o?e=g(e):(r=s,s=e,e={protocol:t});return"function"==typeof s&&(r=s,s=null),(s=Object.assign({maxRedirects:a.maxRedirects,maxBodyLength:a.maxBodyLength},e,s)).nativeProtocols=i,c.equal(s.protocol,t,"protocol mismatch"),p("options",s),new v(s,r)},configurable:!0,enumerable:!0,writable:!0},get:{value:function(e,a,i){var n=l.request(e,a,i);return n.end(),n},configurable:!0,enumerable:!0,writable:!0}})})),a}function b(){}function g(e){var a={protocol:e.protocol,hostname:e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:e.pathname+e.search,href:e.href};return""!==e.port&&(a.port=Number(e.port)),a}function y(e,a){var i;for(var n in a)e.test(n)&&(i=a[n],delete a[n]);return null==i?void 0:String(i).trim()}function w(e,a){function i(e){Error.captureStackTrace(this,this.constructor),e?(this.message=a+": "+e.message,this.cause=e):this.message=a}return i.prototype=new Error,i.prototype.constructor=i,i.prototype.name="Error ["+e+"]",i.prototype.code=e,i}function k(e){for(var a of l)e.removeListener(a,u[a]);e.on("error",b),e.abort()}v.prototype=Object.create(r.prototype),v.prototype.abort=function(){k(this._currentRequest),this.emit("abort")},v.prototype.write=function(e,a,i){if(this._ending)throw new x;if(!("string"==typeof e||"object"==typeof e&&"length"in e))throw new TypeError("data should be a string, Buffer or Uint8Array");"function"==typeof a&&(i=a,a=null),0!==e.length?this._requestBodyLength+e.length<=this._options.maxBodyLength?(this._requestBodyLength+=e.length,this._requestBodyBuffers.push({data:e,encoding:a}),this._currentRequest.write(e,a,i)):(this.emit("error",new f),this.abort()):i&&i()},v.prototype.end=function(e,a,i){if("function"==typeof e?(i=e,e=a=null):"function"==typeof a&&(i=a,a=null),e){var n=this,o=this._currentRequest;this.write(e,a,(function(){n._ended=!0,o.end(null,null,i)})),this._ending=!0}else this._ended=this._ending=!0,this._currentRequest.end(null,null,i)},v.prototype.setHeader=function(e,a){this._options.headers[e]=a,this._currentRequest.setHeader(e,a)},v.prototype.removeHeader=function(e){delete this._options.headers[e],this._currentRequest.removeHeader(e)},v.prototype.setTimeout=function(e,a){var i=this;function n(a){a.setTimeout(e),a.removeListener("timeout",a.destroy),a.addListener("timeout",a.destroy)}function o(a){i._timeout&&clearTimeout(i._timeout),i._timeout=setTimeout((function(){i.emit("timeout"),s()}),e),n(a)}function s(){i._timeout&&(clearTimeout(i._timeout),i._timeout=null),i.removeListener("abort",s),i.removeListener("error",s),i.removeListener("response",s),a&&i.removeListener("timeout",a),i.socket||i._currentRequest.removeListener("socket",o)}return a&&this.on("timeout",a),this.socket?o(this.socket):this._currentRequest.once("socket",o),this.on("socket",n),this.on("abort",s),this.on("error",s),this.on("response",s),this},["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach((function(e){v.prototype[e]=function(a,i){return this._currentRequest[e](a,i)}})),["aborted","connection","socket"].forEach((function(e){Object.defineProperty(v.prototype,e,{get:function(){return this._currentRequest[e]}})})),v.prototype._sanitizeOptions=function(e){if(e.headers||(e.headers={}),e.host&&(e.hostname||(e.hostname=e.host),delete e.host),!e.pathname&&e.path){var a=e.path.indexOf("?");a<0?e.pathname=e.path:(e.pathname=e.path.substring(0,a),e.search=e.path.substring(a))}},v.prototype._performRequest=function(){var e=this._options.protocol,a=this._options.nativeProtocols[e];if(a){if(this._options.agents){var i=e.slice(0,-1);this._options.agent=this._options.agents[i]}var o=this._currentRequest=a.request(this._options,this._onNativeResponse);for(var s of(o._redirectable=this,l))o.on(s,u[s]);if(this._currentUrl=/^\//.test(this._options.path)?n.format(this._options):this._currentUrl=this._options.path,this._isRedirect){var t=0,r=this,c=this._requestBodyBuffers;!function e(a){if(o===r._currentRequest)if(a)r.emit("error",a);else if(t=400)return e.responseUrl=this._currentUrl,e.redirects=this._redirects,this.emit("response",e),void(this._requestBodyBuffers=[]);if(k(this._currentRequest),e.destroy(),++this._redirectCount>this._options.maxRedirects)this.emit("error",new m);else{var o,s=this._options.beforeRedirect;s&&(o=Object.assign({Host:e.req.getHeader("host")},this._options.headers));var t=this._options.method;((301===a||302===a)&&"POST"===this._options.method||303===a&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],y(/^content-/i,this._options.headers));var r,c=y(/^host$/i,this._options.headers),l=n.parse(this._currentUrl),u=c||l.host,f=/^\w+:/.test(i)?this._currentUrl:n.format(Object.assign(l,{host:u}));try{r=n.resolve(f,i)}catch(e){return void this.emit("error",new d(e))}p("redirecting to",r),this._isRedirect=!0;var x=n.parse(r);if(Object.assign(this._options,x),(x.protocol!==l.protocol&&"https:"!==x.protocol||x.host!==u&&!function(e,a){const i=e.length-a.length-1;return i>0&&"."===e[i]&&e.endsWith(a)}(x.host,u))&&y(/^(?:authorization|cookie)$/i,this._options.headers),"function"==typeof s){var v={headers:e.headers,statusCode:a},h={url:f,method:t,headers:o};try{s(this._options,v,h)}catch(e){return void this.emit("error",e)}this._sanitizeOptions(this._options)}try{this._performRequest()}catch(e){this.emit("error",new d(e))}}},e.exports=h({http:s,https:t}),e.exports.wrap=h},6882:(e,a,i)=>{var n=i(9779),o=i(3837),s=i(1017),t=i(3685),r=i(5687),c=i(7310).parse,p=i(7147),l=i(2781).Stream,u=i(983),d=i(9118),m=i(2275);function f(e){if(!(this instanceof f))return new f(e);for(var a in this._overheadLength=0,this._valueLength=0,this._valuesToMeasure=[],n.call(this),e=e||{})this[a]=e[a]}e.exports=f,o.inherits(f,n),f.LINE_BREAK="\r\n",f.DEFAULT_CONTENT_TYPE="application/octet-stream",f.prototype.append=function(e,a,i){"string"==typeof(i=i||{})&&(i={filename:i});var s=n.prototype.append.bind(this);if("number"==typeof a&&(a=""+a),o.isArray(a))this._error(new Error("Arrays are not supported."));else{var t=this._multiPartHeader(e,a,i),r=this._multiPartFooter();s(t),s(a),s(r),this._trackLength(t,a,i)}},f.prototype._trackLength=function(e,a,i){var n=0;null!=i.knownLength?n+=+i.knownLength:Buffer.isBuffer(a)?n=a.length:"string"==typeof a&&(n=Buffer.byteLength(a)),this._valueLength+=n,this._overheadLength+=Buffer.byteLength(e)+f.LINE_BREAK.length,a&&(a.path||a.readable&&a.hasOwnProperty("httpVersion")||a instanceof l)&&(i.knownLength||this._valuesToMeasure.push(a))},f.prototype._lengthRetriever=function(e,a){e.hasOwnProperty("fd")?null!=e.end&&e.end!=1/0&&null!=e.start?a(null,e.end+1-(e.start?e.start:0)):p.stat(e.path,(function(i,n){var o;i?a(i):(o=n.size-(e.start?e.start:0),a(null,o))})):e.hasOwnProperty("httpVersion")?a(null,+e.headers["content-length"]):e.hasOwnProperty("httpModule")?(e.on("response",(function(i){e.pause(),a(null,+i.headers["content-length"])})),e.resume()):a("Unknown stream")},f.prototype._multiPartHeader=function(e,a,i){if("string"==typeof i.header)return i.header;var n,o=this._getContentDisposition(a,i),s=this._getContentType(a,i),t="",r={"Content-Disposition":["form-data",'name="'+e+'"'].concat(o||[]),"Content-Type":[].concat(s||[])};for(var c in"object"==typeof i.header&&m(r,i.header),r)r.hasOwnProperty(c)&&null!=(n=r[c])&&(Array.isArray(n)||(n=[n]),n.length&&(t+=c+": "+n.join("; ")+f.LINE_BREAK));return"--"+this.getBoundary()+f.LINE_BREAK+t+f.LINE_BREAK},f.prototype._getContentDisposition=function(e,a){var i,n;return"string"==typeof a.filepath?i=s.normalize(a.filepath).replace(/\\/g,"/"):a.filename||e.name||e.path?i=s.basename(a.filename||e.name||e.path):e.readable&&e.hasOwnProperty("httpVersion")&&(i=s.basename(e.client._httpMessage.path||"")),i&&(n='filename="'+i+'"'),n},f.prototype._getContentType=function(e,a){var i=a.contentType;return!i&&e.name&&(i=u.lookup(e.name)),!i&&e.path&&(i=u.lookup(e.path)),!i&&e.readable&&e.hasOwnProperty("httpVersion")&&(i=e.headers["content-type"]),i||!a.filepath&&!a.filename||(i=u.lookup(a.filepath||a.filename)),i||"object"!=typeof e||(i=f.DEFAULT_CONTENT_TYPE),i},f.prototype._multiPartFooter=function(){return function(e){var a=f.LINE_BREAK;0===this._streams.length&&(a+=this._lastBoundary()),e(a)}.bind(this)},f.prototype._lastBoundary=function(){return"--"+this.getBoundary()+"--"+f.LINE_BREAK},f.prototype.getHeaders=function(e){var a,i={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(a in e)e.hasOwnProperty(a)&&(i[a.toLowerCase()]=e[a]);return i},f.prototype.setBoundary=function(e){this._boundary=e},f.prototype.getBoundary=function(){return this._boundary||this._generateBoundary(),this._boundary},f.prototype.getBuffer=function(){for(var e=new Buffer.alloc(0),a=this.getBoundary(),i=0,n=this._streams.length;i{e.exports=function(e,a){return Object.keys(a).forEach((function(i){e[i]=e[i]||a[i]})),e}},6560:e=>{"use strict";e.exports=(e,a)=>{a=a||process.argv;const i=e.startsWith("-")?"":1===e.length?"-":"--",n=a.indexOf(i+e),o=a.indexOf("--");return-1!==n&&(-1===o||n{var n=i(4123).stringify,o=i(6813);e.exports=function(e){return{parse:o(e),stringify:n}},e.exports.parse=o(),e.exports.stringify=n},6813:(e,a,i)=>{var n=null;const o=/(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])/,s=/(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)/;e.exports=function(e){"use strict";var a={strict:!1,storeAsString:!1,alwaysParseAsBig:!1,useNativeBigInt:!1,protoAction:"error",constructorAction:"error"};if(null!=e){if(!0===e.strict&&(a.strict=!0),!0===e.storeAsString&&(a.storeAsString=!0),a.alwaysParseAsBig=!0===e.alwaysParseAsBig&&e.alwaysParseAsBig,a.useNativeBigInt=!0===e.useNativeBigInt&&e.useNativeBigInt,void 0!==e.constructorAction){if("error"!==e.constructorAction&&"ignore"!==e.constructorAction&&"preserve"!==e.constructorAction)throw new Error(`Incorrect value for constructorAction option, must be "error", "ignore" or undefined but passed ${e.constructorAction}`);a.constructorAction=e.constructorAction}if(void 0!==e.protoAction){if("error"!==e.protoAction&&"ignore"!==e.protoAction&&"preserve"!==e.protoAction)throw new Error(`Incorrect value for protoAction option, must be "error", "ignore" or undefined but passed ${e.protoAction}`);a.protoAction=e.protoAction}}var t,r,c,p,l={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},u=function(e){throw{name:"SyntaxError",message:e,at:t,text:c}},d=function(e){return e&&e!==r&&u("Expected '"+e+"' instead of '"+r+"'"),r=c.charAt(t),t+=1,r},m=function(){var e,o="";for("-"===r&&(o="-",d("-"));r>="0"&&r<="9";)o+=r,d();if("."===r)for(o+=".";d()&&r>="0"&&r<="9";)o+=r;if("e"===r||"E"===r)for(o+=r,d(),"-"!==r&&"+"!==r||(o+=r,d());r>="0"&&r<="9";)o+=r,d();if(e=+o,isFinite(e))return null==n&&(n=i(4431)),o.length>15?a.storeAsString?o:a.useNativeBigInt?BigInt(o):new n(o):a.alwaysParseAsBig?a.useNativeBigInt?BigInt(e):new n(e):e;u("Bad number")},f=function(){var e,a,i,n="";if('"'===r)for(var o=t;d();){if('"'===r)return t-1>o&&(n+=c.substring(o,t-1)),d(),n;if("\\"===r){if(t-1>o&&(n+=c.substring(o,t-1)),d(),"u"===r){for(i=0,a=0;a<4&&(e=parseInt(d(),16),isFinite(e));a+=1)i=16*i+e;n+=String.fromCharCode(i)}else{if("string"!=typeof l[r])break;n+=l[r]}o=t}}u("Bad string")},x=function(){for(;r&&r<=" ";)d()};return p=function(){switch(x(),r){case"{":return function(){var e,i=Object.create(null);if("{"===r){if(d("{"),x(),"}"===r)return d("}"),i;for(;r;){if(e=f(),x(),d(":"),!0===a.strict&&Object.hasOwnProperty.call(i,e)&&u('Duplicate key "'+e+'"'),!0===o.test(e)?"error"===a.protoAction?u("Object contains forbidden prototype property"):"ignore"===a.protoAction?p():i[e]=p():!0===s.test(e)?"error"===a.constructorAction?u("Object contains forbidden constructor property"):"ignore"===a.constructorAction?p():i[e]=p():i[e]=p(),x(),"}"===r)return d("}"),i;d(","),x()}}u("Bad object")}();case"[":return function(){var e=[];if("["===r){if(d("["),x(),"]"===r)return d("]"),e;for(;r;){if(e.push(p()),x(),"]"===r)return d("]"),e;d(","),x()}}u("Bad array")}();case'"':return f();case"-":return m();default:return r>="0"&&r<="9"?m():function(){switch(r){case"t":return d("t"),d("r"),d("u"),d("e"),!0;case"f":return d("f"),d("a"),d("l"),d("s"),d("e"),!1;case"n":return d("n"),d("u"),d("l"),d("l"),null}u("Unexpected '"+r+"'")}()}},function(e,a){var i;return c=e+"",t=0,r=" ",i=p(),x(),r&&u("Syntax error"),"function"==typeof a?function e(i,n){var o,s=i[n];return s&&"object"==typeof s&&Object.keys(s).forEach((function(a){void 0!==(o=e(s,a))?s[a]=o:delete s[a]})),a.call(i,n,s)}({"":i},""):i}}},4123:(e,a,i)=>{var n=i(4431),o=e.exports;!function(){"use strict";var e,a,i,s=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,t={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function r(e){return s.lastIndex=0,s.test(e)?'"'+e.replace(s,(function(e){var a=t[e];return"string"==typeof a?a:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+e+'"'}function c(o,s){var t,p,l,u,d,m=e,f=s[o],x=null!=f&&(f instanceof n||n.isBigNumber(f));switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(o)),"function"==typeof i&&(f=i.call(s,o,f)),typeof f){case"string":return x?f:r(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":case"bigint":return String(f);case"object":if(!f)return"null";if(e+=a,d=[],"[object Array]"===Object.prototype.toString.apply(f)){for(u=f.length,t=0;t{e.exports=i(3765)},983:(e,a,i)=>{"use strict";var n,o,s,t=i(5234),r=i(1017).extname,c=/^\s*([^;\s]*)(?:;|\s|$)/,p=/^text\//i;function l(e){if(!e||"string"!=typeof e)return!1;var a=c.exec(e),i=a&&t[a[1].toLowerCase()];return i&&i.charset?i.charset:!(!a||!p.test(a[1]))&&"UTF-8"}a.charset=l,a.charsets={lookup:l},a.contentType=function(e){if(!e||"string"!=typeof e)return!1;var i=-1===e.indexOf("/")?a.lookup(e):e;if(!i)return!1;if(-1===i.indexOf("charset")){var n=a.charset(i);n&&(i+="; charset="+n.toLowerCase())}return i},a.extension=function(e){if(!e||"string"!=typeof e)return!1;var i=c.exec(e),n=i&&a.extensions[i[1].toLowerCase()];return!(!n||!n.length)&&n[0]},a.extensions=Object.create(null),a.lookup=function(e){if(!e||"string"!=typeof e)return!1;var i=r("x."+e).toLowerCase().substr(1);return i&&a.types[i]||!1},a.types=Object.create(null),n=a.extensions,o=a.types,s=["nginx","apache",void 0,"iana"],Object.keys(t).forEach((function(e){var a=t[e],i=a.extensions;if(i&&i.length){n[e]=i;for(var r=0;rl||p===l&&"application/"===o[c].substr(0,12)))continue}o[c]=e}}}))},2130:(e,a,i)=>{"use strict";const n=i(2037),o=i(6560),s=process.env;let t;function r(e){const a=function(e){if(!1===t)return 0;if(o("color=16m")||o("color=full")||o("color=truecolor"))return 3;if(o("color=256"))return 2;if(e&&!e.isTTY&&!0!==t)return 0;const a=t?1:0;if("win32"===process.platform){const e=n.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in s)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some((e=>e in s))||"codeship"===s.CI_NAME?1:a;if("TEAMCITY_VERSION"in s)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(s.TEAMCITY_VERSION)?1:0;if("truecolor"===s.COLORTERM)return 3;if("TERM_PROGRAM"in s){const e=parseInt((s.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(s.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(s.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(s.TERM)||"COLORTERM"in s?1:(s.TERM,a)}(e);return function(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}(a)}o("no-color")||o("no-colors")||o("color=false")?t=!1:(o("color")||o("colors")||o("color=true")||o("color=always"))&&(t=!0),"FORCE_COLOR"in s&&(t=0===s.FORCE_COLOR.length||0!==parseInt(s.FORCE_COLOR,10)),e.exports={supportsColor:r,stdout:r(process.stdout),stderr:r(process.stderr)}},4078:function(e,a,i){var n,o,s;s=function(){function e(e){var a=[];if(0===e.length)return"";if("string"!=typeof e[0])throw new TypeError("Url must be a string. Received "+e[0]);if(e[0].match(/^[^/:]+:\/*$/)&&e.length>1){var i=e.shift();e[0]=i+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+t.join("&")}return function(){return e("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=s():void 0===(o="function"==typeof(n=s)?n.call(a,i,a,e):n)||(e.exports=o)},9491:e=>{"use strict";e.exports=require("assert")},7147:e=>{"use strict";e.exports=require("fs")},3685:e=>{"use strict";e.exports=require("http")},5687:e=>{"use strict";e.exports=require("https")},2037:e=>{"use strict";e.exports=require("os")},1017:e=>{"use strict";e.exports=require("path")},2781:e=>{"use strict";e.exports=require("stream")},6224:e=>{"use strict";e.exports=require("tty")},7310:e=>{"use strict";e.exports=require("url")},3837:e=>{"use strict";e.exports=require("util")},9796:e=>{"use strict";e.exports=require("zlib")},3765:e=>{"use strict";e.exports=JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}')},4147:e=>{"use strict";e.exports=JSON.parse('{"name":"node-mailjet","version":"6.0.3","main":"./dist/mailjet.node.js","browser":"./dist/mailjet.web.js","types":"./dist/declarations/index.d.ts","description":"Mailjet API client","author":"Mailjet","license":"MIT","private":true,"keywords":["email","sms","node","mail","mailjet"],"engines":{"node":">= 12.0.0","npm":">= 6.9.0"},"files":["lib/**","dist/**"],"directories":{"lib":"./lib","docs":"./docs"},"typescript":{"definition":"./dist/declarations/index.d.ts"},"scripts":{"test":"npm run ts:mocha test/","test:int":"npm run ts:mocha test/integration/","test:unit":"npm run ts:mocha test/unit/","test:watch":"mocha --extension ts -r tsconfig-paths/register -r ts-node/register --watch","cover":"npm run cover:expandable npm run test","cover:int":"npm run cover:expandable npm run test:int","cover:unit":"npm run cover:expandable npm run test:unit","cover:expandable":"nyc --reporter=text-summary --reporter=lcov --report-dir=.coverage --temp-dir=./.coverage/.nyc_output","build":"npm run build:release && npm run build:prepublish","build:dev":"webpack --config ./webpack/webpack.dev.config.js --progress --color","build:release":"webpack --config ./webpack/webpack.release.config.js --progress --color","build:prepublish":"node ./scripts/PreparePackage.js","build:watch":"webpack --watch --config ./webpack/webpack.dev.config.js --progress --color","lint":"eslint .","lint:fix":"eslint --fix .","lint:errors":"eslint --quiet .","ts:run":"ts-node --transpileOnly --project ./tsconfig.json -r tsconfig-paths/register","ts:watch":"ts-node-dev --respawn --transpile-only --project ./tsconfig.json -r tsconfig-paths/register","ts:mocha":"mocha --extension ts --recursive -r tsconfig-paths/register -r ts-node/register","ts:patch":"ts-patch install -s","init":"npm install && npm run ts:patch && npm run pkg:prepare","pkg:link":"cd ./dist && npm link && echo \'\\n=== link name: node-mailjet ===\'","pkg:prepare":"husky install","pkg:precommit":"npm audit && npm run lint:errors && npm run test","release":"standard-version -a","release:dry":"standard-version --dry-run","release:quiet":"standard-version --no-verify -a","release:minor":"standard-version -a --release-as minor","release:patch":"standard-version -a --release-as patch","release:major":"standard-version -a --release-as major","docs":"typedoc --tsconfig ./tsconfig.json"},"dependencies":{"axios":"^0.27.2","url-join":"^4.0.0","json-bigint":"^1.0.0"},"devDependencies":{"qs":"^6.5.0","@babel/core":"^7.18.0","@babel/preset-env":"^7.18.0","@commitlint/cli":"^17.0.2","@commitlint/config-conventional":"^17.0.2","@types/chai":"^4.3.1","@types/json-bigint":"^1.0.1","@types/mocha":"^9.1.1","@types/node":"^17.0.34","@types/qs":"^6.9.7","@types/superagent":"^4.1.15","@types/url-join":"^4.0.1","@typescript-eslint/eslint-plugin":"^5.24.0","@typescript-eslint/parser":"^5.24.0","babel-loader":"^8.2.5","chai":"^4.1.0","eslint":"^8.15.0","eslint-config-airbnb-base":"^15.0.0","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","eslint-plugin-tsdoc":"^0.2.16","husky":"^8.0.1","mocha":"^9.0.0","nock":"^13.2.4","nyc":"^15.1.0","standard-version":"^9.5.0","terser-webpack-plugin":"^5.3.1","ts-loader":"^9.3.0","ts-node":"^10.7.0","ts-node-dev":"^1.1.8","ts-patch":"^2.0.1","tsconfig-paths":"^4.0.0","tsconfig-paths-webpack-plugin":"^3.5.2","typedoc":"^0.22.15","typescript":"^4.6.4","typescript-transform-paths":"^3.3.1","webpack":"^5.76.0","webpack-cli":"^4.9.2","webpack-merge":"^5.8.0"},"homepage":"https://github.com/mailjet/mailjet-apiv3-nodejs#readme","repository":{"type":"git","url":"git+https://github.com/mailjet/mailjet-apiv3-nodejs.git"},"bugs":{"url":"https://github.com/mailjet/mailjet-apiv3-nodejs/issues"},"contributors":["Arnaud Breton (https://github.com/arnaudbreton)","Nicholas Smith (https://github.com/safani)","Jérémie Parker (https://github.com/p-j)"]}')}},a={},i=function i(n){var o=a[n];if(void 0!==o)return o.exports;var s=a[n]={exports:{}};return e[n].call(s.exports,s,s.exports,i),s.exports}(8321),i=i.default;var e,a,i})); +!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a():"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?exports.mailjet=a():e.mailjet=a()}(this,(()=>{return e={9118:(e,a,i)=>{e.exports={parallel:i(9162),serial:i(1357),serialOrdered:i(9087)}},7651:e=>{function a(e){"function"==typeof this.jobs[e]&&this.jobs[e]()}e.exports=function(e){Object.keys(e.jobs).forEach(a.bind(e)),e.jobs={}}},5912:(e,a,i)=>{var n=i(9265);e.exports=function(e){var a=!1;return n((function(){a=!0})),function(i,o){a?e(i,o):n((function(){e(i,o)}))}}},9265:e=>{e.exports=function(e){var a="function"==typeof setImmediate?setImmediate:"object"==typeof process&&"function"==typeof process.nextTick?process.nextTick:null;a?a(e):setTimeout(e,0)}},7594:(e,a,i)=>{var n=i(5912),o=i(7651);e.exports=function(e,a,i,s){var t=i.keyedList?i.keyedList[i.index]:i.index;i.jobs[t]=function(e,a,i,o){return 2==e.length?e(i,n(o)):e(i,a,n(o))}(a,t,e[t],(function(e,a){t in i.jobs&&(delete i.jobs[t],e?o(i):i.results[t]=a,s(e,i.results))}))}},4528:e=>{e.exports=function(e,a){var i=!Array.isArray(e),n={index:0,keyedList:i||a?Object.keys(e):null,jobs:{},results:i?{}:[],size:i?Object.keys(e).length:e.length};return a&&n.keyedList.sort(i?a:function(i,n){return a(e[i],e[n])}),n}},5353:(e,a,i)=>{var n=i(7651),o=i(5912);e.exports=function(e){Object.keys(this.jobs).length&&(this.index=this.size,n(this),o(e)(null,this.results))}},9162:(e,a,i)=>{var n=i(7594),o=i(4528),s=i(5353);e.exports=function(e,a,i){for(var t=o(e);t.index<(t.keyedList||e).length;)n(e,a,t,(function(e,a){e?i(e,a):0!==Object.keys(t.jobs).length||i(null,t.results)})),t.index++;return s.bind(t,i)}},1357:(e,a,i)=>{var n=i(9087);e.exports=function(e,a,i){return n(e,a,null,i)}},9087:(e,a,i)=>{var n=i(7594),o=i(4528),s=i(5353);function t(e,a){return ea?1:0}e.exports=function(e,a,i,t){var r=o(e,i);return n(e,a,r,(function i(o,s){o?t(o,s):(r.index++,r.index<(r.keyedList||e).length?n(e,a,r,i):t(null,r.results))})),s.bind(r,t)},e.exports.ascending=t,e.exports.descending=function(e,a){return-1*t(e,a)}},9669:(e,a,i)=>{e.exports=i(1609)},7970:(e,a,i)=>{"use strict";var n=i(4867),o=i(6026),s=i(4097),t=i(5327),r=i(3685),c=i(5687),p=i(938).http,l=i(938).https,u=i(7310),d=i(9796),m=i(7288).version,f=i(7874),x=i(2648),v=i(644),h=/https:?/,b=["http:","https:","file:"];function g(e,a,i){if(e.hostname=a.host,e.host=a.host,e.port=a.port,e.path=i,a.auth){var n=Buffer.from(a.auth.username+":"+a.auth.password,"utf8").toString("base64");e.headers["Proxy-Authorization"]="Basic "+n}e.beforeRedirect=function(e){e.headers.host=e.host,g(e,a,e.href)}}e.exports=function(e){return new Promise((function(a,i){var y;function w(){e.cancelToken&&e.cancelToken.unsubscribe(y),e.signal&&e.signal.removeEventListener("abort",y)}var k=function(e){w(),a(e)},j=!1,_=function(e){w(),j=!0,i(e)},C=e.data,E=e.headers,S={};if(Object.keys(E).forEach((function(e){S[e.toLowerCase()]=e})),"user-agent"in S?E[S["user-agent"]]||delete E[S["user-agent"]]:E["User-Agent"]="axios/"+m,n.isFormData(C)&&n.isFunction(C.getHeaders))Object.assign(E,C.getHeaders());else if(C&&!n.isStream(C)){if(Buffer.isBuffer(C));else if(n.isArrayBuffer(C))C=Buffer.from(new Uint8Array(C));else{if(!n.isString(C))return _(new x("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",x.ERR_BAD_REQUEST,e));C=Buffer.from(C,"utf-8")}if(e.maxBodyLength>-1&&C.length>e.maxBodyLength)return _(new x("Request body larger than maxBodyLength limit",x.ERR_BAD_REQUEST,e));S["content-length"]||(E["Content-Length"]=C.length)}var O=void 0;e.auth&&(O=(e.auth.username||"")+":"+(e.auth.password||""));var A=s(e.baseURL,e.url),T=u.parse(A),R=T.protocol||b[0];if(-1===b.indexOf(R))return _(new x("Unsupported protocol "+R,x.ERR_BAD_REQUEST,e));if(!O&&T.auth){var P=T.auth.split(":");O=(P[0]||"")+":"+(P[1]||"")}O&&S.authorization&&delete E[S.authorization];var B=h.test(R),N=B?e.httpsAgent:e.httpAgent;try{t(T.path,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(a){var z=new Error(a.message);z.config=e,z.url=e.url,z.exists=!0,_(z)}var L={path:t(T.path,e.params,e.paramsSerializer).replace(/^\?/,""),method:e.method.toUpperCase(),headers:E,agent:N,agents:{http:e.httpAgent,https:e.httpsAgent},auth:O};e.socketPath?L.socketPath=e.socketPath:(L.hostname=T.hostname,L.port=T.port);var D,F=e.proxy;if(!F&&!1!==F){var q=R.slice(0,-1)+"_proxy",M=process.env[q]||process.env[q.toUpperCase()];if(M){var U=u.parse(M),I=process.env.no_proxy||process.env.NO_PROXY,H=!0;if(I&&(H=!I.split(",").map((function(e){return e.trim()})).some((function(e){return!!e&&("*"===e||"."===e[0]&&T.hostname.substr(T.hostname.length-e.length)===e||T.hostname===e)}))),H&&(F={host:U.hostname,port:U.port,protocol:U.protocol},U.auth)){var V=U.auth.split(":");F.auth={username:V[0],password:V[1]}}}}F&&(L.headers.host=T.hostname+(T.port?":"+T.port:""),g(L,F,R+"//"+T.hostname+(T.port?":"+T.port:"")+L.path));var K=B&&(!F||h.test(F.protocol));e.transport?D=e.transport:0===e.maxRedirects?D=K?c:r:(e.maxRedirects&&(L.maxRedirects=e.maxRedirects),e.beforeRedirect&&(L.beforeRedirect=e.beforeRedirect),D=K?l:p),e.maxBodyLength>-1&&(L.maxBodyLength=e.maxBodyLength),e.insecureHTTPParser&&(L.insecureHTTPParser=e.insecureHTTPParser);var G=D.request(L,(function(a){if(!G.aborted){var i=a,s=a.req||G;if(204!==a.statusCode&&"HEAD"!==s.method&&!1!==e.decompress)switch(a.headers["content-encoding"]){case"gzip":case"compress":case"deflate":i=i.pipe(d.createUnzip()),delete a.headers["content-encoding"]}var t={status:a.statusCode,statusText:a.statusMessage,headers:a.headers,config:e,request:s};if("stream"===e.responseType)t.data=i,o(k,_,t);else{var r=[],c=0;i.on("data",(function(a){r.push(a),c+=a.length,e.maxContentLength>-1&&c>e.maxContentLength&&(j=!0,i.destroy(),_(new x("maxContentLength size of "+e.maxContentLength+" exceeded",x.ERR_BAD_RESPONSE,e,s)))})),i.on("aborted",(function(){j||(i.destroy(),_(new x("maxContentLength size of "+e.maxContentLength+" exceeded",x.ERR_BAD_RESPONSE,e,s)))})),i.on("error",(function(a){G.aborted||_(x.from(a,null,e,s))})),i.on("end",(function(){try{var a=1===r.length?r[0]:Buffer.concat(r);"arraybuffer"!==e.responseType&&(a=a.toString(e.responseEncoding),e.responseEncoding&&"utf8"!==e.responseEncoding||(a=n.stripBOM(a))),t.data=a}catch(a){_(x.from(a,null,e,t.request,t))}o(k,_,t)}))}}}));if(G.on("error",(function(a){_(x.from(a,null,e,G))})),G.on("socket",(function(e){e.setKeepAlive(!0,6e4)})),e.timeout){var $=parseInt(e.timeout,10);if(isNaN($))return void _(new x("error trying to parse `config.timeout` to int",x.ERR_BAD_OPTION_VALUE,e,G));G.setTimeout($,(function(){G.abort();var a=e.transitional||f;_(new x("timeout of "+$+"ms exceeded",a.clarifyTimeoutError?x.ETIMEDOUT:x.ECONNABORTED,e,G))}))}(e.cancelToken||e.signal)&&(y=function(e){G.aborted||(G.abort(),_(!e||e&&e.type?new v:e))},e.cancelToken&&e.cancelToken.subscribe(y),e.signal&&(e.signal.aborted?y():e.signal.addEventListener("abort",y))),n.isStream(C)?C.on("error",(function(a){_(x.from(a,e,null,G))})).pipe(G):G.end(C)}))}},5448:(e,a,i)=>{"use strict";var n=i(4867),o=i(6026),s=i(4372),t=i(5327),r=i(4097),c=i(4109),p=i(7985),l=i(7874),u=i(2648),d=i(644),m=i(205);e.exports=function(e){return new Promise((function(a,i){var f,x=e.data,v=e.headers,h=e.responseType;function b(){e.cancelToken&&e.cancelToken.unsubscribe(f),e.signal&&e.signal.removeEventListener("abort",f)}n.isFormData(x)&&n.isStandardBrowserEnv()&&delete v["Content-Type"];var g=new XMLHttpRequest;if(e.auth){var y=e.auth.username||"",w=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";v.Authorization="Basic "+btoa(y+":"+w)}var k=r(e.baseURL,e.url);function j(){if(g){var n="getAllResponseHeaders"in g?c(g.getAllResponseHeaders()):null,s={data:h&&"text"!==h&&"json"!==h?g.response:g.responseText,status:g.status,statusText:g.statusText,headers:n,config:e,request:g};o((function(e){a(e),b()}),(function(e){i(e),b()}),s),g=null}}if(g.open(e.method.toUpperCase(),t(k,e.params,e.paramsSerializer),!0),g.timeout=e.timeout,"onloadend"in g?g.onloadend=j:g.onreadystatechange=function(){g&&4===g.readyState&&(0!==g.status||g.responseURL&&0===g.responseURL.indexOf("file:"))&&setTimeout(j)},g.onabort=function(){g&&(i(new u("Request aborted",u.ECONNABORTED,e,g)),g=null)},g.onerror=function(){i(new u("Network Error",u.ERR_NETWORK,e,g,g)),g=null},g.ontimeout=function(){var a=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",n=e.transitional||l;e.timeoutErrorMessage&&(a=e.timeoutErrorMessage),i(new u(a,n.clarifyTimeoutError?u.ETIMEDOUT:u.ECONNABORTED,e,g)),g=null},n.isStandardBrowserEnv()){var _=(e.withCredentials||p(k))&&e.xsrfCookieName?s.read(e.xsrfCookieName):void 0;_&&(v[e.xsrfHeaderName]=_)}"setRequestHeader"in g&&n.forEach(v,(function(e,a){void 0===x&&"content-type"===a.toLowerCase()?delete v[a]:g.setRequestHeader(a,e)})),n.isUndefined(e.withCredentials)||(g.withCredentials=!!e.withCredentials),h&&"json"!==h&&(g.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&g.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&g.upload&&g.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(f=function(e){g&&(i(!e||e&&e.type?new d:e),g.abort(),g=null)},e.cancelToken&&e.cancelToken.subscribe(f),e.signal&&(e.signal.aborted?f():e.signal.addEventListener("abort",f))),x||(x=null);var C=m(k);C&&-1===["http","https","file"].indexOf(C)?i(new u("Unsupported protocol "+C+":",u.ERR_BAD_REQUEST,e)):g.send(x)}))}},1609:(e,a,i)=>{"use strict";var n=i(4867),o=i(1849),s=i(321),t=i(7185),r=function e(a){var i=new s(a),r=o(s.prototype.request,i);return n.extend(r,s.prototype,i),n.extend(r,i),r.create=function(i){return e(t(a,i))},r}(i(5546));r.Axios=s,r.CanceledError=i(644),r.CancelToken=i(4972),r.isCancel=i(6502),r.VERSION=i(7288).version,r.toFormData=i(7675),r.AxiosError=i(2648),r.Cancel=r.CanceledError,r.all=function(e){return Promise.all(e)},r.spread=i(8713),r.isAxiosError=i(6268),e.exports=r,e.exports.default=r},4972:(e,a,i)=>{"use strict";var n=i(644);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var a;this.promise=new Promise((function(e){a=e}));var i=this;this.promise.then((function(e){if(i._listeners){var a,n=i._listeners.length;for(a=0;a{"use strict";var n=i(2648);function o(e){n.call(this,null==e?"canceled":e,n.ERR_CANCELED),this.name="CanceledError"}i(4867).inherits(o,n,{__CANCEL__:!0}),e.exports=o},6502:e=>{"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:(e,a,i)=>{"use strict";var n=i(4867),o=i(5327),s=i(782),t=i(3572),r=i(7185),c=i(4097),p=i(4875),l=p.validators;function u(e){this.defaults=e,this.interceptors={request:new s,response:new s}}u.prototype.request=function(e,a){"string"==typeof e?(a=a||{}).url=e:a=e||{},(a=r(this.defaults,a)).method?a.method=a.method.toLowerCase():this.defaults.method?a.method=this.defaults.method.toLowerCase():a.method="get";var i=a.transitional;void 0!==i&&p.assertOptions(i,{silentJSONParsing:l.transitional(l.boolean),forcedJSONParsing:l.transitional(l.boolean),clarifyTimeoutError:l.transitional(l.boolean)},!1);var n=[],o=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(a)||(o=o&&e.synchronous,n.unshift(e.fulfilled,e.rejected))}));var s,c=[];if(this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)})),!o){var u=[t,void 0];for(Array.prototype.unshift.apply(u,n),u=u.concat(c),s=Promise.resolve(a);u.length;)s=s.then(u.shift(),u.shift());return s}for(var d=a;n.length;){var m=n.shift(),f=n.shift();try{d=m(d)}catch(e){f(e);break}}try{s=t(d)}catch(e){return Promise.reject(e)}for(;c.length;)s=s.then(c.shift(),c.shift());return s},u.prototype.getUri=function(e){e=r(this.defaults,e);var a=c(e.baseURL,e.url);return o(a,e.params,e.paramsSerializer)},n.forEach(["delete","get","head","options"],(function(e){u.prototype[e]=function(a,i){return this.request(r(i||{},{method:e,url:a,data:(i||{}).data}))}})),n.forEach(["post","put","patch"],(function(e){function a(a){return function(i,n,o){return this.request(r(o||{},{method:e,headers:a?{"Content-Type":"multipart/form-data"}:{},url:i,data:n}))}}u.prototype[e]=a(),u.prototype[e+"Form"]=a(!0)})),e.exports=u},2648:(e,a,i)=>{"use strict";var n=i(4867);function o(e,a,i,n,o){Error.call(this),this.message=e,this.name="AxiosError",a&&(this.code=a),i&&(this.config=i),n&&(this.request=n),o&&(this.response=o)}n.inherits(o,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var s=o.prototype,t={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED"].forEach((function(e){t[e]={value:e}})),Object.defineProperties(o,t),Object.defineProperty(s,"isAxiosError",{value:!0}),o.from=function(e,a,i,t,r,c){var p=Object.create(s);return n.toFlatObject(e,p,(function(e){return e!==Error.prototype})),o.call(p,e.message,a,i,t,r),p.name=e.name,c&&Object.assign(p,c),p},e.exports=o},782:(e,a,i)=>{"use strict";var n=i(4867);function o(){this.handlers=[]}o.prototype.use=function(e,a,i){return this.handlers.push({fulfilled:e,rejected:a,synchronous:!!i&&i.synchronous,runWhen:i?i.runWhen:null}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){n.forEach(this.handlers,(function(a){null!==a&&e(a)}))},e.exports=o},4097:(e,a,i)=>{"use strict";var n=i(1793),o=i(7303);e.exports=function(e,a){return e&&!n(a)?o(e,a):a}},3572:(e,a,i)=>{"use strict";var n=i(4867),o=i(8527),s=i(6502),t=i(5546),r=i(644);function c(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new r}e.exports=function(e){return c(e),e.headers=e.headers||{},e.data=o.call(e,e.data,e.headers,e.transformRequest),e.headers=n.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),n.forEach(["delete","get","head","post","put","patch","common"],(function(a){delete e.headers[a]})),(e.adapter||t.adapter)(e).then((function(a){return c(e),a.data=o.call(e,a.data,a.headers,e.transformResponse),a}),(function(a){return s(a)||(c(e),a&&a.response&&(a.response.data=o.call(e,a.response.data,a.response.headers,e.transformResponse))),Promise.reject(a)}))}},7185:(e,a,i)=>{"use strict";var n=i(4867);e.exports=function(e,a){a=a||{};var i={};function o(e,a){return n.isPlainObject(e)&&n.isPlainObject(a)?n.merge(e,a):n.isPlainObject(a)?n.merge({},a):n.isArray(a)?a.slice():a}function s(i){return n.isUndefined(a[i])?n.isUndefined(e[i])?void 0:o(void 0,e[i]):o(e[i],a[i])}function t(e){if(!n.isUndefined(a[e]))return o(void 0,a[e])}function r(i){return n.isUndefined(a[i])?n.isUndefined(e[i])?void 0:o(void 0,e[i]):o(void 0,a[i])}function c(i){return i in a?o(e[i],a[i]):i in e?o(void 0,e[i]):void 0}var p={url:t,method:t,data:t,baseURL:r,transformRequest:r,transformResponse:r,paramsSerializer:r,timeout:r,timeoutMessage:r,withCredentials:r,adapter:r,responseType:r,xsrfCookieName:r,xsrfHeaderName:r,onUploadProgress:r,onDownloadProgress:r,decompress:r,maxContentLength:r,maxBodyLength:r,beforeRedirect:r,transport:r,httpAgent:r,httpsAgent:r,cancelToken:r,socketPath:r,responseEncoding:r,validateStatus:c};return n.forEach(Object.keys(e).concat(Object.keys(a)),(function(e){var a=p[e]||s,o=a(e);n.isUndefined(o)&&a!==c||(i[e]=o)})),i}},6026:(e,a,i)=>{"use strict";var n=i(2648);e.exports=function(e,a,i){var o=i.config.validateStatus;i.status&&o&&!o(i.status)?a(new n("Request failed with status code "+i.status,[n.ERR_BAD_REQUEST,n.ERR_BAD_RESPONSE][Math.floor(i.status/100)-4],i.config,i.request,i)):e(i)}},8527:(e,a,i)=>{"use strict";var n=i(4867),o=i(5546);e.exports=function(e,a,i){var s=this||o;return n.forEach(i,(function(i){e=i.call(s,e,a)})),e}},3784:(e,a,i)=>{e.exports=i(6882)},5546:(e,a,i)=>{"use strict";var n=i(4867),o=i(6016),s=i(2648),t=i(7874),r=i(7675),c={"Content-Type":"application/x-www-form-urlencoded"};function p(e,a){!n.isUndefined(e)&&n.isUndefined(e["Content-Type"])&&(e["Content-Type"]=a)}var l,u={transitional:t,adapter:("undefined"!=typeof XMLHttpRequest?l=i(5448):"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)&&(l=i(7970)),l),transformRequest:[function(e,a){if(o(a,"Accept"),o(a,"Content-Type"),n.isFormData(e)||n.isArrayBuffer(e)||n.isBuffer(e)||n.isStream(e)||n.isFile(e)||n.isBlob(e))return e;if(n.isArrayBufferView(e))return e.buffer;if(n.isURLSearchParams(e))return p(a,"application/x-www-form-urlencoded;charset=utf-8"),e.toString();var i,s=n.isObject(e),t=a&&a["Content-Type"];if((i=n.isFileList(e))||s&&"multipart/form-data"===t){var c=this.env&&this.env.FormData;return r(i?{"files[]":e}:e,c&&new c)}return s||"application/json"===t?(p(a,"application/json"),function(e,a,i){if(n.isString(e))try{return(a||JSON.parse)(e),n.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(i||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var a=this.transitional||u.transitional,i=a&&a.silentJSONParsing,o=a&&a.forcedJSONParsing,t=!i&&"json"===this.responseType;if(t||o&&n.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(t){if("SyntaxError"===e.name)throw s.from(e,s.ERR_BAD_RESPONSE,this,null,this.response);throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:i(3784)},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};n.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),n.forEach(["post","put","patch"],(function(e){u.headers[e]=n.merge(c)})),e.exports=u},7874:e=>{"use strict";e.exports={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}},7288:e=>{e.exports={version:"0.27.2"}},1849:e=>{"use strict";e.exports=function(e,a){return function(){for(var i=new Array(arguments.length),n=0;n{"use strict";var n=i(4867);function o(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,a,i){if(!a)return e;var s;if(i)s=i(a);else if(n.isURLSearchParams(a))s=a.toString();else{var t=[];n.forEach(a,(function(e,a){null!=e&&(n.isArray(e)?a+="[]":e=[e],n.forEach(e,(function(e){n.isDate(e)?e=e.toISOString():n.isObject(e)&&(e=JSON.stringify(e)),t.push(o(a)+"="+o(e))})))})),s=t.join("&")}if(s){var r=e.indexOf("#");-1!==r&&(e=e.slice(0,r)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}},7303:e=>{"use strict";e.exports=function(e,a){return a?e.replace(/\/+$/,"")+"/"+a.replace(/^\/+/,""):e}},4372:(e,a,i)=>{"use strict";var n=i(4867);e.exports=n.isStandardBrowserEnv()?{write:function(e,a,i,o,s,t){var r=[];r.push(e+"="+encodeURIComponent(a)),n.isNumber(i)&&r.push("expires="+new Date(i).toGMTString()),n.isString(o)&&r.push("path="+o),n.isString(s)&&r.push("domain="+s),!0===t&&r.push("secure"),document.cookie=r.join("; ")},read:function(e){var a=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return a?decodeURIComponent(a[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},1793:e=>{"use strict";e.exports=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}},6268:(e,a,i)=>{"use strict";var n=i(4867);e.exports=function(e){return n.isObject(e)&&!0===e.isAxiosError}},7985:(e,a,i)=>{"use strict";var n=i(4867);e.exports=n.isStandardBrowserEnv()?function(){var e,a=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");function o(e){var n=e;return a&&(i.setAttribute("href",n),n=i.href),i.setAttribute("href",n),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}return e=o(window.location.href),function(a){var i=n.isString(a)?o(a):a;return i.protocol===e.protocol&&i.host===e.host}}():function(){return!0}},6016:(e,a,i)=>{"use strict";var n=i(4867);e.exports=function(e,a){n.forEach(e,(function(i,n){n!==a&&n.toUpperCase()===a.toUpperCase()&&(e[a]=i,delete e[n])}))}},4109:(e,a,i)=>{"use strict";var n=i(4867),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var a,i,s,t={};return e?(n.forEach(e.split("\n"),(function(e){if(s=e.indexOf(":"),a=n.trim(e.substr(0,s)).toLowerCase(),i=n.trim(e.substr(s+1)),a){if(t[a]&&o.indexOf(a)>=0)return;t[a]="set-cookie"===a?(t[a]?t[a]:[]).concat([i]):t[a]?t[a]+", "+i:i}})),t):t}},205:e=>{"use strict";e.exports=function(e){var a=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return a&&a[1]||""}},8713:e=>{"use strict";e.exports=function(e){return function(a){return e.apply(null,a)}}},7675:(e,a,i)=>{"use strict";var n=i(4867);e.exports=function(e,a){a=a||new FormData;var i=[];function o(e){return null===e?"":n.isDate(e)?e.toISOString():n.isArrayBuffer(e)||n.isTypedArray(e)?"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}return function e(s,t){if(n.isPlainObject(s)||n.isArray(s)){if(-1!==i.indexOf(s))throw Error("Circular reference detected in "+t);i.push(s),n.forEach(s,(function(i,s){if(!n.isUndefined(i)){var r,c=t?t+"."+s:s;if(i&&!t&&"object"==typeof i)if(n.endsWith(s,"{}"))i=JSON.stringify(i);else if(n.endsWith(s,"[]")&&(r=n.toArray(i)))return void r.forEach((function(e){!n.isUndefined(e)&&a.append(c,o(e))}));e(i,c)}})),i.pop()}else a.append(t,o(s))}(e),a}},4875:(e,a,i)=>{"use strict";var n=i(7288).version,o=i(2648),s={};["object","boolean","number","function","string","symbol"].forEach((function(e,a){s[e]=function(i){return typeof i===e||"a"+(a<1?"n ":" ")+e}}));var t={};s.transitional=function(e,a,i){function s(e,a){return"[Axios v"+n+"] Transitional option '"+e+"'"+a+(i?". "+i:"")}return function(i,n,r){if(!1===e)throw new o(s(n," has been removed"+(a?" in "+a:"")),o.ERR_DEPRECATED);return a&&!t[n]&&(t[n]=!0,console.warn(s(n," has been deprecated since v"+a+" and will be removed in the near future"))),!e||e(i,n,r)}},e.exports={assertOptions:function(e,a,i){if("object"!=typeof e)throw new o("options must be an object",o.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),s=n.length;s-- >0;){var t=n[s],r=a[t];if(r){var c=e[t],p=void 0===c||r(c,t,e);if(!0!==p)throw new o("option "+t+" must be "+p,o.ERR_BAD_OPTION_VALUE)}else if(!0!==i)throw new o("Unknown option "+t,o.ERR_BAD_OPTION)}},validators:s}},4867:(e,a,i)=>{"use strict";var n,o=i(1849),s=Object.prototype.toString,t=(n=Object.create(null),function(e){var a=s.call(e);return n[a]||(n[a]=a.slice(8,-1).toLowerCase())});function r(e){return e=e.toLowerCase(),function(a){return t(a)===e}}function c(e){return Array.isArray(e)}function p(e){return void 0===e}var l=r("ArrayBuffer");function u(e){return null!==e&&"object"==typeof e}function d(e){if("object"!==t(e))return!1;var a=Object.getPrototypeOf(e);return null===a||a===Object.prototype}var m=r("Date"),f=r("File"),x=r("Blob"),v=r("FileList");function h(e){return"[object Function]"===s.call(e)}var b=r("URLSearchParams");function g(e,a){if(null!=e)if("object"!=typeof e&&(e=[e]),c(e))for(var i=0,n=e.length;i0;)t[s=n[o]]||(a[s]=e[s],t[s]=!0);e=Object.getPrototypeOf(e)}while(e&&(!i||i(e,a))&&e!==Object.prototype);return a},kindOf:t,kindOfTest:r,endsWith:function(e,a,i){e=String(e),(void 0===i||i>e.length)&&(i=e.length),i-=a.length;var n=e.indexOf(a,i);return-1!==n&&n===i},toArray:function(e){if(!e)return null;var a=e.length;if(p(a))return null;for(var i=new Array(a);a-- >0;)i[a]=e[a];return i},isTypedArray:w,isFileList:v}},1076:function(e,a,i){"use strict";function n(e){return n="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},n(e)}var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var a,i=1,n=arguments.length;i{"use strict";var i;Object.defineProperty(a,"__esModule",{value:!0}),function(e){e.Get="get",e.Post="post",e.Put="put",e.Delete="delete"}(i||(i={})),a.default=i},4771:function(e,a,i){"use strict";function n(e){return n="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},n(e)}var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var a,i=1,n=arguments.length;i0&&o[o.length-1])||6!==s[0]&&2!==s[0])){t=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]-1?"text/plain":"application/json"},e.prototype.getRequestBody=function(e){return[x.default.Put,x.default.Post,x.default.Delete].includes(this.method)?e:void 0},e.prototype.buildFullUrl=function(){var a,i,n=this.client.getConfig(),o=null!==(a=this.config.host)&&void 0!==a?a:n.host,s=null!==(i=this.config.version)&&void 0!==i?i:n.version;return(0,u.default)(e.protocol,o,s,this.subPath,this.url)},e.prototype.buildSubPath=function(){if(this.actionPath){var e="contactslist"===this.resource&&"csvdata/text:plain"===this.actionPath,a="batchjob"===this.resource&&"csverror/text:csv"===this.actionPath;return e||a?"DATA":this.subPath}var i="send"===this.resource,n=this.resource.indexOf("sms")>-1;return i||n?"":"REST"},e.prototype.makeRequest=function(a,i,n){var s,t={url:a,params:n,data:this.getRequestBody(i),method:this.method,responseType:"json",headers:{"User-Agent":this.getUserAgent(),"Content-Type":this.getContentType(a)},transformResponse:function(a){var i="string"==typeof a,n="json"===this.responseType;return a&&i&&n?e.parseToJSONb(a):a}};e.isBrowser()&&(t.headers["X-User-Agent"]=t.headers["User-Agent"]);var r=this.getCredentials();r.apiToken?t.headers.Authorization="Bearer ".concat(r.apiToken):t.auth={username:r.apiKey,password:r.apiSecret};var c=this.client.getConfig(),p=this.client.getOptions();p.timeout&&(t.timeout=p.timeout),p.proxy&&(t.proxy=p.proxy),p.headers&&Object.keys(p.headers).length>0&&(t.headers=o(o({},t.headers),p.headers));var l=null!==(s=this.config.output)&&void 0!==s?s:c.output;return l&&(t.responseType=l),p.maxBodyLength&&(t.maxBodyLength=p.maxBodyLength),p.maxContentLength&&(t.maxContentLength=p.maxContentLength),(0,m.default)(t)},e.prototype.setBaseURL=function(e){return this.url=e.toLowerCase(),this},e.prototype.id=function(e){if(!["string","number"].includes(n(e)))throw new Error('Argument "value" must be string or number');return this.url=(0,u.default)(this.url,e.toString()),this},e.prototype.action=function(e){if("string"!=typeof e)throw new Error('Argument "name" must be string');switch(this.actionPath=e.toLowerCase(),this.actionPath){case"csvdata":this.actionPath="csvdata/text:plain";break;case"csverror":this.actionPath="csverror/text:csv"}return this.url=(0,u.default)(this.url,this.actionPath),this.subPath=this.buildSubPath(),this},e.prototype.request=function(e,a,i){var n,o,s,t,r;return void 0===e&&(e={}),void 0===a&&(a={}),void 0===i&&(i=!0),c(this,void 0,void 0,(function(){var c,l,u,d,x,v,h,b,g,y;return p(this,(function(p){switch(p.label){case 0:if(c=this.buildFullUrl(),this.setBaseURL(this.resource),!i)return[2,{body:b=this.getRequestBody(e),params:a,url:c}];p.label=1;case 1:return p.trys.push([1,3,,4]),[4,this.makeRequest(c,e,a)];case 2:return[2,{response:l=p.sent(),body:l.data}];case 3:if((u=p.sent())instanceof m.AxiosError)throw(d=new Error).code=u.code,d.config=u.config,u.response?(x=u.response,v=x.status,h=x.statusText,b=x.data,d.response=u.response,d.statusCode=v,d.statusText=h,g=null!==(n=null==b?void 0:b.ErrorMessage)&&void 0!==n?n:u.message,d.originalMessage=g,d.message='Unsuccessful: Status Code: "'.concat(d.statusCode,'" Message: "').concat(g,'"'),b&&("string"==typeof(y=null===(r=null===(t=null===(s=null===(o=b.Messages)||void 0===o?void 0:o[0])||void 0===s?void 0:s.Errors)||void 0===t?void 0:t[0])||void 0===r?void 0:r.ErrorMessage)&&(d.message+=";\n".concat(y)),(0,f.setValueIfNotNil)(d,"ErrorMessage",b.ErrorMessage),(0,f.setValueIfNotNil)(d,"ErrorCode",b.ErrorCode),(0,f.setValueIfNotNil)(d,"ErrorIdentifier",b.ErrorIdentifier),(0,f.setValueIfNotNil)(d,"ErrorRelatedTo",b.ErrorRelatedTo))):(d.response=null,d.statusCode=null,d.statusText=null,d.originalMessage=u.message,d.message='Unsuccessful: Error Code: "'.concat(d.code,'" Message: "').concat(u.message,'"')),d;throw u;case 4:return[2]}}))}))},e.parseToJSONb=function(e){if("string"!=typeof e)throw new Error('Argument "text" must be string');var a;try{a=h.parse(e)}catch(e){a={}}return a},e.isBrowser=function(){return"object"===("undefined"==typeof window?"undefined":n(window))},e.protocol="https://",e}();a.default=b},5917:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.SentCampaign=a.DraftCampaign=void 0,function(e){!function(e){e.Tool2="tool2",e.HTML2="html2",e.MJML="mjml"}(e.EditMode||(e.EditMode={})),function(e){e[e.AXCanceled=-3]="AXCanceled",e[e.Deleted=-2]="Deleted",e[e.Archived=-1]="Archived",e[e.Draft=0]="Draft",e[e.Programmed=1]="Programmed",e[e.Sent=2]="Sent",e[e.AXTested=3]="AXTested",e[e.AXSelected=4]="AXSelected"}(e.CampaignDraftStatus||(e.CampaignDraftStatus={})),function(e){e.AXCancelled="AXCancelled",e.Deleted="Deleted",e.Archived="Archived",e.Draft="Draft",e.Programmed="Programmed",e.Sent="Sent",e.AXTested="AXTested",e.AXSelected="AXSelected"}(e.CampaignDraftSendingStatus||(e.CampaignDraftSendingStatus={}))}(a.DraftCampaign||(a.DraftCampaign={})),function(e){!function(e){e[e.Transactional=1]="Transactional",e[e.Marketing=2]="Marketing",e[e.Unknown=3]="Unknown"}(e.CampaignType||(e.CampaignType={}))}(a.SentCampaign||(a.SentCampaign={}))},7566:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Common=void 0,function(e){!function(e){e.Day="Day",e.Week="Week",e.Month="Month",e.Year="Year"}(e.Period||(e.Period={}))}(a.Common||(a.Common={}))},235:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.ContactProperties=a.BulkContactManagement=void 0,function(e){!function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.Remove="remove",e.UnSub="unsub"}(e.ManageContactsAction||(e.ManageContactsAction={})),function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.UnSub="unsub",e.DuplicateOverride="duplicate-override",e.DuplicateNoOverride="duplicate-no-override"}(e.ImportListAction||(e.ImportListAction={})),function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.Remove="remove",e.UnSub="unsub",e.ExcludeMarketing="excludemarketing",e.IncludeMarketing="includemarketing"}(e.ImportCSVMethod||(e.ImportCSVMethod={})),function(e){e.Upload="Upload",e.Completed="Completed",e.Abort="Abort"}(e.CSVImportStatus||(e.CSVImportStatus={})),function(e){e.Completed="Completed",e.InProgress="In Progress",e.Error="Error"}(e.JobStatus||(e.JobStatus={}))}(a.BulkContactManagement||(a.BulkContactManagement={})),function(e){!function(e){e.Str="str",e.Int="int",e.Float="float",e.Bool="bool",e.DateTime="datetime"}(e.DataType||(e.DataType={})),function(e){e.Static="static",e.Historic="historic"}(e.NameSpace||(e.NameSpace={}))}(a.ContactProperties||(a.ContactProperties={}))},8354:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Message=void 0,function(e){!function(e){e[e.UserUnknown=1]="UserUnknown",e[e.MailboxInactive=2]="MailboxInactive",e[e.QuotaExceeded=3]="QuotaExceeded",e[e.InvalidDomain=4]="InvalidDomain",e[e.NoMailHost=5]="NoMailHost",e[e.RelayOrAccessDenied=6]="RelayOrAccessDenied",e[e.SenderBlocked=7]="SenderBlocked",e[e.ContentBlocked=8]="ContentBlocked",e[e.PolicyIssue=9]="PolicyIssue",e[e.SystemIssue=10]="SystemIssue",e[e.ProtocolIssue=11]="ProtocolIssue",e[e.ConnectionIssue=12]="ConnectionIssue",e[e.GreyListed=13]="GreyListed",e[e.PreBlocked=14]="PreBlocked",e[e.DuplicateInCampaign=15]="DuplicateInCampaign",e[e.SpamPreBlocked=16]="SpamPreBlocked",e[e.BadOrEmptyTemplate=17]="BadOrEmptyTemplate",e[e.ErrorInTemplateLanguage=18]="ErrorInTemplateLanguage",e[e.TypoFix=19]="TypoFix",e[e.BlackListed=20]="BlackListed",e[e.SpamReporter=21]="SpamReporter"}(e.MessageState||(e.MessageState={})),function(e){e[e.Transactional=1]="Transactional",e[e.Marketing=2]="Marketing",e[e.Unknown=3]="Unknown"}(e.FromType||(e.FromType={})),function(e){e[e.Processed=0]="Processed",e[e.Queued=1]="Queued",e[e.Sent=2]="Sent",e[e.Opened=3]="Opened",e[e.Clicked=4]="Clicked",e[e.Bounce=5]="Bounce",e[e.Spam=6]="Spam",e[e.Unsub=7]="Unsub",e[e.Blocked=8]="Blocked",e[e.SoftBounce=9]="SoftBounce",e[e.HardBounce=10]="HardBounce",e[e.Deferred=11]="Deferred"}(e.MessageStatus||(e.MessageStatus={})),function(e){e.Unknown="unknown",e.Queued="queued",e.Sent="sent",e.Opened="opened",e.Clicked="clicked",e.Bounce="bounce",e.Spam="spam",e.Unsub="unsub",e.Blocked="blocked",e.HardBounced="hardbounced",e.SoftBounced="softbounced",e.Deferred="deferred"}(e.CurrentMessageStatus||(e.CurrentMessageStatus={})),function(e){e.Sent="sent",e.Opened="opened",e.Clicked="clicked",e.Bounced="bounced",e.Blocked="blocked",e.Unsub="unsub",e.Spam="spam"}(e.EventType||(e.EventType={}))}(a.Message||(a.Message={}))},3635:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Segmentation=void 0,function(e){!function(e){e.Used="used",e.UnUsed="unused",e.Deleted="deleted"}(e.SegmentStatus||(e.SegmentStatus={}))}(a.Segmentation||(a.Segmentation={}))},7410:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.SendEmailV3_1=void 0,function(e){!function(e){e.AccountDefault="account_default",e.Disabled="disabled",e.Enabled="enabled"}(e.TrackOpens||(e.TrackOpens={})),function(e){e.AccountDefault="account_default",e.Disabled="disabled",e.Enabled="enabled"}(e.TrackClicks||(e.TrackClicks={})),function(e){e.Success="success",e.Error="error"}(e.ResponseStatus||(e.ResponseStatus={}))}(a.SendEmailV3_1||(a.SendEmailV3_1={}))},2256:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.DNS=a.Sender=void 0,function(e){!function(e){e.Transactional="transactional",e.Bulk="bulk",e.Unknown="unknown"}(e.EmailType||(e.EmailType={})),function(e){e.Inactive="Inactive",e.Active="Active",e.Deleted="Deleted"}(e.SenderStatus||(e.SenderStatus={}))}(a.Sender||(a.Sender={})),function(e){!function(e){e.OK="OK",e.Error="Error",e.NotChecked="Not checked"}(e.DKIMConfigurationCheckStatus||(e.DKIMConfigurationCheckStatus={})),function(e){e.OK="OK",e.Error="Error"}(e.DKIMConfigurationStatus||(e.DKIMConfigurationStatus={})),function(e){e.OK="OK",e.Error="Error",e.NotChecked="Not checked",e.NotFound="Not found"}(e.SPFConfigurationCheckStatus||(e.SPFConfigurationCheckStatus={})),function(e){e.OK="OK",e.Error="Error"}(e.SPFConfigurationStatus||(e.SPFConfigurationStatus={}))}(a.DNS||(a.DNS={}))},5295:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.APIKeyConfiguration=void 0,function(e){!function(e){e.Normal="Normal",e.SoftLock="Softlock",e.HardLock="Hardlock"}(e.RunLevel||(e.RunLevel={}))}(a.APIKeyConfiguration||(a.APIKeyConfiguration={}))},6083:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Statistic=void 0,function(e){!function(e){e.SentCampaign="Campaign",e.ABTesting="AX",e.Draft="NL"}(e.CampaignOverviewIDType||(e.CampaignOverviewIDType={})),function(e){e.Tool="tool",e.HTML="html",e.Tool2="tool2",e.HTML2="html2",e.MJML="mjml"}(e.CampaignOverviewEditMode||(e.CampaignOverviewEditMode={})),function(e){e.Full="full",e.Unknown="unknown"}(e.CampaignOverviewEditType||(e.CampaignOverviewEditType={})),function(e){e.Campaign="Campaign",e.APIKey="APIKey",e.List="List",e.Sender="Sender"}(e.CounterSource||(e.CounterSource={})),function(e){e.Highest="Highest",e.Hour="Hour",e.Day="Day",e.Lifetime="Lifetime"}(e.CounterResolution||(e.CounterResolution={})),function(e){e.Message="Message",e.Event="Event"}(e.CounterTiming||(e.CounterTiming={})),function(e){e.Open="open",e.Click="click"}(e.EmailEvent||(e.EmailEvent={}))}(a.Statistic||(a.Statistic={}))},4098:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Template=void 0,function(e){!function(e){e.Full="full",e.Basic="basic",e.NewsLetter="newsletter",e.ECommerce="e-commerce",e.Events="events",e.Travel="travel",e.Sports="sports",e.Welcome="welcome",e.ContactPropertyUpdate="contact-property-update",e.Support="support",e.Invoice="invoice",e.Anniversary="anniversary",e.Account="account",e.Activation="activation"}(e.Categories||(e.Categories={})),function(e){e.ContainsAny="containsany",e.ContainsAll="containsall",e.IsSubSet="issubset"}(e.CategoriesSelectionMethod||(e.CategoriesSelectionMethod={})),function(e){e[e.DragAndDropBuilder=1]="DragAndDropBuilder",e[e.HTMLBuilder=2]="HTMLBuilder",e[e.SavedSectionBuilder=3]="SavedSectionBuilder",e[e.MJMLBuilder=4]="MJMLBuilder"}(e.EditMode||(e.EditMode={})),function(e){e.ApiKey="apikey",e.User="user",e.Global="global"}(e.OwnerType||(e.OwnerType={})),function(e){e.Marketing="marketing",e.Transactional="transactional",e.Automation="automation"}(e.Purposes||(e.Purposes={})),function(e){e.ContainsAny="containsany",e.ContainsAll="containsall",e.IsSubSet="issubset"}(e.PurposesSelectionMethod||(e.PurposesSelectionMethod={}))}(a.Template||(a.Template={}))},1174:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.Webhook=void 0,function(e){!function(e){e.Open="open",e.Click="click",e.Bounce="bounce",e.Spam="spam",e.Blocked="blocked",e.UnSub="unsub",e.Sent="sent"}(e.EventType||(e.EventType={})),function(e){e[e.Click=1]="Click",e[e.Bounce=2]="Bounce",e[e.Spam=3]="Spam",e[e.Blocked=4]="Blocked",e[e.Unsubscribe=5]="Unsubscribe",e[e.Open=6]="Open",e[e.Sent=7]="Sent"}(e.EventTypeValue||(e.EventTypeValue={})),function(e){e.Dead="dead",e.Alive="alive"}(e.Status||(e.Status={}))}(a.Webhook||(a.Webhook={}))},4310:(e,a,i)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.APIKeyConfiguration=a.DNS=a.Sender=a.Webhook=a.Statistic=a.Template=a.Segmentation=a.SentCampaign=a.DraftCampaign=a.ContactProperties=a.BulkContactManagement=a.Message=a.SendEmailV3_1=a.Common=void 0;var n=i(7566);Object.defineProperty(a,"Common",{enumerable:!0,get:function(){return n.Common}});var o=i(7410);Object.defineProperty(a,"SendEmailV3_1",{enumerable:!0,get:function(){return o.SendEmailV3_1}});var s=i(8354);Object.defineProperty(a,"Message",{enumerable:!0,get:function(){return s.Message}});var t=i(235);Object.defineProperty(a,"BulkContactManagement",{enumerable:!0,get:function(){return t.BulkContactManagement}}),Object.defineProperty(a,"ContactProperties",{enumerable:!0,get:function(){return t.ContactProperties}});var r=i(5917);Object.defineProperty(a,"DraftCampaign",{enumerable:!0,get:function(){return r.DraftCampaign}}),Object.defineProperty(a,"SentCampaign",{enumerable:!0,get:function(){return r.SentCampaign}});var c=i(3635);Object.defineProperty(a,"Segmentation",{enumerable:!0,get:function(){return c.Segmentation}});var p=i(4098);Object.defineProperty(a,"Template",{enumerable:!0,get:function(){return p.Template}});var l=i(6083);Object.defineProperty(a,"Statistic",{enumerable:!0,get:function(){return l.Statistic}});var u=i(1174);Object.defineProperty(a,"Webhook",{enumerable:!0,get:function(){return u.Webhook}});var d=i(2256);Object.defineProperty(a,"Sender",{enumerable:!0,get:function(){return d.Sender}}),Object.defineProperty(a,"DNS",{enumerable:!0,get:function(){return d.DNS}});var m=i(5295);Object.defineProperty(a,"APIKeyConfiguration",{enumerable:!0,get:function(){return m.APIKeyConfiguration}})},9006:function(e,a,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.setValueIfNotNil=a.isPureObject=a.isUndefined=a.isNull=a.isNil=void 0;var o=n(i(1808));a.isNil=o.default;var s=n(i(7376));a.isNull=s.default;var t=n(i(5034));a.isUndefined=t.default;var r=n(i(1818));a.isPureObject=r.default;var c=n(i(1190));a.setValueIfNotNil=c.default},1808:function(e,a,i){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});var o=n(i(7376)),s=n(i(5034));a.default=function(e){return(0,s.default)(e)||(0,o.default)(e)}},7376:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.default=function(e){return null===e}},1818:(e,a)=>{"use strict";function i(e){return i="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},i(e)}Object.defineProperty(a,"__esModule",{value:!0}),a.default=function(e){return"object"===i(e)&&null!==e&&(Object.getPrototypeOf(e)===Object.prototype||null===Object.getPrototypeOf(e))}},5034:(e,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.default=function(e){return void 0===e}},1190:function(e,a,i){"use strict";function n(e){return n="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},n(e)}var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});var s=o(i(1808)),t=o(i(7376));a.default=function(e,a,i){if("object"!==n(e)||(0,t.default)(e))throw Error('Argument "targetObject" is not object');if(!a)throw Error('Argument "path" is required');(0,s.default)(i)||(e[a]=i)}},4431:function(e,a,i){var n;!function(o){"use strict";var s,t=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,r=Math.ceil,c=Math.floor,p="[BigNumber Error] ",l=p+"Number primitive has more than 15 significant digits: ",u=1e14,d=14,m=9007199254740991,f=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],x=1e7,v=1e9;function h(e){var a=0|e;return e>0||e===a?a:a-1}function b(e){for(var a,i,n=1,o=e.length,s=e[0]+"";np^i?1:-1;for(r=(c=o.length)<(p=s.length)?c:p,t=0;ts[t]^i?1:-1;return c==p?0:c>p^i?1:-1}function y(e,a,i,n){if(ei||e!==c(e))throw Error(p+(n||"Argument")+("number"==typeof e?ei?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function w(e){var a=e.c.length-1;return h(e.e/d)==a&&e.c[a]%2!=0}function k(e,a){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(a<0?"e":"e+")+a}function j(e,a,i){var n,o;if(a<0){for(o=i+".";++a;o+=i);e=o+e}else if(++a>(n=e.length)){for(o=i,a-=n;--a;o+=i);e+=o}else aD?h.c=h.e=null:e.e=10;u/=10,p++);return void(p>D?h.c=h.e=null:(h.e=p,h.c=[e]))}v=String(e)}else{if(!t.test(v=String(e)))return o(h,v,f);h.s=45==v.charCodeAt(0)?(v=v.slice(1),-1):1}(p=v.indexOf("."))>-1&&(v=v.replace(".","")),(u=v.search(/e/i))>0?(p<0&&(p=u),p+=+v.slice(u+1),v=v.substring(0,u)):p<0&&(p=v.length)}else{if(y(a,2,I.length,"Base"),10==a)return $(h=new H(e),P+h.e+1,B);if(v=String(e),f="number"==typeof e){if(0*e!=0)return o(h,v,f,a);if(h.s=1/e<0?(v=v.slice(1),-1):1,H.DEBUG&&v.replace(/^0\.0*|\./,"").length>15)throw Error(l+e)}else h.s=45===v.charCodeAt(0)?(v=v.slice(1),-1):1;for(i=I.slice(0,a),p=u=0,x=v.length;up){p=x;continue}}else if(!r&&(v==v.toUpperCase()&&(v=v.toLowerCase())||v==v.toLowerCase()&&(v=v.toUpperCase()))){r=!0,u=-1,p=0;continue}return o(h,String(e),f,a)}f=!1,(p=(v=n(v,a,10,h.s)).indexOf("."))>-1?v=v.replace(".",""):p=v.length}for(u=0;48===v.charCodeAt(u);u++);for(x=v.length;48===v.charCodeAt(--x););if(v=v.slice(u,++x)){if(x-=u,f&&H.DEBUG&&x>15&&(e>m||e!==c(e)))throw Error(l+h.s*e);if((p=p-u-1)>D)h.c=h.e=null;else if(p=z)?k(c,t):j(c,t,"0");else if(s=(e=$(new H(e),a,i)).e,r=(c=b(e.c)).length,1==n||2==n&&(a<=s||s<=N)){for(;rr){if(--a>0)for(c+=".";a--;c+="0");}else if((a+=s-r)>0)for(s+1==r&&(c+=".");a--;c+="0");return e.s<0&&o?"-"+c:c}function K(e,a){for(var i,n=1,o=new H(e[0]);n=10;o/=10,n++);return(i=n+i*d-1)>D?e.c=e.e=null:i=10;p/=10,o++);if((s=a-o)<0)s+=d,t=a,x=(l=v[m=0])/h[o-t-1]%10|0;else if((m=r((s+1)/d))>=v.length){if(!n)break e;for(;v.length<=m;v.push(0));l=x=0,o=1,t=(s%=d)-d+1}else{for(l=p=v[m],o=1;p>=10;p/=10,o++);x=(t=(s%=d)-d+o)<0?0:l/h[o-t-1]%10|0}if(n=n||a<0||null!=v[m+1]||(t<0?l:l%h[o-t-1]),n=i<4?(x||n)&&(0==i||i==(e.s<0?3:2)):x>5||5==x&&(4==i||n||6==i&&(s>0?t>0?l/h[o-t]:0:v[m-1])%10&1||i==(e.s<0?8:7)),a<1||!v[0])return v.length=0,n?(a-=e.e+1,v[0]=h[(d-a%d)%d],e.e=-a||0):v[0]=e.e=0,e;if(0==s?(v.length=m,p=1,m--):(v.length=m+1,p=h[d-s],v[m]=t>0?c(l/h[o-t]%h[t])*p:0),n)for(;;){if(0==m){for(s=1,t=v[0];t>=10;t/=10,s++);for(t=v[0]+=p,p=1;t>=10;t/=10,p++);s!=p&&(e.e++,v[0]==u&&(v[0]=1));break}if(v[m]+=p,v[m]!=u)break;v[m--]=0,p=1}for(s=v.length;0===v[--s];v.pop());}e.e>D?e.c=e.e=null:e.e=z?k(a,i):j(a,i,"0"),e.s<0?"-"+a:a)}return H.clone=e,H.ROUND_UP=0,H.ROUND_DOWN=1,H.ROUND_CEIL=2,H.ROUND_FLOOR=3,H.ROUND_HALF_UP=4,H.ROUND_HALF_DOWN=5,H.ROUND_HALF_EVEN=6,H.ROUND_HALF_CEIL=7,H.ROUND_HALF_FLOOR=8,H.EUCLID=9,H.config=H.set=function(e){var a,i;if(null!=e){if("object"!=typeof e)throw Error(p+"Object expected: "+e);if(e.hasOwnProperty(a="DECIMAL_PLACES")&&(y(i=e[a],0,v,a),P=i),e.hasOwnProperty(a="ROUNDING_MODE")&&(y(i=e[a],0,8,a),B=i),e.hasOwnProperty(a="EXPONENTIAL_AT")&&((i=e[a])&&i.pop?(y(i[0],-v,0,a),y(i[1],0,v,a),N=i[0],z=i[1]):(y(i,-v,v,a),N=-(z=i<0?-i:i))),e.hasOwnProperty(a="RANGE"))if((i=e[a])&&i.pop)y(i[0],-v,-1,a),y(i[1],1,v,a),L=i[0],D=i[1];else{if(y(i,-v,v,a),!i)throw Error(p+a+" cannot be zero: "+i);L=-(D=i<0?-i:i)}if(e.hasOwnProperty(a="CRYPTO")){if((i=e[a])!==!!i)throw Error(p+a+" not true or false: "+i);if(i){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw F=!i,Error(p+"crypto unavailable");F=i}else F=i}if(e.hasOwnProperty(a="MODULO_MODE")&&(y(i=e[a],0,9,a),q=i),e.hasOwnProperty(a="POW_PRECISION")&&(y(i=e[a],0,v,a),M=i),e.hasOwnProperty(a="FORMAT")){if("object"!=typeof(i=e[a]))throw Error(p+a+" not an object: "+i);U=i}if(e.hasOwnProperty(a="ALPHABET")){if("string"!=typeof(i=e[a])||/^.?$|[+\-.\s]|(.).*\1/.test(i))throw Error(p+a+" invalid: "+i);I=i}}return{DECIMAL_PLACES:P,ROUNDING_MODE:B,EXPONENTIAL_AT:[N,z],RANGE:[L,D],CRYPTO:F,MODULO_MODE:q,POW_PRECISION:M,FORMAT:U,ALPHABET:I}},H.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!H.DEBUG)return!0;var a,i,n=e.c,o=e.e,s=e.s;e:if("[object Array]"=={}.toString.call(n)){if((1===s||-1===s)&&o>=-v&&o<=v&&o===c(o)){if(0===n[0]){if(0===o&&1===n.length)return!0;break e}if((a=(o+1)%d)<1&&(a+=d),String(n[0]).length==a){for(a=0;a=u||i!==c(i))break e;if(0!==i)return!0}}}else if(null===n&&null===o&&(null===s||1===s||-1===s))return!0;throw Error(p+"Invalid BigNumber: "+e)},H.maximum=H.max=function(){return K(arguments,T.lt)},H.minimum=H.min=function(){return K(arguments,T.gt)},H.random=(s=9007199254740992,_=Math.random()*s&2097151?function(){return c(Math.random()*s)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var a,i,n,o,s,t=0,l=[],u=new H(R);if(null==e?e=P:y(e,0,v),o=r(e/d),F)if(crypto.getRandomValues){for(a=crypto.getRandomValues(new Uint32Array(o*=2));t>>11))>=9e15?(i=crypto.getRandomValues(new Uint32Array(2)),a[t]=i[0],a[t+1]=i[1]):(l.push(s%1e14),t+=2);t=o/2}else{if(!crypto.randomBytes)throw F=!1,Error(p+"crypto unavailable");for(a=crypto.randomBytes(o*=7);t=9e15?crypto.randomBytes(7).copy(a,t):(l.push(s%1e14),t+=7);t=o/7}if(!F)for(;t=10;s/=10,t++);ti-1&&(null==t[o+1]&&(t[o+1]=0),t[o+1]+=t[o]/i|0,t[o]%=i)}return t.reverse()}return function(n,o,s,t,r){var c,p,l,u,d,m,f,x,v=n.indexOf("."),h=P,g=B;for(v>=0&&(u=M,M=0,n=n.replace(".",""),m=(x=new H(o)).pow(n.length-v),M=u,x.c=a(j(b(m.c),m.e,"0"),10,s,e),x.e=x.c.length),l=u=(f=a(n,o,s,r?(c=I,e):(c=e,I))).length;0==f[--u];f.pop());if(!f[0])return c.charAt(0);if(v<0?--l:(m.c=f,m.e=l,m.s=t,f=(m=i(m,x,h,g,s)).c,d=m.r,l=m.e),v=f[p=l+h+1],u=s/2,d=d||p<0||null!=f[p+1],d=g<4?(null!=v||d)&&(0==g||g==(m.s<0?3:2)):v>u||v==u&&(4==g||d||6==g&&1&f[p-1]||g==(m.s<0?8:7)),p<1||!f[0])n=d?j(c.charAt(1),-h,c.charAt(0)):c.charAt(0);else{if(f.length=p,d)for(--s;++f[--p]>s;)f[p]=0,p||(++l,f=[1].concat(f));for(u=f.length;!f[--u];);for(v=0,n="";v<=u;n+=c.charAt(f[v++]));n=j(n,l,c.charAt(0))}return n}}(),i=function(){function e(e,a,i){var n,o,s,t,r=0,c=e.length,p=a%x,l=a/x|0;for(e=e.slice();c--;)r=((o=p*(s=e[c]%x)+(n=l*s+(t=e[c]/x|0)*p)%x*x+r)/i|0)+(n/x|0)+l*t,e[c]=o%i;return r&&(e=[r].concat(e)),e}function a(e,a,i,n){var o,s;if(i!=n)s=i>n?1:-1;else for(o=s=0;oa[o]?1:-1;break}return s}function i(e,a,i,n){for(var o=0;i--;)e[i]-=o,o=e[i]1;e.splice(0,1));}return function(n,o,s,t,r){var p,l,m,f,x,v,b,g,y,w,k,j,_,C,E,S,O,A=n.s==o.s?1:-1,T=n.c,R=o.c;if(!(T&&T[0]&&R&&R[0]))return new H(n.s&&o.s&&(T?!R||T[0]!=R[0]:R)?T&&0==T[0]||!R?0*A:A/0:NaN);for(y=(g=new H(A)).c=[],A=s+(l=n.e-o.e)+1,r||(r=u,l=h(n.e/d)-h(o.e/d),A=A/d|0),m=0;R[m]==(T[m]||0);m++);if(R[m]>(T[m]||0)&&l--,A<0)y.push(1),f=!0;else{for(C=T.length,S=R.length,m=0,A+=2,(x=c(r/(R[0]+1)))>1&&(R=e(R,x,r),T=e(T,x,r),S=R.length,C=T.length),_=S,k=(w=T.slice(0,S)).length;k=r/2&&E++;do{if(x=0,(p=a(R,w,S,k))<0){if(j=w[0],S!=k&&(j=j*r+(w[1]||0)),(x=c(j/E))>1)for(x>=r&&(x=r-1),b=(v=e(R,x,r)).length,k=w.length;1==a(v,w,b,k);)x--,i(v,S=10;A/=10,m++);$(g,s+(g.e=m+l*d-1)+1,t,f)}else g.e=l,g.r=+f;return g}}(),C=/^(-?)0([xbo])(?=\w[\w.]*$)/i,E=/^([^.]+)\.$/,S=/^\.([^.]+)$/,O=/^-?(Infinity|NaN)$/,A=/^\s*\+(?=[\w.])|^\s+|\s+$/g,o=function(e,a,i,n){var o,s=i?a:a.replace(A,"");if(O.test(s))e.s=isNaN(s)?null:s<0?-1:1;else{if(!i&&(s=s.replace(C,(function(e,a,i){return o="x"==(i=i.toLowerCase())?16:"b"==i?2:8,n&&n!=o?e:a})),n&&(o=n,s=s.replace(E,"$1").replace(S,"0.$1")),a!=s))return new H(s,o);if(H.DEBUG)throw Error(p+"Not a"+(n?" base "+n:"")+" number: "+a);e.s=null}e.c=e.e=null},T.absoluteValue=T.abs=function(){var e=new H(this);return e.s<0&&(e.s=1),e},T.comparedTo=function(e,a){return g(this,new H(e,a))},T.decimalPlaces=T.dp=function(e,a){var i,n,o,s=this;if(null!=e)return y(e,0,v),null==a?a=B:y(a,0,8),$(new H(s),e+s.e+1,a);if(!(i=s.c))return null;if(n=((o=i.length-1)-h(this.e/d))*d,o=i[o])for(;o%10==0;o/=10,n--);return n<0&&(n=0),n},T.dividedBy=T.div=function(e,a){return i(this,new H(e,a),P,B)},T.dividedToIntegerBy=T.idiv=function(e,a){return i(this,new H(e,a),0,1)},T.exponentiatedBy=T.pow=function(e,a){var i,n,o,s,t,l,u,m,f=this;if((e=new H(e)).c&&!e.isInteger())throw Error(p+"Exponent not an integer: "+J(e));if(null!=a&&(a=new H(a)),t=e.e>14,!f.c||!f.c[0]||1==f.c[0]&&!f.e&&1==f.c.length||!e.c||!e.c[0])return m=new H(Math.pow(+J(f),t?2-w(e):+J(e))),a?m.mod(a):m;if(l=e.s<0,a){if(a.c?!a.c[0]:!a.s)return new H(NaN);(n=!l&&f.isInteger()&&a.isInteger())&&(f=f.mod(a))}else{if(e.e>9&&(f.e>0||f.e<-1||(0==f.e?f.c[0]>1||t&&f.c[1]>=24e7:f.c[0]<8e13||t&&f.c[0]<=9999975e7)))return s=f.s<0&&w(e)?-0:0,f.e>-1&&(s=1/s),new H(l?1/s:s);M&&(s=r(M/d+2))}for(t?(i=new H(.5),l&&(e.s=1),u=w(e)):u=(o=Math.abs(+J(e)))%2,m=new H(R);;){if(u){if(!(m=m.times(f)).c)break;s?m.c.length>s&&(m.c.length=s):n&&(m=m.mod(a))}if(o){if(0===(o=c(o/2)))break;u=o%2}else if($(e=e.times(i),e.e+1,1),e.e>14)u=w(e);else{if(0==(o=+J(e)))break;u=o%2}f=f.times(f),s?f.c&&f.c.length>s&&(f.c.length=s):n&&(f=f.mod(a))}return n?m:(l&&(m=R.div(m)),a?m.mod(a):s?$(m,M,B,void 0):m)},T.integerValue=function(e){var a=new H(this);return null==e?e=B:y(e,0,8),$(a,a.e+1,e)},T.isEqualTo=T.eq=function(e,a){return 0===g(this,new H(e,a))},T.isFinite=function(){return!!this.c},T.isGreaterThan=T.gt=function(e,a){return g(this,new H(e,a))>0},T.isGreaterThanOrEqualTo=T.gte=function(e,a){return 1===(a=g(this,new H(e,a)))||0===a},T.isInteger=function(){return!!this.c&&h(this.e/d)>this.c.length-2},T.isLessThan=T.lt=function(e,a){return g(this,new H(e,a))<0},T.isLessThanOrEqualTo=T.lte=function(e,a){return-1===(a=g(this,new H(e,a)))||0===a},T.isNaN=function(){return!this.s},T.isNegative=function(){return this.s<0},T.isPositive=function(){return this.s>0},T.isZero=function(){return!!this.c&&0==this.c[0]},T.minus=function(e,a){var i,n,o,s,t=this,r=t.s;if(a=(e=new H(e,a)).s,!r||!a)return new H(NaN);if(r!=a)return e.s=-a,t.plus(e);var c=t.e/d,p=e.e/d,l=t.c,m=e.c;if(!c||!p){if(!l||!m)return l?(e.s=-a,e):new H(m?t:NaN);if(!l[0]||!m[0])return m[0]?(e.s=-a,e):new H(l[0]?t:3==B?-0:0)}if(c=h(c),p=h(p),l=l.slice(),r=c-p){for((s=r<0)?(r=-r,o=l):(p=c,o=m),o.reverse(),a=r;a--;o.push(0));o.reverse()}else for(n=(s=(r=l.length)<(a=m.length))?r:a,r=a=0;a0)for(;a--;l[i++]=0);for(a=u-1;n>r;){if(l[--n]=0;){for(i=0,f=j[o]%y,v=j[o]/y|0,s=o+(t=c);s>o;)i=((p=f*(p=k[--t]%y)+(r=v*p+(l=k[t]/y|0)*f)%y*y+b[s]+i)/g|0)+(r/y|0)+v*l,b[s--]=p%g;b[s]=i}return i?++n:b.splice(0,1),G(e,b,n)},T.negated=function(){var e=new H(this);return e.s=-e.s||null,e},T.plus=function(e,a){var i,n=this,o=n.s;if(a=(e=new H(e,a)).s,!o||!a)return new H(NaN);if(o!=a)return e.s=-a,n.minus(e);var s=n.e/d,t=e.e/d,r=n.c,c=e.c;if(!s||!t){if(!r||!c)return new H(o/0);if(!r[0]||!c[0])return c[0]?e:new H(r[0]?n:0*o)}if(s=h(s),t=h(t),r=r.slice(),o=s-t){for(o>0?(t=s,i=c):(o=-o,i=r),i.reverse();o--;i.push(0));i.reverse()}for((o=r.length)-(a=c.length)<0&&(i=c,c=r,r=i,a=o),o=0;a;)o=(r[--a]=r[a]+c[a]+o)/u|0,r[a]=u===r[a]?0:r[a]%u;return o&&(r=[o].concat(r),++t),G(e,r,t)},T.precision=T.sd=function(e,a){var i,n,o,s=this;if(null!=e&&e!==!!e)return y(e,1,v),null==a?a=B:y(a,0,8),$(new H(s),e,a);if(!(i=s.c))return null;if(n=(o=i.length-1)*d+1,o=i[o]){for(;o%10==0;o/=10,n--);for(o=i[0];o>=10;o/=10,n++);}return e&&s.e+1>n&&(n=s.e+1),n},T.shiftedBy=function(e){return y(e,-9007199254740991,m),this.times("1e"+e)},T.squareRoot=T.sqrt=function(){var e,a,n,o,s,t=this,r=t.c,c=t.s,p=t.e,l=P+4,u=new H("0.5");if(1!==c||!r||!r[0])return new H(!c||c<0&&(!r||r[0])?NaN:r?t:1/0);if(0==(c=Math.sqrt(+J(t)))||c==1/0?(((a=b(r)).length+p)%2==0&&(a+="0"),c=Math.sqrt(+a),p=h((p+1)/2)-(p<0||p%2),n=new H(a=c==1/0?"5e"+p:(a=c.toExponential()).slice(0,a.indexOf("e")+1)+p)):n=new H(c+""),n.c[0])for((c=(p=n.e)+l)<3&&(c=0);;)if(s=n,n=u.times(s.plus(i(t,s,l,1))),b(s.c).slice(0,c)===(a=b(n.c)).slice(0,c)){if(n.e0&&x>0){for(s=x%r||r,u=f.substr(0,s);s0&&(u+=l+f.slice(s)),m&&(u="-"+u)}n=d?u+(i.decimalSeparator||"")+((c=+i.fractionGroupSize)?d.replace(new RegExp("\\d{"+c+"}\\B","g"),"$&"+(i.fractionGroupSeparator||"")):d):u}return(i.prefix||"")+n+(i.suffix||"")},T.toFraction=function(e){var a,n,o,s,t,r,c,l,u,m,x,v,h=this,g=h.c;if(null!=e&&(!(c=new H(e)).isInteger()&&(c.c||1!==c.s)||c.lt(R)))throw Error(p+"Argument "+(c.isInteger()?"out of range: ":"not an integer: ")+J(c));if(!g)return new H(h);for(a=new H(R),u=n=new H(R),o=l=new H(R),v=b(g),t=a.e=v.length-h.e-1,a.c[0]=f[(r=t%d)<0?d+r:r],e=!e||c.comparedTo(a)>0?t>0?a:u:c,r=D,D=1/0,c=new H(v),l.c[0]=0;m=i(c,a,0,1),1!=(s=n.plus(m.times(o))).comparedTo(e);)n=o,o=s,u=l.plus(m.times(s=u)),l=s,a=c.minus(m.times(s=a)),c=s;return s=i(e.minus(n),o,0,1),l=l.plus(s.times(u)),n=n.plus(s.times(o)),l.s=u.s=h.s,x=i(u,o,t*=2,B).minus(h).abs().comparedTo(i(l,n,t,B).minus(h).abs())<1?[u,o]:[l,n],D=r,x},T.toNumber=function(){return+J(this)},T.toPrecision=function(e,a){return null!=e&&y(e,1,v),V(this,e,a,2)},T.toString=function(e){var a,i=this,o=i.s,s=i.e;return null===s?o?(a="Infinity",o<0&&(a="-"+a)):a="NaN":(null==e?a=s<=N||s>=z?k(b(i.c),s):j(b(i.c),s,"0"):10===e?a=j(b((i=$(new H(i),P+s+1,B)).c),i.e,"0"):(y(e,2,I.length,"Base"),a=n(j(b(i.c),s,"0"),10,e,o,!0)),o<0&&i.c[0]&&(a="-"+a)),a},T.valueOf=T.toJSON=function(){return J(this)},T._isBigNumber=!0,null!=a&&H.set(a),H}(),s.default=s.BigNumber=s,void 0===(n=function(){return s}.call(a,i,a,e))||(e.exports=n)}()},9779:(e,a,i)=>{var n=i(3837),o=i(2781).Stream,s=i(3463);function t(){this.writable=!1,this.readable=!0,this.dataSize=0,this.maxDataSize=2097152,this.pauseStreams=!0,this._released=!1,this._streams=[],this._currentStream=null,this._insideLoop=!1,this._pendingNext=!1}e.exports=t,n.inherits(t,o),t.create=function(e){var a=new this;for(var i in e=e||{})a[i]=e[i];return a},t.isStreamLike=function(e){return"function"!=typeof e&&"string"!=typeof e&&"boolean"!=typeof e&&"number"!=typeof e&&!Buffer.isBuffer(e)},t.prototype.append=function(e){if(t.isStreamLike(e)){if(!(e instanceof s)){var a=s.create(e,{maxDataSize:1/0,pauseStream:this.pauseStreams});e.on("data",this._checkDataSize.bind(this)),e=a}this._handleErrors(e),this.pauseStreams&&e.pause()}return this._streams.push(e),this},t.prototype.pipe=function(e,a){return o.prototype.pipe.call(this,e,a),this.resume(),e},t.prototype._getNext=function(){if(this._currentStream=null,this._insideLoop)this._pendingNext=!0;else{this._insideLoop=!0;try{do{this._pendingNext=!1,this._realGetNext()}while(this._pendingNext)}finally{this._insideLoop=!1}}},t.prototype._realGetNext=function(){var e=this._streams.shift();void 0!==e?"function"==typeof e?e(function(e){t.isStreamLike(e)&&(e.on("data",this._checkDataSize.bind(this)),this._handleErrors(e)),this._pipeNext(e)}.bind(this)):this._pipeNext(e):this.end()},t.prototype._pipeNext=function(e){if(this._currentStream=e,t.isStreamLike(e))return e.on("end",this._getNext.bind(this)),void e.pipe(this,{end:!1});var a=e;this.write(a),this._getNext()},t.prototype._handleErrors=function(e){var a=this;e.on("error",(function(e){a._emitError(e)}))},t.prototype.write=function(e){this.emit("data",e)},t.prototype.pause=function(){this.pauseStreams&&(this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.pause&&this._currentStream.pause(),this.emit("pause"))},t.prototype.resume=function(){this._released||(this._released=!0,this.writable=!0,this._getNext()),this.pauseStreams&&this._currentStream&&"function"==typeof this._currentStream.resume&&this._currentStream.resume(),this.emit("resume")},t.prototype.end=function(){this._reset(),this.emit("end")},t.prototype.destroy=function(){this._reset(),this.emit("close")},t.prototype._reset=function(){this.writable=!1,this._streams=[],this._currentStream=null},t.prototype._checkDataSize=function(){if(this._updateDataSize(),!(this.dataSize<=this.maxDataSize)){var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this._emitError(new Error(e))}},t.prototype._updateDataSize=function(){this.dataSize=0;var e=this;this._streams.forEach((function(a){a.dataSize&&(e.dataSize+=a.dataSize)})),this._currentStream&&this._currentStream.dataSize&&(this.dataSize+=this._currentStream.dataSize)},t.prototype._emitError=function(e){this._reset(),this.emit("error",e)}},9435:e=>{var a=1e3,i=60*a,n=60*i,o=24*n,s=7*o,t=365.25*o;function r(e,a,i,n){var o=a>=1.5*i;return Math.round(e/i)+" "+n+(o?"s":"")}e.exports=function(e,c){c=c||{};var p,l,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var r=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(r){var c=parseFloat(r[1]);switch((r[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*t;case"weeks":case"week":case"w":return c*s;case"days":case"day":case"d":return c*o;case"hours":case"hour":case"hrs":case"hr":case"h":return c*n;case"minutes":case"minute":case"mins":case"min":case"m":return c*i;case"seconds":case"second":case"secs":case"sec":case"s":return c*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}}}(e);if("number"===u&&isFinite(e))return c.long?(p=e,(l=Math.abs(p))>=o?r(p,l,o,"day"):l>=n?r(p,l,n,"hour"):l>=i?r(p,l,i,"minute"):l>=a?r(p,l,a,"second"):p+" ms"):function(e){var s=Math.abs(e);return s>=o?Math.round(e/o)+"d":s>=n?Math.round(e/n)+"h":s>=i?Math.round(e/i)+"m":s>=a?Math.round(e/a)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},1227:(e,a,i)=>{a.formatArgs=function(a){if(a[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+a[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const i="color: "+this.color;a.splice(1,0,i,"color: inherit");let n=0,o=0;a[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),a.splice(o,0,i)},a.save=function(e){try{e?a.storage.setItem("debug",e):a.storage.removeItem("debug")}catch(e){}},a.load=function(){let e;try{e=a.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},a.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},a.storage=function(){try{return localStorage}catch(e){}}(),a.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),a.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],a.log=console.debug||console.log||(()=>{}),e.exports=i(2447)(a);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},2447:(e,a,i)=>{e.exports=function(e){function a(e){let i,o,s,t=null;function r(...e){if(!r.enabled)return;const n=r,o=Number(new Date),s=o-(i||o);n.diff=s,n.prev=i,n.curr=o,i=o,e[0]=a.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let t=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((i,o)=>{if("%%"===i)return"%";t++;const s=a.formatters[o];if("function"==typeof s){const a=e[t];i=s.call(n,a),e.splice(t,1),t--}return i})),a.formatArgs.call(n,e),(n.log||a.log).apply(n,e)}return r.namespace=e,r.useColors=a.useColors(),r.color=a.selectColor(e),r.extend=n,r.destroy=a.destroy,Object.defineProperty(r,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==t?t:(o!==a.namespaces&&(o=a.namespaces,s=a.enabled(e)),s),set:e=>{t=e}}),"function"==typeof a.init&&a.init(r),r}function n(e,i){const n=a(this.namespace+(void 0===i?":":i)+e);return n.log=this.log,n}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return a.debug=a,a.default=a,a.coerce=function(e){return e instanceof Error?e.stack||e.message:e},a.disable=function(){const e=[...a.names.map(o),...a.skips.map(o).map((e=>"-"+e))].join(",");return a.enable(""),e},a.enable=function(e){let i;a.save(e),a.namespaces=e,a.names=[],a.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(i=0;i{a[i]=e[i]})),a.names=[],a.skips=[],a.formatters={},a.selectColor=function(e){let i=0;for(let a=0;a{"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?e.exports=i(1227):e.exports=i(39)},39:(e,a,i)=>{const n=i(6224),o=i(3837);a.init=function(e){e.inspectOpts={};const i=Object.keys(a.inspectOpts);for(let n=0;n{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),a.colors=[6,2,3,4,5,1];try{const e=i(2130);e&&(e.stderr||e).level>=2&&(a.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}a.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,a)=>{const i=a.substring(6).toLowerCase().replace(/_([a-z])/g,((e,a)=>a.toUpperCase()));let n=process.env[a];return n=!!/^(yes|on|true|enabled)$/i.test(n)||!/^(no|off|false|disabled)$/i.test(n)&&("null"===n?null:Number(n)),e[i]=n,e}),{}),e.exports=i(2447)(a);const{formatters:s}=e.exports;s.o=function(e){return this.inspectOpts.colors=this.useColors,o.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},s.O=function(e){return this.inspectOpts.colors=this.useColors,o.inspect(e,this.inspectOpts)}},3463:(e,a,i)=>{var n=i(2781).Stream,o=i(3837);function s(){this.source=null,this.dataSize=0,this.maxDataSize=1048576,this.pauseStream=!0,this._maxDataSizeExceeded=!1,this._released=!1,this._bufferedEvents=[]}e.exports=s,o.inherits(s,n),s.create=function(e,a){var i=new this;for(var n in a=a||{})i[n]=a[n];i.source=e;var o=e.emit;return e.emit=function(){return i._handleEmit(arguments),o.apply(e,arguments)},e.on("error",(function(){})),i.pauseStream&&e.pause(),i},Object.defineProperty(s.prototype,"readable",{configurable:!0,enumerable:!0,get:function(){return this.source.readable}}),s.prototype.setEncoding=function(){return this.source.setEncoding.apply(this.source,arguments)},s.prototype.resume=function(){this._released||this.release(),this.source.resume()},s.prototype.pause=function(){this.source.pause()},s.prototype.release=function(){this._released=!0,this._bufferedEvents.forEach(function(e){this.emit.apply(this,e)}.bind(this)),this._bufferedEvents=[]},s.prototype.pipe=function(){var e=n.prototype.pipe.apply(this,arguments);return this.resume(),e},s.prototype._handleEmit=function(e){this._released?this.emit.apply(this,e):("data"===e[0]&&(this.dataSize+=e[1].length,this._checkIfMaxDataSizeExceeded()),this._bufferedEvents.push(e))},s.prototype._checkIfMaxDataSizeExceeded=function(){if(!(this._maxDataSizeExceeded||this.dataSize<=this.maxDataSize)){this._maxDataSizeExceeded=!0;var e="DelayedStream#maxDataSize of "+this.maxDataSize+" bytes exceeded.";this.emit("error",new Error(e))}}},2261:(e,a,i)=>{var n;e.exports=function(){if(!n){try{n=i(5158)("follow-redirects")}catch(e){}"function"!=typeof n&&(n=function(){})}n.apply(null,arguments)}},938:(e,a,i)=>{var n=i(7310),o=n.URL,s=i(3685),t=i(5687),r=i(2781).Writable,c=i(9491),p=i(2261),l=["abort","aborted","connect","error","socket","timeout"],u=Object.create(null);l.forEach((function(e){u[e]=function(a,i,n){this._redirectable.emit(e,a,i,n)}}));var d=w("ERR_FR_REDIRECTION_FAILURE","Redirected request failed"),m=w("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded"),f=w("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit"),x=w("ERR_STREAM_WRITE_AFTER_END","write after end");function v(e,a){r.call(this),this._sanitizeOptions(e),this._options=e,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],a&&this.on("response",a);var i=this;this._onNativeResponse=function(e){i._processResponse(e)},this._performRequest()}function h(e){var a={maxRedirects:21,maxBodyLength:10485760},i={};return Object.keys(e).forEach((function(s){var t=s+":",r=i[t]=e[s],l=a[s]=Object.create(r);Object.defineProperties(l,{request:{value:function(e,s,r){if("string"==typeof e){var l=e;try{e=g(new o(l))}catch(a){e=n.parse(l)}}else o&&e instanceof o?e=g(e):(r=s,s=e,e={protocol:t});return"function"==typeof s&&(r=s,s=null),(s=Object.assign({maxRedirects:a.maxRedirects,maxBodyLength:a.maxBodyLength},e,s)).nativeProtocols=i,c.equal(s.protocol,t,"protocol mismatch"),p("options",s),new v(s,r)},configurable:!0,enumerable:!0,writable:!0},get:{value:function(e,a,i){var n=l.request(e,a,i);return n.end(),n},configurable:!0,enumerable:!0,writable:!0}})})),a}function b(){}function g(e){var a={protocol:e.protocol,hostname:e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:e.pathname+e.search,href:e.href};return""!==e.port&&(a.port=Number(e.port)),a}function y(e,a){var i;for(var n in a)e.test(n)&&(i=a[n],delete a[n]);return null==i?void 0:String(i).trim()}function w(e,a){function i(e){Error.captureStackTrace(this,this.constructor),e?(this.message=a+": "+e.message,this.cause=e):this.message=a}return i.prototype=new Error,i.prototype.constructor=i,i.prototype.name="Error ["+e+"]",i.prototype.code=e,i}function k(e){for(var a of l)e.removeListener(a,u[a]);e.on("error",b),e.abort()}v.prototype=Object.create(r.prototype),v.prototype.abort=function(){k(this._currentRequest),this.emit("abort")},v.prototype.write=function(e,a,i){if(this._ending)throw new x;if(!("string"==typeof e||"object"==typeof e&&"length"in e))throw new TypeError("data should be a string, Buffer or Uint8Array");"function"==typeof a&&(i=a,a=null),0!==e.length?this._requestBodyLength+e.length<=this._options.maxBodyLength?(this._requestBodyLength+=e.length,this._requestBodyBuffers.push({data:e,encoding:a}),this._currentRequest.write(e,a,i)):(this.emit("error",new f),this.abort()):i&&i()},v.prototype.end=function(e,a,i){if("function"==typeof e?(i=e,e=a=null):"function"==typeof a&&(i=a,a=null),e){var n=this,o=this._currentRequest;this.write(e,a,(function(){n._ended=!0,o.end(null,null,i)})),this._ending=!0}else this._ended=this._ending=!0,this._currentRequest.end(null,null,i)},v.prototype.setHeader=function(e,a){this._options.headers[e]=a,this._currentRequest.setHeader(e,a)},v.prototype.removeHeader=function(e){delete this._options.headers[e],this._currentRequest.removeHeader(e)},v.prototype.setTimeout=function(e,a){var i=this;function n(a){a.setTimeout(e),a.removeListener("timeout",a.destroy),a.addListener("timeout",a.destroy)}function o(a){i._timeout&&clearTimeout(i._timeout),i._timeout=setTimeout((function(){i.emit("timeout"),s()}),e),n(a)}function s(){i._timeout&&(clearTimeout(i._timeout),i._timeout=null),i.removeListener("abort",s),i.removeListener("error",s),i.removeListener("response",s),a&&i.removeListener("timeout",a),i.socket||i._currentRequest.removeListener("socket",o)}return a&&this.on("timeout",a),this.socket?o(this.socket):this._currentRequest.once("socket",o),this.on("socket",n),this.on("abort",s),this.on("error",s),this.on("response",s),this},["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach((function(e){v.prototype[e]=function(a,i){return this._currentRequest[e](a,i)}})),["aborted","connection","socket"].forEach((function(e){Object.defineProperty(v.prototype,e,{get:function(){return this._currentRequest[e]}})})),v.prototype._sanitizeOptions=function(e){if(e.headers||(e.headers={}),e.host&&(e.hostname||(e.hostname=e.host),delete e.host),!e.pathname&&e.path){var a=e.path.indexOf("?");a<0?e.pathname=e.path:(e.pathname=e.path.substring(0,a),e.search=e.path.substring(a))}},v.prototype._performRequest=function(){var e=this._options.protocol,a=this._options.nativeProtocols[e];if(a){if(this._options.agents){var i=e.slice(0,-1);this._options.agent=this._options.agents[i]}var o=this._currentRequest=a.request(this._options,this._onNativeResponse);for(var s of(o._redirectable=this,l))o.on(s,u[s]);if(this._currentUrl=/^\//.test(this._options.path)?n.format(this._options):this._currentUrl=this._options.path,this._isRedirect){var t=0,r=this,c=this._requestBodyBuffers;!function e(a){if(o===r._currentRequest)if(a)r.emit("error",a);else if(t=400)return e.responseUrl=this._currentUrl,e.redirects=this._redirects,this.emit("response",e),void(this._requestBodyBuffers=[]);if(k(this._currentRequest),e.destroy(),++this._redirectCount>this._options.maxRedirects)this.emit("error",new m);else{var o,s=this._options.beforeRedirect;s&&(o=Object.assign({Host:e.req.getHeader("host")},this._options.headers));var t=this._options.method;((301===a||302===a)&&"POST"===this._options.method||303===a&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method="GET",this._requestBodyBuffers=[],y(/^content-/i,this._options.headers));var r,c=y(/^host$/i,this._options.headers),l=n.parse(this._currentUrl),u=c||l.host,f=/^\w+:/.test(i)?this._currentUrl:n.format(Object.assign(l,{host:u}));try{r=n.resolve(f,i)}catch(e){return void this.emit("error",new d(e))}p("redirecting to",r),this._isRedirect=!0;var x=n.parse(r);if(Object.assign(this._options,x),(x.protocol!==l.protocol&&"https:"!==x.protocol||x.host!==u&&!function(e,a){const i=e.length-a.length-1;return i>0&&"."===e[i]&&e.endsWith(a)}(x.host,u))&&y(/^(?:authorization|cookie)$/i,this._options.headers),"function"==typeof s){var v={headers:e.headers,statusCode:a},h={url:f,method:t,headers:o};try{s(this._options,v,h)}catch(e){return void this.emit("error",e)}this._sanitizeOptions(this._options)}try{this._performRequest()}catch(e){this.emit("error",new d(e))}}},e.exports=h({http:s,https:t}),e.exports.wrap=h},6882:(e,a,i)=>{var n=i(9779),o=i(3837),s=i(1017),t=i(3685),r=i(5687),c=i(7310).parse,p=i(7147),l=i(2781).Stream,u=i(983),d=i(9118),m=i(2275);function f(e){if(!(this instanceof f))return new f(e);for(var a in this._overheadLength=0,this._valueLength=0,this._valuesToMeasure=[],n.call(this),e=e||{})this[a]=e[a]}e.exports=f,o.inherits(f,n),f.LINE_BREAK="\r\n",f.DEFAULT_CONTENT_TYPE="application/octet-stream",f.prototype.append=function(e,a,i){"string"==typeof(i=i||{})&&(i={filename:i});var s=n.prototype.append.bind(this);if("number"==typeof a&&(a=""+a),o.isArray(a))this._error(new Error("Arrays are not supported."));else{var t=this._multiPartHeader(e,a,i),r=this._multiPartFooter();s(t),s(a),s(r),this._trackLength(t,a,i)}},f.prototype._trackLength=function(e,a,i){var n=0;null!=i.knownLength?n+=+i.knownLength:Buffer.isBuffer(a)?n=a.length:"string"==typeof a&&(n=Buffer.byteLength(a)),this._valueLength+=n,this._overheadLength+=Buffer.byteLength(e)+f.LINE_BREAK.length,a&&(a.path||a.readable&&a.hasOwnProperty("httpVersion")||a instanceof l)&&(i.knownLength||this._valuesToMeasure.push(a))},f.prototype._lengthRetriever=function(e,a){e.hasOwnProperty("fd")?null!=e.end&&e.end!=1/0&&null!=e.start?a(null,e.end+1-(e.start?e.start:0)):p.stat(e.path,(function(i,n){var o;i?a(i):(o=n.size-(e.start?e.start:0),a(null,o))})):e.hasOwnProperty("httpVersion")?a(null,+e.headers["content-length"]):e.hasOwnProperty("httpModule")?(e.on("response",(function(i){e.pause(),a(null,+i.headers["content-length"])})),e.resume()):a("Unknown stream")},f.prototype._multiPartHeader=function(e,a,i){if("string"==typeof i.header)return i.header;var n,o=this._getContentDisposition(a,i),s=this._getContentType(a,i),t="",r={"Content-Disposition":["form-data",'name="'+e+'"'].concat(o||[]),"Content-Type":[].concat(s||[])};for(var c in"object"==typeof i.header&&m(r,i.header),r)r.hasOwnProperty(c)&&null!=(n=r[c])&&(Array.isArray(n)||(n=[n]),n.length&&(t+=c+": "+n.join("; ")+f.LINE_BREAK));return"--"+this.getBoundary()+f.LINE_BREAK+t+f.LINE_BREAK},f.prototype._getContentDisposition=function(e,a){var i,n;return"string"==typeof a.filepath?i=s.normalize(a.filepath).replace(/\\/g,"/"):a.filename||e.name||e.path?i=s.basename(a.filename||e.name||e.path):e.readable&&e.hasOwnProperty("httpVersion")&&(i=s.basename(e.client._httpMessage.path||"")),i&&(n='filename="'+i+'"'),n},f.prototype._getContentType=function(e,a){var i=a.contentType;return!i&&e.name&&(i=u.lookup(e.name)),!i&&e.path&&(i=u.lookup(e.path)),!i&&e.readable&&e.hasOwnProperty("httpVersion")&&(i=e.headers["content-type"]),i||!a.filepath&&!a.filename||(i=u.lookup(a.filepath||a.filename)),i||"object"!=typeof e||(i=f.DEFAULT_CONTENT_TYPE),i},f.prototype._multiPartFooter=function(){return function(e){var a=f.LINE_BREAK;0===this._streams.length&&(a+=this._lastBoundary()),e(a)}.bind(this)},f.prototype._lastBoundary=function(){return"--"+this.getBoundary()+"--"+f.LINE_BREAK},f.prototype.getHeaders=function(e){var a,i={"content-type":"multipart/form-data; boundary="+this.getBoundary()};for(a in e)e.hasOwnProperty(a)&&(i[a.toLowerCase()]=e[a]);return i},f.prototype.setBoundary=function(e){this._boundary=e},f.prototype.getBoundary=function(){return this._boundary||this._generateBoundary(),this._boundary},f.prototype.getBuffer=function(){for(var e=new Buffer.alloc(0),a=this.getBoundary(),i=0,n=this._streams.length;i{e.exports=function(e,a){return Object.keys(a).forEach((function(i){e[i]=e[i]||a[i]})),e}},6560:e=>{"use strict";e.exports=(e,a)=>{a=a||process.argv;const i=e.startsWith("-")?"":1===e.length?"-":"--",n=a.indexOf(i+e),o=a.indexOf("--");return-1!==n&&(-1===o||n{var n=i(4123).stringify,o=i(6813);e.exports=function(e){return{parse:o(e),stringify:n}},e.exports.parse=o(),e.exports.stringify=n},6813:(e,a,i)=>{var n=null;const o=/(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])/,s=/(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)/;e.exports=function(e){"use strict";var a={strict:!1,storeAsString:!1,alwaysParseAsBig:!1,useNativeBigInt:!1,protoAction:"error",constructorAction:"error"};if(null!=e){if(!0===e.strict&&(a.strict=!0),!0===e.storeAsString&&(a.storeAsString=!0),a.alwaysParseAsBig=!0===e.alwaysParseAsBig&&e.alwaysParseAsBig,a.useNativeBigInt=!0===e.useNativeBigInt&&e.useNativeBigInt,void 0!==e.constructorAction){if("error"!==e.constructorAction&&"ignore"!==e.constructorAction&&"preserve"!==e.constructorAction)throw new Error(`Incorrect value for constructorAction option, must be "error", "ignore" or undefined but passed ${e.constructorAction}`);a.constructorAction=e.constructorAction}if(void 0!==e.protoAction){if("error"!==e.protoAction&&"ignore"!==e.protoAction&&"preserve"!==e.protoAction)throw new Error(`Incorrect value for protoAction option, must be "error", "ignore" or undefined but passed ${e.protoAction}`);a.protoAction=e.protoAction}}var t,r,c,p,l={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},u=function(e){throw{name:"SyntaxError",message:e,at:t,text:c}},d=function(e){return e&&e!==r&&u("Expected '"+e+"' instead of '"+r+"'"),r=c.charAt(t),t+=1,r},m=function(){var e,o="";for("-"===r&&(o="-",d("-"));r>="0"&&r<="9";)o+=r,d();if("."===r)for(o+=".";d()&&r>="0"&&r<="9";)o+=r;if("e"===r||"E"===r)for(o+=r,d(),"-"!==r&&"+"!==r||(o+=r,d());r>="0"&&r<="9";)o+=r,d();if(e=+o,isFinite(e))return null==n&&(n=i(4431)),o.length>15?a.storeAsString?o:a.useNativeBigInt?BigInt(o):new n(o):a.alwaysParseAsBig?a.useNativeBigInt?BigInt(e):new n(e):e;u("Bad number")},f=function(){var e,a,i,n="";if('"'===r)for(var o=t;d();){if('"'===r)return t-1>o&&(n+=c.substring(o,t-1)),d(),n;if("\\"===r){if(t-1>o&&(n+=c.substring(o,t-1)),d(),"u"===r){for(i=0,a=0;a<4&&(e=parseInt(d(),16),isFinite(e));a+=1)i=16*i+e;n+=String.fromCharCode(i)}else{if("string"!=typeof l[r])break;n+=l[r]}o=t}}u("Bad string")},x=function(){for(;r&&r<=" ";)d()};return p=function(){switch(x(),r){case"{":return function(){var e,i=Object.create(null);if("{"===r){if(d("{"),x(),"}"===r)return d("}"),i;for(;r;){if(e=f(),x(),d(":"),!0===a.strict&&Object.hasOwnProperty.call(i,e)&&u('Duplicate key "'+e+'"'),!0===o.test(e)?"error"===a.protoAction?u("Object contains forbidden prototype property"):"ignore"===a.protoAction?p():i[e]=p():!0===s.test(e)?"error"===a.constructorAction?u("Object contains forbidden constructor property"):"ignore"===a.constructorAction?p():i[e]=p():i[e]=p(),x(),"}"===r)return d("}"),i;d(","),x()}}u("Bad object")}();case"[":return function(){var e=[];if("["===r){if(d("["),x(),"]"===r)return d("]"),e;for(;r;){if(e.push(p()),x(),"]"===r)return d("]"),e;d(","),x()}}u("Bad array")}();case'"':return f();case"-":return m();default:return r>="0"&&r<="9"?m():function(){switch(r){case"t":return d("t"),d("r"),d("u"),d("e"),!0;case"f":return d("f"),d("a"),d("l"),d("s"),d("e"),!1;case"n":return d("n"),d("u"),d("l"),d("l"),null}u("Unexpected '"+r+"'")}()}},function(e,a){var i;return c=e+"",t=0,r=" ",i=p(),x(),r&&u("Syntax error"),"function"==typeof a?function e(i,n){var o,s=i[n];return s&&"object"==typeof s&&Object.keys(s).forEach((function(a){void 0!==(o=e(s,a))?s[a]=o:delete s[a]})),a.call(i,n,s)}({"":i},""):i}}},4123:(e,a,i)=>{var n=i(4431),o=e.exports;!function(){"use strict";var e,a,i,s=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,t={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function r(e){return s.lastIndex=0,s.test(e)?'"'+e.replace(s,(function(e){var a=t[e];return"string"==typeof a?a:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+e+'"'}function c(o,s){var t,p,l,u,d,m=e,f=s[o],x=null!=f&&(f instanceof n||n.isBigNumber(f));switch(f&&"object"==typeof f&&"function"==typeof f.toJSON&&(f=f.toJSON(o)),"function"==typeof i&&(f=i.call(s,o,f)),typeof f){case"string":return x?f:r(f);case"number":return isFinite(f)?String(f):"null";case"boolean":case"null":case"bigint":return String(f);case"object":if(!f)return"null";if(e+=a,d=[],"[object Array]"===Object.prototype.toString.apply(f)){for(u=f.length,t=0;t{e.exports=i(3765)},983:(e,a,i)=>{"use strict";var n,o,s,t=i(5234),r=i(1017).extname,c=/^\s*([^;\s]*)(?:;|\s|$)/,p=/^text\//i;function l(e){if(!e||"string"!=typeof e)return!1;var a=c.exec(e),i=a&&t[a[1].toLowerCase()];return i&&i.charset?i.charset:!(!a||!p.test(a[1]))&&"UTF-8"}a.charset=l,a.charsets={lookup:l},a.contentType=function(e){if(!e||"string"!=typeof e)return!1;var i=-1===e.indexOf("/")?a.lookup(e):e;if(!i)return!1;if(-1===i.indexOf("charset")){var n=a.charset(i);n&&(i+="; charset="+n.toLowerCase())}return i},a.extension=function(e){if(!e||"string"!=typeof e)return!1;var i=c.exec(e),n=i&&a.extensions[i[1].toLowerCase()];return!(!n||!n.length)&&n[0]},a.extensions=Object.create(null),a.lookup=function(e){if(!e||"string"!=typeof e)return!1;var i=r("x."+e).toLowerCase().substr(1);return i&&a.types[i]||!1},a.types=Object.create(null),n=a.extensions,o=a.types,s=["nginx","apache",void 0,"iana"],Object.keys(t).forEach((function(e){var a=t[e],i=a.extensions;if(i&&i.length){n[e]=i;for(var r=0;rl||p===l&&"application/"===o[c].substr(0,12)))continue}o[c]=e}}}))},2130:(e,a,i)=>{"use strict";const n=i(2037),o=i(6560),s=process.env;let t;function r(e){const a=function(e){if(!1===t)return 0;if(o("color=16m")||o("color=full")||o("color=truecolor"))return 3;if(o("color=256"))return 2;if(e&&!e.isTTY&&!0!==t)return 0;const a=t?1:0;if("win32"===process.platform){const e=n.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in s)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some((e=>e in s))||"codeship"===s.CI_NAME?1:a;if("TEAMCITY_VERSION"in s)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(s.TEAMCITY_VERSION)?1:0;if("truecolor"===s.COLORTERM)return 3;if("TERM_PROGRAM"in s){const e=parseInt((s.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(s.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(s.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(s.TERM)||"COLORTERM"in s?1:(s.TERM,a)}(e);return function(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}(a)}o("no-color")||o("no-colors")||o("color=false")?t=!1:(o("color")||o("colors")||o("color=true")||o("color=always"))&&(t=!0),"FORCE_COLOR"in s&&(t=0===s.FORCE_COLOR.length||0!==parseInt(s.FORCE_COLOR,10)),e.exports={supportsColor:r,stdout:r(process.stdout),stderr:r(process.stderr)}},4078:function(e,a,i){var n,o,s;s=function(){function e(e){var a=[];if(0===e.length)return"";if("string"!=typeof e[0])throw new TypeError("Url must be a string. Received "+e[0]);if(e[0].match(/^[^/:]+:\/*$/)&&e.length>1){var i=e.shift();e[0]=i+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+t.join("&")}return function(){return e("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=s():void 0===(o="function"==typeof(n=s)?n.call(a,i,a,e):n)||(e.exports=o)},9491:e=>{"use strict";e.exports=require("assert")},7147:e=>{"use strict";e.exports=require("fs")},3685:e=>{"use strict";e.exports=require("http")},5687:e=>{"use strict";e.exports=require("https")},2037:e=>{"use strict";e.exports=require("os")},1017:e=>{"use strict";e.exports=require("path")},2781:e=>{"use strict";e.exports=require("stream")},6224:e=>{"use strict";e.exports=require("tty")},7310:e=>{"use strict";e.exports=require("url")},3837:e=>{"use strict";e.exports=require("util")},9796:e=>{"use strict";e.exports=require("zlib")},3765:e=>{"use strict";e.exports=JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}')},4147:e=>{"use strict";e.exports=JSON.parse('{"name":"node-mailjet","version":"6.0.4","main":"./dist/mailjet.node.js","browser":"./dist/mailjet.web.js","types":"./dist/declarations/index.d.ts","description":"Mailjet API client","author":"Mailjet","license":"MIT","private":true,"keywords":["email","sms","node","mail","mailjet"],"engines":{"node":">= 12.0.0","npm":">= 6.9.0"},"files":["lib/**","dist/**"],"directories":{"lib":"./lib","docs":"./docs"},"typescript":{"definition":"./dist/declarations/index.d.ts"},"scripts":{"test":"npm run ts:mocha test/","test:int":"npm run ts:mocha test/integration/","test:unit":"npm run ts:mocha test/unit/","test:watch":"mocha --extension ts -r tsconfig-paths/register -r ts-node/register --watch","cover":"npm run cover:expandable npm run test","cover:int":"npm run cover:expandable npm run test:int","cover:unit":"npm run cover:expandable npm run test:unit","cover:expandable":"nyc --reporter=text-summary --reporter=lcov --report-dir=.coverage --temp-dir=./.coverage/.nyc_output","build":"npm run build:release && npm run build:prepublish","build:dev":"webpack --config ./webpack/webpack.dev.config.js --progress --color","build:release":"webpack --config ./webpack/webpack.release.config.js --progress --color","build:prepublish":"node ./scripts/PreparePackage.js","build:watch":"webpack --watch --config ./webpack/webpack.dev.config.js --progress --color","lint":"eslint .","lint:fix":"eslint --fix .","lint:errors":"eslint --quiet .","ts:run":"ts-node --transpileOnly --project ./tsconfig.json -r tsconfig-paths/register","ts:watch":"ts-node-dev --respawn --transpile-only --project ./tsconfig.json -r tsconfig-paths/register","ts:mocha":"mocha --extension ts --recursive -r tsconfig-paths/register -r ts-node/register","ts:patch":"ts-patch install -s","init":"npm install && npm run ts:patch && npm run pkg:prepare","pkg:link":"cd ./dist && npm link && echo \'\\n=== link name: node-mailjet ===\'","pkg:prepare":"husky install","pkg:precommit":"npm audit && npm run lint:errors && npm run test","release":"standard-version -a","release:dry":"standard-version --dry-run","release:quiet":"standard-version --no-verify -a","release:minor":"standard-version -a --release-as minor","release:patch":"standard-version -a --release-as patch","release:major":"standard-version -a --release-as major","docs":"typedoc --tsconfig ./tsconfig.json"},"dependencies":{"axios":"^0.27.2","url-join":"^4.0.0","json-bigint":"^1.0.0"},"devDependencies":{"qs":"^6.5.0","@babel/core":"^7.18.0","@babel/preset-env":"^7.18.0","@commitlint/cli":"^17.0.2","@commitlint/config-conventional":"^17.0.2","@types/chai":"^4.3.1","@types/json-bigint":"^1.0.1","@types/mocha":"^9.1.1","@types/node":"^17.0.34","@types/qs":"^6.9.7","@types/superagent":"^4.1.15","@types/url-join":"^4.0.1","@typescript-eslint/eslint-plugin":"^5.24.0","@typescript-eslint/parser":"^5.24.0","babel-loader":"^8.2.5","chai":"^4.1.0","eslint":"^8.15.0","eslint-config-airbnb-base":"^15.0.0","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","eslint-plugin-tsdoc":"^0.2.16","husky":"^8.0.1","mocha":"^9.0.0","nock":"^13.2.4","nyc":"^15.1.0","standard-version":"^9.5.0","terser-webpack-plugin":"^5.3.1","ts-loader":"^9.3.0","ts-node":"^10.7.0","ts-node-dev":"^1.1.8","ts-patch":"^2.0.1","tsconfig-paths":"^4.0.0","tsconfig-paths-webpack-plugin":"^3.5.2","typedoc":"^0.22.15","typescript":"^4.6.4","typescript-transform-paths":"^3.3.1","webpack":"^5.76.0","webpack-cli":"^4.9.2","webpack-merge":"^5.8.0"},"homepage":"https://github.com/mailjet/mailjet-apiv3-nodejs#readme","repository":{"type":"git","url":"git+https://github.com/mailjet/mailjet-apiv3-nodejs.git"},"bugs":{"url":"https://github.com/mailjet/mailjet-apiv3-nodejs/issues"},"contributors":["Arnaud Breton (https://github.com/arnaudbreton)","Nicholas Smith (https://github.com/safani)","Jérémie Parker (https://github.com/p-j)"]}')}},a={},i=function i(n){var o=a[n];if(void 0!==o)return o.exports;var s=a[n]={exports:{}};return e[n].call(s.exports,s,s.exports,i),s.exports}(8321),i=i.default;var e,a,i})); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LGlCQUFqQi9yQixVQUFVLEdBQ1hBLFVBQVUsR0FFVixHQUFHMU8sTUFBTW9JLEtBQUtzRyxXQUkxQixDQUVGLEVBNUV1Q3pYLEVBQU9ELFFBQVNDLEVBQU9ELFFBQVU2cEMsU0FDQSwwQkFBakIsS0FBaUIseURDRnhFNXBDLEVBQU9ELFFBQVU4cEMsUUFBUSxpQ0NBekI3cEMsRUFBT0QsUUFBVThwQyxRQUFRLDZCQ0F6QjdwQyxFQUFPRCxRQUFVOHBDLFFBQVEsK0JDQXpCN3BDLEVBQU9ELFFBQVU4cEMsUUFBUSxnQ0NBekI3cEMsRUFBT0QsUUFBVThwQyxRQUFRLDZCQ0F6QjdwQyxFQUFPRCxRQUFVOHBDLFFBQVEsK0JDQXpCN3BDLEVBQU9ELFFBQVU4cEMsUUFBUSxpQ0NBekI3cEMsRUFBT0QsUUFBVThwQyxRQUFRLDhCQ0F6QjdwQyxFQUFPRCxRQUFVOHBDLFFBQVEsOEJDQXpCN3BDLEVBQU9ELFFBQVU4cEMsUUFBUSwrQkNBekI3cEMsRUFBT0QsUUFBVThwQyxRQUFRLDhybEpDQ3JCQyxFQUEyQixDQUFDLEVDRTVCQyxFRENKLFNBQVNDLEVBQW9CQyxHQUU1QixJQUFJQyxFQUFlSixFQUF5QkcsR0FDNUMsUUFBcUI5aUMsSUFBakIraUMsRUFDSCxPQUFPQSxFQUFhbnFDLFFBR3JCLElBQUlDLEVBQVM4cEMsRUFBeUJHLEdBQVksQ0FHakRscUMsUUFBUyxDQUFDLEdBT1gsT0FIQW9xQyxFQUFvQkYsR0FBVTk0QixLQUFLblIsRUFBT0QsUUFBU0MsRUFBUUEsRUFBT0QsUUFBU2lxQyxHQUdwRWhxQyxFQUFPRCxPQUNmLENDbkIwQmlxQyxDQUFvQixrQmxHTzlDLE1pR1RJRixFQ0VBQyIsInNvdXJjZXMiOlsid2VicGFjazovL21haWxqZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXN5bmNraXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvYWJvcnQuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvYXN5bmMuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvZGVmZXIuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9saWIvaXRlcmF0ZS5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2FzeW5ja2l0L2xpYi9zdGF0ZS5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2FzeW5ja2l0L2xpYi90ZXJtaW5hdG9yLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXN5bmNraXQvcGFyYWxsZWwuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9zZXJpYWwuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9hc3luY2tpdC9zZXJpYWxPcmRlcmVkLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMvaHR0cC5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9hZGFwdGVycy94aHIuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxlZEVycm9yLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0F4aW9zLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3NFcnJvci5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2J1aWxkRnVsbFBhdGguanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9kaXNwYXRjaFJlcXVlc3QuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9tZXJnZUNvbmZpZy5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3NldHRsZS5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3RyYW5zZm9ybURhdGEuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvZW52L0Zvcm1EYXRhLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzL2luZGV4LmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2RlZmF1bHRzL3RyYW5zaXRpb25hbC5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9lbnYvZGF0YS5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2JpbmQuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvY29va2llcy5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0F4aW9zRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc1VSTFNhbWVPcmlnaW4uanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VQcm90b2NvbC5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwcmVhZC5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3RvRm9ybURhdGEuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy92YWxpZGF0b3IuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL2xpYi9jbGllbnQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL2xpYi9pbmRleC50cyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbGliL3JlcXVlc3QvSHR0cE1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL2xpYi9yZXF1ZXN0L2luZGV4LnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdHlwZXMvYXBpL0NhbXBhaWduLnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdHlwZXMvYXBpL0NvbW1vbi50cyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbGliL3R5cGVzL2FwaS9Db250YWN0LnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdHlwZXMvYXBpL01lc3NhZ2UudHMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL2xpYi90eXBlcy9hcGkvU2VnbWVudGF0aW9uLnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdHlwZXMvYXBpL1NlbmRFbWFpbC50cyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbGliL3R5cGVzL2FwaS9TZW5kZXJBZGRyZXNzQW5kRG9tYWluLnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdHlwZXMvYXBpL1NldHRpbmcudHMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL2xpYi90eXBlcy9hcGkvU3RhdGlzdGljLnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdHlwZXMvYXBpL1RlbXBsYXRlLnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdHlwZXMvYXBpL1dlYmhvb2sudHMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL2xpYi90eXBlcy9hcGkvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL2xpYi91dGlscy9pbmRleC50cyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbGliL3V0aWxzL2lzTmlsLnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdXRpbHMvaXNOdWxsLnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdXRpbHMvaXNQdXJlT2JqZWN0LnRzIiwid2VicGFjazovL21haWxqZXQvLi9saWIvdXRpbHMvaXNVbmRlZmluZWQudHMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL2xpYi91dGlscy9zZXRWYWx1ZUlmTm90TmlsLnRzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvYmlnbnVtYmVyLmpzL2JpZ251bWJlci5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2NvbWJpbmVkLXN0cmVhbS9saWIvY29tYmluZWRfc3RyZWFtLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvZGVidWcvbm9kZV9tb2R1bGVzL21zL2luZGV4LmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvY29tbW9uLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2luZGV4LmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL25vZGUuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9kZWxheWVkLXN0cmVhbS9saWIvZGVsYXllZF9zdHJlYW0uanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9mb2xsb3ctcmVkaXJlY3RzL2RlYnVnLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvZm9sbG93LXJlZGlyZWN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2Zvcm0tZGF0YS9saWIvZm9ybV9kYXRhLmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvZm9ybS1kYXRhL2xpYi9wb3B1bGF0ZS5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2hhcy1mbGFnL2luZGV4LmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvanNvbi1iaWdpbnQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9qc29uLWJpZ2ludC9saWIvcGFyc2UuanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9qc29uLWJpZ2ludC9saWIvc3RyaW5naWZ5LmpzIiwid2VicGFjazovL21haWxqZXQvLi9ub2RlX21vZHVsZXMvbWltZS1kYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL21pbWUtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbWFpbGpldC8uL25vZGVfbW9kdWxlcy9zdXBwb3J0cy1jb2xvci9pbmRleC5qcyIsIndlYnBhY2s6Ly9tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL3VybC1qb2luL2xpYi91cmwtam9pbi5qcyIsIndlYnBhY2s6Ly9tYWlsamV0L2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJhc3NlcnRcIiIsIndlYnBhY2s6Ly9tYWlsamV0L2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJmc1wiIiwid2VicGFjazovL21haWxqZXQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcImh0dHBcIiIsIndlYnBhY2s6Ly9tYWlsamV0L2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJodHRwc1wiIiwid2VicGFjazovL21haWxqZXQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcIm9zXCIiLCJ3ZWJwYWNrOi8vbWFpbGpldC9leHRlcm5hbCBub2RlLWNvbW1vbmpzIFwicGF0aFwiIiwid2VicGFjazovL21haWxqZXQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcInN0cmVhbVwiIiwid2VicGFjazovL21haWxqZXQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcInR0eVwiIiwid2VicGFjazovL21haWxqZXQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcInVybFwiIiwid2VicGFjazovL21haWxqZXQvZXh0ZXJuYWwgbm9kZS1jb21tb25qcyBcInV0aWxcIiIsIndlYnBhY2s6Ly9tYWlsamV0L2V4dGVybmFsIG5vZGUtY29tbW9uanMgXCJ6bGliXCIiLCJ3ZWJwYWNrOi8vbWFpbGpldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9tYWlsamV0L3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJtYWlsamV0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm1haWxqZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwibW9kdWxlLmV4cG9ydHMgPVxue1xuICBwYXJhbGxlbCAgICAgIDogcmVxdWlyZSgnLi9wYXJhbGxlbC5qcycpLFxuICBzZXJpYWwgICAgICAgIDogcmVxdWlyZSgnLi9zZXJpYWwuanMnKSxcbiAgc2VyaWFsT3JkZXJlZCA6IHJlcXVpcmUoJy4vc2VyaWFsT3JkZXJlZC5qcycpXG59O1xuIiwiLy8gQVBJXG5tb2R1bGUuZXhwb3J0cyA9IGFib3J0O1xuXG4vKipcbiAqIEFib3J0cyBsZWZ0b3ZlciBhY3RpdmUgam9ic1xuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIGFib3J0KHN0YXRlKVxue1xuICBPYmplY3Qua2V5cyhzdGF0ZS5qb2JzKS5mb3JFYWNoKGNsZWFuLmJpbmQoc3RhdGUpKTtcblxuICAvLyByZXNldCBsZWZ0b3ZlciBqb2JzXG4gIHN0YXRlLmpvYnMgPSB7fTtcbn1cblxuLyoqXG4gKiBDbGVhbnMgdXAgbGVmdG92ZXIgam9iIGJ5IGludm9raW5nIGFib3J0IGZ1bmN0aW9uIGZvciB0aGUgcHJvdmlkZWQgam9iIGlkXG4gKlxuICogQHRoaXMgIHN0YXRlXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGtleSAtIGpvYiBpZCB0byBhYm9ydFxuICovXG5mdW5jdGlvbiBjbGVhbihrZXkpXG57XG4gIGlmICh0eXBlb2YgdGhpcy5qb2JzW2tleV0gPT0gJ2Z1bmN0aW9uJylcbiAge1xuICAgIHRoaXMuam9ic1trZXldKCk7XG4gIH1cbn1cbiIsInZhciBkZWZlciA9IHJlcXVpcmUoJy4vZGVmZXIuanMnKTtcblxuLy8gQVBJXG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jO1xuXG4vKipcbiAqIFJ1bnMgcHJvdmlkZWQgY2FsbGJhY2sgYXN5bmNocm9ub3VzbHlcbiAqIGV2ZW4gaWYgY2FsbGJhY2sgaXRzZWxmIGlzIG5vdFxuICpcbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBjYWxsYmFjayB0byBpbnZva2VcbiAqIEByZXR1cm5zIHtmdW5jdGlvbn0gLSBhdWdtZW50ZWQgY2FsbGJhY2tcbiAqL1xuZnVuY3Rpb24gYXN5bmMoY2FsbGJhY2spXG57XG4gIHZhciBpc0FzeW5jID0gZmFsc2U7XG5cbiAgLy8gY2hlY2sgaWYgYXN5bmMgaGFwcGVuZWRcbiAgZGVmZXIoZnVuY3Rpb24oKSB7IGlzQXN5bmMgPSB0cnVlOyB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gYXN5bmNfY2FsbGJhY2soZXJyLCByZXN1bHQpXG4gIHtcbiAgICBpZiAoaXNBc3luYylcbiAgICB7XG4gICAgICBjYWxsYmFjayhlcnIsIHJlc3VsdCk7XG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICBkZWZlcihmdW5jdGlvbiBuZXh0VGlja19jYWxsYmFjaygpXG4gICAgICB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZGVmZXI7XG5cbi8qKlxuICogUnVucyBwcm92aWRlZCBmdW5jdGlvbiBvbiBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUgZXZlbnQgbG9vcFxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gZnVuY3Rpb24gdG8gcnVuXG4gKi9cbmZ1bmN0aW9uIGRlZmVyKGZuKVxue1xuICB2YXIgbmV4dFRpY2sgPSB0eXBlb2Ygc2V0SW1tZWRpYXRlID09ICdmdW5jdGlvbidcbiAgICA/IHNldEltbWVkaWF0ZVxuICAgIDogKFxuICAgICAgdHlwZW9mIHByb2Nlc3MgPT0gJ29iamVjdCcgJiYgdHlwZW9mIHByb2Nlc3MubmV4dFRpY2sgPT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBwcm9jZXNzLm5leHRUaWNrXG4gICAgICA6IG51bGxcbiAgICApO1xuXG4gIGlmIChuZXh0VGljaylcbiAge1xuICAgIG5leHRUaWNrKGZuKTtcbiAgfVxuICBlbHNlXG4gIHtcbiAgICBzZXRUaW1lb3V0KGZuLCAwKTtcbiAgfVxufVxuIiwidmFyIGFzeW5jID0gcmVxdWlyZSgnLi9hc3luYy5qcycpXG4gICwgYWJvcnQgPSByZXF1aXJlKCcuL2Fib3J0LmpzJylcbiAgO1xuXG4vLyBBUElcbm1vZHVsZS5leHBvcnRzID0gaXRlcmF0ZTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVhY2ggam9iIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7YXJyYXl8b2JqZWN0fSBsaXN0IC0gYXJyYXkgb3Igb2JqZWN0IChuYW1lZCBsaXN0KSB0byBpdGVyYXRlIG92ZXJcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGl0ZXJhdG9yIC0gaXRlcmF0b3IgdG8gcnVuXG4gKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IGpvYiBzdGF0dXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gaW52b2tlZCB3aGVuIGFsbCBlbGVtZW50cyBwcm9jZXNzZWRcbiAqL1xuZnVuY3Rpb24gaXRlcmF0ZShsaXN0LCBpdGVyYXRvciwgc3RhdGUsIGNhbGxiYWNrKVxue1xuICAvLyBzdG9yZSBjdXJyZW50IGluZGV4XG4gIHZhciBrZXkgPSBzdGF0ZVsna2V5ZWRMaXN0J10gPyBzdGF0ZVsna2V5ZWRMaXN0J11bc3RhdGUuaW5kZXhdIDogc3RhdGUuaW5kZXg7XG5cbiAgc3RhdGUuam9ic1trZXldID0gcnVuSm9iKGl0ZXJhdG9yLCBrZXksIGxpc3Rba2V5XSwgZnVuY3Rpb24oZXJyb3IsIG91dHB1dClcbiAge1xuICAgIC8vIGRvbid0IHJlcGVhdCB5b3Vyc2VsZlxuICAgIC8vIHNraXAgc2Vjb25kYXJ5IGNhbGxiYWNrc1xuICAgIGlmICghKGtleSBpbiBzdGF0ZS5qb2JzKSlcbiAgICB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gY2xlYW4gdXAgam9ic1xuICAgIGRlbGV0ZSBzdGF0ZS5qb2JzW2tleV07XG5cbiAgICBpZiAoZXJyb3IpXG4gICAge1xuICAgICAgLy8gZG9uJ3QgcHJvY2VzcyByZXN0IG9mIHRoZSByZXN1bHRzXG4gICAgICAvLyBzdG9wIHN0aWxsIGFjdGl2ZSBqb2JzXG4gICAgICAvLyBhbmQgcmVzZXQgdGhlIGxpc3RcbiAgICAgIGFib3J0KHN0YXRlKTtcbiAgICB9XG4gICAgZWxzZVxuICAgIHtcbiAgICAgIHN0YXRlLnJlc3VsdHNba2V5XSA9IG91dHB1dDtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gc2FsdmFnZWQgcmVzdWx0c1xuICAgIGNhbGxiYWNrKGVycm9yLCBzdGF0ZS5yZXN1bHRzKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUnVucyBpdGVyYXRvciBvdmVyIHByb3ZpZGVkIGpvYiBlbGVtZW50XG4gKlxuICogQHBhcmFtICAge2Z1bmN0aW9ufSBpdGVyYXRvciAtIGl0ZXJhdG9yIHRvIGludm9rZVxuICogQHBhcmFtICAge3N0cmluZ3xudW1iZXJ9IGtleSAtIGtleS9pbmRleCBvZiB0aGUgZWxlbWVudCBpbiB0aGUgbGlzdCBvZiBqb2JzXG4gKiBAcGFyYW0gICB7bWl4ZWR9IGl0ZW0gLSBqb2IgZGVzY3JpcHRpb25cbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBpbnZva2VkIGFmdGVyIGl0ZXJhdG9yIGlzIGRvbmUgd2l0aCB0aGUgam9iXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb258bWl4ZWR9IC0gam9iIGFib3J0IGZ1bmN0aW9uIG9yIHNvbWV0aGluZyBlbHNlXG4gKi9cbmZ1bmN0aW9uIHJ1bkpvYihpdGVyYXRvciwga2V5LCBpdGVtLCBjYWxsYmFjaylcbntcbiAgdmFyIGFib3J0ZXI7XG5cbiAgLy8gYWxsb3cgc2hvcnRjdXQgaWYgaXRlcmF0b3IgZXhwZWN0cyBvbmx5IHR3byBhcmd1bWVudHNcbiAgaWYgKGl0ZXJhdG9yLmxlbmd0aCA9PSAyKVxuICB7XG4gICAgYWJvcnRlciA9IGl0ZXJhdG9yKGl0ZW0sIGFzeW5jKGNhbGxiYWNrKSk7XG4gIH1cbiAgLy8gb3RoZXJ3aXNlIGdvIHdpdGggZnVsbCB0aHJlZSBhcmd1bWVudHNcbiAgZWxzZVxuICB7XG4gICAgYWJvcnRlciA9IGl0ZXJhdG9yKGl0ZW0sIGtleSwgYXN5bmMoY2FsbGJhY2spKTtcbiAgfVxuXG4gIHJldHVybiBhYm9ydGVyO1xufVxuIiwiLy8gQVBJXG5tb2R1bGUuZXhwb3J0cyA9IHN0YXRlO1xuXG4vKipcbiAqIENyZWF0ZXMgaW5pdGlhbCBzdGF0ZSBvYmplY3RcbiAqIGZvciBpdGVyYXRpb24gb3ZlciBsaXN0XG4gKlxuICogQHBhcmFtICAge2FycmF5fG9iamVjdH0gbGlzdCAtIGxpc3QgdG8gaXRlcmF0ZSBvdmVyXG4gKiBAcGFyYW0gICB7ZnVuY3Rpb258bnVsbH0gc29ydE1ldGhvZCAtIGZ1bmN0aW9uIHRvIHVzZSBmb3Iga2V5cyBzb3J0LFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgYG51bGxgIHRvIGtlZXAgdGhlbSBhcyBpc1xuICogQHJldHVybnMge29iamVjdH0gLSBpbml0aWFsIHN0YXRlIG9iamVjdFxuICovXG5mdW5jdGlvbiBzdGF0ZShsaXN0LCBzb3J0TWV0aG9kKVxue1xuICB2YXIgaXNOYW1lZExpc3QgPSAhQXJyYXkuaXNBcnJheShsaXN0KVxuICAgICwgaW5pdFN0YXRlID1cbiAgICB7XG4gICAgICBpbmRleCAgICA6IDAsXG4gICAgICBrZXllZExpc3Q6IGlzTmFtZWRMaXN0IHx8IHNvcnRNZXRob2QgPyBPYmplY3Qua2V5cyhsaXN0KSA6IG51bGwsXG4gICAgICBqb2JzICAgICA6IHt9LFxuICAgICAgcmVzdWx0cyAgOiBpc05hbWVkTGlzdCA/IHt9IDogW10sXG4gICAgICBzaXplICAgICA6IGlzTmFtZWRMaXN0ID8gT2JqZWN0LmtleXMobGlzdCkubGVuZ3RoIDogbGlzdC5sZW5ndGhcbiAgICB9XG4gICAgO1xuXG4gIGlmIChzb3J0TWV0aG9kKVxuICB7XG4gICAgLy8gc29ydCBhcnJheSBrZXlzIGJhc2VkIG9uIGl0J3MgdmFsdWVzXG4gICAgLy8gc29ydCBvYmplY3QncyBrZXlzIGp1c3Qgb24gb3duIG1lcml0XG4gICAgaW5pdFN0YXRlLmtleWVkTGlzdC5zb3J0KGlzTmFtZWRMaXN0ID8gc29ydE1ldGhvZCA6IGZ1bmN0aW9uKGEsIGIpXG4gICAge1xuICAgICAgcmV0dXJuIHNvcnRNZXRob2QobGlzdFthXSwgbGlzdFtiXSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaW5pdFN0YXRlO1xufVxuIiwidmFyIGFib3J0ID0gcmVxdWlyZSgnLi9hYm9ydC5qcycpXG4gICwgYXN5bmMgPSByZXF1aXJlKCcuL2FzeW5jLmpzJylcbiAgO1xuXG4vLyBBUElcbm1vZHVsZS5leHBvcnRzID0gdGVybWluYXRvcjtcblxuLyoqXG4gKiBUZXJtaW5hdGVzIGpvYnMgaW4gdGhlIGF0dGFjaGVkIHN0YXRlIGNvbnRleHRcbiAqXG4gKiBAdGhpcyAgQXN5bmNLaXRTdGF0ZSNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZmluYWwgY2FsbGJhY2sgdG8gaW52b2tlIGFmdGVyIHRlcm1pbmF0aW9uXG4gKi9cbmZ1bmN0aW9uIHRlcm1pbmF0b3IoY2FsbGJhY2spXG57XG4gIGlmICghT2JqZWN0LmtleXModGhpcy5qb2JzKS5sZW5ndGgpXG4gIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBmYXN0IGZvcndhcmQgaXRlcmF0aW9uIGluZGV4XG4gIHRoaXMuaW5kZXggPSB0aGlzLnNpemU7XG5cbiAgLy8gYWJvcnQgam9ic1xuICBhYm9ydCh0aGlzKTtcblxuICAvLyBzZW5kIGJhY2sgcmVzdWx0cyB3ZSBoYXZlIHNvIGZhclxuICBhc3luYyhjYWxsYmFjaykobnVsbCwgdGhpcy5yZXN1bHRzKTtcbn1cbiIsInZhciBpdGVyYXRlICAgID0gcmVxdWlyZSgnLi9saWIvaXRlcmF0ZS5qcycpXG4gICwgaW5pdFN0YXRlICA9IHJlcXVpcmUoJy4vbGliL3N0YXRlLmpzJylcbiAgLCB0ZXJtaW5hdG9yID0gcmVxdWlyZSgnLi9saWIvdGVybWluYXRvci5qcycpXG4gIDtcblxuLy8gUHVibGljIEFQSVxubW9kdWxlLmV4cG9ydHMgPSBwYXJhbGxlbDtcblxuLyoqXG4gKiBSdW5zIGl0ZXJhdG9yIG92ZXIgcHJvdmlkZWQgYXJyYXkgZWxlbWVudHMgaW4gcGFyYWxsZWxcbiAqXG4gKiBAcGFyYW0gICB7YXJyYXl8b2JqZWN0fSBsaXN0IC0gYXJyYXkgb3Igb2JqZWN0IChuYW1lZCBsaXN0KSB0byBpdGVyYXRlIG92ZXJcbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gaXRlcmF0b3IgLSBpdGVyYXRvciB0byBydW5cbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gY2FsbGJhY2sgLSBpbnZva2VkIHdoZW4gYWxsIGVsZW1lbnRzIHByb2Nlc3NlZFxuICogQHJldHVybnMge2Z1bmN0aW9ufSAtIGpvYnMgdGVybWluYXRvclxuICovXG5mdW5jdGlvbiBwYXJhbGxlbChsaXN0LCBpdGVyYXRvciwgY2FsbGJhY2spXG57XG4gIHZhciBzdGF0ZSA9IGluaXRTdGF0ZShsaXN0KTtcblxuICB3aGlsZSAoc3RhdGUuaW5kZXggPCAoc3RhdGVbJ2tleWVkTGlzdCddIHx8IGxpc3QpLmxlbmd0aClcbiAge1xuICAgIGl0ZXJhdGUobGlzdCwgaXRlcmF0b3IsIHN0YXRlLCBmdW5jdGlvbihlcnJvciwgcmVzdWx0KVxuICAgIHtcbiAgICAgIGlmIChlcnJvcilcbiAgICAgIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gbG9va3MgbGlrZSBpdCdzIHRoZSBsYXN0IG9uZVxuICAgICAgaWYgKE9iamVjdC5rZXlzKHN0YXRlLmpvYnMpLmxlbmd0aCA9PT0gMClcbiAgICAgIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgc3RhdGUucmVzdWx0cyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0YXRlLmluZGV4Kys7XG4gIH1cblxuICByZXR1cm4gdGVybWluYXRvci5iaW5kKHN0YXRlLCBjYWxsYmFjayk7XG59XG4iLCJ2YXIgc2VyaWFsT3JkZXJlZCA9IHJlcXVpcmUoJy4vc2VyaWFsT3JkZXJlZC5qcycpO1xuXG4vLyBQdWJsaWMgQVBJXG5tb2R1bGUuZXhwb3J0cyA9IHNlcmlhbDtcblxuLyoqXG4gKiBSdW5zIGl0ZXJhdG9yIG92ZXIgcHJvdmlkZWQgYXJyYXkgZWxlbWVudHMgaW4gc2VyaWVzXG4gKlxuICogQHBhcmFtICAge2FycmF5fG9iamVjdH0gbGlzdCAtIGFycmF5IG9yIG9iamVjdCAobmFtZWQgbGlzdCkgdG8gaXRlcmF0ZSBvdmVyXG4gKiBAcGFyYW0gICB7ZnVuY3Rpb259IGl0ZXJhdG9yIC0gaXRlcmF0b3IgdG8gcnVuXG4gKiBAcGFyYW0gICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gaW52b2tlZCB3aGVuIGFsbCBlbGVtZW50cyBwcm9jZXNzZWRcbiAqIEByZXR1cm5zIHtmdW5jdGlvbn0gLSBqb2JzIHRlcm1pbmF0b3JcbiAqL1xuZnVuY3Rpb24gc2VyaWFsKGxpc3QsIGl0ZXJhdG9yLCBjYWxsYmFjaylcbntcbiAgcmV0dXJuIHNlcmlhbE9yZGVyZWQobGlzdCwgaXRlcmF0b3IsIG51bGwsIGNhbGxiYWNrKTtcbn1cbiIsInZhciBpdGVyYXRlICAgID0gcmVxdWlyZSgnLi9saWIvaXRlcmF0ZS5qcycpXG4gICwgaW5pdFN0YXRlICA9IHJlcXVpcmUoJy4vbGliL3N0YXRlLmpzJylcbiAgLCB0ZXJtaW5hdG9yID0gcmVxdWlyZSgnLi9saWIvdGVybWluYXRvci5qcycpXG4gIDtcblxuLy8gUHVibGljIEFQSVxubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWxPcmRlcmVkO1xuLy8gc29ydGluZyBoZWxwZXJzXG5tb2R1bGUuZXhwb3J0cy5hc2NlbmRpbmcgID0gYXNjZW5kaW5nO1xubW9kdWxlLmV4cG9ydHMuZGVzY2VuZGluZyA9IGRlc2NlbmRpbmc7XG5cbi8qKlxuICogUnVucyBpdGVyYXRvciBvdmVyIHByb3ZpZGVkIHNvcnRlZCBhcnJheSBlbGVtZW50cyBpbiBzZXJpZXNcbiAqXG4gKiBAcGFyYW0gICB7YXJyYXl8b2JqZWN0fSBsaXN0IC0gYXJyYXkgb3Igb2JqZWN0IChuYW1lZCBsaXN0KSB0byBpdGVyYXRlIG92ZXJcbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gaXRlcmF0b3IgLSBpdGVyYXRvciB0byBydW5cbiAqIEBwYXJhbSAgIHtmdW5jdGlvbn0gc29ydE1ldGhvZCAtIGN1c3RvbSBzb3J0IGZ1bmN0aW9uXG4gKiBAcGFyYW0gICB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gaW52b2tlZCB3aGVuIGFsbCBlbGVtZW50cyBwcm9jZXNzZWRcbiAqIEByZXR1cm5zIHtmdW5jdGlvbn0gLSBqb2JzIHRlcm1pbmF0b3JcbiAqL1xuZnVuY3Rpb24gc2VyaWFsT3JkZXJlZChsaXN0LCBpdGVyYXRvciwgc29ydE1ldGhvZCwgY2FsbGJhY2spXG57XG4gIHZhciBzdGF0ZSA9IGluaXRTdGF0ZShsaXN0LCBzb3J0TWV0aG9kKTtcblxuICBpdGVyYXRlKGxpc3QsIGl0ZXJhdG9yLCBzdGF0ZSwgZnVuY3Rpb24gaXRlcmF0b3JIYW5kbGVyKGVycm9yLCByZXN1bHQpXG4gIHtcbiAgICBpZiAoZXJyb3IpXG4gICAge1xuICAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RhdGUuaW5kZXgrKztcblxuICAgIC8vIGFyZSB3ZSB0aGVyZSB5ZXQ/XG4gICAgaWYgKHN0YXRlLmluZGV4IDwgKHN0YXRlWydrZXllZExpc3QnXSB8fCBsaXN0KS5sZW5ndGgpXG4gICAge1xuICAgICAgaXRlcmF0ZShsaXN0LCBpdGVyYXRvciwgc3RhdGUsIGl0ZXJhdG9ySGFuZGxlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZG9uZSBoZXJlXG4gICAgY2FsbGJhY2sobnVsbCwgc3RhdGUucmVzdWx0cyk7XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtaW5hdG9yLmJpbmQoc3RhdGUsIGNhbGxiYWNrKTtcbn1cblxuLypcbiAqIC0tIFNvcnQgbWV0aG9kc1xuICovXG5cbi8qKlxuICogc29ydCBoZWxwZXIgdG8gc29ydCBhcnJheSBlbGVtZW50cyBpbiBhc2NlbmRpbmcgb3JkZXJcbiAqXG4gKiBAcGFyYW0gICB7bWl4ZWR9IGEgLSBhbiBpdGVtIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSAgIHttaXhlZH0gYiAtIGFuIGl0ZW0gdG8gY29tcGFyZVxuICogQHJldHVybnMge251bWJlcn0gLSBjb21wYXJpc29uIHJlc3VsdFxuICovXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYilcbntcbiAgcmV0dXJuIGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiAwO1xufVxuXG4vKipcbiAqIHNvcnQgaGVscGVyIHRvIHNvcnQgYXJyYXkgZWxlbWVudHMgaW4gZGVzY2VuZGluZyBvcmRlclxuICpcbiAqIEBwYXJhbSAgIHttaXhlZH0gYSAtIGFuIGl0ZW0gdG8gY29tcGFyZVxuICogQHBhcmFtICAge21peGVkfSBiIC0gYW4gaXRlbSB0byBjb21wYXJlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSAtIGNvbXBhcmlzb24gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGRlc2NlbmRpbmcoYSwgYilcbntcbiAgcmV0dXJuIC0xICogYXNjZW5kaW5nKGEsIGIpO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9heGlvcycpOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHNldHRsZSA9IHJlcXVpcmUoJy4vLi4vY29yZS9zZXR0bGUnKTtcbnZhciBidWlsZEZ1bGxQYXRoID0gcmVxdWlyZSgnLi4vY29yZS9idWlsZEZ1bGxQYXRoJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xudmFyIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKTtcbnZhciBodHRwRm9sbG93ID0gcmVxdWlyZSgnZm9sbG93LXJlZGlyZWN0cycpLmh0dHA7XG52YXIgaHR0cHNGb2xsb3cgPSByZXF1aXJlKCdmb2xsb3ctcmVkaXJlY3RzJykuaHR0cHM7XG52YXIgdXJsID0gcmVxdWlyZSgndXJsJyk7XG52YXIgemxpYiA9IHJlcXVpcmUoJ3psaWInKTtcbnZhciBWRVJTSU9OID0gcmVxdWlyZSgnLi8uLi9lbnYvZGF0YScpLnZlcnNpb247XG52YXIgdHJhbnNpdGlvbmFsRGVmYXVsdHMgPSByZXF1aXJlKCcuLi9kZWZhdWx0cy90cmFuc2l0aW9uYWwnKTtcbnZhciBBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi4vY29yZS9BeGlvc0Vycm9yJyk7XG52YXIgQ2FuY2VsZWRFcnJvciA9IHJlcXVpcmUoJy4uL2NhbmNlbC9DYW5jZWxlZEVycm9yJyk7XG5cbnZhciBpc0h0dHBzID0gL2h0dHBzOj8vO1xuXG52YXIgc3VwcG9ydGVkUHJvdG9jb2xzID0gWyAnaHR0cDonLCAnaHR0cHM6JywgJ2ZpbGU6JyBdO1xuXG4vKipcbiAqXG4gKiBAcGFyYW0ge2h0dHAuQ2xpZW50UmVxdWVzdEFyZ3N9IG9wdGlvbnNcbiAqIEBwYXJhbSB7QXhpb3NQcm94eUNvbmZpZ30gcHJveHlcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvblxuICovXG5mdW5jdGlvbiBzZXRQcm94eShvcHRpb25zLCBwcm94eSwgbG9jYXRpb24pIHtcbiAgb3B0aW9ucy5ob3N0bmFtZSA9IHByb3h5Lmhvc3Q7XG4gIG9wdGlvbnMuaG9zdCA9IHByb3h5Lmhvc3Q7XG4gIG9wdGlvbnMucG9ydCA9IHByb3h5LnBvcnQ7XG4gIG9wdGlvbnMucGF0aCA9IGxvY2F0aW9uO1xuXG4gIC8vIEJhc2ljIHByb3h5IGF1dGhvcml6YXRpb25cbiAgaWYgKHByb3h5LmF1dGgpIHtcbiAgICB2YXIgYmFzZTY0ID0gQnVmZmVyLmZyb20ocHJveHkuYXV0aC51c2VybmFtZSArICc6JyArIHByb3h5LmF1dGgucGFzc3dvcmQsICd1dGY4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIG9wdGlvbnMuaGVhZGVyc1snUHJveHktQXV0aG9yaXphdGlvbiddID0gJ0Jhc2ljICcgKyBiYXNlNjQ7XG4gIH1cblxuICAvLyBJZiBhIHByb3h5IGlzIHVzZWQsIGFueSByZWRpcmVjdHMgbXVzdCBhbHNvIHBhc3MgdGhyb3VnaCB0aGUgcHJveHlcbiAgb3B0aW9ucy5iZWZvcmVSZWRpcmVjdCA9IGZ1bmN0aW9uIGJlZm9yZVJlZGlyZWN0KHJlZGlyZWN0aW9uKSB7XG4gICAgcmVkaXJlY3Rpb24uaGVhZGVycy5ob3N0ID0gcmVkaXJlY3Rpb24uaG9zdDtcbiAgICBzZXRQcm94eShyZWRpcmVjdGlvbiwgcHJveHksIHJlZGlyZWN0aW9uLmhyZWYpO1xuICB9O1xufVxuXG4vKmVzbGludCBjb25zaXN0ZW50LXJldHVybjowKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaHR0cEFkYXB0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBkaXNwYXRjaEh0dHBSZXF1ZXN0KHJlc29sdmVQcm9taXNlLCByZWplY3RQcm9taXNlKSB7XG4gICAgdmFyIG9uQ2FuY2VsZWQ7XG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xuICAgICAgICBjb25maWcuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciByZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmVzb2x2ZVByb21pc2UodmFsdWUpO1xuICAgIH07XG4gICAgdmFyIHJlamVjdGVkID0gZmFsc2U7XG4gICAgdmFyIHJlamVjdCA9IGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkge1xuICAgICAgZG9uZSgpO1xuICAgICAgcmVqZWN0ZWQgPSB0cnVlO1xuICAgICAgcmVqZWN0UHJvbWlzZSh2YWx1ZSk7XG4gICAgfTtcbiAgICB2YXIgZGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciBoZWFkZXJzID0gY29uZmlnLmhlYWRlcnM7XG4gICAgdmFyIGhlYWRlck5hbWVzID0ge307XG5cbiAgICBPYmplY3Qua2V5cyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIHN0b3JlTG93ZXJOYW1lKG5hbWUpIHtcbiAgICAgIGhlYWRlck5hbWVzW25hbWUudG9Mb3dlckNhc2UoKV0gPSBuYW1lO1xuICAgIH0pO1xuXG4gICAgLy8gU2V0IFVzZXItQWdlbnQgKHJlcXVpcmVkIGJ5IHNvbWUgc2VydmVycylcbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F4aW9zL2F4aW9zL2lzc3Vlcy82OVxuICAgIGlmICgndXNlci1hZ2VudCcgaW4gaGVhZGVyTmFtZXMpIHtcbiAgICAgIC8vIFVzZXItQWdlbnQgaXMgc3BlY2lmaWVkOyBoYW5kbGUgY2FzZSB3aGVyZSBubyBVQSBoZWFkZXIgaXMgZGVzaXJlZFxuICAgICAgaWYgKCFoZWFkZXJzW2hlYWRlck5hbWVzWyd1c2VyLWFnZW50J11dKSB7XG4gICAgICAgIGRlbGV0ZSBoZWFkZXJzW2hlYWRlck5hbWVzWyd1c2VyLWFnZW50J11dO1xuICAgICAgfVxuICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugc3BlY2lmaWVkIHZhbHVlXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE9ubHkgc2V0IGhlYWRlciBpZiBpdCBoYXNuJ3QgYmVlbiBzZXQgaW4gY29uZmlnXG4gICAgICBoZWFkZXJzWydVc2VyLUFnZW50J10gPSAnYXhpb3MvJyArIFZFUlNJT047XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydCBmb3IgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZm9ybS1kYXRhIGFwaVxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpICYmIHV0aWxzLmlzRnVuY3Rpb24oZGF0YS5nZXRIZWFkZXJzKSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihoZWFkZXJzLCBkYXRhLmdldEhlYWRlcnMoKSk7XG4gICAgfSBlbHNlIGlmIChkYXRhICYmICF1dGlscy5pc1N0cmVhbShkYXRhKSkge1xuICAgICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgICAvLyBOb3RoaW5nIHRvIGRvLi4uXG4gICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKG5ldyBVaW50OEFycmF5KGRhdGEpKTtcbiAgICAgIH0gZWxzZSBpZiAodXRpbHMuaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsICd1dGYtOCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgICAnRGF0YSBhZnRlciB0cmFuc2Zvcm1hdGlvbiBtdXN0IGJlIGEgc3RyaW5nLCBhbiBBcnJheUJ1ZmZlciwgYSBCdWZmZXIsIG9yIGEgU3RyZWFtJyxcbiAgICAgICAgICBBeGlvc0Vycm9yLkVSUl9CQURfUkVRVUVTVCxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcubWF4Qm9keUxlbmd0aCA+IC0xICYmIGRhdGEubGVuZ3RoID4gY29uZmlnLm1heEJvZHlMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgICAnUmVxdWVzdCBib2R5IGxhcmdlciB0aGFuIG1heEJvZHlMZW5ndGggbGltaXQnLFxuICAgICAgICAgIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVFVRVNULFxuICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpZiBkYXRhIGV4aXN0c1xuICAgICAgaWYgKCFoZWFkZXJOYW1lc1snY29udGVudC1sZW5ndGgnXSkge1xuICAgICAgICBoZWFkZXJzWydDb250ZW50LUxlbmd0aCddID0gZGF0YS5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvblxuICAgIHZhciBhdXRoID0gdW5kZWZpbmVkO1xuICAgIGlmIChjb25maWcuYXV0aCkge1xuICAgICAgdmFyIHVzZXJuYW1lID0gY29uZmlnLmF1dGgudXNlcm5hbWUgfHwgJyc7XG4gICAgICB2YXIgcGFzc3dvcmQgPSBjb25maWcuYXV0aC5wYXNzd29yZCB8fCAnJztcbiAgICAgIGF1dGggPSB1c2VybmFtZSArICc6JyArIHBhc3N3b3JkO1xuICAgIH1cblxuICAgIC8vIFBhcnNlIHVybFxuICAgIHZhciBmdWxsUGF0aCA9IGJ1aWxkRnVsbFBhdGgoY29uZmlnLmJhc2VVUkwsIGNvbmZpZy51cmwpO1xuICAgIHZhciBwYXJzZWQgPSB1cmwucGFyc2UoZnVsbFBhdGgpO1xuICAgIHZhciBwcm90b2NvbCA9IHBhcnNlZC5wcm90b2NvbCB8fCBzdXBwb3J0ZWRQcm90b2NvbHNbMF07XG5cbiAgICBpZiAoc3VwcG9ydGVkUHJvdG9jb2xzLmluZGV4T2YocHJvdG9jb2wpID09PSAtMSkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgJ1Vuc3VwcG9ydGVkIHByb3RvY29sICcgKyBwcm90b2NvbCxcbiAgICAgICAgQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsXG4gICAgICAgIGNvbmZpZ1xuICAgICAgKSk7XG4gICAgfVxuXG4gICAgaWYgKCFhdXRoICYmIHBhcnNlZC5hdXRoKSB7XG4gICAgICB2YXIgdXJsQXV0aCA9IHBhcnNlZC5hdXRoLnNwbGl0KCc6Jyk7XG4gICAgICB2YXIgdXJsVXNlcm5hbWUgPSB1cmxBdXRoWzBdIHx8ICcnO1xuICAgICAgdmFyIHVybFBhc3N3b3JkID0gdXJsQXV0aFsxXSB8fCAnJztcbiAgICAgIGF1dGggPSB1cmxVc2VybmFtZSArICc6JyArIHVybFBhc3N3b3JkO1xuICAgIH1cblxuICAgIGlmIChhdXRoICYmIGhlYWRlck5hbWVzLmF1dGhvcml6YXRpb24pIHtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW2hlYWRlck5hbWVzLmF1dGhvcml6YXRpb25dO1xuICAgIH1cblxuICAgIHZhciBpc0h0dHBzUmVxdWVzdCA9IGlzSHR0cHMudGVzdChwcm90b2NvbCk7XG4gICAgdmFyIGFnZW50ID0gaXNIdHRwc1JlcXVlc3QgPyBjb25maWcuaHR0cHNBZ2VudCA6IGNvbmZpZy5odHRwQWdlbnQ7XG5cbiAgICB0cnkge1xuICAgICAgYnVpbGRVUkwocGFyc2VkLnBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXFw/LywgJycpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdmFyIGN1c3RvbUVyciA9IG5ldyBFcnJvcihlcnIubWVzc2FnZSk7XG4gICAgICBjdXN0b21FcnIuY29uZmlnID0gY29uZmlnO1xuICAgICAgY3VzdG9tRXJyLnVybCA9IGNvbmZpZy51cmw7XG4gICAgICBjdXN0b21FcnIuZXhpc3RzID0gdHJ1ZTtcbiAgICAgIHJlamVjdChjdXN0b21FcnIpO1xuICAgIH1cblxuICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgcGF0aDogYnVpbGRVUkwocGFyc2VkLnBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXFw/LywgJycpLFxuICAgICAgbWV0aG9kOiBjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgYWdlbnQ6IGFnZW50LFxuICAgICAgYWdlbnRzOiB7IGh0dHA6IGNvbmZpZy5odHRwQWdlbnQsIGh0dHBzOiBjb25maWcuaHR0cHNBZ2VudCB9LFxuICAgICAgYXV0aDogYXV0aFxuICAgIH07XG5cbiAgICBpZiAoY29uZmlnLnNvY2tldFBhdGgpIHtcbiAgICAgIG9wdGlvbnMuc29ja2V0UGF0aCA9IGNvbmZpZy5zb2NrZXRQYXRoO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLmhvc3RuYW1lID0gcGFyc2VkLmhvc3RuYW1lO1xuICAgICAgb3B0aW9ucy5wb3J0ID0gcGFyc2VkLnBvcnQ7XG4gICAgfVxuXG4gICAgdmFyIHByb3h5ID0gY29uZmlnLnByb3h5O1xuICAgIGlmICghcHJveHkgJiYgcHJveHkgIT09IGZhbHNlKSB7XG4gICAgICB2YXIgcHJveHlFbnYgPSBwcm90b2NvbC5zbGljZSgwLCAtMSkgKyAnX3Byb3h5JztcbiAgICAgIHZhciBwcm94eVVybCA9IHByb2Nlc3MuZW52W3Byb3h5RW52XSB8fCBwcm9jZXNzLmVudltwcm94eUVudi50b1VwcGVyQ2FzZSgpXTtcbiAgICAgIGlmIChwcm94eVVybCkge1xuICAgICAgICB2YXIgcGFyc2VkUHJveHlVcmwgPSB1cmwucGFyc2UocHJveHlVcmwpO1xuICAgICAgICB2YXIgbm9Qcm94eUVudiA9IHByb2Nlc3MuZW52Lm5vX3Byb3h5IHx8IHByb2Nlc3MuZW52Lk5PX1BST1hZO1xuICAgICAgICB2YXIgc2hvdWxkUHJveHkgPSB0cnVlO1xuXG4gICAgICAgIGlmIChub1Byb3h5RW52KSB7XG4gICAgICAgICAgdmFyIG5vUHJveHkgPSBub1Byb3h5RW52LnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIHRyaW0ocykge1xuICAgICAgICAgICAgcmV0dXJuIHMudHJpbSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2hvdWxkUHJveHkgPSAhbm9Qcm94eS5zb21lKGZ1bmN0aW9uIHByb3h5TWF0Y2gocHJveHlFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAoIXByb3h5RWxlbWVudCkge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJveHlFbGVtZW50ID09PSAnKicpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJveHlFbGVtZW50WzBdID09PSAnLicgJiZcbiAgICAgICAgICAgICAgICBwYXJzZWQuaG9zdG5hbWUuc3Vic3RyKHBhcnNlZC5ob3N0bmFtZS5sZW5ndGggLSBwcm94eUVsZW1lbnQubGVuZ3RoKSA9PT0gcHJveHlFbGVtZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VkLmhvc3RuYW1lID09PSBwcm94eUVsZW1lbnQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2hvdWxkUHJveHkpIHtcbiAgICAgICAgICBwcm94eSA9IHtcbiAgICAgICAgICAgIGhvc3Q6IHBhcnNlZFByb3h5VXJsLmhvc3RuYW1lLFxuICAgICAgICAgICAgcG9ydDogcGFyc2VkUHJveHlVcmwucG9ydCxcbiAgICAgICAgICAgIHByb3RvY29sOiBwYXJzZWRQcm94eVVybC5wcm90b2NvbFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAocGFyc2VkUHJveHlVcmwuYXV0aCkge1xuICAgICAgICAgICAgdmFyIHByb3h5VXJsQXV0aCA9IHBhcnNlZFByb3h5VXJsLmF1dGguc3BsaXQoJzonKTtcbiAgICAgICAgICAgIHByb3h5LmF1dGggPSB7XG4gICAgICAgICAgICAgIHVzZXJuYW1lOiBwcm94eVVybEF1dGhbMF0sXG4gICAgICAgICAgICAgIHBhc3N3b3JkOiBwcm94eVVybEF1dGhbMV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3h5KSB7XG4gICAgICBvcHRpb25zLmhlYWRlcnMuaG9zdCA9IHBhcnNlZC5ob3N0bmFtZSArIChwYXJzZWQucG9ydCA/ICc6JyArIHBhcnNlZC5wb3J0IDogJycpO1xuICAgICAgc2V0UHJveHkob3B0aW9ucywgcHJveHksIHByb3RvY29sICsgJy8vJyArIHBhcnNlZC5ob3N0bmFtZSArIChwYXJzZWQucG9ydCA/ICc6JyArIHBhcnNlZC5wb3J0IDogJycpICsgb3B0aW9ucy5wYXRoKTtcbiAgICB9XG5cbiAgICB2YXIgdHJhbnNwb3J0O1xuICAgIHZhciBpc0h0dHBzUHJveHkgPSBpc0h0dHBzUmVxdWVzdCAmJiAocHJveHkgPyBpc0h0dHBzLnRlc3QocHJveHkucHJvdG9jb2wpIDogdHJ1ZSk7XG4gICAgaWYgKGNvbmZpZy50cmFuc3BvcnQpIHtcbiAgICAgIHRyYW5zcG9ydCA9IGNvbmZpZy50cmFuc3BvcnQ7XG4gICAgfSBlbHNlIGlmIChjb25maWcubWF4UmVkaXJlY3RzID09PSAwKSB7XG4gICAgICB0cmFuc3BvcnQgPSBpc0h0dHBzUHJveHkgPyBodHRwcyA6IGh0dHA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb25maWcubWF4UmVkaXJlY3RzKSB7XG4gICAgICAgIG9wdGlvbnMubWF4UmVkaXJlY3RzID0gY29uZmlnLm1heFJlZGlyZWN0cztcbiAgICAgIH1cbiAgICAgIGlmIChjb25maWcuYmVmb3JlUmVkaXJlY3QpIHtcbiAgICAgICAgb3B0aW9ucy5iZWZvcmVSZWRpcmVjdCA9IGNvbmZpZy5iZWZvcmVSZWRpcmVjdDtcbiAgICAgIH1cbiAgICAgIHRyYW5zcG9ydCA9IGlzSHR0cHNQcm94eSA/IGh0dHBzRm9sbG93IDogaHR0cEZvbGxvdztcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLm1heEJvZHlMZW5ndGggPiAtMSkge1xuICAgICAgb3B0aW9ucy5tYXhCb2R5TGVuZ3RoID0gY29uZmlnLm1heEJvZHlMZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5pbnNlY3VyZUhUVFBQYXJzZXIpIHtcbiAgICAgIG9wdGlvbnMuaW5zZWN1cmVIVFRQUGFyc2VyID0gY29uZmlnLmluc2VjdXJlSFRUUFBhcnNlcjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIHJlcXVlc3RcbiAgICB2YXIgcmVxID0gdHJhbnNwb3J0LnJlcXVlc3Qob3B0aW9ucywgZnVuY3Rpb24gaGFuZGxlUmVzcG9uc2UocmVzKSB7XG4gICAgICBpZiAocmVxLmFib3J0ZWQpIHJldHVybjtcblxuICAgICAgLy8gdW5jb21wcmVzcyB0aGUgcmVzcG9uc2UgYm9keSB0cmFuc3BhcmVudGx5IGlmIHJlcXVpcmVkXG4gICAgICB2YXIgc3RyZWFtID0gcmVzO1xuXG4gICAgICAvLyByZXR1cm4gdGhlIGxhc3QgcmVxdWVzdCBpbiBjYXNlIG9mIHJlZGlyZWN0c1xuICAgICAgdmFyIGxhc3RSZXF1ZXN0ID0gcmVzLnJlcSB8fCByZXE7XG5cblxuICAgICAgLy8gaWYgbm8gY29udGVudCwgaXMgSEVBRCByZXF1ZXN0IG9yIGRlY29tcHJlc3MgZGlzYWJsZWQgd2Ugc2hvdWxkIG5vdCBkZWNvbXByZXNzXG4gICAgICBpZiAocmVzLnN0YXR1c0NvZGUgIT09IDIwNCAmJiBsYXN0UmVxdWVzdC5tZXRob2QgIT09ICdIRUFEJyAmJiBjb25maWcuZGVjb21wcmVzcyAhPT0gZmFsc2UpIHtcbiAgICAgICAgc3dpdGNoIChyZXMuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddKSB7XG4gICAgICAgIC8qZXNsaW50IGRlZmF1bHQtY2FzZTowKi9cbiAgICAgICAgY2FzZSAnZ3ppcCc6XG4gICAgICAgIGNhc2UgJ2NvbXByZXNzJzpcbiAgICAgICAgY2FzZSAnZGVmbGF0ZSc6XG4gICAgICAgIC8vIGFkZCB0aGUgdW56aXBwZXIgdG8gdGhlIGJvZHkgc3RyZWFtIHByb2Nlc3NpbmcgcGlwZWxpbmVcbiAgICAgICAgICBzdHJlYW0gPSBzdHJlYW0ucGlwZSh6bGliLmNyZWF0ZVVuemlwKCkpO1xuXG4gICAgICAgICAgLy8gcmVtb3ZlIHRoZSBjb250ZW50LWVuY29kaW5nIGluIG9yZGVyIHRvIG5vdCBjb25mdXNlIGRvd25zdHJlYW0gb3BlcmF0aW9uc1xuICAgICAgICAgIGRlbGV0ZSByZXMuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciByZXNwb25zZSA9IHtcbiAgICAgICAgc3RhdHVzOiByZXMuc3RhdHVzQ29kZSxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVzLnN0YXR1c01lc3NhZ2UsXG4gICAgICAgIGhlYWRlcnM6IHJlcy5oZWFkZXJzLFxuICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdDogbGFzdFJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIGlmIChjb25maWcucmVzcG9uc2VUeXBlID09PSAnc3RyZWFtJykge1xuICAgICAgICByZXNwb25zZS5kYXRhID0gc3RyZWFtO1xuICAgICAgICBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzcG9uc2VCdWZmZXIgPSBbXTtcbiAgICAgICAgdmFyIHRvdGFsUmVzcG9uc2VCeXRlcyA9IDA7XG4gICAgICAgIHN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIGhhbmRsZVN0cmVhbURhdGEoY2h1bmspIHtcbiAgICAgICAgICByZXNwb25zZUJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICAgICAgICB0b3RhbFJlc3BvbnNlQnl0ZXMgKz0gY2h1bmsubGVuZ3RoO1xuXG4gICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSBjb250ZW50IGxlbmd0aCBpcyBub3Qgb3ZlciB0aGUgbWF4Q29udGVudExlbmd0aCBpZiBzcGVjaWZpZWRcbiAgICAgICAgICBpZiAoY29uZmlnLm1heENvbnRlbnRMZW5ndGggPiAtMSAmJiB0b3RhbFJlc3BvbnNlQnl0ZXMgPiBjb25maWcubWF4Q29udGVudExlbmd0aCkge1xuICAgICAgICAgICAgLy8gc3RyZWFtLmRlc3RveSgpIGVtaXQgYWJvcnRlZCBldmVudCBiZWZvcmUgY2FsbGluZyByZWplY3QoKSBvbiBOb2RlLmpzIHYxNlxuICAgICAgICAgICAgcmVqZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgc3RyZWFtLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcignbWF4Q29udGVudExlbmd0aCBzaXplIG9mICcgKyBjb25maWcubWF4Q29udGVudExlbmd0aCArICcgZXhjZWVkZWQnLFxuICAgICAgICAgICAgICBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0UsIGNvbmZpZywgbGFzdFJlcXVlc3QpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0cmVhbS5vbignYWJvcnRlZCcsIGZ1bmN0aW9uIGhhbmRsZXJTdHJlYW1BYm9ydGVkKCkge1xuICAgICAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdHJlYW0uZGVzdHJveSgpO1xuICAgICAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgICAgICdtYXhDb250ZW50TGVuZ3RoIHNpemUgb2YgJyArIGNvbmZpZy5tYXhDb250ZW50TGVuZ3RoICsgJyBleGNlZWRlZCcsXG4gICAgICAgICAgICBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0UsXG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBsYXN0UmVxdWVzdFxuICAgICAgICAgICkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gaGFuZGxlU3RyZWFtRXJyb3IoZXJyKSB7XG4gICAgICAgICAgaWYgKHJlcS5hYm9ydGVkKSByZXR1cm47XG4gICAgICAgICAgcmVqZWN0KEF4aW9zRXJyb3IuZnJvbShlcnIsIG51bGwsIGNvbmZpZywgbGFzdFJlcXVlc3QpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiBoYW5kbGVTdHJlYW1FbmQoKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXNwb25zZURhdGEgPSByZXNwb25zZUJ1ZmZlci5sZW5ndGggPT09IDEgPyByZXNwb25zZUJ1ZmZlclswXSA6IEJ1ZmZlci5jb25jYXQocmVzcG9uc2VCdWZmZXIpO1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5yZXNwb25zZVR5cGUgIT09ICdhcnJheWJ1ZmZlcicpIHtcbiAgICAgICAgICAgICAgcmVzcG9uc2VEYXRhID0gcmVzcG9uc2VEYXRhLnRvU3RyaW5nKGNvbmZpZy5yZXNwb25zZUVuY29kaW5nKTtcbiAgICAgICAgICAgICAgaWYgKCFjb25maWcucmVzcG9uc2VFbmNvZGluZyB8fCBjb25maWcucmVzcG9uc2VFbmNvZGluZyA9PT0gJ3V0ZjgnKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VEYXRhID0gdXRpbHMuc3RyaXBCT00ocmVzcG9uc2VEYXRhKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzcG9uc2UuZGF0YSA9IHJlc3BvbnNlRGF0YTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJlamVjdChBeGlvc0Vycm9yLmZyb20oZXJyLCBudWxsLCBjb25maWcsIHJlc3BvbnNlLnJlcXVlc3QsIHJlc3BvbnNlKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBIYW5kbGUgZXJyb3JzXG4gICAgcmVxLm9uKCdlcnJvcicsIGZ1bmN0aW9uIGhhbmRsZVJlcXVlc3RFcnJvcihlcnIpIHtcbiAgICAgIC8vIEB0b2RvIHJlbW92ZVxuICAgICAgLy8gaWYgKHJlcS5hYm9ydGVkICYmIGVyci5jb2RlICE9PSBBeGlvc0Vycm9yLkVSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMpIHJldHVybjtcbiAgICAgIHJlamVjdChBeGlvc0Vycm9yLmZyb20oZXJyLCBudWxsLCBjb25maWcsIHJlcSkpO1xuICAgIH0pO1xuXG4gICAgLy8gc2V0IHRjcCBrZWVwIGFsaXZlIHRvIHByZXZlbnQgZHJvcCBjb25uZWN0aW9uIGJ5IHBlZXJcbiAgICByZXEub24oJ3NvY2tldCcsIGZ1bmN0aW9uIGhhbmRsZVJlcXVlc3RTb2NrZXQoc29ja2V0KSB7XG4gICAgICAvLyBkZWZhdWx0IGludGVydmFsIG9mIHNlbmRpbmcgYWNrIHBhY2tldCBpcyAxIG1pbnV0ZVxuICAgICAgc29ja2V0LnNldEtlZXBBbGl2ZSh0cnVlLCAxMDAwICogNjApO1xuICAgIH0pO1xuXG4gICAgLy8gSGFuZGxlIHJlcXVlc3QgdGltZW91dFxuICAgIGlmIChjb25maWcudGltZW91dCkge1xuICAgICAgLy8gVGhpcyBpcyBmb3JjaW5nIGEgaW50IHRpbWVvdXQgdG8gYXZvaWQgcHJvYmxlbXMgaWYgdGhlIGByZXFgIGludGVyZmFjZSBkb2Vzbid0IGhhbmRsZSBvdGhlciB0eXBlcy5cbiAgICAgIHZhciB0aW1lb3V0ID0gcGFyc2VJbnQoY29uZmlnLnRpbWVvdXQsIDEwKTtcblxuICAgICAgaWYgKGlzTmFOKHRpbWVvdXQpKSB7XG4gICAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgICAnZXJyb3IgdHJ5aW5nIHRvIHBhcnNlIGBjb25maWcudGltZW91dGAgdG8gaW50JyxcbiAgICAgICAgICBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OX1ZBTFVFLFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICByZXFcbiAgICAgICAgKSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBTb21ldGltZSwgdGhlIHJlc3BvbnNlIHdpbGwgYmUgdmVyeSBzbG93LCBhbmQgZG9lcyBub3QgcmVzcG9uZCwgdGhlIGNvbm5lY3QgZXZlbnQgd2lsbCBiZSBibG9jayBieSBldmVudCBsb29wIHN5c3RlbS5cbiAgICAgIC8vIEFuZCB0aW1lciBjYWxsYmFjayB3aWxsIGJlIGZpcmVkLCBhbmQgYWJvcnQoKSB3aWxsIGJlIGludm9rZWQgYmVmb3JlIGNvbm5lY3Rpb24sIHRoZW4gZ2V0IFwic29ja2V0IGhhbmcgdXBcIiBhbmQgY29kZSBFQ09OTlJFU0VULlxuICAgICAgLy8gQXQgdGhpcyB0aW1lLCBpZiB3ZSBoYXZlIGEgbGFyZ2UgbnVtYmVyIG9mIHJlcXVlc3QsIG5vZGVqcyB3aWxsIGhhbmcgdXAgc29tZSBzb2NrZXQgb24gYmFja2dyb3VuZC4gYW5kIHRoZSBudW1iZXIgd2lsbCB1cCBhbmQgdXAuXG4gICAgICAvLyBBbmQgdGhlbiB0aGVzZSBzb2NrZXQgd2hpY2ggYmUgaGFuZyB1cCB3aWxsIGRldm9yaW5nIENQVSBsaXR0bGUgYnkgbGl0dGxlLlxuICAgICAgLy8gQ2xpZW50UmVxdWVzdC5zZXRUaW1lb3V0IHdpbGwgYmUgZmlyZWQgb24gdGhlIHNwZWNpZnkgbWlsbGlzZWNvbmRzLCBhbmQgY2FuIG1ha2Ugc3VyZSB0aGF0IGFib3J0KCkgd2lsbCBiZSBmaXJlZCBhZnRlciBjb25uZWN0LlxuICAgICAgcmVxLnNldFRpbWVvdXQodGltZW91dCwgZnVuY3Rpb24gaGFuZGxlUmVxdWVzdFRpbWVvdXQoKSB7XG4gICAgICAgIHJlcS5hYm9ydCgpO1xuICAgICAgICB2YXIgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbCB8fCB0cmFuc2l0aW9uYWxEZWZhdWx0cztcbiAgICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICAgICd0aW1lb3V0IG9mICcgKyB0aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJyxcbiAgICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/IEF4aW9zRXJyb3IuRVRJTUVET1VUIDogQXhpb3NFcnJvci5FQ09OTkFCT1JURUQsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIHJlcVxuICAgICAgICApKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4gfHwgY29uZmlnLnNpZ25hbCkge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG9uQ2FuY2VsZWQgPSBmdW5jdGlvbihjYW5jZWwpIHtcbiAgICAgICAgaWYgKHJlcS5hYm9ydGVkKSByZXR1cm47XG5cbiAgICAgICAgcmVxLmFib3J0KCk7XG4gICAgICAgIHJlamVjdCghY2FuY2VsIHx8IChjYW5jZWwgJiYgY2FuY2VsLnR5cGUpID8gbmV3IENhbmNlbGVkRXJyb3IoKSA6IGNhbmNlbCk7XG4gICAgICB9O1xuXG4gICAgICBjb25maWcuY2FuY2VsVG9rZW4gJiYgY29uZmlnLmNhbmNlbFRva2VuLnN1YnNjcmliZShvbkNhbmNlbGVkKTtcbiAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgIGNvbmZpZy5zaWduYWwuYWJvcnRlZCA/IG9uQ2FuY2VsZWQoKSA6IGNvbmZpZy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcbiAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICBpZiAodXRpbHMuaXNTdHJlYW0oZGF0YSkpIHtcbiAgICAgIGRhdGEub24oJ2Vycm9yJywgZnVuY3Rpb24gaGFuZGxlU3RyZWFtRXJyb3IoZXJyKSB7XG4gICAgICAgIHJlamVjdChBeGlvc0Vycm9yLmZyb20oZXJyLCBjb25maWcsIG51bGwsIHJlcSkpO1xuICAgICAgfSkucGlwZShyZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXEuZW5kKGRhdGEpO1xuICAgIH1cbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgc2V0dGxlID0gcmVxdWlyZSgnLi8uLi9jb3JlL3NldHRsZScpO1xudmFyIGNvb2tpZXMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvY29va2llcycpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgYnVpbGRGdWxsUGF0aCA9IHJlcXVpcmUoJy4uL2NvcmUvYnVpbGRGdWxsUGF0aCcpO1xudmFyIHBhcnNlSGVhZGVycyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9wYXJzZUhlYWRlcnMnKTtcbnZhciBpc1VSTFNhbWVPcmlnaW4gPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luJyk7XG52YXIgdHJhbnNpdGlvbmFsRGVmYXVsdHMgPSByZXF1aXJlKCcuLi9kZWZhdWx0cy90cmFuc2l0aW9uYWwnKTtcbnZhciBBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi4vY29yZS9BeGlvc0Vycm9yJyk7XG52YXIgQ2FuY2VsZWRFcnJvciA9IHJlcXVpcmUoJy4uL2NhbmNlbC9DYW5jZWxlZEVycm9yJyk7XG52YXIgcGFyc2VQcm90b2NvbCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvcGFyc2VQcm90b2NvbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhockFkYXB0ZXIoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBkaXNwYXRjaFhoclJlcXVlc3QocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3REYXRhID0gY29uZmlnLmRhdGE7XG4gICAgdmFyIHJlcXVlc3RIZWFkZXJzID0gY29uZmlnLmhlYWRlcnM7XG4gICAgdmFyIHJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgdmFyIG9uQ2FuY2VsZWQ7XG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xuICAgICAgICBjb25maWcuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEocmVxdWVzdERhdGEpICYmIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1snQ29udGVudC1UeXBlJ107IC8vIExldCB0aGUgYnJvd3NlciBzZXQgaXRcbiAgICB9XG5cbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gICAgLy8gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvblxuICAgIGlmIChjb25maWcuYXV0aCkge1xuICAgICAgdmFyIHVzZXJuYW1lID0gY29uZmlnLmF1dGgudXNlcm5hbWUgfHwgJyc7XG4gICAgICB2YXIgcGFzc3dvcmQgPSBjb25maWcuYXV0aC5wYXNzd29yZCA/IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChjb25maWcuYXV0aC5wYXNzd29yZCkpIDogJyc7XG4gICAgICByZXF1ZXN0SGVhZGVycy5BdXRob3JpemF0aW9uID0gJ0Jhc2ljICcgKyBidG9hKHVzZXJuYW1lICsgJzonICsgcGFzc3dvcmQpO1xuICAgIH1cblxuICAgIHZhciBmdWxsUGF0aCA9IGJ1aWxkRnVsbFBhdGgoY29uZmlnLmJhc2VVUkwsIGNvbmZpZy51cmwpO1xuXG4gICAgcmVxdWVzdC5vcGVuKGNvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSwgYnVpbGRVUkwoZnVsbFBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKSwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xuICAgIHJlcXVlc3QudGltZW91dCA9IGNvbmZpZy50aW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gb25sb2FkZW5kKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIFByZXBhcmUgdGhlIHJlc3BvbnNlXG4gICAgICB2YXIgcmVzcG9uc2VIZWFkZXJzID0gJ2dldEFsbFJlc3BvbnNlSGVhZGVycycgaW4gcmVxdWVzdCA/IHBhcnNlSGVhZGVycyhyZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSA6IG51bGw7XG4gICAgICB2YXIgcmVzcG9uc2VEYXRhID0gIXJlc3BvbnNlVHlwZSB8fCByZXNwb25zZVR5cGUgPT09ICd0ZXh0JyB8fCAgcmVzcG9uc2VUeXBlID09PSAnanNvbicgP1xuICAgICAgICByZXF1ZXN0LnJlc3BvbnNlVGV4dCA6IHJlcXVlc3QucmVzcG9uc2U7XG4gICAgICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgc3RhdHVzOiByZXF1ZXN0LnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBzZXR0bGUoZnVuY3Rpb24gX3Jlc29sdmUodmFsdWUpIHtcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIGZ1bmN0aW9uIF9yZWplY3QoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCByZXNwb25zZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgnb25sb2FkZW5kJyBpbiByZXF1ZXN0KSB7XG4gICAgICAvLyBVc2Ugb25sb2FkZW5kIGlmIGF2YWlsYWJsZVxuICAgICAgcmVxdWVzdC5vbmxvYWRlbmQgPSBvbmxvYWRlbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3RlbiBmb3IgcmVhZHkgc3RhdGUgdG8gZW11bGF0ZSBvbmxvYWRlbmRcbiAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlTG9hZCgpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgICAvLyBoYW5kbGVkIGJ5IG9uZXJyb3IgaW5zdGVhZFxuICAgICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xuICAgICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMCAmJiAhKHJlcXVlc3QucmVzcG9uc2VVUkwgJiYgcmVxdWVzdC5yZXNwb25zZVVSTC5pbmRleE9mKCdmaWxlOicpID09PSAwKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyByZWFkeXN0YXRlIGhhbmRsZXIgaXMgY2FsbGluZyBiZWZvcmUgb25lcnJvciBvciBvbnRpbWVvdXQgaGFuZGxlcnMsXG4gICAgICAgIC8vIHNvIHdlIHNob3VsZCBjYWxsIG9ubG9hZGVuZCBvbiB0aGUgbmV4dCAndGljaydcbiAgICAgICAgc2V0VGltZW91dChvbmxvYWRlbmQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgYnJvd3NlciByZXF1ZXN0IGNhbmNlbGxhdGlvbiAoYXMgb3Bwb3NlZCB0byBhIG1hbnVhbCBjYW5jZWxsYXRpb24pXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcsIEF4aW9zRXJyb3IuRUNPTk5BQk9SVEVELCBjb25maWcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBsb3cgbGV2ZWwgbmV0d29yayBlcnJvcnNcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gb25lcnJvciBzaG91bGQgb25seSBmaXJlIGlmIGl0J3MgYSBuZXR3b3JrIGVycm9yXG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBBeGlvc0Vycm9yLkVSUl9ORVRXT1JLLCBjb25maWcsIHJlcXVlc3QsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgdmFyIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dCA/ICd0aW1lb3V0IG9mICcgKyBjb25maWcudGltZW91dCArICdtcyBleGNlZWRlZCcgOiAndGltZW91dCBleGNlZWRlZCc7XG4gICAgICB2YXIgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbCB8fCB0cmFuc2l0aW9uYWxEZWZhdWx0cztcbiAgICAgIGlmIChjb25maWcudGltZW91dEVycm9yTWVzc2FnZSkge1xuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlID0gY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2U7XG4gICAgICB9XG4gICAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoXG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UsXG4gICAgICAgIHRyYW5zaXRpb25hbC5jbGFyaWZ5VGltZW91dEVycm9yID8gQXhpb3NFcnJvci5FVElNRURPVVQgOiBBeGlvc0Vycm9yLkVDT05OQUJPUlRFRCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAvLyBUaGlzIGlzIG9ubHkgZG9uZSBpZiBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudC5cbiAgICAvLyBTcGVjaWZpY2FsbHkgbm90IGlmIHdlJ3JlIGluIGEgd2ViIHdvcmtlciwgb3IgcmVhY3QtbmF0aXZlLlxuICAgIGlmICh1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpKSB7XG4gICAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAgIHZhciB4c3JmVmFsdWUgPSAoY29uZmlnLndpdGhDcmVkZW50aWFscyB8fCBpc1VSTFNhbWVPcmlnaW4oZnVsbFBhdGgpKSAmJiBjb25maWcueHNyZkNvb2tpZU5hbWUgP1xuICAgICAgICBjb29raWVzLnJlYWQoY29uZmlnLnhzcmZDb29raWVOYW1lKSA6XG4gICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHhzcmZWYWx1ZSkge1xuICAgICAgICByZXF1ZXN0SGVhZGVyc1tjb25maWcueHNyZkhlYWRlck5hbWVdID0geHNyZlZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSByZXF1ZXN0XG4gICAgaWYgKCdzZXRSZXF1ZXN0SGVhZGVyJyBpbiByZXF1ZXN0KSB7XG4gICAgICB1dGlscy5mb3JFYWNoKHJlcXVlc3RIZWFkZXJzLCBmdW5jdGlvbiBzZXRSZXF1ZXN0SGVhZGVyKHZhbCwga2V5KSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVxdWVzdERhdGEgPT09ICd1bmRlZmluZWQnICYmIGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC10eXBlJykge1xuICAgICAgICAgIC8vIFJlbW92ZSBDb250ZW50LVR5cGUgaWYgZGF0YSBpcyB1bmRlZmluZWRcbiAgICAgICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGhlYWRlciB0byB0aGUgcmVxdWVzdFxuICAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihrZXksIHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRoQ3JlZGVudGlhbHMgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMpKSB7XG4gICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9ICEhY29uZmlnLndpdGhDcmVkZW50aWFscztcbiAgICB9XG5cbiAgICAvLyBBZGQgcmVzcG9uc2VUeXBlIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKHJlc3BvbnNlVHlwZSAmJiByZXNwb25zZVR5cGUgIT09ICdqc29uJykge1xuICAgICAgcmVxdWVzdC5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBwcm9ncmVzcyBpZiBuZWVkZWRcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25Eb3dubG9hZFByb2dyZXNzKTtcbiAgICB9XG5cbiAgICAvLyBOb3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgdXBsb2FkIGV2ZW50c1xuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicgJiYgcmVxdWVzdC51cGxvYWQpIHtcbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4gfHwgY29uZmlnLnNpZ25hbCkge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgIG9uQ2FuY2VsZWQgPSBmdW5jdGlvbihjYW5jZWwpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJlamVjdCghY2FuY2VsIHx8IChjYW5jZWwgJiYgY2FuY2VsLnR5cGUpID8gbmV3IENhbmNlbGVkRXJyb3IoKSA6IGNhbmNlbCk7XG4gICAgICAgIHJlcXVlc3QuYWJvcnQoKTtcbiAgICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgICB9O1xuXG4gICAgICBjb25maWcuY2FuY2VsVG9rZW4gJiYgY29uZmlnLmNhbmNlbFRva2VuLnN1YnNjcmliZShvbkNhbmNlbGVkKTtcbiAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgIGNvbmZpZy5zaWduYWwuYWJvcnRlZCA/IG9uQ2FuY2VsZWQoKSA6IGNvbmZpZy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3REYXRhKSB7XG4gICAgICByZXF1ZXN0RGF0YSA9IG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvY29sID0gcGFyc2VQcm90b2NvbChmdWxsUGF0aCk7XG5cbiAgICBpZiAocHJvdG9jb2wgJiYgWyAnaHR0cCcsICdodHRwcycsICdmaWxlJyBdLmluZGV4T2YocHJvdG9jb2wpID09PSAtMSkge1xuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdVbnN1cHBvcnRlZCBwcm90b2NvbCAnICsgcHJvdG9jb2wgKyAnOicsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVFVRVNULCBjb25maWcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEpO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcbnZhciBBeGlvcyA9IHJlcXVpcmUoJy4vY29yZS9BeGlvcycpO1xudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9jb3JlL21lcmdlQ29uZmlnJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGRlZmF1bHRDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqIEByZXR1cm4ge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5mdW5jdGlvbiBjcmVhdGVJbnN0YW5jZShkZWZhdWx0Q29uZmlnKSB7XG4gIHZhciBjb250ZXh0ID0gbmV3IEF4aW9zKGRlZmF1bHRDb25maWcpO1xuICB2YXIgaW5zdGFuY2UgPSBiaW5kKEF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0LCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGF4aW9zLnByb3RvdHlwZSB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIEF4aW9zLnByb3RvdHlwZSwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBjb250ZXh0IHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgY29udGV4dCk7XG5cbiAgLy8gRmFjdG9yeSBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlc1xuICBpbnN0YW5jZS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaW5zdGFuY2VDb25maWcpIHtcbiAgICByZXR1cm4gY3JlYXRlSW5zdGFuY2UobWVyZ2VDb25maWcoZGVmYXVsdENvbmZpZywgaW5zdGFuY2VDb25maWcpKTtcbiAgfTtcblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbi8vIENyZWF0ZSB0aGUgZGVmYXVsdCBpbnN0YW5jZSB0byBiZSBleHBvcnRlZFxudmFyIGF4aW9zID0gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdHMpO1xuXG4vLyBFeHBvc2UgQXhpb3MgY2xhc3MgdG8gYWxsb3cgY2xhc3MgaW5oZXJpdGFuY2VcbmF4aW9zLkF4aW9zID0gQXhpb3M7XG5cbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxuYXhpb3MuQ2FuY2VsZWRFcnJvciA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbGVkRXJyb3InKTtcbmF4aW9zLkNhbmNlbFRva2VuID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsVG9rZW4nKTtcbmF4aW9zLmlzQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvaXNDYW5jZWwnKTtcbmF4aW9zLlZFUlNJT04gPSByZXF1aXJlKCcuL2Vudi9kYXRhJykudmVyc2lvbjtcbmF4aW9zLnRvRm9ybURhdGEgPSByZXF1aXJlKCcuL2hlbHBlcnMvdG9Gb3JtRGF0YScpO1xuXG4vLyBFeHBvc2UgQXhpb3NFcnJvciBjbGFzc1xuYXhpb3MuQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4uL2xpYi9jb3JlL0F4aW9zRXJyb3InKTtcblxuLy8gYWxpYXMgZm9yIENhbmNlbGVkRXJyb3IgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmF4aW9zLkNhbmNlbCA9IGF4aW9zLkNhbmNlbGVkRXJyb3I7XG5cbi8vIEV4cG9zZSBhbGwvc3ByZWFkXG5heGlvcy5hbGwgPSBmdW5jdGlvbiBhbGwocHJvbWlzZXMpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn07XG5heGlvcy5zcHJlYWQgPSByZXF1aXJlKCcuL2hlbHBlcnMvc3ByZWFkJyk7XG5cbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcbmF4aW9zLmlzQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4vaGVscGVycy9pc0F4aW9zRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBheGlvcztcblxuLy8gQWxsb3cgdXNlIG9mIGRlZmF1bHQgaW1wb3J0IHN5bnRheCBpbiBUeXBlU2NyaXB0XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gYXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBDYW5jZWxlZEVycm9yID0gcmVxdWlyZSgnLi9DYW5jZWxlZEVycm9yJyk7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGV4ZWN1dG9yIFRoZSBleGVjdXRvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsVG9rZW4oZXhlY3V0b3IpIHtcbiAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHZhciByZXNvbHZlUHJvbWlzZTtcblxuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICB0aGlzLnByb21pc2UudGhlbihmdW5jdGlvbihjYW5jZWwpIHtcbiAgICBpZiAoIXRva2VuLl9saXN0ZW5lcnMpIHJldHVybjtcblxuICAgIHZhciBpO1xuICAgIHZhciBsID0gdG9rZW4uX2xpc3RlbmVycy5sZW5ndGg7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0b2tlbi5fbGlzdGVuZXJzW2ldKGNhbmNlbCk7XG4gICAgfVxuICAgIHRva2VuLl9saXN0ZW5lcnMgPSBudWxsO1xuICB9KTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICB0aGlzLnByb21pc2UudGhlbiA9IGZ1bmN0aW9uKG9uZnVsZmlsbGVkKSB7XG4gICAgdmFyIF9yZXNvbHZlO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlKSB7XG4gICAgICB0b2tlbi5zdWJzY3JpYmUocmVzb2x2ZSk7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSkudGhlbihvbmZ1bGZpbGxlZCk7XG5cbiAgICBwcm9taXNlLmNhbmNlbCA9IGZ1bmN0aW9uIHJlamVjdCgpIHtcbiAgICAgIHRva2VuLnVuc3Vic2NyaWJlKF9yZXNvbHZlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH07XG5cbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsZWRFcnJvcihtZXNzYWdlKTtcbiAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsZWRFcnJvcmAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqL1xuQ2FuY2VsVG9rZW4ucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQgPSBmdW5jdGlvbiB0aHJvd0lmUmVxdWVzdGVkKCkge1xuICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICB0aHJvdyB0aGlzLnJlYXNvbjtcbiAgfVxufTtcblxuLyoqXG4gKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcbiAqL1xuXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gIGlmICh0aGlzLnJlYXNvbikge1xuICAgIGxpc3RlbmVyKHRoaXMucmVhc29uKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtsaXN0ZW5lcl07XG4gIH1cbn07XG5cbi8qKlxuICogVW5zdWJzY3JpYmUgZnJvbSB0aGUgY2FuY2VsIHNpZ25hbFxuICovXG5cbkNhbmNlbFRva2VuLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gIGlmICghdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBpbmRleCA9IHRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIHRoaXMuX2xpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBuZXcgYENhbmNlbFRva2VuYCBhbmQgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCxcbiAqIGNhbmNlbHMgdGhlIGBDYW5jZWxUb2tlbmAuXG4gKi9cbkNhbmNlbFRva2VuLnNvdXJjZSA9IGZ1bmN0aW9uIHNvdXJjZSgpIHtcbiAgdmFyIGNhbmNlbDtcbiAgdmFyIHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICBjYW5jZWwgPSBjO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbjogdG9rZW4sXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsVG9rZW47XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi4vY29yZS9BeGlvc0Vycm9yJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIEEgYENhbmNlbGVkRXJyb3JgIGlzIGFuIG9iamVjdCB0aGF0IGlzIHRocm93biB3aGVuIGFuIG9wZXJhdGlvbiBpcyBjYW5jZWxlZC5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7c3RyaW5nPX0gbWVzc2FnZSBUaGUgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsZWRFcnJvcihtZXNzYWdlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lcS1udWxsLGVxZXFlcVxuICBBeGlvc0Vycm9yLmNhbGwodGhpcywgbWVzc2FnZSA9PSBudWxsID8gJ2NhbmNlbGVkJyA6IG1lc3NhZ2UsIEF4aW9zRXJyb3IuRVJSX0NBTkNFTEVEKTtcbiAgdGhpcy5uYW1lID0gJ0NhbmNlbGVkRXJyb3InO1xufVxuXG51dGlscy5pbmhlcml0cyhDYW5jZWxlZEVycm9yLCBBeGlvc0Vycm9yLCB7XG4gIF9fQ0FOQ0VMX186IHRydWVcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbGVkRXJyb3I7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNDYW5jZWwodmFsdWUpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlLl9fQ0FOQ0VMX18pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi4vaGVscGVycy9idWlsZFVSTCcpO1xudmFyIEludGVyY2VwdG9yTWFuYWdlciA9IHJlcXVpcmUoJy4vSW50ZXJjZXB0b3JNYW5hZ2VyJyk7XG52YXIgZGlzcGF0Y2hSZXF1ZXN0ID0gcmVxdWlyZSgnLi9kaXNwYXRjaFJlcXVlc3QnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vbWVyZ2VDb25maWcnKTtcbnZhciBidWlsZEZ1bGxQYXRoID0gcmVxdWlyZSgnLi9idWlsZEZ1bGxQYXRoJyk7XG52YXIgdmFsaWRhdG9yID0gcmVxdWlyZSgnLi4vaGVscGVycy92YWxpZGF0b3InKTtcblxudmFyIHZhbGlkYXRvcnMgPSB2YWxpZGF0b3IudmFsaWRhdG9ycztcbi8qKlxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIEF4aW9zKGluc3RhbmNlQ29uZmlnKSB7XG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XG4gICAgcmVxdWVzdDogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpLFxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcbiAgfTtcbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcbiAqL1xuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIC8vIEFsbG93IGZvciBheGlvcygnZXhhbXBsZS91cmwnWywgY29uZmlnXSkgYSBsYSBmZXRjaCBBUElcbiAgaWYgKHR5cGVvZiBjb25maWdPclVybCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25maWcgPSBjb25maWcgfHwge307XG4gICAgY29uZmlnLnVybCA9IGNvbmZpZ09yVXJsO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZyA9IGNvbmZpZ09yVXJsIHx8IHt9O1xuICB9XG5cbiAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcblxuICAvLyBTZXQgY29uZmlnLm1ldGhvZFxuICBpZiAoY29uZmlnLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSBjb25maWcubWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0cy5tZXRob2QpIHtcbiAgICBjb25maWcubWV0aG9kID0gdGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcubWV0aG9kID0gJ2dldCc7XG4gIH1cblxuICB2YXIgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbDtcblxuICBpZiAodHJhbnNpdGlvbmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyh0cmFuc2l0aW9uYWwsIHtcbiAgICAgIHNpbGVudEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgZm9yY2VkSlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXG4gICAgICBjbGFyaWZ5VGltZW91dEVycm9yOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pXG4gICAgfSwgZmFsc2UpO1xuICB9XG5cbiAgLy8gZmlsdGVyIG91dCBza2lwcGVkIGludGVyY2VwdG9yc1xuICB2YXIgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgdmFyIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHRydWU7XG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbiB1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIGlmICh0eXBlb2YgaW50ZXJjZXB0b3IucnVuV2hlbiA9PT0gJ2Z1bmN0aW9uJyAmJiBpbnRlcmNlcHRvci5ydW5XaGVuKGNvbmZpZykgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzICYmIGludGVyY2VwdG9yLnN5bmNocm9ub3VzO1xuXG4gICAgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4udW5zaGlmdChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgfSk7XG5cbiAgdmFyIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5wdXNoKGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB2YXIgcHJvbWlzZTtcblxuICBpZiAoIXN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycykge1xuICAgIHZhciBjaGFpbiA9IFtkaXNwYXRjaFJlcXVlc3QsIHVuZGVmaW5lZF07XG5cbiAgICBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShjaGFpbiwgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4pO1xuICAgIGNoYWluID0gY2hhaW4uY29uY2F0KHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbik7XG5cbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XG4gICAgd2hpbGUgKGNoYWluLmxlbmd0aCkge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihjaGFpbi5zaGlmdCgpLCBjaGFpbi5zaGlmdCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG5cbiAgdmFyIG5ld0NvbmZpZyA9IGNvbmZpZztcbiAgd2hpbGUgKHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLmxlbmd0aCkge1xuICAgIHZhciBvbkZ1bGZpbGxlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCk7XG4gICAgdmFyIG9uUmVqZWN0ZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpO1xuICAgIHRyeSB7XG4gICAgICBuZXdDb25maWcgPSBvbkZ1bGZpbGxlZChuZXdDb25maWcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvblJlamVjdGVkKGVycm9yKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgcHJvbWlzZSA9IGRpc3BhdGNoUmVxdWVzdChuZXdDb25maWcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gIH1cblxuICB3aGlsZSAocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLmxlbmd0aCkge1xuICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4ocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCksIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpKTtcbiAgfVxuXG4gIHJldHVybiBwcm9taXNlO1xufTtcblxuQXhpb3MucHJvdG90eXBlLmdldFVyaSA9IGZ1bmN0aW9uIGdldFVyaShjb25maWcpIHtcbiAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcbiAgdmFyIGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gIHJldHVybiBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpO1xufTtcblxuLy8gUHJvdmlkZSBhbGlhc2VzIGZvciBzdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2RzXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHVybDogdXJsLFxuICAgICAgZGF0YTogKGNvbmZpZyB8fCB7fSkuZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuXG4gIGZ1bmN0aW9uIGdlbmVyYXRlSFRUUE1ldGhvZChpc0Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gaHR0cE1ldGhvZCh1cmwsIGRhdGEsIGNvbmZpZykge1xuICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICAgIGhlYWRlcnM6IGlzRm9ybSA/IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnXG4gICAgICAgIH0gOiB7fSxcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0pKTtcbiAgICB9O1xuICB9XG5cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBnZW5lcmF0ZUhUVFBNZXRob2QoKTtcblxuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kICsgJ0Zvcm0nXSA9IGdlbmVyYXRlSFRUUE1ldGhvZCh0cnVlKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF4aW9zO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW2NvbmZpZ10gVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5mdW5jdGlvbiBBeGlvc0Vycm9yKG1lc3NhZ2UsIGNvZGUsIGNvbmZpZywgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgRXJyb3IuY2FsbCh0aGlzKTtcbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgdGhpcy5uYW1lID0gJ0F4aW9zRXJyb3InO1xuICBjb2RlICYmICh0aGlzLmNvZGUgPSBjb2RlKTtcbiAgY29uZmlnICYmICh0aGlzLmNvbmZpZyA9IGNvbmZpZyk7XG4gIHJlcXVlc3QgJiYgKHRoaXMucmVxdWVzdCA9IHJlcXVlc3QpO1xuICByZXNwb25zZSAmJiAodGhpcy5yZXNwb25zZSA9IHJlc3BvbnNlKTtcbn1cblxudXRpbHMuaW5oZXJpdHMoQXhpb3NFcnJvciwgRXJyb3IsIHtcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFN0YW5kYXJkXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAvLyBNaWNyb3NvZnRcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbnVtYmVyOiB0aGlzLm51bWJlcixcbiAgICAgIC8vIE1vemlsbGFcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVOYW1lLFxuICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcixcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgLy8gQXhpb3NcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBjb2RlOiB0aGlzLmNvZGUsXG4gICAgICBzdGF0dXM6IHRoaXMucmVzcG9uc2UgJiYgdGhpcy5yZXNwb25zZS5zdGF0dXMgPyB0aGlzLnJlc3BvbnNlLnN0YXR1cyA6IG51bGxcbiAgICB9O1xuICB9XG59KTtcblxudmFyIHByb3RvdHlwZSA9IEF4aW9zRXJyb3IucHJvdG90eXBlO1xudmFyIGRlc2NyaXB0b3JzID0ge307XG5cbltcbiAgJ0VSUl9CQURfT1BUSU9OX1ZBTFVFJyxcbiAgJ0VSUl9CQURfT1BUSU9OJyxcbiAgJ0VDT05OQUJPUlRFRCcsXG4gICdFVElNRURPVVQnLFxuICAnRVJSX05FVFdPUksnLFxuICAnRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUUycsXG4gICdFUlJfREVQUkVDQVRFRCcsXG4gICdFUlJfQkFEX1JFU1BPTlNFJyxcbiAgJ0VSUl9CQURfUkVRVUVTVCcsXG4gICdFUlJfQ0FOQ0VMRUQnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuXS5mb3JFYWNoKGZ1bmN0aW9uKGNvZGUpIHtcbiAgZGVzY3JpcHRvcnNbY29kZV0gPSB7dmFsdWU6IGNvZGV9O1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEF4aW9zRXJyb3IsIGRlc2NyaXB0b3JzKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90b3R5cGUsICdpc0F4aW9zRXJyb3InLCB7dmFsdWU6IHRydWV9KTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbkF4aW9zRXJyb3IuZnJvbSA9IGZ1bmN0aW9uKGVycm9yLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlLCBjdXN0b21Qcm9wcykge1xuICB2YXIgYXhpb3NFcnJvciA9IE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTtcblxuICB1dGlscy50b0ZsYXRPYmplY3QoZXJyb3IsIGF4aW9zRXJyb3IsIGZ1bmN0aW9uIGZpbHRlcihvYmopIHtcbiAgICByZXR1cm4gb2JqICE9PSBFcnJvci5wcm90b3R5cGU7XG4gIH0pO1xuXG4gIEF4aW9zRXJyb3IuY2FsbChheGlvc0Vycm9yLCBlcnJvci5tZXNzYWdlLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlKTtcblxuICBheGlvc0Vycm9yLm5hbWUgPSBlcnJvci5uYW1lO1xuXG4gIGN1c3RvbVByb3BzICYmIE9iamVjdC5hc3NpZ24oYXhpb3NFcnJvciwgY3VzdG9tUHJvcHMpO1xuXG4gIHJldHVybiBheGlvc0Vycm9yO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvc0Vycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIEludGVyY2VwdG9yTWFuYWdlcigpIHtcbiAgdGhpcy5oYW5kbGVycyA9IFtdO1xufVxuXG4vKipcbiAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxuICpcbiAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoZnVsZmlsbGVkLCByZWplY3RlZCwgb3B0aW9ucykge1xuICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgIGZ1bGZpbGxlZDogZnVsZmlsbGVkLFxuICAgIHJlamVjdGVkOiByZWplY3RlZCxcbiAgICBzeW5jaHJvbm91czogb3B0aW9ucyA/IG9wdGlvbnMuc3luY2hyb25vdXMgOiBmYWxzZSxcbiAgICBydW5XaGVuOiBvcHRpb25zID8gb3B0aW9ucy5ydW5XaGVuIDogbnVsbFxuICB9KTtcbiAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmVqZWN0ID0gZnVuY3Rpb24gZWplY3QoaWQpIHtcbiAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICB9XG59O1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXG4gKlxuICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcbiAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgIGZuKGgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEludGVyY2VwdG9yTWFuYWdlcjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzQWJzb2x1dGVVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwnKTtcbnZhciBjb21iaW5lVVJMcyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvY29tYmluZVVSTHMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIGJhc2VVUkwgd2l0aCB0aGUgcmVxdWVzdGVkVVJMLFxuICogb25seSB3aGVuIHRoZSByZXF1ZXN0ZWRVUkwgaXMgbm90IGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLlxuICogSWYgdGhlIHJlcXVlc3RVUkwgaXMgYWJzb2x1dGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWVzdGVkVVJMIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0ZWRVUkwgQWJzb2x1dGUgb3IgcmVsYXRpdmUgVVJMIHRvIGNvbWJpbmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBmdWxsIHBhdGhcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCkge1xuICBpZiAoYmFzZVVSTCAmJiAhaXNBYnNvbHV0ZVVSTChyZXF1ZXN0ZWRVUkwpKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3RlZFVSTDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciB0cmFuc2Zvcm1EYXRhID0gcmVxdWlyZSgnLi90cmFuc2Zvcm1EYXRhJyk7XG52YXIgaXNDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvaXNDYW5jZWwnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG52YXIgQ2FuY2VsZWRFcnJvciA9IHJlcXVpcmUoJy4uL2NhbmNlbC9DYW5jZWxlZEVycm9yJyk7XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGVkRXJyb3JgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5zaWduYWwgJiYgY29uZmlnLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgdGhyb3cgbmV3IENhbmNlbGVkRXJyb3IoKTtcbiAgfVxufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHRoYXQgaXMgdG8gYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3RcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkaXNwYXRjaFJlcXVlc3QoY29uZmlnKSB7XG4gIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAvLyBFbnN1cmUgaGVhZGVycyBleGlzdFxuICBjb25maWcuaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xuXG4gIC8vIFRyYW5zZm9ybSByZXF1ZXN0IGRhdGFcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgY29uZmlnLFxuICAgIGNvbmZpZy5kYXRhLFxuICAgIGNvbmZpZy5oZWFkZXJzLFxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XG4gICk7XG5cbiAgLy8gRmxhdHRlbiBoZWFkZXJzXG4gIGNvbmZpZy5oZWFkZXJzID0gdXRpbHMubWVyZ2UoXG4gICAgY29uZmlnLmhlYWRlcnMuY29tbW9uIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzW2NvbmZpZy5tZXRob2RdIHx8IHt9LFxuICAgIGNvbmZpZy5oZWFkZXJzXG4gICk7XG5cbiAgdXRpbHMuZm9yRWFjaChcbiAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcbiAgICBmdW5jdGlvbiBjbGVhbkhlYWRlckNvbmZpZyhtZXRob2QpIHtcbiAgICAgIGRlbGV0ZSBjb25maWcuaGVhZGVyc1ttZXRob2RdO1xuICAgIH1cbiAgKTtcblxuICB2YXIgYWRhcHRlciA9IGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXI7XG5cbiAgcmV0dXJuIGFkYXB0ZXIoY29uZmlnKS50aGVuKGZ1bmN0aW9uIG9uQWRhcHRlclJlc29sdXRpb24ocmVzcG9uc2UpIHtcbiAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gcmVzcG9uc2UgZGF0YVxuICAgIHJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXG4gICAgICBjb25maWcsXG4gICAgICByZXNwb25zZS5kYXRhLFxuICAgICAgcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtZXJnZUNvbmZpZyhjb25maWcxLCBjb25maWcyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcbiAgdmFyIGNvbmZpZyA9IHt9O1xuXG4gIGZ1bmN0aW9uIGdldE1lcmdlZFZhbHVlKHRhcmdldCwgc291cmNlKSB7XG4gICAgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3QodGFyZ2V0KSAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh0YXJnZXQsIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh7fSwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG4gIGZ1bmN0aW9uIG1lcmdlRGlyZWN0S2V5cyhwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAocHJvcCBpbiBjb25maWcxKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICB2YXIgbWVyZ2VNYXAgPSB7XG4gICAgJ3VybCc6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgJ21ldGhvZCc6IHZhbHVlRnJvbUNvbmZpZzIsXG4gICAgJ2RhdGEnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdiYXNlVVJMJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndHJhbnNmb3JtUmVxdWVzdCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zZm9ybVJlc3BvbnNlJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAncGFyYW1zU2VyaWFsaXplcic6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RpbWVvdXQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0aW1lb3V0TWVzc2FnZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3dpdGhDcmVkZW50aWFscyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2FkYXB0ZXInOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdyZXNwb25zZVR5cGUnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd4c3JmQ29va2llTmFtZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3hzcmZIZWFkZXJOYW1lJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnb25VcGxvYWRQcm9ncmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ29uRG93bmxvYWRQcm9ncmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2RlY29tcHJlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdtYXhDb250ZW50TGVuZ3RoJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnbWF4Qm9keUxlbmd0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2JlZm9yZVJlZGlyZWN0JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndHJhbnNwb3J0JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnaHR0cEFnZW50JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnaHR0cHNBZ2VudCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2NhbmNlbFRva2VuJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnc29ja2V0UGF0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3Jlc3BvbnNlRW5jb2RpbmcnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd2YWxpZGF0ZVN0YXR1cyc6IG1lcmdlRGlyZWN0S2V5c1xuICB9O1xuXG4gIHV0aWxzLmZvckVhY2goT2JqZWN0LmtleXMoY29uZmlnMSkuY29uY2F0KE9iamVjdC5rZXlzKGNvbmZpZzIpKSwgZnVuY3Rpb24gY29tcHV0ZUNvbmZpZ1ZhbHVlKHByb3ApIHtcbiAgICB2YXIgbWVyZ2UgPSBtZXJnZU1hcFtwcm9wXSB8fCBtZXJnZURlZXBQcm9wZXJ0aWVzO1xuICAgIHZhciBjb25maWdWYWx1ZSA9IG1lcmdlKHByb3ApO1xuICAgICh1dGlscy5pc1VuZGVmaW5lZChjb25maWdWYWx1ZSkgJiYgbWVyZ2UgIT09IG1lcmdlRGlyZWN0S2V5cykgfHwgKGNvbmZpZ1twcm9wXSA9IGNvbmZpZ1ZhbHVlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi9BeGlvc0Vycm9yJyk7XG5cbi8qKlxuICogUmVzb2x2ZSBvciByZWplY3QgYSBQcm9taXNlIGJhc2VkIG9uIHJlc3BvbnNlIHN0YXR1cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdCBBIGZ1bmN0aW9uIHRoYXQgcmVqZWN0cyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2UuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpIHtcbiAgdmFyIHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICBbQXhpb3NFcnJvci5FUlJfQkFEX1JFUVVFU1QsIEF4aW9zRXJyb3IuRVJSX0JBRF9SRVNQT05TRV1bTWF0aC5mbG9vcihyZXNwb25zZS5zdGF0dXMgLyAxMDApIC0gNF0sXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXG4gKlxuICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkXG4gKiBAcGFyYW0ge0FycmF5fSBoZWFkZXJzIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCBvciByZXNwb25zZVxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xuICogQHJldHVybnMgeyp9IFRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgZGF0YVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZGF0YSwgaGVhZGVycywgZm5zKSB7XG4gIHZhciBjb250ZXh0ID0gdGhpcyB8fCBkZWZhdWx0cztcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4uY2FsbChjb250ZXh0LCBkYXRhLCBoZWFkZXJzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGE7XG59O1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHN0cmljdFxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCdmb3JtLWRhdGEnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBub3JtYWxpemVIZWFkZXJOYW1lID0gcmVxdWlyZSgnLi4vaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lJyk7XG52YXIgQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvQXhpb3NFcnJvcicpO1xudmFyIHRyYW5zaXRpb25hbERlZmF1bHRzID0gcmVxdWlyZSgnLi90cmFuc2l0aW9uYWwnKTtcbnZhciB0b0Zvcm1EYXRhID0gcmVxdWlyZSgnLi4vaGVscGVycy90b0Zvcm1EYXRhJyk7XG5cbnZhciBERUZBVUxUX0NPTlRFTlRfVFlQRSA9IHtcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG59O1xuXG5mdW5jdGlvbiBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgdmFsdWUpIHtcbiAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChoZWFkZXJzKSAmJiB1dGlscy5pc1VuZGVmaW5lZChoZWFkZXJzWydDb250ZW50LVR5cGUnXSkpIHtcbiAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IHZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRBZGFwdGVyKCkge1xuICB2YXIgYWRhcHRlcjtcbiAgaWYgKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBGb3IgYnJvd3NlcnMgdXNlIFhIUiBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4uL2FkYXB0ZXJzL3hocicpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJykge1xuICAgIC8vIEZvciBub2RlIHVzZSBIVFRQIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi4vYWRhcHRlcnMvaHR0cCcpO1xuICB9XG4gIHJldHVybiBhZGFwdGVyO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlTYWZlbHkocmF3VmFsdWUsIHBhcnNlciwgZW5jb2Rlcikge1xuICBpZiAodXRpbHMuaXNTdHJpbmcocmF3VmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIChwYXJzZXIgfHwgSlNPTi5wYXJzZSkocmF3VmFsdWUpO1xuICAgICAgcmV0dXJuIHV0aWxzLnRyaW0ocmF3VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm5hbWUgIT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGVuY29kZXIgfHwgSlNPTi5zdHJpbmdpZnkpKHJhd1ZhbHVlKTtcbn1cblxudmFyIGRlZmF1bHRzID0ge1xuXG4gIHRyYW5zaXRpb25hbDogdHJhbnNpdGlvbmFsRGVmYXVsdHMsXG5cbiAgYWRhcHRlcjogZ2V0RGVmYXVsdEFkYXB0ZXIoKSxcblxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQWNjZXB0Jyk7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQ29udGVudC1UeXBlJyk7XG5cbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnKTtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgdmFyIGlzT2JqZWN0UGF5bG9hZCA9IHV0aWxzLmlzT2JqZWN0KGRhdGEpO1xuICAgIHZhciBjb250ZW50VHlwZSA9IGhlYWRlcnMgJiYgaGVhZGVyc1snQ29udGVudC1UeXBlJ107XG5cbiAgICB2YXIgaXNGaWxlTGlzdDtcblxuICAgIGlmICgoaXNGaWxlTGlzdCA9IHV0aWxzLmlzRmlsZUxpc3QoZGF0YSkpIHx8IChpc09iamVjdFBheWxvYWQgJiYgY29udGVudFR5cGUgPT09ICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpIHtcbiAgICAgIHZhciBfRm9ybURhdGEgPSB0aGlzLmVudiAmJiB0aGlzLmVudi5Gb3JtRGF0YTtcbiAgICAgIHJldHVybiB0b0Zvcm1EYXRhKGlzRmlsZUxpc3QgPyB7J2ZpbGVzW10nOiBkYXRhfSA6IGRhdGEsIF9Gb3JtRGF0YSAmJiBuZXcgX0Zvcm1EYXRhKCkpO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3RQYXlsb2FkIHx8IGNvbnRlbnRUeXBlID09PSAnYXBwbGljYXRpb24vanNvbicpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgcmV0dXJuIHN0cmluZ2lmeVNhZmVseShkYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgdmFyIHRyYW5zaXRpb25hbCA9IHRoaXMudHJhbnNpdGlvbmFsIHx8IGRlZmF1bHRzLnRyYW5zaXRpb25hbDtcbiAgICB2YXIgc2lsZW50SlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLnNpbGVudEpTT05QYXJzaW5nO1xuICAgIHZhciBmb3JjZWRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuZm9yY2VkSlNPTlBhcnNpbmc7XG4gICAgdmFyIHN0cmljdEpTT05QYXJzaW5nID0gIXNpbGVudEpTT05QYXJzaW5nICYmIHRoaXMucmVzcG9uc2VUeXBlID09PSAnanNvbic7XG5cbiAgICBpZiAoc3RyaWN0SlNPTlBhcnNpbmcgfHwgKGZvcmNlZEpTT05QYXJzaW5nICYmIHV0aWxzLmlzU3RyaW5nKGRhdGEpICYmIGRhdGEubGVuZ3RoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChzdHJpY3RKU09OUGFyc2luZykge1xuICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgICAgIHRocm93IEF4aW9zRXJyb3IuZnJvbShlLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0UsIHRoaXMsIG51bGwsIHRoaXMucmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcblxuICBlbnY6IHtcbiAgICBGb3JtRGF0YTogcmVxdWlyZSgnLi9lbnYvRm9ybURhdGEnKVxuICB9LFxuXG4gIHZhbGlkYXRlU3RhdHVzOiBmdW5jdGlvbiB2YWxpZGF0ZVN0YXR1cyhzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gIH0sXG5cbiAgaGVhZGVyczoge1xuICAgIGNvbW1vbjoge1xuICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonXG4gICAgfVxuICB9XG59O1xuXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHt9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHV0aWxzLm1lcmdlKERFRkFVTFRfQ09OVEVOVF9UWVBFKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2lsZW50SlNPTlBhcnNpbmc6IHRydWUsXG4gIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxuICBjbGFyaWZ5VGltZW91dEVycm9yOiBmYWxzZVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBcInZlcnNpb25cIjogXCIwLjI3LjJcIlxufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXNTZXJpYWxpemVyKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgIHV0aWxzLmZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiBzZXJpYWxpemUodmFsLCBrZXkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGtleSA9IGtleSArICdbXSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBbdmFsXTtcbiAgICAgIH1cblxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodXRpbHMuaXNEYXRlKHYpKSB7XG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xuICAgICAgICAgIHYgPSBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcnRzLmpvaW4oJyYnKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cblxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgc3BlY2lmaWVkIFVSTHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVVSTCBUaGUgcmVsYXRpdmUgVVJMXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgc3VwcG9ydCBkb2N1bWVudC5jb29raWVcbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkge1xuICAgICAgICAgIHZhciBjb29raWUgPSBbXTtcbiAgICAgICAgICBjb29raWUucHVzaChuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNOdW1iZXIoZXhwaXJlcykpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdwYXRoPScgKyBwYXRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcoZG9tYWluKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2RvbWFpbj0nICsgZG9tYWluKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnc2VjdXJlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XG4gICAgICAgICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcbiAgICAgICAgICByZXR1cm4gKG1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzNdKSA6IG51bGwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKG5hbWUpIHtcbiAgICAgICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudiAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKCkge30sXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQoKSB7IHJldHVybiBudWxsOyB9LFxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgVVJMIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0Fic29sdXRlVVJMKHVybCkge1xuICAvLyBBIFVSTCBpcyBjb25zaWRlcmVkIGFic29sdXRlIGlmIGl0IGJlZ2lucyB3aXRoIFwiPHNjaGVtZT46Ly9cIiBvciBcIi8vXCIgKHByb3RvY29sLXJlbGF0aXZlIFVSTCkuXG4gIC8vIFJGQyAzOTg2IGRlZmluZXMgc2NoZW1lIG5hbWUgYXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBmb2xsb3dlZFxuICAvLyBieSBhbnkgY29tYmluYXRpb24gb2YgbGV0dGVycywgZGlnaXRzLCBwbHVzLCBwZXJpb2QsIG9yIGh5cGhlbi5cbiAgcmV0dXJuIC9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvc1xuICpcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0F4aW9zRXJyb3IocGF5bG9hZCkge1xuICByZXR1cm4gdXRpbHMuaXNPYmplY3QocGF5bG9hZCkgJiYgKHBheWxvYWQuaXNBeGlvc0Vycm9yID09PSB0cnVlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBoYXZlIGZ1bGwgc3VwcG9ydCBvZiB0aGUgQVBJcyBuZWVkZWQgdG8gdGVzdFxuICAvLyB3aGV0aGVyIHRoZSByZXF1ZXN0IFVSTCBpcyBvZiB0aGUgc2FtZSBvcmlnaW4gYXMgY3VycmVudCBsb2NhdGlvbi5cbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgdmFyIG1zaWUgPSAvKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgICAgdmFyIHVybFBhcnNpbmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgdmFyIG9yaWdpblVSTDtcblxuICAgICAgLyoqXG4gICAgKiBQYXJzZSBhIFVSTCB0byBkaXNjb3ZlciBpdCdzIGNvbXBvbmVudHNcbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIFRoZSBVUkwgdG8gYmUgcGFyc2VkXG4gICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgICovXG4gICAgICBmdW5jdGlvbiByZXNvbHZlVVJMKHVybCkge1xuICAgICAgICB2YXIgaHJlZiA9IHVybDtcblxuICAgICAgICBpZiAobXNpZSkge1xuICAgICAgICAvLyBJRSBuZWVkcyBhdHRyaWJ1dGUgc2V0IHR3aWNlIHRvIG5vcm1hbGl6ZSBwcm9wZXJ0aWVzXG4gICAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG4gICAgICAgICAgaHJlZiA9IHVybFBhcnNpbmdOb2RlLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcblxuICAgICAgICAvLyB1cmxQYXJzaW5nTm9kZSBwcm92aWRlcyB0aGUgVXJsVXRpbHMgaW50ZXJmYWNlIC0gaHR0cDovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybHV0aWxzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaHJlZjogdXJsUGFyc2luZ05vZGUuaHJlZixcbiAgICAgICAgICBwcm90b2NvbDogdXJsUGFyc2luZ05vZGUucHJvdG9jb2wgPyB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbC5yZXBsYWNlKC86JC8sICcnKSA6ICcnLFxuICAgICAgICAgIGhvc3Q6IHVybFBhcnNpbmdOb2RlLmhvc3QsXG4gICAgICAgICAgc2VhcmNoOiB1cmxQYXJzaW5nTm9kZS5zZWFyY2ggPyB1cmxQYXJzaW5nTm9kZS5zZWFyY2gucmVwbGFjZSgvXlxcPy8sICcnKSA6ICcnLFxuICAgICAgICAgIGhhc2g6IHVybFBhcnNpbmdOb2RlLmhhc2ggPyB1cmxQYXJzaW5nTm9kZS5oYXNoLnJlcGxhY2UoL14jLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdG5hbWU6IHVybFBhcnNpbmdOb2RlLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IHVybFBhcnNpbmdOb2RlLnBvcnQsXG4gICAgICAgICAgcGF0aG5hbWU6ICh1cmxQYXJzaW5nTm9kZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJykgP1xuICAgICAgICAgICAgdXJsUGFyc2luZ05vZGUucGF0aG5hbWUgOlxuICAgICAgICAgICAgJy8nICsgdXJsUGFyc2luZ05vZGUucGF0aG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgb3JpZ2luVVJMID0gcmVzb2x2ZVVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICAgIC8qKlxuICAgICogRGV0ZXJtaW5lIGlmIGEgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGN1cnJlbnQgbG9jYXRpb25cbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gcmVxdWVzdFVSTCBUaGUgVVJMIHRvIHRlc3RcbiAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luLCBvdGhlcndpc2UgZmFsc2VcbiAgICAqL1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbihyZXF1ZXN0VVJMKSB7XG4gICAgICAgIHZhciBwYXJzZWQgPSAodXRpbHMuaXNTdHJpbmcocmVxdWVzdFVSTCkpID8gcmVzb2x2ZVVSTChyZXF1ZXN0VVJMKSA6IHJlcXVlc3RVUkw7XG4gICAgICAgIHJldHVybiAocGFyc2VkLnByb3RvY29sID09PSBvcmlnaW5VUkwucHJvdG9jb2wgJiZcbiAgICAgICAgICAgIHBhcnNlZC5ob3N0ID09PSBvcmlnaW5VUkwuaG9zdCk7XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudnMgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4oKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcbiAgICB9KSgpXG4pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgbm9ybWFsaXplZE5hbWUpIHtcbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiBwcm9jZXNzSGVhZGVyKHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKG5hbWUgIT09IG5vcm1hbGl6ZWROYW1lICYmIG5hbWUudG9VcHBlckNhc2UoKSA9PT0gbm9ybWFsaXplZE5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW25hbWVdO1xuICAgIH1cbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8vIEhlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG52YXIgaWdub3JlRHVwbGljYXRlT2YgPSBbXG4gICdhZ2UnLCAnYXV0aG9yaXphdGlvbicsICdjb250ZW50LWxlbmd0aCcsICdjb250ZW50LXR5cGUnLCAnZXRhZycsXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsICdyZXRyeS1hZnRlcicsICd1c2VyLWFnZW50J1xuXTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUhlYWRlcnMoaGVhZGVycykge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHZhciBrZXk7XG4gIHZhciB2YWw7XG4gIHZhciBpO1xuXG4gIGlmICghaGVhZGVycykgeyByZXR1cm4gcGFyc2VkOyB9XG5cbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLnNwbGl0KCdcXG4nKSwgZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKGkgKyAxKSk7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2YuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZVByb3RvY29sKHVybCkge1xuICB2YXIgbWF0Y2ggPSAvXihbLStcXHddezEsMjV9KSg6P1xcL1xcL3w6KS8uZXhlYyh1cmwpO1xuICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMV0gfHwgJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFN5bnRhY3RpYyBzdWdhciBmb3IgaW52b2tpbmcgYSBmdW5jdGlvbiBhbmQgZXhwYW5kaW5nIGFuIGFycmF5IGZvciBhcmd1bWVudHMuXG4gKlxuICogQ29tbW9uIHVzZSBjYXNlIHdvdWxkIGJlIHRvIHVzZSBgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5YC5cbiAqXG4gKiAgYGBganNcbiAqICBmdW5jdGlvbiBmKHgsIHksIHopIHt9XG4gKiAgdmFyIGFyZ3MgPSBbMSwgMiwgM107XG4gKiAgZi5hcHBseShudWxsLCBhcmdzKTtcbiAqICBgYGBcbiAqXG4gKiBXaXRoIGBzcHJlYWRgIHRoaXMgZXhhbXBsZSBjYW4gYmUgcmUtd3JpdHRlbi5cbiAqXG4gKiAgYGBganNcbiAqICBzcHJlYWQoZnVuY3Rpb24oeCwgeSwgeikge30pKFsxLCAyLCAzXSk7XG4gKiAgYGBgXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoYXJyKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbnZlcnQgYSBkYXRhIG9iamVjdCB0byBGb3JtRGF0YVxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHBhcmFtIHs/T2JqZWN0fSBbZm9ybURhdGFdXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICoqL1xuXG5mdW5jdGlvbiB0b0Zvcm1EYXRhKG9iaiwgZm9ybURhdGEpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGZvcm1EYXRhID0gZm9ybURhdGEgfHwgbmV3IEZvcm1EYXRhKCk7XG5cbiAgdmFyIHN0YWNrID0gW107XG5cbiAgZnVuY3Rpb24gY29udmVydFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gJyc7XG5cbiAgICBpZiAodXRpbHMuaXNEYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIodmFsdWUpIHx8IHV0aWxzLmlzVHlwZWRBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgQmxvYiA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBCbG9iKFt2YWx1ZV0pIDogQnVmZmVyLmZyb20odmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkKGRhdGEsIHBhcmVudEtleSkge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KGRhdGEpIHx8IHV0aWxzLmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIGlmIChzdGFjay5pbmRleE9mKGRhdGEpICE9PSAtMSkge1xuICAgICAgICB0aHJvdyBFcnJvcignQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICcgKyBwYXJlbnRLZXkpO1xuICAgICAgfVxuXG4gICAgICBzdGFjay5wdXNoKGRhdGEpO1xuXG4gICAgICB1dGlscy5mb3JFYWNoKGRhdGEsIGZ1bmN0aW9uIGVhY2godmFsdWUsIGtleSkge1xuICAgICAgICBpZiAodXRpbHMuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG4gICAgICAgIHZhciBmdWxsS2V5ID0gcGFyZW50S2V5ID8gcGFyZW50S2V5ICsgJy4nICsga2V5IDoga2V5O1xuICAgICAgICB2YXIgYXJyO1xuXG4gICAgICAgIGlmICh2YWx1ZSAmJiAhcGFyZW50S2V5ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBpZiAodXRpbHMuZW5kc1dpdGgoa2V5LCAne30nKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykgJiYgKGFyciA9IHV0aWxzLnRvQXJyYXkodmFsdWUpKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgICAgICAgIGFyci5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICF1dGlscy5pc1VuZGVmaW5lZChlbCkgJiYgZm9ybURhdGEuYXBwZW5kKGZ1bGxLZXksIGNvbnZlcnRWYWx1ZShlbCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnVpbGQodmFsdWUsIGZ1bGxLZXkpO1xuICAgICAgfSk7XG5cbiAgICAgIHN0YWNrLnBvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQocGFyZW50S2V5LCBjb252ZXJ0VmFsdWUoZGF0YSkpO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkKG9iaik7XG5cbiAgcmV0dXJuIGZvcm1EYXRhO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvRm9ybURhdGE7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBWRVJTSU9OID0gcmVxdWlyZSgnLi4vZW52L2RhdGEnKS52ZXJzaW9uO1xudmFyIEF4aW9zRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL0F4aW9zRXJyb3InKTtcblxudmFyIHZhbGlkYXRvcnMgPSB7fTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblsnb2JqZWN0JywgJ2Jvb2xlYW4nLCAnbnVtYmVyJywgJ2Z1bmN0aW9uJywgJ3N0cmluZycsICdzeW1ib2wnXS5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUsIGkpIHtcbiAgdmFsaWRhdG9yc1t0eXBlXSA9IGZ1bmN0aW9uIHZhbGlkYXRvcih0aGluZykge1xuICAgIHJldHVybiB0eXBlb2YgdGhpbmcgPT09IHR5cGUgfHwgJ2EnICsgKGkgPCAxID8gJ24gJyA6ICcgJykgKyB0eXBlO1xuICB9O1xufSk7XG5cbnZhciBkZXByZWNhdGVkV2FybmluZ3MgPSB7fTtcblxuLyoqXG4gKiBUcmFuc2l0aW9uYWwgb3B0aW9uIHZhbGlkYXRvclxuICogQHBhcmFtIHtmdW5jdGlvbnxib29sZWFuP30gdmFsaWRhdG9yIC0gc2V0IHRvIGZhbHNlIGlmIHRoZSB0cmFuc2l0aW9uYWwgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWRcbiAqIEBwYXJhbSB7c3RyaW5nP30gdmVyc2lvbiAtIGRlcHJlY2F0ZWQgdmVyc2lvbiAvIHJlbW92ZWQgc2luY2UgdmVyc2lvblxuICogQHBhcmFtIHtzdHJpbmc/fSBtZXNzYWdlIC0gc29tZSBtZXNzYWdlIHdpdGggYWRkaXRpb25hbCBpbmZvXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gKi9cbnZhbGlkYXRvcnMudHJhbnNpdGlvbmFsID0gZnVuY3Rpb24gdHJhbnNpdGlvbmFsKHZhbGlkYXRvciwgdmVyc2lvbiwgbWVzc2FnZSkge1xuICBmdW5jdGlvbiBmb3JtYXRNZXNzYWdlKG9wdCwgZGVzYykge1xuICAgIHJldHVybiAnW0F4aW9zIHYnICsgVkVSU0lPTiArICddIFRyYW5zaXRpb25hbCBvcHRpb24gXFwnJyArIG9wdCArICdcXCcnICsgZGVzYyArIChtZXNzYWdlID8gJy4gJyArIG1lc3NhZ2UgOiAnJyk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG9wdCwgb3B0cykge1xuICAgIGlmICh2YWxpZGF0b3IgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShvcHQsICcgaGFzIGJlZW4gcmVtb3ZlZCcgKyAodmVyc2lvbiA/ICcgaW4gJyArIHZlcnNpb24gOiAnJykpLFxuICAgICAgICBBeGlvc0Vycm9yLkVSUl9ERVBSRUNBVEVEXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9uICYmICFkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSkge1xuICAgICAgZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0gPSB0cnVlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShcbiAgICAgICAgICBvcHQsXG4gICAgICAgICAgJyBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYnICsgdmVyc2lvbiArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvciA/IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRzKSA6IHRydWU7XG4gIH07XG59O1xuXG4vKipcbiAqIEFzc2VydCBvYmplY3QncyBwcm9wZXJ0aWVzIHR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hXG4gKiBAcGFyYW0ge2Jvb2xlYW4/fSBhbGxvd1Vua25vd25cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRPcHRpb25zKG9wdGlvbnMsIHNjaGVtYSwgYWxsb3dVbmtub3duKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT05fVkFMVUUpO1xuICB9XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgdmFyIG9wdCA9IGtleXNbaV07XG4gICAgdmFyIHZhbGlkYXRvciA9IHNjaGVtYVtvcHRdO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9wdGlvbnNbb3B0XTtcbiAgICAgIHZhciByZXN1bHQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRpb25zKTtcbiAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ29wdGlvbiAnICsgb3B0ICsgJyBtdXN0IGJlICcgKyByZXN1bHQsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT05fVkFMVUUpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChhbGxvd1Vua25vd24gIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdVbmtub3duIG9wdGlvbiAnICsgb3B0LCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OKTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFzc2VydE9wdGlvbnM6IGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnM6IHZhbGlkYXRvcnNcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcblxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcblxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbnZhciBraW5kT2YgPSAoZnVuY3Rpb24oY2FjaGUpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaW5nKSB7XG4gICAgdmFyIHN0ciA9IHRvU3RyaW5nLmNhbGwodGhpbmcpO1xuICAgIHJldHVybiBjYWNoZVtzdHJdIHx8IChjYWNoZVtzdHJdID0gc3RyLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpKTtcbiAgfTtcbn0pKE9iamVjdC5jcmVhdGUobnVsbCkpO1xuXG5mdW5jdGlvbiBraW5kT2ZUZXN0KHR5cGUpIHtcbiAgdHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIGlzS2luZE9mKHRoaW5nKSB7XG4gICAgcmV0dXJuIGtpbmRPZih0aGluZykgPT09IHR5cGU7XG4gIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xudmFyIGlzQXJyYXlCdWZmZXIgPSBraW5kT2ZUZXN0KCdBcnJheUJ1ZmZlcicpO1xuXG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykgJiYgKEFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICByZXN1bHQgPSBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAodmFsKSAmJiAodmFsLmJ1ZmZlcikgJiYgKGlzQXJyYXlCdWZmZXIodmFsLmJ1ZmZlcikpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcic7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWwpIHtcbiAgaWYgKGtpbmRPZih2YWwpICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsKTtcbiAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBEYXRlXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG52YXIgaXNEYXRlID0ga2luZE9mVGVzdCgnRGF0ZScpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xudmFyIGlzRmlsZSA9IGtpbmRPZlRlc3QoJ0ZpbGUnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbnZhciBpc0Jsb2IgPSBraW5kT2ZUZXN0KCdCbG9iJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlTGlzdFxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xudmFyIGlzRmlsZUxpc3QgPSBraW5kT2ZUZXN0KCdGaWxlTGlzdCcpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJlYW0odmFsKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpbmcgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEZvcm1EYXRhLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGb3JtRGF0YSh0aGluZykge1xuICB2YXIgcGF0dGVybiA9ICdbb2JqZWN0IEZvcm1EYXRhXSc7XG4gIHJldHVybiB0aGluZyAmJiAoXG4gICAgKHR5cGVvZiBGb3JtRGF0YSA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGluZyBpbnN0YW5jZW9mIEZvcm1EYXRhKSB8fFxuICAgIHRvU3RyaW5nLmNhbGwodGhpbmcpID09PSBwYXR0ZXJuIHx8XG4gICAgKGlzRnVuY3Rpb24odGhpbmcudG9TdHJpbmcpICYmIHRoaW5nLnRvU3RyaW5nKCkgPT09IHBhdHRlcm4pXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0XG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbnZhciBpc1VSTFNlYXJjaFBhcmFtcyA9IGtpbmRPZlRlc3QoJ1VSTFNlYXJjaFBhcmFtcycpO1xuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gIHJldHVybiBzdHIudHJpbSA/IHN0ci50cmltKCkgOiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudFxuICpcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXG4gKiBCb3RoIGVudmlyb25tZW50cyBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LCBidXQgbm90IGZ1bGx5IHN0YW5kYXJkIGdsb2JhbHMuXG4gKlxuICogd2ViIHdvcmtlcnM6XG4gKiAgdHlwZW9mIHdpbmRvdyAtPiB1bmRlZmluZWRcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXG4gKlxuICogcmVhY3QtbmF0aXZlOlxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcbiAqIG5hdGl2ZXNjcmlwdFxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdOYXRpdmVTY3JpcHQnIG9yICdOUydcbiAqL1xuZnVuY3Rpb24gaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAobmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05hdGl2ZVNjcmlwdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05TJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcbiAgKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0IGludm9raW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGluZGV4LCBhbmQgY29tcGxldGUgYXJyYXkgZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBrZXksIGFuZCBjb21wbGV0ZSBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBjYWxsYmFjayB0byBpbnZva2UgZm9yIGVhY2ggaXRlbVxuICovXG5mdW5jdGlvbiBmb3JFYWNoKG9iaiwgZm4pIHtcbiAgLy8gRG9uJ3QgYm90aGVyIGlmIG5vIHZhbHVlIHByb3ZpZGVkXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgb2JqID0gW29ial07XG4gIH1cblxuICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIGFycmF5IHZhbHVlc1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpbaV0sIGksIG9iaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2tleV0sIGtleSwgb2JqKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIHZhciByZXN1bHQgPSBtZXJnZSh7Zm9vOiAxMjN9LCB7Zm9vOiA0NTZ9KTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxuICogYGBgXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHRba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHt9LCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbC5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3VsdGluZyB2YWx1ZSBvZiBvYmplY3QgYVxuICovXG5mdW5jdGlvbiBleHRlbmQoYSwgYiwgdGhpc0FyZykge1xuICBmb3JFYWNoKGIsIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKHRoaXNBcmcgJiYgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhW2tleV0gPSB2YWw7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGE7XG59XG5cbi8qKlxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cbiAqIEByZXR1cm4ge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5mdW5jdGlvbiBzdHJpcEJPTShjb250ZW50KSB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHN1cGVyQ29uc3RydWN0b3JcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcHJvcHNdXG4gKiBAcGFyYW0ge29iamVjdH0gW2Rlc2NyaXB0b3JzXVxuICovXG5cbmZ1bmN0aW9uIGluaGVyaXRzKGNvbnN0cnVjdG9yLCBzdXBlckNvbnN0cnVjdG9yLCBwcm9wcywgZGVzY3JpcHRvcnMpIHtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZSwgZGVzY3JpcHRvcnMpO1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgcHJvcHMgJiYgT2JqZWN0LmFzc2lnbihjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3BzKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIG9iamVjdCB3aXRoIGRlZXAgcHJvdG90eXBlIGNoYWluIHRvIGEgZmxhdCBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2VPYmogc291cmNlIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IFtkZXN0T2JqXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZpbHRlcl1cbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cblxuZnVuY3Rpb24gdG9GbGF0T2JqZWN0KHNvdXJjZU9iaiwgZGVzdE9iaiwgZmlsdGVyKSB7XG4gIHZhciBwcm9wcztcbiAgdmFyIGk7XG4gIHZhciBwcm9wO1xuICB2YXIgbWVyZ2VkID0ge307XG5cbiAgZGVzdE9iaiA9IGRlc3RPYmogfHwge307XG5cbiAgZG8ge1xuICAgIHByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlT2JqKTtcbiAgICBpID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICBwcm9wID0gcHJvcHNbaV07XG4gICAgICBpZiAoIW1lcmdlZFtwcm9wXSkge1xuICAgICAgICBkZXN0T2JqW3Byb3BdID0gc291cmNlT2JqW3Byb3BdO1xuICAgICAgICBtZXJnZWRbcHJvcF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3VyY2VPYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlT2JqKTtcbiAgfSB3aGlsZSAoc291cmNlT2JqICYmICghZmlsdGVyIHx8IGZpbHRlcihzb3VyY2VPYmosIGRlc3RPYmopKSAmJiBzb3VyY2VPYmogIT09IE9iamVjdC5wcm90b3R5cGUpO1xuXG4gIHJldHVybiBkZXN0T2JqO1xufVxuXG4vKlxuICogZGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgY2hhcmFjdGVycyBvZiBhIHNwZWNpZmllZCBzdHJpbmdcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWFyY2hTdHJpbmdcbiAqIEBwYXJhbSB7TnVtYmVyfSBbcG9zaXRpb249IDBdXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gZW5kc1dpdGgoc3RyLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uKSB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAocG9zaXRpb24gPT09IHVuZGVmaW5lZCB8fCBwb3NpdGlvbiA+IHN0ci5sZW5ndGgpIHtcbiAgICBwb3NpdGlvbiA9IHN0ci5sZW5ndGg7XG4gIH1cbiAgcG9zaXRpb24gLT0gc2VhcmNoU3RyaW5nLmxlbmd0aDtcbiAgdmFyIGxhc3RJbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFN0cmluZywgcG9zaXRpb24pO1xuICByZXR1cm4gbGFzdEluZGV4ICE9PSAtMSAmJiBsYXN0SW5kZXggPT09IHBvc2l0aW9uO1xufVxuXG5cbi8qKlxuICogUmV0dXJucyBuZXcgYXJyYXkgZnJvbSBhcnJheSBsaWtlIG9iamVjdFxuICogQHBhcmFtIHsqfSBbdGhpbmddXG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkodGhpbmcpIHtcbiAgaWYgKCF0aGluZykgcmV0dXJuIG51bGw7XG4gIHZhciBpID0gdGhpbmcubGVuZ3RoO1xuICBpZiAoaXNVbmRlZmluZWQoaSkpIHJldHVybiBudWxsO1xuICB2YXIgYXJyID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIGFycltpXSA9IHRoaW5nW2ldO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG52YXIgaXNUeXBlZEFycmF5ID0gKGZ1bmN0aW9uKFR5cGVkQXJyYXkpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaW5nKSB7XG4gICAgcmV0dXJuIFR5cGVkQXJyYXkgJiYgdGhpbmcgaW5zdGFuY2VvZiBUeXBlZEFycmF5O1xuICB9O1xufSkodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihVaW50OEFycmF5KSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0FycmF5OiBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gIGlzRm9ybURhdGE6IGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3OiBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICBpc051bWJlcjogaXNOdW1iZXIsXG4gIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc0RhdGU6IGlzRGF0ZSxcbiAgaXNGaWxlOiBpc0ZpbGUsXG4gIGlzQmxvYjogaXNCbG9iLFxuICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbTogaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zOiBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNTdGFuZGFyZEJyb3dzZXJFbnY6IGlzU3RhbmRhcmRCcm93c2VyRW52LFxuICBmb3JFYWNoOiBmb3JFYWNoLFxuICBtZXJnZTogbWVyZ2UsXG4gIGV4dGVuZDogZXh0ZW5kLFxuICB0cmltOiB0cmltLFxuICBzdHJpcEJPTTogc3RyaXBCT00sXG4gIGluaGVyaXRzOiBpbmhlcml0cyxcbiAgdG9GbGF0T2JqZWN0OiB0b0ZsYXRPYmplY3QsXG4gIGtpbmRPZjoga2luZE9mLFxuICBraW5kT2ZUZXN0OiBraW5kT2ZUZXN0LFxuICBlbmRzV2l0aDogZW5kc1dpdGgsXG4gIHRvQXJyYXk6IHRvQXJyYXksXG4gIGlzVHlwZWRBcnJheTogaXNUeXBlZEFycmF5LFxuICBpc0ZpbGVMaXN0OiBpc0ZpbGVMaXN0XG59O1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdXRpbHMqL1xuaW1wb3J0IHtcbiAgaXNQdXJlT2JqZWN0LFxuICBzZXRWYWx1ZUlmTm90TmlsLFxufSBmcm9tICcuLi91dGlscyc7XG4vKnR5cGVzKi9cbmltcG9ydCBIdHRwTWV0aG9kcyBmcm9tICcuLi9yZXF1ZXN0L0h0dHBNZXRob2RzJztcbmltcG9ydCB7IENsaWVudFBhcmFtcyB9IGZyb20gJy4vQ2xpZW50JztcbmltcG9ydCB7IFJlcXVlc3RDb25maWcsIFJlcXVlc3RPcHRpb25zLCBSZXF1ZXN0Q29uc3RydWN0b3JDb25maWcgfSBmcm9tICcuLi9yZXF1ZXN0L1JlcXVlc3QnO1xuLypsaWIqL1xuaW1wb3J0IFJlcXVlc3QgZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgcGFja2FnZUpTT04gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbi8qb3RoZXIqL1xuXG5leHBvcnQgdHlwZSBDbGllbnRDb25uZWN0UGFyYW1zID0gUGljazxDbGllbnRQYXJhbXMsICdjb25maWcnIHwgJ29wdGlvbnMnPjtcblxuY2xhc3MgQ2xpZW50IHtcbiAgcHJpdmF0ZSB2ZXJzaW9uITogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uZmlnITogUmVxdWVzdENvbmZpZztcbiAgcHJpdmF0ZSBvcHRpb25zITogUmVxdWVzdE9wdGlvbnM7XG5cbiAgcHJpdmF0ZSBhcGlLZXk/OiBzdHJpbmc7XG4gIHByaXZhdGUgYXBpU2VjcmV0Pzogc3RyaW5nO1xuICBwcml2YXRlIGFwaVRva2VuPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogQ2xpZW50UGFyYW1zKSB7XG4gICAgaWYgKCFpc1B1cmVPYmplY3QocGFyYW1zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBcInBhcmFtc1wiIG11c3QgYmUgb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0KHRoaXMuY2xvbmVQYXJhbXMocGFyYW1zKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFja2FnZVZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBUElLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpS2V5O1xuICB9XG5cbiAgcHVibGljIGdldEFQSVNlY3JldCgpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZWNyZXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0QVBJVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpVG9rZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29uZmlnKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuY29uZmlnIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLm9wdGlvbnMgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQocmVzb3VyY2U6IHN0cmluZywgY29uZmlnPzogUmVxdWVzdENvbnN0cnVjdG9yQ29uZmlnKSB7XG4gICAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIEh0dHBNZXRob2RzLkdldCwgcmVzb3VyY2UsIGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdChyZXNvdXJjZTogc3RyaW5nLCBjb25maWc/OiBSZXF1ZXN0Q29uc3RydWN0b3JDb25maWcpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcywgSHR0cE1ldGhvZHMuUG9zdCwgcmVzb3VyY2UsIGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgcHV0KHJlc291cmNlOiBzdHJpbmcsIGNvbmZpZz86IFJlcXVlc3RDb25zdHJ1Y3RvckNvbmZpZykge1xuICAgIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCBIdHRwTWV0aG9kcy5QdXQsIHJlc291cmNlLCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShyZXNvdXJjZTogc3RyaW5nLCBjb25maWc/OiBSZXF1ZXN0Q29uc3RydWN0b3JDb25maWcpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcywgSHR0cE1ldGhvZHMuRGVsZXRlLCByZXNvdXJjZSwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdChwYXJhbXM6IENsaWVudFBhcmFtcykge1xuICAgIGlmICghaXNQdXJlT2JqZWN0KHBhcmFtcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJwYXJhbXNcIiBtdXN0IGJlIG9iamVjdCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHtcbiAgICAgIGFwaVRva2VuLFxuICAgICAgYXBpS2V5LFxuICAgICAgYXBpU2VjcmV0LFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGNvbmZpZyxcbiAgICB9ID0gcGFyYW1zO1xuXG4gICAgdGhpcy52ZXJzaW9uID0gQ2xpZW50LnBhY2thZ2VKU09OLnZlcnNpb247XG5cbiAgICB0aGlzLnNldENvbmZpZyhjb25maWcgPz8gbnVsbCk7XG4gICAgdGhpcy5zZXRPcHRpb25zKG9wdGlvbnMgPz8gbnVsbCk7XG5cbiAgICByZXR1cm4gJ2FwaVRva2VuJyBpbiBwYXJhbXNcbiAgICAgID8gdGhpcy50b2tlbkNvbm5lY3RTdHJhdGVneShhcGlUb2tlbilcbiAgICAgIDogdGhpcy5iYXNpY0Nvbm5lY3RTdHJhdGVneShhcGlLZXksIGFwaVNlY3JldCk7XG4gIH1cblxuICBwcml2YXRlIGNsb25lUGFyYW1zKHBhcmFtczogQ2xpZW50UGFyYW1zKSB7XG4gICAgaWYgKCFpc1B1cmVPYmplY3QocGFyYW1zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBcInBhcmFtc1wiIG11c3QgYmUgb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvbmVkUGFyYW1zID0geyAuLi5wYXJhbXMgfTtcblxuICAgIGlmIChwYXJhbXMuY29uZmlnKSB7XG4gICAgICBjbG9uZWRQYXJhbXMuY29uZmlnID0ge1xuICAgICAgICAuLi5wYXJhbXMuY29uZmlnLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLm9wdGlvbnMpIHtcbiAgICAgIGNsb25lZFBhcmFtcy5vcHRpb25zID0ge1xuICAgICAgICAuLi5wYXJhbXMub3B0aW9ucyxcbiAgICAgIH07XG5cbiAgICAgIGlmIChjbG9uZWRQYXJhbXMub3B0aW9ucy5wcm94eSkge1xuICAgICAgICBjbG9uZWRQYXJhbXMub3B0aW9ucy5wcm94eSA9IHtcbiAgICAgICAgICAuLi5jbG9uZWRQYXJhbXMub3B0aW9ucy5wcm94eSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNsb25lZFBhcmFtcy5vcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgICAgY2xvbmVkUGFyYW1zLm9wdGlvbnMuaGVhZGVycyA9IHtcbiAgICAgICAgICAuLi5jbG9uZWRQYXJhbXMub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbG9uZWRQYXJhbXM7XG4gIH1cblxuICBwcml2YXRlIHNldENvbmZpZyhjdXN0b21Db25maWc6IFBhcnRpYWw8UmVxdWVzdENvbmZpZz4gfCBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiBjdXN0b21Db25maWcgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FyZ3VtZW50IFwiY3VzdG9tQ29uZmlnXCIgbXVzdCBiZSBvYmplY3Qgb3IgbnVsbCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHsgLi4uQ2xpZW50LmNvbmZpZyB9O1xuXG4gICAgaWYgKGN1c3RvbUNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgc2V0VmFsdWVJZk5vdE5pbChjb25maWcsICdob3N0JywgY3VzdG9tQ29uZmlnLmhvc3QpO1xuICAgICAgc2V0VmFsdWVJZk5vdE5pbChjb25maWcsICdvdXRwdXQnLCBjdXN0b21Db25maWcub3V0cHV0KTtcbiAgICAgIHNldFZhbHVlSWZOb3ROaWwoY29uZmlnLCAndmVyc2lvbicsIGN1c3RvbUNvbmZpZy52ZXJzaW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcHRpb25zKG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zIHwgbnVsbCkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJvcHRpb25zXCIgbXVzdCBiZSBvYmplY3Qgb3IgbnVsbCcpO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPz8ge307XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgdG9rZW5Db25uZWN0U3RyYXRlZ3koYXBpVG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghYXBpVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWFpbGpldCBBUElfVE9LRU4gaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFwaVRva2VuID0gYXBpVG9rZW47XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgYmFzaWNDb25uZWN0U3RyYXRlZ3koYXBpS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsIGFwaVNlY3JldDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFhcGlLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWFpbGpldCBBUElfS0VZIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghYXBpU2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01haWxqZXQgQVBJX1NFQ1JFVCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIHRoaXMuYXBpS2V5ID0gYXBpS2V5O1xuICAgIHRoaXMuYXBpU2VjcmV0ID0gYXBpU2VjcmV0O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFwaUNvbm5lY3QoYXBpS2V5OiBzdHJpbmcsIGFwaVNlY3JldDogc3RyaW5nLCBwYXJhbXM/OiBDbGllbnRDb25uZWN0UGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGllbnQoeyBhcGlLZXksIGFwaVNlY3JldCwgLi4ucGFyYW1zIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzbXNDb25uZWN0KGFwaVRva2VuOiBzdHJpbmcsIHBhcmFtcz86IENsaWVudENvbm5lY3RQYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsaWVudCh7IGFwaVRva2VuLCAuLi5wYXJhbXMgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbmZpZzogUmVhZG9ubHk8UmVxdWVzdENvbmZpZz4gPSBPYmplY3QuZnJlZXplKHtcbiAgICBob3N0OiAnYXBpLm1haWxqZXQuY29tJyxcbiAgICB2ZXJzaW9uOiAndjMnLFxuICAgIG91dHB1dDogJ2pzb24nLFxuICB9IGFzIGNvbnN0KTtcblxuICBwdWJsaWMgc3RhdGljIHBhY2thZ2VKU09OID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgLi4ucGFja2FnZUpTT04sXG4gIH0gYXMgY29uc3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDbGllbnQ7XG4iLCIvKmV4dGVybmFsIG1vZHVsZXMqL1xuLyp1dGlscyovXG4vKnR5cGVzKi9cbmltcG9ydCBIdHRwTWV0aG9kcyBmcm9tICcuL3JlcXVlc3QvSHR0cE1ldGhvZHMnO1xuLypsaWIqL1xuaW1wb3J0IFJlcXVlc3QgZnJvbSAnLi9yZXF1ZXN0L2luZGV4JztcbmltcG9ydCBDbGllbnQgZnJvbSAnLi9jbGllbnQvaW5kZXgnO1xuLypvdGhlciovXG5cbmNsYXNzIE1haWxqZXQgZXh0ZW5kcyBDbGllbnQge1xuICBzdGF0aWMgUmVxdWVzdCA9IFJlcXVlc3Q7XG4gIHN0YXRpYyBIdHRwTWV0aG9kcyA9IEh0dHBNZXRob2RzO1xuICBzdGF0aWMgQ2xpZW50ID0gQ2xpZW50O1xufVxuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2FwaSc7XG5leHBvcnQgeyBDbGllbnQsIFJlcXVlc3QsIEh0dHBNZXRob2RzIH07XG5leHBvcnQgZGVmYXVsdCBNYWlsamV0O1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG4vKmxpYiovXG4vKm90aGVyKi9cblxuZW51bSBIdHRwTWV0aG9kcyB7XG4gIEdldCA9ICdnZXQnLFxuICBQb3N0ID0gJ3Bvc3QnLFxuICBQdXQgPSAncHV0JyxcbiAgRGVsZXRlID0gJ2RlbGV0ZSdcbn1cblxuZXhwb3J0IGRlZmF1bHQgSHR0cE1ldGhvZHM7XG4iLCIvKmV4dGVybmFsIG1vZHVsZXMqL1xuaW1wb3J0IHVybEpvaW4gZnJvbSAndXJsLWpvaW4nO1xuaW1wb3J0IEpTT05CaWdJbnQgZnJvbSAnanNvbi1iaWdpbnQnO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tICdheGlvcyc7XG4vKnV0aWxzKi9cbmltcG9ydCB7IHNldFZhbHVlSWZOb3ROaWwgfSBmcm9tICcuLi91dGlscy9pbmRleCc7XG4vKnR5cGVzKi9cbmltcG9ydCB7IFRPYmplY3QgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBMaWJyYXJ5UmVzcG9uc2UsIExpYnJhcnlMb2NhbFJlc3BvbnNlIH0gZnJvbSAnLi4vdHlwZXMvYXBpJztcbmltcG9ydCBIdHRwTWV0aG9kcyBmcm9tICcuL0h0dHBNZXRob2RzJztcbmltcG9ydCB7XG4gIFJlcXVlc3RDb25maWcsXG4gIFJlcXVlc3REYXRhLFxuICBSZXF1ZXN0UGFyYW1zLFxuICBSZXF1ZXN0Q29uc3RydWN0b3JDb25maWcsXG4gIFJlcXVlc3RBeGlvc0NvbmZpZyxcbiAgU3ViUGF0aCxcbn0gZnJvbSAnLi9SZXF1ZXN0Jztcbi8qbGliKi9cbmltcG9ydCBDbGllbnQgZnJvbSAnLi4vY2xpZW50Jztcbi8qb3RoZXIqL1xuXG50eXBlIFVua25vd25SZWMgPSBUT2JqZWN0LlVua25vd25SZWNcblxuY29uc3QgSlNPTmIgPSBKU09OQmlnSW50KHsgc3RvcmVBc1N0cmluZzogdHJ1ZSB9KTtcblxuY2xhc3MgUmVxdWVzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50OiBDbGllbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0aG9kOiBIdHRwTWV0aG9kcztcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFBhcnRpYWw8UmVxdWVzdENvbmZpZz47XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IHN0cmluZztcblxuICBwcml2YXRlIHVybDogc3RyaW5nO1xuICBwcml2YXRlIHN1YlBhdGg6IFN1YlBhdGg7XG4gIHByaXZhdGUgYWN0aW9uUGF0aDogc3RyaW5nIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjbGllbnQ6IENsaWVudCxcbiAgICBtZXRob2Q6IEh0dHBNZXRob2RzLFxuICAgIHJlc291cmNlOiBzdHJpbmcsXG4gICAgY29uZmlnPzogUmVxdWVzdENvbnN0cnVjdG9yQ29uZmlnLFxuICApIHtcbiAgICBpZiAoIShjbGllbnQgaW5zdGFuY2VvZiBDbGllbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FyZ3VtZW50IFwiY2xpZW50XCIgbXVzdCBiZSBpbnN0YW5jZSBvZiBDbGllbnQnKTtcbiAgICB9XG5cbiAgICBpZiAoIU9iamVjdC52YWx1ZXMoSHR0cE1ldGhvZHMpLmluY2x1ZGVzKG1ldGhvZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJtZXRob2RcIiBtdXN0IGJlIG9uZSBvZiBzdXBwb3J0ZWQgbWV0aG9kczogZ2V0LCBwb3N0LCBwdXQsIGRlbGV0ZScpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVzb3VyY2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FyZ3VtZW50IFwicmVzb3VyY2VcIiBtdXN0IGJlIHN0cmluZycpO1xuICAgIH1cblxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuXG4gICAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gICAgdGhpcy51cmwgPSByZXNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMucmVzb3VyY2UgPSByZXNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuc3ViUGF0aCA9IHRoaXMuYnVpbGRTdWJQYXRoKCk7XG4gICAgdGhpcy5hY3Rpb25QYXRoID0gbnVsbDtcblxuICAgIHRoaXMuY29uZmlnID0geyAuLi5jb25maWcgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyQWdlbnQoKSB7XG4gICAgcmV0dXJuIGBtYWlsamV0LWFwaS12My1ub2RlanMvJHt0aGlzLmNsaWVudC5nZXRQYWNrYWdlVmVyc2lvbigpfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3JlZGVudGlhbHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwaVRva2VuOiB0aGlzLmNsaWVudC5nZXRBUElUb2tlbigpLFxuICAgICAgYXBpS2V5OiB0aGlzLmNsaWVudC5nZXRBUElLZXkoKSxcbiAgICAgIGFwaVNlY3JldDogdGhpcy5jbGllbnQuZ2V0QVBJU2VjcmV0KCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGVudFR5cGUodXJsOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJ1cmxcIiBtdXN0IGJlIHN0cmluZycpO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwuaW5kZXhPZigndGV4dDpwbGFpbicpID4gLTFcbiAgICAgID8gJ3RleHQvcGxhaW4nXG4gICAgICA6ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVxdWVzdEJvZHkoZGF0YTogUmVxdWVzdERhdGEpIHtcbiAgICByZXR1cm4gW1xuICAgICAgSHR0cE1ldGhvZHMuUHV0LFxuICAgICAgSHR0cE1ldGhvZHMuUG9zdCxcbiAgICAgIEh0dHBNZXRob2RzLkRlbGV0ZSxcbiAgICBdLmluY2x1ZGVzKHRoaXMubWV0aG9kKSA/IGRhdGEgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRnVsbFVybCgpIHtcbiAgICBjb25zdCBjbGllbnRDb25maWcgPSB0aGlzLmNsaWVudC5nZXRDb25maWcoKTtcblxuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmNvbmZpZy5ob3N0ID8/IGNsaWVudENvbmZpZy5ob3N0O1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmNvbmZpZy52ZXJzaW9uID8/IGNsaWVudENvbmZpZy52ZXJzaW9uO1xuXG4gICAgcmV0dXJuIHVybEpvaW4oUmVxdWVzdC5wcm90b2NvbCwgaG9zdCwgdmVyc2lvbiwgdGhpcy5zdWJQYXRoLCB0aGlzLnVybCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3ViUGF0aCgpIHtcbiAgICBpZiAodGhpcy5hY3Rpb25QYXRoKSB7XG4gICAgICBjb25zdCBpc0NvbnRhY3RMaXN0V2l0aENTViA9IHRoaXMucmVzb3VyY2UgPT09ICdjb250YWN0c2xpc3QnICYmIHRoaXMuYWN0aW9uUGF0aCA9PT0gJ2NzdmRhdGEvdGV4dDpwbGFpbic7XG4gICAgICBjb25zdCBpc0JhdGNoSm9iV2l0aENTViA9IHRoaXMucmVzb3VyY2UgPT09ICdiYXRjaGpvYicgJiYgdGhpcy5hY3Rpb25QYXRoID09PSAnY3N2ZXJyb3IvdGV4dDpjc3YnO1xuXG4gICAgICByZXR1cm4gKGlzQ29udGFjdExpc3RXaXRoQ1NWIHx8IGlzQmF0Y2hKb2JXaXRoQ1NWKSA/ICdEQVRBJyA6IHRoaXMuc3ViUGF0aDtcbiAgICB9XG4gICAgY29uc3QgaXNTZW5kUmVzb3VyY2UgPSB0aGlzLnJlc291cmNlID09PSAnc2VuZCc7XG4gICAgY29uc3QgcmVzb3VyY2VDb250YWluU01TID0gdGhpcy5yZXNvdXJjZS5pbmRleE9mKCdzbXMnKSA+IC0xO1xuXG4gICAgcmV0dXJuICghaXNTZW5kUmVzb3VyY2UgJiYgIXJlc291cmNlQ29udGFpblNNUykgPyAnUkVTVCcgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgbWFrZVJlcXVlc3QodXJsOiBzdHJpbmcsIGRhdGE6IFJlcXVlc3REYXRhLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXhpb3MvYXhpb3MjcmVxdWVzdC1jb25maWdcbiAgICBjb25zdCByZXF1ZXN0Q29uZmlnOiBSZXF1ZXN0QXhpb3NDb25maWcgPSB7XG4gICAgICB1cmwsXG4gICAgICBwYXJhbXMsXG4gICAgICBkYXRhOiB0aGlzLmdldFJlcXVlc3RCb2R5KGRhdGEpLFxuICAgICAgbWV0aG9kOiB0aGlzLm1ldGhvZCxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnVXNlci1BZ2VudCc6IHRoaXMuZ2V0VXNlckFnZW50KCksXG4gICAgICAgICdDb250ZW50LVR5cGUnOiB0aGlzLmdldENvbnRlbnRUeXBlKHVybCksXG4gICAgICB9LFxuICAgICAgdHJhbnNmb3JtUmVzcG9uc2UocmVzcG9uc2VEYXRhOiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IGRhdGFJc1N0cmluZyA9IHR5cGVvZiByZXNwb25zZURhdGEgPT09ICdzdHJpbmcnO1xuICAgICAgICBjb25zdCBpc0pTT05SZXF1ZXN0ZWQgPSB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xuXG4gICAgICAgIGlmIChyZXNwb25zZURhdGEgJiYgZGF0YUlzU3RyaW5nICYmIGlzSlNPTlJlcXVlc3RlZCkge1xuICAgICAgICAgIHJldHVybiBSZXF1ZXN0LnBhcnNlVG9KU09OYihyZXNwb25zZURhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIEJST1dTRVIgU0lERVxuICAgIGlmIChSZXF1ZXN0LmlzQnJvd3NlcigpKSB7XG4gICAgICByZXF1ZXN0Q29uZmlnLmhlYWRlcnNbJ1gtVXNlci1BZ2VudCddID0gcmVxdWVzdENvbmZpZy5oZWFkZXJzWydVc2VyLUFnZW50J107XG4gICAgfVxuXG4gICAgLy8gQVVUSFxuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gdGhpcy5nZXRDcmVkZW50aWFscygpO1xuXG4gICAgaWYgKGNyZWRlbnRpYWxzLmFwaVRva2VuKSB7XG4gICAgICByZXF1ZXN0Q29uZmlnLmhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHtjcmVkZW50aWFscy5hcGlUb2tlbn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Q29uZmlnLmF1dGggPSB7XG4gICAgICAgIHVzZXJuYW1lOiBjcmVkZW50aWFscy5hcGlLZXkgYXMgc3RyaW5nLFxuICAgICAgICBwYXNzd29yZDogY3JlZGVudGlhbHMuYXBpU2VjcmV0IGFzIHN0cmluZyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gT1BUSU9OU1xuICAgIGNvbnN0IGNsaWVudENvbmZpZyA9IHRoaXMuY2xpZW50LmdldENvbmZpZygpO1xuICAgIGNvbnN0IGNsaWVudE9wdGlvbnMgPSB0aGlzLmNsaWVudC5nZXRPcHRpb25zKCk7XG5cbiAgICAvLyAxLiBUaW1lb3V0XG4gICAgaWYgKGNsaWVudE9wdGlvbnMudGltZW91dCkge1xuICAgICAgcmVxdWVzdENvbmZpZy50aW1lb3V0ID0gY2xpZW50T3B0aW9ucy50aW1lb3V0O1xuICAgIH1cblxuICAgIC8vIDIuIFByb3h5XG4gICAgaWYgKGNsaWVudE9wdGlvbnMucHJveHkpIHtcbiAgICAgIHJlcXVlc3RDb25maWcucHJveHkgPSBjbGllbnRPcHRpb25zLnByb3h5O1xuICAgIH1cblxuICAgIC8vIDMuIEhlYWRlcnNcbiAgICBpZiAoY2xpZW50T3B0aW9ucy5oZWFkZXJzICYmIE9iamVjdC5rZXlzKGNsaWVudE9wdGlvbnMuaGVhZGVycykubGVuZ3RoID4gMCkge1xuICAgICAgcmVxdWVzdENvbmZpZy5oZWFkZXJzID0ge1xuICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLmhlYWRlcnMsXG4gICAgICAgIC4uLmNsaWVudE9wdGlvbnMuaGVhZGVycyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gNC4gT3V0cHV0XG4gICAgY29uc3Qgb3V0cHV0ID0gdGhpcy5jb25maWcub3V0cHV0ID8/IGNsaWVudENvbmZpZy5vdXRwdXQ7XG4gICAgaWYgKG91dHB1dCkge1xuICAgICAgcmVxdWVzdENvbmZpZy5yZXNwb25zZVR5cGUgPSBvdXRwdXQ7XG4gICAgfVxuXG4gICAgLy8gTk9ERSBTSURFXG4gICAgLy8gNS4gTWF4IHJlcXVlc3QgY29udGVudCBzaXplXG4gICAgaWYgKGNsaWVudE9wdGlvbnMubWF4Qm9keUxlbmd0aCkge1xuICAgICAgcmVxdWVzdENvbmZpZy5tYXhCb2R5TGVuZ3RoID0gY2xpZW50T3B0aW9ucy5tYXhCb2R5TGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIE5PREUgU0lERVxuICAgIC8vIDYuIE1heCByZXNwb25zZSBjb250ZW50IHNpemVcbiAgICBpZiAoY2xpZW50T3B0aW9ucy5tYXhDb250ZW50TGVuZ3RoKSB7XG4gICAgICByZXF1ZXN0Q29uZmlnLm1heENvbnRlbnRMZW5ndGggPSBjbGllbnRPcHRpb25zLm1heENvbnRlbnRMZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF4aW9zKHJlcXVlc3RDb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCYXNlVVJMKGJhc2VVcmw6IHN0cmluZykge1xuICAgIHRoaXMudXJsID0gYmFzZVVybC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGlkKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBpZiAoIVsnc3RyaW5nJywgJ251bWJlciddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJ2YWx1ZVwiIG11c3QgYmUgc3RyaW5nIG9yIG51bWJlcicpO1xuICAgIH1cblxuICAgIHRoaXMudXJsID0gdXJsSm9pbih0aGlzLnVybCwgdmFsdWUudG9TdHJpbmcoKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBcIm5hbWVcIiBtdXN0IGJlIHN0cmluZycpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9uUGF0aCA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIHN3aXRjaCAodGhpcy5hY3Rpb25QYXRoKSB7XG4gICAgICBjYXNlICdjc3ZkYXRhJzoge1xuICAgICAgICB0aGlzLmFjdGlvblBhdGggPSAnY3N2ZGF0YS90ZXh0OnBsYWluJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdjc3ZlcnJvcic6IHtcbiAgICAgICAgdGhpcy5hY3Rpb25QYXRoID0gJ2NzdmVycm9yL3RleHQ6Y3N2JztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudXJsID0gdXJsSm9pbih0aGlzLnVybCwgdGhpcy5hY3Rpb25QYXRoKTtcbiAgICB0aGlzLnN1YlBhdGggPSB0aGlzLmJ1aWxkU3ViUGF0aCgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxCb2R5IGV4dGVuZHMgUmVxdWVzdERhdGE+KFxuICAgIGRhdGE/OiBSZXF1ZXN0RGF0YSxcbiAgICBwYXJhbXM/OiBSZXF1ZXN0UGFyYW1zLFxuICAgIHBlcmZvcm1BUElDYWxsPzogdHJ1ZSxcbiAgKTogUHJvbWlzZTxMaWJyYXJ5UmVzcG9uc2U8Qm9keT4+XG5cbiAgcHVibGljIGFzeW5jIHJlcXVlc3Q8Qm9keSBleHRlbmRzIFJlcXVlc3REYXRhLCBQYXJhbXMgZXh0ZW5kcyBVbmtub3duUmVjPihcbiAgICBkYXRhPzogQm9keSxcbiAgICBwYXJhbXM/OiBQYXJhbXMsXG4gICAgcGVyZm9ybUFQSUNhbGw/OiBmYWxzZSxcbiAgKTogUHJvbWlzZTxMaWJyYXJ5TG9jYWxSZXNwb25zZTxCb2R5LCBQYXJhbXM+PlxuXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0PEJvZHkgZXh0ZW5kcyBSZXF1ZXN0RGF0YSwgUGFyYW1zIGV4dGVuZHMgVW5rbm93blJlYz4oXG4gICAgZGF0YTogUmVxdWVzdERhdGEgfCBCb2R5ID0ge30sXG4gICAgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zIHwgUGFyYW1zID0ge30sXG4gICAgcGVyZm9ybUFQSUNhbGwgPSB0cnVlLFxuICApOiBQcm9taXNlPExpYnJhcnlSZXNwb25zZTxCb2R5PiB8IExpYnJhcnlMb2NhbFJlc3BvbnNlPEJvZHksIFBhcmFtcz4+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkRnVsbFVybCgpO1xuICAgIHRoaXMuc2V0QmFzZVVSTCh0aGlzLnJlc291cmNlKTtcblxuICAgIGlmICghcGVyZm9ybUFQSUNhbGwpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmdldFJlcXVlc3RCb2R5KGRhdGEpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBib2R5LFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHVybCxcbiAgICAgIH0gYXMgTGlicmFyeUxvY2FsUmVzcG9uc2U8Qm9keSwgUGFyYW1zPjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLm1ha2VSZXF1ZXN0KHVybCwgZGF0YSwgcGFyYW1zKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3BvbnNlLFxuICAgICAgICBib2R5OiByZXNwb25zZS5kYXRhLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBBeGlvc0Vycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yOiBhbnkgPSBuZXcgRXJyb3IoKTtcblxuICAgICAgICBlcnJvci5jb2RlID0gZXJyLmNvZGU7XG4gICAgICAgIGVycm9yLmNvbmZpZyA9IGVyci5jb25maWc7XG5cbiAgICAgICAgaWYgKGVyci5yZXNwb25zZSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIHN0YXR1c1RleHQsXG4gICAgICAgICAgICBkYXRhOiBib2R5LFxuICAgICAgICAgIH0gPSBlcnIucmVzcG9uc2U7XG5cbiAgICAgICAgICBlcnJvci5yZXNwb25zZSA9IGVyci5yZXNwb25zZTtcblxuICAgICAgICAgIGVycm9yLnN0YXR1c0NvZGUgPSBzdGF0dXM7XG4gICAgICAgICAgZXJyb3Iuc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQ7XG5cbiAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBib2R5Py5FcnJvck1lc3NhZ2UgPz8gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgZXJyb3Iub3JpZ2luYWxNZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgVW5zdWNjZXNzZnVsOiBTdGF0dXMgQ29kZTogXCIke2Vycm9yLnN0YXR1c0NvZGV9XCIgTWVzc2FnZTogXCIke2Vycm9yTWVzc2FnZX1cImA7XG5cbiAgICAgICAgICBpZiAoYm9keSkge1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9kZXYubWFpbGpldC5jb20vZW1haWwvZ3VpZGVzL3NlbmQtYXBpLXYzMS8jc2VuZC1pbi1idWxrXG4gICAgICAgICAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGJvZHkuTWVzc2FnZXM/LlswXT8uRXJyb3JzPy5bMF0/LkVycm9yTWVzc2FnZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVsbE1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgKz0gYDtcXG4ke2Z1bGxNZXNzYWdlfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHYzLjEgY2FzZVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9kZXYubWFpbGpldC5jb20vZW1haWwvZ3VpZGVzL3NlbmQtYXBpLXYzMS8jc2FuZGJveC1tb2RlXG4gICAgICAgICAgICBzZXRWYWx1ZUlmTm90TmlsKGVycm9yLCAnRXJyb3JNZXNzYWdlJywgYm9keS5FcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgc2V0VmFsdWVJZk5vdE5pbChlcnJvciwgJ0Vycm9yQ29kZScsIGJvZHkuRXJyb3JDb2RlKTtcbiAgICAgICAgICAgIHNldFZhbHVlSWZOb3ROaWwoZXJyb3IsICdFcnJvcklkZW50aWZpZXInLCBib2R5LkVycm9ySWRlbnRpZmllcik7XG4gICAgICAgICAgICBzZXRWYWx1ZUlmTm90TmlsKGVycm9yLCAnRXJyb3JSZWxhdGVkVG8nLCBib2R5LkVycm9yUmVsYXRlZFRvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3IucmVzcG9uc2UgPSBudWxsO1xuXG4gICAgICAgICAgZXJyb3Iuc3RhdHVzQ29kZSA9IG51bGw7XG4gICAgICAgICAgZXJyb3Iuc3RhdHVzVGV4dCA9IG51bGw7XG5cbiAgICAgICAgICBlcnJvci5vcmlnaW5hbE1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICBlcnJvci5tZXNzYWdlID0gYFVuc3VjY2Vzc2Z1bDogRXJyb3IgQ29kZTogXCIke2Vycm9yLmNvZGV9XCIgTWVzc2FnZTogXCIke2Vyci5tZXNzYWdlfVwiYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwcm90b2NvbCA9ICdodHRwczovLycgYXMgY29uc3Q7XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZVRvSlNPTmIodGV4dDogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBcInRleHRcIiBtdXN0IGJlIHN0cmluZycpO1xuICAgIH1cblxuICAgIGxldCBib2R5O1xuICAgIHRyeSB7XG4gICAgICBib2R5ID0gSlNPTmIucGFyc2UodGV4dCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYm9keSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0Jyb3dzZXIoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVlc3Q7XG4iLCJpbXBvcnQgeyBDb21tb24gfSBmcm9tICcuL0NvbW1vbic7XG5cbmV4cG9ydCBuYW1lc3BhY2UgRHJhZnRDYW1wYWlnbiB7XG4gIGV4cG9ydCBlbnVtIEVkaXRNb2RlIHtcbiAgICBUb29sMiA9ICd0b29sMicsXG4gICAgSFRNTDIgPSAnaHRtbDInLFxuICAgIE1KTUwgPSAnbWptbCdcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIENhbXBhaWduRHJhZnRTdGF0dXMge1xuICAgIEFYQ2FuY2VsZWQgPSAtMyxcbiAgICBEZWxldGVkID0gLTIsXG4gICAgQXJjaGl2ZWQgPSAtMSxcbiAgICBEcmFmdCA9IDAsXG4gICAgUHJvZ3JhbW1lZCA9IDEsXG4gICAgU2VudCA9IDIsXG4gICAgQVhUZXN0ZWQgPSAzLFxuICAgIEFYU2VsZWN0ZWQgPSA0XG4gIH1cblxuICBleHBvcnQgZW51bSBDYW1wYWlnbkRyYWZ0U2VuZGluZ1N0YXR1cyB7XG4gICAgQVhDYW5jZWxsZWQgPSAnQVhDYW5jZWxsZWQnLFxuICAgIERlbGV0ZWQgPSAnRGVsZXRlZCcsXG4gICAgQXJjaGl2ZWQgPSAnQXJjaGl2ZWQnLFxuICAgIERyYWZ0ID0gJ0RyYWZ0JyxcbiAgICBQcm9ncmFtbWVkID0gJ1Byb2dyYW1tZWQnLFxuICAgIFNlbnQgPSAnU2VudCcsXG4gICAgQVhUZXN0ZWQgPSAnQVhUZXN0ZWQnLFxuICAgIEFYU2VsZWN0ZWQgPSAnQVhTZWxlY3RlZCdcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUmVjaXBpZW50IHtcbiAgICBFbWFpbDogc3RyaW5nO1xuICAgIE5hbWU/OiBzdHJpbmdcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ2FtcGFpZ25EcmFmdDxBWFRlc3RpbmcgPSBDb21tb24uVW5rbm93blJlYz4ge1xuICAgIElEOiBudW1iZXI7XG4gICAgQVhGcmFjdGlvbjogbnVtYmVyO1xuICAgIEFYRnJhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgQVhUZXN0aW5nOiBBWFRlc3Rpbmc7XG4gICAgQ3VycmVudDogbnVtYmVyO1xuICAgIEVkaXRNb2RlOiBFZGl0TW9kZTtcbiAgICBJc1N0YXJyZWQ6IGJvb2xlYW47XG4gICAgSXNUZXh0UGFydEluY2x1ZGVkOiBib29sZWFuO1xuICAgIFJlcGx5RW1haWw6IHN0cmluZztcbiAgICBTZW5kZXJOYW1lOiBzdHJpbmc7XG4gICAgVGVtcGxhdGVJRDogbnVtYmVyO1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgQ2FtcGFpZ25JRDogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdElEOiBudW1iZXI7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgRGVsaXZlcmVkQXQ6IHN0cmluZztcbiAgICBMb2NhbGU6IHN0cmluZztcbiAgICBNb2RpZmllZEF0OiBzdHJpbmc7XG4gICAgUHJlc2V0OiBzdHJpbmc7XG4gICAgU2VnbWVudGF0aW9uSUQ6IG51bWJlcjtcbiAgICBTZW5kZXI6IHN0cmluZztcbiAgICBTZW5kZXJFbWFpbDogc3RyaW5nO1xuICAgIFN0YXR1czogQ2FtcGFpZ25EcmFmdFN0YXR1cztcbiAgICBTdWJqZWN0OiBzdHJpbmc7XG4gICAgVXJsOiBzdHJpbmc7XG4gICAgVXNlZDogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ2FtcGFpZ25EcmFmdERldGFpbENvbnRlbnQ8SGVhZGVycyA9IENvbW1vbi5Vbmtub3duUmVjPiB7XG4gICAgSGVhZGVyczogSGVhZGVycztcbiAgICAnSHRtbC1wYXJ0Jzogc3RyaW5nO1xuICAgICdUZXh0LXBhcnQnOiBzdHJpbmc7XG4gICAgTUpNTENvbnRlbnQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ2FtcGFpZ25EcmFmdFNjaGVkdWxlIHtcbiAgICBEYXRlOiBzdHJpbmc7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdENhbXBhaWduRHJhZnRCb2R5PEFYVGVzdGluZyA9IENvbW1vbi5Vbmtub3duUmVjPiA9IHtcbiAgICBMb2NhbGU6IHN0cmluZztcbiAgICBTdWJqZWN0OiBzdHJpbmc7XG5cbiAgICBBWEZyYWN0aW9uPzogbnVtYmVyO1xuICAgIEFYRnJhY3Rpb25OYW1lPzogc3RyaW5nO1xuICAgIEFYVGVzdGluZz86IEFYVGVzdGluZztcbiAgICBDdXJyZW50PzogbnVtYmVyO1xuICAgIEVkaXRNb2RlPzogRWRpdE1vZGU7XG4gICAgSXNTdGFycmVkPzogYm9vbGVhbjtcbiAgICBJc1RleHRQYXJ0SW5jbHVkZWQ/OiBib29sZWFuO1xuICAgIFJlcGx5RW1haWw/OiBzdHJpbmc7XG4gICAgU2VuZGVyTmFtZT86IHN0cmluZztcbiAgICBUZW1wbGF0ZUlEPzogbnVtYmVyO1xuICAgIFRpdGxlPzogc3RyaW5nO1xuICAgIENvbnRhY3RzTGlzdElEPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdEFsdD86IHN0cmluZztcbiAgICBTZWdtZW50YXRpb25JRD86IG51bWJlcjtcbiAgICBTZWdtZW50YXRpb25BbHQ/OiBzdHJpbmc7XG4gICAgU2VuZGVyPzogc3RyaW5nO1xuICAgIFNlbmRlckVtYWlsPzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0Q2FtcGFpZ25EcmFmdEJvZHk8QVhUZXN0aW5nID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICBPbWl0PFBhcnRpYWw8UG9zdENhbXBhaWduRHJhZnRCb2R5PEFYVGVzdGluZz4+LCAnQ29udGFjdHNMaXN0QWx0Jz4gJlxuICB7XG4gICAgU3RhdHVzPzogQ2FtcGFpZ25EcmFmdFN0YXR1c1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgR2V0Q2FtcGFpZ25EcmFmdFF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgQVhUZXN0aW5nPzogbnVtYmVyO1xuICAgIENhbXBhaWduPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdD86IG51bWJlcjtcbiAgICBEZWxpdmVyZWRBdD86IHN0cmluZztcbiAgICBFZGl0TW9kZT86IEVkaXRNb2RlO1xuICAgIElzQXJjaGl2ZWQ/OiBib29sZWFuO1xuICAgIElzQ2FtcGFpZ24/OiBib29sZWFuO1xuICAgIElzRGVsZXRlZD86IGJvb2xlYW47XG4gICAgSXNIYW5kbGVkPzogYm9vbGVhbjtcbiAgICBJc1N0YXJyZWQ/OiBib29sZWFuO1xuICAgIE1vZGlmaWVkPzogYm9vbGVhbjtcbiAgICBOZXdzTGV0dGVyVGVtcGxhdGU/OiBudW1iZXI7XG4gICAgU3RhdHVzPzogQ2FtcGFpZ25EcmFmdFN0YXR1cztcbiAgICBTdWJqZWN0Pzogc3RyaW5nO1xuICAgIFRlbXBsYXRlPzogbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENhbXBhaWduRHJhZnREZXRhaWxDb250ZW50Qm9keTxIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICBQYXJ0aWFsPENhbXBhaWduRHJhZnREZXRhaWxDb250ZW50PEhlYWRlcnM+PlxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0U2NoZWR1bGVCb2R5ID0ge1xuICAgIERhdGU6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFB1dENhbXBhaWduRHJhZnRTY2hlZHVsZUJvZHkgPSBQYXJ0aWFsPFBvc3RDYW1wYWlnbkRyYWZ0U2NoZWR1bGVCb2R5PlxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0VGVzdEJvZHkgPSB7XG4gICAgUmVjaXBpZW50czogUmVjaXBpZW50W11cbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBDYW1wYWlnbkRyYWZ0UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8Q2FtcGFpZ25EcmFmdFtdPjtcbiAgdHlwZSBDYW1wYWlnbkRyYWZ0U2NoZWR1bGVSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDYW1wYWlnbkRyYWZ0U2NoZWR1bGVbXT47XG4gIHR5cGUgQ2FtcGFpZ25EcmFmdERldGFpbENvbnRlbnRSZXNwb25zZTxIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICBDb21tb24uUmVzcG9uc2U8QXJyYXk8Q2FtcGFpZ25EcmFmdERldGFpbENvbnRlbnQ8SGVhZGVycz4+PjtcbiAgdHlwZSBDYW1wYWlnbkRyYWZ0U3RhdHVzUmVzcG9uc2UgPVxuICAgIENvbW1vbi5SZXNwb25zZTxBcnJheTx7IFN0YXR1czogQ2FtcGFpZ25EcmFmdFNlbmRpbmdTdGF0dXMgfT4+O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0UmVzcG9uc2UgPSBDYW1wYWlnbkRyYWZ0UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0Q2FtcGFpZ25EcmFmdFJlc3BvbnNlID0gQ2FtcGFpZ25EcmFmdFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENhbXBhaWduRHJhZnRSZXNwb25zZSA9IENhbXBhaWduRHJhZnRSZXNwb25zZVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0U2NoZWR1bGVSZXNwb25zZSA9IENhbXBhaWduRHJhZnRTY2hlZHVsZVJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFB1dENhbXBhaWduRHJhZnRTY2hlZHVsZVJlc3BvbnNlID0gQ2FtcGFpZ25EcmFmdFNjaGVkdWxlUmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0Q2FtcGFpZ25EcmFmdFNjaGVkdWxlUmVzcG9uc2UgPSBDYW1wYWlnbkRyYWZ0U2NoZWR1bGVSZXNwb25zZVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0RGV0YWlsQ29udGVudFJlc3BvbnNlPEhlYWRlcnMgPSBDb21tb24uVW5rbm93blJlYz4gPVxuICAgIENhbXBhaWduRHJhZnREZXRhaWxDb250ZW50UmVzcG9uc2U8SGVhZGVycz5cbiAgZXhwb3J0IHR5cGUgR2V0Q2FtcGFpZ25EcmFmdERldGFpbENvbnRlbnRSZXNwb25zZTxIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICBDYW1wYWlnbkRyYWZ0RGV0YWlsQ29udGVudFJlc3BvbnNlPEhlYWRlcnM+XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENhbXBhaWduRHJhZnRTZW5kID0gQ2FtcGFpZ25EcmFmdFN0YXR1c1Jlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0VGVzdCA9IENhbXBhaWduRHJhZnRTdGF0dXNSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRDYW1wYWlnbkRyYWZ0U3RhdHVzID0gQ2FtcGFpZ25EcmFmdFN0YXR1c1Jlc3BvbnNlXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgU2VudENhbXBhaWduIHtcbiAgZXhwb3J0IGVudW0gQ2FtcGFpZ25UeXBlIHtcbiAgICBUcmFuc2FjdGlvbmFsID0gMSxcbiAgICBNYXJrZXRpbmcgPSAyLFxuICAgIFVua25vd24gPSAzLFxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDYW1wYWlnbiB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJc0RlbGV0ZWQ6IGJvb2xlYW47XG4gICAgSXNTdGFycmVkOiBib29sZWFuO1xuICAgIENhbXBhaWduVHlwZTogQ2FtcGFpZ25UeXBlO1xuICAgIENyZWF0ZWRBdDogc3RyaW5nO1xuICAgIEN1c3RvbVZhbHVlOiBzdHJpbmc7XG4gICAgRmlyc3RNZXNzYWdlSUQ6IG51bWJlcjtcbiAgICBGcm9tRW1haWw6IHN0cmluZztcbiAgICBGcm9tSUQ6IG51bWJlcjtcbiAgICBGcm9tTmFtZTogc3RyaW5nO1xuICAgIEhhc0h0bWxDb3VudDogbnVtYmVyO1xuICAgIEhhc1R4dENvdW50OiBudW1iZXI7XG4gICAgTGlzdElEOiBudW1iZXI7XG4gICAgTmV3c0xldHRlcklEOiBudW1iZXI7XG4gICAgU2VnbWVudGF0aW9uSUQ6IG51bWJlcjtcbiAgICBTZW5kRW5kQXQ6IHN0cmluZztcbiAgICBTZW5kU3RhcnRBdDogc3RyaW5nO1xuICAgIFNwYW1hc3NTY29yZTogbnVtYmVyO1xuICAgIFN1YmplY3Q6IHN0cmluZztcbiAgICBXb3JrZmxvd0lEOiBudW1iZXI7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUHV0Q2FtcGFpZ25Cb2R5ID0ge1xuICAgIElzRGVsZXRlZD86IGJvb2xlYW47XG4gICAgSXNTdGFycmVkPzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENhbXBhaWduUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5UaW1lc3RhbXBQZXJpb2Q+ICZcbiAgICBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmXG4gIHtcbiAgICBDYW1wYWlnbklEPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdElEPzogbnVtYmVyO1xuICAgIEN1c3RvbUNhbXBhaWduPzogc3RyaW5nO1xuICAgIEZyb20/OiBzdHJpbmc7XG4gICAgRnJvbURvbWFpbj86IHN0cmluZztcbiAgICBGcm9tSUQ/OiBudW1iZXI7XG4gICAgRnJvbVR5cGU/OiBDYW1wYWlnblR5cGU7XG4gICAgSXNEZWxldGVkPzogYm9vbGVhbjtcbiAgICBJc05ld3NsZXR0ZXJUb29sPzogYm9vbGVhbjtcbiAgICBJc1N0YXJyZWQ/OiBib29sZWFuO1xuICAgIFBlcmlvZD86IENvbW1vbi5QZXJpb2Q7XG4gICAgV29ya2Zsb3dJRD86IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBDYW1wYWlnblJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENhbXBhaWduW10+O1xuXG4gIGV4cG9ydCB0eXBlIFB1dENhbXBhaWduUmVzcG9uc2UgPSBDYW1wYWlnblJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENhbXBhaWduUmVzcG9uc2UgPSBDYW1wYWlnblJlc3BvbnNlXG59XG4iLCJleHBvcnQgbmFtZXNwYWNlIENvbW1vbiB7XG4gIGV4cG9ydCB0eXBlIFVua25vd25SZWMgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbiB7XG4gICAgY291bnRPbmx5OiBib29sZWFuO1xuXG4gICAgTGltaXQ6IG51bWJlcjtcbiAgICBPZmZzZXQ6IG51bWJlcjtcbiAgICBTb3J0OiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFRpbWVzdGFtcFBlcmlvZCB7XG4gICAgRnJvbVRTOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgVG9UUzogc3RyaW5nIHwgbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUmVzcG9uc2U8RW50aXR5PiA9IHtcbiAgICBDb3VudDogbnVtYmVyO1xuICAgIFRvdGFsOiBudW1iZXI7XG4gICAgRGF0YTogRW50aXR5O1xuICB9XG5cbiAgZXhwb3J0IGVudW0gUGVyaW9kIHtcbiAgICBEYXkgPSAnRGF5JyxcbiAgICBXZWVrID0gJ1dlZWsnLFxuICAgIE1vbnRoID0gJ01vbnRoJyxcbiAgICBZZWFyID0gJ1llYXInLFxuICB9XG59XG4iLCJpbXBvcnQgeyBDb21tb24gfSBmcm9tICcuL0NvbW1vbic7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29udGFjdCB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdCB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJc0V4Y2x1ZGVkRnJvbUNhbXBhaWduczogYm9vbGVhbjtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgRGVsaXZlcmVkQ291bnQ6IG51bWJlcjtcbiAgICBFbWFpbDogc3RyaW5nO1xuICAgIEV4Y2x1c2lvbkZyb21DYW1wYWlnbnNVcGRhdGVkQXQ6IHN0cmluZztcbiAgICBJc09wdEluUGVuZGluZzogYm9vbGVhbjtcbiAgICBJc1NwYW1Db21wbGFpbmluZzogYm9vbGVhbjtcbiAgICBMYXN0QWN0aXZpdHlBdDogc3RyaW5nO1xuICAgIExhc3RVcGRhdGVBdDogc3RyaW5nO1xuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0Qm9keSA9IHtcbiAgICBFbWFpbDogc3RyaW5nO1xuICAgIElzRXhjbHVkZWRGcm9tQ2FtcGFpZ25zPzogYm9vbGVhbjtcbiAgICBOYW1lPzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdEJvZHkgPSBPbWl0PFBvc3RDb250YWN0Qm9keSwgJ0VtYWlsJz5cblxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0UXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBDYW1wYWlnbj86IG51bWJlcjtcbiAgICBDb250YWN0c0xpc3Q/OiBudW1iZXI7XG4gICAgSXNFeGNsdWRlZEZyb21DYW1wYWlnbnM/OiBib29sZWFuO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIENvbnRhY3RSZXNwb25zZSA9IHtcbiAgICBDb3VudDogbnVtYmVyO1xuICAgIFRvdGFsOiBudW1iZXI7XG4gICAgRGF0YTogQ29udGFjdFtdO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0UmVzcG9uc2UgPSBDb250YWN0UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdFJlc3BvbnNlID0gQ29udGFjdFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RSZXNwb25zZSA9IENvbnRhY3RSZXNwb25zZVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIENvbnRhY3RMaXN0IHtcbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0TGlzdCB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJc0RlbGV0ZWQ6IGJvb2xlYW47XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIEFkZHJlc3M6IHN0cmluZztcbiAgICBDcmVhdGVkQXQ6IHN0cmluZztcbiAgICBTdWJzY3JpYmVyQ291bnQ6IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdExpc3RCb2R5ID0ge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBJc0RlbGV0ZWQ/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdExpc3RCb2R5ID0gUGFydGlhbDxQb3N0Q29udGFjdExpc3RCb2R5PlxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RMaXN0UXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBBZGRyZXNzPzogc3RyaW5nO1xuICAgIEV4Y2x1ZGVJRD86IG51bWJlcjtcbiAgICBJc0RlbGV0ZWQ/OiBib29sZWFuO1xuICAgIE5hbWU/OiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVNQT05TRSBQQVJUXG4gIHR5cGUgQ29udGFjdExpc3RSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDb250YWN0TGlzdFtdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdExpc3RSZXNwb25zZSA9IENvbnRhY3RMaXN0UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdExpc3RSZXNwb25zZSA9IENvbnRhY3RMaXN0UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdExpc3RSZXNwb25zZSA9IENvbnRhY3RMaXN0UmVzcG9uc2Vcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBCdWxrQ29udGFjdE1hbmFnZW1lbnQge1xuICBleHBvcnQgZW51bSBNYW5hZ2VDb250YWN0c0FjdGlvbiB7XG4gICAgQWRkRm9yY2UgPSAnYWRkZm9yY2UnLFxuICAgIEFkZE5vRm9yY2UgPSAnYWRkbm9mb3JjZScsXG4gICAgUmVtb3ZlID0gJ3JlbW92ZScsXG4gICAgVW5TdWIgPSAndW5zdWInXG4gIH1cblxuICBleHBvcnQgZW51bSBJbXBvcnRMaXN0QWN0aW9uIHtcbiAgICBBZGRGb3JjZSA9ICdhZGRmb3JjZScsXG4gICAgQWRkTm9Gb3JjZSA9ICdhZGRub2ZvcmNlJyxcbiAgICBVblN1YiA9ICd1bnN1YicsXG4gICAgRHVwbGljYXRlT3ZlcnJpZGUgPSAnZHVwbGljYXRlLW92ZXJyaWRlJyxcbiAgICBEdXBsaWNhdGVOb092ZXJyaWRlID0gJ2R1cGxpY2F0ZS1uby1vdmVycmlkZSdcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEltcG9ydENTVk1ldGhvZCB7XG4gICAgQWRkRm9yY2UgPSAnYWRkZm9yY2UnLFxuICAgIEFkZE5vRm9yY2UgPSAnYWRkbm9mb3JjZScsXG4gICAgUmVtb3ZlID0gJ3JlbW92ZScsXG4gICAgVW5TdWIgPSAndW5zdWInLFxuICAgIEV4Y2x1ZGVNYXJrZXRpbmcgPSAnZXhjbHVkZW1hcmtldGluZycsXG4gICAgSW5jbHVkZU1hcmtldGluZyA9ICdpbmNsdWRlbWFya2V0aW5nJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gQ1NWSW1wb3J0U3RhdHVzIHtcbiAgICBVcGxvYWQgPSAnVXBsb2FkJyxcbiAgICBDb21wbGV0ZWQgPSAnQ29tcGxldGVkJyxcbiAgICBBYm9ydCA9ICdBYm9ydCcsXG4gIH1cblxuICBleHBvcnQgZW51bSBKb2JTdGF0dXMge1xuICAgIENvbXBsZXRlZCA9ICdDb21wbGV0ZWQnLFxuICAgIEluUHJvZ3Jlc3MgPSAnSW4gUHJvZ3Jlc3MnLFxuICAgIEVycm9yID0gJ0Vycm9yJ1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBKb2Ige1xuICAgIEpvYklEOiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENTVkltcG9ydCB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBFcnJUcmVzaG9sZDogbnVtYmVyO1xuICAgIEltcG9ydE9wdGlvbnM6IHN0cmluZztcbiAgICBNZXRob2Q6IEltcG9ydENTVk1ldGhvZDtcbiAgICBBbGl2ZUF0OiBzdHJpbmc7XG4gICAgQ29udGFjdHNMaXN0SUQ6IG51bWJlcjtcbiAgICBDb3VudDogbnVtYmVyO1xuICAgIEN1cnJlbnQ6IG51bWJlcjtcbiAgICBEYXRhSUQ6IG51bWJlcjtcbiAgICBFcnJjb3VudDogbnVtYmVyO1xuICAgIEpvYkVuZDogc3RyaW5nO1xuICAgIEpvYlN0YXJ0OiBzdHJpbmc7XG4gICAgUmVxdWVzdEF0OiBzdHJpbmc7XG4gICAgU3RhdHVzOiBDU1ZJbXBvcnRTdGF0dXM7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENvbnRhY3RMaXN0IHtcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgICBBY3Rpb246IE1hbmFnZUNvbnRhY3RzQWN0aW9uO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0TWFuYWdlTWFueUNvbnRhY3RzIHtcbiAgICBDb250YWN0c0xpc3RzOiBDb250YWN0TGlzdFtdO1xuICAgIENvdW50OiBudW1iZXI7XG4gICAgRXJyb3I6IHN0cmluZztcbiAgICBFcnJvckZpbGU6IHN0cmluZztcbiAgICBKb2JFbmQ6IHN0cmluZztcbiAgICBKb2JTdGFydDogc3RyaW5nO1xuICAgIFN0YXR1czogSm9iU3RhdHVzO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0c0xpc3RJbXBvcnRMaXN0IHtcbiAgICBKb2JJRDogbnVtYmVyO1xuICAgIEFjdGlvbjogSW1wb3J0TGlzdEFjdGlvbjtcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBDb250YWN0Qm9keTxQcm9wZXJ0aWVzID0gQ29tbW9uLlVua25vd25SZWM+ID0ge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgTmFtZT86IHN0cmluZztcbiAgICBJc0V4Y2x1ZGVkRnJvbUNhbXBhaWducz86IGJvb2xlYW47XG4gICAgUHJvcGVydGllcz86IFByb3BlcnRpZXM7XG4gIH1cblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdE1hbmFnZU1hbnlDb250YWN0c0JvZHk8UHJvcGVydGllcyA9IENvbW1vbi5Vbmtub3duUmVjPiA9IHtcbiAgICBDb250YWN0czogQXJyYXk8Q29udGFjdEJvZHk8UHJvcGVydGllcz4+O1xuICAgIENvbnRhY3RzTGlzdHM/OiBDb250YWN0TGlzdFtdO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENvbnRhY3RzTGlzdEltcG9ydExpc3RCb2R5ID0ge1xuICAgIEFjdGlvbjogSW1wb3J0TGlzdEFjdGlvbjtcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0c0xpc3RNYW5hZ2VNYW55Q29udGFjdHNCb2R5PFByb3BlcnRpZXMgPSBDb21tb24uVW5rbm93blJlYz4gPSB7XG4gICAgQWN0aW9uOiBNYW5hZ2VDb250YWN0c0FjdGlvbjtcbiAgICBDb250YWN0czogQXJyYXk8Q29udGFjdEJvZHk8UHJvcGVydGllcz4+O1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENTVkltcG9ydEJvZHkgPSB7XG4gICAgQ29udGFjdHNMaXN0SUQ6IG51bWJlcjtcbiAgICBEYXRhSUQ6IG51bWJlcjtcbiAgICBFcnJUcmVzaG9sZD86IG51bWJlcjtcbiAgICBJbXBvcnRPcHRpb25zPzogc3RyaW5nO1xuICAgIE1ldGhvZD86IEltcG9ydENTVk1ldGhvZDtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFB1dENTVkltcG9ydEJvZHkgPSBQYXJ0aWFsPFBvc3RDU1ZJbXBvcnRCb2R5PiAmIHtcbiAgICBTdGF0dXM/OiBDU1ZJbXBvcnRTdGF0dXM7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRDU1ZJbXBvcnRRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIEpvYlJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPEpvYltdPjtcbiAgdHlwZSBDU1ZJbXBvcnRSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDU1ZJbXBvcnRbXT47XG4gIHR5cGUgQ29udGFjdE1hbmFnZU1hbnlDb250YWN0c1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNbXT47XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZSA9IEpvYlJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZSA9IENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0c0xpc3RJbXBvcnRMaXN0UmVzcG9uc2UgPSBKb2JSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0c0xpc3RJbXBvcnRMaXN0UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8Q29udGFjdHNMaXN0SW1wb3J0TGlzdFtdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdHNMaXN0TWFuYWdlTWFueUNvbnRhY3RzUmVzcG9uc2UgPSBKb2JSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0c0xpc3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZSA9IENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZTtcblxuICBleHBvcnQgdHlwZSBQb3N0Q1NWSW1wb3J0UmVzcG9uc2UgPSBDU1ZJbXBvcnRSZXNwb25zZVxuICBleHBvcnQgdHlwZSBQdXRDU1ZJbXBvcnRSZXNwb25zZSA9IENTVkltcG9ydFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENTVkltcG9ydFJlc3BvbnNlID0gQ1NWSW1wb3J0UmVzcG9uc2Vcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBDb250YWN0UHJvcGVydGllcyB7XG4gIGV4cG9ydCBlbnVtIERhdGFUeXBlIHtcbiAgICBTdHIgPSAnc3RyJyxcbiAgICBJbnQgPSAnaW50JyxcbiAgICBGbG9hdCA9ICdmbG9hdCcsXG4gICAgQm9vbCA9ICdib29sJyxcbiAgICBEYXRlVGltZSA9ICdkYXRldGltZSdcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIE5hbWVTcGFjZSB7XG4gICAgU3RhdGljID0gJ3N0YXRpYycsXG4gICAgSGlzdG9yaWMgPSAnaGlzdG9yaWMnXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENvbnRhY3RQcm9wZXJ0eSB7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIFZhbHVlOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENvbnRhY3REYXRhIHtcbiAgICBJRDogbnVtYmVyO1xuICAgIENvbnRhY3RJRDogbnVtYmVyO1xuICAgIERhdGE6IENvbnRhY3RQcm9wZXJ0eVtdO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0TWV0YURhdGEge1xuICAgIElEOiBudW1iZXI7XG4gICAgRGF0YXR5cGU6IERhdGFUeXBlO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBOYW1lU3BhY2U6IE5hbWVTcGFjZTtcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdE1ldGFEYXRhQm9keSA9IHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgRGF0YXR5cGU/OiBEYXRhVHlwZTtcbiAgICBOYW1lU3BhY2U/OiBOYW1lU3BhY2U7XG4gIH1cblxuICBleHBvcnQgdHlwZSBQdXRDb250YWN0TWV0YURhdGFCb2R5ID0ge1xuICAgIE5hbWU/OiBzdHJpbmc7XG4gICAgRGF0YXR5cGU/OiBEYXRhVHlwZTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RNZXRhRGF0YVF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgRGF0YVR5cGU/OiBEYXRhVHlwZVxuICAgIE5hbWVzcGFjZT86IE5hbWVTcGFjZTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFB1dENvbnRhY3REYXRhQm9keSA9IHtcbiAgICBEYXRhOiBDb250YWN0UHJvcGVydHlbXTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3REYXRhUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBDYW1wYWlnbj86IG51bWJlcjtcbiAgICBDb250YWN0RW1haWw/OiBzdHJpbmc7XG4gICAgQ29udGFjdHNMaXN0PzogbnVtYmVyO1xuICAgIEZpZWxkcz86IHN0cmluZztcbiAgICBMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBDb250YWN0RGF0YVJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENvbnRhY3REYXRhW10+O1xuICB0eXBlIENvbnRhY3RNZXRhRGF0YVJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENvbnRhY3RNZXRhRGF0YVtdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdE1ldGFEYXRhUmVzcG9uc2UgPSBDb250YWN0TWV0YURhdGFSZXNwb25zZTtcbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdE1ldGFEYXRhUmVzcG9uc2UgPSBDb250YWN0TWV0YURhdGFSZXNwb25zZTtcbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdE1ldGFEYXRhUmVzcG9uc2UgPSBDb250YWN0TWV0YURhdGFSZXNwb25zZTtcblxuICBleHBvcnQgdHlwZSBQdXRDb250YWN0RGF0YVJlc3BvbnNlID0gQ29udGFjdERhdGFSZXNwb25zZTtcbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdERhdGFSZXNwb25zZSA9IENvbnRhY3REYXRhUmVzcG9uc2U7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29udGFjdFN1YnNjcmlwdGlvbiB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlQ29udGFjdHM8UHJvcGVydGllcyA9IENvbW1vbi5Vbmtub3duUmVjPiB7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBBY3Rpb246IEJ1bGtDb250YWN0TWFuYWdlbWVudC5NYW5hZ2VDb250YWN0c0FjdGlvbjtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgUHJvcGVydGllczogUHJvcGVydGllcztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTGlzdFJlY2lwaWVudCB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJc1Vuc3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgICBDb250YWN0SUQ6IG51bWJlcjtcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgICBMaXN0TmFtZTogc3RyaW5nO1xuICAgIFN1YnNjcmliZWRBdDogc3RyaW5nO1xuICAgIFVuc3Vic2NyaWJlZEF0OiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENvbnRhY3RzTGlzdCB7XG4gICAgTGlzdElEOiBudW1iZXI7XG4gICAgSXNVbnN1YjogYm9vbGVhbjtcbiAgICBTdWJzY3JpYmVkQXQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdHNMaXN0U2lnbnVwIHtcbiAgICBJRDogbnVtYmVyO1xuICAgIENvbmZpcm1BdDogbnVtYmVyO1xuICAgIENvbmZpcm1JcDogc3RyaW5nO1xuICAgIENvbnRhY3RJRDogbnVtYmVyO1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgTGlzdElEOiBudW1iZXI7XG4gICAgU2lnbnVwQXQ6IG51bWJlcjtcbiAgICBTaWdudXBJcDogc3RyaW5nO1xuICAgIFNpZ251cEtleTogc3RyaW5nO1xuICAgIFNvdXJjZUlkOiBudW1iZXI7XG4gICAgU291cmNlOiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdENvbnRhY3RNYW5hZ2VDb250YWN0c0xpc3RzQm9keSA9IHtcbiAgICBDb250YWN0c0xpc3RzOiBCdWxrQ29udGFjdE1hbmFnZW1lbnQuQ29udGFjdExpc3RbXTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0c0xpc3RNYW5hZ2VDb250YWN0Qm9keTxQcm9wZXJ0aWVzID0gQ29tbW9uLlVua25vd25SZWM+ID0ge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgQWN0aW9uOiBCdWxrQ29udGFjdE1hbmFnZW1lbnQuTWFuYWdlQ29udGFjdHNBY3Rpb247XG4gICAgTmFtZT86IHN0cmluZztcbiAgICBQcm9wZXJ0aWVzPzogUHJvcGVydGllcztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RMaXN0UmVjaXBpZW50Qm9keSA9IHtcbiAgICBJc1Vuc3Vic2NyaWJlZD86IGJvb2xlYW47XG4gICAgQ29udGFjdElEOiBudW1iZXI7XG4gICAgQ29udGFjdEFsdD86IHN0cmluZztcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgICBMaXN0QWx0Pzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0TGlzdFJlY2lwaWVudEJvZHkgPSB7XG4gICAgSXNVbnN1YnNjcmliZWQ/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgR2V0TGlzdFJlY2lwaWVudFF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgQmxvY2tlZD86IGJvb2xlYW47XG4gICAgQ29udGFjdD86IG51bWJlcjtcbiAgICBDb250YWN0RW1haWw/OiBzdHJpbmc7XG4gICAgQ29udGFjdHNMaXN0PzogbnVtYmVyO1xuICAgIElnbm9yZURlbGV0ZWQ/OiBib29sZWFuO1xuICAgIElzRXhjbHVkZWRGcm9tQ2FtcGFpZ25zPzogYm9vbGVhbjtcbiAgICBMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBMaXN0TmFtZT86IHN0cmluZztcbiAgICBPcGVuZWQ/OiBib29sZWFuO1xuICAgIFVuc3ViPzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RzTGlzdFNpZ251cFF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgQ29udGFjdD86IG51bWJlcjtcbiAgICBDb250YWN0c0xpc3Q/OiBudW1iZXI7XG4gICAgRG9tYWluPzogc3RyaW5nO1xuICAgIEVtYWlsPzogc3RyaW5nO1xuICAgIExvY2FsUGFydD86IHN0cmluZztcbiAgICBNYXhDb25maXJtQXQ/OiBudW1iZXI7XG4gICAgTWluQ29uZmlybUF0PzogbnVtYmVyO1xuICAgIE1heFNpZ251cEF0PzogbnVtYmVyO1xuICAgIE1pblNpZ251cEF0PzogbnVtYmVyO1xuICAgIFNpZ251cElwPzogc3RyaW5nO1xuICAgIFNvdXJjZT86IHN0cmluZztcbiAgICBTb3VyY2VJRD86IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBMaXN0UmVjaXBpZW50UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8TGlzdFJlY2lwaWVudFtdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdE1hbmFnZUNvbnRhY3RzTGlzdHNSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxcbiAgICBBcnJheTx7IENvbnRhY3RzTGlzdHM6IEJ1bGtDb250YWN0TWFuYWdlbWVudC5Db250YWN0TGlzdFtdIH0+XG4gICAgPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdHNMaXN0TWFuYWdlQ29udGFjdFJlc3BvbnNlPFByb3BlcnRpZXMgPSBDb21tb24uVW5rbm93blJlYz4gPVxuICAgICAgQ29tbW9uLlJlc3BvbnNlPEFycmF5PE1hbmFnZUNvbnRhY3RzPFByb3BlcnRpZXM+Pj47XG5cbiAgZXhwb3J0IHR5cGUgUG9zdExpc3RSZWNpcGllbnRSZXNwb25zZSA9IExpc3RSZWNpcGllbnRSZXNwb25zZVxuICBleHBvcnQgdHlwZSBQdXRMaXN0UmVjaXBpZW50UmVzcG9uc2UgPSBMaXN0UmVjaXBpZW50UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0TGlzdFJlY2lwaWVudFJlc3BvbnNlID0gTGlzdFJlY2lwaWVudFJlc3BvbnNlXG5cbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdEdldENvbnRhY3RzTGlzdHNSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDb250YWN0c0xpc3RbXT5cblxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0c0xpc3RTaWdudXBSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDb250YWN0c0xpc3RTaWdudXBbXT5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBDb250YWN0VmVyaWZpY2F0aW9uIHtcbiAgZXhwb3J0IGludGVyZmFjZSBWZXJpZmljYXRpb25TdW1tYXJ5PFJlc3VsdCA9IENvbW1vbi5Vbmtub3duUmVjLCBSaXNrID0gQ29tbW9uLlVua25vd25SZWM+IHtcbiAgICByZXN1bHQ6IFJlc3VsdDtcbiAgICByaXNrOiBSaXNrO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0c0xpc3RWZXJpZmljYXRpb248UmVzdWx0ID0gQ29tbW9uLlVua25vd25SZWMsIFJpc2sgPSBDb21tb24uVW5rbm93blJlYz4ge1xuICAgIEFraWQ6IG51bWJlcjtcbiAgICBDb250YWN0TGlzdElEOiBudW1iZXI7XG4gICAgQ291bnQ6IG51bWJlcjtcbiAgICBFcnJvcjogc3RyaW5nO1xuICAgIElEOiBudW1iZXI7XG4gICAgSm9iRW5kOiBzdHJpbmc7XG4gICAgSm9iU3RhcnQ6IHN0cmluZztcbiAgICBNZXRob2Q6IHN0cmluZztcbiAgICBSZXNwb25zZVVSTDogc3RyaW5nO1xuICAgIFN0YXR1czogc3RyaW5nO1xuICAgIFN1bW1hcnk6IFZlcmlmaWNhdGlvblN1bW1hcnk8UmVzdWx0LCBSaXNrPlxuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0c0xpc3RWZXJpZnlSZXNwb25zZTxSZXN1bHQgPSBDb21tb24uVW5rbm93blJlYywgUmlzayA9IENvbW1vbi5Vbmtub3duUmVjPiA9XG4gICAgQ29tbW9uLlJlc3BvbnNlPEFycmF5PENvbnRhY3RzTGlzdFZlcmlmaWNhdGlvbjxSZXN1bHQsIFJpc2s+Pj47XG59XG4iLCJpbXBvcnQgeyBDb21tb24gfSBmcm9tICcuL0NvbW1vbic7XG5cbmV4cG9ydCBuYW1lc3BhY2UgTWVzc2FnZSB7XG4gIGV4cG9ydCBlbnVtIE1lc3NhZ2VTdGF0ZSB7XG4gICAgVXNlclVua25vd24gPSAxLFxuICAgIE1haWxib3hJbmFjdGl2ZSA9IDIsXG4gICAgUXVvdGFFeGNlZWRlZCA9IDMsXG4gICAgSW52YWxpZERvbWFpbiA9IDQsXG4gICAgTm9NYWlsSG9zdCA9IDUsXG4gICAgUmVsYXlPckFjY2Vzc0RlbmllZCA9IDYsXG4gICAgU2VuZGVyQmxvY2tlZCA9IDcsXG4gICAgQ29udGVudEJsb2NrZWQgPSA4LFxuICAgIFBvbGljeUlzc3VlID0gOSxcbiAgICBTeXN0ZW1Jc3N1ZSA9IDEwLFxuICAgIFByb3RvY29sSXNzdWUgPSAxMSxcbiAgICBDb25uZWN0aW9uSXNzdWUgPSAxMixcbiAgICBHcmV5TGlzdGVkID0gMTMsXG4gICAgUHJlQmxvY2tlZCA9IDE0LFxuICAgIER1cGxpY2F0ZUluQ2FtcGFpZ24gPSAxNSxcbiAgICBTcGFtUHJlQmxvY2tlZCA9IDE2LFxuICAgIEJhZE9yRW1wdHlUZW1wbGF0ZSA9IDE3LFxuICAgIEVycm9ySW5UZW1wbGF0ZUxhbmd1YWdlID0gMTgsXG4gICAgVHlwb0ZpeCA9IDE5LFxuICAgIEJsYWNrTGlzdGVkID0gMjAsXG4gICAgU3BhbVJlcG9ydGVyID0gMjFcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEZyb21UeXBlIHtcbiAgICBUcmFuc2FjdGlvbmFsID0gMSxcbiAgICBNYXJrZXRpbmcgPSAyLFxuICAgIFVua25vd24gPSAzLFxuICB9XG5cbiAgZXhwb3J0IGVudW0gTWVzc2FnZVN0YXR1cyB7XG4gICAgUHJvY2Vzc2VkID0gMCxcbiAgICBRdWV1ZWQgPSAxLFxuICAgIFNlbnQgPSAyLFxuICAgIE9wZW5lZCA9IDMsXG4gICAgQ2xpY2tlZCA9IDQsXG4gICAgQm91bmNlID0gNSxcbiAgICBTcGFtID0gNixcbiAgICBVbnN1YiA9IDcsXG4gICAgQmxvY2tlZCA9IDgsXG4gICAgU29mdEJvdW5jZSA9IDksXG4gICAgSGFyZEJvdW5jZSA9IDEwLFxuICAgIERlZmVycmVkID0gMTEsXG4gIH1cblxuICBleHBvcnQgZW51bSBDdXJyZW50TWVzc2FnZVN0YXR1cyB7XG4gICAgVW5rbm93biA9ICd1bmtub3duJyxcbiAgICBRdWV1ZWQgPSAncXVldWVkJyxcbiAgICBTZW50ID0gJ3NlbnQnLFxuICAgIE9wZW5lZCA9ICdvcGVuZWQnLFxuICAgIENsaWNrZWQgPSAnY2xpY2tlZCcsXG4gICAgQm91bmNlID0gJ2JvdW5jZScsXG4gICAgU3BhbSA9ICdzcGFtJyxcbiAgICBVbnN1YiA9ICd1bnN1YicsXG4gICAgQmxvY2tlZCA9ICdibG9ja2VkJyxcbiAgICBIYXJkQm91bmNlZCA9ICdoYXJkYm91bmNlZCcsXG4gICAgU29mdEJvdW5jZWQgPSAnc29mdGJvdW5jZWQnLFxuICAgIERlZmVycmVkID0gJ2RlZmVycmVkJyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEV2ZW50VHlwZSB7XG4gICAgU2VudCA9ICdzZW50JyxcbiAgICBPcGVuZWQgPSAnb3BlbmVkJyxcbiAgICBDbGlja2VkID0gJ2NsaWNrZWQnLFxuICAgIEJvdW5jZWQgPSAnYm91bmNlZCcsXG4gICAgQmxvY2tlZCA9ICdibG9ja2VkJyxcbiAgICBVbnN1YiA9ICd1bnN1YicsXG4gICAgU3BhbSA9ICdzcGFtJ1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlVHJhY2tlZCB7XG4gICAgSXNDbGlja1RyYWNrZWQ6IGJvb2xlYW47XG4gICAgSXNIVE1MUGFydEluY2x1ZGVkOiBib29sZWFuO1xuICAgIElzT3BlblRyYWNrZWQ6IGJvb2xlYW47XG4gICAgSXNUZXh0UGFydEluY2x1ZGVkOiBib29sZWFuO1xuICAgIElzVW5zdWJUcmFja2VkOiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZVRyYWNrZWQge1xuICAgIElEOiBudW1iZXI7XG4gICAgQXJyaXZlZEF0OiBzdHJpbmc7XG4gICAgQXR0YWNobWVudENvdW50OiBudW1iZXI7XG4gICAgQXR0ZW1wdENvdW50OiBudW1iZXI7XG4gICAgQ2FtcGFpZ25JRDogbnVtYmVyO1xuICAgIENvbnRhY3RBbHQ6IHN0cmluZztcbiAgICBDb250YWN0SUQ6IG51bWJlcjtcbiAgICBEZWxheTogbnVtYmVyO1xuICAgIERlc3RpbmF0aW9uSUQ6IG51bWJlcjtcbiAgICBGaWx0ZXJUaW1lOiBudW1iZXI7XG4gICAgTWVzc2FnZVNpemU6IG51bWJlcjtcbiAgICBTZW5kZXJJRDogbnVtYmVyO1xuICAgIFNwYW1hc3Nhc3NpblNjb3JlOiBudW1iZXI7XG4gICAgU3BhbWFzc1J1bGVzOiBzdHJpbmc7XG4gICAgU3RhdGVJRDogTWVzc2FnZVN0YXRlO1xuICAgIFN0YXRlUGVybWFuZW50OiBib29sZWFuO1xuICAgIFN0YXR1czogQ3VycmVudE1lc3NhZ2VTdGF0dXM7XG4gICAgU3ViamVjdDogc3RyaW5nO1xuICAgIFVVSUQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUhpc3Rvcnkge1xuICAgIENvbW1lbnQ6IHN0cmluZztcbiAgICBFdmVudEF0OiBudW1iZXI7XG4gICAgRXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gICAgU3RhdGU6IHN0cmluZztcbiAgICBVc2VyYWdlbnQ6IHN0cmluZztcbiAgICBVc2VyYWdlbnRJRDogbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlSW5mb3JtYXRpb248UnVsZXMgPSBDb21tb24uVW5rbm93blJlYz4ge1xuICAgIElEOiBudW1iZXI7XG4gICAgQ2FtcGFpZ25JRDogbnVtYmVyO1xuICAgIENsaWNrVHJhY2tlZENvdW50OiBudW1iZXI7XG4gICAgQ29udGFjdElEOiBudW1iZXI7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgTWVzc2FnZVNpemU6IG51bWJlcjtcbiAgICBPcGVuVHJhY2tlZENvdW50OiBudW1iZXI7XG4gICAgUXVldWVkQ291bnQ6IG51bWJlcjtcbiAgICBTZW5kRW5kQXQ6IHN0cmluZztcbiAgICBTZW50Q291bnQ6IG51bWJlcjtcbiAgICBTcGFtQXNzYXNzaW5SdWxlczogUnVsZXM7XG4gICAgU3BhbUFzc2Fzc2luU2NvcmU6IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRNZXNzYWdlUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5UaW1lc3RhbXBQZXJpb2Q+ICZcbiAgICBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmXG4gIHtcbiAgICBDYW1wYWlnbj86IG51bWJlcjtcbiAgICBDb250YWN0PzogbnVtYmVyO1xuICAgIEN1c3RvbUlEPzogc3RyaW5nO1xuICAgIERlc3RpbmF0aW9uPzogbnVtYmVyO1xuICAgIEZyb21UeXBlPzogRnJvbVR5cGU7XG4gICAgTWVzc2FnZVN0YXRlPzogTWVzc2FnZVN0YXRlO1xuICAgIE1lc3NhZ2VTdGF0dXM/OiBNZXNzYWdlU3RhdHVzO1xuICAgIFBsYW5TdWJzY3JpcHRpb24/OiBudW1iZXI7XG4gICAgU2VuZGVySUQ/OiBudW1iZXI7XG4gICAgU2hvd0NvbnRhY3RBbHQ/OiBib29sZWFuO1xuICAgIFNob3dDdXN0b21JRD86IGJvb2xlYW47XG4gICAgU2hvd1N1YmplY3Q/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgR2V0TWVzc2FnZUluZm9ybWF0aW9uUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5UaW1lc3RhbXBQZXJpb2Q+ICZcbiAgICBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmXG4gIHtcbiAgICBDYW1wYWlnbklEPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdD86IG51bWJlcjtcbiAgICBDdXN0b21DYW1wYWlnbj86IHN0cmluZztcbiAgICBGcm9tPzogc3RyaW5nO1xuICAgIEZyb21Eb21haW4/OiBzdHJpbmc7XG4gICAgRnJvbUlEPzogbnVtYmVyO1xuICAgIEZyb21UeXBlPzogRnJvbVR5cGU7XG4gICAgSXNEZWxldGVkPzogYm9vbGVhbjtcbiAgICBJc05ld3NsZXR0ZXJUb29sPzogYm9vbGVhbjtcbiAgICBJc1N0YXJyZWQ/OiBib29sZWFuO1xuICAgIE1lc3NhZ2VTdGF0dXM/OiBNZXNzYWdlU3RhdHVzO1xuICAgIFBlcmlvZD86IENvbW1vbi5QZXJpb2Q7XG4gIH1cblxuICAvLyBSRVNQT05TRSBQQVJUXG4gIGV4cG9ydCB0eXBlIEdldE1lc3NhZ2VzUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8TWVzc2FnZVtdPlxuICBleHBvcnQgdHlwZSBHZXRNZXNzYWdlSGlzdG9yeVJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPE1lc3NhZ2VIaXN0b3J5W10+XG4gIGV4cG9ydCB0eXBlIEdldE1lc3NhZ2VJbmZvcm1hdGlvblJlc3BvbnNlPFJ1bGVzID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICAgIENvbW1vbi5SZXNwb25zZTxBcnJheTxNZXNzYWdlSW5mb3JtYXRpb248UnVsZXM+Pj5cbn1cbiIsImltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vQ29tbW9uJztcblxuZXhwb3J0IG5hbWVzcGFjZSBTZWdtZW50YXRpb24ge1xuICBleHBvcnQgZW51bSBTZWdtZW50U3RhdHVzIHtcbiAgICBVc2VkID0gJ3VzZWQnLFxuICAgIFVuVXNlZCA9ICd1bnVzZWQnLFxuICAgIERlbGV0ZWQgPSAnZGVsZXRlZCdcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdEZpbHRlciB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIEV4cHJlc3Npb246IHN0cmluZztcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgU3RhdHVzOiBTZWdtZW50U3RhdHVzO1xuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0RmlsdGVyQm9keSA9IHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgRXhwcmVzc2lvbjogc3RyaW5nO1xuICAgIERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdEZpbHRlckJvZHkgPSBQYXJ0aWFsPFBvc3RDb250YWN0RmlsdGVyQm9keT4gJiB7XG4gICAgU3RhdHVzPzogU2VnbWVudFN0YXR1cztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RGaWx0ZXJRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIFNob3dEZWxldGVkPzogYm9vbGVhbjtcbiAgICBTdGF0dXM/OiBTZWdtZW50U3RhdHVzO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIENvbnRhY3RGaWx0ZXJSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDb250YWN0RmlsdGVyW10+O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0RmlsdGVyUmVzcG9uc2UgPSBDb250YWN0RmlsdGVyUmVzcG9uc2U7XG4gIGV4cG9ydCB0eXBlIFB1dENvbnRhY3RGaWx0ZXJSZXNwb25zZSA9IENvbnRhY3RGaWx0ZXJSZXNwb25zZTtcbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdEZpbHRlclJlc3BvbnNlID0gQ29udGFjdEZpbHRlclJlc3BvbnNlO1xufVxuIiwiaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi9Db21tb24nO1xuXG5leHBvcnQgbmFtZXNwYWNlIFNlbmRFbWFpbFYzIHtcbiAgZXhwb3J0IHR5cGUgTWpUZW1wbGF0ZUVycm9yRGVsaXZlciA9ICcwJyB8ICdkZWxpdmVyJ1xuICBleHBvcnQgdHlwZSBNakRlZHVwbGljYXRlQ2FtcGFpZ24gPSAwIHwgMTtcbiAgZXhwb3J0IHR5cGUgTWpUcmFja09wZW4gPSAwIHwgMSB8IDI7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZWNpcGllbnQge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgTmFtZT86IHN0cmluZ1xuICAgIFZhcnM/OiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnQge1xuICAgIEZpbGVuYW1lOiBzdHJpbmc7XG4gICAgQ29udGVudDogc3RyaW5nO1xuICAgICdDb250ZW50LXR5cGUnOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgdHlwZSBCb2R5TWogPSB7XG4gICAgJ01qLVRlbXBsYXRlSUQnPzogbnVtYmVyO1xuICAgICdNai1UZW1wbGF0ZUxhbmd1YWdlJz86IGJvb2xlYW47XG4gICAgJ01qLVRlbXBsYXRlRXJyb3JSZXBvcnRpbmcnPzogc3RyaW5nO1xuICAgICdNai1UZW1wbGF0ZUVycm9yRGVsaXZlcic/OiBNalRlbXBsYXRlRXJyb3JEZWxpdmVyO1xuICAgICdNai1wcmlvJz86IG51bWJlcjtcbiAgICAnTWotY2FtcGFpZ24nPzogc3RyaW5nO1xuICAgICdNai1kZWR1cGxpY2F0ZWNhbXBhaWduJz86IE1qRGVkdXBsaWNhdGVDYW1wYWlnbjtcbiAgICAnTWotdHJhY2tvcGVuJz86IE1qVHJhY2tPcGVuO1xuICAgICdNai1DdXN0b21JRCc/OiBzdHJpbmc7XG4gICAgJ01qLUV2ZW50UGF5bG9hZCc/OiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgQm9keTxcbiAgICBIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWMsXG4gICAgVmFycyA9IENvbW1vbi5Vbmtub3duUmVjXG4gICAgPiA9IEJvZHlNaiAmIHtcbiAgICBGcm9tRW1haWw/OiBzdHJpbmc7XG4gICAgRnJvbU5hbWU/OiBzdHJpbmc7XG4gICAgUmVjaXBpZW50cz86IFJlY2lwaWVudFtdO1xuICAgIFNlbmRlcj86IGJvb2xlYW47XG4gICAgU3ViamVjdD86IHN0cmluZztcbiAgICAnVGV4dC1wYXJ0Jz86IHN0cmluZztcbiAgICAnSHRtbC1wYXJ0Jz86IHN0cmluZztcbiAgICBUbz86IHN0cmluZztcbiAgICBDYz86IHN0cmluZztcbiAgICBCY2M/OiBzdHJpbmc7XG4gICAgQXR0YWNobWVudHM/OiBBdHRhY2htZW50W107XG4gICAgSW5saW5lX2F0dGFjaG1lbnRzPzogQXR0YWNobWVudFtdO1xuICAgIEhlYWRlcnM/OiBIZWFkZXJzO1xuICAgIFZhcnM/OiBWYXJzO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICBleHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlU2VudCB7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBNZXNzYWdlSUQ6IG51bWJlcjtcbiAgICBNZXNzYWdlVVVJRDogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUmVzcG9uc2UgPSB7XG4gICAgU2VudDogUmVzcG9uc2VTZW50W107XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBTZW5kRW1haWxWM18xIHtcbiAgZXhwb3J0IGVudW0gVHJhY2tPcGVucyB7XG4gICAgQWNjb3VudERlZmF1bHQgPSAnYWNjb3VudF9kZWZhdWx0JyxcbiAgICBEaXNhYmxlZCA9ICdkaXNhYmxlZCcsXG4gICAgRW5hYmxlZCA9ICdlbmFibGVkJyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIFRyYWNrQ2xpY2tzIHtcbiAgICBBY2NvdW50RGVmYXVsdCA9ICdhY2NvdW50X2RlZmF1bHQnLFxuICAgIERpc2FibGVkID0gJ2Rpc2FibGVkJyxcbiAgICBFbmFibGVkID0gJ2VuYWJsZWQnLFxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBFbWFpbEFkZHJlc3NUbyB7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBOYW1lPzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBBdHRhY2htZW50IHtcbiAgICBGaWxlbmFtZTogc3RyaW5nO1xuICAgIENvbnRlbnRUeXBlOiBzdHJpbmc7XG4gICAgQmFzZTY0Q29udGVudDogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJbmxpbmVkQXR0YWNobWVudCBleHRlbmRzIEF0dGFjaG1lbnQge1xuICAgIENvbnRlbnRJRD86IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZTxIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWMsIFZhcmlhYmxlcyA9IENvbW1vbi5Vbmtub3duUmVjPiB7XG4gICAgRnJvbTogRW1haWxBZGRyZXNzVG87XG4gICAgU2VuZGVyPzogRW1haWxBZGRyZXNzVG87XG4gICAgVG86IEVtYWlsQWRkcmVzc1RvW107XG4gICAgQ2M/OiBFbWFpbEFkZHJlc3NUb1tdO1xuICAgIEJjYz86IEVtYWlsQWRkcmVzc1RvW107XG4gICAgUmVwbHlUbz86IEVtYWlsQWRkcmVzc1RvO1xuICAgIFN1YmplY3Q/OiBzdHJpbmc7XG4gICAgVGV4dFBhcnQ/OiBzdHJpbmc7XG4gICAgSFRNTFBhcnQ/OiBzdHJpbmc7XG4gICAgVGVtcGxhdGVJRD86IG51bWJlcjtcbiAgICBUZW1wbGF0ZUxhbmd1YWdlPzogYm9vbGVhbjtcbiAgICBUZW1wbGF0ZUVycm9yUmVwb3J0aW5nPzogRW1haWxBZGRyZXNzVG87XG4gICAgVGVtcGxhdGVFcnJvckRlbGl2ZXI/OiBib29sZWFuO1xuICAgIEF0dGFjaG1lbnRzPzogQXR0YWNobWVudFtdO1xuICAgIElubGluZWRBdHRhY2htZW50cz86IElubGluZWRBdHRhY2htZW50W107XG4gICAgUHJpb3JpdHk/OiBudW1iZXI7XG4gICAgQ3VzdG9tQ2FtcGFpZ24/OiBzdHJpbmc7XG4gICAgRGVkdXBsaWNhdGVDYW1wYWlnbj86IGJvb2xlYW47XG4gICAgVHJhY2tPcGVucz86IFRyYWNrT3BlbnM7XG4gICAgVHJhY2tDbGlja3M/OiBUcmFja0NsaWNrcztcbiAgICBDdXN0b21JRD86IHN0cmluZztcbiAgICBFdmVudFBheWxvYWQ/OiBzdHJpbmc7XG4gICAgVVJMVGFncz86IHN0cmluZztcbiAgICBIZWFkZXJzPzogSGVhZGVycztcbiAgICBWYXJpYWJsZXM/OiBWYXJpYWJsZXM7XG4gIH1cblxuICBleHBvcnQgZW51bSBSZXNwb25zZVN0YXR1cyB7XG4gICAgU3VjY2VzcyA9ICdzdWNjZXNzJyxcbiAgICBFcnJvciA9ICdlcnJvcicsXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlRXJyb3Ige1xuICAgIEVycm9ySWRlbnRpZmllcjogc3RyaW5nO1xuICAgIEVycm9yQ29kZTogc3RyaW5nO1xuICAgIFN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgICBFcnJvclJlbGF0ZWRUbzogQXJyYXk8c3RyaW5nPjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2VFbWFpbEFkZHJlc3NUbyB7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBNZXNzYWdlVVVJRDogc3RyaW5nO1xuICAgIE1lc3NhZ2VJRDogbnVtYmVyO1xuICAgIE1lc3NhZ2VIcmVmOiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgQm9keTxcbiAgICBIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWMsXG4gICAgVmFyaWFibGVzID0gQ29tbW9uLlVua25vd25SZWMsXG4gICAgR2xvYmFscyA9IENvbW1vbi5Vbmtub3duUmVjLFxuICAgID4gPSB7XG4gICAgTWVzc2FnZXM6IEFycmF5PE1lc3NhZ2U8SGVhZGVycywgVmFyaWFibGVzPj47XG4gICAgU2FuZGJveE1vZGU/OiBib29sZWFuO1xuICAgIEFkdmFuY2VFcnJvckhhbmRsaW5nPzogYm9vbGVhbjtcbiAgICBHbG9iYWxzPzogR2xvYmFscztcbiAgfSB8IHtcbiAgICBNZXNzYWdlczogQXJyYXk8T21pdDxNZXNzYWdlPEhlYWRlcnMsIFZhcmlhYmxlcz4sICdGcm9tJz4gJiB7IEZyb20/OiBzdHJpbmcgfT47XG4gICAgU2FuZGJveE1vZGU/OiBib29sZWFuO1xuICAgIEFkdmFuY2VFcnJvckhhbmRsaW5nPzogYm9vbGVhbjtcbiAgICBHbG9iYWxzOiB7XG4gICAgICBGcm9tOiBFbWFpbEFkZHJlc3NUbztcbiAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgZXhwb3J0IGludGVyZmFjZSBSZXNwb25zZU1lc3NhZ2Uge1xuICAgIFN0YXR1czogUmVzcG9uc2VTdGF0dXM7XG4gICAgRXJyb3JzOiBSZXNwb25zZUVycm9yW107XG4gICAgQ3VzdG9tSUQ6IHN0cmluZztcbiAgICBUbzogUmVzcG9uc2VFbWFpbEFkZHJlc3NUb1tdO1xuICAgIENjOiBSZXNwb25zZUVtYWlsQWRkcmVzc1RvW107XG4gICAgQmNjOiBSZXNwb25zZUVtYWlsQWRkcmVzc1RvW107XG4gIH1cblxuICBleHBvcnQgdHlwZSBSZXNwb25zZSA9IHtcbiAgICBNZXNzYWdlczogUmVzcG9uc2VNZXNzYWdlW107XG4gIH1cbn1cbiIsImltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vQ29tbW9uJztcblxuZXhwb3J0IG5hbWVzcGFjZSBTZW5kZXIge1xuICBleHBvcnQgZW51bSBFbWFpbFR5cGUge1xuICAgIFRyYW5zYWN0aW9uYWwgPSAndHJhbnNhY3Rpb25hbCcsXG4gICAgQnVsayA9ICdidWxrJyxcbiAgICBVbmtub3duID0gJ3Vua25vd24nXG4gIH1cblxuICBleHBvcnQgZW51bSBTZW5kZXJTdGF0dXMge1xuICAgIEluYWN0aXZlID0gJ0luYWN0aXZlJyxcbiAgICBBY3RpdmUgPSAnQWN0aXZlJyxcbiAgICBEZWxldGVkID0gJ0RlbGV0ZWQnLFxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBTZW5kZXIge1xuICAgIElEOiBudW1iZXI7XG4gICAgRW1haWxUeXBlOiBFbWFpbFR5cGU7XG4gICAgSXNEZWZhdWx0U2VuZGVyOiBib29sZWFuO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBDcmVhdGVkQXQ6IHN0cmluZztcbiAgICBETlNJRDogbnVtYmVyO1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgRmlsZW5hbWU6IHN0cmluZztcbiAgICBTdGF0dXM6IFNlbmRlclN0YXR1cztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgU2VuZGVyVmFsaWRhdGUge1xuICAgIFZhbGlkYXRpb25NZXRob2Q6IHN0cmluZztcbiAgICBFcnJvcnM6IHN0cmluZztcbiAgICBHbG9iYWxFcnJvcjogc3RyaW5nO1xuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG4gIGV4cG9ydCB0eXBlIFBvc3RTZW5kZXJCb2R5ID0ge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgRW1haWxUeXBlPzogRW1haWxUeXBlO1xuICAgIElzRGVmYXVsdFNlbmRlcj86IGJvb2xlYW47XG4gICAgTmFtZT86IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFB1dFNlbmRlckJvZHkgPSBPbWl0PFBvc3RTZW5kZXJCb2R5LCAnRW1haWwnPlxuXG4gIGV4cG9ydCB0eXBlIEdldFNlbmRlclF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgRG5zSUQ/OiBudW1iZXI7XG4gICAgRG9tYWluPzogc3RyaW5nO1xuICAgIEVtYWlsPzogc3RyaW5nO1xuICAgIElzRG9tYWluU2VuZGVyPzogYm9vbGVhbjtcbiAgICBMb2NhbFBhcnQ/OiBzdHJpbmc7XG4gICAgU2hvd0RlbGV0ZWQ/OiBib29sZWFuO1xuICAgIFN0YXR1cz86IFNlbmRlclN0YXR1cztcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBTZW5kZXJSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxTZW5kZXJbXT47XG5cbiAgZXhwb3J0IHR5cGUgUG9zdFNlbmRlclJlc3BvbnNlID0gU2VuZGVyUmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0U2VuZGVyUmVzcG9uc2UgPSBTZW5kZXJSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRTZW5kZXJSZXNwb25zZSA9IFNlbmRlclJlc3BvbnNlXG5cbiAgZXhwb3J0IHR5cGUgUG9zdFNlbmRlclZhbGlkYXRlUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8U2VuZGVyVmFsaWRhdGVbXT47XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgTWV0YXNlbmRlciB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgTWV0YVNlbmRlciB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIENyZWF0ZWRBdDogc3RyaW5nO1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgRmlsZW5hbWU6IHN0cmluZztcbiAgICBJc0VuYWJsZWQ6IGJvb2xlYW47XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdE1ldGFTZW5kZXJCb2R5ID0ge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgdHlwZSBQdXRNZXRhU2VuZGVyQm9keSA9IE9taXQ8UG9zdE1ldGFTZW5kZXJCb2R5LCAnRW1haWwnPlxuXG4gIGV4cG9ydCB0eXBlIEdldE1ldGFTZW5kZXJRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIEROUz86IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBNZXRhU2VuZGVyUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8TWV0YVNlbmRlcltdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0TWV0YVNlbmRlclJlc3BvbnNlID0gTWV0YVNlbmRlclJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFB1dE1ldGFTZW5kZXJSZXNwb25zZSA9IE1ldGFTZW5kZXJSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRNZXRhU2VuZGVyUmVzcG9uc2UgPSBNZXRhU2VuZGVyUmVzcG9uc2Vcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBETlMge1xuICBleHBvcnQgZW51bSBES0lNQ29uZmlndXJhdGlvbkNoZWNrU3RhdHVzIHtcbiAgICBPSyA9ICdPSycsXG4gICAgRXJyb3IgPSAnRXJyb3InLFxuICAgIE5vdENoZWNrZWQgPSAnTm90IGNoZWNrZWQnXG4gIH1cblxuICBleHBvcnQgZW51bSBES0lNQ29uZmlndXJhdGlvblN0YXR1cyB7XG4gICAgT0sgPSAnT0snLFxuICAgIEVycm9yID0gJ0Vycm9yJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gU1BGQ29uZmlndXJhdGlvbkNoZWNrU3RhdHVzIHtcbiAgICBPSyA9ICdPSycsXG4gICAgRXJyb3IgPSAnRXJyb3InLFxuICAgIE5vdENoZWNrZWQgPSAnTm90IGNoZWNrZWQnLFxuICAgIE5vdEZvdW5kID0gJ05vdCBmb3VuZCcsXG4gIH1cblxuICBleHBvcnQgZW51bSBTUEZDb25maWd1cmF0aW9uU3RhdHVzIHtcbiAgICBPSyA9ICdPSycsXG4gICAgRXJyb3IgPSAnRXJyb3InXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEROUyB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBES0lNUmVjb3JkTmFtZTogc3RyaW5nO1xuICAgIERLSU1SZWNvcmRWYWx1ZTogc3RyaW5nO1xuICAgIERLSU1TdGF0dXM6IERLSU1Db25maWd1cmF0aW9uQ2hlY2tTdGF0dXM7XG4gICAgRG9tYWluOiBzdHJpbmc7XG4gICAgSXNDaGVja0luUHJvZ3Jlc3M6IGJvb2xlYW47XG4gICAgTGFzdENoZWNrQXQ6IHN0cmluZztcbiAgICBPd25lclNoaXBUb2tlbjogc3RyaW5nO1xuICAgIE93bmVyU2hpcFRva2VuUmVjb3JkTmFtZTogc3RyaW5nO1xuICAgIFNQRlJlY29yZFZhbHVlOiBzdHJpbmc7XG4gICAgU1BGU3RhdHVzOiBTUEZDb25maWd1cmF0aW9uQ2hlY2tTdGF0dXM7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEROU0NoZWNrIHtcbiAgICBES0lNRXJyb3JzOiBzdHJpbmc7XG4gICAgREtJTVJlY29yZEN1cnJlbnRWYWx1ZTogc3RyaW5nO1xuICAgIERLSU1TdGF0dXM6IERLSU1Db25maWd1cmF0aW9uU3RhdHVzO1xuICAgIFNQRkVycm9yczogc3RyaW5nO1xuICAgIFNQRlJlY29yZEN1cnJlbnRWYWx1ZTogc3RyaW5nO1xuICAgIFNQRlN0YXR1czogU1BGQ29uZmlndXJhdGlvblN0YXR1cztcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRETlNRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIElzQ2hlY2tJblByb2dyZXNzPzogYm9vbGVhbjtcbiAgICBJc1NlbmRlcklkZW50aWZpZWQ/OiBib29sZWFuO1xuICAgIElzWWFob29GQkw/OiBib29sZWFuO1xuICAgIE1heExhc3RDaGVja0F0Pzogc3RyaW5nO1xuICAgIE1pbkxhc3RDaGVja0F0Pzogc3RyaW5nO1xuICAgIFNQRlN0YXR1cz86IFNQRkNvbmZpZ3VyYXRpb25DaGVja1N0YXR1cztcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgZXhwb3J0IHR5cGUgR2V0RE5TUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8RE5TW10+O1xuICBleHBvcnQgdHlwZSBQb3N0RE5TQ2hlY2tSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxETlNDaGVja1tdPjtcbn1cbiIsImltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vQ29tbW9uJztcblxuZXhwb3J0IG5hbWVzcGFjZSBBUElLZXlDb25maWd1cmF0aW9uIHtcbiAgZXhwb3J0IGVudW0gUnVuTGV2ZWwge1xuICAgIE5vcm1hbCA9ICdOb3JtYWwnLFxuICAgIFNvZnRMb2NrID0gJ1NvZnRsb2NrJyxcbiAgICBIYXJkTG9jayA9ICdIYXJkbG9jaydcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5IHtcbiAgICBJRDogbnVtYmVyO1xuICAgIEFDTDogc3RyaW5nO1xuICAgIElzQWN0aXZlOiBib29sZWFuO1xuICAgIEFQSUtleTogc3RyaW5nO1xuICAgIENyZWF0ZWRBdDogc3RyaW5nO1xuICAgIElzTWFzdGVyOiBib29sZWFuO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBRdWFyYW50aW5lVmFsdWU6IG51bWJlcjtcbiAgICBSdW5sZXZlbDogUnVuTGV2ZWw7XG4gICAgU2VjcmV0S2V5OiBzdHJpbmc7XG4gICAgVHJhY2tIb3N0OiBzdHJpbmc7XG4gICAgVXNlcklEOiBudW1iZXI7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdEFwaUtleUJvZHkgPSB7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIEFDTD86IHN0cmluZztcbiAgICBJc0FjdGl2ZT86IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgdHlwZSBQdXRBcGlLZXlCb2R5ID0gUGFydGlhbDxQb3N0QXBpS2V5Qm9keT5cblxuICBleHBvcnQgdHlwZSBHZXRBcGlLZXlRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIEFQSUtleT86IHN0cmluZztcbiAgICBJc0FjdGl2ZT86IGJvb2xlYW47XG4gICAgSXNNYXN0ZXI/OiBib29sZWFuO1xuICAgIE5hbWU/OiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVNQT05TRSBQQVJUXG4gIHR5cGUgQXBpS2V5UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8QXBpS2V5W10+O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RBcGlLZXlSZXNwb25zZSA9IEFwaUtleVJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFB1dEFwaUtleVJlc3BvbnNlID0gQXBpS2V5UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0QXBpS2V5UmVzcG9uc2UgPUFwaUtleVJlc3BvbnNlXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQWNjb3VudFNldHRpbmcge1xuICBleHBvcnQgaW50ZXJmYWNlIE15UHJvZmlsZSB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBBZGRyZXNzQ2l0eTogc3RyaW5nO1xuICAgIEFkZHJlc3NDb3VudHJ5OiBzdHJpbmc7XG4gICAgQWRkcmVzc1Bvc3RhbENvZGU6IHN0cmluZztcbiAgICBBZGRyZXNzU3RhdGU6IHN0cmluZztcbiAgICBBZGRyZXNzU3RyZWV0OiBzdHJpbmc7XG4gICAgQmlsbGluZ0VtYWlsOiBzdHJpbmc7XG4gICAgQmlydGhkYXlBdDogc3RyaW5nO1xuICAgIENvbXBhbnlOYW1lOiBzdHJpbmc7XG4gICAgQ29tcGFueU51bU9mRW1wbG95ZWVzOiBzdHJpbmc7XG4gICAgQ29udGFjdFBob25lOiBzdHJpbmc7XG4gICAgRXN0aW1hdGVkVm9sdW1lOiBudW1iZXI7XG4gICAgRmVhdHVyZXM6IHN0cmluZztcbiAgICBGaXJzdG5hbWU6IHN0cmluZztcbiAgICBJbmR1c3RyeTogbnVtYmVyO1xuICAgIEpvYlRpdGxlOiBzdHJpbmc7XG4gICAgTGFzdG5hbWU6IHN0cmluZztcbiAgICBWQVROdW1iZXI6IHN0cmluZztcbiAgICBXZWJzaXRlOiBzdHJpbmc7XG4gICAgVkFUOiBudW1iZXI7XG4gICAgVXNlcklEOiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFVzZXIge1xuICAgIElEOiBudW1iZXI7XG4gICAgQUNMOiBzdHJpbmc7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBMYXN0TG9naW5BdDogc3RyaW5nO1xuICAgIExvY2FsZTogc3RyaW5nO1xuICAgIFRpbWV6b25lOiBzdHJpbmc7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgRmlyc3RJcDogc3RyaW5nO1xuICAgIExhc3RJcDogc3RyaW5nO1xuICAgIE1heEFsbG93ZWRBUElLZXlzOiBudW1iZXI7XG4gICAgVXNlcm5hbWU6IHN0cmluZztcbiAgICBXYXJuZWRSYXRlbGltaXRBdDogc3RyaW5nO1xuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG4gIGV4cG9ydCB0eXBlIFB1dE15UHJvZmlsZUJvZHkgPSBQYXJ0aWFsPE9taXQ8TXlQcm9maWxlLCAnSUQnIHwgJ1ZBVCcgfCAnVXNlcklEJz4+XG5cbiAgZXhwb3J0IHR5cGUgUHV0VXNlckJvZHkgPVxuICAgIFBhcnRpYWw8T21pdDxVc2VyLCAnSUQnIHwgJ0NyZWF0ZWRBdCcgfCAnRmlyc3RJcCcgfCAnTWF4QWxsb3dlZEFQSUtleXMnIHwgJ1dhcm5lZFJhdGVsaW1pdEF0Jz4+XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIE15UHJvZmlsZVJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPE15UHJvZmlsZVtdPjtcbiAgdHlwZSBVc2VyUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8VXNlcltdPjtcblxuICBleHBvcnQgdHlwZSBQdXRNeVByb2ZpbGVSZXNwb25zZSA9IE15UHJvZmlsZVJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldE15UHJvZmlsZVJlc3BvbnNlID0gTXlQcm9maWxlUmVzcG9uc2VcblxuICBleHBvcnQgdHlwZSBQdXRVc2VyUmVzcG9uc2UgPSBVc2VyUmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0VXNlclJlc3BvbnNlID0gVXNlclJlc3BvbnNlXG59XG4iLCJpbXBvcnQgeyBDb21tb24gfSBmcm9tICcuL0NvbW1vbic7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi9NZXNzYWdlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBTdGF0aXN0aWMge1xuICBleHBvcnQgZW51bSBDYW1wYWlnbk92ZXJ2aWV3SURUeXBlIHtcbiAgICBTZW50Q2FtcGFpZ24gPSAnQ2FtcGFpZ24nLFxuICAgIEFCVGVzdGluZyA9ICdBWCcsXG4gICAgRHJhZnQgPSAnTkwnXG4gIH1cblxuICBleHBvcnQgZW51bSBDYW1wYWlnbk92ZXJ2aWV3RWRpdE1vZGUge1xuICAgIFRvb2wgPSAndG9vbCcsXG4gICAgSFRNTCA9ICdodG1sJyxcbiAgICBUb29sMiA9ICd0b29sMicsXG4gICAgSFRNTDIgPSAnaHRtbDInLFxuICAgIE1KTUwgPSAnbWptbCcsXG4gIH1cblxuICBleHBvcnQgZW51bSBDYW1wYWlnbk92ZXJ2aWV3RWRpdFR5cGUge1xuICAgIEZ1bGwgPSAnZnVsbCcsXG4gICAgVW5rbm93biA9ICd1bmtub3duJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gQ291bnRlclNvdXJjZSB7XG4gICAgQ2FtcGFpZ24gPSAnQ2FtcGFpZ24nLFxuICAgIEFQSUtleSA9ICdBUElLZXknLFxuICAgIExpc3QgPSAnTGlzdCcsXG4gICAgU2VuZGVyID0gJ1NlbmRlcidcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIENvdW50ZXJSZXNvbHV0aW9uIHtcbiAgICBIaWdoZXN0ID0gJ0hpZ2hlc3QnLFxuICAgIEhvdXIgPSAnSG91cicsXG4gICAgRGF5ID0gJ0RheScsXG4gICAgTGlmZXRpbWUgPSAnTGlmZXRpbWUnXG4gIH1cblxuICBleHBvcnQgZW51bSBDb3VudGVyVGltaW5nIHtcbiAgICBNZXNzYWdlID0gJ01lc3NhZ2UnLFxuICAgIEV2ZW50ID0gJ0V2ZW50J1xuICB9XG5cbiAgZXhwb3J0IGVudW0gRW1haWxFdmVudCB7XG4gICAgT3BlbiA9ICdvcGVuJyxcbiAgICBDbGljayA9ICdjbGljaydcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ2FtcGFpZ25PdmVydmlldyB7XG4gICAgQ2xpY2tlZENvdW50OiBudW1iZXI7XG4gICAgRGVsaXZlcmVkQ291bnQ6IG51bWJlcjtcbiAgICBFZGl0TW9kZTogQ2FtcGFpZ25PdmVydmlld0VkaXRNb2RlO1xuICAgIEVkaXRUeXBlOiBDYW1wYWlnbk92ZXJ2aWV3RWRpdFR5cGU7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJRFR5cGU6IENhbXBhaWduT3ZlcnZpZXdJRFR5cGU7XG4gICAgT3BlbmVkQ291bnQ6IG51bWJlcjtcbiAgICBQcm9jZXNzZWRDb3VudDogbnVtYmVyO1xuICAgIFNlbmRUaW1lU3RhcnQ6IG51bWJlcjtcbiAgICBTdGFycmVkOiBib29sZWFuO1xuICAgIFN1YmplY3Q6IHN0cmluZztcbiAgICBUaXRsZTogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0U3RhdGlzdGljIHtcbiAgICBCbG9ja2VkQ291bnQ6IG51bWJlcjtcbiAgICBCb3VuY2VkQ291bnQ6IG51bWJlcjtcbiAgICBDbGlja2VkQ291bnQ6IG51bWJlcjtcbiAgICBDb250YWN0SUQ6IG51bWJlcjtcbiAgICBEZWZlcnJlZENvdW50OiBudW1iZXI7XG4gICAgRGVsaXZlcmVkQ291bnQ6IG51bWJlcjtcbiAgICBIYXJkYm91bmNlZENvdW50OiBudW1iZXI7XG4gICAgTGFzdEFjdGl2aXR5QXQ6IHN0cmluZztcbiAgICBNYXJrZXRpbmdDb250YWN0czogbnVtYmVyO1xuICAgIE9wZW5lZENvdW50OiBudW1iZXI7XG4gICAgUHJvY2Vzc2VkQ291bnQ6IG51bWJlcjtcbiAgICBRdWV1ZWRDb3VudDogbnVtYmVyO1xuICAgIFNvZnRib3VuY2VkQ291bnQ6IG51bWJlcjtcbiAgICBTcGFtQ29tcGxhaW50Q291bnQ6IG51bWJlcjtcbiAgICBVbnN1YnNjcmliZWRDb3VudDogbnVtYmVyO1xuICAgIFVzZXJNYXJrZXRpbmdDb250YWN0czogbnVtYmVyO1xuICAgIFdvcmtGbG93RXhpdGVkQ291bnQ6IG51bWJlcjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgR0VPU3RhdGlzdGljIHtcbiAgICBDbGlja2VkQ291bnQ6IG51bWJlcjtcbiAgICBPcGVuZWRDb3VudDogbnVtYmVyO1xuICAgIENvdW50cnk6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTGlzdFJlY2lwaWVudFN0YXRpc3RpYzxEYXRhID0gQXJyYXk8dW5rbm93bj4+IHtcbiAgICBCbG9ja2VkQ291bnQ6IG51bWJlcjtcbiAgICBCb3VuY2VkQ291bnQ6IG51bWJlcjtcbiAgICBDbGlja2VkQ291bnQ6IG51bWJlcjtcbiAgICBEYXRhOiBEYXRhO1xuICAgIERlZmVycmVkQ291bnQ6IG51bWJlcjtcbiAgICBEZWxpdmVyZWRDb3VudDogbnVtYmVyO1xuICAgIEhhcmRib3VuY2VkQ291bnQ6IG51bWJlcjtcbiAgICBMYXN0QWN0aXZpdHlBdDogc3RyaW5nO1xuICAgIExpc3RSZWNpcGllbnRJRDogbnVtYmVyO1xuICAgIE9wZW5lZENvdW50OiBudW1iZXI7XG4gICAgUHJlUXVldWVkQ291bnQ6IG51bWJlcjtcbiAgICBQcm9jZXNzZWRDb3VudDogbnVtYmVyO1xuICAgIFF1ZXVlZENvdW50OiBudW1iZXI7XG4gICAgU29mdGJvdW5jZWRDb3VudDogbnVtYmVyO1xuICAgIFNwYW1Db21wbGFpbnRDb3VudDogbnVtYmVyO1xuICAgIFVuc3Vic2NyaWJlZENvdW50OiBudW1iZXI7XG4gICAgV29ya0Zsb3dFeGl0ZWRDb3VudDogbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0Q291bnRlciB7XG4gICAgQVBJS2V5SUQ6IG51bWJlcjtcbiAgICBFdmVudENsaWNrRGVsYXk6IG51bWJlcjtcbiAgICBFdmVudENsaWNrZWRDb3VudDogbnVtYmVyO1xuICAgIEV2ZW50T3BlbkRlbGF5OiBudW1iZXI7XG4gICAgRXZlbnRPcGVuZWRDb3VudDogbnVtYmVyO1xuICAgIEV2ZW50U3BhbUNvdW50OiBudW1iZXI7XG4gICAgRXZlbnRVbnN1YnNjcmliZWRDb3VudDogbnVtYmVyO1xuICAgIEV2ZW50V29ya2Zsb3dFeGl0ZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VCbG9ja2VkQ291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlQ2xpY2tlZENvdW50OiBudW1iZXI7XG4gICAgTWVzc2FnZURlZmVycmVkQ291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlSGFyZEJvdW5jZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VPcGVuZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VRdWV1ZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VTZW50Q291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlU29mdEJvdW5jZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VTcGFtQ291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlVW5zdWJzY3JpYmVkQ291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlV29ya0Zsb3dFeGl0ZWRDb3VudDogbnVtYmVyO1xuICAgIFNvdXJjZUlEOiBudW1iZXI7XG4gICAgVGltZXNsaWNlOiBzdHJpbmc7XG4gICAgVG90YWw6IG51bWJlcjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTGlua0NsaWNrU3RhdGlzdGljIHtcbiAgICBDbGlja2VkRXZlbnRzQ291bnQ6IG51bWJlcjtcbiAgICBDbGlja2VkTWVzc2FnZXNDb3VudDogbnVtYmVyO1xuICAgIFBvc2l0aW9uSW5kZXg6IG51bWJlcjtcbiAgICBVUkw6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUmVjaXBpZW50RVNQU3RhdGlzdGljIHtcbiAgICBBdHRlbXB0ZWRNZXNzYWdlc0NvdW50PzogbnVtYmVyO1xuICAgIENsaWNrZWRNZXNzYWdlc0NvdW50PzogbnVtYmVyO1xuICAgIERlZmVycmVkTWVzc2FnZXNDb3VudD86IG51bWJlcjtcbiAgICBEZWxpdmVyZWRNZXNzYWdlc0NvdW50PzogbnVtYmVyO1xuICAgIEhhcmRCb3VuY2VkTWVzc2FnZXNDb3VudD86IG51bWJlcjtcbiAgICBFU1BOYW1lPzogc3RyaW5nO1xuICAgIE9wZW5lZE1lc3NhZ2VzQ291bnQ/OiBudW1iZXI7XG4gICAgU29mdEJvdW5jZWRNZXNzYWdlc0NvdW50PzogbnVtYmVyO1xuICAgIFNwYW1SZXBvcnRzQ291bnQ/OiBudW1iZXI7XG4gICAgVW5zdWJzY3JpYmVkTWVzc2FnZXNDb3VudD86IG51bWJlcjtcbiAgICBPcGVuUmF0ZT86IG51bWJlcjtcbiAgICBDbGlja1Rocm91Z2hSYXRlPzogbnVtYmVyO1xuICAgIFNvZnRCb3VuY2VkUmF0ZT86IG51bWJlcjtcbiAgICBIYXJkQm91bmNlZFJhdGU/OiBudW1iZXI7XG4gICAgVW5zdWJzY3JpYmVkUmF0ZT86IG51bWJlcjtcbiAgICBTcGFtUmVwb3J0c1JhdGU/OiBudW1iZXI7XG4gICAgRGVmZXJyZWRSYXRlPzogbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBUb3BMaW5rQ2xpY2tlZCB7XG4gICAgQ2xpY2tlZENvdW50OiBudW1iZXI7XG4gICAgTGlua0lkOiBudW1iZXI7XG4gICAgVXJsOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFVzZXJBZ2VudFN0YXRpc3RpYyB7XG4gICAgQ291bnQ6IG51bWJlcjtcbiAgICBEaXN0aW5jdENvdW50OiBudW1iZXI7XG4gICAgUGxhdGZvcm06IHN0cmluZztcbiAgICBVc2VyQWdlbnQ6IHN0cmluZztcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRDYW1wYWlnbk92ZXJ2aWV3UXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBBbGw/OiBib29sZWFuO1xuICAgIEFyY2hpdmVkPzogYm9vbGVhbjtcbiAgICBEcmFmdHM/OiBib29sZWFuO1xuICAgIElEPzogbnVtYmVyO1xuICAgIElEVHlwZT86IENhbXBhaWduT3ZlcnZpZXdJRFR5cGU7XG4gICAgUHJvZ3JhbW1lZD86IGJvb2xlYW47XG4gICAgU2VudD86IGJvb2xlYW47XG4gICAgU3RhcnJlZD86IGJvb2xlYW47XG4gICAgU3ViamVjdD86IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBCbG9ja2VkPzogYm9vbGVhbjtcbiAgICBCb3VuY2VkPzogYm9vbGVhbjtcbiAgICBDbGljaz86IGJvb2xlYW47XG4gICAgRGVmZXJyZWQ/OiBib29sZWFuO1xuICAgIEhhcmRib3VuY2VkPzogYm9vbGVhbjtcbiAgICBMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNYXhMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNaW5MYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBPcGVuPzogYm9vbGVhbjtcbiAgICBRdWV1ZWQ/OiBib29sZWFuO1xuICAgIFNlbnQ/OiBib29sZWFuO1xuICAgIFNwYW0/OiBib29sZWFuO1xuICAgIFNvZnRib3VuY2VkPzogYm9vbGVhbjtcbiAgICBVbnN1YnNjcmliZWQ/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgR2V0R0VPU3RhdGlzdGljc1F1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uVGltZXN0YW1wUGVyaW9kPiAmXG4gICAgUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJlxuICB7XG4gICAgQ2FtcGFpZ25JRD86IG51bWJlcjtcbiAgICBDb250YWN0c0xpc3Q/OiBudW1iZXI7XG4gICAgQ3VzdG9tQ2FtcGFpZ24/OiBzdHJpbmc7XG4gICAgRnJvbT86IHN0cmluZztcbiAgICBGcm9tRG9tYWluPzogc3RyaW5nO1xuICAgIEZyb21JRD86IG51bWJlcjtcbiAgICBGcm9tVHlwZT86IE1lc3NhZ2UuRnJvbVR5cGU7XG4gICAgSXNEZWxldGVkPzogYm9vbGVhbjtcbiAgICBJc05ld3NsZXR0ZXJUb29sPzogYm9vbGVhbjtcbiAgICBJc1N0YXJyZWQ/OiBib29sZWFuO1xuICAgIE1lc3NhZ2VTdGF0dXM/OiBNZXNzYWdlLk1lc3NhZ2VTdGF0dXM7XG4gICAgUGVyaW9kPzogQ29tbW9uLlBlcmlvZDtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldExpc3RSZWNpcGllbnRTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBCbG9ja2VkPzogYm9vbGVhbjtcbiAgICBCb3VuY2VkPzogYm9vbGVhbjtcbiAgICBDbGljaz86IGJvb2xlYW47XG4gICAgQ29udGFjdD86IG51bWJlcjtcbiAgICBDb250YWN0c0xpc3Q/OiBudW1iZXI7XG4gICAgSXNFeGNsdWRlZEZyb21DYW1wYWlnbnM/OiBib29sZWFuO1xuICAgIElzVW5zdWJzY3JpYmVkPzogYm9vbGVhbjtcbiAgICBMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNYXhMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNaW5MYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNYXhVbnN1YnNjcmliZWRBdD86IHN0cmluZztcbiAgICBNaW5VbnN1YnNjcmliZWRBdD86IHN0cmluZztcbiAgICBPcGVuPzogYm9vbGVhbjtcbiAgICBRdWV1ZWQ/OiBib29sZWFuO1xuICAgIFNlbnQ/OiBib29sZWFuO1xuICAgIFNob3dFeHRyYURhdGE/OiBib29sZWFuO1xuICAgIFNwYW0/OiBib29sZWFuO1xuICAgIFRpbWVab25lPzogc3RyaW5nO1xuICAgIFVuc3Vic2NyaWJlZD86IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRTdGF0Q291bnRlcnNRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlRpbWVzdGFtcFBlcmlvZD4gJlxuICAgIFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICZcbiAge1xuICAgIENvdW50ZXJTb3VyY2U6IENvdW50ZXJTb3VyY2U7XG4gICAgQ291bnRlclJlc29sdXRpb246IENvdW50ZXJSZXNvbHV0aW9uO1xuICAgIENvdW50ZXJUaW1pbmc6IENvdW50ZXJUaW1pbmc7XG4gICAgU291cmNlSUQ/OiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRMaW5rQ2xpY2tTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBDYW1wYWlnbklEOiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRSZWNpcGllbnRFU1BTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBHZXRMaW5rQ2xpY2tTdGF0aXN0aWNzUXVlcnlQYXJhbXMgJlxuICB7XG4gICAgRVNQX05hbWU/OiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRUb3BMaW5rQ2xpY2tlZFF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uVGltZXN0YW1wUGVyaW9kPiAmXG4gICAgUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJlxuICB7XG4gICAgQWN0dWFsQ2xpY2tzPzogYm9vbGVhbjtcbiAgICBDYW1wYWlnbklEPzogbnVtYmVyO1xuICAgIENvbnRhY3Q/OiBudW1iZXI7XG4gICAgQ29udGFjdHNMaXN0PzogbnVtYmVyO1xuICAgIEN1c3RvbUNhbXBhaWduPzogc3RyaW5nO1xuICAgIEZyb20/OiBzdHJpbmc7XG4gICAgRnJvbURvbWFpbj86IHN0cmluZztcbiAgICBGcm9tSUQ/OiBudW1iZXI7XG4gICAgRnJvbVR5cGU/OiBNZXNzYWdlLkZyb21UeXBlO1xuICAgIElzRGVsZXRlZD86IGJvb2xlYW47XG4gICAgSXNOZXdzbGV0dGVyVG9vbD86IGJvb2xlYW47XG4gICAgSXNTdGFycmVkPzogYm9vbGVhbjtcbiAgICBNZXNzYWdlPzogbnVtYmVyO1xuICAgIFBlcmlvZD86IENvbW1vbi5QZXJpb2Q7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRVc2VyQWdlbnRTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5UaW1lc3RhbXBQZXJpb2Q+ICZcbiAgICBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmXG4gIHtcbiAgICBDYW1wYWlnbklEPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdD86IG51bWJlcjtcbiAgICBDdXN0b21DYW1wYWlnbj86IHN0cmluZztcbiAgICBFdmVudD86IEVtYWlsRXZlbnQ7XG4gICAgRXhjbHVkZVBsYXRmb3JtPzogc3RyaW5nO1xuICAgIEZyb20/OiBzdHJpbmc7XG4gICAgRnJvbURvbWFpbj86IHN0cmluZztcbiAgICBGcm9tSUQ/OiBudW1iZXI7XG4gICAgRnJvbVR5cGU/OiBNZXNzYWdlLkZyb21UeXBlO1xuICAgIElzRGVsZXRlZD86IGJvb2xlYW47XG4gICAgSXNOZXdzbGV0dGVyVG9vbD86IGJvb2xlYW47XG4gICAgSXNTdGFycmVkPzogYm9vbGVhbjtcbiAgICBQZXJpb2Q/OiBDb21tb24uUGVyaW9kO1xuICAgIFBsYXRmb3JtPzogc3RyaW5nO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRDYW1wYWlnbk92ZXJ2aWV3UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8Q2FtcGFpZ25PdmVydmlld1tdPjtcblxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0U3RhdGlzdGljc1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENvbnRhY3RTdGF0aXN0aWNbXT47XG5cbiAgZXhwb3J0IHR5cGUgR2V0R0VPU3RhdGlzdGljc1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPEdFT1N0YXRpc3RpY1tdPjtcblxuICBleHBvcnQgdHlwZSBHZXRMaXN0UmVjaXBpZW50U3RhdGlzdGljc1Jlc3BvbnNlPERhdGEgPSBBcnJheTx1bmtub3duPj4gPVxuICAgIENvbW1vbi5SZXNwb25zZTxBcnJheTxMaXN0UmVjaXBpZW50U3RhdGlzdGljPERhdGE+Pj47XG5cbiAgZXhwb3J0IHR5cGUgR2V0U3RhdENvdW50ZXJzUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8U3RhdENvdW50ZXJbXT47XG5cbiAgZXhwb3J0IHR5cGUgR2V0TGlua0NsaWNrU3RhdGlzdGljc1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPExpbmtDbGlja1N0YXRpc3RpY1tdPjtcblxuICBleHBvcnQgdHlwZSBHZXRSZWNpcGllbnRFU1BTdGF0aXN0aWNzUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8UmVjaXBpZW50RVNQU3RhdGlzdGljW10+O1xuXG4gIGV4cG9ydCB0eXBlIEdldFRvcExpbmtDbGlja2VkUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8VG9wTGlua0NsaWNrZWRbXT47XG5cbiAgZXhwb3J0IHR5cGUgR2V0VXNlckFnZW50U3RhdGlzdGljc1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPFVzZXJBZ2VudFN0YXRpc3RpY1tdPjtcbn1cbiIsImltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vQ29tbW9uJztcblxuZXhwb3J0IG5hbWVzcGFjZSBUZW1wbGF0ZSB7XG4gIGV4cG9ydCBlbnVtIENhdGVnb3JpZXMge1xuICAgIEZ1bGwgPSAnZnVsbCcsXG4gICAgQmFzaWMgPSAnYmFzaWMnLFxuICAgIE5ld3NMZXR0ZXIgPSAnbmV3c2xldHRlcicsXG4gICAgRUNvbW1lcmNlID0gJ2UtY29tbWVyY2UnLFxuICAgIEV2ZW50cyA9ICdldmVudHMnLFxuICAgIFRyYXZlbCA9ICd0cmF2ZWwnLFxuICAgIFNwb3J0cyA9ICdzcG9ydHMnLFxuICAgIFdlbGNvbWUgPSAnd2VsY29tZScsXG4gICAgQ29udGFjdFByb3BlcnR5VXBkYXRlID0gJ2NvbnRhY3QtcHJvcGVydHktdXBkYXRlJyxcbiAgICBTdXBwb3J0ID0gJ3N1cHBvcnQnLFxuICAgIEludm9pY2UgPSAnaW52b2ljZScsXG4gICAgQW5uaXZlcnNhcnkgPSAnYW5uaXZlcnNhcnknLFxuICAgIEFjY291bnQgPSAnYWNjb3VudCcsXG4gICAgQWN0aXZhdGlvbiA9ICdhY3RpdmF0aW9uJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gQ2F0ZWdvcmllc1NlbGVjdGlvbk1ldGhvZCB7XG4gICAgQ29udGFpbnNBbnkgPSAnY29udGFpbnNhbnknLFxuICAgIENvbnRhaW5zQWxsID0gJ2NvbnRhaW5zYWxsJyxcbiAgICBJc1N1YlNldCA9ICdpc3N1YnNldCdcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEVkaXRNb2RlIHtcbiAgICBEcmFnQW5kRHJvcEJ1aWxkZXIgPSAxLFxuICAgIEhUTUxCdWlsZGVyID0gMixcbiAgICBTYXZlZFNlY3Rpb25CdWlsZGVyID0gMyxcbiAgICBNSk1MQnVpbGRlciA9IDRcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIE93bmVyVHlwZSB7XG4gICAgQXBpS2V5ID0gJ2FwaWtleScsXG4gICAgVXNlciA9ICd1c2VyJyxcbiAgICBHbG9iYWwgPSAnZ2xvYmFsJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gUHVycG9zZXMge1xuICAgIE1hcmtldGluZyA9ICdtYXJrZXRpbmcnLFxuICAgIFRyYW5zYWN0aW9uYWwgPSAndHJhbnNhY3Rpb25hbCcsXG4gICAgQXV0b21hdGlvbiA9ICdhdXRvbWF0aW9uJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gUHVycG9zZXNTZWxlY3Rpb25NZXRob2Qge1xuICAgIENvbnRhaW5zQW55ID0gJ2NvbnRhaW5zYW55JyxcbiAgICBDb250YWluc0FsbCA9ICdjb250YWluc2FsbCcsXG4gICAgSXNTdWJTZXQgPSAnaXNzdWJzZXQnXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEhlYWRlcnMge1xuICAgIEZyb206IHN0cmluZztcbiAgICBTdWJqZWN0OiBzdHJpbmc7XG4gICAgJ1JlcGx5LXRvJzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZSB7XG4gICAgQXV0aG9yOiBzdHJpbmc7XG4gICAgQ2F0ZWdvcmllczogQ2F0ZWdvcmllcztcbiAgICBDb3B5cmlnaHQ6IHN0cmluZztcbiAgICBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIEVkaXRNb2RlOiBFZGl0TW9kZTtcbiAgICBJc1N0YXJyZWQ6IGJvb2xlYW47XG4gICAgSXNUZXh0UGFydEdlbmVyYXRpb25FbmFibGVkOiBib29sZWFuO1xuICAgIExvY2FsZTogc3RyaW5nO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBPd25lclR5cGU6IE93bmVyVHlwZTtcbiAgICBQcmVzZXRzOiBzdHJpbmc7XG4gICAgUHVycG9zZXM6IFB1cnBvc2VzO1xuICAgIElEOiBudW1iZXI7XG4gICAgT3duZXJJZDogbnVtYmVyO1xuICAgIFByZXZpZXdzOiBzdHJpbmc7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgTGFzdFVwZGF0ZWRBdDogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgVGVtcGxhdGVEZXRhaWxDb250ZW50ID0ge1xuICAgIEhlYWRlcnM6IEhlYWRlcnM7XG4gICAgJ0h0bWwtcGFydCc6IHN0cmluZztcbiAgICAnVGV4dC1wYXJ0Jzogc3RyaW5nO1xuICAgIE1KTUxDb250ZW50OiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdFRlbXBsYXRlQm9keSA9XG4gICAgUGFydGlhbDxPbWl0PFRlbXBsYXRlLCAnTmFtZScgfCAnSUQnIHwgJ093bmVySWQnIHwgJ1ByZXZpZXdzJyB8ICdDcmVhdGVkQXQnIHwgJ0xhc3RVcGRhdGVkQXQnPj4gJlxuICB7XG4gICAgTmFtZTogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0VGVtcGxhdGVCb2R5ID0gUGFydGlhbDxQb3N0VGVtcGxhdGVCb2R5PlxuXG4gIGV4cG9ydCB0eXBlIEdldFRlbXBsYXRlUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBDYXRlZ29yaWVzPzogc3RyaW5nO1xuICAgIENhdGVnb3JpZXNTZWxlY3Rpb25NZXRob2Q/OiBDYXRlZ29yaWVzU2VsZWN0aW9uTWV0aG9kO1xuICAgIEVkaXRNb2RlPzogRWRpdE1vZGU7XG4gICAgTmFtZT86IHN0cmluZztcbiAgICBPd25lclR5cGU/OiBPd25lclR5cGU7XG4gICAgUHVycG9zZXM/OiBQdXJwb3NlcztcbiAgICBQdXJwb3Nlc1NlbGVjdGlvbk1ldGhvZD86IFB1cnBvc2VzU2VsZWN0aW9uTWV0aG9kO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUG9zdFRlbXBsYXRlRGV0YWlsQ29udGVudEJvZHkgPVxuICAgIFBhcnRpYWw8T21pdDxUZW1wbGF0ZURldGFpbENvbnRlbnQsICdIZWFkZXJzJz4+ICZcbiAge1xuICAgIEhlYWRlcnM/OiBQYXJ0aWFsPEhlYWRlcnM+O1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0VGVtcGxhdGVEZXRhaWxDb250ZW50Qm9keSA9IFBvc3RUZW1wbGF0ZURldGFpbENvbnRlbnRCb2R5XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIFRlbXBsYXRlUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8VGVtcGxhdGVbXT47XG4gIHR5cGUgVGVtcGxhdGVEZXRhaWxDb250ZW50UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8VGVtcGxhdGVEZXRhaWxDb250ZW50W10+O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RUZW1wbGF0ZVJlc3BvbnNlID0gVGVtcGxhdGVSZXNwb25zZVxuICBleHBvcnQgdHlwZSBQdXRUZW1wbGF0ZVJlc3BvbnNlID0gVGVtcGxhdGVSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRUZW1wbGF0ZVJlc3BvbnNlID0gVGVtcGxhdGVSZXNwb25zZVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RUZW1wbGF0ZURldGFpbENvbnRlbnRSZXNwb25zZSA9IFRlbXBsYXRlRGV0YWlsQ29udGVudFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFB1dFRlbXBsYXRlRGV0YWlsQ29udGVudFJlc3BvbnNlID0gVGVtcGxhdGVEZXRhaWxDb250ZW50UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0VGVtcGxhdGVEZXRhaWxDb250ZW50UmVzcG9uc2UgPSBUZW1wbGF0ZURldGFpbENvbnRlbnRSZXNwb25zZVxufVxuIiwiaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi9Db21tb24nO1xuXG5leHBvcnQgbmFtZXNwYWNlIFdlYmhvb2sge1xuICBleHBvcnQgZW51bSBFdmVudFR5cGUge1xuICAgIE9wZW4gPSAnb3BlbicsXG4gICAgQ2xpY2sgPSAnY2xpY2snLFxuICAgIEJvdW5jZSA9ICdib3VuY2UnLFxuICAgIFNwYW0gPSAnc3BhbScsXG4gICAgQmxvY2tlZCA9ICdibG9ja2VkJyxcbiAgICBVblN1YiA9ICd1bnN1YicsXG4gICAgU2VudCA9ICdzZW50JyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEV2ZW50VHlwZVZhbHVlIHtcbiAgICBDbGljayA9IDEsXG4gICAgQm91bmNlID0gMixcbiAgICBTcGFtID0gMyxcbiAgICBCbG9ja2VkID0gNCxcbiAgICBVbnN1YnNjcmliZSA9IDUsXG4gICAgT3BlbiA9IDYsXG4gICAgU2VudCA9IDcsXG4gIH1cblxuICBleHBvcnQgZW51bSBTdGF0dXMge1xuICAgIERlYWQgPSAnZGVhZCcsXG4gICAgQWxpdmUgPSAnYWxpdmUnXG4gIH1cblxuICBleHBvcnQgdHlwZSBWZXJzaW9uID0gMSB8IDI7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBFdmVudENhbGxiYWNrVXJsIHtcbiAgICBJRDogbnVtYmVyO1xuICAgIEV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICAgIElzQmFja3VwOiBib29sZWFuO1xuICAgIFN0YXR1czogU3RhdHVzO1xuICAgIEFQSUtleUlEOiBudW1iZXI7XG4gICAgVmVyc2lvbjogVmVyc2lvbjtcbiAgICBVcmw6IHN0cmluZztcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBQb3N0RXZlbnRDYWxsYmFja1VybEJvZHkgPSB7XG4gICAgVXJsOiBzdHJpbmc7XG4gICAgRXZlbnRUeXBlPzogRXZlbnRUeXBlO1xuICAgIElzQmFja3VwPzogYm9vbGVhbjtcbiAgICBTdGF0dXM/OiBTdGF0dXM7XG4gIH1cblxuICBleHBvcnQgdHlwZSBQdXRFdmVudENhbGxiYWNrVXJsQm9keSA9IFBhcnRpYWw8UG9zdEV2ZW50Q2FsbGJhY2tVcmxCb2R5PlxuXG4gIGV4cG9ydCB0eXBlIEdldEV2ZW50Q2FsbGJhY2tVcmxRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIEJhY2t1cD86IGJvb2xlYW47XG4gICAgRXZlbnRUeXBlPzogRXZlbnRUeXBlVmFsdWU7XG4gICAgU3RhdHVzPzogc3RyaW5nO1xuICAgIFZlcnNpb24/OiBWZXJzaW9uO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIEV2ZW50Q2FsbGJhY2tVcmxSZXNwb25zZSA9IHtcbiAgICBDb3VudDogbnVtYmVyO1xuICAgIFRvdGFsOiBudW1iZXI7XG4gICAgRGF0YTogRXZlbnRDYWxsYmFja1VybFtdO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RFdmVudENhbGxiYWNrVXJsUmVzcG9uc2UgPSBFdmVudENhbGxiYWNrVXJsUmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0RXZlbnRDYWxsYmFja1VybFJlc3BvbnNlID0gRXZlbnRDYWxsYmFja1VybFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldEV2ZW50Q2FsbGJhY2tVcmxSZXNwb25zZSA9IEV2ZW50Q2FsbGJhY2tVcmxSZXNwb25zZVxufVxuIiwiLy8gQ09NTU9OXG5leHBvcnQgeyBMaWJyYXJ5UmVzcG9uc2UsIExpYnJhcnlMb2NhbFJlc3BvbnNlIH0gZnJvbSAnLi9MaWJyYXJ5UmVzcG9uc2UnO1xuZXhwb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi9Db21tb24nO1xuXG4vLyBTRU5EXG5leHBvcnQge1xuICBTZW5kRW1haWxWMyxcbiAgU2VuZEVtYWlsVjNfMSxcbn0gZnJvbSAnLi9TZW5kRW1haWwnO1xuXG4vLyBBUElcbmV4cG9ydCB7IE1lc3NhZ2UgfSBmcm9tICcuL01lc3NhZ2UnO1xuZXhwb3J0IHtcbiAgQ29udGFjdCxcbiAgQ29udGFjdExpc3QsXG4gIEJ1bGtDb250YWN0TWFuYWdlbWVudCxcbiAgQ29udGFjdFByb3BlcnRpZXMsXG4gIENvbnRhY3RTdWJzY3JpcHRpb24sXG4gIENvbnRhY3RWZXJpZmljYXRpb24sXG59IGZyb20gJy4vQ29udGFjdCc7XG5leHBvcnQge1xuICBEcmFmdENhbXBhaWduLFxuICBTZW50Q2FtcGFpZ24sXG59IGZyb20gJy4vQ2FtcGFpZ24nO1xuZXhwb3J0IHsgU2VnbWVudGF0aW9uIH0gZnJvbSAnLi9TZWdtZW50YXRpb24nO1xuZXhwb3J0IHsgVGVtcGxhdGUgfSBmcm9tICcuL1RlbXBsYXRlJztcbmV4cG9ydCB7IFN0YXRpc3RpYyB9IGZyb20gJy4vU3RhdGlzdGljJztcbmV4cG9ydCB7IE1lc3NhZ2VFdmVudCB9IGZyb20gJy4vTWVzc2FnZUV2ZW50JztcbmV4cG9ydCB7IFdlYmhvb2sgfSBmcm9tICcuL1dlYmhvb2snO1xuZXhwb3J0IHsgUGFyc2UgfSBmcm9tICcuL1BhcnNlJztcbmV4cG9ydCB7XG4gIFNlbmRlcixcbiAgTWV0YXNlbmRlcixcbiAgRE5TLFxufSBmcm9tICcuL1NlbmRlckFkZHJlc3NBbmREb21haW4nO1xuZXhwb3J0IHtcbiAgQVBJS2V5Q29uZmlndXJhdGlvbixcbiAgQWNjb3VudFNldHRpbmcsXG59IGZyb20gJy4vU2V0dGluZyc7XG5cbi8vIFNNU1xuZXhwb3J0IHsgU2VuZE1lc3NhZ2UgfSBmcm9tICcuL1NlbmRNZXNzYWdlJztcbmV4cG9ydCB7IFNNU01lc3NhZ2UgfSBmcm9tICcuL1NNU01lc3NhZ2UnO1xuIiwiaW1wb3J0IGlzTmlsIGZyb20gJy4vaXNOaWwnO1xuaW1wb3J0IGlzTnVsbCBmcm9tICcuL2lzTnVsbCc7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSAnLi9pc1VuZGVmaW5lZCc7XG5pbXBvcnQgaXNQdXJlT2JqZWN0IGZyb20gJy4vaXNQdXJlT2JqZWN0JztcbmltcG9ydCBzZXRWYWx1ZUlmTm90TmlsIGZyb20gJy4vc2V0VmFsdWVJZk5vdE5pbCc7XG5cbmV4cG9ydCB7XG4gIGlzTmlsLFxuICBpc051bGwsXG4gIGlzVW5kZWZpbmVkLFxuICBpc1B1cmVPYmplY3QsXG4gIHNldFZhbHVlSWZOb3ROaWwsXG59O1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG5pbXBvcnQgaXNOdWxsIGZyb20gJy4vaXNOdWxsJztcbmltcG9ydCBpc1VuZGVmaW5lZCBmcm9tICcuL2lzVW5kZWZpbmVkJztcbi8qbGliKi9cbi8qb3RoZXIqL1xuXG5mdW5jdGlvbiBpc05pbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNVbmRlZmluZWQodmFsdWUpIHx8IGlzTnVsbCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTmlsO1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG4vKmxpYiovXG4vKm90aGVyKi9cblxuZnVuY3Rpb24gaXNOdWxsKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVsbCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNOdWxsO1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG4vKmxpYiovXG4vKm90aGVyKi9cblxuZnVuY3Rpb24gaXNQdXJlT2JqZWN0KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG4gICAgJiYgdmFsdWUgIT09IG51bGxcbiAgICAmJiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpID09PSBudWxsKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQdXJlT2JqZWN0O1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG4vKmxpYiovXG4vKm90aGVyKi9cblxuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyB1bmRlZmluZWQge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNVbmRlZmluZWQ7XG4iLCIvKmV4dGVybmFsIG1vZHVsZXMqL1xuLyp0eXBlcyovXG5pbXBvcnQgeyBUT2JqZWN0IH0gZnJvbSAnLi4vdHlwZXMnO1xuLyp1dGlscyovXG5pbXBvcnQgaXNOaWwgZnJvbSAnLi9pc05pbCc7XG5pbXBvcnQgaXNOdWxsIGZyb20gJy4vaXNOdWxsJztcbi8qbGliKi9cbi8qb3RoZXIqL1xuXG5mdW5jdGlvbiBzZXRWYWx1ZUlmTm90TmlsKFxuICB0YXJnZXRPYmplY3Q6IFRPYmplY3QuVW5rbm93blJlYyxcbiAgcGF0aDogc3RyaW5nLFxuICB2YWx1ZTogdW5rbm93bixcbik6IHZvaWQge1xuICBpZiAodHlwZW9mIHRhcmdldE9iamVjdCAhPT0gJ29iamVjdCcgfHwgaXNOdWxsKHRhcmdldE9iamVjdCkpIHtcbiAgICB0aHJvdyBFcnJvcignQXJndW1lbnQgXCJ0YXJnZXRPYmplY3RcIiBpcyBub3Qgb2JqZWN0Jyk7XG4gIH1cblxuICBpZiAoIXBhdGgpIHtcbiAgICB0aHJvdyBFcnJvcignQXJndW1lbnQgXCJwYXRoXCIgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIGlmICghaXNOaWwodmFsdWUpKSB7XG4gICAgdGFyZ2V0T2JqZWN0W3BhdGhdID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc2V0VmFsdWVJZk5vdE5pbDtcbiIsIjsoZnVuY3Rpb24gKGdsb2JhbE9iamVjdCkge1xyXG4gICd1c2Ugc3RyaWN0JztcclxuXHJcbi8qXHJcbiAqICAgICAgYmlnbnVtYmVyLmpzIHY5LjAuMVxyXG4gKiAgICAgIEEgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBhcmJpdHJhcnktcHJlY2lzaW9uIGFyaXRobWV0aWMuXHJcbiAqICAgICAgaHR0cHM6Ly9naXRodWIuY29tL01pa2VNY2wvYmlnbnVtYmVyLmpzXHJcbiAqICAgICAgQ29weXJpZ2h0IChjKSAyMDIwIE1pY2hhZWwgTWNsYXVnaGxpbiA8TThjaDg4bEBnbWFpbC5jb20+XHJcbiAqICAgICAgTUlUIExpY2Vuc2VkLlxyXG4gKlxyXG4gKiAgICAgIEJpZ051bWJlci5wcm90b3R5cGUgbWV0aG9kcyAgICAgfCAgQmlnTnVtYmVyIG1ldGhvZHNcclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBhYnNvbHV0ZVZhbHVlICAgICAgICAgICAgYWJzICAgIHwgIGNsb25lXHJcbiAqICAgICAgY29tcGFyZWRUbyAgICAgICAgICAgICAgICAgICAgICB8ICBjb25maWcgICAgICAgICAgICAgICBzZXRcclxuICogICAgICBkZWNpbWFsUGxhY2VzICAgICAgICAgICAgZHAgICAgIHwgICAgICBERUNJTUFMX1BMQUNFU1xyXG4gKiAgICAgIGRpdmlkZWRCeSAgICAgICAgICAgICAgICBkaXYgICAgfCAgICAgIFJPVU5ESU5HX01PREVcclxuICogICAgICBkaXZpZGVkVG9JbnRlZ2VyQnkgICAgICAgaWRpdiAgIHwgICAgICBFWFBPTkVOVElBTF9BVFxyXG4gKiAgICAgIGV4cG9uZW50aWF0ZWRCeSAgICAgICAgICBwb3cgICAgfCAgICAgIFJBTkdFXHJcbiAqICAgICAgaW50ZWdlclZhbHVlICAgICAgICAgICAgICAgICAgICB8ICAgICAgQ1JZUFRPXHJcbiAqICAgICAgaXNFcXVhbFRvICAgICAgICAgICAgICAgIGVxICAgICB8ICAgICAgTU9EVUxPX01PREVcclxuICogICAgICBpc0Zpbml0ZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICBQT1dfUFJFQ0lTSU9OXHJcbiAqICAgICAgaXNHcmVhdGVyVGhhbiAgICAgICAgICAgIGd0ICAgICB8ICAgICAgRk9STUFUXHJcbiAqICAgICAgaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyAgIGd0ZSAgICB8ICAgICAgQUxQSEFCRVRcclxuICogICAgICBpc0ludGVnZXIgICAgICAgICAgICAgICAgICAgICAgIHwgIGlzQmlnTnVtYmVyXHJcbiAqICAgICAgaXNMZXNzVGhhbiAgICAgICAgICAgICAgIGx0ICAgICB8ICBtYXhpbXVtICAgICAgICAgICAgICBtYXhcclxuICogICAgICBpc0xlc3NUaGFuT3JFcXVhbFRvICAgICAgbHRlICAgIHwgIG1pbmltdW0gICAgICAgICAgICAgIG1pblxyXG4gKiAgICAgIGlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcmFuZG9tXHJcbiAqICAgICAgaXNOZWdhdGl2ZSAgICAgICAgICAgICAgICAgICAgICB8ICBzdW1cclxuICogICAgICBpc1Bvc2l0aXZlICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBpc1plcm8gICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBtaW51cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBtb2R1bG8gICAgICAgICAgICAgICAgICAgbW9kICAgIHxcclxuICogICAgICBtdWx0aXBsaWVkQnkgICAgICAgICAgICAgdGltZXMgIHxcclxuICogICAgICBuZWdhdGVkICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBwbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBwcmVjaXNpb24gICAgICAgICAgICAgICAgc2QgICAgIHxcclxuICogICAgICBzaGlmdGVkQnkgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBzcXVhcmVSb290ICAgICAgICAgICAgICAgc3FydCAgIHxcclxuICogICAgICB0b0V4cG9uZW50aWFsICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0ZpeGVkICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0ZyYWN0aW9uICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0pTT04gICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b051bWJlciAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b1ByZWNpc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB2YWx1ZU9mICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICpcclxuICovXHJcblxyXG5cclxuICB2YXIgQmlnTnVtYmVyLFxyXG4gICAgaXNOdW1lcmljID0gL14tPyg/OlxcZCsoPzpcXC5cXGQqKT98XFwuXFxkKykoPzplWystXT9cXGQrKT8kL2ksXHJcbiAgICBtYXRoY2VpbCA9IE1hdGguY2VpbCxcclxuICAgIG1hdGhmbG9vciA9IE1hdGguZmxvb3IsXHJcblxyXG4gICAgYmlnbnVtYmVyRXJyb3IgPSAnW0JpZ051bWJlciBFcnJvcl0gJyxcclxuICAgIHRvb01hbnlEaWdpdHMgPSBiaWdudW1iZXJFcnJvciArICdOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNhbnQgZGlnaXRzOiAnLFxyXG5cclxuICAgIEJBU0UgPSAxZTE0LFxyXG4gICAgTE9HX0JBU0UgPSAxNCxcclxuICAgIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFmZmZmZmZmZmZmZmZmLCAgICAgICAgIC8vIDJeNTMgLSAxXHJcbiAgICAvLyBNQVhfSU5UMzIgPSAweDdmZmZmZmZmLCAgICAgICAgICAgICAgICAgICAvLyAyXjMxIC0gMVxyXG4gICAgUE9XU19URU4gPSBbMSwgMTAsIDEwMCwgMWUzLCAxZTQsIDFlNSwgMWU2LCAxZTcsIDFlOCwgMWU5LCAxZTEwLCAxZTExLCAxZTEyLCAxZTEzXSxcclxuICAgIFNRUlRfQkFTRSA9IDFlNyxcclxuXHJcbiAgICAvLyBFRElUQUJMRVxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBERUNJTUFMX1BMQUNFUywgVE9fRVhQX05FRywgVE9fRVhQX1BPUywgTUlOX0VYUCwgTUFYX0VYUCwgYW5kXHJcbiAgICAvLyB0aGUgYXJndW1lbnRzIHRvIHRvRXhwb25lbnRpYWwsIHRvRml4ZWQsIHRvRm9ybWF0LCBhbmQgdG9QcmVjaXNpb24uXHJcbiAgICBNQVggPSAxRTk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIE1BWF9JTlQzMlxyXG5cclxuXHJcbiAgLypcclxuICAgKiBDcmVhdGUgYW5kIHJldHVybiBhIEJpZ051bWJlciBjb25zdHJ1Y3Rvci5cclxuICAgKi9cclxuICBmdW5jdGlvbiBjbG9uZShjb25maWdPYmplY3QpIHtcclxuICAgIHZhciBkaXYsIGNvbnZlcnRCYXNlLCBwYXJzZU51bWVyaWMsXHJcbiAgICAgIFAgPSBCaWdOdW1iZXIucHJvdG90eXBlID0geyBjb25zdHJ1Y3RvcjogQmlnTnVtYmVyLCB0b1N0cmluZzogbnVsbCwgdmFsdWVPZjogbnVsbCB9LFxyXG4gICAgICBPTkUgPSBuZXcgQmlnTnVtYmVyKDEpLFxyXG5cclxuXHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRURJVEFCTEUgQ09ORklHIERFRkFVTFRTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gICAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZXMgYmVsb3cgbXVzdCBiZSBpbnRlZ2VycyB3aXRoaW4gdGhlIGluY2x1c2l2ZSByYW5nZXMgc3RhdGVkLlxyXG4gICAgICAvLyBUaGUgdmFsdWVzIGNhbiBhbHNvIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUgdXNpbmcgQmlnTnVtYmVyLnNldC5cclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgZGl2aXNpb24uXHJcbiAgICAgIERFQ0lNQUxfUExBQ0VTID0gMjAsICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFRoZSByb3VuZGluZyBtb2RlIHVzZWQgd2hlbiByb3VuZGluZyB0byB0aGUgYWJvdmUgZGVjaW1hbCBwbGFjZXMsIGFuZCB3aGVuIHVzaW5nXHJcbiAgICAgIC8vIHRvRXhwb25lbnRpYWwsIHRvRml4ZWQsIHRvRm9ybWF0IGFuZCB0b1ByZWNpc2lvbiwgYW5kIHJvdW5kIChkZWZhdWx0IHZhbHVlKS5cclxuICAgICAgLy8gVVAgICAgICAgICAwIEF3YXkgZnJvbSB6ZXJvLlxyXG4gICAgICAvLyBET1dOICAgICAgIDEgVG93YXJkcyB6ZXJvLlxyXG4gICAgICAvLyBDRUlMICAgICAgIDIgVG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIEZMT09SICAgICAgMyBUb3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgLy8gSEFMRl9VUCAgICA0IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB1cC5cclxuICAgICAgLy8gSEFMRl9ET1dOICA1IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCBkb3duLlxyXG4gICAgICAvLyBIQUxGX0VWRU4gIDYgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIHRvd2FyZHMgZXZlbiBuZWlnaGJvdXIuXHJcbiAgICAgIC8vIEhBTEZfQ0VJTCAgNyBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIEhBTEZfRkxPT1IgOCBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyAtSW5maW5pdHkuXHJcbiAgICAgIFJPVU5ESU5HX01PREUgPSA0LCAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA4XHJcblxyXG4gICAgICAvLyBFWFBPTkVOVElBTF9BVCA6IFtUT19FWFBfTkVHICwgVE9fRVhQX1BPU11cclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYmVuZWF0aCB3aGljaCB0b1N0cmluZyByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAvLyBOdW1iZXIgdHlwZTogLTdcclxuICAgICAgVE9fRVhQX05FRyA9IC03LCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIC1NQVhcclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYWJvdmUgd2hpY2ggdG9TdHJpbmcgcmV0dXJucyBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAgLy8gTnVtYmVyIHR5cGU6IDIxXHJcbiAgICAgIFRPX0VYUF9QT1MgPSAyMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFJBTkdFIDogW01JTl9FWFAsIE1BWF9FWFBdXHJcblxyXG4gICAgICAvLyBUaGUgbWluaW11bSBleHBvbmVudCB2YWx1ZSwgYmVuZWF0aCB3aGljaCB1bmRlcmZsb3cgdG8gemVybyBvY2N1cnMuXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAtMzI0ICAoNWUtMzI0KVxyXG4gICAgICBNSU5fRVhQID0gLTFlNywgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0xIHRvIC1NQVhcclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIGV4cG9uZW50IHZhbHVlLCBhYm92ZSB3aGljaCBvdmVyZmxvdyB0byBJbmZpbml0eSBvY2N1cnMuXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAgMzA4ICAoMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgpXHJcbiAgICAgIC8vIEZvciBNQVhfRVhQID4gMWU3LCBlLmcuIG5ldyBCaWdOdW1iZXIoJzFlMTAwMDAwMDAwJykucGx1cygxKSBtYXkgYmUgc2xvdy5cclxuICAgICAgTUFYX0VYUCA9IDFlNywgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIHRvIE1BWFxyXG5cclxuICAgICAgLy8gV2hldGhlciB0byB1c2UgY3J5cHRvZ3JhcGhpY2FsbHktc2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiwgaWYgYXZhaWxhYmxlLlxyXG4gICAgICBDUllQVE8gPSBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUgb3IgZmFsc2VcclxuXHJcbiAgICAgIC8vIFRoZSBtb2R1bG8gbW9kZSB1c2VkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1vZHVsdXM6IGEgbW9kIG4uXHJcbiAgICAgIC8vIFRoZSBxdW90aWVudCAocSA9IGEgLyBuKSBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyByb3VuZGluZyBtb2RlLlxyXG4gICAgICAvLyBUaGUgcmVtYWluZGVyIChyKSBpcyBjYWxjdWxhdGVkIGFzOiByID0gYSAtIG4gKiBxLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBVUCAgICAgICAgMCBUaGUgcmVtYWluZGVyIGlzIHBvc2l0aXZlIGlmIHRoZSBkaXZpZGVuZCBpcyBuZWdhdGl2ZSwgZWxzZSBpcyBuZWdhdGl2ZS5cclxuICAgICAgLy8gRE9XTiAgICAgIDEgVGhlIHJlbWFpbmRlciBoYXMgdGhlIHNhbWUgc2lnbiBhcyB0aGUgZGl2aWRlbmQuXHJcbiAgICAgIC8vICAgICAgICAgICAgIFRoaXMgbW9kdWxvIG1vZGUgaXMgY29tbW9ubHkga25vd24gYXMgJ3RydW5jYXRlZCBkaXZpc2lvbicgYW5kIGlzXHJcbiAgICAgIC8vICAgICAgICAgICAgIGVxdWl2YWxlbnQgdG8gKGEgJSBuKSBpbiBKYXZhU2NyaXB0LlxyXG4gICAgICAvLyBGTE9PUiAgICAgMyBUaGUgcmVtYWluZGVyIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpc29yIChQeXRob24gJSkuXHJcbiAgICAgIC8vIEhBTEZfRVZFTiA2IFRoaXMgbW9kdWxvIG1vZGUgaW1wbGVtZW50cyB0aGUgSUVFRSA3NTQgcmVtYWluZGVyIGZ1bmN0aW9uLlxyXG4gICAgICAvLyBFVUNMSUQgICAgOSBFdWNsaWRpYW4gZGl2aXNpb24uIHEgPSBzaWduKG4pICogZmxvb3IoYSAvIGFicyhuKSkuXHJcbiAgICAgIC8vICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgaXMgYWx3YXlzIHBvc2l0aXZlLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBUaGUgdHJ1bmNhdGVkIGRpdmlzaW9uLCBmbG9vcmVkIGRpdmlzaW9uLCBFdWNsaWRpYW4gZGl2aXNpb24gYW5kIElFRUUgNzU0IHJlbWFpbmRlclxyXG4gICAgICAvLyBtb2RlcyBhcmUgY29tbW9ubHkgdXNlZCBmb3IgdGhlIG1vZHVsdXMgb3BlcmF0aW9uLlxyXG4gICAgICAvLyBBbHRob3VnaCB0aGUgb3RoZXIgcm91bmRpbmcgbW9kZXMgY2FuIGFsc28gYmUgdXNlZCwgdGhleSBtYXkgbm90IGdpdmUgdXNlZnVsIHJlc3VsdHMuXHJcbiAgICAgIE1PRFVMT19NT0RFID0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA5XHJcblxyXG4gICAgICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIG9mIHRoZSByZXN1bHQgb2YgdGhlIGV4cG9uZW50aWF0ZWRCeSBvcGVyYXRpb24uXHJcbiAgICAgIC8vIElmIFBPV19QUkVDSVNJT04gaXMgMCwgdGhlcmUgd2lsbCBiZSB1bmxpbWl0ZWQgc2lnbmlmaWNhbnQgZGlnaXRzLlxyXG4gICAgICBQT1dfUFJFQ0lTSU9OID0gMCwgICAgICAgICAgICAgICAgICAgIC8vIDAgdG8gTUFYXHJcblxyXG4gICAgICAvLyBUaGUgZm9ybWF0IHNwZWNpZmljYXRpb24gdXNlZCBieSB0aGUgQmlnTnVtYmVyLnByb3RvdHlwZS50b0Zvcm1hdCBtZXRob2QuXHJcbiAgICAgIEZPUk1BVCA9IHtcclxuICAgICAgICBwcmVmaXg6ICcnLFxyXG4gICAgICAgIGdyb3VwU2l6ZTogMyxcclxuICAgICAgICBzZWNvbmRhcnlHcm91cFNpemU6IDAsXHJcbiAgICAgICAgZ3JvdXBTZXBhcmF0b3I6ICcsJyxcclxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLicsXHJcbiAgICAgICAgZnJhY3Rpb25Hcm91cFNpemU6IDAsXHJcbiAgICAgICAgZnJhY3Rpb25Hcm91cFNlcGFyYXRvcjogJ1xceEEwJywgICAgICAvLyBub24tYnJlYWtpbmcgc3BhY2VcclxuICAgICAgICBzdWZmaXg6ICcnXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICAvLyBUaGUgYWxwaGFiZXQgdXNlZCBmb3IgYmFzZSBjb252ZXJzaW9uLiBJdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25nLCB3aXRoIG5vICcrJyxcclxuICAgICAgLy8gJy0nLCAnLicsIHdoaXRlc3BhY2UsIG9yIHJlcGVhdGVkIGNoYXJhY3Rlci5cclxuICAgICAgLy8gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJF8nXHJcbiAgICAgIEFMUEhBQkVUID0gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7XHJcblxyXG5cclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cclxuICAgIC8vIENPTlNUUlVDVE9SXHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBUaGUgQmlnTnVtYmVyIGNvbnN0cnVjdG9yIGFuZCBleHBvcnRlZCBmdW5jdGlvbi5cclxuICAgICAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIGEgQmlnTnVtYmVyIG9iamVjdC5cclxuICAgICAqXHJcbiAgICAgKiB2IHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gQSBudW1lcmljIHZhbHVlLlxyXG4gICAgICogW2JdIHtudW1iZXJ9IFRoZSBiYXNlIG9mIHYuIEludGVnZXIsIDIgdG8gQUxQSEFCRVQubGVuZ3RoIGluY2x1c2l2ZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gQmlnTnVtYmVyKHYsIGIpIHtcclxuICAgICAgdmFyIGFscGhhYmV0LCBjLCBjYXNlQ2hhbmdlZCwgZSwgaSwgaXNOdW0sIGxlbiwgc3RyLFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgLy8gRW5hYmxlIGNvbnN0cnVjdG9yIGNhbGwgd2l0aG91dCBgbmV3YC5cclxuICAgICAgaWYgKCEoeCBpbnN0YW5jZW9mIEJpZ051bWJlcikpIHJldHVybiBuZXcgQmlnTnVtYmVyKHYsIGIpO1xyXG5cclxuICAgICAgaWYgKGIgPT0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAodiAmJiB2Ll9pc0JpZ051bWJlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgeC5zID0gdi5zO1xyXG5cclxuICAgICAgICAgIGlmICghdi5jIHx8IHYuZSA+IE1BWF9FWFApIHtcclxuICAgICAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodi5lIDwgTUlOX0VYUCkge1xyXG4gICAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICAgIHguYyA9IHYuYy5zbGljZSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgoaXNOdW0gPSB0eXBlb2YgdiA9PSAnbnVtYmVyJykgJiYgdiAqIDAgPT0gMCkge1xyXG5cclxuICAgICAgICAgIC8vIFVzZSBgMSAvIG5gIHRvIGhhbmRsZSBtaW51cyB6ZXJvIGFsc28uXHJcbiAgICAgICAgICB4LnMgPSAxIC8gdiA8IDAgPyAodiA9IC12LCAtMSkgOiAxO1xyXG5cclxuICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgaW50ZWdlcnMsIHdoZXJlIG4gPCAyMTQ3NDgzNjQ4ICgyKiozMSkuXHJcbiAgICAgICAgICBpZiAodiA9PT0gfn52KSB7XHJcbiAgICAgICAgICAgIGZvciAoZSA9IDAsIGkgPSB2OyBpID49IDEwOyBpIC89IDEwLCBlKyspO1xyXG5cclxuICAgICAgICAgICAgaWYgKGUgPiBNQVhfRVhQKSB7XHJcbiAgICAgICAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgICAgIHguYyA9IFt2XTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHN0ciA9IFN0cmluZyh2KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIGlmICghaXNOdW1lcmljLnRlc3Qoc3RyID0gU3RyaW5nKHYpKSkgcmV0dXJuIHBhcnNlTnVtZXJpYyh4LCBzdHIsIGlzTnVtKTtcclxuXHJcbiAgICAgICAgICB4LnMgPSBzdHIuY2hhckNvZGVBdCgwKSA9PSA0NSA/IChzdHIgPSBzdHIuc2xpY2UoMSksIC0xKSA6IDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgICAgIGlmICgoZSA9IHN0ci5pbmRleE9mKCcuJykpID4gLTEpIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG5cclxuICAgICAgICAvLyBFeHBvbmVudGlhbCBmb3JtP1xyXG4gICAgICAgIGlmICgoaSA9IHN0ci5zZWFyY2goL2UvaSkpID4gMCkge1xyXG5cclxuICAgICAgICAgIC8vIERldGVybWluZSBleHBvbmVudC5cclxuICAgICAgICAgIGlmIChlIDwgMCkgZSA9IGk7XHJcbiAgICAgICAgICBlICs9ICtzdHIuc2xpY2UoaSArIDEpO1xyXG4gICAgICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGUgPCAwKSB7XHJcblxyXG4gICAgICAgICAgLy8gSW50ZWdlci5cclxuICAgICAgICAgIGUgPSBzdHIubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBCYXNlIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtifSdcclxuICAgICAgICBpbnRDaGVjayhiLCAyLCBBTFBIQUJFVC5sZW5ndGgsICdCYXNlJyk7XHJcblxyXG4gICAgICAgIC8vIEFsbG93IGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGJlIHVzZWQgd2l0aCBiYXNlIDEwIGFyZ3VtZW50LCB3aGlsZVxyXG4gICAgICAgIC8vIGFsc28gcm91bmRpbmcgdG8gREVDSU1BTF9QTEFDRVMgYXMgd2l0aCBvdGhlciBiYXNlcy5cclxuICAgICAgICBpZiAoYiA9PSAxMCkge1xyXG4gICAgICAgICAgeCA9IG5ldyBCaWdOdW1iZXIodik7XHJcbiAgICAgICAgICByZXR1cm4gcm91bmQoeCwgREVDSU1BTF9QTEFDRVMgKyB4LmUgKyAxLCBST1VORElOR19NT0RFKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0ciA9IFN0cmluZyh2KTtcclxuXHJcbiAgICAgICAgaWYgKGlzTnVtID0gdHlwZW9mIHYgPT0gJ251bWJlcicpIHtcclxuXHJcbiAgICAgICAgICAvLyBBdm9pZCBwb3RlbnRpYWwgaW50ZXJwcmV0YXRpb24gb2YgSW5maW5pdHkgYW5kIE5hTiBhcyBiYXNlIDQ0KyB2YWx1ZXMuXHJcbiAgICAgICAgICBpZiAodiAqIDAgIT0gMCkgcmV0dXJuIHBhcnNlTnVtZXJpYyh4LCBzdHIsIGlzTnVtLCBiKTtcclxuXHJcbiAgICAgICAgICB4LnMgPSAxIC8gdiA8IDAgPyAoc3RyID0gc3RyLnNsaWNlKDEpLCAtMSkgOiAxO1xyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNhbnQgZGlnaXRzOiB7bn0nXHJcbiAgICAgICAgICBpZiAoQmlnTnVtYmVyLkRFQlVHICYmIHN0ci5yZXBsYWNlKC9eMFxcLjAqfFxcLi8sICcnKS5sZW5ndGggPiAxNSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKHRvb01hbnlEaWdpdHMgKyB2KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeC5zID0gc3RyLmNoYXJDb2RlQXQoMCkgPT09IDQ1ID8gKHN0ciA9IHN0ci5zbGljZSgxKSwgLTEpIDogMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFscGhhYmV0ID0gQUxQSEFCRVQuc2xpY2UoMCwgYik7XHJcbiAgICAgICAgZSA9IGkgPSAwO1xyXG5cclxuICAgICAgICAvLyBDaGVjayB0aGF0IHN0ciBpcyBhIHZhbGlkIGJhc2UgYiBudW1iZXIuXHJcbiAgICAgICAgLy8gRG9uJ3QgdXNlIFJlZ0V4cCwgc28gYWxwaGFiZXQgY2FuIGNvbnRhaW4gc3BlY2lhbCBjaGFyYWN0ZXJzLlxyXG4gICAgICAgIGZvciAobGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoYWxwaGFiZXQuaW5kZXhPZihjID0gc3RyLmNoYXJBdChpKSkgPCAwKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09ICcuJykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiAnLicgaXMgbm90IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGl0IGhhcyBub3QgYmUgZm91bmQgYmVmb3JlLlxyXG4gICAgICAgICAgICAgIGlmIChpID4gZSkge1xyXG4gICAgICAgICAgICAgICAgZSA9IGxlbjtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICghY2FzZUNoYW5nZWQpIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQWxsb3cgZS5nLiBoZXhhZGVjaW1hbCAnRkYnIGFzIHdlbGwgYXMgJ2ZmJy5cclxuICAgICAgICAgICAgICBpZiAoc3RyID09IHN0ci50b1VwcGVyQ2FzZSgpICYmIChzdHIgPSBzdHIudG9Mb3dlckNhc2UoKSkgfHxcclxuICAgICAgICAgICAgICAgICAgc3RyID09IHN0ci50b0xvd2VyQ2FzZSgpICYmIChzdHIgPSBzdHIudG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2VDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGkgPSAtMTtcclxuICAgICAgICAgICAgICAgIGUgPSAwO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljKHgsIFN0cmluZyh2KSwgaXNOdW0sIGIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUHJldmVudCBsYXRlciBjaGVjayBmb3IgbGVuZ3RoIG9uIGNvbnZlcnRlZCBudW1iZXIuXHJcbiAgICAgICAgaXNOdW0gPSBmYWxzZTtcclxuICAgICAgICBzdHIgPSBjb252ZXJ0QmFzZShzdHIsIGIsIDEwLCB4LnMpO1xyXG5cclxuICAgICAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgICAgIGlmICgoZSA9IHN0ci5pbmRleE9mKCcuJykpID4gLTEpIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICAgIGVsc2UgZSA9IHN0ci5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERldGVybWluZSBsZWFkaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKGkgPSAwOyBzdHIuY2hhckNvZGVBdChpKSA9PT0gNDg7IGkrKyk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAobGVuID0gc3RyLmxlbmd0aDsgc3RyLmNoYXJDb2RlQXQoLS1sZW4pID09PSA0ODspO1xyXG5cclxuICAgICAgaWYgKHN0ciA9IHN0ci5zbGljZShpLCArK2xlbikpIHtcclxuICAgICAgICBsZW4gLT0gaTtcclxuXHJcbiAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE51bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6IHtufSdcclxuICAgICAgICBpZiAoaXNOdW0gJiYgQmlnTnVtYmVyLkRFQlVHICYmXHJcbiAgICAgICAgICBsZW4gPiAxNSAmJiAodiA+IE1BWF9TQUZFX0lOVEVHRVIgfHwgdiAhPT0gbWF0aGZsb29yKHYpKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKHRvb01hbnlEaWdpdHMgKyAoeC5zICogdikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgIC8vIE92ZXJmbG93P1xyXG4gICAgICAgIGlmICgoZSA9IGUgLSBpIC0gMSkgPiBNQVhfRVhQKSB7XHJcblxyXG4gICAgICAgICAgLy8gSW5maW5pdHkuXHJcbiAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBVbmRlcmZsb3c/XHJcbiAgICAgICAgfSBlbHNlIGlmIChlIDwgTUlOX0VYUCkge1xyXG5cclxuICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHguZSA9IGU7XHJcbiAgICAgICAgICB4LmMgPSBbXTtcclxuXHJcbiAgICAgICAgICAvLyBUcmFuc2Zvcm0gYmFzZVxyXG5cclxuICAgICAgICAgIC8vIGUgaXMgdGhlIGJhc2UgMTAgZXhwb25lbnQuXHJcbiAgICAgICAgICAvLyBpIGlzIHdoZXJlIHRvIHNsaWNlIHN0ciB0byBnZXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGNvZWZmaWNpZW50IGFycmF5LlxyXG4gICAgICAgICAgaSA9IChlICsgMSkgJSBMT0dfQkFTRTtcclxuICAgICAgICAgIGlmIChlIDwgMCkgaSArPSBMT0dfQkFTRTsgIC8vIGkgPCAxXHJcblxyXG4gICAgICAgICAgaWYgKGkgPCBsZW4pIHtcclxuICAgICAgICAgICAgaWYgKGkpIHguYy5wdXNoKCtzdHIuc2xpY2UoMCwgaSkpO1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZW4gLT0gTE9HX0JBU0U7IGkgPCBsZW47KSB7XHJcbiAgICAgICAgICAgICAgeC5jLnB1c2goK3N0ci5zbGljZShpLCBpICs9IExPR19CQVNFKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGkgPSBMT0dfQkFTRSAtIChzdHIgPSBzdHIuc2xpY2UoaSkpLmxlbmd0aDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGkgLT0gbGVuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZvciAoOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgeC5jLnB1c2goK3N0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAvLyBaZXJvLlxyXG4gICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBDT05TVFJVQ1RPUiBQUk9QRVJUSUVTXHJcblxyXG5cclxuICAgIEJpZ051bWJlci5jbG9uZSA9IGNsb25lO1xyXG5cclxuICAgIEJpZ051bWJlci5ST1VORF9VUCA9IDA7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfRE9XTiA9IDE7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfQ0VJTCA9IDI7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfRkxPT1IgPSAzO1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVAgPSA0O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfRE9XTiA9IDU7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9FVkVOID0gNjtcclxuICAgIEJpZ051bWJlci5ST1VORF9IQUxGX0NFSUwgPSA3O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfRkxPT1IgPSA4O1xyXG4gICAgQmlnTnVtYmVyLkVVQ0xJRCA9IDk7XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBDb25maWd1cmUgaW5mcmVxdWVudGx5LWNoYW5naW5nIGxpYnJhcnktd2lkZSBzZXR0aW5ncy5cclxuICAgICAqXHJcbiAgICAgKiBBY2NlcHQgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25hbCBwcm9wZXJ0aWVzIChpZiB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBpc1xyXG4gICAgICogYSBudW1iZXIsIGl0IG11c3QgYmUgYW4gaW50ZWdlciB3aXRoaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBzdGF0ZWQpOlxyXG4gICAgICpcclxuICAgICAqICAgREVDSU1BTF9QTEFDRVMgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byBNQVhcclxuICAgICAqICAgUk9VTkRJTkdfTU9ERSAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byA4XHJcbiAgICAgKiAgIEVYUE9ORU5USUFMX0FUICAge251bWJlcnxudW1iZXJbXX0gIC1NQVggdG8gTUFYICBvciAgWy1NQVggdG8gMCwgMCB0byBNQVhdXHJcbiAgICAgKiAgIFJBTkdFICAgICAgICAgICAge251bWJlcnxudW1iZXJbXX0gIC1NQVggdG8gTUFYIChub3QgemVybykgIG9yICBbLU1BWCB0byAtMSwgMSB0byBNQVhdXHJcbiAgICAgKiAgIENSWVBUTyAgICAgICAgICAge2Jvb2xlYW59ICAgICAgICAgIHRydWUgb3IgZmFsc2VcclxuICAgICAqICAgTU9EVUxPX01PREUgICAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byA5XHJcbiAgICAgKiAgIFBPV19QUkVDSVNJT04gICAgICAge251bWJlcn0gICAgICAgICAgIDAgdG8gTUFYXHJcbiAgICAgKiAgIEFMUEhBQkVUICAgICAgICAge3N0cmluZ30gICAgICAgICAgIEEgc3RyaW5nIG9mIHR3byBvciBtb3JlIHVuaXF1ZSBjaGFyYWN0ZXJzIHdoaWNoIGRvZXNcclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGNvbnRhaW4gJy4nLlxyXG4gICAgICogICBGT1JNQVQgICAgICAgICAgIHtvYmplY3R9ICAgICAgICAgICBBbiBvYmplY3Qgd2l0aCBzb21lIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcclxuICAgICAqICAgICBwcmVmaXggICAgICAgICAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZ3JvdXBTaXplICAgICAgICAgICAgICB7bnVtYmVyfVxyXG4gICAgICogICAgIHNlY29uZGFyeUdyb3VwU2l6ZSAgICAge251bWJlcn1cclxuICAgICAqICAgICBncm91cFNlcGFyYXRvciAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZGVjaW1hbFNlcGFyYXRvciAgICAgICB7c3RyaW5nfVxyXG4gICAgICogICAgIGZyYWN0aW9uR3JvdXBTaXplICAgICAge251bWJlcn1cclxuICAgICAqICAgICBmcmFjdGlvbkdyb3VwU2VwYXJhdG9yIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgc3VmZml4ICAgICAgICAgICAgICAgICB7c3RyaW5nfVxyXG4gICAgICpcclxuICAgICAqIChUaGUgdmFsdWVzIGFzc2lnbmVkIHRvIHRoZSBhYm92ZSBGT1JNQVQgb2JqZWN0IHByb3BlcnRpZXMgYXJlIG5vdCBjaGVja2VkIGZvciB2YWxpZGl0eS4pXHJcbiAgICAgKlxyXG4gICAgICogRS5nLlxyXG4gICAgICogQmlnTnVtYmVyLmNvbmZpZyh7IERFQ0lNQUxfUExBQ0VTIDogMjAsIFJPVU5ESU5HX01PREUgOiA0IH0pXHJcbiAgICAgKlxyXG4gICAgICogSWdub3JlIHByb3BlcnRpZXMvcGFyYW1ldGVycyBzZXQgdG8gbnVsbCBvciB1bmRlZmluZWQsIGV4Y2VwdCBmb3IgQUxQSEFCRVQuXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGFuIG9iamVjdCB3aXRoIHRoZSBwcm9wZXJ0aWVzIGN1cnJlbnQgdmFsdWVzLlxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIuY29uZmlnID0gQmlnTnVtYmVyLnNldCA9IGZ1bmN0aW9uIChvYmopIHtcclxuICAgICAgdmFyIHAsIHY7XHJcblxyXG4gICAgICBpZiAob2JqICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT0gJ29iamVjdCcpIHtcclxuXHJcbiAgICAgICAgICAvLyBERUNJTUFMX1BMQUNFUyB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gREVDSU1BTF9QTEFDRVMge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0RFQ0lNQUxfUExBQ0VTJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgREVDSU1BTF9QTEFDRVMgPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJPVU5ESU5HX01PREUge251bWJlcn0gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBST1VORElOR19NT0RFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdST1VORElOR19NT0RFJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgOCwgcCk7XHJcbiAgICAgICAgICAgIFJPVU5ESU5HX01PREUgPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEVYUE9ORU5USUFMX0FUIHtudW1iZXJ8bnVtYmVyW119XHJcbiAgICAgICAgICAvLyBJbnRlZ2VyLCAtTUFYIHRvIE1BWCBpbmNsdXNpdmUgb3JcclxuICAgICAgICAgIC8vIFtpbnRlZ2VyIC1NQVggdG8gMCBpbmNsdXNpdmUsIDAgdG8gTUFYIGluY2x1c2l2ZV0uXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gRVhQT05FTlRJQUxfQVQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0VYUE9ORU5USUFMX0FUJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHYgJiYgdi5wb3ApIHtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzBdLCAtTUFYLCAwLCBwKTtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzFdLCAwLCBNQVgsIHApO1xyXG4gICAgICAgICAgICAgIFRPX0VYUF9ORUcgPSB2WzBdO1xyXG4gICAgICAgICAgICAgIFRPX0VYUF9QT1MgPSB2WzFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHYsIC1NQVgsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgVE9fRVhQX05FRyA9IC0oVE9fRVhQX1BPUyA9IHYgPCAwID8gLXYgOiB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJBTkdFIHtudW1iZXJ8bnVtYmVyW119IE5vbi16ZXJvIGludGVnZXIsIC1NQVggdG8gTUFYIGluY2x1c2l2ZSBvclxyXG4gICAgICAgICAgLy8gW2ludGVnZXIgLU1BWCB0byAtMSBpbmNsdXNpdmUsIGludGVnZXIgMSB0byBNQVggaW5jbHVzaXZlXS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBSQU5HRSB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V8Y2Fubm90IGJlIHplcm99OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnUkFOR0UnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpZiAodiAmJiB2LnBvcCkge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMF0sIC1NQVgsIC0xLCBwKTtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzFdLCAxLCBNQVgsIHApO1xyXG4gICAgICAgICAgICAgIE1JTl9FWFAgPSB2WzBdO1xyXG4gICAgICAgICAgICAgIE1BWF9FWFAgPSB2WzFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHYsIC1NQVgsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgaWYgKHYpIHtcclxuICAgICAgICAgICAgICAgIE1JTl9FWFAgPSAtKE1BWF9FWFAgPSB2IDwgMCA/IC12IDogdik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgcCArICcgY2Fubm90IGJlIHplcm86ICcgKyB2KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBDUllQVE8ge2Jvb2xlYW59IHRydWUgb3IgZmFsc2UuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gQ1JZUFRPIG5vdCB0cnVlIG9yIGZhbHNlOiB7dn0nXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gY3J5cHRvIHVuYXZhaWxhYmxlJ1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0NSWVBUTycpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGlmICh2ID09PSAhIXYpIHtcclxuICAgICAgICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8gIT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvICYmXHJcbiAgICAgICAgICAgICAgICAgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgfHwgY3J5cHRvLnJhbmRvbUJ5dGVzKSkge1xyXG4gICAgICAgICAgICAgICAgICBDUllQVE8gPSB2O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgQ1JZUFRPID0gIXY7XHJcbiAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnY3J5cHRvIHVuYXZhaWxhYmxlJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIENSWVBUTyA9IHY7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIG5vdCB0cnVlIG9yIGZhbHNlOiAnICsgdik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBNT0RVTE9fTU9ERSB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIDkgaW5jbHVzaXZlLlxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE1PRFVMT19NT0RFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdNT0RVTE9fTU9ERScpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGludENoZWNrKHYsIDAsIDksIHApO1xyXG4gICAgICAgICAgICBNT0RVTE9fTU9ERSA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUE9XX1BSRUNJU0lPTiB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gUE9XX1BSRUNJU0lPTiB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnUE9XX1BSRUNJU0lPTicpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGludENoZWNrKHYsIDAsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgIFBPV19QUkVDSVNJT04gPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEZPUk1BVCB7b2JqZWN0fVxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIEZPUk1BVCBub3QgYW4gb2JqZWN0OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnRk9STUFUJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09ICdvYmplY3QnKSBGT1JNQVQgPSB2O1xyXG4gICAgICAgICAgICBlbHNlIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyBwICsgJyBub3QgYW4gb2JqZWN0OiAnICsgdik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gQUxQSEFCRVQge3N0cmluZ31cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBBTFBIQUJFVCBpbnZhbGlkOiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnQUxQSEFCRVQnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG5cclxuICAgICAgICAgICAgLy8gRGlzYWxsb3cgaWYgbGVzcyB0aGFuIHR3byBjaGFyYWN0ZXJzLFxyXG4gICAgICAgICAgICAvLyBvciBpZiBpdCBjb250YWlucyAnKycsICctJywgJy4nLCB3aGl0ZXNwYWNlLCBvciBhIHJlcGVhdGVkIGNoYXJhY3Rlci5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09ICdzdHJpbmcnICYmICEvXi4/JHxbK1xcLS5cXHNdfCguKS4qXFwxLy50ZXN0KHYpKSB7XHJcbiAgICAgICAgICAgICAgQUxQSEFCRVQgPSB2O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIGludmFsaWQ6ICcgKyB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBPYmplY3QgZXhwZWN0ZWQ6IHt2fSdcclxuICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ09iamVjdCBleHBlY3RlZDogJyArIG9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIERFQ0lNQUxfUExBQ0VTOiBERUNJTUFMX1BMQUNFUyxcclxuICAgICAgICBST1VORElOR19NT0RFOiBST1VORElOR19NT0RFLFxyXG4gICAgICAgIEVYUE9ORU5USUFMX0FUOiBbVE9fRVhQX05FRywgVE9fRVhQX1BPU10sXHJcbiAgICAgICAgUkFOR0U6IFtNSU5fRVhQLCBNQVhfRVhQXSxcclxuICAgICAgICBDUllQVE86IENSWVBUTyxcclxuICAgICAgICBNT0RVTE9fTU9ERTogTU9EVUxPX01PREUsXHJcbiAgICAgICAgUE9XX1BSRUNJU0lPTjogUE9XX1BSRUNJU0lPTixcclxuICAgICAgICBGT1JNQVQ6IEZPUk1BVCxcclxuICAgICAgICBBTFBIQUJFVDogQUxQSEFCRVRcclxuICAgICAgfTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB2IGlzIGEgQmlnTnVtYmVyIGluc3RhbmNlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICpcclxuICAgICAqIElmIEJpZ051bWJlci5ERUJVRyBpcyB0cnVlLCB0aHJvdyBpZiBhIEJpZ051bWJlciBpbnN0YW5jZSBpcyBub3Qgd2VsbC1mb3JtZWQuXHJcbiAgICAgKlxyXG4gICAgICogdiB7YW55fVxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBJbnZhbGlkIEJpZ051bWJlcjoge3Z9J1xyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIuaXNCaWdOdW1iZXIgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICBpZiAoIXYgfHwgdi5faXNCaWdOdW1iZXIgIT09IHRydWUpIHJldHVybiBmYWxzZTtcclxuICAgICAgaWYgKCFCaWdOdW1iZXIuREVCVUcpIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgdmFyIGksIG4sXHJcbiAgICAgICAgYyA9IHYuYyxcclxuICAgICAgICBlID0gdi5lLFxyXG4gICAgICAgIHMgPSB2LnM7XHJcblxyXG4gICAgICBvdXQ6IGlmICh7fS50b1N0cmluZy5jYWxsKGMpID09ICdbb2JqZWN0IEFycmF5XScpIHtcclxuXHJcbiAgICAgICAgaWYgKChzID09PSAxIHx8IHMgPT09IC0xKSAmJiBlID49IC1NQVggJiYgZSA8PSBNQVggJiYgZSA9PT0gbWF0aGZsb29yKGUpKSB7XHJcblxyXG4gICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgemVybywgdGhlIEJpZ051bWJlciB2YWx1ZSBtdXN0IGJlIHplcm8uXHJcbiAgICAgICAgICBpZiAoY1swXSA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoZSA9PT0gMCAmJiBjLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgbnVtYmVyIG9mIGRpZ2l0cyB0aGF0IGNbMF0gc2hvdWxkIGhhdmUsIGJhc2VkIG9uIHRoZSBleHBvbmVudC5cclxuICAgICAgICAgIGkgPSAoZSArIDEpICUgTE9HX0JBU0U7XHJcbiAgICAgICAgICBpZiAoaSA8IDEpIGkgKz0gTE9HX0JBU0U7XHJcblxyXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiBkaWdpdHMgb2YgY1swXS5cclxuICAgICAgICAgIC8vaWYgKE1hdGguY2VpbChNYXRoLmxvZyhjWzBdICsgMSkgLyBNYXRoLkxOMTApID09IGkpIHtcclxuICAgICAgICAgIGlmIChTdHJpbmcoY1swXSkubGVuZ3RoID09IGkpIHtcclxuXHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgbiA9IGNbaV07XHJcbiAgICAgICAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gQkFTRSB8fCBuICE9PSBtYXRoZmxvb3IobikpIGJyZWFrIG91dDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gTGFzdCBlbGVtZW50IGNhbm5vdCBiZSB6ZXJvLCB1bmxlc3MgaXQgaXMgdGhlIG9ubHkgZWxlbWVudC5cclxuICAgICAgICAgICAgaWYgKG4gIT09IDApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIC8vIEluZmluaXR5L05hTlxyXG4gICAgICB9IGVsc2UgaWYgKGMgPT09IG51bGwgJiYgZSA9PT0gbnVsbCAmJiAocyA9PT0gbnVsbCB8fCBzID09PSAxIHx8IHMgPT09IC0xKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgIChiaWdudW1iZXJFcnJvciArICdJbnZhbGlkIEJpZ051bWJlcjogJyArIHYpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIG1heGltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIubWF4aW11bSA9IEJpZ051bWJlci5tYXggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBtYXhPck1pbihhcmd1bWVudHMsIFAubHQpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIG1pbmltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIubWluaW11bSA9IEJpZ051bWJlci5taW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBtYXhPck1pbihhcmd1bWVudHMsIFAuZ3QpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2l0aCBhIHJhbmRvbSB2YWx1ZSBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMCBhbmQgbGVzcyB0aGFuIDEsXHJcbiAgICAgKiBhbmQgd2l0aCBkcCwgb3IgREVDSU1BTF9QTEFDRVMgaWYgZHAgaXMgb21pdHRlZCwgZGVjaW1hbCBwbGFjZXMgKG9yIGxlc3MgaWYgdHJhaWxpbmdcclxuICAgICAqIHplcm9zIGFyZSBwcm9kdWNlZCkuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB9J1xyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIGNyeXB0byB1bmF2YWlsYWJsZSdcclxuICAgICAqL1xyXG4gICAgQmlnTnVtYmVyLnJhbmRvbSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBwb3cyXzUzID0gMHgyMDAwMDAwMDAwMDAwMDtcclxuXHJcbiAgICAgIC8vIFJldHVybiBhIDUzIGJpdCBpbnRlZ2VyIG4sIHdoZXJlIDAgPD0gbiA8IDkwMDcxOTkyNTQ3NDA5OTIuXHJcbiAgICAgIC8vIENoZWNrIGlmIE1hdGgucmFuZG9tKCkgcHJvZHVjZXMgbW9yZSB0aGFuIDMyIGJpdHMgb2YgcmFuZG9tbmVzcy5cclxuICAgICAgLy8gSWYgaXQgZG9lcywgYXNzdW1lIGF0IGxlYXN0IDUzIGJpdHMgYXJlIHByb2R1Y2VkLCBvdGhlcndpc2UgYXNzdW1lIGF0IGxlYXN0IDMwIGJpdHMuXHJcbiAgICAgIC8vIDB4NDAwMDAwMDAgaXMgMl4zMCwgMHg4MDAwMDAgaXMgMl4yMywgMHgxZmZmZmYgaXMgMl4yMSAtIDEuXHJcbiAgICAgIHZhciByYW5kb201M2JpdEludCA9IChNYXRoLnJhbmRvbSgpICogcG93Ml81MykgJiAweDFmZmZmZlxyXG4gICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBtYXRoZmxvb3IoTWF0aC5yYW5kb20oKSAqIHBvdzJfNTMpOyB9XHJcbiAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICgoTWF0aC5yYW5kb20oKSAqIDB4NDAwMDAwMDAgfCAwKSAqIDB4ODAwMDAwKSArXHJcbiAgICAgICAgIChNYXRoLnJhbmRvbSgpICogMHg4MDAwMDAgfCAwKTsgfTtcclxuXHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZHApIHtcclxuICAgICAgICB2YXIgYSwgYiwgZSwgaywgdixcclxuICAgICAgICAgIGkgPSAwLFxyXG4gICAgICAgICAgYyA9IFtdLFxyXG4gICAgICAgICAgcmFuZCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuXHJcbiAgICAgICAgaWYgKGRwID09IG51bGwpIGRwID0gREVDSU1BTF9QTEFDRVM7XHJcbiAgICAgICAgZWxzZSBpbnRDaGVjayhkcCwgMCwgTUFYKTtcclxuXHJcbiAgICAgICAgayA9IG1hdGhjZWlsKGRwIC8gTE9HX0JBU0UpO1xyXG5cclxuICAgICAgICBpZiAoQ1JZUFRPKSB7XHJcblxyXG4gICAgICAgICAgLy8gQnJvd3NlcnMgc3VwcG9ydGluZyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLlxyXG4gICAgICAgICAgaWYgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcclxuXHJcbiAgICAgICAgICAgIGEgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheShrICo9IDIpKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoOyBpIDwgazspIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gNTMgYml0czpcclxuICAgICAgICAgICAgICAvLyAoKE1hdGgucG93KDIsIDMyKSAtIDEpICogTWF0aC5wb3coMiwgMjEpKS50b1N0cmluZygyKVxyXG4gICAgICAgICAgICAgIC8vIDExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwXHJcbiAgICAgICAgICAgICAgLy8gKChNYXRoLnBvdygyLCAzMikgLSAxKSA+Pj4gMTEpLnRvU3RyaW5nKDIpXHJcbiAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTEgMTExMTExMTEgMTExMTExMTFcclxuICAgICAgICAgICAgICAvLyAweDIwMDAwIGlzIDJeMjEuXHJcbiAgICAgICAgICAgICAgdiA9IGFbaV0gKiAweDIwMDAwICsgKGFbaSArIDFdID4+PiAxMSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFJlamVjdGlvbiBzYW1wbGluZzpcclxuICAgICAgICAgICAgICAvLyAwIDw9IHYgPCA5MDA3MTk5MjU0NzQwOTkyXHJcbiAgICAgICAgICAgICAgLy8gUHJvYmFiaWxpdHkgdGhhdCB2ID49IDllMTUsIGlzXHJcbiAgICAgICAgICAgICAgLy8gNzE5OTI1NDc0MDk5MiAvIDkwMDcxOTkyNTQ3NDA5OTIgfj0gMC4wMDA4LCBpLmUuIDEgaW4gMTI1MVxyXG4gICAgICAgICAgICAgIGlmICh2ID49IDllMTUpIHtcclxuICAgICAgICAgICAgICAgIGIgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgyKSk7XHJcbiAgICAgICAgICAgICAgICBhW2ldID0gYlswXTtcclxuICAgICAgICAgICAgICAgIGFbaSArIDFdID0gYlsxXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDAgPD0gdiA8PSA4OTk5OTk5OTk5OTk5OTk5XHJcbiAgICAgICAgICAgICAgICAvLyAwIDw9ICh2ICUgMWUxNCkgPD0gOTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIGMucHVzaCh2ICUgMWUxNCk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgPSBrIC8gMjtcclxuXHJcbiAgICAgICAgICAvLyBOb2RlLmpzIHN1cHBvcnRpbmcgY3J5cHRvLnJhbmRvbUJ5dGVzLlxyXG4gICAgICAgICAgfSBlbHNlIGlmIChjcnlwdG8ucmFuZG9tQnl0ZXMpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGJ1ZmZlclxyXG4gICAgICAgICAgICBhID0gY3J5cHRvLnJhbmRvbUJ5dGVzKGsgKj0gNyk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKDsgaSA8IGs7KSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIDB4MTAwMDAwMDAwMDAwMCBpcyAyXjQ4LCAweDEwMDAwMDAwMDAwIGlzIDJeNDBcclxuICAgICAgICAgICAgICAvLyAweDEwMDAwMDAwMCBpcyAyXjMyLCAweDEwMDAwMDAgaXMgMl4yNFxyXG4gICAgICAgICAgICAgIC8vIDExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExXHJcbiAgICAgICAgICAgICAgLy8gMCA8PSB2IDwgOTAwNzE5OTI1NDc0MDk5MlxyXG4gICAgICAgICAgICAgIHYgPSAoKGFbaV0gJiAzMSkgKiAweDEwMDAwMDAwMDAwMDApICsgKGFbaSArIDFdICogMHgxMDAwMDAwMDAwMCkgK1xyXG4gICAgICAgICAgICAgICAgIChhW2kgKyAyXSAqIDB4MTAwMDAwMDAwKSArIChhW2kgKyAzXSAqIDB4MTAwMDAwMCkgK1xyXG4gICAgICAgICAgICAgICAgIChhW2kgKyA0XSA8PCAxNikgKyAoYVtpICsgNV0gPDwgOCkgKyBhW2kgKyA2XTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHYgPj0gOWUxNSkge1xyXG4gICAgICAgICAgICAgICAgY3J5cHRvLnJhbmRvbUJ5dGVzKDcpLmNvcHkoYSwgaSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAwIDw9ICh2ICUgMWUxNCkgPD0gOTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIGMucHVzaCh2ICUgMWUxNCk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgPSBrIC8gNztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIENSWVBUTyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ2NyeXB0byB1bmF2YWlsYWJsZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVXNlIE1hdGgucmFuZG9tLlxyXG4gICAgICAgIGlmICghQ1JZUFRPKSB7XHJcblxyXG4gICAgICAgICAgZm9yICg7IGkgPCBrOykge1xyXG4gICAgICAgICAgICB2ID0gcmFuZG9tNTNiaXRJbnQoKTtcclxuICAgICAgICAgICAgaWYgKHYgPCA5ZTE1KSBjW2krK10gPSB2ICUgMWUxNDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGsgPSBjWy0taV07XHJcbiAgICAgICAgZHAgJT0gTE9HX0JBU0U7XHJcblxyXG4gICAgICAgIC8vIENvbnZlcnQgdHJhaWxpbmcgZGlnaXRzIHRvIHplcm9zIGFjY29yZGluZyB0byBkcC5cclxuICAgICAgICBpZiAoayAmJiBkcCkge1xyXG4gICAgICAgICAgdiA9IFBPV1NfVEVOW0xPR19CQVNFIC0gZHBdO1xyXG4gICAgICAgICAgY1tpXSA9IG1hdGhmbG9vcihrIC8gdikgKiB2O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIGVsZW1lbnRzIHdoaWNoIGFyZSB6ZXJvLlxyXG4gICAgICAgIGZvciAoOyBjW2ldID09PSAwOyBjLnBvcCgpLCBpLS0pO1xyXG5cclxuICAgICAgICAvLyBaZXJvP1xyXG4gICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgYyA9IFtlID0gMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBSZW1vdmUgbGVhZGluZyBlbGVtZW50cyB3aGljaCBhcmUgemVybyBhbmQgYWRqdXN0IGV4cG9uZW50IGFjY29yZGluZ2x5LlxyXG4gICAgICAgICAgZm9yIChlID0gLTEgOyBjWzBdID09PSAwOyBjLnNwbGljZSgwLCAxKSwgZSAtPSBMT0dfQkFTRSk7XHJcblxyXG4gICAgICAgICAgLy8gQ291bnQgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBjIHRvIGRldGVybWluZSBsZWFkaW5nIHplcm9zLCBhbmQuLi5cclxuICAgICAgICAgIGZvciAoaSA9IDEsIHYgPSBjWzBdOyB2ID49IDEwOyB2IC89IDEwLCBpKyspO1xyXG5cclxuICAgICAgICAgIC8vIGFkanVzdCB0aGUgZXhwb25lbnQgYWNjb3JkaW5nbHkuXHJcbiAgICAgICAgICBpZiAoaSA8IExPR19CQVNFKSBlIC09IExPR19CQVNFIC0gaTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJhbmQuZSA9IGU7XHJcbiAgICAgICAgcmFuZC5jID0gYztcclxuICAgICAgICByZXR1cm4gcmFuZDtcclxuICAgICAgfTtcclxuICAgIH0pKCk7XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHN1bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5zdW0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBpID0gMSxcclxuICAgICAgICBhcmdzID0gYXJndW1lbnRzLFxyXG4gICAgICAgIHN1bSA9IG5ldyBCaWdOdW1iZXIoYXJnc1swXSk7XHJcbiAgICAgIGZvciAoOyBpIDwgYXJncy5sZW5ndGg7KSBzdW0gPSBzdW0ucGx1cyhhcmdzW2krK10pO1xyXG4gICAgICByZXR1cm4gc3VtO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLy8gUFJJVkFURSBGVU5DVElPTlNcclxuXHJcblxyXG4gICAgLy8gQ2FsbGVkIGJ5IEJpZ051bWJlciBhbmQgQmlnTnVtYmVyLnByb3RvdHlwZS50b1N0cmluZy5cclxuICAgIGNvbnZlcnRCYXNlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIGRlY2ltYWwgPSAnMDEyMzQ1Njc4OSc7XHJcblxyXG4gICAgICAvKlxyXG4gICAgICAgKiBDb252ZXJ0IHN0cmluZyBvZiBiYXNlSW4gdG8gYW4gYXJyYXkgb2YgbnVtYmVycyBvZiBiYXNlT3V0LlxyXG4gICAgICAgKiBFZy4gdG9CYXNlT3V0KCcyNTUnLCAxMCwgMTYpIHJldHVybnMgWzE1LCAxNV0uXHJcbiAgICAgICAqIEVnLiB0b0Jhc2VPdXQoJ2ZmJywgMTYsIDEwKSByZXR1cm5zIFsyLCA1LCA1XS5cclxuICAgICAgICovXHJcbiAgICAgIGZ1bmN0aW9uIHRvQmFzZU91dChzdHIsIGJhc2VJbiwgYmFzZU91dCwgYWxwaGFiZXQpIHtcclxuICAgICAgICB2YXIgaixcclxuICAgICAgICAgIGFyciA9IFswXSxcclxuICAgICAgICAgIGFyckwsXHJcbiAgICAgICAgICBpID0gMCxcclxuICAgICAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAgIGZvciAoOyBpIDwgbGVuOykge1xyXG4gICAgICAgICAgZm9yIChhcnJMID0gYXJyLmxlbmd0aDsgYXJyTC0tOyBhcnJbYXJyTF0gKj0gYmFzZUluKTtcclxuXHJcbiAgICAgICAgICBhcnJbMF0gKz0gYWxwaGFiZXQuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpO1xyXG5cclxuICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBhcnIubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnJbal0gPiBiYXNlT3V0IC0gMSkge1xyXG4gICAgICAgICAgICAgIGlmIChhcnJbaiArIDFdID09IG51bGwpIGFycltqICsgMV0gPSAwO1xyXG4gICAgICAgICAgICAgIGFycltqICsgMV0gKz0gYXJyW2pdIC8gYmFzZU91dCB8IDA7XHJcbiAgICAgICAgICAgICAgYXJyW2pdICU9IGJhc2VPdXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhcnIucmV2ZXJzZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IGEgbnVtZXJpYyBzdHJpbmcgb2YgYmFzZUluIHRvIGEgbnVtZXJpYyBzdHJpbmcgb2YgYmFzZU91dC5cclxuICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyB0b1N0cmluZywgd2UgYXJlIGNvbnZlcnRpbmcgZnJvbSBiYXNlIDEwIHRvIGJhc2VPdXQuXHJcbiAgICAgIC8vIElmIHRoZSBjYWxsZXIgaXMgQmlnTnVtYmVyLCB3ZSBhcmUgY29udmVydGluZyBmcm9tIGJhc2VJbiB0byBiYXNlIDEwLlxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHN0ciwgYmFzZUluLCBiYXNlT3V0LCBzaWduLCBjYWxsZXJJc1RvU3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIGFscGhhYmV0LCBkLCBlLCBrLCByLCB4LCB4YywgeSxcclxuICAgICAgICAgIGkgPSBzdHIuaW5kZXhPZignLicpLFxyXG4gICAgICAgICAgZHAgPSBERUNJTUFMX1BMQUNFUyxcclxuICAgICAgICAgIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuXHJcbiAgICAgICAgLy8gTm9uLWludGVnZXIuXHJcbiAgICAgICAgaWYgKGkgPj0gMCkge1xyXG4gICAgICAgICAgayA9IFBPV19QUkVDSVNJT047XHJcblxyXG4gICAgICAgICAgLy8gVW5saW1pdGVkIHByZWNpc2lvbi5cclxuICAgICAgICAgIFBPV19QUkVDSVNJT04gPSAwO1xyXG4gICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgICB5ID0gbmV3IEJpZ051bWJlcihiYXNlSW4pO1xyXG4gICAgICAgICAgeCA9IHkucG93KHN0ci5sZW5ndGggLSBpKTtcclxuICAgICAgICAgIFBPV19QUkVDSVNJT04gPSBrO1xyXG5cclxuICAgICAgICAgIC8vIENvbnZlcnQgc3RyIGFzIGlmIGFuIGludGVnZXIsIHRoZW4gcmVzdG9yZSB0aGUgZnJhY3Rpb24gcGFydCBieSBkaXZpZGluZyB0aGVcclxuICAgICAgICAgIC8vIHJlc3VsdCBieSBpdHMgYmFzZSByYWlzZWQgdG8gYSBwb3dlci5cclxuXHJcbiAgICAgICAgICB5LmMgPSB0b0Jhc2VPdXQodG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcoeC5jKSwgeC5lLCAnMCcpLFxyXG4gICAgICAgICAgIDEwLCBiYXNlT3V0LCBkZWNpbWFsKTtcclxuICAgICAgICAgIHkuZSA9IHkuYy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgYXMgaW50ZWdlci5cclxuXHJcbiAgICAgICAgeGMgPSB0b0Jhc2VPdXQoc3RyLCBiYXNlSW4sIGJhc2VPdXQsIGNhbGxlcklzVG9TdHJpbmdcclxuICAgICAgICAgPyAoYWxwaGFiZXQgPSBBTFBIQUJFVCwgZGVjaW1hbClcclxuICAgICAgICAgOiAoYWxwaGFiZXQgPSBkZWNpbWFsLCBBTFBIQUJFVCkpO1xyXG5cclxuICAgICAgICAvLyB4YyBub3cgcmVwcmVzZW50cyBzdHIgYXMgYW4gaW50ZWdlciBhbmQgY29udmVydGVkIHRvIGJhc2VPdXQuIGUgaXMgdGhlIGV4cG9uZW50LlxyXG4gICAgICAgIGUgPSBrID0geGMubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yICg7IHhjWy0ta10gPT0gMDsgeGMucG9wKCkpO1xyXG5cclxuICAgICAgICAvLyBaZXJvP1xyXG4gICAgICAgIGlmICgheGNbMF0pIHJldHVybiBhbHBoYWJldC5jaGFyQXQoMCk7XHJcblxyXG4gICAgICAgIC8vIERvZXMgc3RyIHJlcHJlc2VudCBhbiBpbnRlZ2VyPyBJZiBzbywgbm8gbmVlZCBmb3IgdGhlIGRpdmlzaW9uLlxyXG4gICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgLS1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LmMgPSB4YztcclxuICAgICAgICAgIHguZSA9IGU7XHJcblxyXG4gICAgICAgICAgLy8gVGhlIHNpZ24gaXMgbmVlZGVkIGZvciBjb3JyZWN0IHJvdW5kaW5nLlxyXG4gICAgICAgICAgeC5zID0gc2lnbjtcclxuICAgICAgICAgIHggPSBkaXYoeCwgeSwgZHAsIHJtLCBiYXNlT3V0KTtcclxuICAgICAgICAgIHhjID0geC5jO1xyXG4gICAgICAgICAgciA9IHgucjtcclxuICAgICAgICAgIGUgPSB4LmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB4YyBub3cgcmVwcmVzZW50cyBzdHIgY29udmVydGVkIHRvIGJhc2VPdXQuXHJcblxyXG4gICAgICAgIC8vIFRIZSBpbmRleCBvZiB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgZCA9IGUgKyBkcCArIDE7XHJcblxyXG4gICAgICAgIC8vIFRoZSByb3VuZGluZyBkaWdpdDogdGhlIGRpZ2l0IHRvIHRoZSByaWdodCBvZiB0aGUgZGlnaXQgdGhhdCBtYXkgYmUgcm91bmRlZCB1cC5cclxuICAgICAgICBpID0geGNbZF07XHJcblxyXG4gICAgICAgIC8vIExvb2sgYXQgdGhlIHJvdW5kaW5nIGRpZ2l0cyBhbmQgbW9kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byByb3VuZCB1cC5cclxuXHJcbiAgICAgICAgayA9IGJhc2VPdXQgLyAyO1xyXG4gICAgICAgIHIgPSByIHx8IGQgPCAwIHx8IHhjW2QgKyAxXSAhPSBudWxsO1xyXG5cclxuICAgICAgICByID0gcm0gPCA0ID8gKGkgIT0gbnVsbCB8fCByKSAmJiAocm0gPT0gMCB8fCBybSA9PSAoeC5zIDwgMCA/IDMgOiAyKSlcclxuICAgICAgICAgICAgICA6IGkgPiBrIHx8IGkgPT0gayAmJihybSA9PSA0IHx8IHIgfHwgcm0gPT0gNiAmJiB4Y1tkIC0gMV0gJiAxIHx8XHJcbiAgICAgICAgICAgICAgIHJtID09ICh4LnMgPCAwID8gOCA6IDcpKTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIGluZGV4IG9mIHRoZSByb3VuZGluZyBkaWdpdCBpcyBub3QgZ3JlYXRlciB0aGFuIHplcm8sIG9yIHhjIHJlcHJlc2VudHNcclxuICAgICAgICAvLyB6ZXJvLCB0aGVuIHRoZSByZXN1bHQgb2YgdGhlIGJhc2UgY29udmVyc2lvbiBpcyB6ZXJvIG9yLCBpZiByb3VuZGluZyB1cCwgYSB2YWx1ZVxyXG4gICAgICAgIC8vIHN1Y2ggYXMgMC4wMDAwMS5cclxuICAgICAgICBpZiAoZCA8IDEgfHwgIXhjWzBdKSB7XHJcblxyXG4gICAgICAgICAgLy8gMV4tZHAgb3IgMFxyXG4gICAgICAgICAgc3RyID0gciA/IHRvRml4ZWRQb2ludChhbHBoYWJldC5jaGFyQXQoMSksIC1kcCwgYWxwaGFiZXQuY2hhckF0KDApKSA6IGFscGhhYmV0LmNoYXJBdCgwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIFRydW5jYXRlIHhjIHRvIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgICAgICB4Yy5sZW5ndGggPSBkO1xyXG5cclxuICAgICAgICAgIC8vIFJvdW5kIHVwP1xyXG4gICAgICAgICAgaWYgKHIpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIFJvdW5kaW5nIHVwIG1heSBtZWFuIHRoZSBwcmV2aW91cyBkaWdpdCBoYXMgdG8gYmUgcm91bmRlZCB1cCBhbmQgc28gb24uXHJcbiAgICAgICAgICAgIGZvciAoLS1iYXNlT3V0OyArK3hjWy0tZF0gPiBiYXNlT3V0Oykge1xyXG4gICAgICAgICAgICAgIHhjW2RdID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKCFkKSB7XHJcbiAgICAgICAgICAgICAgICArK2U7XHJcbiAgICAgICAgICAgICAgICB4YyA9IFsxXS5jb25jYXQoeGMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIERldGVybWluZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICAgIGZvciAoayA9IHhjLmxlbmd0aDsgIXhjWy0ta107KTtcclxuXHJcbiAgICAgICAgICAvLyBFLmcuIFs0LCAxMSwgMTVdIGJlY29tZXMgNGJmLlxyXG4gICAgICAgICAgZm9yIChpID0gMCwgc3RyID0gJyc7IGkgPD0gazsgc3RyICs9IGFscGhhYmV0LmNoYXJBdCh4Y1tpKytdKSk7XHJcblxyXG4gICAgICAgICAgLy8gQWRkIGxlYWRpbmcgemVyb3MsIGRlY2ltYWwgcG9pbnQgYW5kIHRyYWlsaW5nIHplcm9zIGFzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgc3RyID0gdG9GaXhlZFBvaW50KHN0ciwgZSwgYWxwaGFiZXQuY2hhckF0KDApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRoZSBjYWxsZXIgd2lsbCBhZGQgdGhlIHNpZ24uXHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgICAgfTtcclxuICAgIH0pKCk7XHJcblxyXG5cclxuICAgIC8vIFBlcmZvcm0gZGl2aXNpb24gaW4gdGhlIHNwZWNpZmllZCBiYXNlLiBDYWxsZWQgYnkgZGl2IGFuZCBjb252ZXJ0QmFzZS5cclxuICAgIGRpdiA9IChmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAvLyBBc3N1bWUgbm9uLXplcm8geCBhbmQgay5cclxuICAgICAgZnVuY3Rpb24gbXVsdGlwbHkoeCwgaywgYmFzZSkge1xyXG4gICAgICAgIHZhciBtLCB0ZW1wLCB4bG8sIHhoaSxcclxuICAgICAgICAgIGNhcnJ5ID0gMCxcclxuICAgICAgICAgIGkgPSB4Lmxlbmd0aCxcclxuICAgICAgICAgIGtsbyA9IGsgJSBTUVJUX0JBU0UsXHJcbiAgICAgICAgICBraGkgPSBrIC8gU1FSVF9CQVNFIHwgMDtcclxuXHJcbiAgICAgICAgZm9yICh4ID0geC5zbGljZSgpOyBpLS07KSB7XHJcbiAgICAgICAgICB4bG8gPSB4W2ldICUgU1FSVF9CQVNFO1xyXG4gICAgICAgICAgeGhpID0geFtpXSAvIFNRUlRfQkFTRSB8IDA7XHJcbiAgICAgICAgICBtID0ga2hpICogeGxvICsgeGhpICoga2xvO1xyXG4gICAgICAgICAgdGVtcCA9IGtsbyAqIHhsbyArICgobSAlIFNRUlRfQkFTRSkgKiBTUVJUX0JBU0UpICsgY2Fycnk7XHJcbiAgICAgICAgICBjYXJyeSA9ICh0ZW1wIC8gYmFzZSB8IDApICsgKG0gLyBTUVJUX0JBU0UgfCAwKSArIGtoaSAqIHhoaTtcclxuICAgICAgICAgIHhbaV0gPSB0ZW1wICUgYmFzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjYXJyeSkgeCA9IFtjYXJyeV0uY29uY2F0KHgpO1xyXG5cclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgZnVuY3Rpb24gY29tcGFyZShhLCBiLCBhTCwgYkwpIHtcclxuICAgICAgICB2YXIgaSwgY21wO1xyXG5cclxuICAgICAgICBpZiAoYUwgIT0gYkwpIHtcclxuICAgICAgICAgIGNtcCA9IGFMID4gYkwgPyAxIDogLTE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICBmb3IgKGkgPSBjbXAgPSAwOyBpIDwgYUw7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgaWYgKGFbaV0gIT0gYltpXSkge1xyXG4gICAgICAgICAgICAgIGNtcCA9IGFbaV0gPiBiW2ldID8gMSA6IC0xO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY21wO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiLCBhTCwgYmFzZSkge1xyXG4gICAgICAgIHZhciBpID0gMDtcclxuXHJcbiAgICAgICAgLy8gU3VidHJhY3QgYiBmcm9tIGEuXHJcbiAgICAgICAgZm9yICg7IGFMLS07KSB7XHJcbiAgICAgICAgICBhW2FMXSAtPSBpO1xyXG4gICAgICAgICAgaSA9IGFbYUxdIDwgYlthTF0gPyAxIDogMDtcclxuICAgICAgICAgIGFbYUxdID0gaSAqIGJhc2UgKyBhW2FMXSAtIGJbYUxdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yICg7ICFhWzBdICYmIGEubGVuZ3RoID4gMTsgYS5zcGxpY2UoMCwgMSkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB4OiBkaXZpZGVuZCwgeTogZGl2aXNvci5cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5LCBkcCwgcm0sIGJhc2UpIHtcclxuICAgICAgICB2YXIgY21wLCBlLCBpLCBtb3JlLCBuLCBwcm9kLCBwcm9kTCwgcSwgcWMsIHJlbSwgcmVtTCwgcmVtMCwgeGksIHhMLCB5YzAsXHJcbiAgICAgICAgICB5TCwgeXosXHJcbiAgICAgICAgICBzID0geC5zID09IHkucyA/IDEgOiAtMSxcclxuICAgICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgICAgeWMgPSB5LmM7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciBOYU4sIEluZmluaXR5IG9yIDA/XHJcbiAgICAgICAgaWYgKCF4YyB8fCAheGNbMF0gfHwgIXljIHx8ICF5Y1swXSkge1xyXG5cclxuICAgICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKFxyXG5cclxuICAgICAgICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBOYU4sIG9yIGJvdGggSW5maW5pdHkgb3IgMC5cclxuICAgICAgICAgICAheC5zIHx8ICF5LnMgfHwgKHhjID8geWMgJiYgeGNbMF0gPT0geWNbMF0gOiAheWMpID8gTmFOIDpcclxuXHJcbiAgICAgICAgICAgIC8vIFJldHVybiDCsTAgaWYgeCBpcyDCsTAgb3IgeSBpcyDCsUluZmluaXR5LCBvciByZXR1cm4gwrFJbmZpbml0eSBhcyB5IGlzIMKxMC5cclxuICAgICAgICAgICAgeGMgJiYgeGNbMF0gPT0gMCB8fCAheWMgPyBzICogMCA6IHMgLyAwXHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBxID0gbmV3IEJpZ051bWJlcihzKTtcclxuICAgICAgICBxYyA9IHEuYyA9IFtdO1xyXG4gICAgICAgIGUgPSB4LmUgLSB5LmU7XHJcbiAgICAgICAgcyA9IGRwICsgZSArIDE7XHJcblxyXG4gICAgICAgIGlmICghYmFzZSkge1xyXG4gICAgICAgICAgYmFzZSA9IEJBU0U7XHJcbiAgICAgICAgICBlID0gYml0Rmxvb3IoeC5lIC8gTE9HX0JBU0UpIC0gYml0Rmxvb3IoeS5lIC8gTE9HX0JBU0UpO1xyXG4gICAgICAgICAgcyA9IHMgLyBMT0dfQkFTRSB8IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZXN1bHQgZXhwb25lbnQgbWF5IGJlIG9uZSBsZXNzIHRoZW4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgZS5cclxuICAgICAgICAvLyBUaGUgY29lZmZpY2llbnRzIG9mIHRoZSBCaWdOdW1iZXJzIGZyb20gY29udmVydEJhc2UgbWF5IGhhdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yIChpID0gMDsgeWNbaV0gPT0gKHhjW2ldIHx8IDApOyBpKyspO1xyXG5cclxuICAgICAgICBpZiAoeWNbaV0gPiAoeGNbaV0gfHwgMCkpIGUtLTtcclxuXHJcbiAgICAgICAgaWYgKHMgPCAwKSB7XHJcbiAgICAgICAgICBxYy5wdXNoKDEpO1xyXG4gICAgICAgICAgbW9yZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHhMID0geGMubGVuZ3RoO1xyXG4gICAgICAgICAgeUwgPSB5Yy5sZW5ndGg7XHJcbiAgICAgICAgICBpID0gMDtcclxuICAgICAgICAgIHMgKz0gMjtcclxuXHJcbiAgICAgICAgICAvLyBOb3JtYWxpc2UgeGMgYW5kIHljIHNvIGhpZ2hlc3Qgb3JkZXIgZGlnaXQgb2YgeWMgaXMgPj0gYmFzZSAvIDIuXHJcblxyXG4gICAgICAgICAgbiA9IG1hdGhmbG9vcihiYXNlIC8gKHljWzBdICsgMSkpO1xyXG5cclxuICAgICAgICAgIC8vIE5vdCBuZWNlc3NhcnksIGJ1dCB0byBoYW5kbGUgb2RkIGJhc2VzIHdoZXJlIHljWzBdID09IChiYXNlIC8gMikgLSAxLlxyXG4gICAgICAgICAgLy8gaWYgKG4gPiAxIHx8IG4rKyA9PSAxICYmIHljWzBdIDwgYmFzZSAvIDIpIHtcclxuICAgICAgICAgIGlmIChuID4gMSkge1xyXG4gICAgICAgICAgICB5YyA9IG11bHRpcGx5KHljLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgeGMgPSBtdWx0aXBseSh4YywgbiwgYmFzZSk7XHJcbiAgICAgICAgICAgIHlMID0geWMubGVuZ3RoO1xyXG4gICAgICAgICAgICB4TCA9IHhjLmxlbmd0aDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB4aSA9IHlMO1xyXG4gICAgICAgICAgcmVtID0geGMuc2xpY2UoMCwgeUwpO1xyXG4gICAgICAgICAgcmVtTCA9IHJlbS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgLy8gQWRkIHplcm9zIHRvIG1ha2UgcmVtYWluZGVyIGFzIGxvbmcgYXMgZGl2aXNvci5cclxuICAgICAgICAgIGZvciAoOyByZW1MIDwgeUw7IHJlbVtyZW1MKytdID0gMCk7XHJcbiAgICAgICAgICB5eiA9IHljLnNsaWNlKCk7XHJcbiAgICAgICAgICB5eiA9IFswXS5jb25jYXQoeXopO1xyXG4gICAgICAgICAgeWMwID0geWNbMF07XHJcbiAgICAgICAgICBpZiAoeWNbMV0gPj0gYmFzZSAvIDIpIHljMCsrO1xyXG4gICAgICAgICAgLy8gTm90IG5lY2Vzc2FyeSwgYnV0IHRvIHByZXZlbnQgdHJpYWwgZGlnaXQgbiA+IGJhc2UsIHdoZW4gdXNpbmcgYmFzZSAzLlxyXG4gICAgICAgICAgLy8gZWxzZSBpZiAoYmFzZSA9PSAzICYmIHljMCA9PSAxKSB5YzAgPSAxICsgMWUtMTU7XHJcblxyXG4gICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBuID0gMDtcclxuXHJcbiAgICAgICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICBjbXAgPSBjb21wYXJlKHljLCByZW0sIHlMLCByZW1MKTtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIGRpdmlzb3IgPCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0cmlhbCBkaWdpdCwgbi5cclxuXHJcbiAgICAgICAgICAgICAgcmVtMCA9IHJlbVswXTtcclxuICAgICAgICAgICAgICBpZiAoeUwgIT0gcmVtTCkgcmVtMCA9IHJlbTAgKiBiYXNlICsgKHJlbVsxXSB8fCAwKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gbiBpcyBob3cgbWFueSB0aW1lcyB0aGUgZGl2aXNvciBnb2VzIGludG8gdGhlIGN1cnJlbnQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIG4gPSBtYXRoZmxvb3IocmVtMCAvIHljMCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vICBBbGdvcml0aG06XHJcbiAgICAgICAgICAgICAgLy8gIHByb2R1Y3QgPSBkaXZpc29yIG11bHRpcGxpZWQgYnkgdHJpYWwgZGlnaXQgKG4pLlxyXG4gICAgICAgICAgICAgIC8vICBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAvLyAgSWYgcHJvZHVjdCBpcyBncmVhdGVyIHRoYW4gcmVtYWluZGVyOlxyXG4gICAgICAgICAgICAgIC8vICAgIFN1YnRyYWN0IGRpdmlzb3IgZnJvbSBwcm9kdWN0LCBkZWNyZW1lbnQgdHJpYWwgZGlnaXQuXHJcbiAgICAgICAgICAgICAgLy8gIFN1YnRyYWN0IHByb2R1Y3QgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgLy8gIElmIHByb2R1Y3Qgd2FzIGxlc3MgdGhhbiByZW1haW5kZXIgYXQgdGhlIGxhc3QgY29tcGFyZTpcclxuICAgICAgICAgICAgICAvLyAgICBDb21wYXJlIG5ldyByZW1haW5kZXIgYW5kIGRpdmlzb3IuXHJcbiAgICAgICAgICAgICAgLy8gICAgSWYgcmVtYWluZGVyIGlzIGdyZWF0ZXIgdGhhbiBkaXZpc29yOlxyXG4gICAgICAgICAgICAgIC8vICAgICAgU3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlciwgaW5jcmVtZW50IHRyaWFsIGRpZ2l0LlxyXG5cclxuICAgICAgICAgICAgICBpZiAobiA+IDEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBuIG1heSBiZSA+IGJhc2Ugb25seSB3aGVuIGJhc2UgaXMgMy5cclxuICAgICAgICAgICAgICAgIGlmIChuID49IGJhc2UpIG4gPSBiYXNlIC0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBwcm9kdWN0ID0gZGl2aXNvciAqIHRyaWFsIGRpZ2l0LlxyXG4gICAgICAgICAgICAgICAgcHJvZCA9IG11bHRpcGx5KHljLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIElmIHByb2R1Y3QgPiByZW1haW5kZXIgdGhlbiB0cmlhbCBkaWdpdCBuIHRvbyBoaWdoLlxyXG4gICAgICAgICAgICAgICAgLy8gbiBpcyAxIHRvbyBoaWdoIGFib3V0IDUlIG9mIHRoZSB0aW1lLCBhbmQgaXMgbm90IGtub3duIHRvIGhhdmVcclxuICAgICAgICAgICAgICAgIC8vIGV2ZXIgYmVlbiBtb3JlIHRoYW4gMSB0b28gaGlnaC5cclxuICAgICAgICAgICAgICAgIHdoaWxlIChjb21wYXJlKHByb2QsIHJlbSwgcHJvZEwsIHJlbUwpID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgbi0tO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gU3VidHJhY3QgZGl2aXNvciBmcm9tIHByb2R1Y3QuXHJcbiAgICAgICAgICAgICAgICAgIHN1YnRyYWN0KHByb2QsIHlMIDwgcHJvZEwgPyB5eiA6IHljLCBwcm9kTCwgYmFzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgIGNtcCA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBuIGlzIDAgb3IgMSwgY21wIGlzIC0xLlxyXG4gICAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNvbXBhcmUgeWMgYW5kIHJlbSBhZ2FpbiBiZWxvdyxcclxuICAgICAgICAgICAgICAgIC8vIHNvIGNoYW5nZSBjbXAgdG8gMSB0byBhdm9pZCBpdC5cclxuICAgICAgICAgICAgICAgIC8vIElmIG4gaXMgMSwgbGVhdmUgY21wIGFzIC0xLCBzbyB5YyBhbmQgcmVtIGFyZSBjb21wYXJlZCBhZ2Fpbi5cclxuICAgICAgICAgICAgICAgIGlmIChuID09IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIGRpdmlzb3IgPCByZW1haW5kZXIsIHNvIG4gbXVzdCBiZSBhdCBsZWFzdCAxLlxyXG4gICAgICAgICAgICAgICAgICBjbXAgPSBuID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBwcm9kdWN0ID0gZGl2aXNvclxyXG4gICAgICAgICAgICAgICAgcHJvZCA9IHljLnNsaWNlKCk7XHJcbiAgICAgICAgICAgICAgICBwcm9kTCA9IHByb2QubGVuZ3RoO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHByb2RMIDwgcmVtTCkgcHJvZCA9IFswXS5jb25jYXQocHJvZCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFN1YnRyYWN0IHByb2R1Y3QgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgc3VidHJhY3QocmVtLCBwcm9kLCByZW1MLCBiYXNlKTtcclxuICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgIC8vIElmIHByb2R1Y3Qgd2FzIDwgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGlmIChjbXAgPT0gLTEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIGRpdmlzb3IgYW5kIG5ldyByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiBkaXZpc29yIDwgbmV3IHJlbWFpbmRlciwgc3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIFRyaWFsIGRpZ2l0IG4gdG9vIGxvdy5cclxuICAgICAgICAgICAgICAgIC8vIG4gaXMgMSB0b28gbG93IGFib3V0IDUlIG9mIHRoZSB0aW1lLCBhbmQgdmVyeSByYXJlbHkgMiB0b28gbG93LlxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvbXBhcmUoeWMsIHJlbSwgeUwsIHJlbUwpIDwgMSkge1xyXG4gICAgICAgICAgICAgICAgICBuKys7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgICBzdWJ0cmFjdChyZW0sIHlMIDwgcmVtTCA/IHl6IDogeWMsIHJlbUwsIGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY21wID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgbisrO1xyXG4gICAgICAgICAgICAgIHJlbSA9IFswXTtcclxuICAgICAgICAgICAgfSAvLyBlbHNlIGNtcCA9PT0gMSBhbmQgbiB3aWxsIGJlIDBcclxuXHJcbiAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV4dCBkaWdpdCwgbiwgdG8gdGhlIHJlc3VsdCBhcnJheS5cclxuICAgICAgICAgICAgcWNbaSsrXSA9IG47XHJcblxyXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgaWYgKHJlbVswXSkge1xyXG4gICAgICAgICAgICAgIHJlbVtyZW1MKytdID0geGNbeGldIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVtID0gW3hjW3hpXV07XHJcbiAgICAgICAgICAgICAgcmVtTCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gd2hpbGUgKCh4aSsrIDwgeEwgfHwgcmVtWzBdICE9IG51bGwpICYmIHMtLSk7XHJcblxyXG4gICAgICAgICAgbW9yZSA9IHJlbVswXSAhPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vIExlYWRpbmcgemVybz9cclxuICAgICAgICAgIGlmICghcWNbMF0pIHFjLnNwbGljZSgwLCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChiYXNlID09IEJBU0UpIHtcclxuXHJcbiAgICAgICAgICAvLyBUbyBjYWxjdWxhdGUgcS5lLCBmaXJzdCBnZXQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgcWNbMF0uXHJcbiAgICAgICAgICBmb3IgKGkgPSAxLCBzID0gcWNbMF07IHMgPj0gMTA7IHMgLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAgICAgcm91bmQocSwgZHAgKyAocS5lID0gaSArIGUgKiBMT0dfQkFTRSAtIDEpICsgMSwgcm0sIG1vcmUpO1xyXG5cclxuICAgICAgICAvLyBDYWxsZXIgaXMgY29udmVydEJhc2UuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHEuZSA9IGU7XHJcbiAgICAgICAgICBxLnIgPSArbW9yZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBxO1xyXG4gICAgICB9O1xyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIEJpZ051bWJlciBuIGluIGZpeGVkLXBvaW50IG9yIGV4cG9uZW50aWFsXHJcbiAgICAgKiBub3RhdGlvbiByb3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgZGVjaW1hbCBwbGFjZXMgb3Igc2lnbmlmaWNhbnQgZGlnaXRzLlxyXG4gICAgICpcclxuICAgICAqIG46IGEgQmlnTnVtYmVyLlxyXG4gICAgICogaTogdGhlIGluZGV4IG9mIHRoZSBsYXN0IGRpZ2l0IHJlcXVpcmVkIChpLmUuIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwKS5cclxuICAgICAqIHJtOiB0aGUgcm91bmRpbmcgbW9kZS5cclxuICAgICAqIGlkOiAxICh0b0V4cG9uZW50aWFsKSBvciAyICh0b1ByZWNpc2lvbikuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGZvcm1hdChuLCBpLCBybSwgaWQpIHtcclxuICAgICAgdmFyIGMwLCBlLCBuZSwgbGVuLCBzdHI7XHJcblxyXG4gICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgIGlmICghbi5jKSByZXR1cm4gbi50b1N0cmluZygpO1xyXG5cclxuICAgICAgYzAgPSBuLmNbMF07XHJcbiAgICAgIG5lID0gbi5lO1xyXG5cclxuICAgICAgaWYgKGkgPT0gbnVsbCkge1xyXG4gICAgICAgIHN0ciA9IGNvZWZmVG9TdHJpbmcobi5jKTtcclxuICAgICAgICBzdHIgPSBpZCA9PSAxIHx8IGlkID09IDIgJiYgKG5lIDw9IFRPX0VYUF9ORUcgfHwgbmUgPj0gVE9fRVhQX1BPUylcclxuICAgICAgICAgPyB0b0V4cG9uZW50aWFsKHN0ciwgbmUpXHJcbiAgICAgICAgIDogdG9GaXhlZFBvaW50KHN0ciwgbmUsICcwJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbiA9IHJvdW5kKG5ldyBCaWdOdW1iZXIobiksIGksIHJtKTtcclxuXHJcbiAgICAgICAgLy8gbi5lIG1heSBoYXZlIGNoYW5nZWQgaWYgdGhlIHZhbHVlIHdhcyByb3VuZGVkIHVwLlxyXG4gICAgICAgIGUgPSBuLmU7XHJcblxyXG4gICAgICAgIHN0ciA9IGNvZWZmVG9TdHJpbmcobi5jKTtcclxuICAgICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyB0b1ByZWNpc2lvbiByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uIGlmIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzXHJcbiAgICAgICAgLy8gc3BlY2lmaWVkIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSBpbnRlZ2VyXHJcbiAgICAgICAgLy8gcGFydCBvZiB0aGUgdmFsdWUgaW4gZml4ZWQtcG9pbnQgbm90YXRpb24uXHJcblxyXG4gICAgICAgIC8vIEV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAgIGlmIChpZCA9PSAxIHx8IGlkID09IDIgJiYgKGkgPD0gZSB8fCBlIDw9IFRPX0VYUF9ORUcpKSB7XHJcblxyXG4gICAgICAgICAgLy8gQXBwZW5kIHplcm9zP1xyXG4gICAgICAgICAgZm9yICg7IGxlbiA8IGk7IHN0ciArPSAnMCcsIGxlbisrKTtcclxuICAgICAgICAgIHN0ciA9IHRvRXhwb25lbnRpYWwoc3RyLCBlKTtcclxuXHJcbiAgICAgICAgLy8gRml4ZWQtcG9pbnQgbm90YXRpb24uXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGkgLT0gbmU7XHJcbiAgICAgICAgICBzdHIgPSB0b0ZpeGVkUG9pbnQoc3RyLCBlLCAnMCcpO1xyXG5cclxuICAgICAgICAgIC8vIEFwcGVuZCB6ZXJvcz9cclxuICAgICAgICAgIGlmIChlICsgMSA+IGxlbikge1xyXG4gICAgICAgICAgICBpZiAoLS1pID4gMCkgZm9yIChzdHIgKz0gJy4nOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSArPSBlIC0gbGVuO1xyXG4gICAgICAgICAgICBpZiAoaSA+IDApIHtcclxuICAgICAgICAgICAgICBpZiAoZSArIDEgPT0gbGVuKSBzdHIgKz0gJy4nO1xyXG4gICAgICAgICAgICAgIGZvciAoOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbi5zIDwgMCAmJiBjMCA/ICctJyArIHN0ciA6IHN0cjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gSGFuZGxlIEJpZ051bWJlci5tYXggYW5kIEJpZ051bWJlci5taW4uXHJcbiAgICBmdW5jdGlvbiBtYXhPck1pbihhcmdzLCBtZXRob2QpIHtcclxuICAgICAgdmFyIG4sXHJcbiAgICAgICAgaSA9IDEsXHJcbiAgICAgICAgbSA9IG5ldyBCaWdOdW1iZXIoYXJnc1swXSk7XHJcblxyXG4gICAgICBmb3IgKDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBuID0gbmV3IEJpZ051bWJlcihhcmdzW2ldKTtcclxuXHJcbiAgICAgICAgLy8gSWYgYW55IG51bWJlciBpcyBOYU4sIHJldHVybiBOYU4uXHJcbiAgICAgICAgaWYgKCFuLnMpIHtcclxuICAgICAgICAgIG0gPSBuO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXRob2QuY2FsbChtLCBuKSkge1xyXG4gICAgICAgICAgbSA9IG47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFN0cmlwIHRyYWlsaW5nIHplcm9zLCBjYWxjdWxhdGUgYmFzZSAxMCBleHBvbmVudCBhbmQgY2hlY2sgYWdhaW5zdCBNSU5fRVhQIGFuZCBNQVhfRVhQLlxyXG4gICAgICogQ2FsbGVkIGJ5IG1pbnVzLCBwbHVzIGFuZCB0aW1lcy5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gbm9ybWFsaXNlKG4sIGMsIGUpIHtcclxuICAgICAgdmFyIGkgPSAxLFxyXG4gICAgICAgIGogPSBjLmxlbmd0aDtcclxuXHJcbiAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoOyAhY1stLWpdOyBjLnBvcCgpKTtcclxuXHJcbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYmFzZSAxMCBleHBvbmVudC4gRmlyc3QgZ2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIGNbMF0uXHJcbiAgICAgIGZvciAoaiA9IGNbMF07IGogPj0gMTA7IGogLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdz9cclxuICAgICAgaWYgKChlID0gaSArIGUgKiBMT0dfQkFTRSAtIDEpID4gTUFYX0VYUCkge1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eS5cclxuICAgICAgICBuLmMgPSBuLmUgPSBudWxsO1xyXG5cclxuICAgICAgLy8gVW5kZXJmbG93P1xyXG4gICAgICB9IGVsc2UgaWYgKGUgPCBNSU5fRVhQKSB7XHJcblxyXG4gICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgbi5jID0gW24uZSA9IDBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG4uZSA9IGU7XHJcbiAgICAgICAgbi5jID0gYztcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIEhhbmRsZSB2YWx1ZXMgdGhhdCBmYWlsIHRoZSB2YWxpZGl0eSB0ZXN0IGluIEJpZ051bWJlci5cclxuICAgIHBhcnNlTnVtZXJpYyA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBiYXNlUHJlZml4ID0gL14oLT8pMChbeGJvXSkoPz1cXHdbXFx3Ll0qJCkvaSxcclxuICAgICAgICBkb3RBZnRlciA9IC9eKFteLl0rKVxcLiQvLFxyXG4gICAgICAgIGRvdEJlZm9yZSA9IC9eXFwuKFteLl0rKSQvLFxyXG4gICAgICAgIGlzSW5maW5pdHlPck5hTiA9IC9eLT8oSW5maW5pdHl8TmFOKSQvLFxyXG4gICAgICAgIHdoaXRlc3BhY2VPclBsdXMgPSAvXlxccypcXCsoPz1bXFx3Ll0pfF5cXHMrfFxccyskL2c7XHJcblxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHgsIHN0ciwgaXNOdW0sIGIpIHtcclxuICAgICAgICB2YXIgYmFzZSxcclxuICAgICAgICAgIHMgPSBpc051bSA/IHN0ciA6IHN0ci5yZXBsYWNlKHdoaXRlc3BhY2VPclBsdXMsICcnKTtcclxuXHJcbiAgICAgICAgLy8gTm8gZXhjZXB0aW9uIG9uIMKxSW5maW5pdHkgb3IgTmFOLlxyXG4gICAgICAgIGlmIChpc0luZmluaXR5T3JOYU4udGVzdChzKSkge1xyXG4gICAgICAgICAgeC5zID0gaXNOYU4ocykgPyBudWxsIDogcyA8IDAgPyAtMSA6IDE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICghaXNOdW0pIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGJhc2VQcmVmaXggPSAvXigtPykwKFt4Ym9dKSg/PVxcd1tcXHcuXSokKS9pXHJcbiAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoYmFzZVByZWZpeCwgZnVuY3Rpb24gKG0sIHAxLCBwMikge1xyXG4gICAgICAgICAgICAgIGJhc2UgPSAocDIgPSBwMi50b0xvd2VyQ2FzZSgpKSA9PSAneCcgPyAxNiA6IHAyID09ICdiJyA/IDIgOiA4O1xyXG4gICAgICAgICAgICAgIHJldHVybiAhYiB8fCBiID09IGJhc2UgPyBwMSA6IG07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGIpIHtcclxuICAgICAgICAgICAgICBiYXNlID0gYjtcclxuXHJcbiAgICAgICAgICAgICAgLy8gRS5nLiAnMS4nIHRvICcxJywgJy4xJyB0byAnMC4xJ1xyXG4gICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoZG90QWZ0ZXIsICckMScpLnJlcGxhY2UoZG90QmVmb3JlLCAnMC4kMScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc3RyICE9IHMpIHJldHVybiBuZXcgQmlnTnVtYmVyKHMsIGJhc2UpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOb3QgYSBudW1iZXI6IHtufSdcclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOb3QgYSBiYXNlIHtifSBudW1iZXI6IHtufSdcclxuICAgICAgICAgIGlmIChCaWdOdW1iZXIuREVCVUcpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnTm90IGEnICsgKGIgPyAnIGJhc2UgJyArIGIgOiAnJykgKyAnIG51bWJlcjogJyArIHN0cik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gTmFOXHJcbiAgICAgICAgICB4LnMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJvdW5kIHggdG8gc2Qgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0uIENoZWNrIGZvciBvdmVyL3VuZGVyLWZsb3cuXHJcbiAgICAgKiBJZiByIGlzIHRydXRoeSwgaXQgaXMga25vd24gdGhhdCB0aGVyZSBhcmUgbW9yZSBkaWdpdHMgYWZ0ZXIgdGhlIHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiByb3VuZCh4LCBzZCwgcm0sIHIpIHtcclxuICAgICAgdmFyIGQsIGksIGosIGssIG4sIG5pLCByZCxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICBwb3dzMTAgPSBQT1dTX1RFTjtcclxuXHJcbiAgICAgIC8vIGlmIHggaXMgbm90IEluZmluaXR5IG9yIE5hTi4uLlxyXG4gICAgICBpZiAoeGMpIHtcclxuXHJcbiAgICAgICAgLy8gcmQgaXMgdGhlIHJvdW5kaW5nIGRpZ2l0LCBpLmUuIHRoZSBkaWdpdCBhZnRlciB0aGUgZGlnaXQgdGhhdCBtYXkgYmUgcm91bmRlZCB1cC5cclxuICAgICAgICAvLyBuIGlzIGEgYmFzZSAxZTE0IG51bWJlciwgdGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50IG9mIGFycmF5IHguYyBjb250YWluaW5nIHJkLlxyXG4gICAgICAgIC8vIG5pIGlzIHRoZSBpbmRleCBvZiBuIHdpdGhpbiB4LmMuXHJcbiAgICAgICAgLy8gZCBpcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBuLlxyXG4gICAgICAgIC8vIGkgaXMgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiBuIGluY2x1ZGluZyBsZWFkaW5nIHplcm9zLlxyXG4gICAgICAgIC8vIGogaXMgdGhlIGFjdHVhbCBpbmRleCBvZiByZCB3aXRoaW4gbiAoaWYgPCAwLCByZCBpcyBhIGxlYWRpbmcgemVybykuXHJcbiAgICAgICAgb3V0OiB7XHJcblxyXG4gICAgICAgICAgLy8gR2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50IG9mIHhjLlxyXG4gICAgICAgICAgZm9yIChkID0gMSwgayA9IHhjWzBdOyBrID49IDEwOyBrIC89IDEwLCBkKyspO1xyXG4gICAgICAgICAgaSA9IHNkIC0gZDtcclxuXHJcbiAgICAgICAgICAvLyBJZiB0aGUgcm91bmRpbmcgZGlnaXQgaXMgaW4gdGhlIGZpcnN0IGVsZW1lbnQgb2YgeGMuLi5cclxuICAgICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgICBpICs9IExPR19CQVNFO1xyXG4gICAgICAgICAgICBqID0gc2Q7XHJcbiAgICAgICAgICAgIG4gPSB4Y1tuaSA9IDBdO1xyXG5cclxuICAgICAgICAgICAgLy8gR2V0IHRoZSByb3VuZGluZyBkaWdpdCBhdCBpbmRleCBqIG9mIG4uXHJcbiAgICAgICAgICAgIHJkID0gbiAvIHBvd3MxMFtkIC0gaiAtIDFdICUgMTAgfCAwO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmkgPSBtYXRoY2VpbCgoaSArIDEpIC8gTE9HX0JBU0UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG5pID49IHhjLmxlbmd0aCkge1xyXG5cclxuICAgICAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE5lZWRlZCBieSBzcXJ0LlxyXG4gICAgICAgICAgICAgICAgZm9yICg7IHhjLmxlbmd0aCA8PSBuaTsgeGMucHVzaCgwKSk7XHJcbiAgICAgICAgICAgICAgICBuID0gcmQgPSAwO1xyXG4gICAgICAgICAgICAgICAgZCA9IDE7XHJcbiAgICAgICAgICAgICAgICBpICU9IExPR19CQVNFO1xyXG4gICAgICAgICAgICAgICAgaiA9IGkgLSBMT0dfQkFTRSArIDE7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbiA9IGsgPSB4Y1tuaV07XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBuLlxyXG4gICAgICAgICAgICAgIGZvciAoZCA9IDE7IGsgPj0gMTA7IGsgLz0gMTAsIGQrKyk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgaW5kZXggb2YgcmQgd2l0aGluIG4uXHJcbiAgICAgICAgICAgICAgaSAlPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gR2V0IHRoZSBpbmRleCBvZiByZCB3aXRoaW4gbiwgYWRqdXN0ZWQgZm9yIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgICAgICAgLy8gVGhlIG51bWJlciBvZiBsZWFkaW5nIHplcm9zIG9mIG4gaXMgZ2l2ZW4gYnkgTE9HX0JBU0UgLSBkLlxyXG4gICAgICAgICAgICAgIGogPSBpIC0gTE9HX0JBU0UgKyBkO1xyXG5cclxuICAgICAgICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygbi5cclxuICAgICAgICAgICAgICByZCA9IGogPCAwID8gMCA6IG4gLyBwb3dzMTBbZCAtIGogLSAxXSAlIDEwIHwgMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHIgPSByIHx8IHNkIDwgMCB8fFxyXG5cclxuICAgICAgICAgIC8vIEFyZSB0aGVyZSBhbnkgbm9uLXplcm8gZGlnaXRzIGFmdGVyIHRoZSByb3VuZGluZyBkaWdpdD9cclxuICAgICAgICAgIC8vIFRoZSBleHByZXNzaW9uICBuICUgcG93czEwW2QgLSBqIC0gMV0gIHJldHVybnMgYWxsIGRpZ2l0cyBvZiBuIHRvIHRoZSByaWdodFxyXG4gICAgICAgICAgLy8gb2YgdGhlIGRpZ2l0IGF0IGosIGUuZy4gaWYgbiBpcyA5MDg3MTQgYW5kIGogaXMgMiwgdGhlIGV4cHJlc3Npb24gZ2l2ZXMgNzE0LlxyXG4gICAgICAgICAgIHhjW25pICsgMV0gIT0gbnVsbCB8fCAoaiA8IDAgPyBuIDogbiAlIHBvd3MxMFtkIC0gaiAtIDFdKTtcclxuXHJcbiAgICAgICAgICByID0gcm0gPCA0XHJcbiAgICAgICAgICAgPyAocmQgfHwgcikgJiYgKHJtID09IDAgfHwgcm0gPT0gKHgucyA8IDAgPyAzIDogMikpXHJcbiAgICAgICAgICAgOiByZCA+IDUgfHwgcmQgPT0gNSAmJiAocm0gPT0gNCB8fCByIHx8IHJtID09IDYgJiZcclxuXHJcbiAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGRpZ2l0IHRvIHRoZSBsZWZ0IG9mIHRoZSByb3VuZGluZyBkaWdpdCBpcyBvZGQuXHJcbiAgICAgICAgICAgICgoaSA+IDAgPyBqID4gMCA/IG4gLyBwb3dzMTBbZCAtIGpdIDogMCA6IHhjW25pIC0gMV0pICUgMTApICYgMSB8fFxyXG4gICAgICAgICAgICAgcm0gPT0gKHgucyA8IDAgPyA4IDogNykpO1xyXG5cclxuICAgICAgICAgIGlmIChzZCA8IDEgfHwgIXhjWzBdKSB7XHJcbiAgICAgICAgICAgIHhjLmxlbmd0aCA9IDA7XHJcblxyXG4gICAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgICAvLyBDb252ZXJ0IHNkIHRvIGRlY2ltYWwgcGxhY2VzLlxyXG4gICAgICAgICAgICAgIHNkIC09IHguZSArIDE7XHJcblxyXG4gICAgICAgICAgICAgIC8vIDEsIDAuMSwgMC4wMSwgMC4wMDEsIDAuMDAwMSBldGMuXHJcbiAgICAgICAgICAgICAgeGNbMF0gPSBwb3dzMTBbKExPR19CQVNFIC0gc2QgJSBMT0dfQkFTRSkgJSBMT0dfQkFTRV07XHJcbiAgICAgICAgICAgICAgeC5lID0gLXNkIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICAgICAgeGNbMF0gPSB4LmUgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4geDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBSZW1vdmUgZXhjZXNzIGRpZ2l0cy5cclxuICAgICAgICAgIGlmIChpID09IDApIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gbmk7XHJcbiAgICAgICAgICAgIGsgPSAxO1xyXG4gICAgICAgICAgICBuaS0tO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gbmkgKyAxO1xyXG4gICAgICAgICAgICBrID0gcG93czEwW0xPR19CQVNFIC0gaV07XHJcblxyXG4gICAgICAgICAgICAvLyBFLmcuIDU2NzAwIGJlY29tZXMgNTYwMDAgaWYgNyBpcyB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgICAgIC8vIGogPiAwIG1lYW5zIGkgPiBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiBuLlxyXG4gICAgICAgICAgICB4Y1tuaV0gPSBqID4gMCA/IG1hdGhmbG9vcihuIC8gcG93czEwW2QgLSBqXSAlIHBvd3MxMFtqXSkgKiBrIDogMDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBSb3VuZCB1cD9cclxuICAgICAgICAgIGlmIChyKSB7XHJcblxyXG4gICAgICAgICAgICBmb3IgKDsgOykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiB0aGUgZGlnaXQgdG8gYmUgcm91bmRlZCB1cCBpcyBpbiB0aGUgZmlyc3QgZWxlbWVudCBvZiB4Yy4uLlxyXG4gICAgICAgICAgICAgIGlmIChuaSA9PSAwKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaSB3aWxsIGJlIHRoZSBsZW5ndGggb2YgeGNbMF0gYmVmb3JlIGsgaXMgYWRkZWQuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBqID0geGNbMF07IGogPj0gMTA7IGogLz0gMTAsIGkrKyk7XHJcbiAgICAgICAgICAgICAgICBqID0geGNbMF0gKz0gaztcclxuICAgICAgICAgICAgICAgIGZvciAoayA9IDE7IGogPj0gMTA7IGogLz0gMTAsIGsrKyk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgaSAhPSBrIHRoZSBsZW5ndGggaGFzIGluY3JlYXNlZC5cclxuICAgICAgICAgICAgICAgIGlmIChpICE9IGspIHtcclxuICAgICAgICAgICAgICAgICAgeC5lKys7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh4Y1swXSA9PSBCQVNFKSB4Y1swXSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHhjW25pXSArPSBrO1xyXG4gICAgICAgICAgICAgICAgaWYgKHhjW25pXSAhPSBCQVNFKSBicmVhaztcclxuICAgICAgICAgICAgICAgIHhjW25pLS1dID0gMDtcclxuICAgICAgICAgICAgICAgIGsgPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICAgIGZvciAoaSA9IHhjLmxlbmd0aDsgeGNbLS1pXSA9PT0gMDsgeGMucG9wKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gT3ZlcmZsb3c/IEluZmluaXR5LlxyXG4gICAgICAgIGlmICh4LmUgPiBNQVhfRVhQKSB7XHJcbiAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBVbmRlcmZsb3c/IFplcm8uXHJcbiAgICAgICAgfSBlbHNlIGlmICh4LmUgPCBNSU5fRVhQKSB7XHJcbiAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4geDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gdmFsdWVPZihuKSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgZSA9IG4uZTtcclxuXHJcbiAgICAgIGlmIChlID09PSBudWxsKSByZXR1cm4gbi50b1N0cmluZygpO1xyXG5cclxuICAgICAgc3RyID0gY29lZmZUb1N0cmluZyhuLmMpO1xyXG5cclxuICAgICAgc3RyID0gZSA8PSBUT19FWFBfTkVHIHx8IGUgPj0gVE9fRVhQX1BPU1xyXG4gICAgICAgID8gdG9FeHBvbmVudGlhbChzdHIsIGUpXHJcbiAgICAgICAgOiB0b0ZpeGVkUG9pbnQoc3RyLCBlLCAnMCcpO1xyXG5cclxuICAgICAgcmV0dXJuIG4ucyA8IDAgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIFBST1RPVFlQRS9JTlNUQU5DRSBNRVRIT0RTXHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlci5cclxuICAgICAqL1xyXG4gICAgUC5hYnNvbHV0ZVZhbHVlID0gUC5hYnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciB4ID0gbmV3IEJpZ051bWJlcih0aGlzKTtcclxuICAgICAgaWYgKHgucyA8IDApIHgucyA9IDE7XHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVyblxyXG4gICAgICogICAxIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqICAgLTEgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogICAwIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZSxcclxuICAgICAqICAgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgZWl0aGVyIGlzIE5hTi5cclxuICAgICAqL1xyXG4gICAgUC5jb21wYXJlZFRvID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogSWYgZHAgaXMgdW5kZWZpbmVkIG9yIG51bGwgb3IgdHJ1ZSBvciBmYWxzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgb2YgdGhlXHJcbiAgICAgKiB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgKlxyXG4gICAgICogT3RoZXJ3aXNlLCBpZiBkcCBpcyBhIG51bWJlciwgcmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpc1xyXG4gICAgICogQmlnTnVtYmVyIHJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGRwIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yXHJcbiAgICAgKiBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlczogaW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLmRlY2ltYWxQbGFjZXMgPSBQLmRwID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgICB2YXIgYywgbiwgdixcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgaWYgKHJtID09IG51bGwpIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuICAgICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJvdW5kKG5ldyBCaWdOdW1iZXIoeCksIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIShjID0geC5jKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgIG4gPSAoKHYgPSBjLmxlbmd0aCAtIDEpIC0gYml0Rmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpKSAqIExPR19CQVNFO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCBudW1iZXIuXHJcbiAgICAgIGlmICh2ID0gY1t2XSkgZm9yICg7IHYgJSAxMCA9PSAwOyB2IC89IDEwLCBuLS0pO1xyXG4gICAgICBpZiAobiA8IDApIG4gPSAwO1xyXG5cclxuICAgICAgcmV0dXJuIG47XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gLyAwID0gSVxyXG4gICAgICogIG4gLyBOID0gTlxyXG4gICAgICogIG4gLyBJID0gMFxyXG4gICAgICogIDAgLyBuID0gMFxyXG4gICAgICogIDAgLyAwID0gTlxyXG4gICAgICogIDAgLyBOID0gTlxyXG4gICAgICogIDAgLyBJID0gMFxyXG4gICAgICogIE4gLyBuID0gTlxyXG4gICAgICogIE4gLyAwID0gTlxyXG4gICAgICogIE4gLyBOID0gTlxyXG4gICAgICogIE4gLyBJID0gTlxyXG4gICAgICogIEkgLyBuID0gSVxyXG4gICAgICogIEkgLyAwID0gSVxyXG4gICAgICogIEkgLyBOID0gTlxyXG4gICAgICogIEkgLyBJID0gTlxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGRpdmlkZWQgYnkgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIHJvdW5kZWQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZCBST1VORElOR19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLmRpdmlkZWRCeSA9IFAuZGl2ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGRpdih0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpLCBERUNJTUFMX1BMQUNFUywgUk9VTkRJTkdfTU9ERSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgaW50ZWdlciBwYXJ0IG9mIGRpdmlkaW5nIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgYnkgdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5kaXZpZGVkVG9JbnRlZ2VyQnkgPSBQLmlkaXYgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gZGl2KHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYiksIDAsIDEpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgZXhwb25lbnRpYXRlZCBieSBuLlxyXG4gICAgICpcclxuICAgICAqIElmIG0gaXMgcHJlc2VudCwgcmV0dXJuIHRoZSByZXN1bHQgbW9kdWxvIG0uXHJcbiAgICAgKiBJZiBuIGlzIG5lZ2F0aXZlIHJvdW5kIGFjY29yZGluZyB0byBERUNJTUFMX1BMQUNFUyBhbmQgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqIElmIFBPV19QUkVDSVNJT04gaXMgbm9uLXplcm8gYW5kIG0gaXMgbm90IHByZXNlbnQsIHJvdW5kIHRvIFBPV19QUkVDSVNJT04gdXNpbmcgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqXHJcbiAgICAgKiBUaGUgbW9kdWxhciBwb3dlciBvcGVyYXRpb24gd29ya3MgZWZmaWNpZW50bHkgd2hlbiB4LCBuLCBhbmQgbSBhcmUgaW50ZWdlcnMsIG90aGVyd2lzZSBpdFxyXG4gICAgICogaXMgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB4LmV4cG9uZW50aWF0ZWRCeShuKS5tb2R1bG8obSkgd2l0aCBhIFBPV19QUkVDSVNJT04gb2YgMC5cclxuICAgICAqXHJcbiAgICAgKiBuIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gVGhlIGV4cG9uZW50LiBBbiBpbnRlZ2VyLlxyXG4gICAgICogW21dIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gVGhlIG1vZHVsdXMuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEV4cG9uZW50IG5vdCBhbiBpbnRlZ2VyOiB7bn0nXHJcbiAgICAgKi9cclxuICAgIFAuZXhwb25lbnRpYXRlZEJ5ID0gUC5wb3cgPSBmdW5jdGlvbiAobiwgbSkge1xyXG4gICAgICB2YXIgaGFsZiwgaXNNb2RFeHAsIGksIGssIG1vcmUsIG5Jc0JpZywgbklzTmVnLCBuSXNPZGQsIHksXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICBuID0gbmV3IEJpZ051bWJlcihuKTtcclxuXHJcbiAgICAgIC8vIEFsbG93IE5hTiBhbmQgwrFJbmZpbml0eSwgYnV0IG5vdCBvdGhlciBub24taW50ZWdlcnMuXHJcbiAgICAgIGlmIChuLmMgJiYgIW4uaXNJbnRlZ2VyKCkpIHtcclxuICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0V4cG9uZW50IG5vdCBhbiBpbnRlZ2VyOiAnICsgdmFsdWVPZihuKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtICE9IG51bGwpIG0gPSBuZXcgQmlnTnVtYmVyKG0pO1xyXG5cclxuICAgICAgLy8gRXhwb25lbnQgb2YgTUFYX1NBRkVfSU5URUdFUiBpcyAxNS5cclxuICAgICAgbklzQmlnID0gbi5lID4gMTQ7XHJcblxyXG4gICAgICAvLyBJZiB4IGlzIE5hTiwgwrFJbmZpbml0eSwgwrEwIG9yIMKxMSwgb3IgbiBpcyDCsUluZmluaXR5LCBOYU4gb3IgwrEwLlxyXG4gICAgICBpZiAoIXguYyB8fCAheC5jWzBdIHx8IHguY1swXSA9PSAxICYmICF4LmUgJiYgeC5jLmxlbmd0aCA9PSAxIHx8ICFuLmMgfHwgIW4uY1swXSkge1xyXG5cclxuICAgICAgICAvLyBUaGUgc2lnbiBvZiB0aGUgcmVzdWx0IG9mIHBvdyB3aGVuIHggaXMgbmVnYXRpdmUgZGVwZW5kcyBvbiB0aGUgZXZlbm5lc3Mgb2Ygbi5cclxuICAgICAgICAvLyBJZiArbiBvdmVyZmxvd3MgdG8gwrFJbmZpbml0eSwgdGhlIGV2ZW5uZXNzIG9mIG4gd291bGQgYmUgbm90IGJlIGtub3duLlxyXG4gICAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKE1hdGgucG93KCt2YWx1ZU9mKHgpLCBuSXNCaWcgPyAyIC0gaXNPZGQobikgOiArdmFsdWVPZihuKSkpO1xyXG4gICAgICAgIHJldHVybiBtID8geS5tb2QobSkgOiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBuSXNOZWcgPSBuLnMgPCAwO1xyXG5cclxuICAgICAgaWYgKG0pIHtcclxuXHJcbiAgICAgICAgLy8geCAlIG0gcmV0dXJucyBOYU4gaWYgYWJzKG0pIGlzIHplcm8sIG9yIG0gaXMgTmFOLlxyXG4gICAgICAgIGlmIChtLmMgPyAhbS5jWzBdIDogIW0ucykgcmV0dXJuIG5ldyBCaWdOdW1iZXIoTmFOKTtcclxuXHJcbiAgICAgICAgaXNNb2RFeHAgPSAhbklzTmVnICYmIHguaXNJbnRlZ2VyKCkgJiYgbS5pc0ludGVnZXIoKTtcclxuXHJcbiAgICAgICAgaWYgKGlzTW9kRXhwKSB4ID0geC5tb2QobSk7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdyB0byDCsUluZmluaXR5OiA+PTIqKjFlMTAgb3IgPj0xLjAwMDAwMjQqKjFlMTUuXHJcbiAgICAgIC8vIFVuZGVyZmxvdyB0byDCsTA6IDw9MC43OSoqMWUxMCBvciA8PTAuOTk5OTk3NSoqMWUxNS5cclxuICAgICAgfSBlbHNlIGlmIChuLmUgPiA5ICYmICh4LmUgPiAwIHx8IHguZSA8IC0xIHx8ICh4LmUgPT0gMFxyXG4gICAgICAgIC8vIFsxLCAyNDAwMDAwMDBdXHJcbiAgICAgICAgPyB4LmNbMF0gPiAxIHx8IG5Jc0JpZyAmJiB4LmNbMV0gPj0gMjRlN1xyXG4gICAgICAgIC8vIFs4MDAwMDAwMDAwMDAwMF0gIFs5OTk5OTc1MDAwMDAwMF1cclxuICAgICAgICA6IHguY1swXSA8IDhlMTMgfHwgbklzQmlnICYmIHguY1swXSA8PSA5OTk5OTc1ZTcpKSkge1xyXG5cclxuICAgICAgICAvLyBJZiB4IGlzIG5lZ2F0aXZlIGFuZCBuIGlzIG9kZCwgayA9IC0wLCBlbHNlIGsgPSAwLlxyXG4gICAgICAgIGsgPSB4LnMgPCAwICYmIGlzT2RkKG4pID8gLTAgOiAwO1xyXG5cclxuICAgICAgICAvLyBJZiB4ID49IDEsIGsgPSDCsUluZmluaXR5LlxyXG4gICAgICAgIGlmICh4LmUgPiAtMSkgayA9IDEgLyBrO1xyXG5cclxuICAgICAgICAvLyBJZiBuIGlzIG5lZ2F0aXZlIHJldHVybiDCsTAsIGVsc2UgcmV0dXJuIMKxSW5maW5pdHkuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIobklzTmVnID8gMSAvIGsgOiBrKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoUE9XX1BSRUNJU0lPTikge1xyXG5cclxuICAgICAgICAvLyBUcnVuY2F0aW5nIGVhY2ggY29lZmZpY2llbnQgYXJyYXkgdG8gYSBsZW5ndGggb2YgayBhZnRlciBlYWNoIG11bHRpcGxpY2F0aW9uXHJcbiAgICAgICAgLy8gZXF1YXRlcyB0byB0cnVuY2F0aW5nIHNpZ25pZmljYW50IGRpZ2l0cyB0byBQT1dfUFJFQ0lTSU9OICsgWzI4LCA0MV0sXHJcbiAgICAgICAgLy8gaS5lLiB0aGVyZSB3aWxsIGJlIGEgbWluaW11bSBvZiAyOCBndWFyZCBkaWdpdHMgcmV0YWluZWQuXHJcbiAgICAgICAgayA9IG1hdGhjZWlsKFBPV19QUkVDSVNJT04gLyBMT0dfQkFTRSArIDIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobklzQmlnKSB7XHJcbiAgICAgICAgaGFsZiA9IG5ldyBCaWdOdW1iZXIoMC41KTtcclxuICAgICAgICBpZiAobklzTmVnKSBuLnMgPSAxO1xyXG4gICAgICAgIG5Jc09kZCA9IGlzT2RkKG4pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGkgPSBNYXRoLmFicygrdmFsdWVPZihuKSk7XHJcbiAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKE9ORSk7XHJcblxyXG4gICAgICAvLyBQZXJmb3JtcyA1NCBsb29wIGl0ZXJhdGlvbnMgZm9yIG4gb2YgOTAwNzE5OTI1NDc0MDk5MS5cclxuICAgICAgZm9yICg7IDspIHtcclxuXHJcbiAgICAgICAgaWYgKG5Jc09kZCkge1xyXG4gICAgICAgICAgeSA9IHkudGltZXMoeCk7XHJcbiAgICAgICAgICBpZiAoIXkuYykgYnJlYWs7XHJcblxyXG4gICAgICAgICAgaWYgKGspIHtcclxuICAgICAgICAgICAgaWYgKHkuYy5sZW5ndGggPiBrKSB5LmMubGVuZ3RoID0gaztcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNNb2RFeHApIHtcclxuICAgICAgICAgICAgeSA9IHkubW9kKG0pOyAgICAvL3kgPSB5Lm1pbnVzKGRpdih5LCBtLCAwLCBNT0RVTE9fTU9ERSkudGltZXMobSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGkpIHtcclxuICAgICAgICAgIGkgPSBtYXRoZmxvb3IoaSAvIDIpO1xyXG4gICAgICAgICAgaWYgKGkgPT09IDApIGJyZWFrO1xyXG4gICAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG4gPSBuLnRpbWVzKGhhbGYpO1xyXG4gICAgICAgICAgcm91bmQobiwgbi5lICsgMSwgMSk7XHJcblxyXG4gICAgICAgICAgaWYgKG4uZSA+IDE0KSB7XHJcbiAgICAgICAgICAgIG5Jc09kZCA9IGlzT2RkKG4pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSA9ICt2YWx1ZU9mKG4pO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkgYnJlYWs7XHJcbiAgICAgICAgICAgIG5Jc09kZCA9IGkgJSAyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeCA9IHgudGltZXMoeCk7XHJcblxyXG4gICAgICAgIGlmIChrKSB7XHJcbiAgICAgICAgICBpZiAoeC5jICYmIHguYy5sZW5ndGggPiBrKSB4LmMubGVuZ3RoID0gaztcclxuICAgICAgICB9IGVsc2UgaWYgKGlzTW9kRXhwKSB7XHJcbiAgICAgICAgICB4ID0geC5tb2QobSk7ICAgIC8veCA9IHgubWludXMoZGl2KHgsIG0sIDAsIE1PRFVMT19NT0RFKS50aW1lcyhtKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNNb2RFeHApIHJldHVybiB5O1xyXG4gICAgICBpZiAobklzTmVnKSB5ID0gT05FLmRpdih5KTtcclxuXHJcbiAgICAgIHJldHVybiBtID8geS5tb2QobSkgOiBrID8gcm91bmQoeSwgUE9XX1BSRUNJU0lPTiwgUk9VTkRJTkdfTU9ERSwgbW9yZSkgOiB5O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHJvdW5kZWQgdG8gYW4gaW50ZWdlclxyXG4gICAgICogdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3IgUk9VTkRJTkdfTU9ERSBpZiBybSBpcyBvbWl0dGVkLlxyXG4gICAgICpcclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3JtfSdcclxuICAgICAqL1xyXG4gICAgUC5pbnRlZ2VyVmFsdWUgPSBmdW5jdGlvbiAocm0pIHtcclxuICAgICAgdmFyIG4gPSBuZXcgQmlnTnVtYmVyKHRoaXMpO1xyXG4gICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuICAgICAgcmV0dXJuIHJvdW5kKG4sIG4uZSArIDEsIHJtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNFcXVhbFRvID0gUC5lcSA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpID09PSAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBhIGZpbml0ZSBudW1iZXIsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNGaW5pdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuYztcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXIoeSwgYiksXHJcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzR3JlYXRlclRoYW4gPSBQLmd0ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkgPiAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyA9IFAuZ3RlID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIChiID0gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKSkgPT09IDEgfHwgYiA9PT0gMDtcclxuXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGFuIGludGVnZXIsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNJbnRlZ2VyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLmMgJiYgYml0Rmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpID4gdGhpcy5jLmxlbmd0aCAtIDI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0xlc3NUaGFuID0gUC5sdCA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpIDwgMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzTGVzc1RoYW5PckVxdWFsVG8gPSBQLmx0ZSA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiAoYiA9IGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkpID09PSAtMSB8fCBiID09PSAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBOYU4sIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNOYU4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhdGhpcy5zO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBuZWdhdGl2ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zIDwgMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgcG9zaXRpdmUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucyA+IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIDAgb3IgLTAsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLmMgJiYgdGhpcy5jWzBdID09IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gLSAwID0gblxyXG4gICAgICogIG4gLSBOID0gTlxyXG4gICAgICogIG4gLSBJID0gLUlcclxuICAgICAqICAwIC0gbiA9IC1uXHJcbiAgICAgKiAgMCAtIDAgPSAwXHJcbiAgICAgKiAgMCAtIE4gPSBOXHJcbiAgICAgKiAgMCAtIEkgPSAtSVxyXG4gICAgICogIE4gLSBuID0gTlxyXG4gICAgICogIE4gLSAwID0gTlxyXG4gICAgICogIE4gLSBOID0gTlxyXG4gICAgICogIE4gLSBJID0gTlxyXG4gICAgICogIEkgLSBuID0gSVxyXG4gICAgICogIEkgLSAwID0gSVxyXG4gICAgICogIEkgLSBOID0gTlxyXG4gICAgICogIEkgLSBJID0gTlxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIG1pbnVzIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLlxyXG4gICAgICovXHJcbiAgICBQLm1pbnVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIGksIGosIHQsIHhMVHksXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgYSA9IHgucztcclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpO1xyXG4gICAgICBiID0geS5zO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTj9cclxuICAgICAgaWYgKCFhIHx8ICFiKSByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgICBpZiAoYSAhPSBiKSB7XHJcbiAgICAgICAgeS5zID0gLWI7XHJcbiAgICAgICAgcmV0dXJuIHgucGx1cyh5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHhlID0geC5lIC8gTE9HX0JBU0UsXHJcbiAgICAgICAgeWUgPSB5LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgIGlmICgheGUgfHwgIXllKSB7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciBJbmZpbml0eT9cclxuICAgICAgICBpZiAoIXhjIHx8ICF5YykgcmV0dXJuIHhjID8gKHkucyA9IC1iLCB5KSA6IG5ldyBCaWdOdW1iZXIoeWMgPyB4IDogTmFOKTtcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIHplcm8/XHJcbiAgICAgICAgaWYgKCF4Y1swXSB8fCAheWNbMF0pIHtcclxuXHJcbiAgICAgICAgICAvLyBSZXR1cm4geSBpZiB5IGlzIG5vbi16ZXJvLCB4IGlmIHggaXMgbm9uLXplcm8sIG9yIHplcm8gaWYgYm90aCBhcmUgemVyby5cclxuICAgICAgICAgIHJldHVybiB5Y1swXSA/ICh5LnMgPSAtYiwgeSkgOiBuZXcgQmlnTnVtYmVyKHhjWzBdID8geCA6XHJcblxyXG4gICAgICAgICAgIC8vIElFRUUgNzU0ICgyMDA4KSA2LjM6IG4gLSBuID0gLTAgd2hlbiByb3VuZGluZyB0byAtSW5maW5pdHlcclxuICAgICAgICAgICBST1VORElOR19NT0RFID09IDMgPyAtMCA6IDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgeGUgPSBiaXRGbG9vcih4ZSk7XHJcbiAgICAgIHllID0gYml0Rmxvb3IoeWUpO1xyXG4gICAgICB4YyA9IHhjLnNsaWNlKCk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGJpZ2dlciBudW1iZXIuXHJcbiAgICAgIGlmIChhID0geGUgLSB5ZSkge1xyXG5cclxuICAgICAgICBpZiAoeExUeSA9IGEgPCAwKSB7XHJcbiAgICAgICAgICBhID0gLWE7XHJcbiAgICAgICAgICB0ID0geGM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHllID0geGU7XHJcbiAgICAgICAgICB0ID0geWM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0LnJldmVyc2UoKTtcclxuXHJcbiAgICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuXHJcbiAgICAgICAgZm9yIChiID0gYTsgYi0tOyB0LnB1c2goMCkpO1xyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAvLyBFeHBvbmVudHMgZXF1YWwuIENoZWNrIGRpZ2l0IGJ5IGRpZ2l0LlxyXG4gICAgICAgIGogPSAoeExUeSA9IChhID0geGMubGVuZ3RoKSA8IChiID0geWMubGVuZ3RoKSkgPyBhIDogYjtcclxuXHJcbiAgICAgICAgZm9yIChhID0gYiA9IDA7IGIgPCBqOyBiKyspIHtcclxuXHJcbiAgICAgICAgICBpZiAoeGNbYl0gIT0geWNbYl0pIHtcclxuICAgICAgICAgICAgeExUeSA9IHhjW2JdIDwgeWNbYl07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8geCA8IHk/IFBvaW50IHhjIHRvIHRoZSBhcnJheSBvZiB0aGUgYmlnZ2VyIG51bWJlci5cclxuICAgICAgaWYgKHhMVHkpIHQgPSB4YywgeGMgPSB5YywgeWMgPSB0LCB5LnMgPSAteS5zO1xyXG5cclxuICAgICAgYiA9IChqID0geWMubGVuZ3RoKSAtIChpID0geGMubGVuZ3RoKTtcclxuXHJcbiAgICAgIC8vIEFwcGVuZCB6ZXJvcyB0byB4YyBpZiBzaG9ydGVyLlxyXG4gICAgICAvLyBObyBuZWVkIHRvIGFkZCB6ZXJvcyB0byB5YyBpZiBzaG9ydGVyIGFzIHN1YnRyYWN0IG9ubHkgbmVlZHMgdG8gc3RhcnQgYXQgeWMubGVuZ3RoLlxyXG4gICAgICBpZiAoYiA+IDApIGZvciAoOyBiLS07IHhjW2krK10gPSAwKTtcclxuICAgICAgYiA9IEJBU0UgLSAxO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgeWMgZnJvbSB4Yy5cclxuICAgICAgZm9yICg7IGogPiBhOykge1xyXG5cclxuICAgICAgICBpZiAoeGNbLS1qXSA8IHljW2pdKSB7XHJcbiAgICAgICAgICBmb3IgKGkgPSBqOyBpICYmICF4Y1stLWldOyB4Y1tpXSA9IGIpO1xyXG4gICAgICAgICAgLS14Y1tpXTtcclxuICAgICAgICAgIHhjW2pdICs9IEJBU0U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB4Y1tqXSAtPSB5Y1tqXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb3MgYW5kIGFkanVzdCBleHBvbmVudCBhY2NvcmRpbmdseS5cclxuICAgICAgZm9yICg7IHhjWzBdID09IDA7IHhjLnNwbGljZSgwLCAxKSwgLS15ZSk7XHJcblxyXG4gICAgICAvLyBaZXJvP1xyXG4gICAgICBpZiAoIXhjWzBdKSB7XHJcblxyXG4gICAgICAgIC8vIEZvbGxvd2luZyBJRUVFIDc1NCAoMjAwOCkgNi4zLFxyXG4gICAgICAgIC8vIG4gLSBuID0gKzAgIGJ1dCAgbiAtIG4gPSAtMCAgd2hlbiByb3VuZGluZyB0b3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgICB5LnMgPSBST1VORElOR19NT0RFID09IDMgPyAtMSA6IDE7XHJcbiAgICAgICAgeS5jID0gW3kuZSA9IDBdO1xyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciBJbmZpbml0eSBhcyAreCAtICt5ICE9IEluZmluaXR5ICYmIC14IC0gLXkgIT0gSW5maW5pdHlcclxuICAgICAgLy8gZm9yIGZpbml0ZSB4IGFuZCB5LlxyXG4gICAgICByZXR1cm4gbm9ybWFsaXNlKHksIHhjLCB5ZSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogICBuICUgMCA9ICBOXHJcbiAgICAgKiAgIG4gJSBOID0gIE5cclxuICAgICAqICAgbiAlIEkgPSAgblxyXG4gICAgICogICAwICUgbiA9ICAwXHJcbiAgICAgKiAgLTAgJSBuID0gLTBcclxuICAgICAqICAgMCAlIDAgPSAgTlxyXG4gICAgICogICAwICUgTiA9ICBOXHJcbiAgICAgKiAgIDAgJSBJID0gIDBcclxuICAgICAqICAgTiAlIG4gPSAgTlxyXG4gICAgICogICBOICUgMCA9ICBOXHJcbiAgICAgKiAgIE4gJSBOID0gIE5cclxuICAgICAqICAgTiAlIEkgPSAgTlxyXG4gICAgICogICBJICUgbiA9ICBOXHJcbiAgICAgKiAgIEkgJSAwID0gIE5cclxuICAgICAqICAgSSAlIE4gPSAgTlxyXG4gICAgICogICBJICUgSSA9ICBOXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbW9kdWxvIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLiBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIE1PRFVMT19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLm1vZHVsbyA9IFAubW9kID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIHEsIHMsXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICB5ID0gbmV3IEJpZ051bWJlcih5LCBiKTtcclxuXHJcbiAgICAgIC8vIFJldHVybiBOYU4gaWYgeCBpcyBJbmZpbml0eSBvciBOYU4sIG9yIHkgaXMgTmFOIG9yIHplcm8uXHJcbiAgICAgIGlmICgheC5jIHx8ICF5LnMgfHwgeS5jICYmICF5LmNbMF0pIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgeSBpcyBJbmZpbml0eSBvciB4IGlzIHplcm8uXHJcbiAgICAgIH0gZWxzZSBpZiAoIXkuYyB8fCB4LmMgJiYgIXguY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKHgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoTU9EVUxPX01PREUgPT0gOSkge1xyXG5cclxuICAgICAgICAvLyBFdWNsaWRpYW4gZGl2aXNpb246IHEgPSBzaWduKHkpICogZmxvb3IoeCAvIGFicyh5KSlcclxuICAgICAgICAvLyByID0geCAtIHF5ICAgIHdoZXJlICAwIDw9IHIgPCBhYnMoeSlcclxuICAgICAgICBzID0geS5zO1xyXG4gICAgICAgIHkucyA9IDE7XHJcbiAgICAgICAgcSA9IGRpdih4LCB5LCAwLCAzKTtcclxuICAgICAgICB5LnMgPSBzO1xyXG4gICAgICAgIHEucyAqPSBzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHEgPSBkaXYoeCwgeSwgMCwgTU9EVUxPX01PREUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB5ID0geC5taW51cyhxLnRpbWVzKHkpKTtcclxuXHJcbiAgICAgIC8vIFRvIG1hdGNoIEphdmFTY3JpcHQgJSwgZW5zdXJlIHNpZ24gb2YgemVybyBpcyBzaWduIG9mIGRpdmlkZW5kLlxyXG4gICAgICBpZiAoIXkuY1swXSAmJiBNT0RVTE9fTU9ERSA9PSAxKSB5LnMgPSB4LnM7XHJcblxyXG4gICAgICByZXR1cm4geTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiAqIDAgPSAwXHJcbiAgICAgKiAgbiAqIE4gPSBOXHJcbiAgICAgKiAgbiAqIEkgPSBJXHJcbiAgICAgKiAgMCAqIG4gPSAwXHJcbiAgICAgKiAgMCAqIDAgPSAwXHJcbiAgICAgKiAgMCAqIE4gPSBOXHJcbiAgICAgKiAgMCAqIEkgPSBOXHJcbiAgICAgKiAgTiAqIG4gPSBOXHJcbiAgICAgKiAgTiAqIDAgPSBOXHJcbiAgICAgKiAgTiAqIE4gPSBOXHJcbiAgICAgKiAgTiAqIEkgPSBOXHJcbiAgICAgKiAgSSAqIG4gPSBJXHJcbiAgICAgKiAgSSAqIDAgPSBOXHJcbiAgICAgKiAgSSAqIE4gPSBOXHJcbiAgICAgKiAgSSAqIEkgPSBJXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbXVsdGlwbGllZCBieSB0aGUgdmFsdWVcclxuICAgICAqIG9mIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5tdWx0aXBsaWVkQnkgPSBQLnRpbWVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIGMsIGUsIGksIGosIGssIG0sIHhjTCwgeGxvLCB4aGksIHljTCwgeWxvLCB5aGksIHpjLFxyXG4gICAgICAgIGJhc2UsIHNxcnRCYXNlLFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHljID0gKHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpKS5jO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTiwgwrFJbmZpbml0eSBvciDCsTA/XHJcbiAgICAgIGlmICgheGMgfHwgIXljIHx8ICF4Y1swXSB8fCAheWNbMF0pIHtcclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIE5hTiBpZiBlaXRoZXIgaXMgTmFOLCBvciBvbmUgaXMgMCBhbmQgdGhlIG90aGVyIGlzIEluZmluaXR5LlxyXG4gICAgICAgIGlmICgheC5zIHx8ICF5LnMgfHwgeGMgJiYgIXhjWzBdICYmICF5YyB8fCB5YyAmJiAheWNbMF0gJiYgIXhjKSB7XHJcbiAgICAgICAgICB5LmMgPSB5LmUgPSB5LnMgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB5LnMgKj0geC5zO1xyXG5cclxuICAgICAgICAgIC8vIFJldHVybiDCsUluZmluaXR5IGlmIGVpdGhlciBpcyDCsUluZmluaXR5LlxyXG4gICAgICAgICAgaWYgKCF4YyB8fCAheWMpIHtcclxuICAgICAgICAgICAgeS5jID0geS5lID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAvLyBSZXR1cm4gwrEwIGlmIGVpdGhlciBpcyDCsTAuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB5LmMgPSBbMF07XHJcbiAgICAgICAgICAgIHkuZSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZSA9IGJpdEZsb29yKHguZSAvIExPR19CQVNFKSArIGJpdEZsb29yKHkuZSAvIExPR19CQVNFKTtcclxuICAgICAgeS5zICo9IHgucztcclxuICAgICAgeGNMID0geGMubGVuZ3RoO1xyXG4gICAgICB5Y0wgPSB5Yy5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBFbnN1cmUgeGMgcG9pbnRzIHRvIGxvbmdlciBhcnJheSBhbmQgeGNMIHRvIGl0cyBsZW5ndGguXHJcbiAgICAgIGlmICh4Y0wgPCB5Y0wpIHpjID0geGMsIHhjID0geWMsIHljID0gemMsIGkgPSB4Y0wsIHhjTCA9IHljTCwgeWNMID0gaTtcclxuXHJcbiAgICAgIC8vIEluaXRpYWxpc2UgdGhlIHJlc3VsdCBhcnJheSB3aXRoIHplcm9zLlxyXG4gICAgICBmb3IgKGkgPSB4Y0wgKyB5Y0wsIHpjID0gW107IGktLTsgemMucHVzaCgwKSk7XHJcblxyXG4gICAgICBiYXNlID0gQkFTRTtcclxuICAgICAgc3FydEJhc2UgPSBTUVJUX0JBU0U7XHJcblxyXG4gICAgICBmb3IgKGkgPSB5Y0w7IC0taSA+PSAwOykge1xyXG4gICAgICAgIGMgPSAwO1xyXG4gICAgICAgIHlsbyA9IHljW2ldICUgc3FydEJhc2U7XHJcbiAgICAgICAgeWhpID0geWNbaV0gLyBzcXJ0QmFzZSB8IDA7XHJcblxyXG4gICAgICAgIGZvciAoayA9IHhjTCwgaiA9IGkgKyBrOyBqID4gaTspIHtcclxuICAgICAgICAgIHhsbyA9IHhjWy0ta10gJSBzcXJ0QmFzZTtcclxuICAgICAgICAgIHhoaSA9IHhjW2tdIC8gc3FydEJhc2UgfCAwO1xyXG4gICAgICAgICAgbSA9IHloaSAqIHhsbyArIHhoaSAqIHlsbztcclxuICAgICAgICAgIHhsbyA9IHlsbyAqIHhsbyArICgobSAlIHNxcnRCYXNlKSAqIHNxcnRCYXNlKSArIHpjW2pdICsgYztcclxuICAgICAgICAgIGMgPSAoeGxvIC8gYmFzZSB8IDApICsgKG0gLyBzcXJ0QmFzZSB8IDApICsgeWhpICogeGhpO1xyXG4gICAgICAgICAgemNbai0tXSA9IHhsbyAlIGJhc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB6Y1tqXSA9IGM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgKytlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHpjLnNwbGljZSgwLCAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG5vcm1hbGlzZSh5LCB6YywgZSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbmVnYXRlZCxcclxuICAgICAqIGkuZS4gbXVsdGlwbGllZCBieSAtMS5cclxuICAgICAqL1xyXG4gICAgUC5uZWdhdGVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgeCA9IG5ldyBCaWdOdW1iZXIodGhpcyk7XHJcbiAgICAgIHgucyA9IC14LnMgfHwgbnVsbDtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gKyAwID0gblxyXG4gICAgICogIG4gKyBOID0gTlxyXG4gICAgICogIG4gKyBJID0gSVxyXG4gICAgICogIDAgKyBuID0gblxyXG4gICAgICogIDAgKyAwID0gMFxyXG4gICAgICogIDAgKyBOID0gTlxyXG4gICAgICogIDAgKyBJID0gSVxyXG4gICAgICogIE4gKyBuID0gTlxyXG4gICAgICogIE4gKyAwID0gTlxyXG4gICAgICogIE4gKyBOID0gTlxyXG4gICAgICogIE4gKyBJID0gTlxyXG4gICAgICogIEkgKyBuID0gSVxyXG4gICAgICogIEkgKyAwID0gSVxyXG4gICAgICogIEkgKyBOID0gTlxyXG4gICAgICogIEkgKyBJID0gSVxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHBsdXMgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYikuXHJcbiAgICAgKi9cclxuICAgIFAucGx1cyA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHZhciB0LFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIGEgPSB4LnM7XHJcblxyXG4gICAgICB5ID0gbmV3IEJpZ051bWJlcih5LCBiKTtcclxuICAgICAgYiA9IHkucztcclxuXHJcbiAgICAgIC8vIEVpdGhlciBOYU4/XHJcbiAgICAgIGlmICghYSB8fCAhYikgcmV0dXJuIG5ldyBCaWdOdW1iZXIoTmFOKTtcclxuXHJcbiAgICAgIC8vIFNpZ25zIGRpZmZlcj9cclxuICAgICAgIGlmIChhICE9IGIpIHtcclxuICAgICAgICB5LnMgPSAtYjtcclxuICAgICAgICByZXR1cm4geC5taW51cyh5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHhlID0geC5lIC8gTE9HX0JBU0UsXHJcbiAgICAgICAgeWUgPSB5LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgIGlmICgheGUgfHwgIXllKSB7XHJcblxyXG4gICAgICAgIC8vIFJldHVybiDCsUluZmluaXR5IGlmIGVpdGhlciDCsUluZmluaXR5LlxyXG4gICAgICAgIGlmICgheGMgfHwgIXljKSByZXR1cm4gbmV3IEJpZ051bWJlcihhIC8gMCk7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciB6ZXJvP1xyXG4gICAgICAgIC8vIFJldHVybiB5IGlmIHkgaXMgbm9uLXplcm8sIHggaWYgeCBpcyBub24temVybywgb3IgemVybyBpZiBib3RoIGFyZSB6ZXJvLlxyXG4gICAgICAgIGlmICgheGNbMF0gfHwgIXljWzBdKSByZXR1cm4geWNbMF0gPyB5IDogbmV3IEJpZ051bWJlcih4Y1swXSA/IHggOiBhICogMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHhlID0gYml0Rmxvb3IoeGUpO1xyXG4gICAgICB5ZSA9IGJpdEZsb29yKHllKTtcclxuICAgICAgeGMgPSB4Yy5zbGljZSgpO1xyXG5cclxuICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuIEZhc3RlciB0byB1c2UgcmV2ZXJzZSB0aGVuIGRvIHVuc2hpZnRzLlxyXG4gICAgICBpZiAoYSA9IHhlIC0geWUpIHtcclxuICAgICAgICBpZiAoYSA+IDApIHtcclxuICAgICAgICAgIHllID0geGU7XHJcbiAgICAgICAgICB0ID0geWM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGEgPSAtYTtcclxuICAgICAgICAgIHQgPSB4YztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG4gICAgICAgIGZvciAoOyBhLS07IHQucHVzaCgwKSk7XHJcbiAgICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGEgPSB4Yy5sZW5ndGg7XHJcbiAgICAgIGIgPSB5Yy5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBQb2ludCB4YyB0byB0aGUgbG9uZ2VyIGFycmF5LCBhbmQgYiB0byB0aGUgc2hvcnRlciBsZW5ndGguXHJcbiAgICAgIGlmIChhIC0gYiA8IDApIHQgPSB5YywgeWMgPSB4YywgeGMgPSB0LCBiID0gYTtcclxuXHJcbiAgICAgIC8vIE9ubHkgc3RhcnQgYWRkaW5nIGF0IHljLmxlbmd0aCAtIDEgYXMgdGhlIGZ1cnRoZXIgZGlnaXRzIG9mIHhjIGNhbiBiZSBpZ25vcmVkLlxyXG4gICAgICBmb3IgKGEgPSAwOyBiOykge1xyXG4gICAgICAgIGEgPSAoeGNbLS1iXSA9IHhjW2JdICsgeWNbYl0gKyBhKSAvIEJBU0UgfCAwO1xyXG4gICAgICAgIHhjW2JdID0gQkFTRSA9PT0geGNbYl0gPyAwIDogeGNbYl0gJSBCQVNFO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYSkge1xyXG4gICAgICAgIHhjID0gW2FdLmNvbmNhdCh4Yyk7XHJcbiAgICAgICAgKyt5ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgemVybywgYXMgK3ggKyAreSAhPSAwICYmIC14ICsgLXkgIT0gMFxyXG4gICAgICAvLyB5ZSA9IE1BWF9FWFAgKyAxIHBvc3NpYmxlXHJcbiAgICAgIHJldHVybiBub3JtYWxpc2UoeSwgeGMsIHllKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBJZiBzZCBpcyB1bmRlZmluZWQgb3IgbnVsbCBvciB0cnVlIG9yIGZhbHNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMgb2ZcclxuICAgICAqIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgKiBJZiBzZCBpcyB0cnVlIGluY2x1ZGUgaW50ZWdlci1wYXJ0IHRyYWlsaW5nIHplcm9zIGluIHRoZSBjb3VudC5cclxuICAgICAqXHJcbiAgICAgKiBPdGhlcndpc2UsIGlmIHNkIGlzIGEgbnVtYmVyLCByZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgcm91bmRlZCB0byBhIG1heGltdW0gb2Ygc2Qgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yXHJcbiAgICAgKiBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogc2Qge251bWJlcnxib29sZWFufSBudW1iZXI6IHNpZ25pZmljYW50IGRpZ2l0czogaW50ZWdlciwgMSB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogICAgICAgICAgICAgICAgICAgICBib29sZWFuOiB3aGV0aGVyIHRvIGNvdW50IGludGVnZXItcGFydCB0cmFpbGluZyB6ZXJvczogdHJ1ZSBvciBmYWxzZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3NkfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC5wcmVjaXNpb24gPSBQLnNkID0gZnVuY3Rpb24gKHNkLCBybSkge1xyXG4gICAgICB2YXIgYywgbiwgdixcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIGlmIChzZCAhPSBudWxsICYmIHNkICE9PSAhIXNkKSB7XHJcbiAgICAgICAgaW50Q2hlY2soc2QsIDEsIE1BWCk7XHJcbiAgICAgICAgaWYgKHJtID09IG51bGwpIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuICAgICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJvdW5kKG5ldyBCaWdOdW1iZXIoeCksIHNkLCBybSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghKGMgPSB4LmMpKSByZXR1cm4gbnVsbDtcclxuICAgICAgdiA9IGMubGVuZ3RoIC0gMTtcclxuICAgICAgbiA9IHYgKiBMT0dfQkFTRSArIDE7XHJcblxyXG4gICAgICBpZiAodiA9IGNbdl0pIHtcclxuXHJcbiAgICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCBlbGVtZW50LlxyXG4gICAgICAgIGZvciAoOyB2ICUgMTAgPT0gMDsgdiAvPSAxMCwgbi0tKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50LlxyXG4gICAgICAgIGZvciAodiA9IGNbMF07IHYgPj0gMTA7IHYgLz0gMTAsIG4rKyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzZCAmJiB4LmUgKyAxID4gbikgbiA9IHguZSArIDE7XHJcblxyXG4gICAgICByZXR1cm4gbjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBzaGlmdGVkIGJ5IGsgcGxhY2VzXHJcbiAgICAgKiAocG93ZXJzIG9mIDEwKS4gU2hpZnQgdG8gdGhlIHJpZ2h0IGlmIG4gPiAwLCBhbmQgdG8gdGhlIGxlZnQgaWYgbiA8IDAuXHJcbiAgICAgKlxyXG4gICAgICogayB7bnVtYmVyfSBJbnRlZ2VyLCAtTUFYX1NBRkVfSU5URUdFUiB0byBNQVhfU0FGRV9JTlRFR0VSIGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2t9J1xyXG4gICAgICovXHJcbiAgICBQLnNoaWZ0ZWRCeSA9IGZ1bmN0aW9uIChrKSB7XHJcbiAgICAgIGludENoZWNrKGssIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKTtcclxuICAgICAgcmV0dXJuIHRoaXMudGltZXMoJzFlJyArIGspO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqICBzcXJ0KC1uKSA9ICBOXHJcbiAgICAgKiAgc3FydChOKSA9ICBOXHJcbiAgICAgKiAgc3FydCgtSSkgPSAgTlxyXG4gICAgICogIHNxcnQoSSkgPSAgSVxyXG4gICAgICogIHNxcnQoMCkgPSAgMFxyXG4gICAgICogIHNxcnQoLTApID0gLTBcclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIsXHJcbiAgICAgKiByb3VuZGVkIGFjY29yZGluZyB0byBERUNJTUFMX1BMQUNFUyBhbmQgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqL1xyXG4gICAgUC5zcXVhcmVSb290ID0gUC5zcXJ0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgbSwgbiwgciwgcmVwLCB0LFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIGMgPSB4LmMsXHJcbiAgICAgICAgcyA9IHgucyxcclxuICAgICAgICBlID0geC5lLFxyXG4gICAgICAgIGRwID0gREVDSU1BTF9QTEFDRVMgKyA0LFxyXG4gICAgICAgIGhhbGYgPSBuZXcgQmlnTnVtYmVyKCcwLjUnKTtcclxuXHJcbiAgICAgIC8vIE5lZ2F0aXZlL05hTi9JbmZpbml0eS96ZXJvP1xyXG4gICAgICBpZiAocyAhPT0gMSB8fCAhYyB8fCAhY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKCFzIHx8IHMgPCAwICYmICghYyB8fCBjWzBdKSA/IE5hTiA6IGMgPyB4IDogMSAvIDApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJbml0aWFsIGVzdGltYXRlLlxyXG4gICAgICBzID0gTWF0aC5zcXJ0KCt2YWx1ZU9mKHgpKTtcclxuXHJcbiAgICAgIC8vIE1hdGguc3FydCB1bmRlcmZsb3cvb3ZlcmZsb3c/XHJcbiAgICAgIC8vIFBhc3MgeCB0byBNYXRoLnNxcnQgYXMgaW50ZWdlciwgdGhlbiBhZGp1c3QgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQuXHJcbiAgICAgIGlmIChzID09IDAgfHwgcyA9PSAxIC8gMCkge1xyXG4gICAgICAgIG4gPSBjb2VmZlRvU3RyaW5nKGMpO1xyXG4gICAgICAgIGlmICgobi5sZW5ndGggKyBlKSAlIDIgPT0gMCkgbiArPSAnMCc7XHJcbiAgICAgICAgcyA9IE1hdGguc3FydCgrbik7XHJcbiAgICAgICAgZSA9IGJpdEZsb29yKChlICsgMSkgLyAyKSAtIChlIDwgMCB8fCBlICUgMik7XHJcblxyXG4gICAgICAgIGlmIChzID09IDEgLyAwKSB7XHJcbiAgICAgICAgICBuID0gJzVlJyArIGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG4gPSBzLnRvRXhwb25lbnRpYWwoKTtcclxuICAgICAgICAgIG4gPSBuLnNsaWNlKDAsIG4uaW5kZXhPZignZScpICsgMSkgKyBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgciA9IG5ldyBCaWdOdW1iZXIobik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgciA9IG5ldyBCaWdOdW1iZXIocyArICcnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2hlY2sgZm9yIHplcm8uXHJcbiAgICAgIC8vIHIgY291bGQgYmUgemVybyBpZiBNSU5fRVhQIGlzIGNoYW5nZWQgYWZ0ZXIgdGhlIHRoaXMgdmFsdWUgd2FzIGNyZWF0ZWQuXHJcbiAgICAgIC8vIFRoaXMgd291bGQgY2F1c2UgYSBkaXZpc2lvbiBieSB6ZXJvICh4L3QpIGFuZCBoZW5jZSBJbmZpbml0eSBiZWxvdywgd2hpY2ggd291bGQgY2F1c2VcclxuICAgICAgLy8gY29lZmZUb1N0cmluZyB0byB0aHJvdy5cclxuICAgICAgaWYgKHIuY1swXSkge1xyXG4gICAgICAgIGUgPSByLmU7XHJcbiAgICAgICAgcyA9IGUgKyBkcDtcclxuICAgICAgICBpZiAocyA8IDMpIHMgPSAwO1xyXG5cclxuICAgICAgICAvLyBOZXd0b24tUmFwaHNvbiBpdGVyYXRpb24uXHJcbiAgICAgICAgZm9yICg7IDspIHtcclxuICAgICAgICAgIHQgPSByO1xyXG4gICAgICAgICAgciA9IGhhbGYudGltZXModC5wbHVzKGRpdih4LCB0LCBkcCwgMSkpKTtcclxuXHJcbiAgICAgICAgICBpZiAoY29lZmZUb1N0cmluZyh0LmMpLnNsaWNlKDAsIHMpID09PSAobiA9IGNvZWZmVG9TdHJpbmcoci5jKSkuc2xpY2UoMCwgcykpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIFRoZSBleHBvbmVudCBvZiByIG1heSBoZXJlIGJlIG9uZSBsZXNzIHRoYW4gdGhlIGZpbmFsIHJlc3VsdCBleHBvbmVudCxcclxuICAgICAgICAgICAgLy8gZS5nIDAuMDAwOTk5OSAoZS00KSAtLT4gMC4wMDEgKGUtMyksIHNvIGFkanVzdCBzIHNvIHRoZSByb3VuZGluZyBkaWdpdHNcclxuICAgICAgICAgICAgLy8gYXJlIGluZGV4ZWQgY29ycmVjdGx5LlxyXG4gICAgICAgICAgICBpZiAoci5lIDwgZSkgLS1zO1xyXG4gICAgICAgICAgICBuID0gbi5zbGljZShzIC0gMywgcyArIDEpO1xyXG5cclxuICAgICAgICAgICAgLy8gVGhlIDR0aCByb3VuZGluZyBkaWdpdCBtYXkgYmUgaW4gZXJyb3IgYnkgLTEgc28gaWYgdGhlIDQgcm91bmRpbmcgZGlnaXRzXHJcbiAgICAgICAgICAgIC8vIGFyZSA5OTk5IG9yIDQ5OTkgKGkuZS4gYXBwcm9hY2hpbmcgYSByb3VuZGluZyBib3VuZGFyeSkgY29udGludWUgdGhlXHJcbiAgICAgICAgICAgIC8vIGl0ZXJhdGlvbi5cclxuICAgICAgICAgICAgaWYgKG4gPT0gJzk5OTknIHx8ICFyZXAgJiYgbiA9PSAnNDk5OScpIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gT24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBvbmx5LCBjaGVjayB0byBzZWUgaWYgcm91bmRpbmcgdXAgZ2l2ZXMgdGhlXHJcbiAgICAgICAgICAgICAgLy8gZXhhY3QgcmVzdWx0IGFzIHRoZSBuaW5lcyBtYXkgaW5maW5pdGVseSByZXBlYXQuXHJcbiAgICAgICAgICAgICAgaWYgKCFyZXApIHtcclxuICAgICAgICAgICAgICAgIHJvdW5kKHQsIHQuZSArIERFQ0lNQUxfUExBQ0VTICsgMiwgMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHQudGltZXModCkuZXEoeCkpIHtcclxuICAgICAgICAgICAgICAgICAgciA9IHQ7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgZHAgKz0gNDtcclxuICAgICAgICAgICAgICBzICs9IDQ7XHJcbiAgICAgICAgICAgICAgcmVwID0gMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gSWYgcm91bmRpbmcgZGlnaXRzIGFyZSBudWxsLCAwezAsNH0gb3IgNTB7MCwzfSwgY2hlY2sgZm9yIGV4YWN0XHJcbiAgICAgICAgICAgICAgLy8gcmVzdWx0LiBJZiBub3QsIHRoZW4gdGhlcmUgYXJlIGZ1cnRoZXIgZGlnaXRzIGFuZCBtIHdpbGwgYmUgdHJ1dGh5LlxyXG4gICAgICAgICAgICAgIGlmICghK24gfHwgIStuLnNsaWNlKDEpICYmIG4uY2hhckF0KDApID09ICc1Jykge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFRydW5jYXRlIHRvIHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdC5cclxuICAgICAgICAgICAgICAgIHJvdW5kKHIsIHIuZSArIERFQ0lNQUxfUExBQ0VTICsgMiwgMSk7XHJcbiAgICAgICAgICAgICAgICBtID0gIXIudGltZXMocikuZXEoeCk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHJvdW5kKHIsIHIuZSArIERFQ0lNQUxfUExBQ0VTICsgMSwgUk9VTkRJTkdfTU9ERSwgbSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gZXhwb25lbnRpYWwgbm90YXRpb24gYW5kXHJcbiAgICAgKiByb3VuZGVkIHVzaW5nIFJPVU5ESU5HX01PREUgdG8gZHAgZml4ZWQgZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLnRvRXhwb25lbnRpYWwgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgZHArKztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZm9ybWF0KHRoaXMsIGRwLCBybSwgMSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gZml4ZWQtcG9pbnQgbm90YXRpb24gcm91bmRpbmdcclxuICAgICAqIHRvIGRwIGZpeGVkIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yIFJPVU5ESU5HX01PREUgaWYgcm0gaXMgb21pdHRlZC5cclxuICAgICAqXHJcbiAgICAgKiBOb3RlOiBhcyB3aXRoIEphdmFTY3JpcHQncyBudW1iZXIgdHlwZSwgKC0wKS50b0ZpeGVkKDApIGlzICcwJyxcclxuICAgICAqIGJ1dCBlLmcuICgtMC4wMDAwMSkudG9GaXhlZCgwKSBpcyAnLTAnLlxyXG4gICAgICpcclxuICAgICAqIFtkcF0ge251bWJlcn0gRGVjaW1hbCBwbGFjZXMuIEludGVnZXIsIDAgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2RwfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC50b0ZpeGVkID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgICBpZiAoZHAgIT0gbnVsbCkge1xyXG4gICAgICAgIGludENoZWNrKGRwLCAwLCBNQVgpO1xyXG4gICAgICAgIGRwID0gZHAgKyB0aGlzLmUgKyAxO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmb3JtYXQodGhpcywgZHAsIHJtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiByb3VuZGVkXHJcbiAgICAgKiB1c2luZyBybSBvciBST1VORElOR19NT0RFIHRvIGRwIGRlY2ltYWwgcGxhY2VzLCBhbmQgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgcHJvcGVydGllc1xyXG4gICAgICogb2YgdGhlIGZvcm1hdCBvciBGT1JNQVQgb2JqZWN0IChzZWUgQmlnTnVtYmVyLnNldCkuXHJcbiAgICAgKlxyXG4gICAgICogVGhlIGZvcm1hdHRpbmcgb2JqZWN0IG1heSBjb250YWluIHNvbWUgb3IgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHNob3duIGJlbG93LlxyXG4gICAgICpcclxuICAgICAqIEZPUk1BVCA9IHtcclxuICAgICAqICAgcHJlZml4OiAnJyxcclxuICAgICAqICAgZ3JvdXBTaXplOiAzLFxyXG4gICAgICogICBzZWNvbmRhcnlHcm91cFNpemU6IDAsXHJcbiAgICAgKiAgIGdyb3VwU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgKiAgIGRlY2ltYWxTZXBhcmF0b3I6ICcuJyxcclxuICAgICAqICAgZnJhY3Rpb25Hcm91cFNpemU6IDAsXHJcbiAgICAgKiAgIGZyYWN0aW9uR3JvdXBTZXBhcmF0b3I6ICdcXHhBMCcsICAgICAgLy8gbm9uLWJyZWFraW5nIHNwYWNlXHJcbiAgICAgKiAgIHN1ZmZpeDogJydcclxuICAgICAqIH07XHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICogW2Zvcm1hdF0ge29iamVjdH0gRm9ybWF0dGluZyBvcHRpb25zLiBTZWUgRk9STUFUIHBiamVjdCBhYm92ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2RwfHJtfSdcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCBub3QgYW4gb2JqZWN0OiB7Zm9ybWF0fSdcclxuICAgICAqL1xyXG4gICAgUC50b0Zvcm1hdCA9IGZ1bmN0aW9uIChkcCwgcm0sIGZvcm1hdCkge1xyXG4gICAgICB2YXIgc3RyLFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgaWYgKGZvcm1hdCA9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGRwICE9IG51bGwgJiYgcm0gJiYgdHlwZW9mIHJtID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBmb3JtYXQgPSBybTtcclxuICAgICAgICAgIHJtID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKGRwICYmIHR5cGVvZiBkcCA9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgZm9ybWF0ID0gZHA7XHJcbiAgICAgICAgICBkcCA9IHJtID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9ybWF0ID0gRk9STUFUO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm9ybWF0ICE9ICdvYmplY3QnKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgIChiaWdudW1iZXJFcnJvciArICdBcmd1bWVudCBub3QgYW4gb2JqZWN0OiAnICsgZm9ybWF0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3RyID0geC50b0ZpeGVkKGRwLCBybSk7XHJcblxyXG4gICAgICBpZiAoeC5jKSB7XHJcbiAgICAgICAgdmFyIGksXHJcbiAgICAgICAgICBhcnIgPSBzdHIuc3BsaXQoJy4nKSxcclxuICAgICAgICAgIGcxID0gK2Zvcm1hdC5ncm91cFNpemUsXHJcbiAgICAgICAgICBnMiA9ICtmb3JtYXQuc2Vjb25kYXJ5R3JvdXBTaXplLFxyXG4gICAgICAgICAgZ3JvdXBTZXBhcmF0b3IgPSBmb3JtYXQuZ3JvdXBTZXBhcmF0b3IgfHwgJycsXHJcbiAgICAgICAgICBpbnRQYXJ0ID0gYXJyWzBdLFxyXG4gICAgICAgICAgZnJhY3Rpb25QYXJ0ID0gYXJyWzFdLFxyXG4gICAgICAgICAgaXNOZWcgPSB4LnMgPCAwLFxyXG4gICAgICAgICAgaW50RGlnaXRzID0gaXNOZWcgPyBpbnRQYXJ0LnNsaWNlKDEpIDogaW50UGFydCxcclxuICAgICAgICAgIGxlbiA9IGludERpZ2l0cy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmIChnMikgaSA9IGcxLCBnMSA9IGcyLCBnMiA9IGksIGxlbiAtPSBpO1xyXG5cclxuICAgICAgICBpZiAoZzEgPiAwICYmIGxlbiA+IDApIHtcclxuICAgICAgICAgIGkgPSBsZW4gJSBnMSB8fCBnMTtcclxuICAgICAgICAgIGludFBhcnQgPSBpbnREaWdpdHMuc3Vic3RyKDAsIGkpO1xyXG4gICAgICAgICAgZm9yICg7IGkgPCBsZW47IGkgKz0gZzEpIGludFBhcnQgKz0gZ3JvdXBTZXBhcmF0b3IgKyBpbnREaWdpdHMuc3Vic3RyKGksIGcxKTtcclxuICAgICAgICAgIGlmIChnMiA+IDApIGludFBhcnQgKz0gZ3JvdXBTZXBhcmF0b3IgKyBpbnREaWdpdHMuc2xpY2UoaSk7XHJcbiAgICAgICAgICBpZiAoaXNOZWcpIGludFBhcnQgPSAnLScgKyBpbnRQYXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RyID0gZnJhY3Rpb25QYXJ0XHJcbiAgICAgICAgID8gaW50UGFydCArIChmb3JtYXQuZGVjaW1hbFNlcGFyYXRvciB8fCAnJykgKyAoKGcyID0gK2Zvcm1hdC5mcmFjdGlvbkdyb3VwU2l6ZSlcclxuICAgICAgICAgID8gZnJhY3Rpb25QYXJ0LnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXGR7JyArIGcyICsgJ31cXFxcQicsICdnJyksXHJcbiAgICAgICAgICAgJyQmJyArIChmb3JtYXQuZnJhY3Rpb25Hcm91cFNlcGFyYXRvciB8fCAnJykpXHJcbiAgICAgICAgICA6IGZyYWN0aW9uUGFydClcclxuICAgICAgICAgOiBpbnRQYXJ0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gKGZvcm1hdC5wcmVmaXggfHwgJycpICsgc3RyICsgKGZvcm1hdC5zdWZmaXggfHwgJycpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhbiBhcnJheSBvZiB0d28gQmlnTnVtYmVycyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGFzIGEgc2ltcGxlXHJcbiAgICAgKiBmcmFjdGlvbiB3aXRoIGFuIGludGVnZXIgbnVtZXJhdG9yIGFuZCBhbiBpbnRlZ2VyIGRlbm9taW5hdG9yLlxyXG4gICAgICogVGhlIGRlbm9taW5hdG9yIHdpbGwgYmUgYSBwb3NpdGl2ZSBub24temVybyB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNwZWNpZmllZFxyXG4gICAgICogbWF4aW11bSBkZW5vbWluYXRvci4gSWYgYSBtYXhpbXVtIGRlbm9taW5hdG9yIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZW5vbWluYXRvciB3aWxsIGJlXHJcbiAgICAgKiB0aGUgbG93ZXN0IHZhbHVlIG5lY2Vzc2FyeSB0byByZXByZXNlbnQgdGhlIG51bWJlciBleGFjdGx5LlxyXG4gICAgICpcclxuICAgICAqIFttZF0ge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBJbnRlZ2VyID49IDEsIG9yIEluZmluaXR5LiBUaGUgbWF4aW11bSBkZW5vbWluYXRvci5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX0gOiB7bWR9J1xyXG4gICAgICovXHJcbiAgICBQLnRvRnJhY3Rpb24gPSBmdW5jdGlvbiAobWQpIHtcclxuICAgICAgdmFyIGQsIGQwLCBkMSwgZDIsIGUsIGV4cCwgbiwgbjAsIG4xLCBxLCByLCBzLFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIHhjID0geC5jO1xyXG5cclxuICAgICAgaWYgKG1kICE9IG51bGwpIHtcclxuICAgICAgICBuID0gbmV3IEJpZ051bWJlcihtZCk7XHJcblxyXG4gICAgICAgIC8vIFRocm93IGlmIG1kIGlzIGxlc3MgdGhhbiBvbmUgb3IgaXMgbm90IGFuIGludGVnZXIsIHVubGVzcyBpdCBpcyBJbmZpbml0eS5cclxuICAgICAgICBpZiAoIW4uaXNJbnRlZ2VyKCkgJiYgKG4uYyB8fCBuLnMgIT09IDEpIHx8IG4ubHQoT05FKSkge1xyXG4gICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0FyZ3VtZW50ICcgK1xyXG4gICAgICAgICAgICAgIChuLmlzSW50ZWdlcigpID8gJ291dCBvZiByYW5nZTogJyA6ICdub3QgYW4gaW50ZWdlcjogJykgKyB2YWx1ZU9mKG4pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICgheGMpIHJldHVybiBuZXcgQmlnTnVtYmVyKHgpO1xyXG5cclxuICAgICAgZCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgbjEgPSBkMCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgZDEgPSBuMCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgcyA9IGNvZWZmVG9TdHJpbmcoeGMpO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIGluaXRpYWwgZGVub21pbmF0b3IuXHJcbiAgICAgIC8vIGQgaXMgYSBwb3dlciBvZiAxMCBhbmQgdGhlIG1pbmltdW0gbWF4IGRlbm9taW5hdG9yIHRoYXQgc3BlY2lmaWVzIHRoZSB2YWx1ZSBleGFjdGx5LlxyXG4gICAgICBlID0gZC5lID0gcy5sZW5ndGggLSB4LmUgLSAxO1xyXG4gICAgICBkLmNbMF0gPSBQT1dTX1RFTlsoZXhwID0gZSAlIExPR19CQVNFKSA8IDAgPyBMT0dfQkFTRSArIGV4cCA6IGV4cF07XHJcbiAgICAgIG1kID0gIW1kIHx8IG4uY29tcGFyZWRUbyhkKSA+IDAgPyAoZSA+IDAgPyBkIDogbjEpIDogbjtcclxuXHJcbiAgICAgIGV4cCA9IE1BWF9FWFA7XHJcbiAgICAgIE1BWF9FWFAgPSAxIC8gMDtcclxuICAgICAgbiA9IG5ldyBCaWdOdW1iZXIocyk7XHJcblxyXG4gICAgICAvLyBuMCA9IGQxID0gMFxyXG4gICAgICBuMC5jWzBdID0gMDtcclxuXHJcbiAgICAgIGZvciAoOyA7KSAge1xyXG4gICAgICAgIHEgPSBkaXYobiwgZCwgMCwgMSk7XHJcbiAgICAgICAgZDIgPSBkMC5wbHVzKHEudGltZXMoZDEpKTtcclxuICAgICAgICBpZiAoZDIuY29tcGFyZWRUbyhtZCkgPT0gMSkgYnJlYWs7XHJcbiAgICAgICAgZDAgPSBkMTtcclxuICAgICAgICBkMSA9IGQyO1xyXG4gICAgICAgIG4xID0gbjAucGx1cyhxLnRpbWVzKGQyID0gbjEpKTtcclxuICAgICAgICBuMCA9IGQyO1xyXG4gICAgICAgIGQgPSBuLm1pbnVzKHEudGltZXMoZDIgPSBkKSk7XHJcbiAgICAgICAgbiA9IGQyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkMiA9IGRpdihtZC5taW51cyhkMCksIGQxLCAwLCAxKTtcclxuICAgICAgbjAgPSBuMC5wbHVzKGQyLnRpbWVzKG4xKSk7XHJcbiAgICAgIGQwID0gZDAucGx1cyhkMi50aW1lcyhkMSkpO1xyXG4gICAgICBuMC5zID0gbjEucyA9IHgucztcclxuICAgICAgZSA9IGUgKiAyO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGZyYWN0aW9uIGlzIGNsb3NlciB0byB4LCBuMC9kMCBvciBuMS9kMVxyXG4gICAgICByID0gZGl2KG4xLCBkMSwgZSwgUk9VTkRJTkdfTU9ERSkubWludXMoeCkuYWJzKCkuY29tcGFyZWRUbyhcclxuICAgICAgICAgIGRpdihuMCwgZDAsIGUsIFJPVU5ESU5HX01PREUpLm1pbnVzKHgpLmFicygpKSA8IDEgPyBbbjEsIGQxXSA6IFtuMCwgZDBdO1xyXG5cclxuICAgICAgTUFYX0VYUCA9IGV4cDtcclxuXHJcbiAgICAgIHJldHVybiByO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgY29udmVydGVkIHRvIGEgbnVtYmVyIHByaW1pdGl2ZS5cclxuICAgICAqL1xyXG4gICAgUC50b051bWJlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICt2YWx1ZU9mKHRoaXMpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHJvdW5kZWQgdG8gc2Qgc2lnbmlmaWNhbnQgZGlnaXRzXHJcbiAgICAgKiB1c2luZyByb3VuZGluZyBtb2RlIHJtIG9yIFJPVU5ESU5HX01PREUuIElmIHNkIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0c1xyXG4gICAgICogbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSB2YWx1ZSBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiwgdGhlbiB1c2VcclxuICAgICAqIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtzZHxybX0nXHJcbiAgICAgKi9cclxuICAgIFAudG9QcmVjaXNpb24gPSBmdW5jdGlvbiAoc2QsIHJtKSB7XHJcbiAgICAgIGlmIChzZCAhPSBudWxsKSBpbnRDaGVjayhzZCwgMSwgTUFYKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdCh0aGlzLCBzZCwgcm0sIDIpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGluIGJhc2UgYiwgb3IgYmFzZSAxMCBpZiBiIGlzXHJcbiAgICAgKiBvbWl0dGVkLiBJZiBhIGJhc2UgaXMgc3BlY2lmaWVkLCBpbmNsdWRpbmcgYmFzZSAxMCwgcm91bmQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZFxyXG4gICAgICogUk9VTkRJTkdfTU9ERS4gSWYgYSBiYXNlIGlzIG5vdCBzcGVjaWZpZWQsIGFuZCB0aGlzIEJpZ051bWJlciBoYXMgYSBwb3NpdGl2ZSBleHBvbmVudFxyXG4gICAgICogdGhhdCBpcyBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gVE9fRVhQX1BPUywgb3IgYSBuZWdhdGl2ZSBleHBvbmVudCBlcXVhbCB0byBvciBsZXNzIHRoYW5cclxuICAgICAqIFRPX0VYUF9ORUcsIHJldHVybiBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBbYl0ge251bWJlcn0gSW50ZWdlciwgMiB0byBBTFBIQUJFVC5sZW5ndGggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBCYXNlIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtifSdcclxuICAgICAqL1xyXG4gICAgUC50b1N0cmluZyA9IGZ1bmN0aW9uIChiKSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgbiA9IHRoaXMsXHJcbiAgICAgICAgcyA9IG4ucyxcclxuICAgICAgICBlID0gbi5lO1xyXG5cclxuICAgICAgLy8gSW5maW5pdHkgb3IgTmFOP1xyXG4gICAgICBpZiAoZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgICBzdHIgPSAnSW5maW5pdHknO1xyXG4gICAgICAgICAgaWYgKHMgPCAwKSBzdHIgPSAnLScgKyBzdHI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0ciA9ICdOYU4nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoYiA9PSBudWxsKSB7XHJcbiAgICAgICAgICBzdHIgPSBlIDw9IFRPX0VYUF9ORUcgfHwgZSA+PSBUT19FWFBfUE9TXHJcbiAgICAgICAgICAgPyB0b0V4cG9uZW50aWFsKGNvZWZmVG9TdHJpbmcobi5jKSwgZSlcclxuICAgICAgICAgICA6IHRvRml4ZWRQb2ludChjb2VmZlRvU3RyaW5nKG4uYyksIGUsICcwJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChiID09PSAxMCkge1xyXG4gICAgICAgICAgbiA9IHJvdW5kKG5ldyBCaWdOdW1iZXIobiksIERFQ0lNQUxfUExBQ0VTICsgZSArIDEsIFJPVU5ESU5HX01PREUpO1xyXG4gICAgICAgICAgc3RyID0gdG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcobi5jKSwgbi5lLCAnMCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpbnRDaGVjayhiLCAyLCBBTFBIQUJFVC5sZW5ndGgsICdCYXNlJyk7XHJcbiAgICAgICAgICBzdHIgPSBjb252ZXJ0QmFzZSh0b0ZpeGVkUG9pbnQoY29lZmZUb1N0cmluZyhuLmMpLCBlLCAnMCcpLCAxMCwgYiwgcywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocyA8IDAgJiYgbi5jWzBdKSBzdHIgPSAnLScgKyBzdHI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGFzIHRvU3RyaW5nLCBidXQgZG8gbm90IGFjY2VwdCBhIGJhc2UgYXJndW1lbnQsIGFuZCBpbmNsdWRlIHRoZSBtaW51cyBzaWduIGZvclxyXG4gICAgICogbmVnYXRpdmUgemVyby5cclxuICAgICAqL1xyXG4gICAgUC52YWx1ZU9mID0gUC50b0pTT04gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZU9mKHRoaXMpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgUC5faXNCaWdOdW1iZXIgPSB0cnVlO1xyXG5cclxuICAgIGlmIChjb25maWdPYmplY3QgIT0gbnVsbCkgQmlnTnVtYmVyLnNldChjb25maWdPYmplY3QpO1xyXG5cclxuICAgIHJldHVybiBCaWdOdW1iZXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUFJJVkFURSBIRUxQRVIgRlVOQ1RJT05TXHJcblxyXG4gIC8vIFRoZXNlIGZ1bmN0aW9ucyBkb24ndCBuZWVkIGFjY2VzcyB0byB2YXJpYWJsZXMsXHJcbiAgLy8gZS5nLiBERUNJTUFMX1BMQUNFUywgaW4gdGhlIHNjb3BlIG9mIHRoZSBgY2xvbmVgIGZ1bmN0aW9uIGFib3ZlLlxyXG5cclxuXHJcbiAgZnVuY3Rpb24gYml0Rmxvb3Iobikge1xyXG4gICAgdmFyIGkgPSBuIHwgMDtcclxuICAgIHJldHVybiBuID4gMCB8fCBuID09PSBpID8gaSA6IGkgLSAxO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIFJldHVybiBhIGNvZWZmaWNpZW50IGFycmF5IGFzIGEgc3RyaW5nIG9mIGJhc2UgMTAgZGlnaXRzLlxyXG4gIGZ1bmN0aW9uIGNvZWZmVG9TdHJpbmcoYSkge1xyXG4gICAgdmFyIHMsIHosXHJcbiAgICAgIGkgPSAxLFxyXG4gICAgICBqID0gYS5sZW5ndGgsXHJcbiAgICAgIHIgPSBhWzBdICsgJyc7XHJcblxyXG4gICAgZm9yICg7IGkgPCBqOykge1xyXG4gICAgICBzID0gYVtpKytdICsgJyc7XHJcbiAgICAgIHogPSBMT0dfQkFTRSAtIHMubGVuZ3RoO1xyXG4gICAgICBmb3IgKDsgei0tOyBzID0gJzAnICsgcyk7XHJcbiAgICAgIHIgKz0gcztcclxuICAgIH1cclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICBmb3IgKGogPSByLmxlbmd0aDsgci5jaGFyQ29kZUF0KC0taikgPT09IDQ4Oyk7XHJcblxyXG4gICAgcmV0dXJuIHIuc2xpY2UoMCwgaiArIDEgfHwgMSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ29tcGFyZSB0aGUgdmFsdWUgb2YgQmlnTnVtYmVycyB4IGFuZCB5LlxyXG4gIGZ1bmN0aW9uIGNvbXBhcmUoeCwgeSkge1xyXG4gICAgdmFyIGEsIGIsXHJcbiAgICAgIHhjID0geC5jLFxyXG4gICAgICB5YyA9IHkuYyxcclxuICAgICAgaSA9IHgucyxcclxuICAgICAgaiA9IHkucyxcclxuICAgICAgayA9IHguZSxcclxuICAgICAgbCA9IHkuZTtcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOP1xyXG4gICAgaWYgKCFpIHx8ICFqKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBhID0geGMgJiYgIXhjWzBdO1xyXG4gICAgYiA9IHljICYmICF5Y1swXTtcclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmIChhIHx8IGIpIHJldHVybiBhID8gYiA/IDAgOiAtaiA6IGk7XHJcblxyXG4gICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgaWYgKGkgIT0gaikgcmV0dXJuIGk7XHJcblxyXG4gICAgYSA9IGkgPCAwO1xyXG4gICAgYiA9IGsgPT0gbDtcclxuXHJcbiAgICAvLyBFaXRoZXIgSW5maW5pdHk/XHJcbiAgICBpZiAoIXhjIHx8ICF5YykgcmV0dXJuIGIgPyAwIDogIXhjIF4gYSA/IDEgOiAtMTtcclxuXHJcbiAgICAvLyBDb21wYXJlIGV4cG9uZW50cy5cclxuICAgIGlmICghYikgcmV0dXJuIGsgPiBsIF4gYSA/IDEgOiAtMTtcclxuXHJcbiAgICBqID0gKGsgPSB4Yy5sZW5ndGgpIDwgKGwgPSB5Yy5sZW5ndGgpID8gayA6IGw7XHJcblxyXG4gICAgLy8gQ29tcGFyZSBkaWdpdCBieSBkaWdpdC5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBqOyBpKyspIGlmICh4Y1tpXSAhPSB5Y1tpXSkgcmV0dXJuIHhjW2ldID4geWNbaV0gXiBhID8gMSA6IC0xO1xyXG5cclxuICAgIC8vIENvbXBhcmUgbGVuZ3Rocy5cclxuICAgIHJldHVybiBrID09IGwgPyAwIDogayA+IGwgXiBhID8gMSA6IC0xO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ2hlY2sgdGhhdCBuIGlzIGEgcHJpbWl0aXZlIG51bWJlciwgYW4gaW50ZWdlciwgYW5kIGluIHJhbmdlLCBvdGhlcndpc2UgdGhyb3cuXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaW50Q2hlY2sobiwgbWluLCBtYXgsIG5hbWUpIHtcclxuICAgIGlmIChuIDwgbWluIHx8IG4gPiBtYXggfHwgbiAhPT0gbWF0aGZsb29yKG4pKSB7XHJcbiAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAobmFtZSB8fCAnQXJndW1lbnQnKSArICh0eXBlb2YgbiA9PSAnbnVtYmVyJ1xyXG4gICAgICAgICA/IG4gPCBtaW4gfHwgbiA+IG1heCA/ICcgb3V0IG9mIHJhbmdlOiAnIDogJyBub3QgYW4gaW50ZWdlcjogJ1xyXG4gICAgICAgICA6ICcgbm90IGEgcHJpbWl0aXZlIG51bWJlcjogJykgKyBTdHJpbmcobikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIEFzc3VtZXMgZmluaXRlIG4uXHJcbiAgZnVuY3Rpb24gaXNPZGQobikge1xyXG4gICAgdmFyIGsgPSBuLmMubGVuZ3RoIC0gMTtcclxuICAgIHJldHVybiBiaXRGbG9vcihuLmUgLyBMT0dfQkFTRSkgPT0gayAmJiBuLmNba10gJSAyICE9IDA7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gdG9FeHBvbmVudGlhbChzdHIsIGUpIHtcclxuICAgIHJldHVybiAoc3RyLmxlbmd0aCA+IDEgPyBzdHIuY2hhckF0KDApICsgJy4nICsgc3RyLnNsaWNlKDEpIDogc3RyKSArXHJcbiAgICAgKGUgPCAwID8gJ2UnIDogJ2UrJykgKyBlO1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIHRvRml4ZWRQb2ludChzdHIsIGUsIHopIHtcclxuICAgIHZhciBsZW4sIHpzO1xyXG5cclxuICAgIC8vIE5lZ2F0aXZlIGV4cG9uZW50P1xyXG4gICAgaWYgKGUgPCAwKSB7XHJcblxyXG4gICAgICAvLyBQcmVwZW5kIHplcm9zLlxyXG4gICAgICBmb3IgKHpzID0geiArICcuJzsgKytlOyB6cyArPSB6KTtcclxuICAgICAgc3RyID0genMgKyBzdHI7XHJcblxyXG4gICAgLy8gUG9zaXRpdmUgZXhwb25lbnRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBBcHBlbmQgemVyb3MuXHJcbiAgICAgIGlmICgrK2UgPiBsZW4pIHtcclxuICAgICAgICBmb3IgKHpzID0geiwgZSAtPSBsZW47IC0tZTsgenMgKz0geik7XHJcbiAgICAgICAgc3RyICs9IHpzO1xyXG4gICAgICB9IGVsc2UgaWYgKGUgPCBsZW4pIHtcclxuICAgICAgICBzdHIgPSBzdHIuc2xpY2UoMCwgZSkgKyAnLicgKyBzdHIuc2xpY2UoZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIEVYUE9SVFxyXG5cclxuXHJcbiAgQmlnTnVtYmVyID0gY2xvbmUoKTtcclxuICBCaWdOdW1iZXJbJ2RlZmF1bHQnXSA9IEJpZ051bWJlci5CaWdOdW1iZXIgPSBCaWdOdW1iZXI7XHJcblxyXG4gIC8vIEFNRC5cclxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcclxuICAgIGRlZmluZShmdW5jdGlvbiAoKSB7IHJldHVybiBCaWdOdW1iZXI7IH0pO1xyXG5cclxuICAvLyBOb2RlLmpzIGFuZCBvdGhlciBlbnZpcm9ubWVudHMgdGhhdCBzdXBwb3J0IG1vZHVsZS5leHBvcnRzLlxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xyXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCaWdOdW1iZXI7XHJcblxyXG4gIC8vIEJyb3dzZXIuXHJcbiAgfSBlbHNlIHtcclxuICAgIGlmICghZ2xvYmFsT2JqZWN0KSB7XHJcbiAgICAgIGdsb2JhbE9iamVjdCA9IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYgPyBzZWxmIDogd2luZG93O1xyXG4gICAgfVxyXG5cclxuICAgIGdsb2JhbE9iamVjdC5CaWdOdW1iZXIgPSBCaWdOdW1iZXI7XHJcbiAgfVxyXG59KSh0aGlzKTtcclxuIiwidmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJykuU3RyZWFtO1xudmFyIERlbGF5ZWRTdHJlYW0gPSByZXF1aXJlKCdkZWxheWVkLXN0cmVhbScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENvbWJpbmVkU3RyZWFtO1xuZnVuY3Rpb24gQ29tYmluZWRTdHJlYW0oKSB7XG4gIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcbiAgdGhpcy5yZWFkYWJsZSA9IHRydWU7XG4gIHRoaXMuZGF0YVNpemUgPSAwO1xuICB0aGlzLm1heERhdGFTaXplID0gMiAqIDEwMjQgKiAxMDI0O1xuICB0aGlzLnBhdXNlU3RyZWFtcyA9IHRydWU7XG5cbiAgdGhpcy5fcmVsZWFzZWQgPSBmYWxzZTtcbiAgdGhpcy5fc3RyZWFtcyA9IFtdO1xuICB0aGlzLl9jdXJyZW50U3RyZWFtID0gbnVsbDtcbiAgdGhpcy5faW5zaWRlTG9vcCA9IGZhbHNlO1xuICB0aGlzLl9wZW5kaW5nTmV4dCA9IGZhbHNlO1xufVxudXRpbC5pbmhlcml0cyhDb21iaW5lZFN0cmVhbSwgU3RyZWFtKTtcblxuQ29tYmluZWRTdHJlYW0uY3JlYXRlID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICB2YXIgY29tYmluZWRTdHJlYW0gPSBuZXcgdGhpcygpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBmb3IgKHZhciBvcHRpb24gaW4gb3B0aW9ucykge1xuICAgIGNvbWJpbmVkU3RyZWFtW29wdGlvbl0gPSBvcHRpb25zW29wdGlvbl07XG4gIH1cblxuICByZXR1cm4gY29tYmluZWRTdHJlYW07XG59O1xuXG5Db21iaW5lZFN0cmVhbS5pc1N0cmVhbUxpa2UgPSBmdW5jdGlvbihzdHJlYW0pIHtcbiAgcmV0dXJuICh0eXBlb2Ygc3RyZWFtICE9PSAnZnVuY3Rpb24nKVxuICAgICYmICh0eXBlb2Ygc3RyZWFtICE9PSAnc3RyaW5nJylcbiAgICAmJiAodHlwZW9mIHN0cmVhbSAhPT0gJ2Jvb2xlYW4nKVxuICAgICYmICh0eXBlb2Ygc3RyZWFtICE9PSAnbnVtYmVyJylcbiAgICAmJiAoIUJ1ZmZlci5pc0J1ZmZlcihzdHJlYW0pKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihzdHJlYW0pIHtcbiAgdmFyIGlzU3RyZWFtTGlrZSA9IENvbWJpbmVkU3RyZWFtLmlzU3RyZWFtTGlrZShzdHJlYW0pO1xuXG4gIGlmIChpc1N0cmVhbUxpa2UpIHtcbiAgICBpZiAoIShzdHJlYW0gaW5zdGFuY2VvZiBEZWxheWVkU3RyZWFtKSkge1xuICAgICAgdmFyIG5ld1N0cmVhbSA9IERlbGF5ZWRTdHJlYW0uY3JlYXRlKHN0cmVhbSwge1xuICAgICAgICBtYXhEYXRhU2l6ZTogSW5maW5pdHksXG4gICAgICAgIHBhdXNlU3RyZWFtOiB0aGlzLnBhdXNlU3RyZWFtcyxcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdkYXRhJywgdGhpcy5fY2hlY2tEYXRhU2l6ZS5iaW5kKHRoaXMpKTtcbiAgICAgIHN0cmVhbSA9IG5ld1N0cmVhbTtcbiAgICB9XG5cbiAgICB0aGlzLl9oYW5kbGVFcnJvcnMoc3RyZWFtKTtcblxuICAgIGlmICh0aGlzLnBhdXNlU3RyZWFtcykge1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fc3RyZWFtcy5wdXNoKHN0cmVhbSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbihkZXN0LCBvcHRpb25zKSB7XG4gIFN0cmVhbS5wcm90b3R5cGUucGlwZS5jYWxsKHRoaXMsIGRlc3QsIG9wdGlvbnMpO1xuICB0aGlzLnJlc3VtZSgpO1xuICByZXR1cm4gZGVzdDtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5fZ2V0TmV4dCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9jdXJyZW50U3RyZWFtID0gbnVsbDtcblxuICBpZiAodGhpcy5faW5zaWRlTG9vcCkge1xuICAgIHRoaXMuX3BlbmRpbmdOZXh0ID0gdHJ1ZTtcbiAgICByZXR1cm47IC8vIGRlZmVyIGNhbGxcbiAgfVxuXG4gIHRoaXMuX2luc2lkZUxvb3AgPSB0cnVlO1xuICB0cnkge1xuICAgIGRvIHtcbiAgICAgIHRoaXMuX3BlbmRpbmdOZXh0ID0gZmFsc2U7XG4gICAgICB0aGlzLl9yZWFsR2V0TmV4dCgpO1xuICAgIH0gd2hpbGUgKHRoaXMuX3BlbmRpbmdOZXh0KTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0aGlzLl9pbnNpZGVMb29wID0gZmFsc2U7XG4gIH1cbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5fcmVhbEdldE5leHQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHN0cmVhbSA9IHRoaXMuX3N0cmVhbXMuc2hpZnQoKTtcblxuXG4gIGlmICh0eXBlb2Ygc3RyZWFtID09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhpcy5lbmQoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodHlwZW9mIHN0cmVhbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuX3BpcGVOZXh0KHN0cmVhbSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGdldFN0cmVhbSA9IHN0cmVhbTtcbiAgZ2V0U3RyZWFtKGZ1bmN0aW9uKHN0cmVhbSkge1xuICAgIHZhciBpc1N0cmVhbUxpa2UgPSBDb21iaW5lZFN0cmVhbS5pc1N0cmVhbUxpa2Uoc3RyZWFtKTtcbiAgICBpZiAoaXNTdHJlYW1MaWtlKSB7XG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCB0aGlzLl9jaGVja0RhdGFTaXplLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5faGFuZGxlRXJyb3JzKHN0cmVhbSk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGlwZU5leHQoc3RyZWFtKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5fcGlwZU5leHQgPSBmdW5jdGlvbihzdHJlYW0pIHtcbiAgdGhpcy5fY3VycmVudFN0cmVhbSA9IHN0cmVhbTtcblxuICB2YXIgaXNTdHJlYW1MaWtlID0gQ29tYmluZWRTdHJlYW0uaXNTdHJlYW1MaWtlKHN0cmVhbSk7XG4gIGlmIChpc1N0cmVhbUxpa2UpIHtcbiAgICBzdHJlYW0ub24oJ2VuZCcsIHRoaXMuX2dldE5leHQuYmluZCh0aGlzKSk7XG4gICAgc3RyZWFtLnBpcGUodGhpcywge2VuZDogZmFsc2V9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgdmFsdWUgPSBzdHJlYW07XG4gIHRoaXMud3JpdGUodmFsdWUpO1xuICB0aGlzLl9nZXROZXh0KCk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX2hhbmRsZUVycm9ycyA9IGZ1bmN0aW9uKHN0cmVhbSkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHtcbiAgICBzZWxmLl9lbWl0RXJyb3IoZXJyKTtcbiAgfSk7XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihkYXRhKSB7XG4gIHRoaXMuZW1pdCgnZGF0YScsIGRhdGEpO1xufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24oKSB7XG4gIGlmICghdGhpcy5wYXVzZVN0cmVhbXMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZih0aGlzLnBhdXNlU3RyZWFtcyAmJiB0aGlzLl9jdXJyZW50U3RyZWFtICYmIHR5cGVvZih0aGlzLl9jdXJyZW50U3RyZWFtLnBhdXNlKSA9PSAnZnVuY3Rpb24nKSB0aGlzLl9jdXJyZW50U3RyZWFtLnBhdXNlKCk7XG4gIHRoaXMuZW1pdCgncGF1c2UnKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCF0aGlzLl9yZWxlYXNlZCkge1xuICAgIHRoaXMuX3JlbGVhc2VkID0gdHJ1ZTtcbiAgICB0aGlzLndyaXRhYmxlID0gdHJ1ZTtcbiAgICB0aGlzLl9nZXROZXh0KCk7XG4gIH1cblxuICBpZih0aGlzLnBhdXNlU3RyZWFtcyAmJiB0aGlzLl9jdXJyZW50U3RyZWFtICYmIHR5cGVvZih0aGlzLl9jdXJyZW50U3RyZWFtLnJlc3VtZSkgPT0gJ2Z1bmN0aW9uJykgdGhpcy5fY3VycmVudFN0cmVhbS5yZXN1bWUoKTtcbiAgdGhpcy5lbWl0KCdyZXN1bWUnKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fcmVzZXQoKTtcbiAgdGhpcy5lbWl0KCdlbmQnKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX3Jlc2V0KCk7XG4gIHRoaXMuZW1pdCgnY2xvc2UnKTtcbn07XG5cbkNvbWJpbmVkU3RyZWFtLnByb3RvdHlwZS5fcmVzZXQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuICB0aGlzLl9zdHJlYW1zID0gW107XG4gIHRoaXMuX2N1cnJlbnRTdHJlYW0gPSBudWxsO1xufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLl9jaGVja0RhdGFTaXplID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX3VwZGF0ZURhdGFTaXplKCk7XG4gIGlmICh0aGlzLmRhdGFTaXplIDw9IHRoaXMubWF4RGF0YVNpemUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgbWVzc2FnZSA9XG4gICAgJ0RlbGF5ZWRTdHJlYW0jbWF4RGF0YVNpemUgb2YgJyArIHRoaXMubWF4RGF0YVNpemUgKyAnIGJ5dGVzIGV4Y2VlZGVkLic7XG4gIHRoaXMuX2VtaXRFcnJvcihuZXcgRXJyb3IobWVzc2FnZSkpO1xufTtcblxuQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLl91cGRhdGVEYXRhU2l6ZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLmRhdGFTaXplID0gMDtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHRoaXMuX3N0cmVhbXMuZm9yRWFjaChmdW5jdGlvbihzdHJlYW0pIHtcbiAgICBpZiAoIXN0cmVhbS5kYXRhU2l6ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNlbGYuZGF0YVNpemUgKz0gc3RyZWFtLmRhdGFTaXplO1xuICB9KTtcblxuICBpZiAodGhpcy5fY3VycmVudFN0cmVhbSAmJiB0aGlzLl9jdXJyZW50U3RyZWFtLmRhdGFTaXplKSB7XG4gICAgdGhpcy5kYXRhU2l6ZSArPSB0aGlzLl9jdXJyZW50U3RyZWFtLmRhdGFTaXplO1xuICB9XG59O1xuXG5Db21iaW5lZFN0cmVhbS5wcm90b3R5cGUuX2VtaXRFcnJvciA9IGZ1bmN0aW9uKGVycikge1xuICB0aGlzLl9yZXNldCgpO1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTtcbn07XG4iLCIvKipcbiAqIEhlbHBlcnMuXG4gKi9cblxudmFyIHMgPSAxMDAwO1xudmFyIG0gPSBzICogNjA7XG52YXIgaCA9IG0gKiA2MDtcbnZhciBkID0gaCAqIDI0O1xudmFyIHcgPSBkICogNztcbnZhciB5ID0gZCAqIDM2NS4yNTtcblxuLyoqXG4gKiBQYXJzZSBvciBmb3JtYXQgdGhlIGdpdmVuIGB2YWxgLlxuICpcbiAqIE9wdGlvbnM6XG4gKlxuICogIC0gYGxvbmdgIHZlcmJvc2UgZm9ybWF0dGluZyBbZmFsc2VdXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSB2YWxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEB0aHJvd3Mge0Vycm9yfSB0aHJvdyBhbiBlcnJvciBpZiB2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIG51bWJlclxuICogQHJldHVybiB7U3RyaW5nfE51bWJlcn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih2YWwsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbDtcbiAgaWYgKHR5cGUgPT09ICdzdHJpbmcnICYmIHZhbC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHBhcnNlKHZhbCk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ251bWJlcicgJiYgaXNGaW5pdGUodmFsKSkge1xuICAgIHJldHVybiBvcHRpb25zLmxvbmcgPyBmbXRMb25nKHZhbCkgOiBmbXRTaG9ydCh2YWwpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAndmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSB2YWxpZCBudW1iZXIuIHZhbD0nICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KHZhbClcbiAgKTtcbn07XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIGBzdHJgIGFuZCByZXR1cm4gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlKHN0cikge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHN0ci5sZW5ndGggPiAxMDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG1hdGNoID0gL14oLT8oPzpcXGQrKT9cXC4/XFxkKykgKihtaWxsaXNlY29uZHM/fG1zZWNzP3xtc3xzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHdlZWtzP3x3fHllYXJzP3x5cnM/fHkpPyQvaS5leGVjKFxuICAgIHN0clxuICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XG4gIHZhciB0eXBlID0gKG1hdGNoWzJdIHx8ICdtcycpLnRvTG93ZXJDYXNlKCk7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3llYXJzJzpcbiAgICBjYXNlICd5ZWFyJzpcbiAgICBjYXNlICd5cnMnOlxuICAgIGNhc2UgJ3lyJzpcbiAgICBjYXNlICd5JzpcbiAgICAgIHJldHVybiBuICogeTtcbiAgICBjYXNlICd3ZWVrcyc6XG4gICAgY2FzZSAnd2Vlayc6XG4gICAgY2FzZSAndyc6XG4gICAgICByZXR1cm4gbiAqIHc7XG4gICAgY2FzZSAnZGF5cyc6XG4gICAgY2FzZSAnZGF5JzpcbiAgICBjYXNlICdkJzpcbiAgICAgIHJldHVybiBuICogZDtcbiAgICBjYXNlICdob3Vycyc6XG4gICAgY2FzZSAnaG91cic6XG4gICAgY2FzZSAnaHJzJzpcbiAgICBjYXNlICdocic6XG4gICAgY2FzZSAnaCc6XG4gICAgICByZXR1cm4gbiAqIGg7XG4gICAgY2FzZSAnbWludXRlcyc6XG4gICAgY2FzZSAnbWludXRlJzpcbiAgICBjYXNlICdtaW5zJzpcbiAgICBjYXNlICdtaW4nOlxuICAgIGNhc2UgJ20nOlxuICAgICAgcmV0dXJuIG4gKiBtO1xuICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgY2FzZSAnc2Vjcyc6XG4gICAgY2FzZSAnc2VjJzpcbiAgICBjYXNlICdzJzpcbiAgICAgIHJldHVybiBuICogcztcbiAgICBjYXNlICdtaWxsaXNlY29uZHMnOlxuICAgIGNhc2UgJ21pbGxpc2Vjb25kJzpcbiAgICBjYXNlICdtc2Vjcyc6XG4gICAgY2FzZSAnbXNlYyc6XG4gICAgY2FzZSAnbXMnOlxuICAgICAgcmV0dXJuIG47XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBTaG9ydCBmb3JtYXQgZm9yIGBtc2AuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBmbXRTaG9ydChtcykge1xuICB2YXIgbXNBYnMgPSBNYXRoLmFicyhtcyk7XG4gIGlmIChtc0FicyA+PSBkKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBkKSArICdkJztcbiAgfVxuICBpZiAobXNBYnMgPj0gaCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gaCkgKyAnaCc7XG4gIH1cbiAgaWYgKG1zQWJzID49IG0pIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG0pICsgJ20nO1xuICB9XG4gIGlmIChtc0FicyA+PSBzKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBzKSArICdzJztcbiAgfVxuICByZXR1cm4gbXMgKyAnbXMnO1xufVxuXG4vKipcbiAqIExvbmcgZm9ybWF0IGZvciBgbXNgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZm10TG9uZyhtcykge1xuICB2YXIgbXNBYnMgPSBNYXRoLmFicyhtcyk7XG4gIGlmIChtc0FicyA+PSBkKSB7XG4gICAgcmV0dXJuIHBsdXJhbChtcywgbXNBYnMsIGQsICdkYXknKTtcbiAgfVxuICBpZiAobXNBYnMgPj0gaCkge1xuICAgIHJldHVybiBwbHVyYWwobXMsIG1zQWJzLCBoLCAnaG91cicpO1xuICB9XG4gIGlmIChtc0FicyA+PSBtKSB7XG4gICAgcmV0dXJuIHBsdXJhbChtcywgbXNBYnMsIG0sICdtaW51dGUnKTtcbiAgfVxuICBpZiAobXNBYnMgPj0gcykge1xuICAgIHJldHVybiBwbHVyYWwobXMsIG1zQWJzLCBzLCAnc2Vjb25kJyk7XG4gIH1cbiAgcmV0dXJuIG1zICsgJyBtcyc7XG59XG5cbi8qKlxuICogUGx1cmFsaXphdGlvbiBoZWxwZXIuXG4gKi9cblxuZnVuY3Rpb24gcGx1cmFsKG1zLCBtc0FicywgbiwgbmFtZSkge1xuICB2YXIgaXNQbHVyYWwgPSBtc0FicyA+PSBuICogMS41O1xuICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG4pICsgJyAnICsgbmFtZSArIChpc1BsdXJhbCA/ICdzJyA6ICcnKTtcbn1cbiIsIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdEFyZ3MgPSBmb3JtYXRBcmdzO1xuZXhwb3J0cy5zYXZlID0gc2F2ZTtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLnVzZUNvbG9ycyA9IHVzZUNvbG9ycztcbmV4cG9ydHMuc3RvcmFnZSA9IGxvY2Fsc3RvcmFnZSgpO1xuZXhwb3J0cy5kZXN0cm95ID0gKCgpID0+IHtcblx0bGV0IHdhcm5lZCA9IGZhbHNlO1xuXG5cdHJldHVybiAoKSA9PiB7XG5cdFx0aWYgKCF3YXJuZWQpIHtcblx0XHRcdHdhcm5lZCA9IHRydWU7XG5cdFx0XHRjb25zb2xlLndhcm4oJ0luc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC4nKTtcblx0XHR9XG5cdH07XG59KSgpO1xuXG4vKipcbiAqIENvbG9ycy5cbiAqL1xuXG5leHBvcnRzLmNvbG9ycyA9IFtcblx0JyMwMDAwQ0MnLFxuXHQnIzAwMDBGRicsXG5cdCcjMDAzM0NDJyxcblx0JyMwMDMzRkYnLFxuXHQnIzAwNjZDQycsXG5cdCcjMDA2NkZGJyxcblx0JyMwMDk5Q0MnLFxuXHQnIzAwOTlGRicsXG5cdCcjMDBDQzAwJyxcblx0JyMwMENDMzMnLFxuXHQnIzAwQ0M2NicsXG5cdCcjMDBDQzk5Jyxcblx0JyMwMENDQ0MnLFxuXHQnIzAwQ0NGRicsXG5cdCcjMzMwMENDJyxcblx0JyMzMzAwRkYnLFxuXHQnIzMzMzNDQycsXG5cdCcjMzMzM0ZGJyxcblx0JyMzMzY2Q0MnLFxuXHQnIzMzNjZGRicsXG5cdCcjMzM5OUNDJyxcblx0JyMzMzk5RkYnLFxuXHQnIzMzQ0MwMCcsXG5cdCcjMzNDQzMzJyxcblx0JyMzM0NDNjYnLFxuXHQnIzMzQ0M5OScsXG5cdCcjMzNDQ0NDJyxcblx0JyMzM0NDRkYnLFxuXHQnIzY2MDBDQycsXG5cdCcjNjYwMEZGJyxcblx0JyM2NjMzQ0MnLFxuXHQnIzY2MzNGRicsXG5cdCcjNjZDQzAwJyxcblx0JyM2NkNDMzMnLFxuXHQnIzk5MDBDQycsXG5cdCcjOTkwMEZGJyxcblx0JyM5OTMzQ0MnLFxuXHQnIzk5MzNGRicsXG5cdCcjOTlDQzAwJyxcblx0JyM5OUNDMzMnLFxuXHQnI0NDMDAwMCcsXG5cdCcjQ0MwMDMzJyxcblx0JyNDQzAwNjYnLFxuXHQnI0NDMDA5OScsXG5cdCcjQ0MwMENDJyxcblx0JyNDQzAwRkYnLFxuXHQnI0NDMzMwMCcsXG5cdCcjQ0MzMzMzJyxcblx0JyNDQzMzNjYnLFxuXHQnI0NDMzM5OScsXG5cdCcjQ0MzM0NDJyxcblx0JyNDQzMzRkYnLFxuXHQnI0NDNjYwMCcsXG5cdCcjQ0M2NjMzJyxcblx0JyNDQzk5MDAnLFxuXHQnI0NDOTkzMycsXG5cdCcjQ0NDQzAwJyxcblx0JyNDQ0NDMzMnLFxuXHQnI0ZGMDAwMCcsXG5cdCcjRkYwMDMzJyxcblx0JyNGRjAwNjYnLFxuXHQnI0ZGMDA5OScsXG5cdCcjRkYwMENDJyxcblx0JyNGRjAwRkYnLFxuXHQnI0ZGMzMwMCcsXG5cdCcjRkYzMzMzJyxcblx0JyNGRjMzNjYnLFxuXHQnI0ZGMzM5OScsXG5cdCcjRkYzM0NDJyxcblx0JyNGRjMzRkYnLFxuXHQnI0ZGNjYwMCcsXG5cdCcjRkY2NjMzJyxcblx0JyNGRjk5MDAnLFxuXHQnI0ZGOTkzMycsXG5cdCcjRkZDQzAwJyxcblx0JyNGRkNDMzMnXG5dO1xuXG4vKipcbiAqIEN1cnJlbnRseSBvbmx5IFdlYktpdC1iYXNlZCBXZWIgSW5zcGVjdG9ycywgRmlyZWZveCA+PSB2MzEsXG4gKiBhbmQgdGhlIEZpcmVidWcgZXh0ZW5zaW9uIChhbnkgRmlyZWZveCB2ZXJzaW9uKSBhcmUga25vd25cbiAqIHRvIHN1cHBvcnQgXCIlY1wiIENTUyBjdXN0b21pemF0aW9ucy5cbiAqXG4gKiBUT0RPOiBhZGQgYSBgbG9jYWxTdG9yYWdlYCB2YXJpYWJsZSB0byBleHBsaWNpdGx5IGVuYWJsZS9kaXNhYmxlIGNvbG9yc1xuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG5cdC8vIE5COiBJbiBhbiBFbGVjdHJvbiBwcmVsb2FkIHNjcmlwdCwgZG9jdW1lbnQgd2lsbCBiZSBkZWZpbmVkIGJ1dCBub3QgZnVsbHlcblx0Ly8gaW5pdGlhbGl6ZWQuIFNpbmNlIHdlIGtub3cgd2UncmUgaW4gQ2hyb21lLCB3ZSdsbCBqdXN0IGRldGVjdCB0aGlzIGNhc2Vcblx0Ly8gZXhwbGljaXRseVxuXHRpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnByb2Nlc3MgJiYgKHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcicgfHwgd2luZG93LnByb2Nlc3MuX19ud2pzKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Ly8gSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2UgZG8gbm90IHN1cHBvcnQgY29sb3JzLlxuXHRpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXFwvKFxcZCspLykpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBJcyB3ZWJraXQ/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE2NDU5NjA2LzM3Njc3M1xuXHQvLyBkb2N1bWVudCBpcyB1bmRlZmluZWQgaW4gcmVhY3QtbmF0aXZlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QtbmF0aXZlL3B1bGwvMTYzMlxuXHRyZXR1cm4gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuV2Via2l0QXBwZWFyYW5jZSkgfHxcblx0XHQvLyBJcyBmaXJlYnVnPyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zOTgxMjAvMzc2NzczXG5cdFx0KHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jb25zb2xlICYmICh3aW5kb3cuY29uc29sZS5maXJlYnVnIHx8ICh3aW5kb3cuY29uc29sZS5leGNlcHRpb24gJiYgd2luZG93LmNvbnNvbGUudGFibGUpKSkgfHxcblx0XHQvLyBJcyBmaXJlZm94ID49IHYzMT9cblx0XHQvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1Rvb2xzL1dlYl9Db25zb2xlI1N0eWxpbmdfbWVzc2FnZXNcblx0XHQodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSAmJiBwYXJzZUludChSZWdFeHAuJDEsIDEwKSA+PSAzMSkgfHxcblx0XHQvLyBEb3VibGUgY2hlY2sgd2Via2l0IGluIHVzZXJBZ2VudCBqdXN0IGluIGNhc2Ugd2UgYXJlIGluIGEgd29ya2VyXG5cdFx0KHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFxcLyhcXGQrKS8pKTtcbn1cblxuLyoqXG4gKiBDb2xvcml6ZSBsb2cgYXJndW1lbnRzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKGFyZ3MpIHtcblx0YXJnc1swXSA9ICh0aGlzLnVzZUNvbG9ycyA/ICclYycgOiAnJykgK1xuXHRcdHRoaXMubmFtZXNwYWNlICtcblx0XHQodGhpcy51c2VDb2xvcnMgPyAnICVjJyA6ICcgJykgK1xuXHRcdGFyZ3NbMF0gK1xuXHRcdCh0aGlzLnVzZUNvbG9ycyA/ICclYyAnIDogJyAnKSArXG5cdFx0JysnICsgbW9kdWxlLmV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKTtcblxuXHRpZiAoIXRoaXMudXNlQ29sb3JzKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgYyA9ICdjb2xvcjogJyArIHRoaXMuY29sb3I7XG5cdGFyZ3Muc3BsaWNlKDEsIDAsIGMsICdjb2xvcjogaW5oZXJpdCcpO1xuXG5cdC8vIFRoZSBmaW5hbCBcIiVjXCIgaXMgc29tZXdoYXQgdHJpY2t5LCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG90aGVyXG5cdC8vIGFyZ3VtZW50cyBwYXNzZWQgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUgJWMsIHNvIHdlIG5lZWQgdG9cblx0Ly8gZmlndXJlIG91dCB0aGUgY29ycmVjdCBpbmRleCB0byBpbnNlcnQgdGhlIENTUyBpbnRvXG5cdGxldCBpbmRleCA9IDA7XG5cdGxldCBsYXN0QyA9IDA7XG5cdGFyZ3NbMF0ucmVwbGFjZSgvJVthLXpBLVolXS9nLCBtYXRjaCA9PiB7XG5cdFx0aWYgKG1hdGNoID09PSAnJSUnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGluZGV4Kys7XG5cdFx0aWYgKG1hdGNoID09PSAnJWMnKSB7XG5cdFx0XHQvLyBXZSBvbmx5IGFyZSBpbnRlcmVzdGVkIGluIHRoZSAqbGFzdCogJWNcblx0XHRcdC8vICh0aGUgdXNlciBtYXkgaGF2ZSBwcm92aWRlZCB0aGVpciBvd24pXG5cdFx0XHRsYXN0QyA9IGluZGV4O1xuXHRcdH1cblx0fSk7XG5cblx0YXJncy5zcGxpY2UobGFzdEMsIDAsIGMpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYGNvbnNvbGUuZGVidWcoKWAgd2hlbiBhdmFpbGFibGUuXG4gKiBOby1vcCB3aGVuIGBjb25zb2xlLmRlYnVnYCBpcyBub3QgYSBcImZ1bmN0aW9uXCIuXG4gKiBJZiBgY29uc29sZS5kZWJ1Z2AgaXMgbm90IGF2YWlsYWJsZSwgZmFsbHMgYmFja1xuICogdG8gYGNvbnNvbGUubG9nYC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5leHBvcnRzLmxvZyA9IGNvbnNvbGUuZGVidWcgfHwgY29uc29sZS5sb2cgfHwgKCgpID0+IHt9KTtcblxuLyoqXG4gKiBTYXZlIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuXHR0cnkge1xuXHRcdGlmIChuYW1lc3BhY2VzKSB7XG5cdFx0XHRleHBvcnRzLnN0b3JhZ2Uuc2V0SXRlbSgnZGVidWcnLCBuYW1lc3BhY2VzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZXhwb3J0cy5zdG9yYWdlLnJlbW92ZUl0ZW0oJ2RlYnVnJyk7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdC8vIFN3YWxsb3dcblx0XHQvLyBYWFggKEBRaXgtKSBzaG91bGQgd2UgYmUgbG9nZ2luZyB0aGVzZT9cblx0fVxufVxuXG4vKipcbiAqIExvYWQgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcHJldmlvdXNseSBwZXJzaXN0ZWQgZGVidWcgbW9kZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBsb2FkKCkge1xuXHRsZXQgcjtcblx0dHJ5IHtcblx0XHRyID0gZXhwb3J0cy5zdG9yYWdlLmdldEl0ZW0oJ2RlYnVnJyk7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0Ly8gU3dhbGxvd1xuXHRcdC8vIFhYWCAoQFFpeC0pIHNob3VsZCB3ZSBiZSBsb2dnaW5nIHRoZXNlP1xuXHR9XG5cblx0Ly8gSWYgZGVidWcgaXNuJ3Qgc2V0IGluIExTLCBhbmQgd2UncmUgaW4gRWxlY3Ryb24sIHRyeSB0byBsb2FkICRERUJVR1xuXHRpZiAoIXIgJiYgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmICdlbnYnIGluIHByb2Nlc3MpIHtcblx0XHRyID0gcHJvY2Vzcy5lbnYuREVCVUc7XG5cdH1cblxuXHRyZXR1cm4gcjtcbn1cblxuLyoqXG4gKiBMb2NhbHN0b3JhZ2UgYXR0ZW1wdHMgdG8gcmV0dXJuIHRoZSBsb2NhbHN0b3JhZ2UuXG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzYWZhcmkgdGhyb3dzXG4gKiB3aGVuIGEgdXNlciBkaXNhYmxlcyBjb29raWVzL2xvY2Fsc3RvcmFnZVxuICogYW5kIHlvdSBhdHRlbXB0IHRvIGFjY2VzcyBpdC5cbiAqXG4gKiBAcmV0dXJuIHtMb2NhbFN0b3JhZ2V9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2NhbHN0b3JhZ2UoKSB7XG5cdHRyeSB7XG5cdFx0Ly8gVFZNTEtpdCAoQXBwbGUgVFYgSlMgUnVudGltZSkgZG9lcyBub3QgaGF2ZSBhIHdpbmRvdyBvYmplY3QsIGp1c3QgbG9jYWxTdG9yYWdlIGluIHRoZSBnbG9iYWwgY29udGV4dFxuXHRcdC8vIFRoZSBCcm93c2VyIGFsc28gaGFzIGxvY2FsU3RvcmFnZSBpbiB0aGUgZ2xvYmFsIGNvbnRleHQuXG5cdFx0cmV0dXJuIGxvY2FsU3RvcmFnZTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHQvLyBTd2FsbG93XG5cdFx0Ly8gWFhYIChAUWl4LSkgc2hvdWxkIHdlIGJlIGxvZ2dpbmcgdGhlc2U/XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2NvbW1vbicpKGV4cG9ydHMpO1xuXG5jb25zdCB7Zm9ybWF0dGVyc30gPSBtb2R1bGUuZXhwb3J0cztcblxuLyoqXG4gKiBNYXAgJWogdG8gYEpTT04uc3RyaW5naWZ5KClgLCBzaW5jZSBubyBXZWIgSW5zcGVjdG9ycyBkbyB0aGF0IGJ5IGRlZmF1bHQuXG4gKi9cblxuZm9ybWF0dGVycy5qID0gZnVuY3Rpb24gKHYpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodik7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0cmV0dXJuICdbVW5leHBlY3RlZEpTT05QYXJzZUVycm9yXTogJyArIGVycm9yLm1lc3NhZ2U7XG5cdH1cbn07XG4iLCJcbi8qKlxuICogVGhpcyBpcyB0aGUgY29tbW9uIGxvZ2ljIGZvciBib3RoIHRoZSBOb2RlLmpzIGFuZCB3ZWIgYnJvd3NlclxuICogaW1wbGVtZW50YXRpb25zIG9mIGBkZWJ1ZygpYC5cbiAqL1xuXG5mdW5jdGlvbiBzZXR1cChlbnYpIHtcblx0Y3JlYXRlRGVidWcuZGVidWcgPSBjcmVhdGVEZWJ1Zztcblx0Y3JlYXRlRGVidWcuZGVmYXVsdCA9IGNyZWF0ZURlYnVnO1xuXHRjcmVhdGVEZWJ1Zy5jb2VyY2UgPSBjb2VyY2U7XG5cdGNyZWF0ZURlYnVnLmRpc2FibGUgPSBkaXNhYmxlO1xuXHRjcmVhdGVEZWJ1Zy5lbmFibGUgPSBlbmFibGU7XG5cdGNyZWF0ZURlYnVnLmVuYWJsZWQgPSBlbmFibGVkO1xuXHRjcmVhdGVEZWJ1Zy5odW1hbml6ZSA9IHJlcXVpcmUoJ21zJyk7XG5cdGNyZWF0ZURlYnVnLmRlc3Ryb3kgPSBkZXN0cm95O1xuXG5cdE9iamVjdC5rZXlzKGVudikuZm9yRWFjaChrZXkgPT4ge1xuXHRcdGNyZWF0ZURlYnVnW2tleV0gPSBlbnZba2V5XTtcblx0fSk7XG5cblx0LyoqXG5cdCogVGhlIGN1cnJlbnRseSBhY3RpdmUgZGVidWcgbW9kZSBuYW1lcywgYW5kIG5hbWVzIHRvIHNraXAuXG5cdCovXG5cblx0Y3JlYXRlRGVidWcubmFtZXMgPSBbXTtcblx0Y3JlYXRlRGVidWcuc2tpcHMgPSBbXTtcblxuXHQvKipcblx0KiBNYXAgb2Ygc3BlY2lhbCBcIiVuXCIgaGFuZGxpbmcgZnVuY3Rpb25zLCBmb3IgdGhlIGRlYnVnIFwiZm9ybWF0XCIgYXJndW1lbnQuXG5cdCpcblx0KiBWYWxpZCBrZXkgbmFtZXMgYXJlIGEgc2luZ2xlLCBsb3dlciBvciB1cHBlci1jYXNlIGxldHRlciwgaS5lLiBcIm5cIiBhbmQgXCJOXCIuXG5cdCovXG5cdGNyZWF0ZURlYnVnLmZvcm1hdHRlcnMgPSB7fTtcblxuXHQvKipcblx0KiBTZWxlY3RzIGEgY29sb3IgZm9yIGEgZGVidWcgbmFtZXNwYWNlXG5cdCogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZSBUaGUgbmFtZXNwYWNlIHN0cmluZyBmb3IgdGhlIGRlYnVnIGluc3RhbmNlIHRvIGJlIGNvbG9yZWRcblx0KiBAcmV0dXJuIHtOdW1iZXJ8U3RyaW5nfSBBbiBBTlNJIGNvbG9yIGNvZGUgZm9yIHRoZSBnaXZlbiBuYW1lc3BhY2Vcblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gc2VsZWN0Q29sb3IobmFtZXNwYWNlKSB7XG5cdFx0bGV0IGhhc2ggPSAwO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lc3BhY2UubGVuZ3RoOyBpKyspIHtcblx0XHRcdGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIG5hbWVzcGFjZS5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0aGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcblx0XHR9XG5cblx0XHRyZXR1cm4gY3JlYXRlRGVidWcuY29sb3JzW01hdGguYWJzKGhhc2gpICUgY3JlYXRlRGVidWcuY29sb3JzLmxlbmd0aF07XG5cdH1cblx0Y3JlYXRlRGVidWcuc2VsZWN0Q29sb3IgPSBzZWxlY3RDb2xvcjtcblxuXHQvKipcblx0KiBDcmVhdGUgYSBkZWJ1Z2dlciB3aXRoIHRoZSBnaXZlbiBgbmFtZXNwYWNlYC5cblx0KlxuXHQqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2Vcblx0KiBAcmV0dXJuIHtGdW5jdGlvbn1cblx0KiBAYXBpIHB1YmxpY1xuXHQqL1xuXHRmdW5jdGlvbiBjcmVhdGVEZWJ1ZyhuYW1lc3BhY2UpIHtcblx0XHRsZXQgcHJldlRpbWU7XG5cdFx0bGV0IGVuYWJsZU92ZXJyaWRlID0gbnVsbDtcblx0XHRsZXQgbmFtZXNwYWNlc0NhY2hlO1xuXHRcdGxldCBlbmFibGVkQ2FjaGU7XG5cblx0XHRmdW5jdGlvbiBkZWJ1ZyguLi5hcmdzKSB7XG5cdFx0XHQvLyBEaXNhYmxlZD9cblx0XHRcdGlmICghZGVidWcuZW5hYmxlZCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHNlbGYgPSBkZWJ1ZztcblxuXHRcdFx0Ly8gU2V0IGBkaWZmYCB0aW1lc3RhbXBcblx0XHRcdGNvbnN0IGN1cnIgPSBOdW1iZXIobmV3IERhdGUoKSk7XG5cdFx0XHRjb25zdCBtcyA9IGN1cnIgLSAocHJldlRpbWUgfHwgY3Vycik7XG5cdFx0XHRzZWxmLmRpZmYgPSBtcztcblx0XHRcdHNlbGYucHJldiA9IHByZXZUaW1lO1xuXHRcdFx0c2VsZi5jdXJyID0gY3Vycjtcblx0XHRcdHByZXZUaW1lID0gY3VycjtcblxuXHRcdFx0YXJnc1swXSA9IGNyZWF0ZURlYnVnLmNvZXJjZShhcmdzWzBdKTtcblxuXHRcdFx0aWYgKHR5cGVvZiBhcmdzWzBdICE9PSAnc3RyaW5nJykge1xuXHRcdFx0XHQvLyBBbnl0aGluZyBlbHNlIGxldCdzIGluc3BlY3Qgd2l0aCAlT1xuXHRcdFx0XHRhcmdzLnVuc2hpZnQoJyVPJyk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFwcGx5IGFueSBgZm9ybWF0dGVyc2AgdHJhbnNmb3JtYXRpb25zXG5cdFx0XHRsZXQgaW5kZXggPSAwO1xuXHRcdFx0YXJnc1swXSA9IGFyZ3NbMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csIChtYXRjaCwgZm9ybWF0KSA9PiB7XG5cdFx0XHRcdC8vIElmIHdlIGVuY291bnRlciBhbiBlc2NhcGVkICUgdGhlbiBkb24ndCBpbmNyZWFzZSB0aGUgYXJyYXkgaW5kZXhcblx0XHRcdFx0aWYgKG1hdGNoID09PSAnJSUnKSB7XG5cdFx0XHRcdFx0cmV0dXJuICclJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpbmRleCsrO1xuXHRcdFx0XHRjb25zdCBmb3JtYXR0ZXIgPSBjcmVhdGVEZWJ1Zy5mb3JtYXR0ZXJzW2Zvcm1hdF07XG5cdFx0XHRcdGlmICh0eXBlb2YgZm9ybWF0dGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y29uc3QgdmFsID0gYXJnc1tpbmRleF07XG5cdFx0XHRcdFx0bWF0Y2ggPSBmb3JtYXR0ZXIuY2FsbChzZWxmLCB2YWwpO1xuXG5cdFx0XHRcdFx0Ly8gTm93IHdlIG5lZWQgdG8gcmVtb3ZlIGBhcmdzW2luZGV4XWAgc2luY2UgaXQncyBpbmxpbmVkIGluIHRoZSBgZm9ybWF0YFxuXHRcdFx0XHRcdGFyZ3Muc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdFx0XHRpbmRleC0tO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBtYXRjaDtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBBcHBseSBlbnYtc3BlY2lmaWMgZm9ybWF0dGluZyAoY29sb3JzLCBldGMuKVxuXHRcdFx0Y3JlYXRlRGVidWcuZm9ybWF0QXJncy5jYWxsKHNlbGYsIGFyZ3MpO1xuXG5cdFx0XHRjb25zdCBsb2dGbiA9IHNlbGYubG9nIHx8IGNyZWF0ZURlYnVnLmxvZztcblx0XHRcdGxvZ0ZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuXHRcdH1cblxuXHRcdGRlYnVnLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcblx0XHRkZWJ1Zy51c2VDb2xvcnMgPSBjcmVhdGVEZWJ1Zy51c2VDb2xvcnMoKTtcblx0XHRkZWJ1Zy5jb2xvciA9IGNyZWF0ZURlYnVnLnNlbGVjdENvbG9yKG5hbWVzcGFjZSk7XG5cdFx0ZGVidWcuZXh0ZW5kID0gZXh0ZW5kO1xuXHRcdGRlYnVnLmRlc3Ryb3kgPSBjcmVhdGVEZWJ1Zy5kZXN0cm95OyAvLyBYWFggVGVtcG9yYXJ5LiBXaWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkZWJ1ZywgJ2VuYWJsZWQnLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcblx0XHRcdGdldDogKCkgPT4ge1xuXHRcdFx0XHRpZiAoZW5hYmxlT3ZlcnJpZGUgIT09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4gZW5hYmxlT3ZlcnJpZGU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG5hbWVzcGFjZXNDYWNoZSAhPT0gY3JlYXRlRGVidWcubmFtZXNwYWNlcykge1xuXHRcdFx0XHRcdG5hbWVzcGFjZXNDYWNoZSA9IGNyZWF0ZURlYnVnLm5hbWVzcGFjZXM7XG5cdFx0XHRcdFx0ZW5hYmxlZENhY2hlID0gY3JlYXRlRGVidWcuZW5hYmxlZChuYW1lc3BhY2UpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIGVuYWJsZWRDYWNoZTtcblx0XHRcdH0sXG5cdFx0XHRzZXQ6IHYgPT4ge1xuXHRcdFx0XHRlbmFibGVPdmVycmlkZSA9IHY7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvLyBFbnYtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGRlYnVnIGluc3RhbmNlc1xuXHRcdGlmICh0eXBlb2YgY3JlYXRlRGVidWcuaW5pdCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Y3JlYXRlRGVidWcuaW5pdChkZWJ1Zyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRlYnVnO1xuXHR9XG5cblx0ZnVuY3Rpb24gZXh0ZW5kKG5hbWVzcGFjZSwgZGVsaW1pdGVyKSB7XG5cdFx0Y29uc3QgbmV3RGVidWcgPSBjcmVhdGVEZWJ1Zyh0aGlzLm5hbWVzcGFjZSArICh0eXBlb2YgZGVsaW1pdGVyID09PSAndW5kZWZpbmVkJyA/ICc6JyA6IGRlbGltaXRlcikgKyBuYW1lc3BhY2UpO1xuXHRcdG5ld0RlYnVnLmxvZyA9IHRoaXMubG9nO1xuXHRcdHJldHVybiBuZXdEZWJ1Zztcblx0fVxuXG5cdC8qKlxuXHQqIEVuYWJsZXMgYSBkZWJ1ZyBtb2RlIGJ5IG5hbWVzcGFjZXMuIFRoaXMgY2FuIGluY2x1ZGUgbW9kZXNcblx0KiBzZXBhcmF0ZWQgYnkgYSBjb2xvbiBhbmQgd2lsZGNhcmRzLlxuXHQqXG5cdCogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcblx0KiBAYXBpIHB1YmxpY1xuXHQqL1xuXHRmdW5jdGlvbiBlbmFibGUobmFtZXNwYWNlcykge1xuXHRcdGNyZWF0ZURlYnVnLnNhdmUobmFtZXNwYWNlcyk7XG5cdFx0Y3JlYXRlRGVidWcubmFtZXNwYWNlcyA9IG5hbWVzcGFjZXM7XG5cblx0XHRjcmVhdGVEZWJ1Zy5uYW1lcyA9IFtdO1xuXHRcdGNyZWF0ZURlYnVnLnNraXBzID0gW107XG5cblx0XHRsZXQgaTtcblx0XHRjb25zdCBzcGxpdCA9ICh0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycgPyBuYW1lc3BhY2VzIDogJycpLnNwbGl0KC9bXFxzLF0rLyk7XG5cdFx0Y29uc3QgbGVuID0gc3BsaXQubGVuZ3RoO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0XHRpZiAoIXNwbGl0W2ldKSB7XG5cdFx0XHRcdC8vIGlnbm9yZSBlbXB0eSBzdHJpbmdzXG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRuYW1lc3BhY2VzID0gc3BsaXRbaV0ucmVwbGFjZSgvXFwqL2csICcuKj8nKTtcblxuXHRcdFx0aWYgKG5hbWVzcGFjZXNbMF0gPT09ICctJykge1xuXHRcdFx0XHRjcmVhdGVEZWJ1Zy5za2lwcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcy5zbGljZSgxKSArICckJykpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3JlYXRlRGVidWcubmFtZXMucHVzaChuZXcgUmVnRXhwKCdeJyArIG5hbWVzcGFjZXMgKyAnJCcpKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0KiBEaXNhYmxlIGRlYnVnIG91dHB1dC5cblx0KlxuXHQqIEByZXR1cm4ge1N0cmluZ30gbmFtZXNwYWNlc1xuXHQqIEBhcGkgcHVibGljXG5cdCovXG5cdGZ1bmN0aW9uIGRpc2FibGUoKSB7XG5cdFx0Y29uc3QgbmFtZXNwYWNlcyA9IFtcblx0XHRcdC4uLmNyZWF0ZURlYnVnLm5hbWVzLm1hcCh0b05hbWVzcGFjZSksXG5cdFx0XHQuLi5jcmVhdGVEZWJ1Zy5za2lwcy5tYXAodG9OYW1lc3BhY2UpLm1hcChuYW1lc3BhY2UgPT4gJy0nICsgbmFtZXNwYWNlKVxuXHRcdF0uam9pbignLCcpO1xuXHRcdGNyZWF0ZURlYnVnLmVuYWJsZSgnJyk7XG5cdFx0cmV0dXJuIG5hbWVzcGFjZXM7XG5cdH1cblxuXHQvKipcblx0KiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIG1vZGUgbmFtZSBpcyBlbmFibGVkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCpcblx0KiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuXHQqIEByZXR1cm4ge0Jvb2xlYW59XG5cdCogQGFwaSBwdWJsaWNcblx0Ki9cblx0ZnVuY3Rpb24gZW5hYmxlZChuYW1lKSB7XG5cdFx0aWYgKG5hbWVbbmFtZS5sZW5ndGggLSAxXSA9PT0gJyonKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRsZXQgaTtcblx0XHRsZXQgbGVuO1xuXG5cdFx0Zm9yIChpID0gMCwgbGVuID0gY3JlYXRlRGVidWcuc2tpcHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGlmIChjcmVhdGVEZWJ1Zy5za2lwc1tpXS50ZXN0KG5hbWUpKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwLCBsZW4gPSBjcmVhdGVEZWJ1Zy5uYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0aWYgKGNyZWF0ZURlYnVnLm5hbWVzW2ldLnRlc3QobmFtZSkpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCogQ29udmVydCByZWdleHAgdG8gbmFtZXNwYWNlXG5cdCpcblx0KiBAcGFyYW0ge1JlZ0V4cH0gcmVneGVwXG5cdCogQHJldHVybiB7U3RyaW5nfSBuYW1lc3BhY2Vcblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gdG9OYW1lc3BhY2UocmVnZXhwKSB7XG5cdFx0cmV0dXJuIHJlZ2V4cC50b1N0cmluZygpXG5cdFx0XHQuc3Vic3RyaW5nKDIsIHJlZ2V4cC50b1N0cmluZygpLmxlbmd0aCAtIDIpXG5cdFx0XHQucmVwbGFjZSgvXFwuXFwqXFw/JC8sICcqJyk7XG5cdH1cblxuXHQvKipcblx0KiBDb2VyY2UgYHZhbGAuXG5cdCpcblx0KiBAcGFyYW0ge01peGVkfSB2YWxcblx0KiBAcmV0dXJuIHtNaXhlZH1cblx0KiBAYXBpIHByaXZhdGVcblx0Ki9cblx0ZnVuY3Rpb24gY29lcmNlKHZhbCkge1xuXHRcdGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdFx0cmV0dXJuIHZhbC5zdGFjayB8fCB2YWwubWVzc2FnZTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbDtcblx0fVxuXG5cdC8qKlxuXHQqIFhYWCBETyBOT1QgVVNFLiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHN0dWIgZnVuY3Rpb24uXG5cdCogWFhYIEl0IFdJTEwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLlxuXHQqL1xuXHRmdW5jdGlvbiBkZXN0cm95KCkge1xuXHRcdGNvbnNvbGUud2FybignSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLicpO1xuXHR9XG5cblx0Y3JlYXRlRGVidWcuZW5hYmxlKGNyZWF0ZURlYnVnLmxvYWQoKSk7XG5cblx0cmV0dXJuIGNyZWF0ZURlYnVnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldHVwO1xuIiwiLyoqXG4gKiBEZXRlY3QgRWxlY3Ryb24gcmVuZGVyZXIgLyBud2pzIHByb2Nlc3MsIHdoaWNoIGlzIG5vZGUsIGJ1dCB3ZSBzaG91bGRcbiAqIHRyZWF0IGFzIGEgYnJvd3Nlci5cbiAqL1xuXG5pZiAodHlwZW9mIHByb2Nlc3MgPT09ICd1bmRlZmluZWQnIHx8IHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJyB8fCBwcm9jZXNzLmJyb3dzZXIgPT09IHRydWUgfHwgcHJvY2Vzcy5fX253anMpIHtcblx0bW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Jyb3dzZXIuanMnKTtcbn0gZWxzZSB7XG5cdG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9ub2RlLmpzJyk7XG59XG4iLCIvKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxuY29uc3QgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIE5vZGUuanMgaW1wbGVtZW50YXRpb24gb2YgYGRlYnVnKClgLlxuICovXG5cbmV4cG9ydHMuaW5pdCA9IGluaXQ7XG5leHBvcnRzLmxvZyA9IGxvZztcbmV4cG9ydHMuZm9ybWF0QXJncyA9IGZvcm1hdEFyZ3M7XG5leHBvcnRzLnNhdmUgPSBzYXZlO1xuZXhwb3J0cy5sb2FkID0gbG9hZDtcbmV4cG9ydHMudXNlQ29sb3JzID0gdXNlQ29sb3JzO1xuZXhwb3J0cy5kZXN0cm95ID0gdXRpbC5kZXByZWNhdGUoXG5cdCgpID0+IHt9LFxuXHQnSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLidcbik7XG5cbi8qKlxuICogQ29sb3JzLlxuICovXG5cbmV4cG9ydHMuY29sb3JzID0gWzYsIDIsIDMsIDQsIDUsIDFdO1xuXG50cnkge1xuXHQvLyBPcHRpb25hbCBkZXBlbmRlbmN5IChhcyBpbiwgZG9lc24ndCBuZWVkIHRvIGJlIGluc3RhbGxlZCwgTk9UIGxpa2Ugb3B0aW9uYWxEZXBlbmRlbmNpZXMgaW4gcGFja2FnZS5qc29uKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5cdGNvbnN0IHN1cHBvcnRzQ29sb3IgPSByZXF1aXJlKCdzdXBwb3J0cy1jb2xvcicpO1xuXG5cdGlmIChzdXBwb3J0c0NvbG9yICYmIChzdXBwb3J0c0NvbG9yLnN0ZGVyciB8fCBzdXBwb3J0c0NvbG9yKS5sZXZlbCA+PSAyKSB7XG5cdFx0ZXhwb3J0cy5jb2xvcnMgPSBbXG5cdFx0XHQyMCxcblx0XHRcdDIxLFxuXHRcdFx0MjYsXG5cdFx0XHQyNyxcblx0XHRcdDMyLFxuXHRcdFx0MzMsXG5cdFx0XHQzOCxcblx0XHRcdDM5LFxuXHRcdFx0NDAsXG5cdFx0XHQ0MSxcblx0XHRcdDQyLFxuXHRcdFx0NDMsXG5cdFx0XHQ0NCxcblx0XHRcdDQ1LFxuXHRcdFx0NTYsXG5cdFx0XHQ1Nyxcblx0XHRcdDYyLFxuXHRcdFx0NjMsXG5cdFx0XHQ2OCxcblx0XHRcdDY5LFxuXHRcdFx0NzQsXG5cdFx0XHQ3NSxcblx0XHRcdDc2LFxuXHRcdFx0NzcsXG5cdFx0XHQ3OCxcblx0XHRcdDc5LFxuXHRcdFx0ODAsXG5cdFx0XHQ4MSxcblx0XHRcdDkyLFxuXHRcdFx0OTMsXG5cdFx0XHQ5OCxcblx0XHRcdDk5LFxuXHRcdFx0MTEyLFxuXHRcdFx0MTEzLFxuXHRcdFx0MTI4LFxuXHRcdFx0MTI5LFxuXHRcdFx0MTM0LFxuXHRcdFx0MTM1LFxuXHRcdFx0MTQ4LFxuXHRcdFx0MTQ5LFxuXHRcdFx0MTYwLFxuXHRcdFx0MTYxLFxuXHRcdFx0MTYyLFxuXHRcdFx0MTYzLFxuXHRcdFx0MTY0LFxuXHRcdFx0MTY1LFxuXHRcdFx0MTY2LFxuXHRcdFx0MTY3LFxuXHRcdFx0MTY4LFxuXHRcdFx0MTY5LFxuXHRcdFx0MTcwLFxuXHRcdFx0MTcxLFxuXHRcdFx0MTcyLFxuXHRcdFx0MTczLFxuXHRcdFx0MTc4LFxuXHRcdFx0MTc5LFxuXHRcdFx0MTg0LFxuXHRcdFx0MTg1LFxuXHRcdFx0MTk2LFxuXHRcdFx0MTk3LFxuXHRcdFx0MTk4LFxuXHRcdFx0MTk5LFxuXHRcdFx0MjAwLFxuXHRcdFx0MjAxLFxuXHRcdFx0MjAyLFxuXHRcdFx0MjAzLFxuXHRcdFx0MjA0LFxuXHRcdFx0MjA1LFxuXHRcdFx0MjA2LFxuXHRcdFx0MjA3LFxuXHRcdFx0MjA4LFxuXHRcdFx0MjA5LFxuXHRcdFx0MjE0LFxuXHRcdFx0MjE1LFxuXHRcdFx0MjIwLFxuXHRcdFx0MjIxXG5cdFx0XTtcblx0fVxufSBjYXRjaCAoZXJyb3IpIHtcblx0Ly8gU3dhbGxvdyAtIHdlIG9ubHkgY2FyZSBpZiBgc3VwcG9ydHMtY29sb3JgIGlzIGF2YWlsYWJsZTsgaXQgZG9lc24ndCBoYXZlIHRvIGJlLlxufVxuXG4vKipcbiAqIEJ1aWxkIHVwIHRoZSBkZWZhdWx0IGBpbnNwZWN0T3B0c2Agb2JqZWN0IGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiAgICQgREVCVUdfQ09MT1JTPW5vIERFQlVHX0RFUFRIPTEwIERFQlVHX1NIT1dfSElEREVOPWVuYWJsZWQgbm9kZSBzY3JpcHQuanNcbiAqL1xuXG5leHBvcnRzLmluc3BlY3RPcHRzID0gT2JqZWN0LmtleXMocHJvY2Vzcy5lbnYpLmZpbHRlcihrZXkgPT4ge1xuXHRyZXR1cm4gL15kZWJ1Z18vaS50ZXN0KGtleSk7XG59KS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG5cdC8vIENhbWVsLWNhc2Vcblx0Y29uc3QgcHJvcCA9IGtleVxuXHRcdC5zdWJzdHJpbmcoNilcblx0XHQudG9Mb3dlckNhc2UoKVxuXHRcdC5yZXBsYWNlKC9fKFthLXpdKS9nLCAoXywgaykgPT4ge1xuXHRcdFx0cmV0dXJuIGsudG9VcHBlckNhc2UoKTtcblx0XHR9KTtcblxuXHQvLyBDb2VyY2Ugc3RyaW5nIHZhbHVlIGludG8gSlMgdmFsdWVcblx0bGV0IHZhbCA9IHByb2Nlc3MuZW52W2tleV07XG5cdGlmICgvXih5ZXN8b258dHJ1ZXxlbmFibGVkKSQvaS50ZXN0KHZhbCkpIHtcblx0XHR2YWwgPSB0cnVlO1xuXHR9IGVsc2UgaWYgKC9eKG5vfG9mZnxmYWxzZXxkaXNhYmxlZCkkL2kudGVzdCh2YWwpKSB7XG5cdFx0dmFsID0gZmFsc2U7XG5cdH0gZWxzZSBpZiAodmFsID09PSAnbnVsbCcpIHtcblx0XHR2YWwgPSBudWxsO1xuXHR9IGVsc2Uge1xuXHRcdHZhbCA9IE51bWJlcih2YWwpO1xuXHR9XG5cblx0b2JqW3Byb3BdID0gdmFsO1xuXHRyZXR1cm4gb2JqO1xufSwge30pO1xuXG4vKipcbiAqIElzIHN0ZG91dCBhIFRUWT8gQ29sb3JlZCBvdXRwdXQgaXMgZW5hYmxlZCB3aGVuIGB0cnVlYC5cbiAqL1xuXG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG5cdHJldHVybiAnY29sb3JzJyBpbiBleHBvcnRzLmluc3BlY3RPcHRzID9cblx0XHRCb29sZWFuKGV4cG9ydHMuaW5zcGVjdE9wdHMuY29sb3JzKSA6XG5cdFx0dHR5LmlzYXR0eShwcm9jZXNzLnN0ZGVyci5mZCk7XG59XG5cbi8qKlxuICogQWRkcyBBTlNJIGNvbG9yIGVzY2FwZSBjb2RlcyBpZiBlbmFibGVkLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0QXJncyhhcmdzKSB7XG5cdGNvbnN0IHtuYW1lc3BhY2U6IG5hbWUsIHVzZUNvbG9yc30gPSB0aGlzO1xuXG5cdGlmICh1c2VDb2xvcnMpIHtcblx0XHRjb25zdCBjID0gdGhpcy5jb2xvcjtcblx0XHRjb25zdCBjb2xvckNvZGUgPSAnXFx1MDAxQlszJyArIChjIDwgOCA/IGMgOiAnODs1OycgKyBjKTtcblx0XHRjb25zdCBwcmVmaXggPSBgICAke2NvbG9yQ29kZX07MW0ke25hbWV9IFxcdTAwMUJbMG1gO1xuXG5cdFx0YXJnc1swXSA9IHByZWZpeCArIGFyZ3NbMF0uc3BsaXQoJ1xcbicpLmpvaW4oJ1xcbicgKyBwcmVmaXgpO1xuXHRcdGFyZ3MucHVzaChjb2xvckNvZGUgKyAnbSsnICsgbW9kdWxlLmV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKSArICdcXHUwMDFCWzBtJyk7XG5cdH0gZWxzZSB7XG5cdFx0YXJnc1swXSA9IGdldERhdGUoKSArIG5hbWUgKyAnICcgKyBhcmdzWzBdO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGdldERhdGUoKSB7XG5cdGlmIChleHBvcnRzLmluc3BlY3RPcHRzLmhpZGVEYXRlKSB7XG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cdHJldHVybiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgKyAnICc7XG59XG5cbi8qKlxuICogSW52b2tlcyBgdXRpbC5mb3JtYXQoKWAgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cyBhbmQgd3JpdGVzIHRvIHN0ZGVyci5cbiAqL1xuXG5mdW5jdGlvbiBsb2coLi4uYXJncykge1xuXHRyZXR1cm4gcHJvY2Vzcy5zdGRlcnIud3JpdGUodXRpbC5mb3JtYXQoLi4uYXJncykgKyAnXFxuJyk7XG59XG5cbi8qKlxuICogU2F2ZSBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBzYXZlKG5hbWVzcGFjZXMpIHtcblx0aWYgKG5hbWVzcGFjZXMpIHtcblx0XHRwcm9jZXNzLmVudi5ERUJVRyA9IG5hbWVzcGFjZXM7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gSWYgeW91IHNldCBhIHByb2Nlc3MuZW52IGZpZWxkIHRvIG51bGwgb3IgdW5kZWZpbmVkLCBpdCBnZXRzIGNhc3QgdG8gdGhlXG5cdFx0Ly8gc3RyaW5nICdudWxsJyBvciAndW5kZWZpbmVkJy4gSnVzdCBkZWxldGUgaW5zdGVhZC5cblx0XHRkZWxldGUgcHJvY2Vzcy5lbnYuREVCVUc7XG5cdH1cbn1cblxuLyoqXG4gKiBMb2FkIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJldHVybnMgdGhlIHByZXZpb3VzbHkgcGVyc2lzdGVkIGRlYnVnIG1vZGVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2FkKCkge1xuXHRyZXR1cm4gcHJvY2Vzcy5lbnYuREVCVUc7XG59XG5cbi8qKlxuICogSW5pdCBsb2dpYyBmb3IgYGRlYnVnYCBpbnN0YW5jZXMuXG4gKlxuICogQ3JlYXRlIGEgbmV3IGBpbnNwZWN0T3B0c2Agb2JqZWN0IGluIGNhc2UgYHVzZUNvbG9yc2AgaXMgc2V0XG4gKiBkaWZmZXJlbnRseSBmb3IgYSBwYXJ0aWN1bGFyIGBkZWJ1Z2AgaW5zdGFuY2UuXG4gKi9cblxuZnVuY3Rpb24gaW5pdChkZWJ1Zykge1xuXHRkZWJ1Zy5pbnNwZWN0T3B0cyA9IHt9O1xuXG5cdGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhleHBvcnRzLmluc3BlY3RPcHRzKTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0ZGVidWcuaW5zcGVjdE9wdHNba2V5c1tpXV0gPSBleHBvcnRzLmluc3BlY3RPcHRzW2tleXNbaV1dO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9jb21tb24nKShleHBvcnRzKTtcblxuY29uc3Qge2Zvcm1hdHRlcnN9ID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8qKlxuICogTWFwICVvIHRvIGB1dGlsLmluc3BlY3QoKWAsIGFsbCBvbiBhIHNpbmdsZSBsaW5lLlxuICovXG5cbmZvcm1hdHRlcnMubyA9IGZ1bmN0aW9uICh2KSB7XG5cdHRoaXMuaW5zcGVjdE9wdHMuY29sb3JzID0gdGhpcy51c2VDb2xvcnM7XG5cdHJldHVybiB1dGlsLmluc3BlY3QodiwgdGhpcy5pbnNwZWN0T3B0cylcblx0XHQuc3BsaXQoJ1xcbicpXG5cdFx0Lm1hcChzdHIgPT4gc3RyLnRyaW0oKSlcblx0XHQuam9pbignICcpO1xufTtcblxuLyoqXG4gKiBNYXAgJU8gdG8gYHV0aWwuaW5zcGVjdCgpYCwgYWxsb3dpbmcgbXVsdGlwbGUgbGluZXMgaWYgbmVlZGVkLlxuICovXG5cbmZvcm1hdHRlcnMuTyA9IGZ1bmN0aW9uICh2KSB7XG5cdHRoaXMuaW5zcGVjdE9wdHMuY29sb3JzID0gdGhpcy51c2VDb2xvcnM7XG5cdHJldHVybiB1dGlsLmluc3BlY3QodiwgdGhpcy5pbnNwZWN0T3B0cyk7XG59O1xuIiwidmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpLlN0cmVhbTtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERlbGF5ZWRTdHJlYW07XG5mdW5jdGlvbiBEZWxheWVkU3RyZWFtKCkge1xuICB0aGlzLnNvdXJjZSA9IG51bGw7XG4gIHRoaXMuZGF0YVNpemUgPSAwO1xuICB0aGlzLm1heERhdGFTaXplID0gMTAyNCAqIDEwMjQ7XG4gIHRoaXMucGF1c2VTdHJlYW0gPSB0cnVlO1xuXG4gIHRoaXMuX21heERhdGFTaXplRXhjZWVkZWQgPSBmYWxzZTtcbiAgdGhpcy5fcmVsZWFzZWQgPSBmYWxzZTtcbiAgdGhpcy5fYnVmZmVyZWRFdmVudHMgPSBbXTtcbn1cbnV0aWwuaW5oZXJpdHMoRGVsYXllZFN0cmVhbSwgU3RyZWFtKTtcblxuRGVsYXllZFN0cmVhbS5jcmVhdGUgPSBmdW5jdGlvbihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGRlbGF5ZWRTdHJlYW0gPSBuZXcgdGhpcygpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBmb3IgKHZhciBvcHRpb24gaW4gb3B0aW9ucykge1xuICAgIGRlbGF5ZWRTdHJlYW1bb3B0aW9uXSA9IG9wdGlvbnNbb3B0aW9uXTtcbiAgfVxuXG4gIGRlbGF5ZWRTdHJlYW0uc291cmNlID0gc291cmNlO1xuXG4gIHZhciByZWFsRW1pdCA9IHNvdXJjZS5lbWl0O1xuICBzb3VyY2UuZW1pdCA9IGZ1bmN0aW9uKCkge1xuICAgIGRlbGF5ZWRTdHJlYW0uX2hhbmRsZUVtaXQoYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcmVhbEVtaXQuYXBwbHkoc291cmNlLCBhcmd1bWVudHMpO1xuICB9O1xuXG4gIHNvdXJjZS5vbignZXJyb3InLCBmdW5jdGlvbigpIHt9KTtcbiAgaWYgKGRlbGF5ZWRTdHJlYW0ucGF1c2VTdHJlYW0pIHtcbiAgICBzb3VyY2UucGF1c2UoKTtcbiAgfVxuXG4gIHJldHVybiBkZWxheWVkU3RyZWFtO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KERlbGF5ZWRTdHJlYW0ucHJvdG90eXBlLCAncmVhZGFibGUnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2UucmVhZGFibGU7XG4gIH1cbn0pO1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5zb3VyY2Uuc2V0RW5jb2RpbmcuYXBwbHkodGhpcy5zb3VyY2UsIGFyZ3VtZW50cyk7XG59O1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCF0aGlzLl9yZWxlYXNlZCkge1xuICAgIHRoaXMucmVsZWFzZSgpO1xuICB9XG5cbiAgdGhpcy5zb3VyY2UucmVzdW1lKCk7XG59O1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnNvdXJjZS5wYXVzZSgpO1xufTtcblxuRGVsYXllZFN0cmVhbS5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLl9yZWxlYXNlZCA9IHRydWU7XG5cbiAgdGhpcy5fYnVmZmVyZWRFdmVudHMuZm9yRWFjaChmdW5jdGlvbihhcmdzKSB7XG4gICAgdGhpcy5lbWl0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9LmJpbmQodGhpcykpO1xuICB0aGlzLl9idWZmZXJlZEV2ZW50cyA9IFtdO1xufTtcblxuRGVsYXllZFN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgciA9IFN0cmVhbS5wcm90b3R5cGUucGlwZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB0aGlzLnJlc3VtZSgpO1xuICByZXR1cm4gcjtcbn07XG5cbkRlbGF5ZWRTdHJlYW0ucHJvdG90eXBlLl9oYW5kbGVFbWl0ID0gZnVuY3Rpb24oYXJncykge1xuICBpZiAodGhpcy5fcmVsZWFzZWQpIHtcbiAgICB0aGlzLmVtaXQuYXBwbHkodGhpcywgYXJncyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGFyZ3NbMF0gPT09ICdkYXRhJykge1xuICAgIHRoaXMuZGF0YVNpemUgKz0gYXJnc1sxXS5sZW5ndGg7XG4gICAgdGhpcy5fY2hlY2tJZk1heERhdGFTaXplRXhjZWVkZWQoKTtcbiAgfVxuXG4gIHRoaXMuX2J1ZmZlcmVkRXZlbnRzLnB1c2goYXJncyk7XG59O1xuXG5EZWxheWVkU3RyZWFtLnByb3RvdHlwZS5fY2hlY2tJZk1heERhdGFTaXplRXhjZWVkZWQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuX21heERhdGFTaXplRXhjZWVkZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodGhpcy5kYXRhU2l6ZSA8PSB0aGlzLm1heERhdGFTaXplKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5fbWF4RGF0YVNpemVFeGNlZWRlZCA9IHRydWU7XG4gIHZhciBtZXNzYWdlID1cbiAgICAnRGVsYXllZFN0cmVhbSNtYXhEYXRhU2l6ZSBvZiAnICsgdGhpcy5tYXhEYXRhU2l6ZSArICcgYnl0ZXMgZXhjZWVkZWQuJ1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKG1lc3NhZ2UpKTtcbn07XG4iLCJ2YXIgZGVidWc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIWRlYnVnKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8qIGVzbGludCBnbG9iYWwtcmVxdWlyZTogb2ZmICovXG4gICAgICBkZWJ1ZyA9IHJlcXVpcmUoXCJkZWJ1Z1wiKShcImZvbGxvdy1yZWRpcmVjdHNcIik7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyAvKiAqLyB9XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBkZWJ1ZyA9IGZ1bmN0aW9uICgpIHsgLyogKi8gfTtcbiAgICB9XG4gIH1cbiAgZGVidWcuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn07XG4iLCJ2YXIgdXJsID0gcmVxdWlyZShcInVybFwiKTtcbnZhciBVUkwgPSB1cmwuVVJMO1xudmFyIGh0dHAgPSByZXF1aXJlKFwiaHR0cFwiKTtcbnZhciBodHRwcyA9IHJlcXVpcmUoXCJodHRwc1wiKTtcbnZhciBXcml0YWJsZSA9IHJlcXVpcmUoXCJzdHJlYW1cIikuV3JpdGFibGU7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZShcImFzc2VydFwiKTtcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoXCIuL2RlYnVnXCIpO1xuXG4vLyBDcmVhdGUgaGFuZGxlcnMgdGhhdCBwYXNzIGV2ZW50cyBmcm9tIG5hdGl2ZSByZXF1ZXN0c1xudmFyIGV2ZW50cyA9IFtcImFib3J0XCIsIFwiYWJvcnRlZFwiLCBcImNvbm5lY3RcIiwgXCJlcnJvclwiLCBcInNvY2tldFwiLCBcInRpbWVvdXRcIl07XG52YXIgZXZlbnRIYW5kbGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5ldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtcbiAgZXZlbnRIYW5kbGVyc1tldmVudF0gPSBmdW5jdGlvbiAoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgIHRoaXMuX3JlZGlyZWN0YWJsZS5lbWl0KGV2ZW50LCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgfTtcbn0pO1xuXG4vLyBFcnJvciB0eXBlcyB3aXRoIGNvZGVzXG52YXIgUmVkaXJlY3Rpb25FcnJvciA9IGNyZWF0ZUVycm9yVHlwZShcbiAgXCJFUlJfRlJfUkVESVJFQ1RJT05fRkFJTFVSRVwiLFxuICBcIlJlZGlyZWN0ZWQgcmVxdWVzdCBmYWlsZWRcIlxuKTtcbnZhciBUb29NYW55UmVkaXJlY3RzRXJyb3IgPSBjcmVhdGVFcnJvclR5cGUoXG4gIFwiRVJSX0ZSX1RPT19NQU5ZX1JFRElSRUNUU1wiLFxuICBcIk1heGltdW0gbnVtYmVyIG9mIHJlZGlyZWN0cyBleGNlZWRlZFwiXG4pO1xudmFyIE1heEJvZHlMZW5ndGhFeGNlZWRlZEVycm9yID0gY3JlYXRlRXJyb3JUeXBlKFxuICBcIkVSUl9GUl9NQVhfQk9EWV9MRU5HVEhfRVhDRUVERURcIixcbiAgXCJSZXF1ZXN0IGJvZHkgbGFyZ2VyIHRoYW4gbWF4Qm9keUxlbmd0aCBsaW1pdFwiXG4pO1xudmFyIFdyaXRlQWZ0ZXJFbmRFcnJvciA9IGNyZWF0ZUVycm9yVHlwZShcbiAgXCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORFwiLFxuICBcIndyaXRlIGFmdGVyIGVuZFwiXG4pO1xuXG4vLyBBbiBIVFRQKFMpIHJlcXVlc3QgdGhhdCBjYW4gYmUgcmVkaXJlY3RlZFxuZnVuY3Rpb24gUmVkaXJlY3RhYmxlUmVxdWVzdChvcHRpb25zLCByZXNwb25zZUNhbGxiYWNrKSB7XG4gIC8vIEluaXRpYWxpemUgdGhlIHJlcXVlc3RcbiAgV3JpdGFibGUuY2FsbCh0aGlzKTtcbiAgdGhpcy5fc2FuaXRpemVPcHRpb25zKG9wdGlvbnMpO1xuICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgdGhpcy5fZW5kZWQgPSBmYWxzZTtcbiAgdGhpcy5fZW5kaW5nID0gZmFsc2U7XG4gIHRoaXMuX3JlZGlyZWN0Q291bnQgPSAwO1xuICB0aGlzLl9yZWRpcmVjdHMgPSBbXTtcbiAgdGhpcy5fcmVxdWVzdEJvZHlMZW5ndGggPSAwO1xuICB0aGlzLl9yZXF1ZXN0Qm9keUJ1ZmZlcnMgPSBbXTtcblxuICAvLyBBdHRhY2ggYSBjYWxsYmFjayBpZiBwYXNzZWRcbiAgaWYgKHJlc3BvbnNlQ2FsbGJhY2spIHtcbiAgICB0aGlzLm9uKFwicmVzcG9uc2VcIiwgcmVzcG9uc2VDYWxsYmFjayk7XG4gIH1cblxuICAvLyBSZWFjdCB0byByZXNwb25zZXMgb2YgbmF0aXZlIHJlcXVlc3RzXG4gIHZhciBzZWxmID0gdGhpcztcbiAgdGhpcy5fb25OYXRpdmVSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgIHNlbGYuX3Byb2Nlc3NSZXNwb25zZShyZXNwb25zZSk7XG4gIH07XG5cbiAgLy8gUGVyZm9ybSB0aGUgZmlyc3QgcmVxdWVzdFxuICB0aGlzLl9wZXJmb3JtUmVxdWVzdCgpO1xufVxuUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFdyaXRhYmxlLnByb3RvdHlwZSk7XG5cblJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlLmFib3J0ID0gZnVuY3Rpb24gKCkge1xuICBhYm9ydFJlcXVlc3QodGhpcy5fY3VycmVudFJlcXVlc3QpO1xuICB0aGlzLmVtaXQoXCJhYm9ydFwiKTtcbn07XG5cbi8vIFdyaXRlcyBidWZmZXJlZCBkYXRhIHRvIHRoZSBjdXJyZW50IG5hdGl2ZSByZXF1ZXN0XG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgLy8gV3JpdGluZyBpcyBub3QgYWxsb3dlZCBpZiBlbmQgaGFzIGJlZW4gY2FsbGVkXG4gIGlmICh0aGlzLl9lbmRpbmcpIHtcbiAgICB0aHJvdyBuZXcgV3JpdGVBZnRlckVuZEVycm9yKCk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBpbnB1dCBhbmQgc2hpZnQgcGFyYW1ldGVycyBpZiBuZWNlc3NhcnlcbiAgaWYgKCEodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIgJiYgKFwibGVuZ3RoXCIgaW4gZGF0YSkpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImRhdGEgc2hvdWxkIGJlIGEgc3RyaW5nLCBCdWZmZXIgb3IgVWludDhBcnJheVwiKTtcbiAgfVxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjYWxsYmFjayA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIC8vIElnbm9yZSBlbXB0eSBidWZmZXJzLCBzaW5jZSB3cml0aW5nIHRoZW0gZG9lc24ndCBpbnZva2UgdGhlIGNhbGxiYWNrXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvMjIwNjZcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgLy8gT25seSB3cml0ZSB3aGVuIHdlIGRvbid0IGV4Y2VlZCB0aGUgbWF4aW11bSBib2R5IGxlbmd0aFxuICBpZiAodGhpcy5fcmVxdWVzdEJvZHlMZW5ndGggKyBkYXRhLmxlbmd0aCA8PSB0aGlzLl9vcHRpb25zLm1heEJvZHlMZW5ndGgpIHtcbiAgICB0aGlzLl9yZXF1ZXN0Qm9keUxlbmd0aCArPSBkYXRhLmxlbmd0aDtcbiAgICB0aGlzLl9yZXF1ZXN0Qm9keUJ1ZmZlcnMucHVzaCh7IGRhdGE6IGRhdGEsIGVuY29kaW5nOiBlbmNvZGluZyB9KTtcbiAgICB0aGlzLl9jdXJyZW50UmVxdWVzdC53cml0ZShkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spO1xuICB9XG4gIC8vIEVycm9yIHdoZW4gd2UgZXhjZWVkIHRoZSBtYXhpbXVtIGJvZHkgbGVuZ3RoXG4gIGVsc2Uge1xuICAgIHRoaXMuZW1pdChcImVycm9yXCIsIG5ldyBNYXhCb2R5TGVuZ3RoRXhjZWVkZWRFcnJvcigpKTtcbiAgICB0aGlzLmFib3J0KCk7XG4gIH1cbn07XG5cbi8vIEVuZHMgdGhlIGN1cnJlbnQgbmF0aXZlIHJlcXVlc3RcblJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgLy8gU2hpZnQgcGFyYW1ldGVycyBpZiBuZWNlc3NhcnlcbiAgaWYgKHR5cGVvZiBkYXRhID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBjYWxsYmFjayA9IGRhdGE7XG4gICAgZGF0YSA9IGVuY29kaW5nID0gbnVsbDtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGNhbGxiYWNrID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgLy8gV3JpdGUgZGF0YSBpZiBuZWVkZWQgYW5kIGVuZFxuICBpZiAoIWRhdGEpIHtcbiAgICB0aGlzLl9lbmRlZCA9IHRoaXMuX2VuZGluZyA9IHRydWU7XG4gICAgdGhpcy5fY3VycmVudFJlcXVlc3QuZW5kKG51bGwsIG51bGwsIGNhbGxiYWNrKTtcbiAgfVxuICBlbHNlIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGN1cnJlbnRSZXF1ZXN0ID0gdGhpcy5fY3VycmVudFJlcXVlc3Q7XG4gICAgdGhpcy53cml0ZShkYXRhLCBlbmNvZGluZywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fZW5kZWQgPSB0cnVlO1xuICAgICAgY3VycmVudFJlcXVlc3QuZW5kKG51bGwsIG51bGwsIGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgICB0aGlzLl9lbmRpbmcgPSB0cnVlO1xuICB9XG59O1xuXG4vLyBTZXRzIGEgaGVhZGVyIHZhbHVlIG9uIHRoZSBjdXJyZW50IG5hdGl2ZSByZXF1ZXN0XG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS5zZXRIZWFkZXIgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5fb3B0aW9ucy5oZWFkZXJzW25hbWVdID0gdmFsdWU7XG4gIHRoaXMuX2N1cnJlbnRSZXF1ZXN0LnNldEhlYWRlcihuYW1lLCB2YWx1ZSk7XG59O1xuXG4vLyBDbGVhcnMgYSBoZWFkZXIgdmFsdWUgb24gdGhlIGN1cnJlbnQgbmF0aXZlIHJlcXVlc3RcblJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlLnJlbW92ZUhlYWRlciA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLl9vcHRpb25zLmhlYWRlcnNbbmFtZV07XG4gIHRoaXMuX2N1cnJlbnRSZXF1ZXN0LnJlbW92ZUhlYWRlcihuYW1lKTtcbn07XG5cbi8vIEdsb2JhbCB0aW1lb3V0IGZvciBhbGwgdW5kZXJseWluZyByZXF1ZXN0c1xuUmVkaXJlY3RhYmxlUmVxdWVzdC5wcm90b3R5cGUuc2V0VGltZW91dCA9IGZ1bmN0aW9uIChtc2VjcywgY2FsbGJhY2spIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIC8vIERlc3Ryb3lzIHRoZSBzb2NrZXQgb24gdGltZW91dFxuICBmdW5jdGlvbiBkZXN0cm95T25UaW1lb3V0KHNvY2tldCkge1xuICAgIHNvY2tldC5zZXRUaW1lb3V0KG1zZWNzKTtcbiAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoXCJ0aW1lb3V0XCIsIHNvY2tldC5kZXN0cm95KTtcbiAgICBzb2NrZXQuYWRkTGlzdGVuZXIoXCJ0aW1lb3V0XCIsIHNvY2tldC5kZXN0cm95KTtcbiAgfVxuXG4gIC8vIFNldHMgdXAgYSB0aW1lciB0byB0cmlnZ2VyIGEgdGltZW91dCBldmVudFxuICBmdW5jdGlvbiBzdGFydFRpbWVyKHNvY2tldCkge1xuICAgIGlmIChzZWxmLl90aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQoc2VsZi5fdGltZW91dCk7XG4gICAgfVxuICAgIHNlbGYuX3RpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuZW1pdChcInRpbWVvdXRcIik7XG4gICAgICBjbGVhclRpbWVyKCk7XG4gICAgfSwgbXNlY3MpO1xuICAgIGRlc3Ryb3lPblRpbWVvdXQoc29ja2V0KTtcbiAgfVxuXG4gIC8vIFN0b3BzIGEgdGltZW91dCBmcm9tIHRyaWdnZXJpbmdcbiAgZnVuY3Rpb24gY2xlYXJUaW1lcigpIHtcbiAgICAvLyBDbGVhciB0aGUgdGltZW91dFxuICAgIGlmIChzZWxmLl90aW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQoc2VsZi5fdGltZW91dCk7XG4gICAgICBzZWxmLl90aW1lb3V0ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDbGVhbiB1cCBhbGwgYXR0YWNoZWQgbGlzdGVuZXJzXG4gICAgc2VsZi5yZW1vdmVMaXN0ZW5lcihcImFib3J0XCIsIGNsZWFyVGltZXIpO1xuICAgIHNlbGYucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLCBjbGVhclRpbWVyKTtcbiAgICBzZWxmLnJlbW92ZUxpc3RlbmVyKFwicmVzcG9uc2VcIiwgY2xlYXJUaW1lcik7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBzZWxmLnJlbW92ZUxpc3RlbmVyKFwidGltZW91dFwiLCBjYWxsYmFjayk7XG4gICAgfVxuICAgIGlmICghc2VsZi5zb2NrZXQpIHtcbiAgICAgIHNlbGYuX2N1cnJlbnRSZXF1ZXN0LnJlbW92ZUxpc3RlbmVyKFwic29ja2V0XCIsIHN0YXJ0VGltZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF0dGFjaCBjYWxsYmFjayBpZiBwYXNzZWRcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5vbihcInRpbWVvdXRcIiwgY2FsbGJhY2spO1xuICB9XG5cbiAgLy8gU3RhcnQgdGhlIHRpbWVyIGlmIG9yIHdoZW4gdGhlIHNvY2tldCBpcyBvcGVuZWRcbiAgaWYgKHRoaXMuc29ja2V0KSB7XG4gICAgc3RhcnRUaW1lcih0aGlzLnNvY2tldCk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhpcy5fY3VycmVudFJlcXVlc3Qub25jZShcInNvY2tldFwiLCBzdGFydFRpbWVyKTtcbiAgfVxuXG4gIC8vIENsZWFuIHVwIG9uIGV2ZW50c1xuICB0aGlzLm9uKFwic29ja2V0XCIsIGRlc3Ryb3lPblRpbWVvdXQpO1xuICB0aGlzLm9uKFwiYWJvcnRcIiwgY2xlYXJUaW1lcik7XG4gIHRoaXMub24oXCJlcnJvclwiLCBjbGVhclRpbWVyKTtcbiAgdGhpcy5vbihcInJlc3BvbnNlXCIsIGNsZWFyVGltZXIpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gUHJveHkgYWxsIG90aGVyIHB1YmxpYyBDbGllbnRSZXF1ZXN0IG1ldGhvZHNcbltcbiAgXCJmbHVzaEhlYWRlcnNcIiwgXCJnZXRIZWFkZXJcIixcbiAgXCJzZXROb0RlbGF5XCIsIFwic2V0U29ja2V0S2VlcEFsaXZlXCIsXG5dLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICBSZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFJlcXVlc3RbbWV0aG9kXShhLCBiKTtcbiAgfTtcbn0pO1xuXG4vLyBQcm94eSBhbGwgcHVibGljIENsaWVudFJlcXVlc3QgcHJvcGVydGllc1xuW1wiYWJvcnRlZFwiLCBcImNvbm5lY3Rpb25cIiwgXCJzb2NrZXRcIl0uZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlZGlyZWN0YWJsZVJlcXVlc3QucHJvdG90eXBlLCBwcm9wZXJ0eSwge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fY3VycmVudFJlcXVlc3RbcHJvcGVydHldOyB9LFxuICB9KTtcbn0pO1xuXG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS5fc2FuaXRpemVPcHRpb25zID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgLy8gRW5zdXJlIGhlYWRlcnMgYXJlIGFsd2F5cyBwcmVzZW50XG4gIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgb3B0aW9ucy5oZWFkZXJzID0ge307XG4gIH1cblxuICAvLyBTaW5jZSBodHRwLnJlcXVlc3QgdHJlYXRzIGhvc3QgYXMgYW4gYWxpYXMgb2YgaG9zdG5hbWUsXG4gIC8vIGJ1dCB0aGUgdXJsIG1vZHVsZSBpbnRlcnByZXRzIGhvc3QgYXMgaG9zdG5hbWUgcGx1cyBwb3J0LFxuICAvLyBlbGltaW5hdGUgdGhlIGhvc3QgcHJvcGVydHkgdG8gYXZvaWQgY29uZnVzaW9uLlxuICBpZiAob3B0aW9ucy5ob3N0KSB7XG4gICAgLy8gVXNlIGhvc3RuYW1lIGlmIHNldCwgYmVjYXVzZSBpdCBoYXMgcHJlY2VkZW5jZVxuICAgIGlmICghb3B0aW9ucy5ob3N0bmFtZSkge1xuICAgICAgb3B0aW9ucy5ob3N0bmFtZSA9IG9wdGlvbnMuaG9zdDtcbiAgICB9XG4gICAgZGVsZXRlIG9wdGlvbnMuaG9zdDtcbiAgfVxuXG4gIC8vIENvbXBsZXRlIHRoZSBVUkwgb2JqZWN0IHdoZW4gbmVjZXNzYXJ5XG4gIGlmICghb3B0aW9ucy5wYXRobmFtZSAmJiBvcHRpb25zLnBhdGgpIHtcbiAgICB2YXIgc2VhcmNoUG9zID0gb3B0aW9ucy5wYXRoLmluZGV4T2YoXCI/XCIpO1xuICAgIGlmIChzZWFyY2hQb3MgPCAwKSB7XG4gICAgICBvcHRpb25zLnBhdGhuYW1lID0gb3B0aW9ucy5wYXRoO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG9wdGlvbnMucGF0aG5hbWUgPSBvcHRpb25zLnBhdGguc3Vic3RyaW5nKDAsIHNlYXJjaFBvcyk7XG4gICAgICBvcHRpb25zLnNlYXJjaCA9IG9wdGlvbnMucGF0aC5zdWJzdHJpbmcoc2VhcmNoUG9zKTtcbiAgICB9XG4gIH1cbn07XG5cblxuLy8gRXhlY3V0ZXMgdGhlIG5leHQgbmF0aXZlIHJlcXVlc3QgKGluaXRpYWwgb3IgcmVkaXJlY3QpXG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS5fcGVyZm9ybVJlcXVlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIExvYWQgdGhlIG5hdGl2ZSBwcm90b2NvbFxuICB2YXIgcHJvdG9jb2wgPSB0aGlzLl9vcHRpb25zLnByb3RvY29sO1xuICB2YXIgbmF0aXZlUHJvdG9jb2wgPSB0aGlzLl9vcHRpb25zLm5hdGl2ZVByb3RvY29sc1twcm90b2NvbF07XG4gIGlmICghbmF0aXZlUHJvdG9jb2wpIHtcbiAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBuZXcgVHlwZUVycm9yKFwiVW5zdXBwb3J0ZWQgcHJvdG9jb2wgXCIgKyBwcm90b2NvbCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIElmIHNwZWNpZmllZCwgdXNlIHRoZSBhZ2VudCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm90b2NvbFxuICAvLyAoSFRUUCBhbmQgSFRUUFMgdXNlIGRpZmZlcmVudCB0eXBlcyBvZiBhZ2VudHMpXG4gIGlmICh0aGlzLl9vcHRpb25zLmFnZW50cykge1xuICAgIHZhciBzY2hlbWUgPSBwcm90b2NvbC5zbGljZSgwLCAtMSk7XG4gICAgdGhpcy5fb3B0aW9ucy5hZ2VudCA9IHRoaXMuX29wdGlvbnMuYWdlbnRzW3NjaGVtZV07XG4gIH1cblxuICAvLyBDcmVhdGUgdGhlIG5hdGl2ZSByZXF1ZXN0IGFuZCBzZXQgdXAgaXRzIGV2ZW50IGhhbmRsZXJzXG4gIHZhciByZXF1ZXN0ID0gdGhpcy5fY3VycmVudFJlcXVlc3QgPVxuICAgICAgICBuYXRpdmVQcm90b2NvbC5yZXF1ZXN0KHRoaXMuX29wdGlvbnMsIHRoaXMuX29uTmF0aXZlUmVzcG9uc2UpO1xuICByZXF1ZXN0Ll9yZWRpcmVjdGFibGUgPSB0aGlzO1xuICBmb3IgKHZhciBldmVudCBvZiBldmVudHMpIHtcbiAgICByZXF1ZXN0Lm9uKGV2ZW50LCBldmVudEhhbmRsZXJzW2V2ZW50XSk7XG4gIH1cblxuICAvLyBSRkM3MjMwwqc1LjMuMTogV2hlbiBtYWtpbmcgYSByZXF1ZXN0IGRpcmVjdGx5IHRvIGFuIG9yaWdpbiBzZXJ2ZXIsIFvigKZdXG4gIC8vIGEgY2xpZW50IE1VU1Qgc2VuZCBvbmx5IHRoZSBhYnNvbHV0ZSBwYXRoIFvigKZdIGFzIHRoZSByZXF1ZXN0LXRhcmdldC5cbiAgdGhpcy5fY3VycmVudFVybCA9IC9eXFwvLy50ZXN0KHRoaXMuX29wdGlvbnMucGF0aCkgP1xuICAgIHVybC5mb3JtYXQodGhpcy5fb3B0aW9ucykgOlxuICAgIC8vIFdoZW4gbWFraW5nIGEgcmVxdWVzdCB0byBhIHByb3h5LCBb4oCmXVxuICAgIC8vIGEgY2xpZW50IE1VU1Qgc2VuZCB0aGUgdGFyZ2V0IFVSSSBpbiBhYnNvbHV0ZS1mb3JtIFvigKZdLlxuICAgIHRoaXMuX2N1cnJlbnRVcmwgPSB0aGlzLl9vcHRpb25zLnBhdGg7XG5cbiAgLy8gRW5kIGEgcmVkaXJlY3RlZCByZXF1ZXN0XG4gIC8vIChUaGUgZmlyc3QgcmVxdWVzdCBtdXN0IGJlIGVuZGVkIGV4cGxpY2l0bHkgd2l0aCBSZWRpcmVjdGFibGVSZXF1ZXN0I2VuZClcbiAgaWYgKHRoaXMuX2lzUmVkaXJlY3QpIHtcbiAgICAvLyBXcml0ZSB0aGUgcmVxdWVzdCBlbnRpdHkgYW5kIGVuZFxuICAgIHZhciBpID0gMDtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGJ1ZmZlcnMgPSB0aGlzLl9yZXF1ZXN0Qm9keUJ1ZmZlcnM7XG4gICAgKGZ1bmN0aW9uIHdyaXRlTmV4dChlcnJvcikge1xuICAgICAgLy8gT25seSB3cml0ZSBpZiB0aGlzIHJlcXVlc3QgaGFzIG5vdCBiZWVuIHJlZGlyZWN0ZWQgeWV0XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHJlcXVlc3QgPT09IHNlbGYuX2N1cnJlbnRSZXF1ZXN0KSB7XG4gICAgICAgIC8vIFJlcG9ydCBhbnkgd3JpdGUgZXJyb3JzXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICBzZWxmLmVtaXQoXCJlcnJvclwiLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV3JpdGUgdGhlIG5leHQgYnVmZmVyIGlmIHRoZXJlIGFyZSBzdGlsbCBsZWZ0XG4gICAgICAgIGVsc2UgaWYgKGkgPCBidWZmZXJzLmxlbmd0aCkge1xuICAgICAgICAgIHZhciBidWZmZXIgPSBidWZmZXJzW2krK107XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoIXJlcXVlc3QuZmluaXNoZWQpIHtcbiAgICAgICAgICAgIHJlcXVlc3Qud3JpdGUoYnVmZmVyLmRhdGEsIGJ1ZmZlci5lbmNvZGluZywgd3JpdGVOZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRW5kIHRoZSByZXF1ZXN0IGlmIGBlbmRgIGhhcyBiZWVuIGNhbGxlZCBvbiB1c1xuICAgICAgICBlbHNlIGlmIChzZWxmLl9lbmRlZCkge1xuICAgICAgICAgIHJlcXVlc3QuZW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KCkpO1xuICB9XG59O1xuXG4vLyBQcm9jZXNzZXMgYSByZXNwb25zZSBmcm9tIHRoZSBjdXJyZW50IG5hdGl2ZSByZXF1ZXN0XG5SZWRpcmVjdGFibGVSZXF1ZXN0LnByb3RvdHlwZS5fcHJvY2Vzc1Jlc3BvbnNlID0gZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gIC8vIFN0b3JlIHRoZSByZWRpcmVjdGVkIHJlc3BvbnNlXG4gIHZhciBzdGF0dXNDb2RlID0gcmVzcG9uc2Uuc3RhdHVzQ29kZTtcbiAgaWYgKHRoaXMuX29wdGlvbnMudHJhY2tSZWRpcmVjdHMpIHtcbiAgICB0aGlzLl9yZWRpcmVjdHMucHVzaCh7XG4gICAgICB1cmw6IHRoaXMuX2N1cnJlbnRVcmwsXG4gICAgICBoZWFkZXJzOiByZXNwb25zZS5oZWFkZXJzLFxuICAgICAgc3RhdHVzQ29kZTogc3RhdHVzQ29kZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJGQzcyMzHCpzYuNDogVGhlIDN4eCAoUmVkaXJlY3Rpb24pIGNsYXNzIG9mIHN0YXR1cyBjb2RlIGluZGljYXRlc1xuICAvLyB0aGF0IGZ1cnRoZXIgYWN0aW9uIG5lZWRzIHRvIGJlIHRha2VuIGJ5IHRoZSB1c2VyIGFnZW50IGluIG9yZGVyIHRvXG4gIC8vIGZ1bGZpbGwgdGhlIHJlcXVlc3QuIElmIGEgTG9jYXRpb24gaGVhZGVyIGZpZWxkIGlzIHByb3ZpZGVkLFxuICAvLyB0aGUgdXNlciBhZ2VudCBNQVkgYXV0b21hdGljYWxseSByZWRpcmVjdCBpdHMgcmVxdWVzdCB0byB0aGUgVVJJXG4gIC8vIHJlZmVyZW5jZWQgYnkgdGhlIExvY2F0aW9uIGZpZWxkIHZhbHVlLFxuICAvLyBldmVuIGlmIHRoZSBzcGVjaWZpYyBzdGF0dXMgY29kZSBpcyBub3QgdW5kZXJzdG9vZC5cblxuICAvLyBJZiB0aGUgcmVzcG9uc2UgaXMgbm90IGEgcmVkaXJlY3Q7IHJldHVybiBpdCBhcy1pc1xuICB2YXIgbG9jYXRpb24gPSByZXNwb25zZS5oZWFkZXJzLmxvY2F0aW9uO1xuICBpZiAoIWxvY2F0aW9uIHx8IHRoaXMuX29wdGlvbnMuZm9sbG93UmVkaXJlY3RzID09PSBmYWxzZSB8fFxuICAgICAgc3RhdHVzQ29kZSA8IDMwMCB8fCBzdGF0dXNDb2RlID49IDQwMCkge1xuICAgIHJlc3BvbnNlLnJlc3BvbnNlVXJsID0gdGhpcy5fY3VycmVudFVybDtcbiAgICByZXNwb25zZS5yZWRpcmVjdHMgPSB0aGlzLl9yZWRpcmVjdHM7XG4gICAgdGhpcy5lbWl0KFwicmVzcG9uc2VcIiwgcmVzcG9uc2UpO1xuXG4gICAgLy8gQ2xlYW4gdXBcbiAgICB0aGlzLl9yZXF1ZXN0Qm9keUJ1ZmZlcnMgPSBbXTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBUaGUgcmVzcG9uc2UgaXMgYSByZWRpcmVjdCwgc28gYWJvcnQgdGhlIGN1cnJlbnQgcmVxdWVzdFxuICBhYm9ydFJlcXVlc3QodGhpcy5fY3VycmVudFJlcXVlc3QpO1xuICAvLyBEaXNjYXJkIHRoZSByZW1haW5kZXIgb2YgdGhlIHJlc3BvbnNlIHRvIGF2b2lkIHdhaXRpbmcgZm9yIGRhdGFcbiAgcmVzcG9uc2UuZGVzdHJveSgpO1xuXG4gIC8vIFJGQzcyMzHCpzYuNDogQSBjbGllbnQgU0hPVUxEIGRldGVjdCBhbmQgaW50ZXJ2ZW5lXG4gIC8vIGluIGN5Y2xpY2FsIHJlZGlyZWN0aW9ucyAoaS5lLiwgXCJpbmZpbml0ZVwiIHJlZGlyZWN0aW9uIGxvb3BzKS5cbiAgaWYgKCsrdGhpcy5fcmVkaXJlY3RDb3VudCA+IHRoaXMuX29wdGlvbnMubWF4UmVkaXJlY3RzKSB7XG4gICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgbmV3IFRvb01hbnlSZWRpcmVjdHNFcnJvcigpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBTdG9yZSB0aGUgcmVxdWVzdCBoZWFkZXJzIGlmIGFwcGxpY2FibGVcbiAgdmFyIHJlcXVlc3RIZWFkZXJzO1xuICB2YXIgYmVmb3JlUmVkaXJlY3QgPSB0aGlzLl9vcHRpb25zLmJlZm9yZVJlZGlyZWN0O1xuICBpZiAoYmVmb3JlUmVkaXJlY3QpIHtcbiAgICByZXF1ZXN0SGVhZGVycyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgLy8gVGhlIEhvc3QgaGVhZGVyIHdhcyBzZXQgYnkgbmF0aXZlUHJvdG9jb2wucmVxdWVzdFxuICAgICAgSG9zdDogcmVzcG9uc2UucmVxLmdldEhlYWRlcihcImhvc3RcIiksXG4gICAgfSwgdGhpcy5fb3B0aW9ucy5oZWFkZXJzKTtcbiAgfVxuXG4gIC8vIFJGQzcyMzHCpzYuNDogQXV0b21hdGljIHJlZGlyZWN0aW9uIG5lZWRzIHRvIGRvbmUgd2l0aFxuICAvLyBjYXJlIGZvciBtZXRob2RzIG5vdCBrbm93biB0byBiZSBzYWZlLCBb4oCmXVxuICAvLyBSRkM3MjMxwqc2LjQuMuKAkzM6IEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIGEgdXNlciBhZ2VudCBNQVkgY2hhbmdlXG4gIC8vIHRoZSByZXF1ZXN0IG1ldGhvZCBmcm9tIFBPU1QgdG8gR0VUIGZvciB0aGUgc3Vic2VxdWVudCByZXF1ZXN0LlxuICB2YXIgbWV0aG9kID0gdGhpcy5fb3B0aW9ucy5tZXRob2Q7XG4gIGlmICgoc3RhdHVzQ29kZSA9PT0gMzAxIHx8IHN0YXR1c0NvZGUgPT09IDMwMikgJiYgdGhpcy5fb3B0aW9ucy5tZXRob2QgPT09IFwiUE9TVFwiIHx8XG4gICAgICAvLyBSRkM3MjMxwqc2LjQuNDogVGhlIDMwMyAoU2VlIE90aGVyKSBzdGF0dXMgY29kZSBpbmRpY2F0ZXMgdGhhdFxuICAgICAgLy8gdGhlIHNlcnZlciBpcyByZWRpcmVjdGluZyB0aGUgdXNlciBhZ2VudCB0byBhIGRpZmZlcmVudCByZXNvdXJjZSBb4oCmXVxuICAgICAgLy8gQSB1c2VyIGFnZW50IGNhbiBwZXJmb3JtIGEgcmV0cmlldmFsIHJlcXVlc3QgdGFyZ2V0aW5nIHRoYXQgVVJJXG4gICAgICAvLyAoYSBHRVQgb3IgSEVBRCByZXF1ZXN0IGlmIHVzaW5nIEhUVFApIFvigKZdXG4gICAgICAoc3RhdHVzQ29kZSA9PT0gMzAzKSAmJiAhL14oPzpHRVR8SEVBRCkkLy50ZXN0KHRoaXMuX29wdGlvbnMubWV0aG9kKSkge1xuICAgIHRoaXMuX29wdGlvbnMubWV0aG9kID0gXCJHRVRcIjtcbiAgICAvLyBEcm9wIGEgcG9zc2libGUgZW50aXR5IGFuZCBoZWFkZXJzIHJlbGF0ZWQgdG8gaXRcbiAgICB0aGlzLl9yZXF1ZXN0Qm9keUJ1ZmZlcnMgPSBbXTtcbiAgICByZW1vdmVNYXRjaGluZ0hlYWRlcnMoL15jb250ZW50LS9pLCB0aGlzLl9vcHRpb25zLmhlYWRlcnMpO1xuICB9XG5cbiAgLy8gRHJvcCB0aGUgSG9zdCBoZWFkZXIsIGFzIHRoZSByZWRpcmVjdCBtaWdodCBsZWFkIHRvIGEgZGlmZmVyZW50IGhvc3RcbiAgdmFyIGN1cnJlbnRIb3N0SGVhZGVyID0gcmVtb3ZlTWF0Y2hpbmdIZWFkZXJzKC9eaG9zdCQvaSwgdGhpcy5fb3B0aW9ucy5oZWFkZXJzKTtcblxuICAvLyBJZiB0aGUgcmVkaXJlY3QgaXMgcmVsYXRpdmUsIGNhcnJ5IG92ZXIgdGhlIGhvc3Qgb2YgdGhlIGxhc3QgcmVxdWVzdFxuICB2YXIgY3VycmVudFVybFBhcnRzID0gdXJsLnBhcnNlKHRoaXMuX2N1cnJlbnRVcmwpO1xuICB2YXIgY3VycmVudEhvc3QgPSBjdXJyZW50SG9zdEhlYWRlciB8fCBjdXJyZW50VXJsUGFydHMuaG9zdDtcbiAgdmFyIGN1cnJlbnRVcmwgPSAvXlxcdys6Ly50ZXN0KGxvY2F0aW9uKSA/IHRoaXMuX2N1cnJlbnRVcmwgOlxuICAgIHVybC5mb3JtYXQoT2JqZWN0LmFzc2lnbihjdXJyZW50VXJsUGFydHMsIHsgaG9zdDogY3VycmVudEhvc3QgfSkpO1xuXG4gIC8vIERldGVybWluZSB0aGUgVVJMIG9mIHRoZSByZWRpcmVjdGlvblxuICB2YXIgcmVkaXJlY3RVcmw7XG4gIHRyeSB7XG4gICAgcmVkaXJlY3RVcmwgPSB1cmwucmVzb2x2ZShjdXJyZW50VXJsLCBsb2NhdGlvbik7XG4gIH1cbiAgY2F0Y2ggKGNhdXNlKSB7XG4gICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgbmV3IFJlZGlyZWN0aW9uRXJyb3IoY2F1c2UpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBDcmVhdGUgdGhlIHJlZGlyZWN0ZWQgcmVxdWVzdFxuICBkZWJ1ZyhcInJlZGlyZWN0aW5nIHRvXCIsIHJlZGlyZWN0VXJsKTtcbiAgdGhpcy5faXNSZWRpcmVjdCA9IHRydWU7XG4gIHZhciByZWRpcmVjdFVybFBhcnRzID0gdXJsLnBhcnNlKHJlZGlyZWN0VXJsKTtcbiAgT2JqZWN0LmFzc2lnbih0aGlzLl9vcHRpb25zLCByZWRpcmVjdFVybFBhcnRzKTtcblxuICAvLyBEcm9wIGNvbmZpZGVudGlhbCBoZWFkZXJzIHdoZW4gcmVkaXJlY3RpbmcgdG8gYSBsZXNzIHNlY3VyZSBwcm90b2NvbFxuICAvLyBvciB0byBhIGRpZmZlcmVudCBkb21haW4gdGhhdCBpcyBub3QgYSBzdXBlcmRvbWFpblxuICBpZiAocmVkaXJlY3RVcmxQYXJ0cy5wcm90b2NvbCAhPT0gY3VycmVudFVybFBhcnRzLnByb3RvY29sICYmXG4gICAgIHJlZGlyZWN0VXJsUGFydHMucHJvdG9jb2wgIT09IFwiaHR0cHM6XCIgfHxcbiAgICAgcmVkaXJlY3RVcmxQYXJ0cy5ob3N0ICE9PSBjdXJyZW50SG9zdCAmJlxuICAgICAhaXNTdWJkb21haW4ocmVkaXJlY3RVcmxQYXJ0cy5ob3N0LCBjdXJyZW50SG9zdCkpIHtcbiAgICByZW1vdmVNYXRjaGluZ0hlYWRlcnMoL14oPzphdXRob3JpemF0aW9ufGNvb2tpZSkkL2ksIHRoaXMuX29wdGlvbnMuaGVhZGVycyk7XG4gIH1cblxuICAvLyBFdmFsdWF0ZSB0aGUgYmVmb3JlUmVkaXJlY3QgY2FsbGJhY2tcbiAgaWYgKHR5cGVvZiBiZWZvcmVSZWRpcmVjdCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIHJlc3BvbnNlRGV0YWlscyA9IHtcbiAgICAgIGhlYWRlcnM6IHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICBzdGF0dXNDb2RlOiBzdGF0dXNDb2RlLFxuICAgIH07XG4gICAgdmFyIHJlcXVlc3REZXRhaWxzID0ge1xuICAgICAgdXJsOiBjdXJyZW50VXJsLFxuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVycyxcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICBiZWZvcmVSZWRpcmVjdCh0aGlzLl9vcHRpb25zLCByZXNwb25zZURldGFpbHMsIHJlcXVlc3REZXRhaWxzKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lbWl0KFwiZXJyb3JcIiwgZXJyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2FuaXRpemVPcHRpb25zKHRoaXMuX29wdGlvbnMpO1xuICB9XG5cbiAgLy8gUGVyZm9ybSB0aGUgcmVkaXJlY3RlZCByZXF1ZXN0XG4gIHRyeSB7XG4gICAgdGhpcy5fcGVyZm9ybVJlcXVlc3QoKTtcbiAgfVxuICBjYXRjaCAoY2F1c2UpIHtcbiAgICB0aGlzLmVtaXQoXCJlcnJvclwiLCBuZXcgUmVkaXJlY3Rpb25FcnJvcihjYXVzZSkpO1xuICB9XG59O1xuXG4vLyBXcmFwcyB0aGUga2V5L3ZhbHVlIG9iamVjdCBvZiBwcm90b2NvbHMgd2l0aCByZWRpcmVjdCBmdW5jdGlvbmFsaXR5XG5mdW5jdGlvbiB3cmFwKHByb3RvY29scykge1xuICAvLyBEZWZhdWx0IHNldHRpbmdzXG4gIHZhciBleHBvcnRzID0ge1xuICAgIG1heFJlZGlyZWN0czogMjEsXG4gICAgbWF4Qm9keUxlbmd0aDogMTAgKiAxMDI0ICogMTAyNCxcbiAgfTtcblxuICAvLyBXcmFwIGVhY2ggcHJvdG9jb2xcbiAgdmFyIG5hdGl2ZVByb3RvY29scyA9IHt9O1xuICBPYmplY3Qua2V5cyhwcm90b2NvbHMpLmZvckVhY2goZnVuY3Rpb24gKHNjaGVtZSkge1xuICAgIHZhciBwcm90b2NvbCA9IHNjaGVtZSArIFwiOlwiO1xuICAgIHZhciBuYXRpdmVQcm90b2NvbCA9IG5hdGl2ZVByb3RvY29sc1twcm90b2NvbF0gPSBwcm90b2NvbHNbc2NoZW1lXTtcbiAgICB2YXIgd3JhcHBlZFByb3RvY29sID0gZXhwb3J0c1tzY2hlbWVdID0gT2JqZWN0LmNyZWF0ZShuYXRpdmVQcm90b2NvbCk7XG5cbiAgICAvLyBFeGVjdXRlcyBhIHJlcXVlc3QsIGZvbGxvd2luZyByZWRpcmVjdHNcbiAgICBmdW5jdGlvbiByZXF1ZXN0KGlucHV0LCBvcHRpb25zLCBjYWxsYmFjaykge1xuICAgICAgLy8gUGFyc2UgcGFyYW1ldGVyc1xuICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICB2YXIgdXJsU3RyID0gaW5wdXQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaW5wdXQgPSB1cmxUb09wdGlvbnMobmV3IFVSTCh1cmxTdHIpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICBpbnB1dCA9IHVybC5wYXJzZSh1cmxTdHIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChVUkwgJiYgKGlucHV0IGluc3RhbmNlb2YgVVJMKSkge1xuICAgICAgICBpbnB1dCA9IHVybFRvT3B0aW9ucyhpbnB1dCk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgICBvcHRpb25zID0gaW5wdXQ7XG4gICAgICAgIGlucHV0ID0geyBwcm90b2NvbDogcHJvdG9jb2wgfTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCBkZWZhdWx0c1xuICAgICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBtYXhSZWRpcmVjdHM6IGV4cG9ydHMubWF4UmVkaXJlY3RzLFxuICAgICAgICBtYXhCb2R5TGVuZ3RoOiBleHBvcnRzLm1heEJvZHlMZW5ndGgsXG4gICAgICB9LCBpbnB1dCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLm5hdGl2ZVByb3RvY29scyA9IG5hdGl2ZVByb3RvY29scztcblxuICAgICAgYXNzZXJ0LmVxdWFsKG9wdGlvbnMucHJvdG9jb2wsIHByb3RvY29sLCBcInByb3RvY29sIG1pc21hdGNoXCIpO1xuICAgICAgZGVidWcoXCJvcHRpb25zXCIsIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIG5ldyBSZWRpcmVjdGFibGVSZXF1ZXN0KG9wdGlvbnMsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlcyBhIEdFVCByZXF1ZXN0LCBmb2xsb3dpbmcgcmVkaXJlY3RzXG4gICAgZnVuY3Rpb24gZ2V0KGlucHV0LCBvcHRpb25zLCBjYWxsYmFjaykge1xuICAgICAgdmFyIHdyYXBwZWRSZXF1ZXN0ID0gd3JhcHBlZFByb3RvY29sLnJlcXVlc3QoaW5wdXQsIG9wdGlvbnMsIGNhbGxiYWNrKTtcbiAgICAgIHdyYXBwZWRSZXF1ZXN0LmVuZCgpO1xuICAgICAgcmV0dXJuIHdyYXBwZWRSZXF1ZXN0O1xuICAgIH1cblxuICAgIC8vIEV4cG9zZSB0aGUgcHJvcGVydGllcyBvbiB0aGUgd3JhcHBlZCBwcm90b2NvbFxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHdyYXBwZWRQcm90b2NvbCwge1xuICAgICAgcmVxdWVzdDogeyB2YWx1ZTogcmVxdWVzdCwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9LFxuICAgICAgZ2V0OiB7IHZhbHVlOiBnZXQsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSxcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBleHBvcnRzO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gbm9vcCgpIHsgLyogZW1wdHkgKi8gfVxuXG4vLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL21hc3Rlci9saWIvaW50ZXJuYWwvdXJsLmpzXG5mdW5jdGlvbiB1cmxUb09wdGlvbnModXJsT2JqZWN0KSB7XG4gIHZhciBvcHRpb25zID0ge1xuICAgIHByb3RvY29sOiB1cmxPYmplY3QucHJvdG9jb2wsXG4gICAgaG9zdG5hbWU6IHVybE9iamVjdC5ob3N0bmFtZS5zdGFydHNXaXRoKFwiW1wiKSA/XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgdXJsT2JqZWN0Lmhvc3RuYW1lLnNsaWNlKDEsIC0xKSA6XG4gICAgICB1cmxPYmplY3QuaG9zdG5hbWUsXG4gICAgaGFzaDogdXJsT2JqZWN0Lmhhc2gsXG4gICAgc2VhcmNoOiB1cmxPYmplY3Quc2VhcmNoLFxuICAgIHBhdGhuYW1lOiB1cmxPYmplY3QucGF0aG5hbWUsXG4gICAgcGF0aDogdXJsT2JqZWN0LnBhdGhuYW1lICsgdXJsT2JqZWN0LnNlYXJjaCxcbiAgICBocmVmOiB1cmxPYmplY3QuaHJlZixcbiAgfTtcbiAgaWYgKHVybE9iamVjdC5wb3J0ICE9PSBcIlwiKSB7XG4gICAgb3B0aW9ucy5wb3J0ID0gTnVtYmVyKHVybE9iamVjdC5wb3J0KTtcbiAgfVxuICByZXR1cm4gb3B0aW9ucztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlTWF0Y2hpbmdIZWFkZXJzKHJlZ2V4LCBoZWFkZXJzKSB7XG4gIHZhciBsYXN0VmFsdWU7XG4gIGZvciAodmFyIGhlYWRlciBpbiBoZWFkZXJzKSB7XG4gICAgaWYgKHJlZ2V4LnRlc3QoaGVhZGVyKSkge1xuICAgICAgbGFzdFZhbHVlID0gaGVhZGVyc1toZWFkZXJdO1xuICAgICAgZGVsZXRlIGhlYWRlcnNbaGVhZGVyXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChsYXN0VmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIGxhc3RWYWx1ZSA9PT0gXCJ1bmRlZmluZWRcIikgP1xuICAgIHVuZGVmaW5lZCA6IFN0cmluZyhsYXN0VmFsdWUpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JUeXBlKGNvZGUsIGRlZmF1bHRNZXNzYWdlKSB7XG4gIGZ1bmN0aW9uIEN1c3RvbUVycm9yKGNhdXNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gICAgaWYgKCFjYXVzZSkge1xuICAgICAgdGhpcy5tZXNzYWdlID0gZGVmYXVsdE1lc3NhZ2U7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5tZXNzYWdlID0gZGVmYXVsdE1lc3NhZ2UgKyBcIjogXCIgKyBjYXVzZS5tZXNzYWdlO1xuICAgICAgdGhpcy5jYXVzZSA9IGNhdXNlO1xuICAgIH1cbiAgfVxuICBDdXN0b21FcnJvci5wcm90b3R5cGUgPSBuZXcgRXJyb3IoKTtcbiAgQ3VzdG9tRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ3VzdG9tRXJyb3I7XG4gIEN1c3RvbUVycm9yLnByb3RvdHlwZS5uYW1lID0gXCJFcnJvciBbXCIgKyBjb2RlICsgXCJdXCI7XG4gIEN1c3RvbUVycm9yLnByb3RvdHlwZS5jb2RlID0gY29kZTtcbiAgcmV0dXJuIEN1c3RvbUVycm9yO1xufVxuXG5mdW5jdGlvbiBhYm9ydFJlcXVlc3QocmVxdWVzdCkge1xuICBmb3IgKHZhciBldmVudCBvZiBldmVudHMpIHtcbiAgICByZXF1ZXN0LnJlbW92ZUxpc3RlbmVyKGV2ZW50LCBldmVudEhhbmRsZXJzW2V2ZW50XSk7XG4gIH1cbiAgcmVxdWVzdC5vbihcImVycm9yXCIsIG5vb3ApO1xuICByZXF1ZXN0LmFib3J0KCk7XG59XG5cbmZ1bmN0aW9uIGlzU3ViZG9tYWluKHN1YmRvbWFpbiwgZG9tYWluKSB7XG4gIGNvbnN0IGRvdCA9IHN1YmRvbWFpbi5sZW5ndGggLSBkb21haW4ubGVuZ3RoIC0gMTtcbiAgcmV0dXJuIGRvdCA+IDAgJiYgc3ViZG9tYWluW2RvdF0gPT09IFwiLlwiICYmIHN1YmRvbWFpbi5lbmRzV2l0aChkb21haW4pO1xufVxuXG4vLyBFeHBvcnRzXG5tb2R1bGUuZXhwb3J0cyA9IHdyYXAoeyBodHRwOiBodHRwLCBodHRwczogaHR0cHMgfSk7XG5tb2R1bGUuZXhwb3J0cy53cmFwID0gd3JhcDtcbiIsInZhciBDb21iaW5lZFN0cmVhbSA9IHJlcXVpcmUoJ2NvbWJpbmVkLXN0cmVhbScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xudmFyIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKTtcbnZhciBwYXJzZVVybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbnZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKS5TdHJlYW07XG52YXIgbWltZSA9IHJlcXVpcmUoJ21pbWUtdHlwZXMnKTtcbnZhciBhc3luY2tpdCA9IHJlcXVpcmUoJ2FzeW5ja2l0Jyk7XG52YXIgcG9wdWxhdGUgPSByZXF1aXJlKCcuL3BvcHVsYXRlLmpzJyk7XG5cbi8vIFB1YmxpYyBBUElcbm1vZHVsZS5leHBvcnRzID0gRm9ybURhdGE7XG5cbi8vIG1ha2UgaXQgYSBTdHJlYW1cbnV0aWwuaW5oZXJpdHMoRm9ybURhdGEsIENvbWJpbmVkU3RyZWFtKTtcblxuLyoqXG4gKiBDcmVhdGUgcmVhZGFibGUgXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIgc3RyZWFtcy5cbiAqIENhbiBiZSB1c2VkIHRvIHN1Ym1pdCBmb3Jtc1xuICogYW5kIGZpbGUgdXBsb2FkcyB0byBvdGhlciB3ZWIgYXBwbGljYXRpb25zLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBQcm9wZXJ0aWVzIHRvIGJlIGFkZGVkL292ZXJyaWRlbiBmb3IgRm9ybURhdGEgYW5kIENvbWJpbmVkU3RyZWFtXG4gKi9cbmZ1bmN0aW9uIEZvcm1EYXRhKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEZvcm1EYXRhKSkge1xuICAgIHJldHVybiBuZXcgRm9ybURhdGEob3B0aW9ucyk7XG4gIH1cblxuICB0aGlzLl9vdmVyaGVhZExlbmd0aCA9IDA7XG4gIHRoaXMuX3ZhbHVlTGVuZ3RoID0gMDtcbiAgdGhpcy5fdmFsdWVzVG9NZWFzdXJlID0gW107XG5cbiAgQ29tYmluZWRTdHJlYW0uY2FsbCh0aGlzKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgZm9yICh2YXIgb3B0aW9uIGluIG9wdGlvbnMpIHtcbiAgICB0aGlzW29wdGlvbl0gPSBvcHRpb25zW29wdGlvbl07XG4gIH1cbn1cblxuRm9ybURhdGEuTElORV9CUkVBSyA9ICdcXHJcXG4nO1xuRm9ybURhdGEuREVGQVVMVF9DT05URU5UX1RZUEUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuRm9ybURhdGEucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKGZpZWxkLCB2YWx1ZSwgb3B0aW9ucykge1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIGFsbG93IGZpbGVuYW1lIGFzIHNpbmdsZSBvcHRpb25cbiAgaWYgKHR5cGVvZiBvcHRpb25zID09ICdzdHJpbmcnKSB7XG4gICAgb3B0aW9ucyA9IHtmaWxlbmFtZTogb3B0aW9uc307XG4gIH1cblxuICB2YXIgYXBwZW5kID0gQ29tYmluZWRTdHJlYW0ucHJvdG90eXBlLmFwcGVuZC5iaW5kKHRoaXMpO1xuXG4gIC8vIGFsbCB0aGF0IHN0cmVhbXkgYnVzaW5lc3MgY2FuJ3QgaGFuZGxlIG51bWJlcnNcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHZhbHVlID0gJycgKyB2YWx1ZTtcbiAgfVxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mZWxpeGdlL25vZGUtZm9ybS1kYXRhL2lzc3Vlcy8zOFxuICBpZiAodXRpbC5pc0FycmF5KHZhbHVlKSkge1xuICAgIC8vIFBsZWFzZSBjb252ZXJ0IHlvdXIgYXJyYXkgaW50byBzdHJpbmdcbiAgICAvLyB0aGUgd2F5IHdlYiBzZXJ2ZXIgZXhwZWN0cyBpdFxuICAgIHRoaXMuX2Vycm9yKG5ldyBFcnJvcignQXJyYXlzIGFyZSBub3Qgc3VwcG9ydGVkLicpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgaGVhZGVyID0gdGhpcy5fbXVsdGlQYXJ0SGVhZGVyKGZpZWxkLCB2YWx1ZSwgb3B0aW9ucyk7XG4gIHZhciBmb290ZXIgPSB0aGlzLl9tdWx0aVBhcnRGb290ZXIoKTtcblxuICBhcHBlbmQoaGVhZGVyKTtcbiAgYXBwZW5kKHZhbHVlKTtcbiAgYXBwZW5kKGZvb3Rlcik7XG5cbiAgLy8gcGFzcyBhbG9uZyBvcHRpb25zLmtub3duTGVuZ3RoXG4gIHRoaXMuX3RyYWNrTGVuZ3RoKGhlYWRlciwgdmFsdWUsIG9wdGlvbnMpO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl90cmFja0xlbmd0aCA9IGZ1bmN0aW9uKGhlYWRlciwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHZhbHVlTGVuZ3RoID0gMDtcblxuICAvLyB1c2VkIHcvIGdldExlbmd0aFN5bmMoKSwgd2hlbiBsZW5ndGggaXMga25vd24uXG4gIC8vIGUuZy4gZm9yIHN0cmVhbWluZyBkaXJlY3RseSBmcm9tIGEgcmVtb3RlIHNlcnZlcixcbiAgLy8gdy8gYSBrbm93biBmaWxlIGEgc2l6ZSwgYW5kIG5vdCB3YW50aW5nIHRvIHdhaXQgZm9yXG4gIC8vIGluY29taW5nIGZpbGUgdG8gZmluaXNoIHRvIGdldCBpdHMgc2l6ZS5cbiAgaWYgKG9wdGlvbnMua25vd25MZW5ndGggIT0gbnVsbCkge1xuICAgIHZhbHVlTGVuZ3RoICs9ICtvcHRpb25zLmtub3duTGVuZ3RoO1xuICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWVMZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSk7XG4gIH1cblxuICB0aGlzLl92YWx1ZUxlbmd0aCArPSB2YWx1ZUxlbmd0aDtcblxuICAvLyBAY2hlY2sgd2h5IGFkZCBDUkxGPyBkb2VzIHRoaXMgYWNjb3VudCBmb3IgY3VzdG9tL211bHRpcGxlIENSTEZzP1xuICB0aGlzLl9vdmVyaGVhZExlbmd0aCArPVxuICAgIEJ1ZmZlci5ieXRlTGVuZ3RoKGhlYWRlcikgK1xuICAgIEZvcm1EYXRhLkxJTkVfQlJFQUsubGVuZ3RoO1xuXG4gIC8vIGVtcHR5IG9yIGVpdGhlciBkb2Vzbid0IGhhdmUgcGF0aCBvciBub3QgYW4gaHR0cCByZXNwb25zZSBvciBub3QgYSBzdHJlYW1cbiAgaWYgKCF2YWx1ZSB8fCAoICF2YWx1ZS5wYXRoICYmICEodmFsdWUucmVhZGFibGUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoJ2h0dHBWZXJzaW9uJykpICYmICEodmFsdWUgaW5zdGFuY2VvZiBTdHJlYW0pKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIG5vIG5lZWQgdG8gYm90aGVyIHdpdGggdGhlIGxlbmd0aFxuICBpZiAoIW9wdGlvbnMua25vd25MZW5ndGgpIHtcbiAgICB0aGlzLl92YWx1ZXNUb01lYXN1cmUucHVzaCh2YWx1ZSk7XG4gIH1cbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fbGVuZ3RoUmV0cmlldmVyID0gZnVuY3Rpb24odmFsdWUsIGNhbGxiYWNrKSB7XG5cbiAgaWYgKHZhbHVlLmhhc093blByb3BlcnR5KCdmZCcpKSB7XG5cbiAgICAvLyB0YWtlIHJlYWQgcmFuZ2UgaW50byBhIGFjY291bnRcbiAgICAvLyBgZW5kYCA9IEluZmluaXR5IOKAkz4gcmVhZCBmaWxlIHRpbGwgdGhlIGVuZFxuICAgIC8vXG4gICAgLy8gVE9ETzogTG9va3MgbGlrZSB0aGVyZSBpcyBidWcgaW4gTm9kZSBmcy5jcmVhdGVSZWFkU3RyZWFtXG4gICAgLy8gaXQgZG9lc24ndCByZXNwZWN0IGBlbmRgIG9wdGlvbnMgd2l0aG91dCBgc3RhcnRgIG9wdGlvbnNcbiAgICAvLyBGaXggaXQgd2hlbiBub2RlIGZpeGVzIGl0LlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qb3llbnQvbm9kZS9pc3N1ZXMvNzgxOVxuICAgIGlmICh2YWx1ZS5lbmQgIT0gdW5kZWZpbmVkICYmIHZhbHVlLmVuZCAhPSBJbmZpbml0eSAmJiB2YWx1ZS5zdGFydCAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgLy8gd2hlbiBlbmQgc3BlY2lmaWVkXG4gICAgICAvLyBubyBuZWVkIHRvIGNhbGN1bGF0ZSByYW5nZVxuICAgICAgLy8gaW5jbHVzaXZlLCBzdGFydHMgd2l0aCAwXG4gICAgICBjYWxsYmFjayhudWxsLCB2YWx1ZS5lbmQgKyAxIC0gKHZhbHVlLnN0YXJ0ID8gdmFsdWUuc3RhcnQgOiAwKSk7XG5cbiAgICAvLyBub3QgdGhhdCBmYXN0IHNub29weVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzdGlsbCBuZWVkIHRvIGZldGNoIGZpbGUgc2l6ZSBmcm9tIGZzXG4gICAgICBmcy5zdGF0KHZhbHVlLnBhdGgsIGZ1bmN0aW9uKGVyciwgc3RhdCkge1xuXG4gICAgICAgIHZhciBmaWxlU2l6ZTtcblxuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1cGRhdGUgZmluYWwgc2l6ZSBiYXNlZCBvbiB0aGUgcmFuZ2Ugb3B0aW9uc1xuICAgICAgICBmaWxlU2l6ZSA9IHN0YXQuc2l6ZSAtICh2YWx1ZS5zdGFydCA/IHZhbHVlLnN0YXJ0IDogMCk7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGZpbGVTaXplKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAvLyBvciBodHRwIHJlc3BvbnNlXG4gIH0gZWxzZSBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ2h0dHBWZXJzaW9uJykpIHtcbiAgICBjYWxsYmFjayhudWxsLCArdmFsdWUuaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSk7XG5cbiAgLy8gb3IgcmVxdWVzdCBzdHJlYW0gaHR0cDovL2dpdGh1Yi5jb20vbWlrZWFsL3JlcXVlc3RcbiAgfSBlbHNlIGlmICh2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnaHR0cE1vZHVsZScpKSB7XG4gICAgLy8gd2FpdCB0aWxsIHJlc3BvbnNlIGNvbWUgYmFja1xuICAgIHZhbHVlLm9uKCdyZXNwb25zZScsIGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICB2YWx1ZS5wYXVzZSgpO1xuICAgICAgY2FsbGJhY2sobnVsbCwgK3Jlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtbGVuZ3RoJ10pO1xuICAgIH0pO1xuICAgIHZhbHVlLnJlc3VtZSgpO1xuXG4gIC8vIHNvbWV0aGluZyBlbHNlXG4gIH0gZWxzZSB7XG4gICAgY2FsbGJhY2soJ1Vua25vd24gc3RyZWFtJyk7XG4gIH1cbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fbXVsdGlQYXJ0SGVhZGVyID0gZnVuY3Rpb24oZmllbGQsIHZhbHVlLCBvcHRpb25zKSB7XG4gIC8vIGN1c3RvbSBoZWFkZXIgc3BlY2lmaWVkIChhcyBzdHJpbmcpP1xuICAvLyBpdCBiZWNvbWVzIHJlc3BvbnNpYmxlIGZvciBib3VuZGFyeVxuICAvLyAoZS5nLiB0byBoYW5kbGUgZXh0cmEgQ1JMRnMgb24gLk5FVCBzZXJ2ZXJzKVxuICBpZiAodHlwZW9mIG9wdGlvbnMuaGVhZGVyID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuaGVhZGVyO1xuICB9XG5cbiAgdmFyIGNvbnRlbnREaXNwb3NpdGlvbiA9IHRoaXMuX2dldENvbnRlbnREaXNwb3NpdGlvbih2YWx1ZSwgb3B0aW9ucyk7XG4gIHZhciBjb250ZW50VHlwZSA9IHRoaXMuX2dldENvbnRlbnRUeXBlKHZhbHVlLCBvcHRpb25zKTtcblxuICB2YXIgY29udGVudHMgPSAnJztcbiAgdmFyIGhlYWRlcnMgID0ge1xuICAgIC8vIGFkZCBjdXN0b20gZGlzcG9zaXRpb24gYXMgdGhpcmQgZWxlbWVudCBvciBrZWVwIGl0IHR3byBlbGVtZW50cyBpZiBub3RcbiAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IFsnZm9ybS1kYXRhJywgJ25hbWU9XCInICsgZmllbGQgKyAnXCInXS5jb25jYXQoY29udGVudERpc3Bvc2l0aW9uIHx8IFtdKSxcbiAgICAvLyBpZiBubyBjb250ZW50IHR5cGUuIGFsbG93IGl0IHRvIGJlIGVtcHR5IGFycmF5XG4gICAgJ0NvbnRlbnQtVHlwZSc6IFtdLmNvbmNhdChjb250ZW50VHlwZSB8fCBbXSlcbiAgfTtcblxuICAvLyBhbGxvdyBjdXN0b20gaGVhZGVycy5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmhlYWRlciA9PSAnb2JqZWN0Jykge1xuICAgIHBvcHVsYXRlKGhlYWRlcnMsIG9wdGlvbnMuaGVhZGVyKTtcbiAgfVxuXG4gIHZhciBoZWFkZXI7XG4gIGZvciAodmFyIHByb3AgaW4gaGVhZGVycykge1xuICAgIGlmICghaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgY29udGludWU7XG4gICAgaGVhZGVyID0gaGVhZGVyc1twcm9wXTtcblxuICAgIC8vIHNraXAgbnVsbGlzaCBoZWFkZXJzLlxuICAgIGlmIChoZWFkZXIgPT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBhbGwgaGVhZGVycyB0byBhcnJheXMuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGhlYWRlcikpIHtcbiAgICAgIGhlYWRlciA9IFtoZWFkZXJdO1xuICAgIH1cblxuICAgIC8vIGFkZCBub24tZW1wdHkgaGVhZGVycy5cbiAgICBpZiAoaGVhZGVyLmxlbmd0aCkge1xuICAgICAgY29udGVudHMgKz0gcHJvcCArICc6ICcgKyBoZWFkZXIuam9pbignOyAnKSArIEZvcm1EYXRhLkxJTkVfQlJFQUs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICctLScgKyB0aGlzLmdldEJvdW5kYXJ5KCkgKyBGb3JtRGF0YS5MSU5FX0JSRUFLICsgY29udGVudHMgKyBGb3JtRGF0YS5MSU5FX0JSRUFLO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl9nZXRDb250ZW50RGlzcG9zaXRpb24gPSBmdW5jdGlvbih2YWx1ZSwgb3B0aW9ucykge1xuXG4gIHZhciBmaWxlbmFtZVxuICAgICwgY29udGVudERpc3Bvc2l0aW9uXG4gICAgO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5maWxlcGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBjdXN0b20gZmlsZXBhdGggZm9yIHJlbGF0aXZlIHBhdGhzXG4gICAgZmlsZW5hbWUgPSBwYXRoLm5vcm1hbGl6ZShvcHRpb25zLmZpbGVwYXRoKS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5maWxlbmFtZSB8fCB2YWx1ZS5uYW1lIHx8IHZhbHVlLnBhdGgpIHtcbiAgICAvLyBjdXN0b20gZmlsZW5hbWUgdGFrZSBwcmVjZWRlbmNlXG4gICAgLy8gZm9ybWlkYWJsZSBhbmQgdGhlIGJyb3dzZXIgYWRkIGEgbmFtZSBwcm9wZXJ0eVxuICAgIC8vIGZzLSBhbmQgcmVxdWVzdC0gc3RyZWFtcyBoYXZlIHBhdGggcHJvcGVydHlcbiAgICBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUob3B0aW9ucy5maWxlbmFtZSB8fCB2YWx1ZS5uYW1lIHx8IHZhbHVlLnBhdGgpO1xuICB9IGVsc2UgaWYgKHZhbHVlLnJlYWRhYmxlICYmIHZhbHVlLmhhc093blByb3BlcnR5KCdodHRwVmVyc2lvbicpKSB7XG4gICAgLy8gb3IgdHJ5IGh0dHAgcmVzcG9uc2VcbiAgICBmaWxlbmFtZSA9IHBhdGguYmFzZW5hbWUodmFsdWUuY2xpZW50Ll9odHRwTWVzc2FnZS5wYXRoIHx8ICcnKTtcbiAgfVxuXG4gIGlmIChmaWxlbmFtZSkge1xuICAgIGNvbnRlbnREaXNwb3NpdGlvbiA9ICdmaWxlbmFtZT1cIicgKyBmaWxlbmFtZSArICdcIic7XG4gIH1cblxuICByZXR1cm4gY29udGVudERpc3Bvc2l0aW9uO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl9nZXRDb250ZW50VHlwZSA9IGZ1bmN0aW9uKHZhbHVlLCBvcHRpb25zKSB7XG5cbiAgLy8gdXNlIGN1c3RvbSBjb250ZW50LXR5cGUgYWJvdmUgYWxsXG4gIHZhciBjb250ZW50VHlwZSA9IG9wdGlvbnMuY29udGVudFR5cGU7XG5cbiAgLy8gb3IgdHJ5IGBuYW1lYCBmcm9tIGZvcm1pZGFibGUsIGJyb3dzZXJcbiAgaWYgKCFjb250ZW50VHlwZSAmJiB2YWx1ZS5uYW1lKSB7XG4gICAgY29udGVudFR5cGUgPSBtaW1lLmxvb2t1cCh2YWx1ZS5uYW1lKTtcbiAgfVxuXG4gIC8vIG9yIHRyeSBgcGF0aGAgZnJvbSBmcy0sIHJlcXVlc3QtIHN0cmVhbXNcbiAgaWYgKCFjb250ZW50VHlwZSAmJiB2YWx1ZS5wYXRoKSB7XG4gICAgY29udGVudFR5cGUgPSBtaW1lLmxvb2t1cCh2YWx1ZS5wYXRoKTtcbiAgfVxuXG4gIC8vIG9yIGlmIGl0J3MgaHR0cC1yZXBvbnNlXG4gIGlmICghY29udGVudFR5cGUgJiYgdmFsdWUucmVhZGFibGUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoJ2h0dHBWZXJzaW9uJykpIHtcbiAgICBjb250ZW50VHlwZSA9IHZhbHVlLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddO1xuICB9XG5cbiAgLy8gb3IgZ3Vlc3MgaXQgZnJvbSB0aGUgZmlsZXBhdGggb3IgZmlsZW5hbWVcbiAgaWYgKCFjb250ZW50VHlwZSAmJiAob3B0aW9ucy5maWxlcGF0aCB8fCBvcHRpb25zLmZpbGVuYW1lKSkge1xuICAgIGNvbnRlbnRUeXBlID0gbWltZS5sb29rdXAob3B0aW9ucy5maWxlcGF0aCB8fCBvcHRpb25zLmZpbGVuYW1lKTtcbiAgfVxuXG4gIC8vIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBpZiBgdmFsdWVgIGlzIG5vdCBzaW1wbGUgdmFsdWVcbiAgaWYgKCFjb250ZW50VHlwZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICBjb250ZW50VHlwZSA9IEZvcm1EYXRhLkRFRkFVTFRfQ09OVEVOVF9UWVBFO1xuICB9XG5cbiAgcmV0dXJuIGNvbnRlbnRUeXBlO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLl9tdWx0aVBhcnRGb290ZXIgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG5leHQpIHtcbiAgICB2YXIgZm9vdGVyID0gRm9ybURhdGEuTElORV9CUkVBSztcblxuICAgIHZhciBsYXN0UGFydCA9ICh0aGlzLl9zdHJlYW1zLmxlbmd0aCA9PT0gMCk7XG4gICAgaWYgKGxhc3RQYXJ0KSB7XG4gICAgICBmb290ZXIgKz0gdGhpcy5fbGFzdEJvdW5kYXJ5KCk7XG4gICAgfVxuXG4gICAgbmV4dChmb290ZXIpO1xuICB9LmJpbmQodGhpcyk7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuX2xhc3RCb3VuZGFyeSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gJy0tJyArIHRoaXMuZ2V0Qm91bmRhcnkoKSArICctLScgKyBGb3JtRGF0YS5MSU5FX0JSRUFLO1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLmdldEhlYWRlcnMgPSBmdW5jdGlvbih1c2VySGVhZGVycykge1xuICB2YXIgaGVhZGVyO1xuICB2YXIgZm9ybUhlYWRlcnMgPSB7XG4gICAgJ2NvbnRlbnQtdHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0nICsgdGhpcy5nZXRCb3VuZGFyeSgpXG4gIH07XG5cbiAgZm9yIChoZWFkZXIgaW4gdXNlckhlYWRlcnMpIHtcbiAgICBpZiAodXNlckhlYWRlcnMuaGFzT3duUHJvcGVydHkoaGVhZGVyKSkge1xuICAgICAgZm9ybUhlYWRlcnNbaGVhZGVyLnRvTG93ZXJDYXNlKCldID0gdXNlckhlYWRlcnNbaGVhZGVyXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZm9ybUhlYWRlcnM7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuc2V0Qm91bmRhcnkgPSBmdW5jdGlvbihib3VuZGFyeSkge1xuICB0aGlzLl9ib3VuZGFyeSA9IGJvdW5kYXJ5O1xufTtcblxuRm9ybURhdGEucHJvdG90eXBlLmdldEJvdW5kYXJ5ID0gZnVuY3Rpb24oKSB7XG4gIGlmICghdGhpcy5fYm91bmRhcnkpIHtcbiAgICB0aGlzLl9nZW5lcmF0ZUJvdW5kYXJ5KCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fYm91bmRhcnk7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBkYXRhQnVmZmVyID0gbmV3IEJ1ZmZlci5hbGxvYyggMCApO1xuICB2YXIgYm91bmRhcnkgPSB0aGlzLmdldEJvdW5kYXJ5KCk7XG5cbiAgLy8gQ3JlYXRlIHRoZSBmb3JtIGNvbnRlbnQuIEFkZCBMaW5lIGJyZWFrcyB0byB0aGUgZW5kIG9mIGRhdGEuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLl9zdHJlYW1zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9zdHJlYW1zW2ldICE9PSAnZnVuY3Rpb24nKSB7XG5cbiAgICAgIC8vIEFkZCBjb250ZW50IHRvIHRoZSBidWZmZXIuXG4gICAgICBpZihCdWZmZXIuaXNCdWZmZXIodGhpcy5fc3RyZWFtc1tpXSkpIHtcbiAgICAgICAgZGF0YUJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoIFtkYXRhQnVmZmVyLCB0aGlzLl9zdHJlYW1zW2ldXSk7XG4gICAgICB9ZWxzZSB7XG4gICAgICAgIGRhdGFCdWZmZXIgPSBCdWZmZXIuY29uY2F0KCBbZGF0YUJ1ZmZlciwgQnVmZmVyLmZyb20odGhpcy5fc3RyZWFtc1tpXSldKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGJyZWFrIGFmdGVyIGNvbnRlbnQuXG4gICAgICBpZiAodHlwZW9mIHRoaXMuX3N0cmVhbXNbaV0gIT09ICdzdHJpbmcnIHx8IHRoaXMuX3N0cmVhbXNbaV0uc3Vic3RyaW5nKCAyLCBib3VuZGFyeS5sZW5ndGggKyAyICkgIT09IGJvdW5kYXJ5KSB7XG4gICAgICAgIGRhdGFCdWZmZXIgPSBCdWZmZXIuY29uY2F0KCBbZGF0YUJ1ZmZlciwgQnVmZmVyLmZyb20oRm9ybURhdGEuTElORV9CUkVBSyldICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHRoZSBmb290ZXIgYW5kIHJldHVybiB0aGUgQnVmZmVyIG9iamVjdC5cbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoIFtkYXRhQnVmZmVyLCBCdWZmZXIuZnJvbSh0aGlzLl9sYXN0Qm91bmRhcnkoKSldICk7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuX2dlbmVyYXRlQm91bmRhcnkgPSBmdW5jdGlvbigpIHtcbiAgLy8gVGhpcyBnZW5lcmF0ZXMgYSA1MCBjaGFyYWN0ZXIgYm91bmRhcnkgc2ltaWxhciB0byB0aG9zZSB1c2VkIGJ5IEZpcmVmb3guXG4gIC8vIFRoZXkgYXJlIG9wdGltaXplZCBmb3IgYm95ZXItbW9vcmUgcGFyc2luZy5cbiAgdmFyIGJvdW5kYXJ5ID0gJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNDsgaSsrKSB7XG4gICAgYm91bmRhcnkgKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApLnRvU3RyaW5nKDE2KTtcbiAgfVxuXG4gIHRoaXMuX2JvdW5kYXJ5ID0gYm91bmRhcnk7XG59O1xuXG4vLyBOb3RlOiBnZXRMZW5ndGhTeW5jIERPRVNOJ1QgY2FsY3VsYXRlIHN0cmVhbXMgbGVuZ3RoXG4vLyBBcyB3b3JrYXJvdW5kIG9uZSBjYW4gY2FsY3VsYXRlIGZpbGUgc2l6ZSBtYW51YWxseVxuLy8gYW5kIGFkZCBpdCBhcyBrbm93bkxlbmd0aCBvcHRpb25cbkZvcm1EYXRhLnByb3RvdHlwZS5nZXRMZW5ndGhTeW5jID0gZnVuY3Rpb24oKSB7XG4gIHZhciBrbm93bkxlbmd0aCA9IHRoaXMuX292ZXJoZWFkTGVuZ3RoICsgdGhpcy5fdmFsdWVMZW5ndGg7XG5cbiAgLy8gRG9uJ3QgZ2V0IGNvbmZ1c2VkLCB0aGVyZSBhcmUgMyBcImludGVybmFsXCIgc3RyZWFtcyBmb3IgZWFjaCBrZXl2YWwgcGFpclxuICAvLyBzbyBpdCBiYXNpY2FsbHkgY2hlY2tzIGlmIHRoZXJlIGlzIGFueSB2YWx1ZSBhZGRlZCB0byB0aGUgZm9ybVxuICBpZiAodGhpcy5fc3RyZWFtcy5sZW5ndGgpIHtcbiAgICBrbm93bkxlbmd0aCArPSB0aGlzLl9sYXN0Qm91bmRhcnkoKS5sZW5ndGg7XG4gIH1cblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm9ybS1kYXRhL2Zvcm0tZGF0YS9pc3N1ZXMvNDBcbiAgaWYgKCF0aGlzLmhhc0tub3duTGVuZ3RoKCkpIHtcbiAgICAvLyBTb21lIGFzeW5jIGxlbmd0aCByZXRyaWV2ZXJzIGFyZSBwcmVzZW50XG4gICAgLy8gdGhlcmVmb3JlIHN5bmNocm9ub3VzIGxlbmd0aCBjYWxjdWxhdGlvbiBpcyBmYWxzZS5cbiAgICAvLyBQbGVhc2UgdXNlIGdldExlbmd0aChjYWxsYmFjaykgdG8gZ2V0IHByb3BlciBsZW5ndGhcbiAgICB0aGlzLl9lcnJvcihuZXcgRXJyb3IoJ0Nhbm5vdCBjYWxjdWxhdGUgcHJvcGVyIGxlbmd0aCBpbiBzeW5jaHJvbm91cyB3YXkuJykpO1xuICB9XG5cbiAgcmV0dXJuIGtub3duTGVuZ3RoO1xufTtcblxuLy8gUHVibGljIEFQSSB0byBjaGVjayBpZiBsZW5ndGggb2YgYWRkZWQgdmFsdWVzIGlzIGtub3duXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZm9ybS1kYXRhL2Zvcm0tZGF0YS9pc3N1ZXMvMTk2XG4vLyBodHRwczovL2dpdGh1Yi5jb20vZm9ybS1kYXRhL2Zvcm0tZGF0YS9pc3N1ZXMvMjYyXG5Gb3JtRGF0YS5wcm90b3R5cGUuaGFzS25vd25MZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgdmFyIGhhc0tub3duTGVuZ3RoID0gdHJ1ZTtcblxuICBpZiAodGhpcy5fdmFsdWVzVG9NZWFzdXJlLmxlbmd0aCkge1xuICAgIGhhc0tub3duTGVuZ3RoID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gaGFzS25vd25MZW5ndGg7XG59O1xuXG5Gb3JtRGF0YS5wcm90b3R5cGUuZ2V0TGVuZ3RoID0gZnVuY3Rpb24oY2IpIHtcbiAgdmFyIGtub3duTGVuZ3RoID0gdGhpcy5fb3ZlcmhlYWRMZW5ndGggKyB0aGlzLl92YWx1ZUxlbmd0aDtcblxuICBpZiAodGhpcy5fc3RyZWFtcy5sZW5ndGgpIHtcbiAgICBrbm93bkxlbmd0aCArPSB0aGlzLl9sYXN0Qm91bmRhcnkoKS5sZW5ndGg7XG4gIH1cblxuICBpZiAoIXRoaXMuX3ZhbHVlc1RvTWVhc3VyZS5sZW5ndGgpIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNiLmJpbmQodGhpcywgbnVsbCwga25vd25MZW5ndGgpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBhc3luY2tpdC5wYXJhbGxlbCh0aGlzLl92YWx1ZXNUb01lYXN1cmUsIHRoaXMuX2xlbmd0aFJldHJpZXZlciwgZnVuY3Rpb24oZXJyLCB2YWx1ZXMpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjYihlcnIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGxlbmd0aCkge1xuICAgICAga25vd25MZW5ndGggKz0gbGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgY2IobnVsbCwga25vd25MZW5ndGgpO1xuICB9KTtcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5zdWJtaXQgPSBmdW5jdGlvbihwYXJhbXMsIGNiKSB7XG4gIHZhciByZXF1ZXN0XG4gICAgLCBvcHRpb25zXG4gICAgLCBkZWZhdWx0cyA9IHttZXRob2Q6ICdwb3N0J31cbiAgICA7XG5cbiAgLy8gcGFyc2UgcHJvdmlkZWQgdXJsIGlmIGl0J3Mgc3RyaW5nXG4gIC8vIG9yIHRyZWF0IGl0IGFzIG9wdGlvbnMgb2JqZWN0XG4gIGlmICh0eXBlb2YgcGFyYW1zID09ICdzdHJpbmcnKSB7XG5cbiAgICBwYXJhbXMgPSBwYXJzZVVybChwYXJhbXMpO1xuICAgIG9wdGlvbnMgPSBwb3B1bGF0ZSh7XG4gICAgICBwb3J0OiBwYXJhbXMucG9ydCxcbiAgICAgIHBhdGg6IHBhcmFtcy5wYXRobmFtZSxcbiAgICAgIGhvc3Q6IHBhcmFtcy5ob3N0bmFtZSxcbiAgICAgIHByb3RvY29sOiBwYXJhbXMucHJvdG9jb2xcbiAgICB9LCBkZWZhdWx0cyk7XG5cbiAgLy8gdXNlIGN1c3RvbSBwYXJhbXNcbiAgfSBlbHNlIHtcblxuICAgIG9wdGlvbnMgPSBwb3B1bGF0ZShwYXJhbXMsIGRlZmF1bHRzKTtcbiAgICAvLyBpZiBubyBwb3J0IHByb3ZpZGVkIHVzZSBkZWZhdWx0IG9uZVxuICAgIGlmICghb3B0aW9ucy5wb3J0KSB7XG4gICAgICBvcHRpb25zLnBvcnQgPSBvcHRpb25zLnByb3RvY29sID09ICdodHRwczonID8gNDQzIDogODA7XG4gICAgfVxuICB9XG5cbiAgLy8gcHV0IHRoYXQgZ29vZCBjb2RlIGluIGdldEhlYWRlcnMgdG8gc29tZSB1c2VcbiAgb3B0aW9ucy5oZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKHBhcmFtcy5oZWFkZXJzKTtcblxuICAvLyBodHRwcyBpZiBzcGVjaWZpZWQsIGZhbGxiYWNrIHRvIGh0dHAgaW4gYW55IG90aGVyIGNhc2VcbiAgaWYgKG9wdGlvbnMucHJvdG9jb2wgPT0gJ2h0dHBzOicpIHtcbiAgICByZXF1ZXN0ID0gaHR0cHMucmVxdWVzdChvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXF1ZXN0ID0gaHR0cC5yZXF1ZXN0KG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gZ2V0IGNvbnRlbnQgbGVuZ3RoIGFuZCBmaXJlIGF3YXlcbiAgdGhpcy5nZXRMZW5ndGgoZnVuY3Rpb24oZXJyLCBsZW5ndGgpIHtcbiAgICBpZiAoZXJyICYmIGVyciAhPT0gJ1Vua25vd24gc3RyZWFtJykge1xuICAgICAgdGhpcy5fZXJyb3IoZXJyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBhZGQgY29udGVudCBsZW5ndGhcbiAgICBpZiAobGVuZ3RoKSB7XG4gICAgICByZXF1ZXN0LnNldEhlYWRlcignQ29udGVudC1MZW5ndGgnLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIHRoaXMucGlwZShyZXF1ZXN0KTtcbiAgICBpZiAoY2IpIHtcbiAgICAgIHZhciBvblJlc3BvbnNlO1xuXG4gICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyb3IsIHJlc3BvbmNlKSB7XG4gICAgICAgIHJlcXVlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgY2FsbGJhY2spO1xuICAgICAgICByZXF1ZXN0LnJlbW92ZUxpc3RlbmVyKCdyZXNwb25zZScsIG9uUmVzcG9uc2UpO1xuXG4gICAgICAgIHJldHVybiBjYi5jYWxsKHRoaXMsIGVycm9yLCByZXNwb25jZSk7XG4gICAgICB9O1xuXG4gICAgICBvblJlc3BvbnNlID0gY2FsbGJhY2suYmluZCh0aGlzLCBudWxsKTtcblxuICAgICAgcmVxdWVzdC5vbignZXJyb3InLCBjYWxsYmFjayk7XG4gICAgICByZXF1ZXN0Lm9uKCdyZXNwb25zZScsIG9uUmVzcG9uc2UpO1xuICAgIH1cbiAgfS5iaW5kKHRoaXMpKTtcblxuICByZXR1cm4gcmVxdWVzdDtcbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS5fZXJyb3IgPSBmdW5jdGlvbihlcnIpIHtcbiAgaWYgKCF0aGlzLmVycm9yKSB7XG4gICAgdGhpcy5lcnJvciA9IGVycjtcbiAgICB0aGlzLnBhdXNlKCk7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7XG4gIH1cbn07XG5cbkZvcm1EYXRhLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICdbb2JqZWN0IEZvcm1EYXRhXSc7XG59O1xuIiwiLy8gcG9wdWxhdGVzIG1pc3NpbmcgdmFsdWVzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGRzdCwgc3JjKSB7XG5cbiAgT2JqZWN0LmtleXMoc3JjKS5mb3JFYWNoKGZ1bmN0aW9uKHByb3ApXG4gIHtcbiAgICBkc3RbcHJvcF0gPSBkc3RbcHJvcF0gfHwgc3JjW3Byb3BdO1xuICB9KTtcblxuICByZXR1cm4gZHN0O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gKGZsYWcsIGFyZ3YpID0+IHtcblx0YXJndiA9IGFyZ3YgfHwgcHJvY2Vzcy5hcmd2O1xuXHRjb25zdCBwcmVmaXggPSBmbGFnLnN0YXJ0c1dpdGgoJy0nKSA/ICcnIDogKGZsYWcubGVuZ3RoID09PSAxID8gJy0nIDogJy0tJyk7XG5cdGNvbnN0IHBvcyA9IGFyZ3YuaW5kZXhPZihwcmVmaXggKyBmbGFnKTtcblx0Y29uc3QgdGVybWluYXRvclBvcyA9IGFyZ3YuaW5kZXhPZignLS0nKTtcblx0cmV0dXJuIHBvcyAhPT0gLTEgJiYgKHRlcm1pbmF0b3JQb3MgPT09IC0xID8gdHJ1ZSA6IHBvcyA8IHRlcm1pbmF0b3JQb3MpO1xufTtcbiIsInZhciBqc29uX3N0cmluZ2lmeSA9IHJlcXVpcmUoJy4vbGliL3N0cmluZ2lmeS5qcycpLnN0cmluZ2lmeTtcbnZhciBqc29uX3BhcnNlICAgICA9IHJlcXVpcmUoJy4vbGliL3BhcnNlLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiAge1xuICAgICAgICBwYXJzZToganNvbl9wYXJzZShvcHRpb25zKSxcbiAgICAgICAgc3RyaW5naWZ5OiBqc29uX3N0cmluZ2lmeVxuICAgIH1cbn07XG4vL2NyZWF0ZSB0aGUgZGVmYXVsdCBtZXRob2QgbWVtYmVycyB3aXRoIG5vIG9wdGlvbnMgYXBwbGllZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbm1vZHVsZS5leHBvcnRzLnBhcnNlID0ganNvbl9wYXJzZSgpO1xubW9kdWxlLmV4cG9ydHMuc3RyaW5naWZ5ID0ganNvbl9zdHJpbmdpZnk7XG4iLCJ2YXIgQmlnTnVtYmVyID0gbnVsbDtcblxuLy8gcmVnZXhweHMgZXh0cmFjdGVkIGZyb21cbi8vIChjKSBCU0QtMy1DbGF1c2Vcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0aWZ5L3NlY3VyZS1qc29uLXBhcnNlL2dyYXBocy9jb250cmlidXRvcnMgYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXBpanMvYm91cm5lL2dyYXBocy9jb250cmlidXRvcnNcblxuY29uc3Qgc3VzcGVjdFByb3RvUnggPSAvKD86X3xcXFxcdTAwNVtGZl0pKD86X3xcXFxcdTAwNVtGZl0pKD86cHxcXFxcdTAwNzApKD86cnxcXFxcdTAwNzIpKD86b3xcXFxcdTAwNltGZl0pKD86dHxcXFxcdTAwNzQpKD86b3xcXFxcdTAwNltGZl0pKD86X3xcXFxcdTAwNVtGZl0pKD86X3xcXFxcdTAwNVtGZl0pLztcbmNvbnN0IHN1c3BlY3RDb25zdHJ1Y3RvclJ4ID0gLyg/OmN8XFxcXHUwMDYzKSg/Om98XFxcXHUwMDZbRmZdKSg/Om58XFxcXHUwMDZbRWVdKSg/OnN8XFxcXHUwMDczKSg/OnR8XFxcXHUwMDc0KSg/OnJ8XFxcXHUwMDcyKSg/OnV8XFxcXHUwMDc1KSg/OmN8XFxcXHUwMDYzKSg/OnR8XFxcXHUwMDc0KSg/Om98XFxcXHUwMDZbRmZdKSg/OnJ8XFxcXHUwMDcyKS87XG5cbi8qXG4gICAganNvbl9wYXJzZS5qc1xuICAgIDIwMTItMDYtMjBcblxuICAgIFB1YmxpYyBEb21haW4uXG5cbiAgICBOTyBXQVJSQU5UWSBFWFBSRVNTRUQgT1IgSU1QTElFRC4gVVNFIEFUIFlPVVIgT1dOIFJJU0suXG5cbiAgICBUaGlzIGZpbGUgY3JlYXRlcyBhIGpzb25fcGFyc2UgZnVuY3Rpb24uXG4gICAgRHVyaW5nIGNyZWF0ZSB5b3UgY2FuIChvcHRpb25hbGx5KSBzcGVjaWZ5IHNvbWUgYmVoYXZpb3VyYWwgc3dpdGNoZXNcblxuICAgICAgICByZXF1aXJlKCdqc29uLWJpZ2ludCcpKG9wdGlvbnMpXG5cbiAgICAgICAgICAgIFRoZSBvcHRpb25hbCBvcHRpb25zIHBhcmFtZXRlciBob2xkcyBzd2l0Y2hlcyB0aGF0IGRyaXZlIGNlcnRhaW5cbiAgICAgICAgICAgIGFzcGVjdHMgb2YgdGhlIHBhcnNpbmcgcHJvY2VzczpcbiAgICAgICAgICAgICogb3B0aW9ucy5zdHJpY3QgPSB0cnVlIHdpbGwgd2FybiBhYm91dCBkdXBsaWNhdGUta2V5IHVzYWdlIGluIHRoZSBqc29uLlxuICAgICAgICAgICAgICBUaGUgZGVmYXVsdCAoc3RyaWN0ID0gZmFsc2UpIHdpbGwgc2lsZW50bHkgaWdub3JlIHRob3NlIGFuZCBvdmVyd3JpdGVcbiAgICAgICAgICAgICAgdmFsdWVzIGZvciBrZXlzIHRoYXQgYXJlIGluIGR1cGxpY2F0ZSB1c2UuXG5cbiAgICBUaGUgcmVzdWx0aW5nIGZ1bmN0aW9uIGZvbGxvd3MgdGhpcyBzaWduYXR1cmU6XG4gICAgICAgIGpzb25fcGFyc2UodGV4dCwgcmV2aXZlcilcbiAgICAgICAgICAgIFRoaXMgbWV0aG9kIHBhcnNlcyBhIEpTT04gdGV4dCB0byBwcm9kdWNlIGFuIG9iamVjdCBvciBhcnJheS5cbiAgICAgICAgICAgIEl0IGNhbiB0aHJvdyBhIFN5bnRheEVycm9yIGV4Y2VwdGlvbi5cblxuICAgICAgICAgICAgVGhlIG9wdGlvbmFsIHJldml2ZXIgcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhhdCBjYW4gZmlsdGVyIGFuZFxuICAgICAgICAgICAgdHJhbnNmb3JtIHRoZSByZXN1bHRzLiBJdCByZWNlaXZlcyBlYWNoIG9mIHRoZSBrZXlzIGFuZCB2YWx1ZXMsXG4gICAgICAgICAgICBhbmQgaXRzIHJldHVybiB2YWx1ZSBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIHZhbHVlLlxuICAgICAgICAgICAgSWYgaXQgcmV0dXJucyB3aGF0IGl0IHJlY2VpdmVkLCB0aGVuIHRoZSBzdHJ1Y3R1cmUgaXMgbm90IG1vZGlmaWVkLlxuICAgICAgICAgICAgSWYgaXQgcmV0dXJucyB1bmRlZmluZWQgdGhlbiB0aGUgbWVtYmVyIGlzIGRlbGV0ZWQuXG5cbiAgICAgICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAgICAgIC8vIFBhcnNlIHRoZSB0ZXh0LiBWYWx1ZXMgdGhhdCBsb29rIGxpa2UgSVNPIGRhdGUgc3RyaW5ncyB3aWxsXG4gICAgICAgICAgICAvLyBiZSBjb252ZXJ0ZWQgdG8gRGF0ZSBvYmplY3RzLlxuXG4gICAgICAgICAgICBteURhdGEgPSBqc29uX3BhcnNlKHRleHQsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGE7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgYSA9XG4vXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKT8pWiQvLmV4ZWModmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKCthWzFdLCArYVsyXSAtIDEsICthWzNdLCArYVs0XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArYVs1XSwgK2FbNl0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgIFRoaXMgaXMgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uIFlvdSBhcmUgZnJlZSB0byBjb3B5LCBtb2RpZnksIG9yXG4gICAgcmVkaXN0cmlidXRlLlxuXG4gICAgVGhpcyBjb2RlIHNob3VsZCBiZSBtaW5pZmllZCBiZWZvcmUgZGVwbG95bWVudC5cbiAgICBTZWUgaHR0cDovL2phdmFzY3JpcHQuY3JvY2tmb3JkLmNvbS9qc21pbi5odG1sXG5cbiAgICBVU0UgWU9VUiBPV04gQ09QWS4gSVQgSVMgRVhUUkVNRUxZIFVOV0lTRSBUTyBMT0FEIENPREUgRlJPTSBTRVJWRVJTIFlPVSBET1xuICAgIE5PVCBDT05UUk9MLlxuKi9cblxuLyptZW1iZXJzIFwiXCIsIFwiXFxcIlwiLCBcIlxcL1wiLCBcIlxcXFxcIiwgYXQsIGIsIGNhbGwsIGNoYXJBdCwgZiwgZnJvbUNoYXJDb2RlLFxuICAgIGhhc093blByb3BlcnR5LCBtZXNzYWdlLCBuLCBuYW1lLCBwcm90b3R5cGUsIHB1c2gsIHIsIHQsIHRleHRcbiovXG5cbnZhciBqc29uX3BhcnNlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFRoaXMgaXMgYSBmdW5jdGlvbiB0aGF0IGNhbiBwYXJzZSBhIEpTT04gdGV4dCwgcHJvZHVjaW5nIGEgSmF2YVNjcmlwdFxuICAvLyBkYXRhIHN0cnVjdHVyZS4gSXQgaXMgYSBzaW1wbGUsIHJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlci4gSXQgZG9lcyBub3QgdXNlXG4gIC8vIGV2YWwgb3IgcmVndWxhciBleHByZXNzaW9ucywgc28gaXQgY2FuIGJlIHVzZWQgYXMgYSBtb2RlbCBmb3IgaW1wbGVtZW50aW5nXG4gIC8vIGEgSlNPTiBwYXJzZXIgaW4gb3RoZXIgbGFuZ3VhZ2VzLlxuXG4gIC8vIFdlIGFyZSBkZWZpbmluZyB0aGUgZnVuY3Rpb24gaW5zaWRlIG9mIGFub3RoZXIgZnVuY3Rpb24gdG8gYXZvaWQgY3JlYXRpbmdcbiAgLy8gZ2xvYmFsIHZhcmlhYmxlcy5cblxuICAvLyBEZWZhdWx0IG9wdGlvbnMgb25lIGNhbiBvdmVycmlkZSBieSBwYXNzaW5nIG9wdGlvbnMgdG8gdGhlIHBhcnNlKClcbiAgdmFyIF9vcHRpb25zID0ge1xuICAgIHN0cmljdDogZmFsc2UsIC8vIG5vdCBiZWluZyBzdHJpY3QgbWVhbnMgZG8gbm90IGdlbmVyYXRlIHN5bnRheCBlcnJvcnMgZm9yIFwiZHVwbGljYXRlIGtleVwiXG4gICAgc3RvcmVBc1N0cmluZzogZmFsc2UsIC8vIHRvZ2dsZXMgd2hldGhlciB0aGUgdmFsdWVzIHNob3VsZCBiZSBzdG9yZWQgYXMgQmlnTnVtYmVyIChkZWZhdWx0KSBvciBhIHN0cmluZ1xuICAgIGFsd2F5c1BhcnNlQXNCaWc6IGZhbHNlLCAvLyB0b2dnbGVzIHdoZXRoZXIgYWxsIG51bWJlcnMgc2hvdWxkIGJlIEJpZ1xuICAgIHVzZU5hdGl2ZUJpZ0ludDogZmFsc2UsIC8vIHRvZ2dsZXMgd2hldGhlciB0byB1c2UgbmF0aXZlIEJpZ0ludCBpbnN0ZWFkIG9mIGJpZ251bWJlci5qc1xuICAgIHByb3RvQWN0aW9uOiAnZXJyb3InLFxuICAgIGNvbnN0cnVjdG9yQWN0aW9uOiAnZXJyb3InLFxuICB9O1xuXG4gIC8vIElmIHRoZXJlIGFyZSBvcHRpb25zLCB0aGVuIHVzZSB0aGVtIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IF9vcHRpb25zXG4gIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucyAhPT0gbnVsbCkge1xuICAgIGlmIChvcHRpb25zLnN0cmljdCA9PT0gdHJ1ZSkge1xuICAgICAgX29wdGlvbnMuc3RyaWN0ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuc3RvcmVBc1N0cmluZyA9PT0gdHJ1ZSkge1xuICAgICAgX29wdGlvbnMuc3RvcmVBc1N0cmluZyA9IHRydWU7XG4gICAgfVxuICAgIF9vcHRpb25zLmFsd2F5c1BhcnNlQXNCaWcgPVxuICAgICAgb3B0aW9ucy5hbHdheXNQYXJzZUFzQmlnID09PSB0cnVlID8gb3B0aW9ucy5hbHdheXNQYXJzZUFzQmlnIDogZmFsc2U7XG4gICAgX29wdGlvbnMudXNlTmF0aXZlQmlnSW50ID1cbiAgICAgIG9wdGlvbnMudXNlTmF0aXZlQmlnSW50ID09PSB0cnVlID8gb3B0aW9ucy51c2VOYXRpdmVCaWdJbnQgOiBmYWxzZTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5jb25zdHJ1Y3RvckFjdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucy5jb25zdHJ1Y3RvckFjdGlvbiA9PT0gJ2Vycm9yJyB8fFxuICAgICAgICBvcHRpb25zLmNvbnN0cnVjdG9yQWN0aW9uID09PSAnaWdub3JlJyB8fFxuICAgICAgICBvcHRpb25zLmNvbnN0cnVjdG9yQWN0aW9uID09PSAncHJlc2VydmUnXG4gICAgICApIHtcbiAgICAgICAgX29wdGlvbnMuY29uc3RydWN0b3JBY3Rpb24gPSBvcHRpb25zLmNvbnN0cnVjdG9yQWN0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbmNvcnJlY3QgdmFsdWUgZm9yIGNvbnN0cnVjdG9yQWN0aW9uIG9wdGlvbiwgbXVzdCBiZSBcImVycm9yXCIsIFwiaWdub3JlXCIgb3IgdW5kZWZpbmVkIGJ1dCBwYXNzZWQgJHtvcHRpb25zLmNvbnN0cnVjdG9yQWN0aW9ufWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMucHJvdG9BY3Rpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoXG4gICAgICAgIG9wdGlvbnMucHJvdG9BY3Rpb24gPT09ICdlcnJvcicgfHxcbiAgICAgICAgb3B0aW9ucy5wcm90b0FjdGlvbiA9PT0gJ2lnbm9yZScgfHxcbiAgICAgICAgb3B0aW9ucy5wcm90b0FjdGlvbiA9PT0gJ3ByZXNlcnZlJ1xuICAgICAgKSB7XG4gICAgICAgIF9vcHRpb25zLnByb3RvQWN0aW9uID0gb3B0aW9ucy5wcm90b0FjdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgSW5jb3JyZWN0IHZhbHVlIGZvciBwcm90b0FjdGlvbiBvcHRpb24sIG11c3QgYmUgXCJlcnJvclwiLCBcImlnbm9yZVwiIG9yIHVuZGVmaW5lZCBidXQgcGFzc2VkICR7b3B0aW9ucy5wcm90b0FjdGlvbn1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGF0LCAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgY2hhcmFjdGVyXG4gICAgY2gsIC8vIFRoZSBjdXJyZW50IGNoYXJhY3RlclxuICAgIGVzY2FwZWUgPSB7XG4gICAgICAnXCInOiAnXCInLFxuICAgICAgJ1xcXFwnOiAnXFxcXCcsXG4gICAgICAnLyc6ICcvJyxcbiAgICAgIGI6ICdcXGInLFxuICAgICAgZjogJ1xcZicsXG4gICAgICBuOiAnXFxuJyxcbiAgICAgIHI6ICdcXHInLFxuICAgICAgdDogJ1xcdCcsXG4gICAgfSxcbiAgICB0ZXh0LFxuICAgIGVycm9yID0gZnVuY3Rpb24gKG0pIHtcbiAgICAgIC8vIENhbGwgZXJyb3Igd2hlbiBzb21ldGhpbmcgaXMgd3JvbmcuXG5cbiAgICAgIHRocm93IHtcbiAgICAgICAgbmFtZTogJ1N5bnRheEVycm9yJyxcbiAgICAgICAgbWVzc2FnZTogbSxcbiAgICAgICAgYXQ6IGF0LFxuICAgICAgICB0ZXh0OiB0ZXh0LFxuICAgICAgfTtcbiAgICB9LFxuICAgIG5leHQgPSBmdW5jdGlvbiAoYykge1xuICAgICAgLy8gSWYgYSBjIHBhcmFtZXRlciBpcyBwcm92aWRlZCwgdmVyaWZ5IHRoYXQgaXQgbWF0Y2hlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuXG5cbiAgICAgIGlmIChjICYmIGMgIT09IGNoKSB7XG4gICAgICAgIGVycm9yKFwiRXhwZWN0ZWQgJ1wiICsgYyArIFwiJyBpbnN0ZWFkIG9mICdcIiArIGNoICsgXCInXCIpO1xuICAgICAgfVxuXG4gICAgICAvLyBHZXQgdGhlIG5leHQgY2hhcmFjdGVyLiBXaGVuIHRoZXJlIGFyZSBubyBtb3JlIGNoYXJhY3RlcnMsXG4gICAgICAvLyByZXR1cm4gdGhlIGVtcHR5IHN0cmluZy5cblxuICAgICAgY2ggPSB0ZXh0LmNoYXJBdChhdCk7XG4gICAgICBhdCArPSAxO1xuICAgICAgcmV0dXJuIGNoO1xuICAgIH0sXG4gICAgbnVtYmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUGFyc2UgYSBudW1iZXIgdmFsdWUuXG5cbiAgICAgIHZhciBudW1iZXIsXG4gICAgICAgIHN0cmluZyA9ICcnO1xuXG4gICAgICBpZiAoY2ggPT09ICctJykge1xuICAgICAgICBzdHJpbmcgPSAnLSc7XG4gICAgICAgIG5leHQoJy0nKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7XG4gICAgICAgIHN0cmluZyArPSBjaDtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoID09PSAnLicpIHtcbiAgICAgICAgc3RyaW5nICs9ICcuJztcbiAgICAgICAgd2hpbGUgKG5leHQoKSAmJiBjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7XG4gICAgICAgICAgc3RyaW5nICs9IGNoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2ggPT09ICdlJyB8fCBjaCA9PT0gJ0UnKSB7XG4gICAgICAgIHN0cmluZyArPSBjaDtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgICBpZiAoY2ggPT09ICctJyB8fCBjaCA9PT0gJysnKSB7XG4gICAgICAgICAgc3RyaW5nICs9IGNoO1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2ggPj0gJzAnICYmIGNoIDw9ICc5Jykge1xuICAgICAgICAgIHN0cmluZyArPSBjaDtcbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG51bWJlciA9ICtzdHJpbmc7XG4gICAgICBpZiAoIWlzRmluaXRlKG51bWJlcikpIHtcbiAgICAgICAgZXJyb3IoJ0JhZCBudW1iZXInKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChCaWdOdW1iZXIgPT0gbnVsbCkgQmlnTnVtYmVyID0gcmVxdWlyZSgnYmlnbnVtYmVyLmpzJyk7XG4gICAgICAgIC8vaWYgKG51bWJlciA+IDkwMDcxOTkyNTQ3NDA5OTIgfHwgbnVtYmVyIDwgLTkwMDcxOTkyNTQ3NDA5OTIpXG4gICAgICAgIC8vIEJpZ251bWJlciBoYXMgc3RyaWN0ZXIgY2hlY2s6IGV2ZXJ5dGhpbmcgd2l0aCBsZW5ndGggPiAxNSBkaWdpdHMgZGlzYWxsb3dlZFxuICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDE1KVxuICAgICAgICAgIHJldHVybiBfb3B0aW9ucy5zdG9yZUFzU3RyaW5nXG4gICAgICAgICAgICA/IHN0cmluZ1xuICAgICAgICAgICAgOiBfb3B0aW9ucy51c2VOYXRpdmVCaWdJbnRcbiAgICAgICAgICAgID8gQmlnSW50KHN0cmluZylcbiAgICAgICAgICAgIDogbmV3IEJpZ051bWJlcihzdHJpbmcpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcmV0dXJuICFfb3B0aW9ucy5hbHdheXNQYXJzZUFzQmlnXG4gICAgICAgICAgICA/IG51bWJlclxuICAgICAgICAgICAgOiBfb3B0aW9ucy51c2VOYXRpdmVCaWdJbnRcbiAgICAgICAgICAgID8gQmlnSW50KG51bWJlcilcbiAgICAgICAgICAgIDogbmV3IEJpZ051bWJlcihudW1iZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUGFyc2UgYSBzdHJpbmcgdmFsdWUuXG5cbiAgICAgIHZhciBoZXgsXG4gICAgICAgIGksXG4gICAgICAgIHN0cmluZyA9ICcnLFxuICAgICAgICB1ZmZmZjtcblxuICAgICAgLy8gV2hlbiBwYXJzaW5nIGZvciBzdHJpbmcgdmFsdWVzLCB3ZSBtdXN0IGxvb2sgZm9yIFwiIGFuZCBcXCBjaGFyYWN0ZXJzLlxuXG4gICAgICBpZiAoY2ggPT09ICdcIicpIHtcbiAgICAgICAgdmFyIHN0YXJ0QXQgPSBhdDtcbiAgICAgICAgd2hpbGUgKG5leHQoKSkge1xuICAgICAgICAgIGlmIChjaCA9PT0gJ1wiJykge1xuICAgICAgICAgICAgaWYgKGF0IC0gMSA+IHN0YXJ0QXQpIHN0cmluZyArPSB0ZXh0LnN1YnN0cmluZyhzdGFydEF0LCBhdCAtIDEpO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNoID09PSAnXFxcXCcpIHtcbiAgICAgICAgICAgIGlmIChhdCAtIDEgPiBzdGFydEF0KSBzdHJpbmcgKz0gdGV4dC5zdWJzdHJpbmcoc3RhcnRBdCwgYXQgLSAxKTtcbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ3UnKSB7XG4gICAgICAgICAgICAgIHVmZmZmID0gMDtcbiAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIGhleCA9IHBhcnNlSW50KG5leHQoKSwgMTYpO1xuICAgICAgICAgICAgICAgIGlmICghaXNGaW5pdGUoaGV4KSkge1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVmZmZmID0gdWZmZmYgKiAxNiArIGhleDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh1ZmZmZik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlc2NhcGVlW2NoXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgc3RyaW5nICs9IGVzY2FwZWVbY2hdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGFydEF0ID0gYXQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlcnJvcignQmFkIHN0cmluZycpO1xuICAgIH0sXG4gICAgd2hpdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTa2lwIHdoaXRlc3BhY2UuXG5cbiAgICAgIHdoaWxlIChjaCAmJiBjaCA8PSAnICcpIHtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgd29yZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHRydWUsIGZhbHNlLCBvciBudWxsLlxuXG4gICAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICAgIGNhc2UgJ3QnOlxuICAgICAgICAgIG5leHQoJ3QnKTtcbiAgICAgICAgICBuZXh0KCdyJyk7XG4gICAgICAgICAgbmV4dCgndScpO1xuICAgICAgICAgIG5leHQoJ2UnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgY2FzZSAnZic6XG4gICAgICAgICAgbmV4dCgnZicpO1xuICAgICAgICAgIG5leHQoJ2EnKTtcbiAgICAgICAgICBuZXh0KCdsJyk7XG4gICAgICAgICAgbmV4dCgncycpO1xuICAgICAgICAgIG5leHQoJ2UnKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNhc2UgJ24nOlxuICAgICAgICAgIG5leHQoJ24nKTtcbiAgICAgICAgICBuZXh0KCd1Jyk7XG4gICAgICAgICAgbmV4dCgnbCcpO1xuICAgICAgICAgIG5leHQoJ2wnKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGVycm9yKFwiVW5leHBlY3RlZCAnXCIgKyBjaCArIFwiJ1wiKTtcbiAgICB9LFxuICAgIHZhbHVlLCAvLyBQbGFjZSBob2xkZXIgZm9yIHRoZSB2YWx1ZSBmdW5jdGlvbi5cbiAgICBhcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFBhcnNlIGFuIGFycmF5IHZhbHVlLlxuXG4gICAgICB2YXIgYXJyYXkgPSBbXTtcblxuICAgICAgaWYgKGNoID09PSAnWycpIHtcbiAgICAgICAgbmV4dCgnWycpO1xuICAgICAgICB3aGl0ZSgpO1xuICAgICAgICBpZiAoY2ggPT09ICddJykge1xuICAgICAgICAgIG5leHQoJ10nKTtcbiAgICAgICAgICByZXR1cm4gYXJyYXk7IC8vIGVtcHR5IGFycmF5XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGNoKSB7XG4gICAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSgpKTtcbiAgICAgICAgICB3aGl0ZSgpO1xuICAgICAgICAgIGlmIChjaCA9PT0gJ10nKSB7XG4gICAgICAgICAgICBuZXh0KCddJyk7XG4gICAgICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQoJywnKTtcbiAgICAgICAgICB3aGl0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlcnJvcignQmFkIGFycmF5Jyk7XG4gICAgfSxcbiAgICBvYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBQYXJzZSBhbiBvYmplY3QgdmFsdWUuXG5cbiAgICAgIHZhciBrZXksXG4gICAgICAgIG9iamVjdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgIGlmIChjaCA9PT0gJ3snKSB7XG4gICAgICAgIG5leHQoJ3snKTtcbiAgICAgICAgd2hpdGUoKTtcbiAgICAgICAgaWYgKGNoID09PSAnfScpIHtcbiAgICAgICAgICBuZXh0KCd9Jyk7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdDsgLy8gZW1wdHkgb2JqZWN0XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGNoKSB7XG4gICAgICAgICAga2V5ID0gc3RyaW5nKCk7XG4gICAgICAgICAgd2hpdGUoKTtcbiAgICAgICAgICBuZXh0KCc6Jyk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgX29wdGlvbnMuc3RyaWN0ID09PSB0cnVlICYmXG4gICAgICAgICAgICBPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGVycm9yKCdEdXBsaWNhdGUga2V5IFwiJyArIGtleSArICdcIicpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdXNwZWN0UHJvdG9SeC50ZXN0KGtleSkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChfb3B0aW9ucy5wcm90b0FjdGlvbiA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICBlcnJvcignT2JqZWN0IGNvbnRhaW5zIGZvcmJpZGRlbiBwcm90b3R5cGUgcHJvcGVydHknKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX29wdGlvbnMucHJvdG9BY3Rpb24gPT09ICdpZ25vcmUnKSB7XG4gICAgICAgICAgICAgIHZhbHVlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChzdXNwZWN0Q29uc3RydWN0b3JSeC50ZXN0KGtleSkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChfb3B0aW9ucy5jb25zdHJ1Y3RvckFjdGlvbiA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICBlcnJvcignT2JqZWN0IGNvbnRhaW5zIGZvcmJpZGRlbiBjb25zdHJ1Y3RvciBwcm9wZXJ0eScpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChfb3B0aW9ucy5jb25zdHJ1Y3RvckFjdGlvbiA9PT0gJ2lnbm9yZScpIHtcbiAgICAgICAgICAgICAgdmFsdWUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9iamVjdFtrZXldID0gdmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHdoaXRlKCk7XG4gICAgICAgICAgaWYgKGNoID09PSAnfScpIHtcbiAgICAgICAgICAgIG5leHQoJ30nKTtcbiAgICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQoJywnKTtcbiAgICAgICAgICB3aGl0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlcnJvcignQmFkIG9iamVjdCcpO1xuICAgIH07XG5cbiAgdmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gUGFyc2UgYSBKU09OIHZhbHVlLiBJdCBjb3VsZCBiZSBhbiBvYmplY3QsIGFuIGFycmF5LCBhIHN0cmluZywgYSBudW1iZXIsXG4gICAgLy8gb3IgYSB3b3JkLlxuXG4gICAgd2hpdGUoKTtcbiAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICBjYXNlICd7JzpcbiAgICAgICAgcmV0dXJuIG9iamVjdCgpO1xuICAgICAgY2FzZSAnWyc6XG4gICAgICAgIHJldHVybiBhcnJheSgpO1xuICAgICAgY2FzZSAnXCInOlxuICAgICAgICByZXR1cm4gc3RyaW5nKCk7XG4gICAgICBjYXNlICctJzpcbiAgICAgICAgcmV0dXJuIG51bWJlcigpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGNoID49ICcwJyAmJiBjaCA8PSAnOScgPyBudW1iZXIoKSA6IHdvcmQoKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBqc29uX3BhcnNlIGZ1bmN0aW9uLiBJdCB3aWxsIGhhdmUgYWNjZXNzIHRvIGFsbCBvZiB0aGUgYWJvdmVcbiAgLy8gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMuXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChzb3VyY2UsIHJldml2ZXIpIHtcbiAgICB2YXIgcmVzdWx0O1xuXG4gICAgdGV4dCA9IHNvdXJjZSArICcnO1xuICAgIGF0ID0gMDtcbiAgICBjaCA9ICcgJztcbiAgICByZXN1bHQgPSB2YWx1ZSgpO1xuICAgIHdoaXRlKCk7XG4gICAgaWYgKGNoKSB7XG4gICAgICBlcnJvcignU3ludGF4IGVycm9yJyk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgaXMgYSByZXZpdmVyIGZ1bmN0aW9uLCB3ZSByZWN1cnNpdmVseSB3YWxrIHRoZSBuZXcgc3RydWN0dXJlLFxuICAgIC8vIHBhc3NpbmcgZWFjaCBuYW1lL3ZhbHVlIHBhaXIgdG8gdGhlIHJldml2ZXIgZnVuY3Rpb24gZm9yIHBvc3NpYmxlXG4gICAgLy8gdHJhbnNmb3JtYXRpb24sIHN0YXJ0aW5nIHdpdGggYSB0ZW1wb3Jhcnkgcm9vdCBvYmplY3QgdGhhdCBob2xkcyB0aGUgcmVzdWx0XG4gICAgLy8gaW4gYW4gZW1wdHkga2V5LiBJZiB0aGVyZSBpcyBub3QgYSByZXZpdmVyIGZ1bmN0aW9uLCB3ZSBzaW1wbHkgcmV0dXJuIHRoZVxuICAgIC8vIHJlc3VsdC5cblxuICAgIHJldHVybiB0eXBlb2YgcmV2aXZlciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyAoZnVuY3Rpb24gd2Fsayhob2xkZXIsIGtleSkge1xuICAgICAgICAgIHZhciBrLFxuICAgICAgICAgICAgdixcbiAgICAgICAgICAgIHZhbHVlID0gaG9sZGVyW2tleV07XG4gICAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICAgIHYgPSB3YWxrKHZhbHVlLCBrKTtcbiAgICAgICAgICAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhbHVlW2tdID0gdjtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdmFsdWVba107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmV2aXZlci5jYWxsKGhvbGRlciwga2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pKHsgJyc6IHJlc3VsdCB9LCAnJylcbiAgICAgIDogcmVzdWx0O1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBqc29uX3BhcnNlO1xuIiwidmFyIEJpZ051bWJlciA9IHJlcXVpcmUoJ2JpZ251bWJlci5qcycpO1xuXG4vKlxuICAgIGpzb24yLmpzXG4gICAgMjAxMy0wNS0yNlxuXG4gICAgUHVibGljIERvbWFpbi5cblxuICAgIE5PIFdBUlJBTlRZIEVYUFJFU1NFRCBPUiBJTVBMSUVELiBVU0UgQVQgWU9VUiBPV04gUklTSy5cblxuICAgIFNlZSBodHRwOi8vd3d3LkpTT04ub3JnL2pzLmh0bWxcblxuXG4gICAgVGhpcyBjb2RlIHNob3VsZCBiZSBtaW5pZmllZCBiZWZvcmUgZGVwbG95bWVudC5cbiAgICBTZWUgaHR0cDovL2phdmFzY3JpcHQuY3JvY2tmb3JkLmNvbS9qc21pbi5odG1sXG5cbiAgICBVU0UgWU9VUiBPV04gQ09QWS4gSVQgSVMgRVhUUkVNRUxZIFVOV0lTRSBUTyBMT0FEIENPREUgRlJPTSBTRVJWRVJTIFlPVSBET1xuICAgIE5PVCBDT05UUk9MLlxuXG5cbiAgICBUaGlzIGZpbGUgY3JlYXRlcyBhIGdsb2JhbCBKU09OIG9iamVjdCBjb250YWluaW5nIHR3byBtZXRob2RzOiBzdHJpbmdpZnlcbiAgICBhbmQgcGFyc2UuXG5cbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodmFsdWUsIHJlcGxhY2VyLCBzcGFjZSlcbiAgICAgICAgICAgIHZhbHVlICAgICAgIGFueSBKYXZhU2NyaXB0IHZhbHVlLCB1c3VhbGx5IGFuIG9iamVjdCBvciBhcnJheS5cblxuICAgICAgICAgICAgcmVwbGFjZXIgICAgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgZGV0ZXJtaW5lcyBob3cgb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgYXJlIHN0cmluZ2lmaWVkIGZvciBvYmplY3RzLiBJdCBjYW4gYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cblxuICAgICAgICAgICAgc3BhY2UgICAgICAgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgc3BlY2lmaWVzIHRoZSBpbmRlbnRhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgb2YgbmVzdGVkIHN0cnVjdHVyZXMuIElmIGl0IGlzIG9taXR0ZWQsIHRoZSB0ZXh0IHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlIHBhY2tlZCB3aXRob3V0IGV4dHJhIHdoaXRlc3BhY2UuIElmIGl0IGlzIGEgbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXQgd2lsbCBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIGluZGVudCBhdCBlYWNoXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbC4gSWYgaXQgaXMgYSBzdHJpbmcgKHN1Y2ggYXMgJ1xcdCcgb3IgJyZuYnNwOycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXQgY29udGFpbnMgdGhlIGNoYXJhY3RlcnMgdXNlZCB0byBpbmRlbnQgYXQgZWFjaCBsZXZlbC5cblxuICAgICAgICAgICAgVGhpcyBtZXRob2QgcHJvZHVjZXMgYSBKU09OIHRleHQgZnJvbSBhIEphdmFTY3JpcHQgdmFsdWUuXG5cbiAgICAgICAgICAgIFdoZW4gYW4gb2JqZWN0IHZhbHVlIGlzIGZvdW5kLCBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIGEgdG9KU09OXG4gICAgICAgICAgICBtZXRob2QsIGl0cyB0b0pTT04gbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGFuZCB0aGUgcmVzdWx0IHdpbGwgYmVcbiAgICAgICAgICAgIHN0cmluZ2lmaWVkLiBBIHRvSlNPTiBtZXRob2QgZG9lcyBub3Qgc2VyaWFsaXplOiBpdCByZXR1cm5zIHRoZVxuICAgICAgICAgICAgdmFsdWUgcmVwcmVzZW50ZWQgYnkgdGhlIG5hbWUvdmFsdWUgcGFpciB0aGF0IHNob3VsZCBiZSBzZXJpYWxpemVkLFxuICAgICAgICAgICAgb3IgdW5kZWZpbmVkIGlmIG5vdGhpbmcgc2hvdWxkIGJlIHNlcmlhbGl6ZWQuIFRoZSB0b0pTT04gbWV0aG9kXG4gICAgICAgICAgICB3aWxsIGJlIHBhc3NlZCB0aGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsdWUsIGFuZCB0aGlzIHdpbGwgYmVcbiAgICAgICAgICAgIGJvdW5kIHRvIHRoZSB2YWx1ZVxuXG4gICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhpcyB3b3VsZCBzZXJpYWxpemUgRGF0ZXMgYXMgSVNPIHN0cmluZ3MuXG5cbiAgICAgICAgICAgICAgICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGYobikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9ybWF0IGludGVnZXJzIHRvIGhhdmUgYXQgbGVhc3QgdHdvIGRpZ2l0cy5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuIDwgMTAgPyAnMCcgKyBuIDogbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFVUQ0Z1bGxZZWFyKCkgICArICctJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ01vbnRoKCkgKyAxKSArICctJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ0RhdGUoKSkgICAgICArICdUJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ0hvdXJzKCkpICAgICArICc6JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ01pbnV0ZXMoKSkgICArICc6JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ1NlY29uZHMoKSkgICArICdaJztcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwgcmVwbGFjZXIgbWV0aG9kLiBJdCB3aWxsIGJlIHBhc3NlZCB0aGVcbiAgICAgICAgICAgIGtleSBhbmQgdmFsdWUgb2YgZWFjaCBtZW1iZXIsIHdpdGggdGhpcyBib3VuZCB0byB0aGUgY29udGFpbmluZ1xuICAgICAgICAgICAgb2JqZWN0LiBUaGUgdmFsdWUgdGhhdCBpcyByZXR1cm5lZCBmcm9tIHlvdXIgbWV0aG9kIHdpbGwgYmVcbiAgICAgICAgICAgIHNlcmlhbGl6ZWQuIElmIHlvdXIgbWV0aG9kIHJldHVybnMgdW5kZWZpbmVkLCB0aGVuIHRoZSBtZW1iZXIgd2lsbFxuICAgICAgICAgICAgYmUgZXhjbHVkZWQgZnJvbSB0aGUgc2VyaWFsaXphdGlvbi5cblxuICAgICAgICAgICAgSWYgdGhlIHJlcGxhY2VyIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvZiBzdHJpbmdzLCB0aGVuIGl0IHdpbGwgYmVcbiAgICAgICAgICAgIHVzZWQgdG8gc2VsZWN0IHRoZSBtZW1iZXJzIHRvIGJlIHNlcmlhbGl6ZWQuIEl0IGZpbHRlcnMgdGhlIHJlc3VsdHNcbiAgICAgICAgICAgIHN1Y2ggdGhhdCBvbmx5IG1lbWJlcnMgd2l0aCBrZXlzIGxpc3RlZCBpbiB0aGUgcmVwbGFjZXIgYXJyYXkgYXJlXG4gICAgICAgICAgICBzdHJpbmdpZmllZC5cblxuICAgICAgICAgICAgVmFsdWVzIHRoYXQgZG8gbm90IGhhdmUgSlNPTiByZXByZXNlbnRhdGlvbnMsIHN1Y2ggYXMgdW5kZWZpbmVkIG9yXG4gICAgICAgICAgICBmdW5jdGlvbnMsIHdpbGwgbm90IGJlIHNlcmlhbGl6ZWQuIFN1Y2ggdmFsdWVzIGluIG9iamVjdHMgd2lsbCBiZVxuICAgICAgICAgICAgZHJvcHBlZDsgaW4gYXJyYXlzIHRoZXkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIG51bGwuIFlvdSBjYW4gdXNlXG4gICAgICAgICAgICBhIHJlcGxhY2VyIGZ1bmN0aW9uIHRvIHJlcGxhY2UgdGhvc2Ugd2l0aCBKU09OIHZhbHVlcy5cbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHVuZGVmaW5lZCkgcmV0dXJucyB1bmRlZmluZWQuXG5cbiAgICAgICAgICAgIFRoZSBvcHRpb25hbCBzcGFjZSBwYXJhbWV0ZXIgcHJvZHVjZXMgYSBzdHJpbmdpZmljYXRpb24gb2YgdGhlXG4gICAgICAgICAgICB2YWx1ZSB0aGF0IGlzIGZpbGxlZCB3aXRoIGxpbmUgYnJlYWtzIGFuZCBpbmRlbnRhdGlvbiB0byBtYWtlIGl0XG4gICAgICAgICAgICBlYXNpZXIgdG8gcmVhZC5cblxuICAgICAgICAgICAgSWYgdGhlIHNwYWNlIHBhcmFtZXRlciBpcyBhIG5vbi1lbXB0eSBzdHJpbmcsIHRoZW4gdGhhdCBzdHJpbmcgd2lsbFxuICAgICAgICAgICAgYmUgdXNlZCBmb3IgaW5kZW50YXRpb24uIElmIHRoZSBzcGFjZSBwYXJhbWV0ZXIgaXMgYSBudW1iZXIsIHRoZW5cbiAgICAgICAgICAgIHRoZSBpbmRlbnRhdGlvbiB3aWxsIGJlIHRoYXQgbWFueSBzcGFjZXMuXG5cbiAgICAgICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAgICAgIHRleHQgPSBKU09OLnN0cmluZ2lmeShbJ2UnLCB7cGx1cmlidXM6ICd1bnVtJ31dKTtcbiAgICAgICAgICAgIC8vIHRleHQgaXMgJ1tcImVcIix7XCJwbHVyaWJ1c1wiOlwidW51bVwifV0nXG5cblxuICAgICAgICAgICAgdGV4dCA9IEpTT04uc3RyaW5naWZ5KFsnZScsIHtwbHVyaWJ1czogJ3VudW0nfV0sIG51bGwsICdcXHQnKTtcbiAgICAgICAgICAgIC8vIHRleHQgaXMgJ1tcXG5cXHRcImVcIixcXG5cXHR7XFxuXFx0XFx0XCJwbHVyaWJ1c1wiOiBcInVudW1cIlxcblxcdH1cXG5dJ1xuXG4gICAgICAgICAgICB0ZXh0ID0gSlNPTi5zdHJpbmdpZnkoW25ldyBEYXRlKCldLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzW2tleV0gaW5zdGFuY2VvZiBEYXRlID9cbiAgICAgICAgICAgICAgICAgICAgJ0RhdGUoJyArIHRoaXNba2V5XSArICcpJyA6IHZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyB0ZXh0IGlzICdbXCJEYXRlKC0tLWN1cnJlbnQgdGltZS0tLSlcIl0nXG5cblxuICAgICAgICBKU09OLnBhcnNlKHRleHQsIHJldml2ZXIpXG4gICAgICAgICAgICBUaGlzIG1ldGhvZCBwYXJzZXMgYSBKU09OIHRleHQgdG8gcHJvZHVjZSBhbiBvYmplY3Qgb3IgYXJyYXkuXG4gICAgICAgICAgICBJdCBjYW4gdGhyb3cgYSBTeW50YXhFcnJvciBleGNlcHRpb24uXG5cbiAgICAgICAgICAgIFRoZSBvcHRpb25hbCByZXZpdmVyIHBhcmFtZXRlciBpcyBhIGZ1bmN0aW9uIHRoYXQgY2FuIGZpbHRlciBhbmRcbiAgICAgICAgICAgIHRyYW5zZm9ybSB0aGUgcmVzdWx0cy4gSXQgcmVjZWl2ZXMgZWFjaCBvZiB0aGUga2V5cyBhbmQgdmFsdWVzLFxuICAgICAgICAgICAgYW5kIGl0cyByZXR1cm4gdmFsdWUgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCB2YWx1ZS5cbiAgICAgICAgICAgIElmIGl0IHJldHVybnMgd2hhdCBpdCByZWNlaXZlZCwgdGhlbiB0aGUgc3RydWN0dXJlIGlzIG5vdCBtb2RpZmllZC5cbiAgICAgICAgICAgIElmIGl0IHJldHVybnMgdW5kZWZpbmVkIHRoZW4gdGhlIG1lbWJlciBpcyBkZWxldGVkLlxuXG4gICAgICAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgICAgICAvLyBQYXJzZSB0aGUgdGV4dC4gVmFsdWVzIHRoYXQgbG9vayBsaWtlIElTTyBkYXRlIHN0cmluZ3Mgd2lsbFxuICAgICAgICAgICAgLy8gYmUgY29udmVydGVkIHRvIERhdGUgb2JqZWN0cy5cblxuICAgICAgICAgICAgbXlEYXRhID0gSlNPTi5wYXJzZSh0ZXh0LCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBhO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGEgPVxuL14oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVQoXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KD86XFwuXFxkKik/KVokLy5leGVjKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQygrYVsxXSwgK2FbMl0gLSAxLCArYVszXSwgK2FbNF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgK2FbNV0sICthWzZdKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIG15RGF0YSA9IEpTT04ucGFyc2UoJ1tcIkRhdGUoMDkvMDkvMjAwMSlcIl0nLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBkO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zbGljZSgwLCA1KSA9PT0gJ0RhdGUoJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2xpY2UoLTEpID09PSAnKScpIHtcbiAgICAgICAgICAgICAgICAgICAgZCA9IG5ldyBEYXRlKHZhbHVlLnNsaWNlKDUsIC0xKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuXG4gICAgVGhpcyBpcyBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4gWW91IGFyZSBmcmVlIHRvIGNvcHksIG1vZGlmeSwgb3JcbiAgICByZWRpc3RyaWJ1dGUuXG4qL1xuXG4vKmpzbGludCBldmlsOiB0cnVlLCByZWdleHA6IHRydWUgKi9cblxuLyptZW1iZXJzIFwiXCIsIFwiXFxiXCIsIFwiXFx0XCIsIFwiXFxuXCIsIFwiXFxmXCIsIFwiXFxyXCIsIFwiXFxcIlwiLCBKU09OLCBcIlxcXFxcIiwgYXBwbHksXG4gICAgY2FsbCwgY2hhckNvZGVBdCwgZ2V0VVRDRGF0ZSwgZ2V0VVRDRnVsbFllYXIsIGdldFVUQ0hvdXJzLFxuICAgIGdldFVUQ01pbnV0ZXMsIGdldFVUQ01vbnRoLCBnZXRVVENTZWNvbmRzLCBoYXNPd25Qcm9wZXJ0eSwgam9pbixcbiAgICBsYXN0SW5kZXgsIGxlbmd0aCwgcGFyc2UsIHByb3RvdHlwZSwgcHVzaCwgcmVwbGFjZSwgc2xpY2UsIHN0cmluZ2lmeSxcbiAgICB0ZXN0LCB0b0pTT04sIHRvU3RyaW5nLCB2YWx1ZU9mXG4qL1xuXG5cbi8vIENyZWF0ZSBhIEpTT04gb2JqZWN0IG9ubHkgaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuIFdlIGNyZWF0ZSB0aGVcbi8vIG1ldGhvZHMgaW4gYSBjbG9zdXJlIHRvIGF2b2lkIGNyZWF0aW5nIGdsb2JhbCB2YXJpYWJsZXMuXG5cbnZhciBKU09OID0gbW9kdWxlLmV4cG9ydHM7XG5cbihmdW5jdGlvbiAoKSB7XG4gICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgZnVuY3Rpb24gZihuKSB7XG4gICAgICAgIC8vIEZvcm1hdCBpbnRlZ2VycyB0byBoYXZlIGF0IGxlYXN0IHR3byBkaWdpdHMuXG4gICAgICAgIHJldHVybiBuIDwgMTAgPyAnMCcgKyBuIDogbjtcbiAgICB9XG5cbiAgICB2YXIgY3ggPSAvW1xcdTAwMDBcXHUwMGFkXFx1MDYwMC1cXHUwNjA0XFx1MDcwZlxcdTE3YjRcXHUxN2I1XFx1MjAwYy1cXHUyMDBmXFx1MjAyOC1cXHUyMDJmXFx1MjA2MC1cXHUyMDZmXFx1ZmVmZlxcdWZmZjAtXFx1ZmZmZl0vZyxcbiAgICAgICAgZXNjYXBhYmxlID0gL1tcXFxcXFxcIlxceDAwLVxceDFmXFx4N2YtXFx4OWZcXHUwMGFkXFx1MDYwMC1cXHUwNjA0XFx1MDcwZlxcdTE3YjRcXHUxN2I1XFx1MjAwYy1cXHUyMDBmXFx1MjAyOC1cXHUyMDJmXFx1MjA2MC1cXHUyMDZmXFx1ZmVmZlxcdWZmZjAtXFx1ZmZmZl0vZyxcbiAgICAgICAgZ2FwLFxuICAgICAgICBpbmRlbnQsXG4gICAgICAgIG1ldGEgPSB7ICAgIC8vIHRhYmxlIG9mIGNoYXJhY3RlciBzdWJzdGl0dXRpb25zXG4gICAgICAgICAgICAnXFxiJzogJ1xcXFxiJyxcbiAgICAgICAgICAgICdcXHQnOiAnXFxcXHQnLFxuICAgICAgICAgICAgJ1xcbic6ICdcXFxcbicsXG4gICAgICAgICAgICAnXFxmJzogJ1xcXFxmJyxcbiAgICAgICAgICAgICdcXHInOiAnXFxcXHInLFxuICAgICAgICAgICAgJ1wiJyA6ICdcXFxcXCInLFxuICAgICAgICAgICAgJ1xcXFwnOiAnXFxcXFxcXFwnXG4gICAgICAgIH0sXG4gICAgICAgIHJlcDtcblxuXG4gICAgZnVuY3Rpb24gcXVvdGUoc3RyaW5nKSB7XG5cbi8vIElmIHRoZSBzdHJpbmcgY29udGFpbnMgbm8gY29udHJvbCBjaGFyYWN0ZXJzLCBubyBxdW90ZSBjaGFyYWN0ZXJzLCBhbmQgbm9cbi8vIGJhY2tzbGFzaCBjaGFyYWN0ZXJzLCB0aGVuIHdlIGNhbiBzYWZlbHkgc2xhcCBzb21lIHF1b3RlcyBhcm91bmQgaXQuXG4vLyBPdGhlcndpc2Ugd2UgbXVzdCBhbHNvIHJlcGxhY2UgdGhlIG9mZmVuZGluZyBjaGFyYWN0ZXJzIHdpdGggc2FmZSBlc2NhcGVcbi8vIHNlcXVlbmNlcy5cblxuICAgICAgICBlc2NhcGFibGUubGFzdEluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIGVzY2FwYWJsZS50ZXN0KHN0cmluZykgPyAnXCInICsgc3RyaW5nLnJlcGxhY2UoZXNjYXBhYmxlLCBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgdmFyIGMgPSBtZXRhW2FdO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gY1xuICAgICAgICAgICAgICAgIDogJ1xcXFx1JyArICgnMDAwMCcgKyBhLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCk7XG4gICAgICAgIH0pICsgJ1wiJyA6ICdcIicgKyBzdHJpbmcgKyAnXCInO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gc3RyKGtleSwgaG9sZGVyKSB7XG5cbi8vIFByb2R1Y2UgYSBzdHJpbmcgZnJvbSBob2xkZXJba2V5XS5cblxuICAgICAgICB2YXIgaSwgICAgICAgICAgLy8gVGhlIGxvb3AgY291bnRlci5cbiAgICAgICAgICAgIGssICAgICAgICAgIC8vIFRoZSBtZW1iZXIga2V5LlxuICAgICAgICAgICAgdiwgICAgICAgICAgLy8gVGhlIG1lbWJlciB2YWx1ZS5cbiAgICAgICAgICAgIGxlbmd0aCxcbiAgICAgICAgICAgIG1pbmQgPSBnYXAsXG4gICAgICAgICAgICBwYXJ0aWFsLFxuICAgICAgICAgICAgdmFsdWUgPSBob2xkZXJba2V5XSxcbiAgICAgICAgICAgIGlzQmlnTnVtYmVyID0gdmFsdWUgIT0gbnVsbCAmJiAodmFsdWUgaW5zdGFuY2VvZiBCaWdOdW1iZXIgfHwgQmlnTnVtYmVyLmlzQmlnTnVtYmVyKHZhbHVlKSk7XG5cbi8vIElmIHRoZSB2YWx1ZSBoYXMgYSB0b0pTT04gbWV0aG9kLCBjYWxsIGl0IHRvIG9idGFpbiBhIHJlcGxhY2VtZW50IHZhbHVlLlxuXG4gICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50b0pTT04oa2V5KTtcbiAgICAgICAgfVxuXG4vLyBJZiB3ZSB3ZXJlIGNhbGxlZCB3aXRoIGEgcmVwbGFjZXIgZnVuY3Rpb24sIHRoZW4gY2FsbCB0aGUgcmVwbGFjZXIgdG9cbi8vIG9idGFpbiBhIHJlcGxhY2VtZW50IHZhbHVlLlxuXG4gICAgICAgIGlmICh0eXBlb2YgcmVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHJlcC5jYWxsKGhvbGRlciwga2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cblxuLy8gV2hhdCBoYXBwZW5zIG5leHQgZGVwZW5kcyBvbiB0aGUgdmFsdWUncyB0eXBlLlxuXG4gICAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICBpZiAoaXNCaWdOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBxdW90ZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcblxuLy8gSlNPTiBudW1iZXJzIG11c3QgYmUgZmluaXRlLiBFbmNvZGUgbm9uLWZpbml0ZSBudW1iZXJzIGFzIG51bGwuXG5cbiAgICAgICAgICAgIHJldHVybiBpc0Zpbml0ZSh2YWx1ZSkgPyBTdHJpbmcodmFsdWUpIDogJ251bGwnO1xuXG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBjYXNlICdudWxsJzpcbiAgICAgICAgY2FzZSAnYmlnaW50JzpcblxuLy8gSWYgdGhlIHZhbHVlIGlzIGEgYm9vbGVhbiBvciBudWxsLCBjb252ZXJ0IGl0IHRvIGEgc3RyaW5nLiBOb3RlOlxuLy8gdHlwZW9mIG51bGwgZG9lcyBub3QgcHJvZHVjZSAnbnVsbCcuIFRoZSBjYXNlIGlzIGluY2x1ZGVkIGhlcmUgaW5cbi8vIHRoZSByZW1vdGUgY2hhbmNlIHRoYXQgdGhpcyBnZXRzIGZpeGVkIHNvbWVkYXkuXG5cbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuXG4vLyBJZiB0aGUgdHlwZSBpcyAnb2JqZWN0Jywgd2UgbWlnaHQgYmUgZGVhbGluZyB3aXRoIGFuIG9iamVjdCBvciBhbiBhcnJheSBvclxuLy8gbnVsbC5cblxuICAgICAgICBjYXNlICdvYmplY3QnOlxuXG4vLyBEdWUgdG8gYSBzcGVjaWZpY2F0aW9uIGJsdW5kZXIgaW4gRUNNQVNjcmlwdCwgdHlwZW9mIG51bGwgaXMgJ29iamVjdCcsXG4vLyBzbyB3YXRjaCBvdXQgZm9yIHRoYXQgY2FzZS5cblxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnbnVsbCc7XG4gICAgICAgICAgICB9XG5cbi8vIE1ha2UgYW4gYXJyYXkgdG8gaG9sZCB0aGUgcGFydGlhbCByZXN1bHRzIG9mIHN0cmluZ2lmeWluZyB0aGlzIG9iamVjdCB2YWx1ZS5cblxuICAgICAgICAgICAgZ2FwICs9IGluZGVudDtcbiAgICAgICAgICAgIHBhcnRpYWwgPSBbXTtcblxuLy8gSXMgdGhlIHZhbHVlIGFuIGFycmF5P1xuXG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseSh2YWx1ZSkgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcblxuLy8gVGhlIHZhbHVlIGlzIGFuIGFycmF5LiBTdHJpbmdpZnkgZXZlcnkgZWxlbWVudC4gVXNlIG51bGwgYXMgYSBwbGFjZWhvbGRlclxuLy8gZm9yIG5vbi1KU09OIHZhbHVlcy5cblxuICAgICAgICAgICAgICAgIGxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydGlhbFtpXSA9IHN0cihpLCB2YWx1ZSkgfHwgJ251bGwnO1xuICAgICAgICAgICAgICAgIH1cblxuLy8gSm9pbiBhbGwgb2YgdGhlIGVsZW1lbnRzIHRvZ2V0aGVyLCBzZXBhcmF0ZWQgd2l0aCBjb21tYXMsIGFuZCB3cmFwIHRoZW0gaW5cbi8vIGJyYWNrZXRzLlxuXG4gICAgICAgICAgICAgICAgdiA9IHBhcnRpYWwubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgICAgID8gJ1tdJ1xuICAgICAgICAgICAgICAgICAgICA6IGdhcFxuICAgICAgICAgICAgICAgICAgICA/ICdbXFxuJyArIGdhcCArIHBhcnRpYWwuam9pbignLFxcbicgKyBnYXApICsgJ1xcbicgKyBtaW5kICsgJ10nXG4gICAgICAgICAgICAgICAgICAgIDogJ1snICsgcGFydGlhbC5qb2luKCcsJykgKyAnXSc7XG4gICAgICAgICAgICAgICAgZ2FwID0gbWluZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgIH1cblxuLy8gSWYgdGhlIHJlcGxhY2VyIGlzIGFuIGFycmF5LCB1c2UgaXQgdG8gc2VsZWN0IHRoZSBtZW1iZXJzIHRvIGJlIHN0cmluZ2lmaWVkLlxuXG4gICAgICAgICAgICBpZiAocmVwICYmIHR5cGVvZiByZXAgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gcmVwLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXBbaV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrID0gcmVwW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgdiA9IHN0cihrLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwucHVzaChxdW90ZShrKSArIChnYXAgPyAnOiAnIDogJzonKSArIHYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcblxuLy8gT3RoZXJ3aXNlLCBpdGVyYXRlIHRocm91Z2ggYWxsIG9mIHRoZSBrZXlzIGluIHRoZSBvYmplY3QuXG5cbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2ID0gc3RyKGssIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWwucHVzaChxdW90ZShrKSArIChnYXAgPyAnOiAnIDogJzonKSArIHYpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbi8vIEpvaW4gYWxsIG9mIHRoZSBtZW1iZXIgdGV4dHMgdG9nZXRoZXIsIHNlcGFyYXRlZCB3aXRoIGNvbW1hcyxcbi8vIGFuZCB3cmFwIHRoZW0gaW4gYnJhY2VzLlxuXG4gICAgICAgICAgICB2ID0gcGFydGlhbC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICA/ICd7fSdcbiAgICAgICAgICAgICAgICA6IGdhcFxuICAgICAgICAgICAgICAgID8gJ3tcXG4nICsgZ2FwICsgcGFydGlhbC5qb2luKCcsXFxuJyArIGdhcCkgKyAnXFxuJyArIG1pbmQgKyAnfSdcbiAgICAgICAgICAgICAgICA6ICd7JyArIHBhcnRpYWwuam9pbignLCcpICsgJ30nO1xuICAgICAgICAgICAgZ2FwID0gbWluZDtcbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgfVxuXG4vLyBJZiB0aGUgSlNPTiBvYmplY3QgZG9lcyBub3QgeWV0IGhhdmUgYSBzdHJpbmdpZnkgbWV0aG9kLCBnaXZlIGl0IG9uZS5cblxuICAgIGlmICh0eXBlb2YgSlNPTi5zdHJpbmdpZnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkgPSBmdW5jdGlvbiAodmFsdWUsIHJlcGxhY2VyLCBzcGFjZSkge1xuXG4vLyBUaGUgc3RyaW5naWZ5IG1ldGhvZCB0YWtlcyBhIHZhbHVlIGFuZCBhbiBvcHRpb25hbCByZXBsYWNlciwgYW5kIGFuIG9wdGlvbmFsXG4vLyBzcGFjZSBwYXJhbWV0ZXIsIGFuZCByZXR1cm5zIGEgSlNPTiB0ZXh0LiBUaGUgcmVwbGFjZXIgY2FuIGJlIGEgZnVuY3Rpb25cbi8vIHRoYXQgY2FuIHJlcGxhY2UgdmFsdWVzLCBvciBhbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgd2lsbCBzZWxlY3QgdGhlIGtleXMuXG4vLyBBIGRlZmF1bHQgcmVwbGFjZXIgbWV0aG9kIGNhbiBiZSBwcm92aWRlZC4gVXNlIG9mIHRoZSBzcGFjZSBwYXJhbWV0ZXIgY2FuXG4vLyBwcm9kdWNlIHRleHQgdGhhdCBpcyBtb3JlIGVhc2lseSByZWFkYWJsZS5cblxuICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICBnYXAgPSAnJztcbiAgICAgICAgICAgIGluZGVudCA9ICcnO1xuXG4vLyBJZiB0aGUgc3BhY2UgcGFyYW1ldGVyIGlzIGEgbnVtYmVyLCBtYWtlIGFuIGluZGVudCBzdHJpbmcgY29udGFpbmluZyB0aGF0XG4vLyBtYW55IHNwYWNlcy5cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzcGFjZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3BhY2U7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gJyAnO1xuICAgICAgICAgICAgICAgIH1cblxuLy8gSWYgdGhlIHNwYWNlIHBhcmFtZXRlciBpcyBhIHN0cmluZywgaXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBpbmRlbnQgc3RyaW5nLlxuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzcGFjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbmRlbnQgPSBzcGFjZTtcbiAgICAgICAgICAgIH1cblxuLy8gSWYgdGhlcmUgaXMgYSByZXBsYWNlciwgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIGFuIGFycmF5LlxuLy8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvci5cblxuICAgICAgICAgICAgcmVwID0gcmVwbGFjZXI7XG4gICAgICAgICAgICBpZiAocmVwbGFjZXIgJiYgdHlwZW9mIHJlcGxhY2VyICE9PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgcmVwbGFjZXIgIT09ICdvYmplY3QnIHx8XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiByZXBsYWNlci5sZW5ndGggIT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSlNPTi5zdHJpbmdpZnknKTtcbiAgICAgICAgICAgIH1cblxuLy8gTWFrZSBhIGZha2Ugcm9vdCBvYmplY3QgY29udGFpbmluZyBvdXIgdmFsdWUgdW5kZXIgdGhlIGtleSBvZiAnJy5cbi8vIFJldHVybiB0aGUgcmVzdWx0IG9mIHN0cmluZ2lmeWluZyB0aGUgdmFsdWUuXG5cbiAgICAgICAgICAgIHJldHVybiBzdHIoJycsIHsnJzogdmFsdWV9KTtcbiAgICAgICAgfTtcbiAgICB9XG59KCkpO1xuIiwiLyohXG4gKiBtaW1lLWRiXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE1LTIwMjIgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2RiLmpzb24nKVxuIiwiLyohXG4gKiBtaW1lLXR5cGVzXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZGIgPSByZXF1aXJlKCdtaW1lLWRiJylcbnZhciBleHRuYW1lID0gcmVxdWlyZSgncGF0aCcpLmV4dG5hbWVcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgRVhUUkFDVF9UWVBFX1JFR0VYUCA9IC9eXFxzKihbXjtcXHNdKikoPzo7fFxcc3wkKS9cbnZhciBURVhUX1RZUEVfUkVHRVhQID0gL150ZXh0XFwvL2lcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5leHBvcnRzLmNoYXJzZXQgPSBjaGFyc2V0XG5leHBvcnRzLmNoYXJzZXRzID0geyBsb29rdXA6IGNoYXJzZXQgfVxuZXhwb3J0cy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlXG5leHBvcnRzLmV4dGVuc2lvbiA9IGV4dGVuc2lvblxuZXhwb3J0cy5leHRlbnNpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuZXhwb3J0cy5sb29rdXAgPSBsb29rdXBcbmV4cG9ydHMudHlwZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5cbi8vIFBvcHVsYXRlIHRoZSBleHRlbnNpb25zL3R5cGVzIG1hcHNcbnBvcHVsYXRlTWFwcyhleHBvcnRzLmV4dGVuc2lvbnMsIGV4cG9ydHMudHlwZXMpXG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IGNoYXJzZXQgZm9yIGEgTUlNRSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtib29sZWFufHN0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBjaGFyc2V0ICh0eXBlKSB7XG4gIGlmICghdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBtZWRpYS10eXBlclxuICB2YXIgbWF0Y2ggPSBFWFRSQUNUX1RZUEVfUkVHRVhQLmV4ZWModHlwZSlcbiAgdmFyIG1pbWUgPSBtYXRjaCAmJiBkYlttYXRjaFsxXS50b0xvd2VyQ2FzZSgpXVxuXG4gIGlmIChtaW1lICYmIG1pbWUuY2hhcnNldCkge1xuICAgIHJldHVybiBtaW1lLmNoYXJzZXRcbiAgfVxuXG4gIC8vIGRlZmF1bHQgdGV4dC8qIHRvIHV0Zi04XG4gIGlmIChtYXRjaCAmJiBURVhUX1RZUEVfUkVHRVhQLnRlc3QobWF0Y2hbMV0pKSB7XG4gICAgcmV0dXJuICdVVEYtOCdcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGZ1bGwgQ29udGVudC1UeXBlIGhlYWRlciBnaXZlbiBhIE1JTUUgdHlwZSBvciBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gY29udGVudFR5cGUgKHN0cikge1xuICAvLyBUT0RPOiBzaG91bGQgdGhpcyBldmVuIGJlIGluIHRoaXMgbW9kdWxlP1xuICBpZiAoIXN0ciB8fCB0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgdmFyIG1pbWUgPSBzdHIuaW5kZXhPZignLycpID09PSAtMVxuICAgID8gZXhwb3J0cy5sb29rdXAoc3RyKVxuICAgIDogc3RyXG5cbiAgaWYgKCFtaW1lKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBUT0RPOiB1c2UgY29udGVudC10eXBlIG9yIG90aGVyIG1vZHVsZVxuICBpZiAobWltZS5pbmRleE9mKCdjaGFyc2V0JykgPT09IC0xKSB7XG4gICAgdmFyIGNoYXJzZXQgPSBleHBvcnRzLmNoYXJzZXQobWltZSlcbiAgICBpZiAoY2hhcnNldCkgbWltZSArPSAnOyBjaGFyc2V0PScgKyBjaGFyc2V0LnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIHJldHVybiBtaW1lXG59XG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IGV4dGVuc2lvbiBmb3IgYSBNSU1FIHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW58c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGV4dGVuc2lvbiAodHlwZSkge1xuICBpZiAoIXR5cGUgfHwgdHlwZW9mIHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBUT0RPOiB1c2UgbWVkaWEtdHlwZXJcbiAgdmFyIG1hdGNoID0gRVhUUkFDVF9UWVBFX1JFR0VYUC5leGVjKHR5cGUpXG5cbiAgLy8gZ2V0IGV4dGVuc2lvbnNcbiAgdmFyIGV4dHMgPSBtYXRjaCAmJiBleHBvcnRzLmV4dGVuc2lvbnNbbWF0Y2hbMV0udG9Mb3dlckNhc2UoKV1cblxuICBpZiAoIWV4dHMgfHwgIWV4dHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXh0c1swXVxufVxuXG4vKipcbiAqIExvb2t1cCB0aGUgTUlNRSB0eXBlIGZvciBhIGZpbGUgcGF0aC9leHRlbnNpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm4ge2Jvb2xlYW58c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGxvb2t1cCAocGF0aCkge1xuICBpZiAoIXBhdGggfHwgdHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBnZXQgdGhlIGV4dGVuc2lvbiAoXCJleHRcIiBvciBcIi5leHRcIiBvciBmdWxsIHBhdGgpXG4gIHZhciBleHRlbnNpb24gPSBleHRuYW1lKCd4LicgKyBwYXRoKVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnN1YnN0cigxKVxuXG4gIGlmICghZXh0ZW5zaW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXhwb3J0cy50eXBlc1tleHRlbnNpb25dIHx8IGZhbHNlXG59XG5cbi8qKlxuICogUG9wdWxhdGUgdGhlIGV4dGVuc2lvbnMgYW5kIHR5cGVzIG1hcHMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBvcHVsYXRlTWFwcyAoZXh0ZW5zaW9ucywgdHlwZXMpIHtcbiAgLy8gc291cmNlIHByZWZlcmVuY2UgKGxlYXN0IC0+IG1vc3QpXG4gIHZhciBwcmVmZXJlbmNlID0gWyduZ2lueCcsICdhcGFjaGUnLCB1bmRlZmluZWQsICdpYW5hJ11cblxuICBPYmplY3Qua2V5cyhkYikuZm9yRWFjaChmdW5jdGlvbiBmb3JFYWNoTWltZVR5cGUgKHR5cGUpIHtcbiAgICB2YXIgbWltZSA9IGRiW3R5cGVdXG4gICAgdmFyIGV4dHMgPSBtaW1lLmV4dGVuc2lvbnNcblxuICAgIGlmICghZXh0cyB8fCAhZXh0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIG1pbWUgLT4gZXh0ZW5zaW9uc1xuICAgIGV4dGVuc2lvbnNbdHlwZV0gPSBleHRzXG5cbiAgICAvLyBleHRlbnNpb24gLT4gbWltZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXh0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGV4dGVuc2lvbiA9IGV4dHNbaV1cblxuICAgICAgaWYgKHR5cGVzW2V4dGVuc2lvbl0pIHtcbiAgICAgICAgdmFyIGZyb20gPSBwcmVmZXJlbmNlLmluZGV4T2YoZGJbdHlwZXNbZXh0ZW5zaW9uXV0uc291cmNlKVxuICAgICAgICB2YXIgdG8gPSBwcmVmZXJlbmNlLmluZGV4T2YobWltZS5zb3VyY2UpXG5cbiAgICAgICAgaWYgKHR5cGVzW2V4dGVuc2lvbl0gIT09ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nICYmXG4gICAgICAgICAgKGZyb20gPiB0byB8fCAoZnJvbSA9PT0gdG8gJiYgdHlwZXNbZXh0ZW5zaW9uXS5zdWJzdHIoMCwgMTIpID09PSAnYXBwbGljYXRpb24vJykpKSB7XG4gICAgICAgICAgLy8gc2tpcCB0aGUgcmVtYXBwaW5nXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBzZXQgdGhlIGV4dGVuc2lvbiAtPiBtaW1lXG4gICAgICB0eXBlc1tleHRlbnNpb25dID0gdHlwZVxuICAgIH1cbiAgfSlcbn1cbiIsIid1c2Ugc3RyaWN0JztcbmNvbnN0IG9zID0gcmVxdWlyZSgnb3MnKTtcbmNvbnN0IGhhc0ZsYWcgPSByZXF1aXJlKCdoYXMtZmxhZycpO1xuXG5jb25zdCBlbnYgPSBwcm9jZXNzLmVudjtcblxubGV0IGZvcmNlQ29sb3I7XG5pZiAoaGFzRmxhZygnbm8tY29sb3InKSB8fFxuXHRoYXNGbGFnKCduby1jb2xvcnMnKSB8fFxuXHRoYXNGbGFnKCdjb2xvcj1mYWxzZScpKSB7XG5cdGZvcmNlQ29sb3IgPSBmYWxzZTtcbn0gZWxzZSBpZiAoaGFzRmxhZygnY29sb3InKSB8fFxuXHRoYXNGbGFnKCdjb2xvcnMnKSB8fFxuXHRoYXNGbGFnKCdjb2xvcj10cnVlJykgfHxcblx0aGFzRmxhZygnY29sb3I9YWx3YXlzJykpIHtcblx0Zm9yY2VDb2xvciA9IHRydWU7XG59XG5pZiAoJ0ZPUkNFX0NPTE9SJyBpbiBlbnYpIHtcblx0Zm9yY2VDb2xvciA9IGVudi5GT1JDRV9DT0xPUi5sZW5ndGggPT09IDAgfHwgcGFyc2VJbnQoZW52LkZPUkNFX0NPTE9SLCAxMCkgIT09IDA7XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUxldmVsKGxldmVsKSB7XG5cdGlmIChsZXZlbCA9PT0gMCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0bGV2ZWwsXG5cdFx0aGFzQmFzaWM6IHRydWUsXG5cdFx0aGFzMjU2OiBsZXZlbCA+PSAyLFxuXHRcdGhhczE2bTogbGV2ZWwgPj0gM1xuXHR9O1xufVxuXG5mdW5jdGlvbiBzdXBwb3J0c0NvbG9yKHN0cmVhbSkge1xuXHRpZiAoZm9yY2VDb2xvciA9PT0gZmFsc2UpIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGlmIChoYXNGbGFnKCdjb2xvcj0xNm0nKSB8fFxuXHRcdGhhc0ZsYWcoJ2NvbG9yPWZ1bGwnKSB8fFxuXHRcdGhhc0ZsYWcoJ2NvbG9yPXRydWVjb2xvcicpKSB7XG5cdFx0cmV0dXJuIDM7XG5cdH1cblxuXHRpZiAoaGFzRmxhZygnY29sb3I9MjU2JykpIHtcblx0XHRyZXR1cm4gMjtcblx0fVxuXG5cdGlmIChzdHJlYW0gJiYgIXN0cmVhbS5pc1RUWSAmJiBmb3JjZUNvbG9yICE9PSB0cnVlKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblxuXHRjb25zdCBtaW4gPSBmb3JjZUNvbG9yID8gMSA6IDA7XG5cblx0aWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcblx0XHQvLyBOb2RlLmpzIDcuNS4wIGlzIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIE5vZGUuanMgdG8gaW5jbHVkZSBhIHBhdGNoIHRvXG5cdFx0Ly8gbGlidXYgdGhhdCBlbmFibGVzIDI1NiBjb2xvciBvdXRwdXQgb24gV2luZG93cy4gQW55dGhpbmcgZWFybGllciBhbmQgaXRcblx0XHQvLyB3b24ndCB3b3JrLiBIb3dldmVyLCBoZXJlIHdlIHRhcmdldCBOb2RlLmpzIDggYXQgbWluaW11bSBhcyBpdCBpcyBhbiBMVFNcblx0XHQvLyByZWxlYXNlLCBhbmQgTm9kZS5qcyA3IGlzIG5vdC4gV2luZG93cyAxMCBidWlsZCAxMDU4NiBpcyB0aGUgZmlyc3QgV2luZG93c1xuXHRcdC8vIHJlbGVhc2UgdGhhdCBzdXBwb3J0cyAyNTYgY29sb3JzLiBXaW5kb3dzIDEwIGJ1aWxkIDE0OTMxIGlzIHRoZSBmaXJzdCByZWxlYXNlXG5cdFx0Ly8gdGhhdCBzdXBwb3J0cyAxNm0vVHJ1ZUNvbG9yLlxuXHRcdGNvbnN0IG9zUmVsZWFzZSA9IG9zLnJlbGVhc2UoKS5zcGxpdCgnLicpO1xuXHRcdGlmIChcblx0XHRcdE51bWJlcihwcm9jZXNzLnZlcnNpb25zLm5vZGUuc3BsaXQoJy4nKVswXSkgPj0gOCAmJlxuXHRcdFx0TnVtYmVyKG9zUmVsZWFzZVswXSkgPj0gMTAgJiZcblx0XHRcdE51bWJlcihvc1JlbGVhc2VbMl0pID49IDEwNTg2XG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gTnVtYmVyKG9zUmVsZWFzZVsyXSkgPj0gMTQ5MzEgPyAzIDogMjtcblx0XHR9XG5cblx0XHRyZXR1cm4gMTtcblx0fVxuXG5cdGlmICgnQ0knIGluIGVudikge1xuXHRcdGlmIChbJ1RSQVZJUycsICdDSVJDTEVDSScsICdBUFBWRVlPUicsICdHSVRMQUJfQ0knXS5zb21lKHNpZ24gPT4gc2lnbiBpbiBlbnYpIHx8IGVudi5DSV9OQU1FID09PSAnY29kZXNoaXAnKSB7XG5cdFx0XHRyZXR1cm4gMTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbWluO1xuXHR9XG5cblx0aWYgKCdURUFNQ0lUWV9WRVJTSU9OJyBpbiBlbnYpIHtcblx0XHRyZXR1cm4gL14oOVxcLigwKlsxLTldXFxkKilcXC58XFxkezIsfVxcLikvLnRlc3QoZW52LlRFQU1DSVRZX1ZFUlNJT04pID8gMSA6IDA7XG5cdH1cblxuXHRpZiAoZW52LkNPTE9SVEVSTSA9PT0gJ3RydWVjb2xvcicpIHtcblx0XHRyZXR1cm4gMztcblx0fVxuXG5cdGlmICgnVEVSTV9QUk9HUkFNJyBpbiBlbnYpIHtcblx0XHRjb25zdCB2ZXJzaW9uID0gcGFyc2VJbnQoKGVudi5URVJNX1BST0dSQU1fVkVSU0lPTiB8fCAnJykuc3BsaXQoJy4nKVswXSwgMTApO1xuXG5cdFx0c3dpdGNoIChlbnYuVEVSTV9QUk9HUkFNKSB7XG5cdFx0XHRjYXNlICdpVGVybS5hcHAnOlxuXHRcdFx0XHRyZXR1cm4gdmVyc2lvbiA+PSAzID8gMyA6IDI7XG5cdFx0XHRjYXNlICdBcHBsZV9UZXJtaW5hbCc6XG5cdFx0XHRcdHJldHVybiAyO1xuXHRcdFx0Ly8gTm8gZGVmYXVsdFxuXHRcdH1cblx0fVxuXG5cdGlmICgvLTI1Nihjb2xvcik/JC9pLnRlc3QoZW52LlRFUk0pKSB7XG5cdFx0cmV0dXJuIDI7XG5cdH1cblxuXHRpZiAoL15zY3JlZW58Xnh0ZXJtfF52dDEwMHxednQyMjB8XnJ4dnR8Y29sb3J8YW5zaXxjeWd3aW58bGludXgvaS50ZXN0KGVudi5URVJNKSkge1xuXHRcdHJldHVybiAxO1xuXHR9XG5cblx0aWYgKCdDT0xPUlRFUk0nIGluIGVudikge1xuXHRcdHJldHVybiAxO1xuXHR9XG5cblx0aWYgKGVudi5URVJNID09PSAnZHVtYicpIHtcblx0XHRyZXR1cm4gbWluO1xuXHR9XG5cblx0cmV0dXJuIG1pbjtcbn1cblxuZnVuY3Rpb24gZ2V0U3VwcG9ydExldmVsKHN0cmVhbSkge1xuXHRjb25zdCBsZXZlbCA9IHN1cHBvcnRzQ29sb3Ioc3RyZWFtKTtcblx0cmV0dXJuIHRyYW5zbGF0ZUxldmVsKGxldmVsKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cdHN1cHBvcnRzQ29sb3I6IGdldFN1cHBvcnRMZXZlbCxcblx0c3Rkb3V0OiBnZXRTdXBwb3J0TGV2ZWwocHJvY2Vzcy5zdGRvdXQpLFxuXHRzdGRlcnI6IGdldFN1cHBvcnRMZXZlbChwcm9jZXNzLnN0ZGVycilcbn07XG4iLCIoZnVuY3Rpb24gKG5hbWUsIGNvbnRleHQsIGRlZmluaXRpb24pIHtcbiAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24oKTtcbiAgZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSBkZWZpbmUoZGVmaW5pdGlvbik7XG4gIGVsc2UgY29udGV4dFtuYW1lXSA9IGRlZmluaXRpb24oKTtcbn0pKCd1cmxqb2luJywgdGhpcywgZnVuY3Rpb24gKCkge1xuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZSAoc3RyQXJyYXkpIHtcbiAgICB2YXIgcmVzdWx0QXJyYXkgPSBbXTtcbiAgICBpZiAoc3RyQXJyYXkubGVuZ3RoID09PSAwKSB7IHJldHVybiAnJzsgfVxuXG4gICAgaWYgKHR5cGVvZiBzdHJBcnJheVswXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1VybCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAnICsgc3RyQXJyYXlbMF0pO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBmaXJzdCBwYXJ0IGlzIGEgcGxhaW4gcHJvdG9jb2wsIHdlIGNvbWJpbmUgaXQgd2l0aCB0aGUgbmV4dCBwYXJ0LlxuICAgIGlmIChzdHJBcnJheVswXS5tYXRjaCgvXlteLzpdKzpcXC8qJC8pICYmIHN0ckFycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciBmaXJzdCA9IHN0ckFycmF5LnNoaWZ0KCk7XG4gICAgICBzdHJBcnJheVswXSA9IGZpcnN0ICsgc3RyQXJyYXlbMF07XG4gICAgfVxuXG4gICAgLy8gVGhlcmUgbXVzdCBiZSB0d28gb3IgdGhyZWUgc2xhc2hlcyBpbiB0aGUgZmlsZSBwcm90b2NvbCwgdHdvIHNsYXNoZXMgaW4gYW55dGhpbmcgZWxzZS5cbiAgICBpZiAoc3RyQXJyYXlbMF0ubWF0Y2goL15maWxlOlxcL1xcL1xcLy8pKSB7XG4gICAgICBzdHJBcnJheVswXSA9IHN0ckFycmF5WzBdLnJlcGxhY2UoL14oW14vOl0rKTpcXC8qLywgJyQxOi8vLycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJBcnJheVswXSA9IHN0ckFycmF5WzBdLnJlcGxhY2UoL14oW14vOl0rKTpcXC8qLywgJyQxOi8vJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHN0ckFycmF5W2ldO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVXJsIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICcgKyBjb21wb25lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tcG9uZW50ID09PSAnJykgeyBjb250aW51ZTsgfVxuXG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgLy8gUmVtb3ZpbmcgdGhlIHN0YXJ0aW5nIHNsYXNoZXMgZm9yIGVhY2ggY29tcG9uZW50IGJ1dCB0aGUgZmlyc3QuXG4gICAgICAgIGNvbXBvbmVudCA9IGNvbXBvbmVudC5yZXBsYWNlKC9eW1xcL10rLywgJycpO1xuICAgICAgfVxuICAgICAgaWYgKGkgPCBzdHJBcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICAgIC8vIFJlbW92aW5nIHRoZSBlbmRpbmcgc2xhc2hlcyBmb3IgZWFjaCBjb21wb25lbnQgYnV0IHRoZSBsYXN0LlxuICAgICAgICBjb21wb25lbnQgPSBjb21wb25lbnQucmVwbGFjZSgvW1xcL10rJC8sICcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciB0aGUgbGFzdCBjb21wb25lbnQgd2Ugd2lsbCBjb21iaW5lIG11bHRpcGxlIHNsYXNoZXMgdG8gYSBzaW5nbGUgb25lLlxuICAgICAgICBjb21wb25lbnQgPSBjb21wb25lbnQucmVwbGFjZSgvW1xcL10rJC8sICcvJyk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdEFycmF5LnB1c2goY29tcG9uZW50KTtcblxuICAgIH1cblxuICAgIHZhciBzdHIgPSByZXN1bHRBcnJheS5qb2luKCcvJyk7XG4gICAgLy8gRWFjaCBpbnB1dCBjb21wb25lbnQgaXMgbm93IHNlcGFyYXRlZCBieSBhIHNpbmdsZSBzbGFzaCBleGNlcHQgdGhlIHBvc3NpYmxlIGZpcnN0IHBsYWluIHByb3RvY29sIHBhcnQuXG5cbiAgICAvLyByZW1vdmUgdHJhaWxpbmcgc2xhc2ggYmVmb3JlIHBhcmFtZXRlcnMgb3IgaGFzaFxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXC8oXFw/fCZ8I1teIV0pL2csICckMScpO1xuXG4gICAgLy8gcmVwbGFjZSA/IGluIHBhcmFtZXRlcnMgd2l0aCAmXG4gICAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KCc/Jyk7XG4gICAgc3RyID0gcGFydHMuc2hpZnQoKSArIChwYXJ0cy5sZW5ndGggPiAwID8gJz8nOiAnJykgKyBwYXJ0cy5qb2luKCcmJyk7XG5cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5wdXQ7XG5cbiAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlucHV0ID0gYXJndW1lbnRzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dCA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9ybWFsaXplKGlucHV0KTtcbiAgfTtcblxufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJhc3NlcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaHR0cFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJodHRwc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwYXRoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInN0cmVhbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ0dHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidXJsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInV0aWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiemxpYlwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgzMjEpO1xuIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsInRoaXMiLCJwYXJhbGxlbCIsInNlcmlhbCIsInNlcmlhbE9yZGVyZWQiLCJjbGVhbiIsImtleSIsImpvYnMiLCJzdGF0ZSIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiYmluZCIsImRlZmVyIiwiY2FsbGJhY2siLCJpc0FzeW5jIiwiZXJyIiwicmVzdWx0IiwiZm4iLCJuZXh0VGljayIsInNldEltbWVkaWF0ZSIsInByb2Nlc3MiLCJzZXRUaW1lb3V0IiwiYXN5bmMiLCJhYm9ydCIsImxpc3QiLCJpdGVyYXRvciIsImluZGV4IiwiaXRlbSIsImxlbmd0aCIsInJ1bkpvYiIsImVycm9yIiwib3V0cHV0IiwicmVzdWx0cyIsInNvcnRNZXRob2QiLCJpc05hbWVkTGlzdCIsIkFycmF5IiwiaXNBcnJheSIsImluaXRTdGF0ZSIsImtleWVkTGlzdCIsInNpemUiLCJzb3J0IiwiYSIsImIiLCJpdGVyYXRlIiwidGVybWluYXRvciIsImFzY2VuZGluZyIsIml0ZXJhdG9ySGFuZGxlciIsImRlc2NlbmRpbmciLCJ1dGlscyIsInNldHRsZSIsImJ1aWxkRnVsbFBhdGgiLCJidWlsZFVSTCIsImh0dHAiLCJodHRwcyIsImh0dHBGb2xsb3ciLCJodHRwc0ZvbGxvdyIsInVybCIsInpsaWIiLCJWRVJTSU9OIiwidHJhbnNpdGlvbmFsRGVmYXVsdHMiLCJBeGlvc0Vycm9yIiwiQ2FuY2VsZWRFcnJvciIsImlzSHR0cHMiLCJzdXBwb3J0ZWRQcm90b2NvbHMiLCJzZXRQcm94eSIsIm9wdGlvbnMiLCJwcm94eSIsImxvY2F0aW9uIiwiaG9zdG5hbWUiLCJob3N0IiwicG9ydCIsInBhdGgiLCJhdXRoIiwiYmFzZTY0IiwiQnVmZmVyIiwiZnJvbSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJ0b1N0cmluZyIsImhlYWRlcnMiLCJiZWZvcmVSZWRpcmVjdCIsInJlZGlyZWN0aW9uIiwiaHJlZiIsImNvbmZpZyIsIlByb21pc2UiLCJyZXNvbHZlUHJvbWlzZSIsInJlamVjdFByb21pc2UiLCJvbkNhbmNlbGVkIiwiZG9uZSIsImNhbmNlbFRva2VuIiwidW5zdWJzY3JpYmUiLCJzaWduYWwiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVzb2x2ZSIsInZhbHVlIiwicmVqZWN0ZWQiLCJyZWplY3QiLCJkYXRhIiwiaGVhZGVyTmFtZXMiLCJuYW1lIiwidG9Mb3dlckNhc2UiLCJpc0Zvcm1EYXRhIiwiaXNGdW5jdGlvbiIsImdldEhlYWRlcnMiLCJhc3NpZ24iLCJpc1N0cmVhbSIsImlzQnVmZmVyIiwiaXNBcnJheUJ1ZmZlciIsIlVpbnQ4QXJyYXkiLCJpc1N0cmluZyIsIkVSUl9CQURfUkVRVUVTVCIsIm1heEJvZHlMZW5ndGgiLCJ1bmRlZmluZWQiLCJmdWxsUGF0aCIsImJhc2VVUkwiLCJwYXJzZWQiLCJwYXJzZSIsInByb3RvY29sIiwiaW5kZXhPZiIsInVybEF1dGgiLCJzcGxpdCIsImF1dGhvcml6YXRpb24iLCJpc0h0dHBzUmVxdWVzdCIsInRlc3QiLCJhZ2VudCIsImh0dHBzQWdlbnQiLCJodHRwQWdlbnQiLCJwYXJhbXMiLCJwYXJhbXNTZXJpYWxpemVyIiwicmVwbGFjZSIsImN1c3RvbUVyciIsIkVycm9yIiwibWVzc2FnZSIsImV4aXN0cyIsIm1ldGhvZCIsInRvVXBwZXJDYXNlIiwiYWdlbnRzIiwic29ja2V0UGF0aCIsInRyYW5zcG9ydCIsInByb3h5RW52Iiwic2xpY2UiLCJwcm94eVVybCIsImVudiIsInBhcnNlZFByb3h5VXJsIiwibm9Qcm94eUVudiIsIm5vX3Byb3h5IiwiTk9fUFJPWFkiLCJzaG91bGRQcm94eSIsIm1hcCIsInMiLCJ0cmltIiwic29tZSIsInByb3h5RWxlbWVudCIsInN1YnN0ciIsInByb3h5VXJsQXV0aCIsImlzSHR0cHNQcm94eSIsIm1heFJlZGlyZWN0cyIsImluc2VjdXJlSFRUUFBhcnNlciIsInJlcSIsInJlcXVlc3QiLCJyZXMiLCJhYm9ydGVkIiwic3RyZWFtIiwibGFzdFJlcXVlc3QiLCJzdGF0dXNDb2RlIiwiZGVjb21wcmVzcyIsInBpcGUiLCJjcmVhdGVVbnppcCIsInJlc3BvbnNlIiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInN0YXR1c01lc3NhZ2UiLCJyZXNwb25zZVR5cGUiLCJyZXNwb25zZUJ1ZmZlciIsInRvdGFsUmVzcG9uc2VCeXRlcyIsIm9uIiwiY2h1bmsiLCJwdXNoIiwibWF4Q29udGVudExlbmd0aCIsImRlc3Ryb3kiLCJFUlJfQkFEX1JFU1BPTlNFIiwicmVzcG9uc2VEYXRhIiwiY29uY2F0IiwicmVzcG9uc2VFbmNvZGluZyIsInN0cmlwQk9NIiwic29ja2V0Iiwic2V0S2VlcEFsaXZlIiwidGltZW91dCIsInBhcnNlSW50IiwiaXNOYU4iLCJFUlJfQkFEX09QVElPTl9WQUxVRSIsInRyYW5zaXRpb25hbCIsImNsYXJpZnlUaW1lb3V0RXJyb3IiLCJFVElNRURPVVQiLCJFQ09OTkFCT1JURUQiLCJjYW5jZWwiLCJ0eXBlIiwic3Vic2NyaWJlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImVuZCIsImNvb2tpZXMiLCJwYXJzZUhlYWRlcnMiLCJpc1VSTFNhbWVPcmlnaW4iLCJwYXJzZVByb3RvY29sIiwicmVxdWVzdERhdGEiLCJyZXF1ZXN0SGVhZGVycyIsImlzU3RhbmRhcmRCcm93c2VyRW52IiwiWE1MSHR0cFJlcXVlc3QiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkF1dGhvcml6YXRpb24iLCJidG9hIiwib25sb2FkZW5kIiwicmVzcG9uc2VIZWFkZXJzIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwicmVzcG9uc2VUZXh0Iiwib3BlbiIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJyZXNwb25zZVVSTCIsIm9uYWJvcnQiLCJvbmVycm9yIiwiRVJSX05FVFdPUksiLCJvbnRpbWVvdXQiLCJ0aW1lb3V0RXJyb3JNZXNzYWdlIiwieHNyZlZhbHVlIiwid2l0aENyZWRlbnRpYWxzIiwieHNyZkNvb2tpZU5hbWUiLCJyZWFkIiwieHNyZkhlYWRlck5hbWUiLCJ2YWwiLCJzZXRSZXF1ZXN0SGVhZGVyIiwiaXNVbmRlZmluZWQiLCJvbkRvd25sb2FkUHJvZ3Jlc3MiLCJvblVwbG9hZFByb2dyZXNzIiwidXBsb2FkIiwic2VuZCIsIkF4aW9zIiwibWVyZ2VDb25maWciLCJheGlvcyIsImNyZWF0ZUluc3RhbmNlIiwiZGVmYXVsdENvbmZpZyIsImNvbnRleHQiLCJpbnN0YW5jZSIsInByb3RvdHlwZSIsImV4dGVuZCIsImNyZWF0ZSIsImluc3RhbmNlQ29uZmlnIiwiQ2FuY2VsVG9rZW4iLCJpc0NhbmNlbCIsInRvRm9ybURhdGEiLCJDYW5jZWwiLCJhbGwiLCJwcm9taXNlcyIsInNwcmVhZCIsImlzQXhpb3NFcnJvciIsImV4ZWN1dG9yIiwiVHlwZUVycm9yIiwicHJvbWlzZSIsInRva2VuIiwidGhlbiIsIl9saXN0ZW5lcnMiLCJpIiwibCIsIm9uZnVsZmlsbGVkIiwiX3Jlc29sdmUiLCJyZWFzb24iLCJ0aHJvd0lmUmVxdWVzdGVkIiwibGlzdGVuZXIiLCJzcGxpY2UiLCJzb3VyY2UiLCJjIiwiY2FsbCIsIkVSUl9DQU5DRUxFRCIsImluaGVyaXRzIiwiX19DQU5DRUxfXyIsIkludGVyY2VwdG9yTWFuYWdlciIsImRpc3BhdGNoUmVxdWVzdCIsInZhbGlkYXRvciIsInZhbGlkYXRvcnMiLCJkZWZhdWx0cyIsImludGVyY2VwdG9ycyIsImNvbmZpZ09yVXJsIiwiYXNzZXJ0T3B0aW9ucyIsInNpbGVudEpTT05QYXJzaW5nIiwiYm9vbGVhbiIsImZvcmNlZEpTT05QYXJzaW5nIiwicmVxdWVzdEludGVyY2VwdG9yQ2hhaW4iLCJzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMiLCJpbnRlcmNlcHRvciIsInJ1bldoZW4iLCJzeW5jaHJvbm91cyIsInVuc2hpZnQiLCJmdWxmaWxsZWQiLCJyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4iLCJjaGFpbiIsImFwcGx5Iiwic2hpZnQiLCJuZXdDb25maWciLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJnZXRVcmkiLCJnZW5lcmF0ZUhUVFBNZXRob2QiLCJpc0Zvcm0iLCJjb2RlIiwidG9KU09OIiwiZGVzY3JpcHRpb24iLCJudW1iZXIiLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJjb2x1bW5OdW1iZXIiLCJzdGFjayIsImRlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiY3VzdG9tUHJvcHMiLCJheGlvc0Vycm9yIiwidG9GbGF0T2JqZWN0Iiwib2JqIiwiaGFuZGxlcnMiLCJ1c2UiLCJlamVjdCIsImlkIiwiaCIsImlzQWJzb2x1dGVVUkwiLCJjb21iaW5lVVJMcyIsInJlcXVlc3RlZFVSTCIsInRyYW5zZm9ybURhdGEiLCJ0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkIiwidHJhbnNmb3JtUmVxdWVzdCIsIm1lcmdlIiwiY29tbW9uIiwiYWRhcHRlciIsInRyYW5zZm9ybVJlc3BvbnNlIiwiY29uZmlnMSIsImNvbmZpZzIiLCJnZXRNZXJnZWRWYWx1ZSIsInRhcmdldCIsImlzUGxhaW5PYmplY3QiLCJtZXJnZURlZXBQcm9wZXJ0aWVzIiwicHJvcCIsInZhbHVlRnJvbUNvbmZpZzIiLCJkZWZhdWx0VG9Db25maWcyIiwibWVyZ2VEaXJlY3RLZXlzIiwibWVyZ2VNYXAiLCJjb25maWdWYWx1ZSIsInZhbGlkYXRlU3RhdHVzIiwiTWF0aCIsImZsb29yIiwiZm5zIiwibm9ybWFsaXplSGVhZGVyTmFtZSIsIkRFRkFVTFRfQ09OVEVOVF9UWVBFIiwic2V0Q29udGVudFR5cGVJZlVuc2V0IiwiaXNGaWxlIiwiaXNCbG9iIiwiaXNBcnJheUJ1ZmZlclZpZXciLCJidWZmZXIiLCJpc1VSTFNlYXJjaFBhcmFtcyIsImlzRmlsZUxpc3QiLCJpc09iamVjdFBheWxvYWQiLCJpc09iamVjdCIsImNvbnRlbnRUeXBlIiwiX0Zvcm1EYXRhIiwiRm9ybURhdGEiLCJyYXdWYWx1ZSIsInBhcnNlciIsImVuY29kZXIiLCJKU09OIiwiZSIsInN0cmluZ2lmeSIsInN0cmluZ2lmeVNhZmVseSIsInN0cmljdEpTT05QYXJzaW5nIiwidGhpc0FyZyIsImFyZ3MiLCJhcmd1bWVudHMiLCJlbmNvZGUiLCJzZXJpYWxpemVkUGFyYW1zIiwicGFydHMiLCJ2IiwiaXNEYXRlIiwidG9JU09TdHJpbmciLCJqb2luIiwiaGFzaG1hcmtJbmRleCIsInJlbGF0aXZlVVJMIiwid3JpdGUiLCJleHBpcmVzIiwiZG9tYWluIiwic2VjdXJlIiwiY29va2llIiwiaXNOdW1iZXIiLCJEYXRlIiwidG9HTVRTdHJpbmciLCJkb2N1bWVudCIsIm1hdGNoIiwiUmVnRXhwIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwicmVtb3ZlIiwibm93IiwicGF5bG9hZCIsIm9yaWdpblVSTCIsIm1zaWUiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJ1cmxQYXJzaW5nTm9kZSIsImNyZWF0ZUVsZW1lbnQiLCJyZXNvbHZlVVJMIiwic2V0QXR0cmlidXRlIiwic2VhcmNoIiwiaGFzaCIsInBhdGhuYW1lIiwiY2hhckF0Iiwid2luZG93IiwicmVxdWVzdFVSTCIsIm5vcm1hbGl6ZWROYW1lIiwiaWdub3JlRHVwbGljYXRlT2YiLCJsaW5lIiwiZXhlYyIsImFyciIsImZvcm1EYXRhIiwiY29udmVydFZhbHVlIiwiaXNUeXBlZEFycmF5IiwiQmxvYiIsImJ1aWxkIiwicGFyZW50S2V5IiwiZnVsbEtleSIsImVuZHNXaXRoIiwidG9BcnJheSIsImVsIiwiYXBwZW5kIiwicG9wIiwidGhpbmciLCJkZXByZWNhdGVkV2FybmluZ3MiLCJ2ZXJzaW9uIiwiZm9ybWF0TWVzc2FnZSIsIm9wdCIsImRlc2MiLCJvcHRzIiwiRVJSX0RFUFJFQ0FURUQiLCJjb25zb2xlIiwid2FybiIsInNjaGVtYSIsImFsbG93VW5rbm93biIsIkVSUl9CQURfT1BUSU9OIiwiY2FjaGUiLCJraW5kT2YiLCJzdHIiLCJraW5kT2ZUZXN0IiwiZ2V0UHJvdG90eXBlT2YiLCJoYXNPd25Qcm9wZXJ0eSIsIlR5cGVkQXJyYXkiLCJjb25zdHJ1Y3RvciIsInBhdHRlcm4iLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsInByb2R1Y3QiLCJhc3NpZ25WYWx1ZSIsImNvbnRlbnQiLCJjaGFyQ29kZUF0Iiwic3VwZXJDb25zdHJ1Y3RvciIsInByb3BzIiwic291cmNlT2JqIiwiZGVzdE9iaiIsImZpbHRlciIsIm1lcmdlZCIsImdldE93blByb3BlcnR5TmFtZXMiLCJzZWFyY2hTdHJpbmciLCJwb3NpdGlvbiIsIlN0cmluZyIsImxhc3RJbmRleCIsImlzUHVyZU9iamVjdCIsImluaXQiLCJjbG9uZVBhcmFtcyIsIkNsaWVudCIsImFwaUtleSIsImFwaVNlY3JldCIsImFwaVRva2VuIiwicmVzb3VyY2UiLCJyZXF1ZXN0XzEiLCJIdHRwTWV0aG9kc18xIiwiR2V0IiwiUG9zdCIsIlB1dCIsIkRlbGV0ZSIsInBhY2thZ2VKU09OIiwic2V0Q29uZmlnIiwic2V0T3B0aW9ucyIsInRva2VuQ29ubmVjdFN0cmF0ZWd5IiwiYmFzaWNDb25uZWN0U3RyYXRlZ3kiLCJjbG9uZWRQYXJhbXMiLCJfX2Fzc2lnbiIsImN1c3RvbUNvbmZpZyIsInNldFZhbHVlSWZOb3ROaWwiLCJmcmVlemUiLCJwYWNrYWdlX2pzb25fMSIsImluZGV4XzEiLCJpbmRleF8yIiwiX19leHRlbmRzIiwiTWFpbGpldCIsIl9fZXhwb3J0U3RhciIsIkh0dHBNZXRob2RzIiwiSlNPTmIiLCJzdG9yZUFzU3RyaW5nIiwiY2xpZW50IiwiY2xpZW50XzEiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsInN1YlBhdGgiLCJidWlsZFN1YlBhdGgiLCJhY3Rpb25QYXRoIiwiUmVxdWVzdCIsImdldFBhY2thZ2VWZXJzaW9uIiwiZ2V0QVBJVG9rZW4iLCJnZXRBUElLZXkiLCJnZXRBUElTZWNyZXQiLCJjbGllbnRDb25maWciLCJnZXRDb25maWciLCJfYSIsIl9iIiwiaXNDb250YWN0TGlzdFdpdGhDU1YiLCJpc0JhdGNoSm9iV2l0aENTViIsImlzU2VuZFJlc291cmNlIiwicmVzb3VyY2VDb250YWluU01TIiwicmVxdWVzdENvbmZpZyIsImdldFJlcXVlc3RCb2R5IiwiZ2V0VXNlckFnZW50IiwiZ2V0Q29udGVudFR5cGUiLCJkYXRhSXNTdHJpbmciLCJpc0pTT05SZXF1ZXN0ZWQiLCJwYXJzZVRvSlNPTmIiLCJpc0Jyb3dzZXIiLCJjcmVkZW50aWFscyIsImdldENyZWRlbnRpYWxzIiwiY2xpZW50T3B0aW9ucyIsImdldE9wdGlvbnMiLCJiYXNlVXJsIiwicGVyZm9ybUFQSUNhbGwiLCJidWlsZEZ1bGxVcmwiLCJzZXRCYXNlVVJMIiwiYm9keSIsIm1ha2VSZXF1ZXN0IiwiX2ciLCJheGlvc18xIiwiZXJyXzEiLCJfZiIsInN0YXR1c18xIiwiZXJyb3JNZXNzYWdlIiwiRXJyb3JNZXNzYWdlIiwib3JpZ2luYWxNZXNzYWdlIiwiZnVsbE1lc3NhZ2UiLCJNZXNzYWdlcyIsIl9jIiwiRXJyb3JzIiwiX2QiLCJfZSIsIkVycm9yQ29kZSIsIkVycm9ySWRlbnRpZmllciIsIkVycm9yUmVsYXRlZFRvIiwidGV4dCIsIkRyYWZ0Q2FtcGFpZ24iLCJFZGl0TW9kZSIsIkNhbXBhaWduRHJhZnRTdGF0dXMiLCJDYW1wYWlnbkRyYWZ0U2VuZGluZ1N0YXR1cyIsIlNlbnRDYW1wYWlnbiIsIkNhbXBhaWduVHlwZSIsIkNvbW1vbiIsIlBlcmlvZCIsIkJ1bGtDb250YWN0TWFuYWdlbWVudCIsIk1hbmFnZUNvbnRhY3RzQWN0aW9uIiwiSW1wb3J0TGlzdEFjdGlvbiIsIkltcG9ydENTVk1ldGhvZCIsIkNTVkltcG9ydFN0YXR1cyIsIkpvYlN0YXR1cyIsIkNvbnRhY3RQcm9wZXJ0aWVzIiwiRGF0YVR5cGUiLCJOYW1lU3BhY2UiLCJNZXNzYWdlIiwiTWVzc2FnZVN0YXRlIiwiRnJvbVR5cGUiLCJNZXNzYWdlU3RhdHVzIiwiQ3VycmVudE1lc3NhZ2VTdGF0dXMiLCJFdmVudFR5cGUiLCJTZWdtZW50YXRpb24iLCJTZWdtZW50U3RhdHVzIiwiU2VuZEVtYWlsVjNfMSIsIlRyYWNrT3BlbnMiLCJUcmFja0NsaWNrcyIsIlJlc3BvbnNlU3RhdHVzIiwiU2VuZGVyIiwiRW1haWxUeXBlIiwiU2VuZGVyU3RhdHVzIiwiRE5TIiwiREtJTUNvbmZpZ3VyYXRpb25DaGVja1N0YXR1cyIsIkRLSU1Db25maWd1cmF0aW9uU3RhdHVzIiwiU1BGQ29uZmlndXJhdGlvbkNoZWNrU3RhdHVzIiwiU1BGQ29uZmlndXJhdGlvblN0YXR1cyIsIkFQSUtleUNvbmZpZ3VyYXRpb24iLCJSdW5MZXZlbCIsIlN0YXRpc3RpYyIsIkNhbXBhaWduT3ZlcnZpZXdJRFR5cGUiLCJDYW1wYWlnbk92ZXJ2aWV3RWRpdE1vZGUiLCJDYW1wYWlnbk92ZXJ2aWV3RWRpdFR5cGUiLCJDb3VudGVyU291cmNlIiwiQ291bnRlclJlc29sdXRpb24iLCJDb3VudGVyVGltaW5nIiwiRW1haWxFdmVudCIsIlRlbXBsYXRlIiwiQ2F0ZWdvcmllcyIsIkNhdGVnb3JpZXNTZWxlY3Rpb25NZXRob2QiLCJPd25lclR5cGUiLCJQdXJwb3NlcyIsIlB1cnBvc2VzU2VsZWN0aW9uTWV0aG9kIiwiV2ViaG9vayIsIkV2ZW50VHlwZVZhbHVlIiwiU3RhdHVzIiwiZW51bWVyYWJsZSIsImdldCIsImlzTmlsXzEiLCJpc051bGxfMSIsImlzVW5kZWZpbmVkXzEiLCJpc1B1cmVPYmplY3RfMSIsInNldFZhbHVlSWZOb3ROaWxfMSIsInRhcmdldE9iamVjdCIsImdsb2JhbE9iamVjdCIsIkJpZ051bWJlciIsImlzTnVtZXJpYyIsIm1hdGhjZWlsIiwiY2VpbCIsIm1hdGhmbG9vciIsImJpZ251bWJlckVycm9yIiwidG9vTWFueURpZ2l0cyIsIkJBU0UiLCJMT0dfQkFTRSIsIk1BWF9TQUZFX0lOVEVHRVIiLCJQT1dTX1RFTiIsIlNRUlRfQkFTRSIsIk1BWCIsImJpdEZsb29yIiwibiIsImNvZWZmVG9TdHJpbmciLCJ6IiwiaiIsInIiLCJjb21wYXJlIiwieCIsInkiLCJ4YyIsInljIiwiayIsImludENoZWNrIiwibWluIiwibWF4IiwiaXNPZGQiLCJ0b0V4cG9uZW50aWFsIiwidG9GaXhlZFBvaW50IiwibGVuIiwienMiLCJjbG9uZSIsImNvbmZpZ09iamVjdCIsImRpdiIsImNvbnZlcnRCYXNlIiwicGFyc2VOdW1lcmljIiwicG93Ml81MyIsInJhbmRvbTUzYml0SW50IiwiYmFzZVByZWZpeCIsImRvdEFmdGVyIiwiZG90QmVmb3JlIiwiaXNJbmZpbml0eU9yTmFOIiwid2hpdGVzcGFjZU9yUGx1cyIsIlAiLCJ2YWx1ZU9mIiwiT05FIiwiREVDSU1BTF9QTEFDRVMiLCJST1VORElOR19NT0RFIiwiVE9fRVhQX05FRyIsIlRPX0VYUF9QT1MiLCJNSU5fRVhQIiwiTUFYX0VYUCIsIkNSWVBUTyIsIk1PRFVMT19NT0RFIiwiUE9XX1BSRUNJU0lPTiIsIkZPUk1BVCIsInByZWZpeCIsImdyb3VwU2l6ZSIsInNlY29uZGFyeUdyb3VwU2l6ZSIsImdyb3VwU2VwYXJhdG9yIiwiZGVjaW1hbFNlcGFyYXRvciIsImZyYWN0aW9uR3JvdXBTaXplIiwiZnJhY3Rpb25Hcm91cFNlcGFyYXRvciIsInN1ZmZpeCIsIkFMUEhBQkVUIiwiYWxwaGFiZXQiLCJjYXNlQ2hhbmdlZCIsImlzTnVtIiwiX2lzQmlnTnVtYmVyIiwic3Vic3RyaW5nIiwicm91bmQiLCJERUJVRyIsImZvcm1hdCIsInJtIiwiYzAiLCJuZSIsIm1heE9yTWluIiwibSIsIm5vcm1hbGlzZSIsInNkIiwiZCIsIm5pIiwicmQiLCJwb3dzMTAiLCJvdXQiLCJST1VORF9VUCIsIlJPVU5EX0RPV04iLCJST1VORF9DRUlMIiwiUk9VTkRfRkxPT1IiLCJST1VORF9IQUxGX1VQIiwiUk9VTkRfSEFMRl9ET1dOIiwiUk9VTkRfSEFMRl9FVkVOIiwiUk9VTkRfSEFMRl9DRUlMIiwiUk9VTkRfSEFMRl9GTE9PUiIsIkVVQ0xJRCIsInNldCIsInAiLCJjcnlwdG8iLCJnZXRSYW5kb21WYWx1ZXMiLCJyYW5kb21CeXRlcyIsIkVYUE9ORU5USUFMX0FUIiwiUkFOR0UiLCJpc0JpZ051bWJlciIsIm1heGltdW0iLCJsdCIsIm1pbmltdW0iLCJndCIsInJhbmRvbSIsImRwIiwicmFuZCIsIlVpbnQzMkFycmF5IiwiY29weSIsInN1bSIsInBsdXMiLCJkZWNpbWFsIiwidG9CYXNlT3V0IiwiYmFzZUluIiwiYmFzZU91dCIsImFyckwiLCJyZXZlcnNlIiwic2lnbiIsImNhbGxlcklzVG9TdHJpbmciLCJwb3ciLCJtdWx0aXBseSIsImJhc2UiLCJ0ZW1wIiwieGxvIiwieGhpIiwiY2FycnkiLCJrbG8iLCJraGkiLCJhTCIsImJMIiwiY21wIiwic3VidHJhY3QiLCJtb3JlIiwicHJvZCIsInByb2RMIiwicSIsInFjIiwicmVtIiwicmVtTCIsInJlbTAiLCJ4aSIsInhMIiwieWMwIiwieUwiLCJ5eiIsIk5hTiIsInAxIiwicDIiLCJhYnNvbHV0ZVZhbHVlIiwiYWJzIiwiY29tcGFyZWRUbyIsImRlY2ltYWxQbGFjZXMiLCJkaXZpZGVkQnkiLCJkaXZpZGVkVG9JbnRlZ2VyQnkiLCJpZGl2IiwiZXhwb25lbnRpYXRlZEJ5IiwiaGFsZiIsImlzTW9kRXhwIiwibklzQmlnIiwibklzTmVnIiwibklzT2RkIiwiaXNJbnRlZ2VyIiwibW9kIiwidGltZXMiLCJpbnRlZ2VyVmFsdWUiLCJpc0VxdWFsVG8iLCJlcSIsImlzRmluaXRlIiwiaXNHcmVhdGVyVGhhbiIsImlzR3JlYXRlclRoYW5PckVxdWFsVG8iLCJndGUiLCJpc0xlc3NUaGFuIiwiaXNMZXNzVGhhbk9yRXF1YWxUbyIsImx0ZSIsImlzTmVnYXRpdmUiLCJpc1Bvc2l0aXZlIiwiaXNaZXJvIiwibWludXMiLCJ0IiwieExUeSIsInhlIiwieWUiLCJtb2R1bG8iLCJtdWx0aXBsaWVkQnkiLCJ4Y0wiLCJ5Y0wiLCJ5bG8iLCJ5aGkiLCJ6YyIsInNxcnRCYXNlIiwibmVnYXRlZCIsInByZWNpc2lvbiIsInNoaWZ0ZWRCeSIsInNxdWFyZVJvb3QiLCJzcXJ0IiwicmVwIiwidG9GaXhlZCIsInRvRm9ybWF0IiwiZzEiLCJnMiIsImludFBhcnQiLCJmcmFjdGlvblBhcnQiLCJpc05lZyIsImludERpZ2l0cyIsInRvRnJhY3Rpb24iLCJtZCIsImQwIiwiZDEiLCJkMiIsImV4cCIsIm4wIiwibjEiLCJ0b051bWJlciIsInRvUHJlY2lzaW9uIiwidXRpbCIsIlN0cmVhbSIsIkRlbGF5ZWRTdHJlYW0iLCJDb21iaW5lZFN0cmVhbSIsIndyaXRhYmxlIiwicmVhZGFibGUiLCJkYXRhU2l6ZSIsIm1heERhdGFTaXplIiwicGF1c2VTdHJlYW1zIiwiX3JlbGVhc2VkIiwiX3N0cmVhbXMiLCJfY3VycmVudFN0cmVhbSIsIl9pbnNpZGVMb29wIiwiX3BlbmRpbmdOZXh0IiwiY29tYmluZWRTdHJlYW0iLCJvcHRpb24iLCJpc1N0cmVhbUxpa2UiLCJuZXdTdHJlYW0iLCJJbmZpbml0eSIsInBhdXNlU3RyZWFtIiwiX2NoZWNrRGF0YVNpemUiLCJfaGFuZGxlRXJyb3JzIiwicGF1c2UiLCJkZXN0IiwicmVzdW1lIiwiX2dldE5leHQiLCJfcmVhbEdldE5leHQiLCJfcGlwZU5leHQiLCJzZWxmIiwiX2VtaXRFcnJvciIsImVtaXQiLCJfcmVzZXQiLCJfdXBkYXRlRGF0YVNpemUiLCJ3IiwicGx1cmFsIiwibXMiLCJtc0FicyIsImlzUGx1cmFsIiwicGFyc2VGbG9hdCIsImxvbmciLCJmbXRTaG9ydCIsImZvcm1hdEFyZ3MiLCJ1c2VDb2xvcnMiLCJuYW1lc3BhY2UiLCJodW1hbml6ZSIsImRpZmYiLCJjb2xvciIsImxhc3RDIiwic2F2ZSIsIm5hbWVzcGFjZXMiLCJzdG9yYWdlIiwic2V0SXRlbSIsInJlbW92ZUl0ZW0iLCJsb2FkIiwiZ2V0SXRlbSIsIl9fbndqcyIsImRvY3VtZW50RWxlbWVudCIsInN0eWxlIiwiV2Via2l0QXBwZWFyYW5jZSIsImZpcmVidWciLCJleGNlcHRpb24iLCJ0YWJsZSIsIiQxIiwibG9jYWxTdG9yYWdlIiwibG9jYWxzdG9yYWdlIiwid2FybmVkIiwiY29sb3JzIiwibG9nIiwiZGVidWciLCJmb3JtYXR0ZXJzIiwiY3JlYXRlRGVidWciLCJwcmV2VGltZSIsIm5hbWVzcGFjZXNDYWNoZSIsImVuYWJsZWRDYWNoZSIsImVuYWJsZU92ZXJyaWRlIiwiZW5hYmxlZCIsImN1cnIiLCJOdW1iZXIiLCJwcmV2IiwiY29lcmNlIiwiZm9ybWF0dGVyIiwic2VsZWN0Q29sb3IiLCJjb25maWd1cmFibGUiLCJkZWxpbWl0ZXIiLCJuZXdEZWJ1ZyIsInRvTmFtZXNwYWNlIiwicmVnZXhwIiwiZGVmYXVsdCIsImRpc2FibGUiLCJuYW1lcyIsInNraXBzIiwiZW5hYmxlIiwiYnJvd3NlciIsInR0eSIsImluc3BlY3RPcHRzIiwic3RkZXJyIiwiY29sb3JDb2RlIiwiaGlkZURhdGUiLCJCb29sZWFuIiwiaXNhdHR5IiwiZmQiLCJkZXByZWNhdGUiLCJzdXBwb3J0c0NvbG9yIiwibGV2ZWwiLCJyZWR1Y2UiLCJfIiwibyIsImluc3BlY3QiLCJPIiwiX21heERhdGFTaXplRXhjZWVkZWQiLCJfYnVmZmVyZWRFdmVudHMiLCJkZWxheWVkU3RyZWFtIiwicmVhbEVtaXQiLCJfaGFuZGxlRW1pdCIsInNldEVuY29kaW5nIiwicmVsZWFzZSIsIl9jaGVja0lmTWF4RGF0YVNpemVFeGNlZWRlZCIsIlVSTCIsIldyaXRhYmxlIiwiYXNzZXJ0IiwiZXZlbnRzIiwiZXZlbnRIYW5kbGVycyIsImV2ZW50IiwiYXJnMSIsImFyZzIiLCJhcmczIiwiX3JlZGlyZWN0YWJsZSIsIlJlZGlyZWN0aW9uRXJyb3IiLCJjcmVhdGVFcnJvclR5cGUiLCJUb29NYW55UmVkaXJlY3RzRXJyb3IiLCJNYXhCb2R5TGVuZ3RoRXhjZWVkZWRFcnJvciIsIldyaXRlQWZ0ZXJFbmRFcnJvciIsIlJlZGlyZWN0YWJsZVJlcXVlc3QiLCJyZXNwb25zZUNhbGxiYWNrIiwiX3Nhbml0aXplT3B0aW9ucyIsIl9vcHRpb25zIiwiX2VuZGVkIiwiX2VuZGluZyIsIl9yZWRpcmVjdENvdW50IiwiX3JlZGlyZWN0cyIsIl9yZXF1ZXN0Qm9keUxlbmd0aCIsIl9yZXF1ZXN0Qm9keUJ1ZmZlcnMiLCJfb25OYXRpdmVSZXNwb25zZSIsIl9wcm9jZXNzUmVzcG9uc2UiLCJfcGVyZm9ybVJlcXVlc3QiLCJ3cmFwIiwicHJvdG9jb2xzIiwibmF0aXZlUHJvdG9jb2xzIiwic2NoZW1lIiwibmF0aXZlUHJvdG9jb2wiLCJ3cmFwcGVkUHJvdG9jb2wiLCJpbnB1dCIsInVybFN0ciIsInVybFRvT3B0aW9ucyIsImVxdWFsIiwid3JhcHBlZFJlcXVlc3QiLCJub29wIiwidXJsT2JqZWN0Iiwic3RhcnRzV2l0aCIsInJlbW92ZU1hdGNoaW5nSGVhZGVycyIsInJlZ2V4IiwibGFzdFZhbHVlIiwiaGVhZGVyIiwiZGVmYXVsdE1lc3NhZ2UiLCJDdXN0b21FcnJvciIsImNhdXNlIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJhYm9ydFJlcXVlc3QiLCJyZW1vdmVMaXN0ZW5lciIsIl9jdXJyZW50UmVxdWVzdCIsImVuY29kaW5nIiwiY3VycmVudFJlcXVlc3QiLCJzZXRIZWFkZXIiLCJyZW1vdmVIZWFkZXIiLCJtc2VjcyIsImRlc3Ryb3lPblRpbWVvdXQiLCJhZGRMaXN0ZW5lciIsInN0YXJ0VGltZXIiLCJfdGltZW91dCIsImNsZWFyVGltZW91dCIsImNsZWFyVGltZXIiLCJvbmNlIiwicHJvcGVydHkiLCJzZWFyY2hQb3MiLCJfY3VycmVudFVybCIsIl9pc1JlZGlyZWN0IiwiYnVmZmVycyIsIndyaXRlTmV4dCIsImZpbmlzaGVkIiwidHJhY2tSZWRpcmVjdHMiLCJmb2xsb3dSZWRpcmVjdHMiLCJyZXNwb25zZVVybCIsInJlZGlyZWN0cyIsIkhvc3QiLCJnZXRIZWFkZXIiLCJyZWRpcmVjdFVybCIsImN1cnJlbnRIb3N0SGVhZGVyIiwiY3VycmVudFVybFBhcnRzIiwiY3VycmVudEhvc3QiLCJjdXJyZW50VXJsIiwicmVkaXJlY3RVcmxQYXJ0cyIsInN1YmRvbWFpbiIsImRvdCIsImlzU3ViZG9tYWluIiwicmVzcG9uc2VEZXRhaWxzIiwicmVxdWVzdERldGFpbHMiLCJwYXJzZVVybCIsImZzIiwibWltZSIsImFzeW5ja2l0IiwicG9wdWxhdGUiLCJfb3ZlcmhlYWRMZW5ndGgiLCJfdmFsdWVMZW5ndGgiLCJfdmFsdWVzVG9NZWFzdXJlIiwiTElORV9CUkVBSyIsImZpZWxkIiwiZmlsZW5hbWUiLCJfZXJyb3IiLCJfbXVsdGlQYXJ0SGVhZGVyIiwiZm9vdGVyIiwiX211bHRpUGFydEZvb3RlciIsIl90cmFja0xlbmd0aCIsInZhbHVlTGVuZ3RoIiwia25vd25MZW5ndGgiLCJieXRlTGVuZ3RoIiwiX2xlbmd0aFJldHJpZXZlciIsInN0YXJ0Iiwic3RhdCIsImZpbGVTaXplIiwiY29udGVudERpc3Bvc2l0aW9uIiwiX2dldENvbnRlbnREaXNwb3NpdGlvbiIsIl9nZXRDb250ZW50VHlwZSIsImNvbnRlbnRzIiwiZ2V0Qm91bmRhcnkiLCJmaWxlcGF0aCIsIm5vcm1hbGl6ZSIsImJhc2VuYW1lIiwiX2h0dHBNZXNzYWdlIiwibG9va3VwIiwibmV4dCIsIl9sYXN0Qm91bmRhcnkiLCJ1c2VySGVhZGVycyIsImZvcm1IZWFkZXJzIiwic2V0Qm91bmRhcnkiLCJib3VuZGFyeSIsIl9ib3VuZGFyeSIsIl9nZW5lcmF0ZUJvdW5kYXJ5IiwiZ2V0QnVmZmVyIiwiZGF0YUJ1ZmZlciIsImFsbG9jIiwiZ2V0TGVuZ3RoU3luYyIsImhhc0tub3duTGVuZ3RoIiwiZ2V0TGVuZ3RoIiwiY2IiLCJzdWJtaXQiLCJvblJlc3BvbnNlIiwicmVzcG9uY2UiLCJkc3QiLCJzcmMiLCJmbGFnIiwiYXJndiIsInBvcyIsInRlcm1pbmF0b3JQb3MiLCJqc29uX3N0cmluZ2lmeSIsImpzb25fcGFyc2UiLCJzdXNwZWN0UHJvdG9SeCIsInN1c3BlY3RDb25zdHJ1Y3RvclJ4Iiwic3RyaWN0IiwiYWx3YXlzUGFyc2VBc0JpZyIsInVzZU5hdGl2ZUJpZ0ludCIsInByb3RvQWN0aW9uIiwiY29uc3RydWN0b3JBY3Rpb24iLCJhdCIsImNoIiwiZXNjYXBlZSIsImYiLCJzdHJpbmciLCJCaWdJbnQiLCJoZXgiLCJ1ZmZmZiIsInN0YXJ0QXQiLCJmcm9tQ2hhckNvZGUiLCJ3aGl0ZSIsIm9iamVjdCIsImFycmF5Iiwid29yZCIsInJldml2ZXIiLCJ3YWxrIiwiaG9sZGVyIiwiZ2FwIiwiaW5kZW50IiwiZXNjYXBhYmxlIiwibWV0YSIsInF1b3RlIiwicGFydGlhbCIsIm1pbmQiLCJyZXBsYWNlciIsInNwYWNlIiwiZXh0ZW5zaW9ucyIsInR5cGVzIiwicHJlZmVyZW5jZSIsImRiIiwiZXh0bmFtZSIsIkVYVFJBQ1RfVFlQRV9SRUdFWFAiLCJURVhUX1RZUEVfUkVHRVhQIiwiY2hhcnNldCIsImNoYXJzZXRzIiwiZXh0ZW5zaW9uIiwiZXh0cyIsInRvIiwib3MiLCJoYXNGbGFnIiwiZm9yY2VDb2xvciIsImdldFN1cHBvcnRMZXZlbCIsImlzVFRZIiwicGxhdGZvcm0iLCJvc1JlbGVhc2UiLCJ2ZXJzaW9ucyIsIm5vZGUiLCJDSV9OQU1FIiwiVEVBTUNJVFlfVkVSU0lPTiIsIkNPTE9SVEVSTSIsIlRFUk1fUFJPR1JBTV9WRVJTSU9OIiwiVEVSTV9QUk9HUkFNIiwiVEVSTSIsImhhc0Jhc2ljIiwiaGFzMjU2IiwiaGFzMTZtIiwidHJhbnNsYXRlTGV2ZWwiLCJGT1JDRV9DT0xPUiIsInN0ZG91dCIsInN0ckFycmF5IiwicmVzdWx0QXJyYXkiLCJmaXJzdCIsImNvbXBvbmVudCIsImRlZmluaXRpb24iLCJyZXF1aXJlIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/dist/mailjet.node.js.LICENSE.txt b/dist/mailjet.node.js.LICENSE.txt index a1cf196..566055e 100644 --- a/dist/mailjet.node.js.LICENSE.txt +++ b/dist/mailjet.node.js.LICENSE.txt @@ -12,4 +12,4 @@ * MIT Licensed */ -/*! node-mailjet v6.0.3 */ +/*! node-mailjet v6.0.4 */ diff --git a/dist/mailjet.web.js b/dist/mailjet.web.js index 8ea21ea..7f3c503 100644 --- a/dist/mailjet.web.js +++ b/dist/mailjet.web.js @@ -1,3 +1,3 @@ /*! For license information please see mailjet.web.js.LICENSE.txt */ -define((function(){return e={9669:function(e,t,n){e.exports=n(1609)},5448:function(e,t,n){"use strict";var r=n(4867),o=n(6026),i=n(4372),s=n(5327),a=n(4097),u=n(4109),c=n(7985),f=n(7874),l=n(2648),p=n(644),d=n(205);e.exports=function(e){return new Promise((function(t,n){var h,g=e.data,m=e.headers,y=e.responseType;function v(){e.cancelToken&&e.cancelToken.unsubscribe(h),e.signal&&e.signal.removeEventListener("abort",h)}r.isFormData(g)&&r.isStandardBrowserEnv()&&delete m["Content-Type"];var b=new XMLHttpRequest;if(e.auth){var w=e.auth.username||"",S=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";m.Authorization="Basic "+btoa(w+":"+S)}var O=a(e.baseURL,e.url);function E(){if(b){var r="getAllResponseHeaders"in b?u(b.getAllResponseHeaders()):null,i={data:y&&"text"!==y&&"json"!==y?b.response:b.responseText,status:b.status,statusText:b.statusText,headers:r,config:e,request:b};o((function(e){t(e),v()}),(function(e){n(e),v()}),i),b=null}}if(b.open(e.method.toUpperCase(),s(O,e.params,e.paramsSerializer),!0),b.timeout=e.timeout,"onloadend"in b?b.onloadend=E:b.onreadystatechange=function(){b&&4===b.readyState&&(0!==b.status||b.responseURL&&0===b.responseURL.indexOf("file:"))&&setTimeout(E)},b.onabort=function(){b&&(n(new l("Request aborted",l.ECONNABORTED,e,b)),b=null)},b.onerror=function(){n(new l("Network Error",l.ERR_NETWORK,e,b,b)),b=null},b.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||f;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new l(t,r.clarifyTimeoutError?l.ETIMEDOUT:l.ECONNABORTED,e,b)),b=null},r.isStandardBrowserEnv()){var A=(e.withCredentials||c(O))&&e.xsrfCookieName?i.read(e.xsrfCookieName):void 0;A&&(m[e.xsrfHeaderName]=A)}"setRequestHeader"in b&&r.forEach(m,(function(e,t){void 0===g&&"content-type"===t.toLowerCase()?delete m[t]:b.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(b.withCredentials=!!e.withCredentials),y&&"json"!==y&&(b.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&b.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&b.upload&&b.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(h=function(e){b&&(n(!e||e&&e.type?new p:e),b.abort(),b=null)},e.cancelToken&&e.cancelToken.subscribe(h),e.signal&&(e.signal.aborted?h():e.signal.addEventListener("abort",h))),g||(g=null);var C=d(O);C&&-1===["http","https","file"].indexOf(C)?n(new l("Unsupported protocol "+C+":",l.ERR_BAD_REQUEST,e)):b.send(g)}))}},1609:function(e,t,n){"use strict";var r=n(4867),o=n(1849),i=n(321),s=n(7185),a=function e(t){var n=new i(t),a=o(i.prototype.request,n);return r.extend(a,i.prototype,n),r.extend(a,n),a.create=function(n){return e(s(t,n))},a}(n(5546));a.Axios=i,a.CanceledError=n(644),a.CancelToken=n(4972),a.isCancel=n(6502),a.VERSION=n(7288).version,a.toFormData=n(7675),a.AxiosError=n(2648),a.Cancel=a.CanceledError,a.all=function(e){return Promise.all(e)},a.spread=n(8713),a.isAxiosError=n(6268),e.exports=a,e.exports.default=a},4972:function(e,t,n){"use strict";var r=n(644);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(u)})),e.exports=l},7874:function(e){"use strict";e.exports={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}},7288:function(e){e.exports={version:"0.27.2"}},1849:function(e){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([n]):s[t]?s[t]+", "+n:n}})),s):s}},205:function(e){"use strict";e.exports=function(e){var t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}},8713:function(e){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},7675:function(e,t,n){"use strict";var r=n(4867);e.exports=function(e,t){t=t||new FormData;var n=[];function o(e){return null===e?"":r.isDate(e)?e.toISOString():r.isArrayBuffer(e)||r.isTypedArray(e)?"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}return function e(i,s){if(r.isPlainObject(i)||r.isArray(i)){if(-1!==n.indexOf(i))throw Error("Circular reference detected in "+s);n.push(i),r.forEach(i,(function(n,i){if(!r.isUndefined(n)){var a,u=s?s+"."+i:i;if(n&&!s&&"object"==typeof n)if(r.endsWith(i,"{}"))n=JSON.stringify(n);else if(r.endsWith(i,"[]")&&(a=r.toArray(n)))return void a.forEach((function(e){!r.isUndefined(e)&&t.append(u,o(e))}));e(n,u)}})),n.pop()}else t.append(s,o(i))}(e),t}},4875:function(e,t,n){"use strict";var r=n(7288).version,o=n(2648),i={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){i[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var s={};i.transitional=function(e,t,n){function i(e,t){return"[Axios v"+r+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,r,a){if(!1===e)throw new o(i(r," has been removed"+(t?" in "+t:"")),o.ERR_DEPRECATED);return t&&!s[r]&&(s[r]=!0,console.warn(i(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,a)}},e.exports={assertOptions:function(e,t,n){if("object"!=typeof e)throw new o("options must be an object",o.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),i=r.length;i-- >0;){var s=r[i],a=t[s];if(a){var u=e[s],c=void 0===u||a(u,s,e);if(!0!==c)throw new o("option "+s+" must be "+c,o.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new o("Unknown option "+s,o.ERR_BAD_OPTION)}},validators:i}},4867:function(e,t,n){"use strict";var r,o=n(1849),i=Object.prototype.toString,s=(r=Object.create(null),function(e){var t=i.call(e);return r[t]||(r[t]=t.slice(8,-1).toLowerCase())});function a(e){return e=e.toLowerCase(),function(t){return s(t)===e}}function u(e){return Array.isArray(e)}function c(e){return void 0===e}var f=a("ArrayBuffer");function l(e){return null!==e&&"object"==typeof e}function p(e){if("object"!==s(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}var d=a("Date"),h=a("File"),g=a("Blob"),m=a("FileList");function y(e){return"[object Function]"===i.call(e)}var v=a("URLSearchParams");function b(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),u(e))for(var n=0,r=e.length;n0;)s[i=r[o]]||(t[i]=e[i],s[i]=!0);e=Object.getPrototypeOf(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:s,kindOfTest:a,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;var t=e.length;if(c(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},isTypedArray:S,isFileList:m}},1076:function(e,t,n){"use strict";function r(e){return r="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},r(e)}var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]-1?"text/plain":"application/json"},e.prototype.getRequestBody=function(e){return[g.default.Put,g.default.Post,g.default.Delete].includes(this.method)?e:void 0},e.prototype.buildFullUrl=function(){var t,n,r=this.client.getConfig(),o=null!==(t=this.config.host)&&void 0!==t?t:r.host,i=null!==(n=this.config.version)&&void 0!==n?n:r.version;return(0,l.default)(e.protocol,o,i,this.subPath,this.url)},e.prototype.buildSubPath=function(){if(this.actionPath){var e="contactslist"===this.resource&&"csvdata/text:plain"===this.actionPath,t="batchjob"===this.resource&&"csverror/text:csv"===this.actionPath;return e||t?"DATA":this.subPath}var n="send"===this.resource,r=this.resource.indexOf("sms")>-1;return n||r?"":"REST"},e.prototype.makeRequest=function(t,n,r){var i,s={url:t,params:r,data:this.getRequestBody(n),method:this.method,responseType:"json",headers:{"User-Agent":this.getUserAgent(),"Content-Type":this.getContentType(t)},transformResponse:function(t){var n="string"==typeof t,r="json"===this.responseType;return t&&n&&r?e.parseToJSONb(t):t}};e.isBrowser()&&(s.headers["X-User-Agent"]=s.headers["User-Agent"]);var a=this.getCredentials();a.apiToken?s.headers.Authorization="Bearer ".concat(a.apiToken):s.auth={username:a.apiKey,password:a.apiSecret};var u=this.client.getConfig(),c=this.client.getOptions();c.timeout&&(s.timeout=c.timeout),c.proxy&&(s.proxy=c.proxy),c.headers&&Object.keys(c.headers).length>0&&(s.headers=o(o({},s.headers),c.headers));var f=null!==(i=this.config.output)&&void 0!==i?i:u.output;return f&&(s.responseType=f),c.maxBodyLength&&(s.maxBodyLength=c.maxBodyLength),c.maxContentLength&&(s.maxContentLength=c.maxContentLength),(0,d.default)(s)},e.prototype.setBaseURL=function(e){return this.url=e.toLowerCase(),this},e.prototype.id=function(e){if(!["string","number"].includes(r(e)))throw new Error('Argument "value" must be string or number');return this.url=(0,l.default)(this.url,e.toString()),this},e.prototype.action=function(e){if("string"!=typeof e)throw new Error('Argument "name" must be string');switch(this.actionPath=e.toLowerCase(),this.actionPath){case"csvdata":this.actionPath="csvdata/text:plain";break;case"csverror":this.actionPath="csverror/text:csv"}return this.url=(0,l.default)(this.url,this.actionPath),this.subPath=this.buildSubPath(),this},e.prototype.request=function(e,t,n){var r,o,i,s,a;return void 0===e&&(e={}),void 0===t&&(t={}),void 0===n&&(n=!0),u(this,void 0,void 0,(function(){var u,f,l,p,g,m,y,v,b,w;return c(this,(function(c){switch(c.label){case 0:if(u=this.buildFullUrl(),this.setBaseURL(this.resource),!n)return[2,{body:v=this.getRequestBody(e),params:t,url:u}];c.label=1;case 1:return c.trys.push([1,3,,4]),[4,this.makeRequest(u,e,t)];case 2:return[2,{response:f=c.sent(),body:f.data}];case 3:if((l=c.sent())instanceof d.AxiosError)throw(p=new Error).code=l.code,p.config=l.config,l.response?(g=l.response,m=g.status,y=g.statusText,v=g.data,p.response=l.response,p.statusCode=m,p.statusText=y,b=null!==(r=null==v?void 0:v.ErrorMessage)&&void 0!==r?r:l.message,p.originalMessage=b,p.message='Unsuccessful: Status Code: "'.concat(p.statusCode,'" Message: "').concat(b,'"'),v&&("string"==typeof(w=null===(a=null===(s=null===(i=null===(o=v.Messages)||void 0===o?void 0:o[0])||void 0===i?void 0:i.Errors)||void 0===s?void 0:s[0])||void 0===a?void 0:a.ErrorMessage)&&(p.message+=";\n".concat(w)),(0,h.setValueIfNotNil)(p,"ErrorMessage",v.ErrorMessage),(0,h.setValueIfNotNil)(p,"ErrorCode",v.ErrorCode),(0,h.setValueIfNotNil)(p,"ErrorIdentifier",v.ErrorIdentifier),(0,h.setValueIfNotNil)(p,"ErrorRelatedTo",v.ErrorRelatedTo))):(p.response=null,p.statusCode=null,p.statusText=null,p.originalMessage=l.message,p.message='Unsuccessful: Error Code: "'.concat(p.code,'" Message: "').concat(l.message,'"')),p;throw l;case 4:return[2]}}))}))},e.parseToJSONb=function(e){if("string"!=typeof e)throw new Error('Argument "text" must be string');var t;try{t=y.parse(e)}catch(e){t={}}return t},e.isBrowser=function(){return"object"===("undefined"==typeof window?"undefined":r(window))},e.protocol="https://",e}();t.default=v},5917:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SentCampaign=t.DraftCampaign=void 0,function(e){!function(e){e.Tool2="tool2",e.HTML2="html2",e.MJML="mjml"}(e.EditMode||(e.EditMode={})),function(e){e[e.AXCanceled=-3]="AXCanceled",e[e.Deleted=-2]="Deleted",e[e.Archived=-1]="Archived",e[e.Draft=0]="Draft",e[e.Programmed=1]="Programmed",e[e.Sent=2]="Sent",e[e.AXTested=3]="AXTested",e[e.AXSelected=4]="AXSelected"}(e.CampaignDraftStatus||(e.CampaignDraftStatus={})),function(e){e.AXCancelled="AXCancelled",e.Deleted="Deleted",e.Archived="Archived",e.Draft="Draft",e.Programmed="Programmed",e.Sent="Sent",e.AXTested="AXTested",e.AXSelected="AXSelected"}(e.CampaignDraftSendingStatus||(e.CampaignDraftSendingStatus={}))}(t.DraftCampaign||(t.DraftCampaign={})),function(e){!function(e){e[e.Transactional=1]="Transactional",e[e.Marketing=2]="Marketing",e[e.Unknown=3]="Unknown"}(e.CampaignType||(e.CampaignType={}))}(t.SentCampaign||(t.SentCampaign={}))},7566:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Common=void 0,function(e){!function(e){e.Day="Day",e.Week="Week",e.Month="Month",e.Year="Year"}(e.Period||(e.Period={}))}(t.Common||(t.Common={}))},235:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContactProperties=t.BulkContactManagement=void 0,function(e){!function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.Remove="remove",e.UnSub="unsub"}(e.ManageContactsAction||(e.ManageContactsAction={})),function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.UnSub="unsub",e.DuplicateOverride="duplicate-override",e.DuplicateNoOverride="duplicate-no-override"}(e.ImportListAction||(e.ImportListAction={})),function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.Remove="remove",e.UnSub="unsub",e.ExcludeMarketing="excludemarketing",e.IncludeMarketing="includemarketing"}(e.ImportCSVMethod||(e.ImportCSVMethod={})),function(e){e.Upload="Upload",e.Completed="Completed",e.Abort="Abort"}(e.CSVImportStatus||(e.CSVImportStatus={})),function(e){e.Completed="Completed",e.InProgress="In Progress",e.Error="Error"}(e.JobStatus||(e.JobStatus={}))}(t.BulkContactManagement||(t.BulkContactManagement={})),function(e){!function(e){e.Str="str",e.Int="int",e.Float="float",e.Bool="bool",e.DateTime="datetime"}(e.DataType||(e.DataType={})),function(e){e.Static="static",e.Historic="historic"}(e.NameSpace||(e.NameSpace={}))}(t.ContactProperties||(t.ContactProperties={}))},8354:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Message=void 0,function(e){!function(e){e[e.UserUnknown=1]="UserUnknown",e[e.MailboxInactive=2]="MailboxInactive",e[e.QuotaExceeded=3]="QuotaExceeded",e[e.InvalidDomain=4]="InvalidDomain",e[e.NoMailHost=5]="NoMailHost",e[e.RelayOrAccessDenied=6]="RelayOrAccessDenied",e[e.SenderBlocked=7]="SenderBlocked",e[e.ContentBlocked=8]="ContentBlocked",e[e.PolicyIssue=9]="PolicyIssue",e[e.SystemIssue=10]="SystemIssue",e[e.ProtocolIssue=11]="ProtocolIssue",e[e.ConnectionIssue=12]="ConnectionIssue",e[e.GreyListed=13]="GreyListed",e[e.PreBlocked=14]="PreBlocked",e[e.DuplicateInCampaign=15]="DuplicateInCampaign",e[e.SpamPreBlocked=16]="SpamPreBlocked",e[e.BadOrEmptyTemplate=17]="BadOrEmptyTemplate",e[e.ErrorInTemplateLanguage=18]="ErrorInTemplateLanguage",e[e.TypoFix=19]="TypoFix",e[e.BlackListed=20]="BlackListed",e[e.SpamReporter=21]="SpamReporter"}(e.MessageState||(e.MessageState={})),function(e){e[e.Transactional=1]="Transactional",e[e.Marketing=2]="Marketing",e[e.Unknown=3]="Unknown"}(e.FromType||(e.FromType={})),function(e){e[e.Processed=0]="Processed",e[e.Queued=1]="Queued",e[e.Sent=2]="Sent",e[e.Opened=3]="Opened",e[e.Clicked=4]="Clicked",e[e.Bounce=5]="Bounce",e[e.Spam=6]="Spam",e[e.Unsub=7]="Unsub",e[e.Blocked=8]="Blocked",e[e.SoftBounce=9]="SoftBounce",e[e.HardBounce=10]="HardBounce",e[e.Deferred=11]="Deferred"}(e.MessageStatus||(e.MessageStatus={})),function(e){e.Unknown="unknown",e.Queued="queued",e.Sent="sent",e.Opened="opened",e.Clicked="clicked",e.Bounce="bounce",e.Spam="spam",e.Unsub="unsub",e.Blocked="blocked",e.HardBounced="hardbounced",e.SoftBounced="softbounced",e.Deferred="deferred"}(e.CurrentMessageStatus||(e.CurrentMessageStatus={})),function(e){e.Sent="sent",e.Opened="opened",e.Clicked="clicked",e.Bounced="bounced",e.Blocked="blocked",e.Unsub="unsub",e.Spam="spam"}(e.EventType||(e.EventType={}))}(t.Message||(t.Message={}))},3635:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Segmentation=void 0,function(e){!function(e){e.Used="used",e.UnUsed="unused",e.Deleted="deleted"}(e.SegmentStatus||(e.SegmentStatus={}))}(t.Segmentation||(t.Segmentation={}))},7410:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendEmailV3_1=void 0,function(e){!function(e){e.AccountDefault="account_default",e.Disabled="disabled",e.Enabled="enabled"}(e.TrackOpens||(e.TrackOpens={})),function(e){e.AccountDefault="account_default",e.Disabled="disabled",e.Enabled="enabled"}(e.TrackClicks||(e.TrackClicks={})),function(e){e.Success="success",e.Error="error"}(e.ResponseStatus||(e.ResponseStatus={}))}(t.SendEmailV3_1||(t.SendEmailV3_1={}))},2256:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DNS=t.Sender=void 0,function(e){!function(e){e.Transactional="transactional",e.Bulk="bulk",e.Unknown="unknown"}(e.EmailType||(e.EmailType={})),function(e){e.Inactive="Inactive",e.Active="Active",e.Deleted="Deleted"}(e.SenderStatus||(e.SenderStatus={}))}(t.Sender||(t.Sender={})),function(e){!function(e){e.OK="OK",e.Error="Error",e.NotChecked="Not checked"}(e.DKIMConfigurationCheckStatus||(e.DKIMConfigurationCheckStatus={})),function(e){e.OK="OK",e.Error="Error"}(e.DKIMConfigurationStatus||(e.DKIMConfigurationStatus={})),function(e){e.OK="OK",e.Error="Error",e.NotChecked="Not checked",e.NotFound="Not found"}(e.SPFConfigurationCheckStatus||(e.SPFConfigurationCheckStatus={})),function(e){e.OK="OK",e.Error="Error"}(e.SPFConfigurationStatus||(e.SPFConfigurationStatus={}))}(t.DNS||(t.DNS={}))},5295:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.APIKeyConfiguration=void 0,function(e){!function(e){e.Normal="Normal",e.SoftLock="Softlock",e.HardLock="Hardlock"}(e.RunLevel||(e.RunLevel={}))}(t.APIKeyConfiguration||(t.APIKeyConfiguration={}))},6083:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Statistic=void 0,function(e){!function(e){e.SentCampaign="Campaign",e.ABTesting="AX",e.Draft="NL"}(e.CampaignOverviewIDType||(e.CampaignOverviewIDType={})),function(e){e.Tool="tool",e.HTML="html",e.Tool2="tool2",e.HTML2="html2",e.MJML="mjml"}(e.CampaignOverviewEditMode||(e.CampaignOverviewEditMode={})),function(e){e.Full="full",e.Unknown="unknown"}(e.CampaignOverviewEditType||(e.CampaignOverviewEditType={})),function(e){e.Campaign="Campaign",e.APIKey="APIKey",e.List="List",e.Sender="Sender"}(e.CounterSource||(e.CounterSource={})),function(e){e.Highest="Highest",e.Hour="Hour",e.Day="Day",e.Lifetime="Lifetime"}(e.CounterResolution||(e.CounterResolution={})),function(e){e.Message="Message",e.Event="Event"}(e.CounterTiming||(e.CounterTiming={})),function(e){e.Open="open",e.Click="click"}(e.EmailEvent||(e.EmailEvent={}))}(t.Statistic||(t.Statistic={}))},4098:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Template=void 0,function(e){!function(e){e.Full="full",e.Basic="basic",e.NewsLetter="newsletter",e.ECommerce="e-commerce",e.Events="events",e.Travel="travel",e.Sports="sports",e.Welcome="welcome",e.ContactPropertyUpdate="contact-property-update",e.Support="support",e.Invoice="invoice",e.Anniversary="anniversary",e.Account="account",e.Activation="activation"}(e.Categories||(e.Categories={})),function(e){e.ContainsAny="containsany",e.ContainsAll="containsall",e.IsSubSet="issubset"}(e.CategoriesSelectionMethod||(e.CategoriesSelectionMethod={})),function(e){e[e.DragAndDropBuilder=1]="DragAndDropBuilder",e[e.HTMLBuilder=2]="HTMLBuilder",e[e.SavedSectionBuilder=3]="SavedSectionBuilder",e[e.MJMLBuilder=4]="MJMLBuilder"}(e.EditMode||(e.EditMode={})),function(e){e.ApiKey="apikey",e.User="user",e.Global="global"}(e.OwnerType||(e.OwnerType={})),function(e){e.Marketing="marketing",e.Transactional="transactional",e.Automation="automation"}(e.Purposes||(e.Purposes={})),function(e){e.ContainsAny="containsany",e.ContainsAll="containsall",e.IsSubSet="issubset"}(e.PurposesSelectionMethod||(e.PurposesSelectionMethod={}))}(t.Template||(t.Template={}))},1174:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Webhook=void 0,function(e){!function(e){e.Open="open",e.Click="click",e.Bounce="bounce",e.Spam="spam",e.Blocked="blocked",e.UnSub="unsub",e.Sent="sent"}(e.EventType||(e.EventType={})),function(e){e[e.Click=1]="Click",e[e.Bounce=2]="Bounce",e[e.Spam=3]="Spam",e[e.Blocked=4]="Blocked",e[e.Unsubscribe=5]="Unsubscribe",e[e.Open=6]="Open",e[e.Sent=7]="Sent"}(e.EventTypeValue||(e.EventTypeValue={})),function(e){e.Dead="dead",e.Alive="alive"}(e.Status||(e.Status={}))}(t.Webhook||(t.Webhook={}))},4310:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.APIKeyConfiguration=t.DNS=t.Sender=t.Webhook=t.Statistic=t.Template=t.Segmentation=t.SentCampaign=t.DraftCampaign=t.ContactProperties=t.BulkContactManagement=t.Message=t.SendEmailV3_1=t.Common=void 0;var r=n(7566);Object.defineProperty(t,"Common",{enumerable:!0,get:function(){return r.Common}});var o=n(7410);Object.defineProperty(t,"SendEmailV3_1",{enumerable:!0,get:function(){return o.SendEmailV3_1}});var i=n(8354);Object.defineProperty(t,"Message",{enumerable:!0,get:function(){return i.Message}});var s=n(235);Object.defineProperty(t,"BulkContactManagement",{enumerable:!0,get:function(){return s.BulkContactManagement}}),Object.defineProperty(t,"ContactProperties",{enumerable:!0,get:function(){return s.ContactProperties}});var a=n(5917);Object.defineProperty(t,"DraftCampaign",{enumerable:!0,get:function(){return a.DraftCampaign}}),Object.defineProperty(t,"SentCampaign",{enumerable:!0,get:function(){return a.SentCampaign}});var u=n(3635);Object.defineProperty(t,"Segmentation",{enumerable:!0,get:function(){return u.Segmentation}});var c=n(4098);Object.defineProperty(t,"Template",{enumerable:!0,get:function(){return c.Template}});var f=n(6083);Object.defineProperty(t,"Statistic",{enumerable:!0,get:function(){return f.Statistic}});var l=n(1174);Object.defineProperty(t,"Webhook",{enumerable:!0,get:function(){return l.Webhook}});var p=n(2256);Object.defineProperty(t,"Sender",{enumerable:!0,get:function(){return p.Sender}}),Object.defineProperty(t,"DNS",{enumerable:!0,get:function(){return p.DNS}});var d=n(5295);Object.defineProperty(t,"APIKeyConfiguration",{enumerable:!0,get:function(){return d.APIKeyConfiguration}})},9006:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setValueIfNotNil=t.isPureObject=t.isUndefined=t.isNull=t.isNil=void 0;var o=r(n(1808));t.isNil=o.default;var i=r(n(7376));t.isNull=i.default;var s=r(n(5034));t.isUndefined=s.default;var a=r(n(1818));t.isPureObject=a.default;var u=r(n(1190));t.setValueIfNotNil=u.default},1808:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(7376)),i=r(n(5034));t.default=function(e){return(0,i.default)(e)||(0,o.default)(e)}},7376:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return null===e}},1818:function(e,t){"use strict";function n(e){return n="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},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return"object"===n(e)&&null!==e&&(Object.getPrototypeOf(e)===Object.prototype||null===Object.getPrototypeOf(e))}},5034:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return void 0===e}},1190:function(e,t,n){"use strict";function r(e){return r="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},r(e)}var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(1808)),s=o(n(7376));t.default=function(e,t,n){if("object"!==r(e)||(0,s.default)(e))throw Error('Argument "targetObject" is not object');if(!t)throw Error('Argument "path" is required');(0,i.default)(n)||(e[t]=n)}},4431:function(e,t,n){var r;!function(o){"use strict";var i,s=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,a=Math.ceil,u=Math.floor,c="[BigNumber Error] ",f=c+"Number primitive has more than 15 significant digits: ",l=1e14,p=14,d=9007199254740991,h=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],g=1e7,m=1e9;function y(e){var t=0|e;return e>0||e===t?t:t-1}function v(e){for(var t,n,r=1,o=e.length,i=e[0]+"";rc^n?1:-1;for(a=(u=o.length)<(c=i.length)?u:c,s=0;si[s]^n?1:-1;return u==c?0:u>c^n?1:-1}function w(e,t,n,r){if(en||e!==u(e))throw Error(c+(r||"Argument")+("number"==typeof e?en?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function S(e){var t=e.c.length-1;return y(e.e/p)==t&&e.c[t]%2!=0}function O(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function E(e,t,n){var r,o;if(t<0){for(o=n+".";++t;o+=n);e=o+e}else if(++t>(r=e.length)){for(o=n,t-=r;--t;o+=n);e+=o}else tI?y.c=y.e=null:e.e=10;l/=10,c++);return void(c>I?y.c=y.e=null:(y.e=c,y.c=[e]))}m=String(e)}else{if(!s.test(m=String(e)))return o(y,m,h);y.s=45==m.charCodeAt(0)?(m=m.slice(1),-1):1}(c=m.indexOf("."))>-1&&(m=m.replace(".","")),(l=m.search(/e/i))>0?(c<0&&(c=l),c+=+m.slice(l+1),m=m.substring(0,l)):c<0&&(c=m.length)}else{if(w(t,2,V.length,"Base"),10==t)return W(y=new H(e),T+y.e+1,B);if(m=String(e),h="number"==typeof e){if(0*e!=0)return o(y,m,h,t);if(y.s=1/e<0?(m=m.slice(1),-1):1,H.DEBUG&&m.replace(/^0\.0*|\./,"").length>15)throw Error(f+e)}else y.s=45===m.charCodeAt(0)?(m=m.slice(1),-1):1;for(n=V.slice(0,t),c=l=0,g=m.length;lc){c=g;continue}}else if(!a&&(m==m.toUpperCase()&&(m=m.toLowerCase())||m==m.toLowerCase()&&(m=m.toUpperCase()))){a=!0,l=-1,c=0;continue}return o(y,String(e),h,t)}h=!1,(c=(m=r(m,t,10,y.s)).indexOf("."))>-1?m=m.replace(".",""):c=m.length}for(l=0;48===m.charCodeAt(l);l++);for(g=m.length;48===m.charCodeAt(--g););if(m=m.slice(l,++g)){if(g-=l,h&&H.DEBUG&&g>15&&(e>d||e!==u(e)))throw Error(f+y.s*e);if((c=c-l-1)>I)y.c=y.e=null;else if(c=M)?O(u,s):E(u,s,"0");else if(i=(e=W(new H(e),t,n)).e,a=(u=v(e.c)).length,1==r||2==r&&(t<=i||i<=D)){for(;aa){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=i-a)>0)for(i+1==a&&(u+=".");t--;u+="0");return e.s<0&&o?"-"+u:u}function J(e,t){for(var n,r=1,o=new H(e[0]);r=10;o/=10,r++);return(n=r+n*p-1)>I?e.c=e.e=null:n=10;c/=10,o++);if((i=t-o)<0)i+=p,s=t,g=(f=m[d=0])/y[o-s-1]%10|0;else if((d=a((i+1)/p))>=m.length){if(!r)break e;for(;m.length<=d;m.push(0));f=g=0,o=1,s=(i%=p)-p+1}else{for(f=c=m[d],o=1;c>=10;c/=10,o++);g=(s=(i%=p)-p+o)<0?0:f/y[o-s-1]%10|0}if(r=r||t<0||null!=m[d+1]||(s<0?f:f%y[o-s-1]),r=n<4?(g||r)&&(0==n||n==(e.s<0?3:2)):g>5||5==g&&(4==n||r||6==n&&(i>0?s>0?f/y[o-s]:0:m[d-1])%10&1||n==(e.s<0?8:7)),t<1||!m[0])return m.length=0,r?(t-=e.e+1,m[0]=y[(p-t%p)%p],e.e=-t||0):m[0]=e.e=0,e;if(0==i?(m.length=d,c=1,d--):(m.length=d+1,c=y[p-i],m[d]=s>0?u(f/y[o-s]%y[s])*c:0),r)for(;;){if(0==d){for(i=1,s=m[0];s>=10;s/=10,i++);for(s=m[0]+=c,c=1;s>=10;s/=10,c++);i!=c&&(e.e++,m[0]==l&&(m[0]=1));break}if(m[d]+=c,m[d]!=l)break;m[d--]=0,c=1}for(i=m.length;0===m[--i];m.pop());}e.e>I?e.c=e.e=null:e.e=M?O(t,n):E(t,n,"0"),e.s<0?"-"+t:t)}return H.clone=e,H.ROUND_UP=0,H.ROUND_DOWN=1,H.ROUND_CEIL=2,H.ROUND_FLOOR=3,H.ROUND_HALF_UP=4,H.ROUND_HALF_DOWN=5,H.ROUND_HALF_EVEN=6,H.ROUND_HALF_CEIL=7,H.ROUND_HALF_FLOOR=8,H.EUCLID=9,H.config=H.set=function(e){var t,n;if(null!=e){if("object"!=typeof e)throw Error(c+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(w(n=e[t],0,m,t),T=n),e.hasOwnProperty(t="ROUNDING_MODE")&&(w(n=e[t],0,8,t),B=n),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((n=e[t])&&n.pop?(w(n[0],-m,0,t),w(n[1],0,m,t),D=n[0],M=n[1]):(w(n,-m,m,t),D=-(M=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if((n=e[t])&&n.pop)w(n[0],-m,-1,t),w(n[1],1,m,t),R=n[0],I=n[1];else{if(w(n,-m,m,t),!n)throw Error(c+t+" cannot be zero: "+n);R=-(I=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(c+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw U=!n,Error(c+"crypto unavailable");U=n}else U=n}if(e.hasOwnProperty(t="MODULO_MODE")&&(w(n=e[t],0,9,t),L=n),e.hasOwnProperty(t="POW_PRECISION")&&(w(n=e[t],0,m,t),F=n),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(n=e[t]))throw Error(c+t+" not an object: "+n);q=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(c+t+" invalid: "+n);V=n}}return{DECIMAL_PLACES:T,ROUNDING_MODE:B,EXPONENTIAL_AT:[D,M],RANGE:[R,I],CRYPTO:U,MODULO_MODE:L,POW_PRECISION:F,FORMAT:q,ALPHABET:V}},H.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!H.DEBUG)return!0;var t,n,r=e.c,o=e.e,i=e.s;e:if("[object Array]"=={}.toString.call(r)){if((1===i||-1===i)&&o>=-m&&o<=m&&o===u(o)){if(0===r[0]){if(0===o&&1===r.length)return!0;break e}if((t=(o+1)%p)<1&&(t+=p),String(r[0]).length==t){for(t=0;t=l||n!==u(n))break e;if(0!==n)return!0}}}else if(null===r&&null===o&&(null===i||1===i||-1===i))return!0;throw Error(c+"Invalid BigNumber: "+e)},H.maximum=H.max=function(){return J(arguments,x.lt)},H.minimum=H.min=function(){return J(arguments,x.gt)},H.random=(i=9007199254740992,A=Math.random()*i&2097151?function(){return u(Math.random()*i)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,n,r,o,i,s=0,f=[],l=new H(N);if(null==e?e=T:w(e,0,m),o=a(e/p),U)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(o*=2));s>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),t[s]=n[0],t[s+1]=n[1]):(f.push(i%1e14),s+=2);s=o/2}else{if(!crypto.randomBytes)throw U=!1,Error(c+"crypto unavailable");for(t=crypto.randomBytes(o*=7);s=9e15?crypto.randomBytes(7).copy(t,s):(f.push(i%1e14),s+=7);s=o/7}if(!U)for(;s=10;i/=10,s++);sn-1&&(null==s[o+1]&&(s[o+1]=0),s[o+1]+=s[o]/n|0,s[o]%=n)}return s.reverse()}return function(r,o,i,s,a){var u,c,f,l,p,d,h,g,m=r.indexOf("."),y=T,b=B;for(m>=0&&(l=F,F=0,r=r.replace(".",""),d=(g=new H(o)).pow(r.length-m),F=l,g.c=t(E(v(d.c),d.e,"0"),10,i,e),g.e=g.c.length),f=l=(h=t(r,o,i,a?(u=V,e):(u=e,V))).length;0==h[--l];h.pop());if(!h[0])return u.charAt(0);if(m<0?--f:(d.c=h,d.e=f,d.s=s,h=(d=n(d,g,y,b,i)).c,p=d.r,f=d.e),m=h[c=f+y+1],l=i/2,p=p||c<0||null!=h[c+1],p=b<4?(null!=m||p)&&(0==b||b==(d.s<0?3:2)):m>l||m==l&&(4==b||p||6==b&&1&h[c-1]||b==(d.s<0?8:7)),c<1||!h[0])r=p?E(u.charAt(1),-y,u.charAt(0)):u.charAt(0);else{if(h.length=c,p)for(--i;++h[--c]>i;)h[c]=0,c||(++f,h=[1].concat(h));for(l=h.length;!h[--l];);for(m=0,r="";m<=l;r+=u.charAt(h[m++]));r=E(r,f,u.charAt(0))}return r}}(),n=function(){function e(e,t,n){var r,o,i,s,a=0,u=e.length,c=t%g,f=t/g|0;for(e=e.slice();u--;)a=((o=c*(i=e[u]%g)+(r=f*i+(s=e[u]/g|0)*c)%g*g+a)/n|0)+(r/g|0)+f*s,e[u]=o%n;return a&&(e=[a].concat(e)),e}function t(e,t,n,r){var o,i;if(n!=r)i=n>r?1:-1;else for(o=i=0;ot[o]?1:-1;break}return i}function n(e,t,n,r){for(var o=0;n--;)e[n]-=o,o=e[n]1;e.splice(0,1));}return function(r,o,i,s,a){var c,f,d,h,g,m,v,b,w,S,O,E,A,C,P,j,_,k=r.s==o.s?1:-1,x=r.c,N=o.c;if(!(x&&x[0]&&N&&N[0]))return new H(r.s&&o.s&&(x?!N||x[0]!=N[0]:N)?x&&0==x[0]||!N?0*k:k/0:NaN);for(w=(b=new H(k)).c=[],k=i+(f=r.e-o.e)+1,a||(a=l,f=y(r.e/p)-y(o.e/p),k=k/p|0),d=0;N[d]==(x[d]||0);d++);if(N[d]>(x[d]||0)&&f--,k<0)w.push(1),h=!0;else{for(C=x.length,j=N.length,d=0,k+=2,(g=u(a/(N[0]+1)))>1&&(N=e(N,g,a),x=e(x,g,a),j=N.length,C=x.length),A=j,O=(S=x.slice(0,j)).length;O=a/2&&P++;do{if(g=0,(c=t(N,S,j,O))<0){if(E=S[0],j!=O&&(E=E*a+(S[1]||0)),(g=u(E/P))>1)for(g>=a&&(g=a-1),v=(m=e(N,g,a)).length,O=S.length;1==t(m,S,v,O);)g--,n(m,j=10;k/=10,d++);W(b,i+(b.e=d+f*p-1)+1,s,h)}else b.e=f,b.r=+h;return b}}(),C=/^(-?)0([xbo])(?=\w[\w.]*$)/i,P=/^([^.]+)\.$/,j=/^\.([^.]+)$/,_=/^-?(Infinity|NaN)$/,k=/^\s*\+(?=[\w.])|^\s+|\s+$/g,o=function(e,t,n,r){var o,i=n?t:t.replace(k,"");if(_.test(i))e.s=isNaN(i)?null:i<0?-1:1;else{if(!n&&(i=i.replace(C,(function(e,t,n){return o="x"==(n=n.toLowerCase())?16:"b"==n?2:8,r&&r!=o?e:t})),r&&(o=r,i=i.replace(P,"$1").replace(j,"0.$1")),t!=i))return new H(i,o);if(H.DEBUG)throw Error(c+"Not a"+(r?" base "+r:"")+" number: "+t);e.s=null}e.c=e.e=null},x.absoluteValue=x.abs=function(){var e=new H(this);return e.s<0&&(e.s=1),e},x.comparedTo=function(e,t){return b(this,new H(e,t))},x.decimalPlaces=x.dp=function(e,t){var n,r,o,i=this;if(null!=e)return w(e,0,m),null==t?t=B:w(t,0,8),W(new H(i),e+i.e+1,t);if(!(n=i.c))return null;if(r=((o=n.length-1)-y(this.e/p))*p,o=n[o])for(;o%10==0;o/=10,r--);return r<0&&(r=0),r},x.dividedBy=x.div=function(e,t){return n(this,new H(e,t),T,B)},x.dividedToIntegerBy=x.idiv=function(e,t){return n(this,new H(e,t),0,1)},x.exponentiatedBy=x.pow=function(e,t){var n,r,o,i,s,f,l,d,h=this;if((e=new H(e)).c&&!e.isInteger())throw Error(c+"Exponent not an integer: "+$(e));if(null!=t&&(t=new H(t)),s=e.e>14,!h.c||!h.c[0]||1==h.c[0]&&!h.e&&1==h.c.length||!e.c||!e.c[0])return d=new H(Math.pow(+$(h),s?2-S(e):+$(e))),t?d.mod(t):d;if(f=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new H(NaN);(r=!f&&h.isInteger()&&t.isInteger())&&(h=h.mod(t))}else{if(e.e>9&&(h.e>0||h.e<-1||(0==h.e?h.c[0]>1||s&&h.c[1]>=24e7:h.c[0]<8e13||s&&h.c[0]<=9999975e7)))return i=h.s<0&&S(e)?-0:0,h.e>-1&&(i=1/i),new H(f?1/i:i);F&&(i=a(F/p+2))}for(s?(n=new H(.5),f&&(e.s=1),l=S(e)):l=(o=Math.abs(+$(e)))%2,d=new H(N);;){if(l){if(!(d=d.times(h)).c)break;i?d.c.length>i&&(d.c.length=i):r&&(d=d.mod(t))}if(o){if(0===(o=u(o/2)))break;l=o%2}else if(W(e=e.times(n),e.e+1,1),e.e>14)l=S(e);else{if(0==(o=+$(e)))break;l=o%2}h=h.times(h),i?h.c&&h.c.length>i&&(h.c.length=i):r&&(h=h.mod(t))}return r?d:(f&&(d=N.div(d)),t?d.mod(t):i?W(d,F,B,void 0):d)},x.integerValue=function(e){var t=new H(this);return null==e?e=B:w(e,0,8),W(t,t.e+1,e)},x.isEqualTo=x.eq=function(e,t){return 0===b(this,new H(e,t))},x.isFinite=function(){return!!this.c},x.isGreaterThan=x.gt=function(e,t){return b(this,new H(e,t))>0},x.isGreaterThanOrEqualTo=x.gte=function(e,t){return 1===(t=b(this,new H(e,t)))||0===t},x.isInteger=function(){return!!this.c&&y(this.e/p)>this.c.length-2},x.isLessThan=x.lt=function(e,t){return b(this,new H(e,t))<0},x.isLessThanOrEqualTo=x.lte=function(e,t){return-1===(t=b(this,new H(e,t)))||0===t},x.isNaN=function(){return!this.s},x.isNegative=function(){return this.s<0},x.isPositive=function(){return this.s>0},x.isZero=function(){return!!this.c&&0==this.c[0]},x.minus=function(e,t){var n,r,o,i,s=this,a=s.s;if(t=(e=new H(e,t)).s,!a||!t)return new H(NaN);if(a!=t)return e.s=-t,s.plus(e);var u=s.e/p,c=e.e/p,f=s.c,d=e.c;if(!u||!c){if(!f||!d)return f?(e.s=-t,e):new H(d?s:NaN);if(!f[0]||!d[0])return d[0]?(e.s=-t,e):new H(f[0]?s:3==B?-0:0)}if(u=y(u),c=y(c),f=f.slice(),a=u-c){for((i=a<0)?(a=-a,o=f):(c=u,o=d),o.reverse(),t=a;t--;o.push(0));o.reverse()}else for(r=(i=(a=f.length)<(t=d.length))?a:t,a=t=0;t0)for(;t--;f[n++]=0);for(t=l-1;r>a;){if(f[--r]=0;){for(n=0,h=E[o]%w,m=E[o]/w|0,i=o+(s=u);i>o;)n=((c=h*(c=O[--s]%w)+(a=m*c+(f=O[s]/w|0)*h)%w*w+v[i]+n)/b|0)+(a/w|0)+m*f,v[i--]=c%b;v[i]=n}return n?++r:v.splice(0,1),G(e,v,r)},x.negated=function(){var e=new H(this);return e.s=-e.s||null,e},x.plus=function(e,t){var n,r=this,o=r.s;if(t=(e=new H(e,t)).s,!o||!t)return new H(NaN);if(o!=t)return e.s=-t,r.minus(e);var i=r.e/p,s=e.e/p,a=r.c,u=e.c;if(!i||!s){if(!a||!u)return new H(o/0);if(!a[0]||!u[0])return u[0]?e:new H(a[0]?r:0*o)}if(i=y(i),s=y(s),a=a.slice(),o=i-s){for(o>0?(s=i,n=u):(o=-o,n=a),n.reverse();o--;n.push(0));n.reverse()}for((o=a.length)-(t=u.length)<0&&(n=u,u=a,a=n,t=o),o=0;t;)o=(a[--t]=a[t]+u[t]+o)/l|0,a[t]=l===a[t]?0:a[t]%l;return o&&(a=[o].concat(a),++s),G(e,a,s)},x.precision=x.sd=function(e,t){var n,r,o,i=this;if(null!=e&&e!==!!e)return w(e,1,m),null==t?t=B:w(t,0,8),W(new H(i),e,t);if(!(n=i.c))return null;if(r=(o=n.length-1)*p+1,o=n[o]){for(;o%10==0;o/=10,r--);for(o=n[0];o>=10;o/=10,r++);}return e&&i.e+1>r&&(r=i.e+1),r},x.shiftedBy=function(e){return w(e,-9007199254740991,d),this.times("1e"+e)},x.squareRoot=x.sqrt=function(){var e,t,r,o,i,s=this,a=s.c,u=s.s,c=s.e,f=T+4,l=new H("0.5");if(1!==u||!a||!a[0])return new H(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(u=Math.sqrt(+$(s)))||u==1/0?(((t=v(a)).length+c)%2==0&&(t+="0"),u=Math.sqrt(+t),c=y((c+1)/2)-(c<0||c%2),r=new H(t=u==1/0?"5e"+c:(t=u.toExponential()).slice(0,t.indexOf("e")+1)+c)):r=new H(u+""),r.c[0])for((u=(c=r.e)+f)<3&&(u=0);;)if(i=r,r=l.times(i.plus(n(s,i,f,1))),v(i.c).slice(0,u)===(t=v(r.c)).slice(0,u)){if(r.e0&&g>0){for(i=g%a||a,l=h.substr(0,i);i0&&(l+=f+h.slice(i)),d&&(l="-"+l)}r=p?l+(n.decimalSeparator||"")+((u=+n.fractionGroupSize)?p.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):p):l}return(n.prefix||"")+r+(n.suffix||"")},x.toFraction=function(e){var t,r,o,i,s,a,u,f,l,d,g,m,y=this,b=y.c;if(null!=e&&(!(u=new H(e)).isInteger()&&(u.c||1!==u.s)||u.lt(N)))throw Error(c+"Argument "+(u.isInteger()?"out of range: ":"not an integer: ")+$(u));if(!b)return new H(y);for(t=new H(N),l=r=new H(N),o=f=new H(N),m=v(b),s=t.e=m.length-y.e-1,t.c[0]=h[(a=s%p)<0?p+a:a],e=!e||u.comparedTo(t)>0?s>0?t:l:u,a=I,I=1/0,u=new H(m),f.c[0]=0;d=n(u,t,0,1),1!=(i=r.plus(d.times(o))).comparedTo(e);)r=o,o=i,l=f.plus(d.times(i=l)),f=i,t=u.minus(d.times(i=t)),u=i;return i=n(e.minus(r),o,0,1),f=f.plus(i.times(l)),r=r.plus(i.times(o)),f.s=l.s=y.s,g=n(l,o,s*=2,B).minus(y).abs().comparedTo(n(f,r,s,B).minus(y).abs())<1?[l,o]:[f,r],I=a,g},x.toNumber=function(){return+$(this)},x.toPrecision=function(e,t){return null!=e&&w(e,1,m),K(this,e,t,2)},x.toString=function(e){var t,n=this,o=n.s,i=n.e;return null===i?o?(t="Infinity",o<0&&(t="-"+t)):t="NaN":(null==e?t=i<=D||i>=M?O(v(n.c),i):E(v(n.c),i,"0"):10===e?t=E(v((n=W(new H(n),T+i+1,B)).c),n.e,"0"):(w(e,2,V.length,"Base"),t=r(E(v(n.c),i,"0"),10,e,o,!0)),o<0&&n.c[0]&&(t="-"+t)),t},x.valueOf=x.toJSON=function(){return $(this)},x._isBigNumber=!0,null!=t&&H.set(t),H}(),i.default=i.BigNumber=i,void 0===(r=function(){return i}.call(t,n,t,e))||(e.exports=r)}()},4400:function(e,t,n){var r=n(4123).stringify,o=n(6813);e.exports=function(e){return{parse:o(e),stringify:r}},e.exports.parse=o(),e.exports.stringify=r},6813:function(e,t,n){var r=null;const o=/(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])/,i=/(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)/;e.exports=function(e){"use strict";var t={strict:!1,storeAsString:!1,alwaysParseAsBig:!1,useNativeBigInt:!1,protoAction:"error",constructorAction:"error"};if(null!=e){if(!0===e.strict&&(t.strict=!0),!0===e.storeAsString&&(t.storeAsString=!0),t.alwaysParseAsBig=!0===e.alwaysParseAsBig&&e.alwaysParseAsBig,t.useNativeBigInt=!0===e.useNativeBigInt&&e.useNativeBigInt,void 0!==e.constructorAction){if("error"!==e.constructorAction&&"ignore"!==e.constructorAction&&"preserve"!==e.constructorAction)throw new Error(`Incorrect value for constructorAction option, must be "error", "ignore" or undefined but passed ${e.constructorAction}`);t.constructorAction=e.constructorAction}if(void 0!==e.protoAction){if("error"!==e.protoAction&&"ignore"!==e.protoAction&&"preserve"!==e.protoAction)throw new Error(`Incorrect value for protoAction option, must be "error", "ignore" or undefined but passed ${e.protoAction}`);t.protoAction=e.protoAction}}var s,a,u,c,f={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},l=function(e){throw{name:"SyntaxError",message:e,at:s,text:u}},p=function(e){return e&&e!==a&&l("Expected '"+e+"' instead of '"+a+"'"),a=u.charAt(s),s+=1,a},d=function(){var e,o="";for("-"===a&&(o="-",p("-"));a>="0"&&a<="9";)o+=a,p();if("."===a)for(o+=".";p()&&a>="0"&&a<="9";)o+=a;if("e"===a||"E"===a)for(o+=a,p(),"-"!==a&&"+"!==a||(o+=a,p());a>="0"&&a<="9";)o+=a,p();if(e=+o,isFinite(e))return null==r&&(r=n(4431)),o.length>15?t.storeAsString?o:t.useNativeBigInt?BigInt(o):new r(o):t.alwaysParseAsBig?t.useNativeBigInt?BigInt(e):new r(e):e;l("Bad number")},h=function(){var e,t,n,r="";if('"'===a)for(var o=s;p();){if('"'===a)return s-1>o&&(r+=u.substring(o,s-1)),p(),r;if("\\"===a){if(s-1>o&&(r+=u.substring(o,s-1)),p(),"u"===a){for(n=0,t=0;t<4&&(e=parseInt(p(),16),isFinite(e));t+=1)n=16*n+e;r+=String.fromCharCode(n)}else{if("string"!=typeof f[a])break;r+=f[a]}o=s}}l("Bad string")},g=function(){for(;a&&a<=" ";)p()};return c=function(){switch(g(),a){case"{":return function(){var e,n=Object.create(null);if("{"===a){if(p("{"),g(),"}"===a)return p("}"),n;for(;a;){if(e=h(),g(),p(":"),!0===t.strict&&Object.hasOwnProperty.call(n,e)&&l('Duplicate key "'+e+'"'),!0===o.test(e)?"error"===t.protoAction?l("Object contains forbidden prototype property"):"ignore"===t.protoAction?c():n[e]=c():!0===i.test(e)?"error"===t.constructorAction?l("Object contains forbidden constructor property"):"ignore"===t.constructorAction?c():n[e]=c():n[e]=c(),g(),"}"===a)return p("}"),n;p(","),g()}}l("Bad object")}();case"[":return function(){var e=[];if("["===a){if(p("["),g(),"]"===a)return p("]"),e;for(;a;){if(e.push(c()),g(),"]"===a)return p("]"),e;p(","),g()}}l("Bad array")}();case'"':return h();case"-":return d();default:return a>="0"&&a<="9"?d():function(){switch(a){case"t":return p("t"),p("r"),p("u"),p("e"),!0;case"f":return p("f"),p("a"),p("l"),p("s"),p("e"),!1;case"n":return p("n"),p("u"),p("l"),p("l"),null}l("Unexpected '"+a+"'")}()}},function(e,t){var n;return u=e+"",s=0,a=" ",n=c(),g(),a&&l("Syntax error"),"function"==typeof t?function e(n,r){var o,i=n[r];return i&&"object"==typeof i&&Object.keys(i).forEach((function(t){void 0!==(o=e(i,t))?i[t]=o:delete i[t]})),t.call(n,r,i)}({"":n},""):n}}},4123:function(e,t,n){var r=n(4431),o=e.exports;!function(){"use strict";var e,t,n,i=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,s={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function a(e){return i.lastIndex=0,i.test(e)?'"'+e.replace(i,(function(e){var t=s[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+e+'"'}function u(o,i){var s,c,f,l,p,d=e,h=i[o],g=null!=h&&(h instanceof r||r.isBigNumber(h));switch(h&&"object"==typeof h&&"function"==typeof h.toJSON&&(h=h.toJSON(o)),"function"==typeof n&&(h=n.call(i,o,h)),typeof h){case"string":return g?h:a(h);case"number":return isFinite(h)?String(h):"null";case"boolean":case"null":case"bigint":return String(h);case"object":if(!h)return"null";if(e+=t,p=[],"[object Array]"===Object.prototype.toString.apply(h)){for(l=h.length,s=0;s1){var n=e.shift();e[0]=n+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var r=0;r0&&(o=o.replace(/^[\/]+/,"")),o=r0?"?":"")+s.join("&")}return function(){return e("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():void 0===(o="function"==typeof(r=i)?r.call(t,n,t,e):r)||(e.exports=o)},4147:function(e){"use strict";e.exports=JSON.parse('{"name":"node-mailjet","version":"6.0.3","main":"./dist/mailjet.node.js","browser":"./dist/mailjet.web.js","types":"./dist/declarations/index.d.ts","description":"Mailjet API client","author":"Mailjet","license":"MIT","private":true,"keywords":["email","sms","node","mail","mailjet"],"engines":{"node":">= 12.0.0","npm":">= 6.9.0"},"files":["lib/**","dist/**"],"directories":{"lib":"./lib","docs":"./docs"},"typescript":{"definition":"./dist/declarations/index.d.ts"},"scripts":{"test":"npm run ts:mocha test/","test:int":"npm run ts:mocha test/integration/","test:unit":"npm run ts:mocha test/unit/","test:watch":"mocha --extension ts -r tsconfig-paths/register -r ts-node/register --watch","cover":"npm run cover:expandable npm run test","cover:int":"npm run cover:expandable npm run test:int","cover:unit":"npm run cover:expandable npm run test:unit","cover:expandable":"nyc --reporter=text-summary --reporter=lcov --report-dir=.coverage --temp-dir=./.coverage/.nyc_output","build":"npm run build:release && npm run build:prepublish","build:dev":"webpack --config ./webpack/webpack.dev.config.js --progress --color","build:release":"webpack --config ./webpack/webpack.release.config.js --progress --color","build:prepublish":"node ./scripts/PreparePackage.js","build:watch":"webpack --watch --config ./webpack/webpack.dev.config.js --progress --color","lint":"eslint .","lint:fix":"eslint --fix .","lint:errors":"eslint --quiet .","ts:run":"ts-node --transpileOnly --project ./tsconfig.json -r tsconfig-paths/register","ts:watch":"ts-node-dev --respawn --transpile-only --project ./tsconfig.json -r tsconfig-paths/register","ts:mocha":"mocha --extension ts --recursive -r tsconfig-paths/register -r ts-node/register","ts:patch":"ts-patch install -s","init":"npm install && npm run ts:patch && npm run pkg:prepare","pkg:link":"cd ./dist && npm link && echo \'\\n=== link name: node-mailjet ===\'","pkg:prepare":"husky install","pkg:precommit":"npm audit && npm run lint:errors && npm run test","release":"standard-version -a","release:dry":"standard-version --dry-run","release:quiet":"standard-version --no-verify -a","release:minor":"standard-version -a --release-as minor","release:patch":"standard-version -a --release-as patch","release:major":"standard-version -a --release-as major","docs":"typedoc --tsconfig ./tsconfig.json"},"dependencies":{"axios":"^0.27.2","url-join":"^4.0.0","json-bigint":"^1.0.0"},"devDependencies":{"qs":"^6.5.0","@babel/core":"^7.18.0","@babel/preset-env":"^7.18.0","@commitlint/cli":"^17.0.2","@commitlint/config-conventional":"^17.0.2","@types/chai":"^4.3.1","@types/json-bigint":"^1.0.1","@types/mocha":"^9.1.1","@types/node":"^17.0.34","@types/qs":"^6.9.7","@types/superagent":"^4.1.15","@types/url-join":"^4.0.1","@typescript-eslint/eslint-plugin":"^5.24.0","@typescript-eslint/parser":"^5.24.0","babel-loader":"^8.2.5","chai":"^4.1.0","eslint":"^8.15.0","eslint-config-airbnb-base":"^15.0.0","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","eslint-plugin-tsdoc":"^0.2.16","husky":"^8.0.1","mocha":"^9.0.0","nock":"^13.2.4","nyc":"^15.1.0","standard-version":"^9.5.0","terser-webpack-plugin":"^5.3.1","ts-loader":"^9.3.0","ts-node":"^10.7.0","ts-node-dev":"^1.1.8","ts-patch":"^2.0.1","tsconfig-paths":"^4.0.0","tsconfig-paths-webpack-plugin":"^3.5.2","typedoc":"^0.22.15","typescript":"^4.6.4","typescript-transform-paths":"^3.3.1","webpack":"^5.76.0","webpack-cli":"^4.9.2","webpack-merge":"^5.8.0"},"homepage":"https://github.com/mailjet/mailjet-apiv3-nodejs#readme","repository":{"type":"git","url":"git+https://github.com/mailjet/mailjet-apiv3-nodejs.git"},"bugs":{"url":"https://github.com/mailjet/mailjet-apiv3-nodejs/issues"},"contributors":["Arnaud Breton (https://github.com/arnaudbreton)","Nicholas Smith (https://github.com/safani)","Jérémie Parker (https://github.com/p-j)"]}')}},t={},n=function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}(8321),n;var e,t,n})); +define((function(){return e={9669:function(e,t,n){e.exports=n(1609)},5448:function(e,t,n){"use strict";var r=n(4867),o=n(6026),i=n(4372),s=n(5327),a=n(4097),u=n(4109),c=n(7985),f=n(7874),l=n(2648),p=n(644),d=n(205);e.exports=function(e){return new Promise((function(t,n){var h,g=e.data,m=e.headers,y=e.responseType;function v(){e.cancelToken&&e.cancelToken.unsubscribe(h),e.signal&&e.signal.removeEventListener("abort",h)}r.isFormData(g)&&r.isStandardBrowserEnv()&&delete m["Content-Type"];var b=new XMLHttpRequest;if(e.auth){var w=e.auth.username||"",S=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";m.Authorization="Basic "+btoa(w+":"+S)}var O=a(e.baseURL,e.url);function E(){if(b){var r="getAllResponseHeaders"in b?u(b.getAllResponseHeaders()):null,i={data:y&&"text"!==y&&"json"!==y?b.response:b.responseText,status:b.status,statusText:b.statusText,headers:r,config:e,request:b};o((function(e){t(e),v()}),(function(e){n(e),v()}),i),b=null}}if(b.open(e.method.toUpperCase(),s(O,e.params,e.paramsSerializer),!0),b.timeout=e.timeout,"onloadend"in b?b.onloadend=E:b.onreadystatechange=function(){b&&4===b.readyState&&(0!==b.status||b.responseURL&&0===b.responseURL.indexOf("file:"))&&setTimeout(E)},b.onabort=function(){b&&(n(new l("Request aborted",l.ECONNABORTED,e,b)),b=null)},b.onerror=function(){n(new l("Network Error",l.ERR_NETWORK,e,b,b)),b=null},b.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||f;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new l(t,r.clarifyTimeoutError?l.ETIMEDOUT:l.ECONNABORTED,e,b)),b=null},r.isStandardBrowserEnv()){var A=(e.withCredentials||c(O))&&e.xsrfCookieName?i.read(e.xsrfCookieName):void 0;A&&(m[e.xsrfHeaderName]=A)}"setRequestHeader"in b&&r.forEach(m,(function(e,t){void 0===g&&"content-type"===t.toLowerCase()?delete m[t]:b.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(b.withCredentials=!!e.withCredentials),y&&"json"!==y&&(b.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&b.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&b.upload&&b.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(h=function(e){b&&(n(!e||e&&e.type?new p:e),b.abort(),b=null)},e.cancelToken&&e.cancelToken.subscribe(h),e.signal&&(e.signal.aborted?h():e.signal.addEventListener("abort",h))),g||(g=null);var C=d(O);C&&-1===["http","https","file"].indexOf(C)?n(new l("Unsupported protocol "+C+":",l.ERR_BAD_REQUEST,e)):b.send(g)}))}},1609:function(e,t,n){"use strict";var r=n(4867),o=n(1849),i=n(321),s=n(7185),a=function e(t){var n=new i(t),a=o(i.prototype.request,n);return r.extend(a,i.prototype,n),r.extend(a,n),a.create=function(n){return e(s(t,n))},a}(n(5546));a.Axios=i,a.CanceledError=n(644),a.CancelToken=n(4972),a.isCancel=n(6502),a.VERSION=n(7288).version,a.toFormData=n(7675),a.AxiosError=n(2648),a.Cancel=a.CanceledError,a.all=function(e){return Promise.all(e)},a.spread=n(8713),a.isAxiosError=n(6268),e.exports=a,e.exports.default=a},4972:function(e,t,n){"use strict";var r=n(644);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(u)})),e.exports=l},7874:function(e){"use strict";e.exports={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}},7288:function(e){e.exports={version:"0.27.2"}},1849:function(e){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([n]):s[t]?s[t]+", "+n:n}})),s):s}},205:function(e){"use strict";e.exports=function(e){var t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}},8713:function(e){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},7675:function(e,t,n){"use strict";var r=n(4867);e.exports=function(e,t){t=t||new FormData;var n=[];function o(e){return null===e?"":r.isDate(e)?e.toISOString():r.isArrayBuffer(e)||r.isTypedArray(e)?"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}return function e(i,s){if(r.isPlainObject(i)||r.isArray(i)){if(-1!==n.indexOf(i))throw Error("Circular reference detected in "+s);n.push(i),r.forEach(i,(function(n,i){if(!r.isUndefined(n)){var a,u=s?s+"."+i:i;if(n&&!s&&"object"==typeof n)if(r.endsWith(i,"{}"))n=JSON.stringify(n);else if(r.endsWith(i,"[]")&&(a=r.toArray(n)))return void a.forEach((function(e){!r.isUndefined(e)&&t.append(u,o(e))}));e(n,u)}})),n.pop()}else t.append(s,o(i))}(e),t}},4875:function(e,t,n){"use strict";var r=n(7288).version,o=n(2648),i={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){i[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var s={};i.transitional=function(e,t,n){function i(e,t){return"[Axios v"+r+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,r,a){if(!1===e)throw new o(i(r," has been removed"+(t?" in "+t:"")),o.ERR_DEPRECATED);return t&&!s[r]&&(s[r]=!0,console.warn(i(r," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,r,a)}},e.exports={assertOptions:function(e,t,n){if("object"!=typeof e)throw new o("options must be an object",o.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),i=r.length;i-- >0;){var s=r[i],a=t[s];if(a){var u=e[s],c=void 0===u||a(u,s,e);if(!0!==c)throw new o("option "+s+" must be "+c,o.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new o("Unknown option "+s,o.ERR_BAD_OPTION)}},validators:i}},4867:function(e,t,n){"use strict";var r,o=n(1849),i=Object.prototype.toString,s=(r=Object.create(null),function(e){var t=i.call(e);return r[t]||(r[t]=t.slice(8,-1).toLowerCase())});function a(e){return e=e.toLowerCase(),function(t){return s(t)===e}}function u(e){return Array.isArray(e)}function c(e){return void 0===e}var f=a("ArrayBuffer");function l(e){return null!==e&&"object"==typeof e}function p(e){if("object"!==s(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}var d=a("Date"),h=a("File"),g=a("Blob"),m=a("FileList");function y(e){return"[object Function]"===i.call(e)}var v=a("URLSearchParams");function b(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),u(e))for(var n=0,r=e.length;n0;)s[i=r[o]]||(t[i]=e[i],s[i]=!0);e=Object.getPrototypeOf(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:s,kindOfTest:a,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;var t=e.length;if(c(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},isTypedArray:S,isFileList:m}},1076:function(e,t,n){"use strict";function r(e){return r="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},r(e)}var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]-1?"text/plain":"application/json"},e.prototype.getRequestBody=function(e){return[g.default.Put,g.default.Post,g.default.Delete].includes(this.method)?e:void 0},e.prototype.buildFullUrl=function(){var t,n,r=this.client.getConfig(),o=null!==(t=this.config.host)&&void 0!==t?t:r.host,i=null!==(n=this.config.version)&&void 0!==n?n:r.version;return(0,l.default)(e.protocol,o,i,this.subPath,this.url)},e.prototype.buildSubPath=function(){if(this.actionPath){var e="contactslist"===this.resource&&"csvdata/text:plain"===this.actionPath,t="batchjob"===this.resource&&"csverror/text:csv"===this.actionPath;return e||t?"DATA":this.subPath}var n="send"===this.resource,r=this.resource.indexOf("sms")>-1;return n||r?"":"REST"},e.prototype.makeRequest=function(t,n,r){var i,s={url:t,params:r,data:this.getRequestBody(n),method:this.method,responseType:"json",headers:{"User-Agent":this.getUserAgent(),"Content-Type":this.getContentType(t)},transformResponse:function(t){var n="string"==typeof t,r="json"===this.responseType;return t&&n&&r?e.parseToJSONb(t):t}};e.isBrowser()&&(s.headers["X-User-Agent"]=s.headers["User-Agent"]);var a=this.getCredentials();a.apiToken?s.headers.Authorization="Bearer ".concat(a.apiToken):s.auth={username:a.apiKey,password:a.apiSecret};var u=this.client.getConfig(),c=this.client.getOptions();c.timeout&&(s.timeout=c.timeout),c.proxy&&(s.proxy=c.proxy),c.headers&&Object.keys(c.headers).length>0&&(s.headers=o(o({},s.headers),c.headers));var f=null!==(i=this.config.output)&&void 0!==i?i:u.output;return f&&(s.responseType=f),c.maxBodyLength&&(s.maxBodyLength=c.maxBodyLength),c.maxContentLength&&(s.maxContentLength=c.maxContentLength),(0,d.default)(s)},e.prototype.setBaseURL=function(e){return this.url=e.toLowerCase(),this},e.prototype.id=function(e){if(!["string","number"].includes(r(e)))throw new Error('Argument "value" must be string or number');return this.url=(0,l.default)(this.url,e.toString()),this},e.prototype.action=function(e){if("string"!=typeof e)throw new Error('Argument "name" must be string');switch(this.actionPath=e.toLowerCase(),this.actionPath){case"csvdata":this.actionPath="csvdata/text:plain";break;case"csverror":this.actionPath="csverror/text:csv"}return this.url=(0,l.default)(this.url,this.actionPath),this.subPath=this.buildSubPath(),this},e.prototype.request=function(e,t,n){var r,o,i,s,a;return void 0===e&&(e={}),void 0===t&&(t={}),void 0===n&&(n=!0),u(this,void 0,void 0,(function(){var u,f,l,p,g,m,y,v,b,w;return c(this,(function(c){switch(c.label){case 0:if(u=this.buildFullUrl(),this.setBaseURL(this.resource),!n)return[2,{body:v=this.getRequestBody(e),params:t,url:u}];c.label=1;case 1:return c.trys.push([1,3,,4]),[4,this.makeRequest(u,e,t)];case 2:return[2,{response:f=c.sent(),body:f.data}];case 3:if((l=c.sent())instanceof d.AxiosError)throw(p=new Error).code=l.code,p.config=l.config,l.response?(g=l.response,m=g.status,y=g.statusText,v=g.data,p.response=l.response,p.statusCode=m,p.statusText=y,b=null!==(r=null==v?void 0:v.ErrorMessage)&&void 0!==r?r:l.message,p.originalMessage=b,p.message='Unsuccessful: Status Code: "'.concat(p.statusCode,'" Message: "').concat(b,'"'),v&&("string"==typeof(w=null===(a=null===(s=null===(i=null===(o=v.Messages)||void 0===o?void 0:o[0])||void 0===i?void 0:i.Errors)||void 0===s?void 0:s[0])||void 0===a?void 0:a.ErrorMessage)&&(p.message+=";\n".concat(w)),(0,h.setValueIfNotNil)(p,"ErrorMessage",v.ErrorMessage),(0,h.setValueIfNotNil)(p,"ErrorCode",v.ErrorCode),(0,h.setValueIfNotNil)(p,"ErrorIdentifier",v.ErrorIdentifier),(0,h.setValueIfNotNil)(p,"ErrorRelatedTo",v.ErrorRelatedTo))):(p.response=null,p.statusCode=null,p.statusText=null,p.originalMessage=l.message,p.message='Unsuccessful: Error Code: "'.concat(p.code,'" Message: "').concat(l.message,'"')),p;throw l;case 4:return[2]}}))}))},e.parseToJSONb=function(e){if("string"!=typeof e)throw new Error('Argument "text" must be string');var t;try{t=y.parse(e)}catch(e){t={}}return t},e.isBrowser=function(){return"object"===("undefined"==typeof window?"undefined":r(window))},e.protocol="https://",e}();t.default=v},5917:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SentCampaign=t.DraftCampaign=void 0,function(e){!function(e){e.Tool2="tool2",e.HTML2="html2",e.MJML="mjml"}(e.EditMode||(e.EditMode={})),function(e){e[e.AXCanceled=-3]="AXCanceled",e[e.Deleted=-2]="Deleted",e[e.Archived=-1]="Archived",e[e.Draft=0]="Draft",e[e.Programmed=1]="Programmed",e[e.Sent=2]="Sent",e[e.AXTested=3]="AXTested",e[e.AXSelected=4]="AXSelected"}(e.CampaignDraftStatus||(e.CampaignDraftStatus={})),function(e){e.AXCancelled="AXCancelled",e.Deleted="Deleted",e.Archived="Archived",e.Draft="Draft",e.Programmed="Programmed",e.Sent="Sent",e.AXTested="AXTested",e.AXSelected="AXSelected"}(e.CampaignDraftSendingStatus||(e.CampaignDraftSendingStatus={}))}(t.DraftCampaign||(t.DraftCampaign={})),function(e){!function(e){e[e.Transactional=1]="Transactional",e[e.Marketing=2]="Marketing",e[e.Unknown=3]="Unknown"}(e.CampaignType||(e.CampaignType={}))}(t.SentCampaign||(t.SentCampaign={}))},7566:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Common=void 0,function(e){!function(e){e.Day="Day",e.Week="Week",e.Month="Month",e.Year="Year"}(e.Period||(e.Period={}))}(t.Common||(t.Common={}))},235:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ContactProperties=t.BulkContactManagement=void 0,function(e){!function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.Remove="remove",e.UnSub="unsub"}(e.ManageContactsAction||(e.ManageContactsAction={})),function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.UnSub="unsub",e.DuplicateOverride="duplicate-override",e.DuplicateNoOverride="duplicate-no-override"}(e.ImportListAction||(e.ImportListAction={})),function(e){e.AddForce="addforce",e.AddNoForce="addnoforce",e.Remove="remove",e.UnSub="unsub",e.ExcludeMarketing="excludemarketing",e.IncludeMarketing="includemarketing"}(e.ImportCSVMethod||(e.ImportCSVMethod={})),function(e){e.Upload="Upload",e.Completed="Completed",e.Abort="Abort"}(e.CSVImportStatus||(e.CSVImportStatus={})),function(e){e.Completed="Completed",e.InProgress="In Progress",e.Error="Error"}(e.JobStatus||(e.JobStatus={}))}(t.BulkContactManagement||(t.BulkContactManagement={})),function(e){!function(e){e.Str="str",e.Int="int",e.Float="float",e.Bool="bool",e.DateTime="datetime"}(e.DataType||(e.DataType={})),function(e){e.Static="static",e.Historic="historic"}(e.NameSpace||(e.NameSpace={}))}(t.ContactProperties||(t.ContactProperties={}))},8354:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Message=void 0,function(e){!function(e){e[e.UserUnknown=1]="UserUnknown",e[e.MailboxInactive=2]="MailboxInactive",e[e.QuotaExceeded=3]="QuotaExceeded",e[e.InvalidDomain=4]="InvalidDomain",e[e.NoMailHost=5]="NoMailHost",e[e.RelayOrAccessDenied=6]="RelayOrAccessDenied",e[e.SenderBlocked=7]="SenderBlocked",e[e.ContentBlocked=8]="ContentBlocked",e[e.PolicyIssue=9]="PolicyIssue",e[e.SystemIssue=10]="SystemIssue",e[e.ProtocolIssue=11]="ProtocolIssue",e[e.ConnectionIssue=12]="ConnectionIssue",e[e.GreyListed=13]="GreyListed",e[e.PreBlocked=14]="PreBlocked",e[e.DuplicateInCampaign=15]="DuplicateInCampaign",e[e.SpamPreBlocked=16]="SpamPreBlocked",e[e.BadOrEmptyTemplate=17]="BadOrEmptyTemplate",e[e.ErrorInTemplateLanguage=18]="ErrorInTemplateLanguage",e[e.TypoFix=19]="TypoFix",e[e.BlackListed=20]="BlackListed",e[e.SpamReporter=21]="SpamReporter"}(e.MessageState||(e.MessageState={})),function(e){e[e.Transactional=1]="Transactional",e[e.Marketing=2]="Marketing",e[e.Unknown=3]="Unknown"}(e.FromType||(e.FromType={})),function(e){e[e.Processed=0]="Processed",e[e.Queued=1]="Queued",e[e.Sent=2]="Sent",e[e.Opened=3]="Opened",e[e.Clicked=4]="Clicked",e[e.Bounce=5]="Bounce",e[e.Spam=6]="Spam",e[e.Unsub=7]="Unsub",e[e.Blocked=8]="Blocked",e[e.SoftBounce=9]="SoftBounce",e[e.HardBounce=10]="HardBounce",e[e.Deferred=11]="Deferred"}(e.MessageStatus||(e.MessageStatus={})),function(e){e.Unknown="unknown",e.Queued="queued",e.Sent="sent",e.Opened="opened",e.Clicked="clicked",e.Bounce="bounce",e.Spam="spam",e.Unsub="unsub",e.Blocked="blocked",e.HardBounced="hardbounced",e.SoftBounced="softbounced",e.Deferred="deferred"}(e.CurrentMessageStatus||(e.CurrentMessageStatus={})),function(e){e.Sent="sent",e.Opened="opened",e.Clicked="clicked",e.Bounced="bounced",e.Blocked="blocked",e.Unsub="unsub",e.Spam="spam"}(e.EventType||(e.EventType={}))}(t.Message||(t.Message={}))},3635:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Segmentation=void 0,function(e){!function(e){e.Used="used",e.UnUsed="unused",e.Deleted="deleted"}(e.SegmentStatus||(e.SegmentStatus={}))}(t.Segmentation||(t.Segmentation={}))},7410:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SendEmailV3_1=void 0,function(e){!function(e){e.AccountDefault="account_default",e.Disabled="disabled",e.Enabled="enabled"}(e.TrackOpens||(e.TrackOpens={})),function(e){e.AccountDefault="account_default",e.Disabled="disabled",e.Enabled="enabled"}(e.TrackClicks||(e.TrackClicks={})),function(e){e.Success="success",e.Error="error"}(e.ResponseStatus||(e.ResponseStatus={}))}(t.SendEmailV3_1||(t.SendEmailV3_1={}))},2256:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DNS=t.Sender=void 0,function(e){!function(e){e.Transactional="transactional",e.Bulk="bulk",e.Unknown="unknown"}(e.EmailType||(e.EmailType={})),function(e){e.Inactive="Inactive",e.Active="Active",e.Deleted="Deleted"}(e.SenderStatus||(e.SenderStatus={}))}(t.Sender||(t.Sender={})),function(e){!function(e){e.OK="OK",e.Error="Error",e.NotChecked="Not checked"}(e.DKIMConfigurationCheckStatus||(e.DKIMConfigurationCheckStatus={})),function(e){e.OK="OK",e.Error="Error"}(e.DKIMConfigurationStatus||(e.DKIMConfigurationStatus={})),function(e){e.OK="OK",e.Error="Error",e.NotChecked="Not checked",e.NotFound="Not found"}(e.SPFConfigurationCheckStatus||(e.SPFConfigurationCheckStatus={})),function(e){e.OK="OK",e.Error="Error"}(e.SPFConfigurationStatus||(e.SPFConfigurationStatus={}))}(t.DNS||(t.DNS={}))},5295:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.APIKeyConfiguration=void 0,function(e){!function(e){e.Normal="Normal",e.SoftLock="Softlock",e.HardLock="Hardlock"}(e.RunLevel||(e.RunLevel={}))}(t.APIKeyConfiguration||(t.APIKeyConfiguration={}))},6083:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Statistic=void 0,function(e){!function(e){e.SentCampaign="Campaign",e.ABTesting="AX",e.Draft="NL"}(e.CampaignOverviewIDType||(e.CampaignOverviewIDType={})),function(e){e.Tool="tool",e.HTML="html",e.Tool2="tool2",e.HTML2="html2",e.MJML="mjml"}(e.CampaignOverviewEditMode||(e.CampaignOverviewEditMode={})),function(e){e.Full="full",e.Unknown="unknown"}(e.CampaignOverviewEditType||(e.CampaignOverviewEditType={})),function(e){e.Campaign="Campaign",e.APIKey="APIKey",e.List="List",e.Sender="Sender"}(e.CounterSource||(e.CounterSource={})),function(e){e.Highest="Highest",e.Hour="Hour",e.Day="Day",e.Lifetime="Lifetime"}(e.CounterResolution||(e.CounterResolution={})),function(e){e.Message="Message",e.Event="Event"}(e.CounterTiming||(e.CounterTiming={})),function(e){e.Open="open",e.Click="click"}(e.EmailEvent||(e.EmailEvent={}))}(t.Statistic||(t.Statistic={}))},4098:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Template=void 0,function(e){!function(e){e.Full="full",e.Basic="basic",e.NewsLetter="newsletter",e.ECommerce="e-commerce",e.Events="events",e.Travel="travel",e.Sports="sports",e.Welcome="welcome",e.ContactPropertyUpdate="contact-property-update",e.Support="support",e.Invoice="invoice",e.Anniversary="anniversary",e.Account="account",e.Activation="activation"}(e.Categories||(e.Categories={})),function(e){e.ContainsAny="containsany",e.ContainsAll="containsall",e.IsSubSet="issubset"}(e.CategoriesSelectionMethod||(e.CategoriesSelectionMethod={})),function(e){e[e.DragAndDropBuilder=1]="DragAndDropBuilder",e[e.HTMLBuilder=2]="HTMLBuilder",e[e.SavedSectionBuilder=3]="SavedSectionBuilder",e[e.MJMLBuilder=4]="MJMLBuilder"}(e.EditMode||(e.EditMode={})),function(e){e.ApiKey="apikey",e.User="user",e.Global="global"}(e.OwnerType||(e.OwnerType={})),function(e){e.Marketing="marketing",e.Transactional="transactional",e.Automation="automation"}(e.Purposes||(e.Purposes={})),function(e){e.ContainsAny="containsany",e.ContainsAll="containsall",e.IsSubSet="issubset"}(e.PurposesSelectionMethod||(e.PurposesSelectionMethod={}))}(t.Template||(t.Template={}))},1174:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Webhook=void 0,function(e){!function(e){e.Open="open",e.Click="click",e.Bounce="bounce",e.Spam="spam",e.Blocked="blocked",e.UnSub="unsub",e.Sent="sent"}(e.EventType||(e.EventType={})),function(e){e[e.Click=1]="Click",e[e.Bounce=2]="Bounce",e[e.Spam=3]="Spam",e[e.Blocked=4]="Blocked",e[e.Unsubscribe=5]="Unsubscribe",e[e.Open=6]="Open",e[e.Sent=7]="Sent"}(e.EventTypeValue||(e.EventTypeValue={})),function(e){e.Dead="dead",e.Alive="alive"}(e.Status||(e.Status={}))}(t.Webhook||(t.Webhook={}))},4310:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.APIKeyConfiguration=t.DNS=t.Sender=t.Webhook=t.Statistic=t.Template=t.Segmentation=t.SentCampaign=t.DraftCampaign=t.ContactProperties=t.BulkContactManagement=t.Message=t.SendEmailV3_1=t.Common=void 0;var r=n(7566);Object.defineProperty(t,"Common",{enumerable:!0,get:function(){return r.Common}});var o=n(7410);Object.defineProperty(t,"SendEmailV3_1",{enumerable:!0,get:function(){return o.SendEmailV3_1}});var i=n(8354);Object.defineProperty(t,"Message",{enumerable:!0,get:function(){return i.Message}});var s=n(235);Object.defineProperty(t,"BulkContactManagement",{enumerable:!0,get:function(){return s.BulkContactManagement}}),Object.defineProperty(t,"ContactProperties",{enumerable:!0,get:function(){return s.ContactProperties}});var a=n(5917);Object.defineProperty(t,"DraftCampaign",{enumerable:!0,get:function(){return a.DraftCampaign}}),Object.defineProperty(t,"SentCampaign",{enumerable:!0,get:function(){return a.SentCampaign}});var u=n(3635);Object.defineProperty(t,"Segmentation",{enumerable:!0,get:function(){return u.Segmentation}});var c=n(4098);Object.defineProperty(t,"Template",{enumerable:!0,get:function(){return c.Template}});var f=n(6083);Object.defineProperty(t,"Statistic",{enumerable:!0,get:function(){return f.Statistic}});var l=n(1174);Object.defineProperty(t,"Webhook",{enumerable:!0,get:function(){return l.Webhook}});var p=n(2256);Object.defineProperty(t,"Sender",{enumerable:!0,get:function(){return p.Sender}}),Object.defineProperty(t,"DNS",{enumerable:!0,get:function(){return p.DNS}});var d=n(5295);Object.defineProperty(t,"APIKeyConfiguration",{enumerable:!0,get:function(){return d.APIKeyConfiguration}})},9006:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setValueIfNotNil=t.isPureObject=t.isUndefined=t.isNull=t.isNil=void 0;var o=r(n(1808));t.isNil=o.default;var i=r(n(7376));t.isNull=i.default;var s=r(n(5034));t.isUndefined=s.default;var a=r(n(1818));t.isPureObject=a.default;var u=r(n(1190));t.setValueIfNotNil=u.default},1808:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var o=r(n(7376)),i=r(n(5034));t.default=function(e){return(0,i.default)(e)||(0,o.default)(e)}},7376:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return null===e}},1818:function(e,t){"use strict";function n(e){return n="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},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return"object"===n(e)&&null!==e&&(Object.getPrototypeOf(e)===Object.prototype||null===Object.getPrototypeOf(e))}},5034:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return void 0===e}},1190:function(e,t,n){"use strict";function r(e){return r="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},r(e)}var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=o(n(1808)),s=o(n(7376));t.default=function(e,t,n){if("object"!==r(e)||(0,s.default)(e))throw Error('Argument "targetObject" is not object');if(!t)throw Error('Argument "path" is required');(0,i.default)(n)||(e[t]=n)}},4431:function(e,t,n){var r;!function(o){"use strict";var i,s=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,a=Math.ceil,u=Math.floor,c="[BigNumber Error] ",f=c+"Number primitive has more than 15 significant digits: ",l=1e14,p=14,d=9007199254740991,h=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],g=1e7,m=1e9;function y(e){var t=0|e;return e>0||e===t?t:t-1}function v(e){for(var t,n,r=1,o=e.length,i=e[0]+"";rc^n?1:-1;for(a=(u=o.length)<(c=i.length)?u:c,s=0;si[s]^n?1:-1;return u==c?0:u>c^n?1:-1}function w(e,t,n,r){if(en||e!==u(e))throw Error(c+(r||"Argument")+("number"==typeof e?en?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function S(e){var t=e.c.length-1;return y(e.e/p)==t&&e.c[t]%2!=0}function O(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function E(e,t,n){var r,o;if(t<0){for(o=n+".";++t;o+=n);e=o+e}else if(++t>(r=e.length)){for(o=n,t-=r;--t;o+=n);e+=o}else tI?y.c=y.e=null:e.e=10;l/=10,c++);return void(c>I?y.c=y.e=null:(y.e=c,y.c=[e]))}m=String(e)}else{if(!s.test(m=String(e)))return o(y,m,h);y.s=45==m.charCodeAt(0)?(m=m.slice(1),-1):1}(c=m.indexOf("."))>-1&&(m=m.replace(".","")),(l=m.search(/e/i))>0?(c<0&&(c=l),c+=+m.slice(l+1),m=m.substring(0,l)):c<0&&(c=m.length)}else{if(w(t,2,V.length,"Base"),10==t)return W(y=new H(e),T+y.e+1,B);if(m=String(e),h="number"==typeof e){if(0*e!=0)return o(y,m,h,t);if(y.s=1/e<0?(m=m.slice(1),-1):1,H.DEBUG&&m.replace(/^0\.0*|\./,"").length>15)throw Error(f+e)}else y.s=45===m.charCodeAt(0)?(m=m.slice(1),-1):1;for(n=V.slice(0,t),c=l=0,g=m.length;lc){c=g;continue}}else if(!a&&(m==m.toUpperCase()&&(m=m.toLowerCase())||m==m.toLowerCase()&&(m=m.toUpperCase()))){a=!0,l=-1,c=0;continue}return o(y,String(e),h,t)}h=!1,(c=(m=r(m,t,10,y.s)).indexOf("."))>-1?m=m.replace(".",""):c=m.length}for(l=0;48===m.charCodeAt(l);l++);for(g=m.length;48===m.charCodeAt(--g););if(m=m.slice(l,++g)){if(g-=l,h&&H.DEBUG&&g>15&&(e>d||e!==u(e)))throw Error(f+y.s*e);if((c=c-l-1)>I)y.c=y.e=null;else if(c=M)?O(u,s):E(u,s,"0");else if(i=(e=W(new H(e),t,n)).e,a=(u=v(e.c)).length,1==r||2==r&&(t<=i||i<=D)){for(;aa){if(--t>0)for(u+=".";t--;u+="0");}else if((t+=i-a)>0)for(i+1==a&&(u+=".");t--;u+="0");return e.s<0&&o?"-"+u:u}function J(e,t){for(var n,r=1,o=new H(e[0]);r=10;o/=10,r++);return(n=r+n*p-1)>I?e.c=e.e=null:n=10;c/=10,o++);if((i=t-o)<0)i+=p,s=t,g=(f=m[d=0])/y[o-s-1]%10|0;else if((d=a((i+1)/p))>=m.length){if(!r)break e;for(;m.length<=d;m.push(0));f=g=0,o=1,s=(i%=p)-p+1}else{for(f=c=m[d],o=1;c>=10;c/=10,o++);g=(s=(i%=p)-p+o)<0?0:f/y[o-s-1]%10|0}if(r=r||t<0||null!=m[d+1]||(s<0?f:f%y[o-s-1]),r=n<4?(g||r)&&(0==n||n==(e.s<0?3:2)):g>5||5==g&&(4==n||r||6==n&&(i>0?s>0?f/y[o-s]:0:m[d-1])%10&1||n==(e.s<0?8:7)),t<1||!m[0])return m.length=0,r?(t-=e.e+1,m[0]=y[(p-t%p)%p],e.e=-t||0):m[0]=e.e=0,e;if(0==i?(m.length=d,c=1,d--):(m.length=d+1,c=y[p-i],m[d]=s>0?u(f/y[o-s]%y[s])*c:0),r)for(;;){if(0==d){for(i=1,s=m[0];s>=10;s/=10,i++);for(s=m[0]+=c,c=1;s>=10;s/=10,c++);i!=c&&(e.e++,m[0]==l&&(m[0]=1));break}if(m[d]+=c,m[d]!=l)break;m[d--]=0,c=1}for(i=m.length;0===m[--i];m.pop());}e.e>I?e.c=e.e=null:e.e=M?O(t,n):E(t,n,"0"),e.s<0?"-"+t:t)}return H.clone=e,H.ROUND_UP=0,H.ROUND_DOWN=1,H.ROUND_CEIL=2,H.ROUND_FLOOR=3,H.ROUND_HALF_UP=4,H.ROUND_HALF_DOWN=5,H.ROUND_HALF_EVEN=6,H.ROUND_HALF_CEIL=7,H.ROUND_HALF_FLOOR=8,H.EUCLID=9,H.config=H.set=function(e){var t,n;if(null!=e){if("object"!=typeof e)throw Error(c+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(w(n=e[t],0,m,t),T=n),e.hasOwnProperty(t="ROUNDING_MODE")&&(w(n=e[t],0,8,t),B=n),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((n=e[t])&&n.pop?(w(n[0],-m,0,t),w(n[1],0,m,t),D=n[0],M=n[1]):(w(n,-m,m,t),D=-(M=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if((n=e[t])&&n.pop)w(n[0],-m,-1,t),w(n[1],1,m,t),R=n[0],I=n[1];else{if(w(n,-m,m,t),!n)throw Error(c+t+" cannot be zero: "+n);R=-(I=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(c+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw U=!n,Error(c+"crypto unavailable");U=n}else U=n}if(e.hasOwnProperty(t="MODULO_MODE")&&(w(n=e[t],0,9,t),L=n),e.hasOwnProperty(t="POW_PRECISION")&&(w(n=e[t],0,m,t),F=n),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(n=e[t]))throw Error(c+t+" not an object: "+n);q=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(c+t+" invalid: "+n);V=n}}return{DECIMAL_PLACES:T,ROUNDING_MODE:B,EXPONENTIAL_AT:[D,M],RANGE:[R,I],CRYPTO:U,MODULO_MODE:L,POW_PRECISION:F,FORMAT:q,ALPHABET:V}},H.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!H.DEBUG)return!0;var t,n,r=e.c,o=e.e,i=e.s;e:if("[object Array]"=={}.toString.call(r)){if((1===i||-1===i)&&o>=-m&&o<=m&&o===u(o)){if(0===r[0]){if(0===o&&1===r.length)return!0;break e}if((t=(o+1)%p)<1&&(t+=p),String(r[0]).length==t){for(t=0;t=l||n!==u(n))break e;if(0!==n)return!0}}}else if(null===r&&null===o&&(null===i||1===i||-1===i))return!0;throw Error(c+"Invalid BigNumber: "+e)},H.maximum=H.max=function(){return J(arguments,x.lt)},H.minimum=H.min=function(){return J(arguments,x.gt)},H.random=(i=9007199254740992,A=Math.random()*i&2097151?function(){return u(Math.random()*i)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,n,r,o,i,s=0,f=[],l=new H(N);if(null==e?e=T:w(e,0,m),o=a(e/p),U)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(o*=2));s>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),t[s]=n[0],t[s+1]=n[1]):(f.push(i%1e14),s+=2);s=o/2}else{if(!crypto.randomBytes)throw U=!1,Error(c+"crypto unavailable");for(t=crypto.randomBytes(o*=7);s=9e15?crypto.randomBytes(7).copy(t,s):(f.push(i%1e14),s+=7);s=o/7}if(!U)for(;s=10;i/=10,s++);sn-1&&(null==s[o+1]&&(s[o+1]=0),s[o+1]+=s[o]/n|0,s[o]%=n)}return s.reverse()}return function(r,o,i,s,a){var u,c,f,l,p,d,h,g,m=r.indexOf("."),y=T,b=B;for(m>=0&&(l=F,F=0,r=r.replace(".",""),d=(g=new H(o)).pow(r.length-m),F=l,g.c=t(E(v(d.c),d.e,"0"),10,i,e),g.e=g.c.length),f=l=(h=t(r,o,i,a?(u=V,e):(u=e,V))).length;0==h[--l];h.pop());if(!h[0])return u.charAt(0);if(m<0?--f:(d.c=h,d.e=f,d.s=s,h=(d=n(d,g,y,b,i)).c,p=d.r,f=d.e),m=h[c=f+y+1],l=i/2,p=p||c<0||null!=h[c+1],p=b<4?(null!=m||p)&&(0==b||b==(d.s<0?3:2)):m>l||m==l&&(4==b||p||6==b&&1&h[c-1]||b==(d.s<0?8:7)),c<1||!h[0])r=p?E(u.charAt(1),-y,u.charAt(0)):u.charAt(0);else{if(h.length=c,p)for(--i;++h[--c]>i;)h[c]=0,c||(++f,h=[1].concat(h));for(l=h.length;!h[--l];);for(m=0,r="";m<=l;r+=u.charAt(h[m++]));r=E(r,f,u.charAt(0))}return r}}(),n=function(){function e(e,t,n){var r,o,i,s,a=0,u=e.length,c=t%g,f=t/g|0;for(e=e.slice();u--;)a=((o=c*(i=e[u]%g)+(r=f*i+(s=e[u]/g|0)*c)%g*g+a)/n|0)+(r/g|0)+f*s,e[u]=o%n;return a&&(e=[a].concat(e)),e}function t(e,t,n,r){var o,i;if(n!=r)i=n>r?1:-1;else for(o=i=0;ot[o]?1:-1;break}return i}function n(e,t,n,r){for(var o=0;n--;)e[n]-=o,o=e[n]1;e.splice(0,1));}return function(r,o,i,s,a){var c,f,d,h,g,m,v,b,w,S,O,E,A,C,P,j,_,k=r.s==o.s?1:-1,x=r.c,N=o.c;if(!(x&&x[0]&&N&&N[0]))return new H(r.s&&o.s&&(x?!N||x[0]!=N[0]:N)?x&&0==x[0]||!N?0*k:k/0:NaN);for(w=(b=new H(k)).c=[],k=i+(f=r.e-o.e)+1,a||(a=l,f=y(r.e/p)-y(o.e/p),k=k/p|0),d=0;N[d]==(x[d]||0);d++);if(N[d]>(x[d]||0)&&f--,k<0)w.push(1),h=!0;else{for(C=x.length,j=N.length,d=0,k+=2,(g=u(a/(N[0]+1)))>1&&(N=e(N,g,a),x=e(x,g,a),j=N.length,C=x.length),A=j,O=(S=x.slice(0,j)).length;O=a/2&&P++;do{if(g=0,(c=t(N,S,j,O))<0){if(E=S[0],j!=O&&(E=E*a+(S[1]||0)),(g=u(E/P))>1)for(g>=a&&(g=a-1),v=(m=e(N,g,a)).length,O=S.length;1==t(m,S,v,O);)g--,n(m,j=10;k/=10,d++);W(b,i+(b.e=d+f*p-1)+1,s,h)}else b.e=f,b.r=+h;return b}}(),C=/^(-?)0([xbo])(?=\w[\w.]*$)/i,P=/^([^.]+)\.$/,j=/^\.([^.]+)$/,_=/^-?(Infinity|NaN)$/,k=/^\s*\+(?=[\w.])|^\s+|\s+$/g,o=function(e,t,n,r){var o,i=n?t:t.replace(k,"");if(_.test(i))e.s=isNaN(i)?null:i<0?-1:1;else{if(!n&&(i=i.replace(C,(function(e,t,n){return o="x"==(n=n.toLowerCase())?16:"b"==n?2:8,r&&r!=o?e:t})),r&&(o=r,i=i.replace(P,"$1").replace(j,"0.$1")),t!=i))return new H(i,o);if(H.DEBUG)throw Error(c+"Not a"+(r?" base "+r:"")+" number: "+t);e.s=null}e.c=e.e=null},x.absoluteValue=x.abs=function(){var e=new H(this);return e.s<0&&(e.s=1),e},x.comparedTo=function(e,t){return b(this,new H(e,t))},x.decimalPlaces=x.dp=function(e,t){var n,r,o,i=this;if(null!=e)return w(e,0,m),null==t?t=B:w(t,0,8),W(new H(i),e+i.e+1,t);if(!(n=i.c))return null;if(r=((o=n.length-1)-y(this.e/p))*p,o=n[o])for(;o%10==0;o/=10,r--);return r<0&&(r=0),r},x.dividedBy=x.div=function(e,t){return n(this,new H(e,t),T,B)},x.dividedToIntegerBy=x.idiv=function(e,t){return n(this,new H(e,t),0,1)},x.exponentiatedBy=x.pow=function(e,t){var n,r,o,i,s,f,l,d,h=this;if((e=new H(e)).c&&!e.isInteger())throw Error(c+"Exponent not an integer: "+$(e));if(null!=t&&(t=new H(t)),s=e.e>14,!h.c||!h.c[0]||1==h.c[0]&&!h.e&&1==h.c.length||!e.c||!e.c[0])return d=new H(Math.pow(+$(h),s?2-S(e):+$(e))),t?d.mod(t):d;if(f=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new H(NaN);(r=!f&&h.isInteger()&&t.isInteger())&&(h=h.mod(t))}else{if(e.e>9&&(h.e>0||h.e<-1||(0==h.e?h.c[0]>1||s&&h.c[1]>=24e7:h.c[0]<8e13||s&&h.c[0]<=9999975e7)))return i=h.s<0&&S(e)?-0:0,h.e>-1&&(i=1/i),new H(f?1/i:i);F&&(i=a(F/p+2))}for(s?(n=new H(.5),f&&(e.s=1),l=S(e)):l=(o=Math.abs(+$(e)))%2,d=new H(N);;){if(l){if(!(d=d.times(h)).c)break;i?d.c.length>i&&(d.c.length=i):r&&(d=d.mod(t))}if(o){if(0===(o=u(o/2)))break;l=o%2}else if(W(e=e.times(n),e.e+1,1),e.e>14)l=S(e);else{if(0==(o=+$(e)))break;l=o%2}h=h.times(h),i?h.c&&h.c.length>i&&(h.c.length=i):r&&(h=h.mod(t))}return r?d:(f&&(d=N.div(d)),t?d.mod(t):i?W(d,F,B,void 0):d)},x.integerValue=function(e){var t=new H(this);return null==e?e=B:w(e,0,8),W(t,t.e+1,e)},x.isEqualTo=x.eq=function(e,t){return 0===b(this,new H(e,t))},x.isFinite=function(){return!!this.c},x.isGreaterThan=x.gt=function(e,t){return b(this,new H(e,t))>0},x.isGreaterThanOrEqualTo=x.gte=function(e,t){return 1===(t=b(this,new H(e,t)))||0===t},x.isInteger=function(){return!!this.c&&y(this.e/p)>this.c.length-2},x.isLessThan=x.lt=function(e,t){return b(this,new H(e,t))<0},x.isLessThanOrEqualTo=x.lte=function(e,t){return-1===(t=b(this,new H(e,t)))||0===t},x.isNaN=function(){return!this.s},x.isNegative=function(){return this.s<0},x.isPositive=function(){return this.s>0},x.isZero=function(){return!!this.c&&0==this.c[0]},x.minus=function(e,t){var n,r,o,i,s=this,a=s.s;if(t=(e=new H(e,t)).s,!a||!t)return new H(NaN);if(a!=t)return e.s=-t,s.plus(e);var u=s.e/p,c=e.e/p,f=s.c,d=e.c;if(!u||!c){if(!f||!d)return f?(e.s=-t,e):new H(d?s:NaN);if(!f[0]||!d[0])return d[0]?(e.s=-t,e):new H(f[0]?s:3==B?-0:0)}if(u=y(u),c=y(c),f=f.slice(),a=u-c){for((i=a<0)?(a=-a,o=f):(c=u,o=d),o.reverse(),t=a;t--;o.push(0));o.reverse()}else for(r=(i=(a=f.length)<(t=d.length))?a:t,a=t=0;t0)for(;t--;f[n++]=0);for(t=l-1;r>a;){if(f[--r]=0;){for(n=0,h=E[o]%w,m=E[o]/w|0,i=o+(s=u);i>o;)n=((c=h*(c=O[--s]%w)+(a=m*c+(f=O[s]/w|0)*h)%w*w+v[i]+n)/b|0)+(a/w|0)+m*f,v[i--]=c%b;v[i]=n}return n?++r:v.splice(0,1),G(e,v,r)},x.negated=function(){var e=new H(this);return e.s=-e.s||null,e},x.plus=function(e,t){var n,r=this,o=r.s;if(t=(e=new H(e,t)).s,!o||!t)return new H(NaN);if(o!=t)return e.s=-t,r.minus(e);var i=r.e/p,s=e.e/p,a=r.c,u=e.c;if(!i||!s){if(!a||!u)return new H(o/0);if(!a[0]||!u[0])return u[0]?e:new H(a[0]?r:0*o)}if(i=y(i),s=y(s),a=a.slice(),o=i-s){for(o>0?(s=i,n=u):(o=-o,n=a),n.reverse();o--;n.push(0));n.reverse()}for((o=a.length)-(t=u.length)<0&&(n=u,u=a,a=n,t=o),o=0;t;)o=(a[--t]=a[t]+u[t]+o)/l|0,a[t]=l===a[t]?0:a[t]%l;return o&&(a=[o].concat(a),++s),G(e,a,s)},x.precision=x.sd=function(e,t){var n,r,o,i=this;if(null!=e&&e!==!!e)return w(e,1,m),null==t?t=B:w(t,0,8),W(new H(i),e,t);if(!(n=i.c))return null;if(r=(o=n.length-1)*p+1,o=n[o]){for(;o%10==0;o/=10,r--);for(o=n[0];o>=10;o/=10,r++);}return e&&i.e+1>r&&(r=i.e+1),r},x.shiftedBy=function(e){return w(e,-9007199254740991,d),this.times("1e"+e)},x.squareRoot=x.sqrt=function(){var e,t,r,o,i,s=this,a=s.c,u=s.s,c=s.e,f=T+4,l=new H("0.5");if(1!==u||!a||!a[0])return new H(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(u=Math.sqrt(+$(s)))||u==1/0?(((t=v(a)).length+c)%2==0&&(t+="0"),u=Math.sqrt(+t),c=y((c+1)/2)-(c<0||c%2),r=new H(t=u==1/0?"5e"+c:(t=u.toExponential()).slice(0,t.indexOf("e")+1)+c)):r=new H(u+""),r.c[0])for((u=(c=r.e)+f)<3&&(u=0);;)if(i=r,r=l.times(i.plus(n(s,i,f,1))),v(i.c).slice(0,u)===(t=v(r.c)).slice(0,u)){if(r.e0&&g>0){for(i=g%a||a,l=h.substr(0,i);i0&&(l+=f+h.slice(i)),d&&(l="-"+l)}r=p?l+(n.decimalSeparator||"")+((u=+n.fractionGroupSize)?p.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):p):l}return(n.prefix||"")+r+(n.suffix||"")},x.toFraction=function(e){var t,r,o,i,s,a,u,f,l,d,g,m,y=this,b=y.c;if(null!=e&&(!(u=new H(e)).isInteger()&&(u.c||1!==u.s)||u.lt(N)))throw Error(c+"Argument "+(u.isInteger()?"out of range: ":"not an integer: ")+$(u));if(!b)return new H(y);for(t=new H(N),l=r=new H(N),o=f=new H(N),m=v(b),s=t.e=m.length-y.e-1,t.c[0]=h[(a=s%p)<0?p+a:a],e=!e||u.comparedTo(t)>0?s>0?t:l:u,a=I,I=1/0,u=new H(m),f.c[0]=0;d=n(u,t,0,1),1!=(i=r.plus(d.times(o))).comparedTo(e);)r=o,o=i,l=f.plus(d.times(i=l)),f=i,t=u.minus(d.times(i=t)),u=i;return i=n(e.minus(r),o,0,1),f=f.plus(i.times(l)),r=r.plus(i.times(o)),f.s=l.s=y.s,g=n(l,o,s*=2,B).minus(y).abs().comparedTo(n(f,r,s,B).minus(y).abs())<1?[l,o]:[f,r],I=a,g},x.toNumber=function(){return+$(this)},x.toPrecision=function(e,t){return null!=e&&w(e,1,m),K(this,e,t,2)},x.toString=function(e){var t,n=this,o=n.s,i=n.e;return null===i?o?(t="Infinity",o<0&&(t="-"+t)):t="NaN":(null==e?t=i<=D||i>=M?O(v(n.c),i):E(v(n.c),i,"0"):10===e?t=E(v((n=W(new H(n),T+i+1,B)).c),n.e,"0"):(w(e,2,V.length,"Base"),t=r(E(v(n.c),i,"0"),10,e,o,!0)),o<0&&n.c[0]&&(t="-"+t)),t},x.valueOf=x.toJSON=function(){return $(this)},x._isBigNumber=!0,null!=t&&H.set(t),H}(),i.default=i.BigNumber=i,void 0===(r=function(){return i}.call(t,n,t,e))||(e.exports=r)}()},4400:function(e,t,n){var r=n(4123).stringify,o=n(6813);e.exports=function(e){return{parse:o(e),stringify:r}},e.exports.parse=o(),e.exports.stringify=r},6813:function(e,t,n){var r=null;const o=/(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])/,i=/(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)/;e.exports=function(e){"use strict";var t={strict:!1,storeAsString:!1,alwaysParseAsBig:!1,useNativeBigInt:!1,protoAction:"error",constructorAction:"error"};if(null!=e){if(!0===e.strict&&(t.strict=!0),!0===e.storeAsString&&(t.storeAsString=!0),t.alwaysParseAsBig=!0===e.alwaysParseAsBig&&e.alwaysParseAsBig,t.useNativeBigInt=!0===e.useNativeBigInt&&e.useNativeBigInt,void 0!==e.constructorAction){if("error"!==e.constructorAction&&"ignore"!==e.constructorAction&&"preserve"!==e.constructorAction)throw new Error(`Incorrect value for constructorAction option, must be "error", "ignore" or undefined but passed ${e.constructorAction}`);t.constructorAction=e.constructorAction}if(void 0!==e.protoAction){if("error"!==e.protoAction&&"ignore"!==e.protoAction&&"preserve"!==e.protoAction)throw new Error(`Incorrect value for protoAction option, must be "error", "ignore" or undefined but passed ${e.protoAction}`);t.protoAction=e.protoAction}}var s,a,u,c,f={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"},l=function(e){throw{name:"SyntaxError",message:e,at:s,text:u}},p=function(e){return e&&e!==a&&l("Expected '"+e+"' instead of '"+a+"'"),a=u.charAt(s),s+=1,a},d=function(){var e,o="";for("-"===a&&(o="-",p("-"));a>="0"&&a<="9";)o+=a,p();if("."===a)for(o+=".";p()&&a>="0"&&a<="9";)o+=a;if("e"===a||"E"===a)for(o+=a,p(),"-"!==a&&"+"!==a||(o+=a,p());a>="0"&&a<="9";)o+=a,p();if(e=+o,isFinite(e))return null==r&&(r=n(4431)),o.length>15?t.storeAsString?o:t.useNativeBigInt?BigInt(o):new r(o):t.alwaysParseAsBig?t.useNativeBigInt?BigInt(e):new r(e):e;l("Bad number")},h=function(){var e,t,n,r="";if('"'===a)for(var o=s;p();){if('"'===a)return s-1>o&&(r+=u.substring(o,s-1)),p(),r;if("\\"===a){if(s-1>o&&(r+=u.substring(o,s-1)),p(),"u"===a){for(n=0,t=0;t<4&&(e=parseInt(p(),16),isFinite(e));t+=1)n=16*n+e;r+=String.fromCharCode(n)}else{if("string"!=typeof f[a])break;r+=f[a]}o=s}}l("Bad string")},g=function(){for(;a&&a<=" ";)p()};return c=function(){switch(g(),a){case"{":return function(){var e,n=Object.create(null);if("{"===a){if(p("{"),g(),"}"===a)return p("}"),n;for(;a;){if(e=h(),g(),p(":"),!0===t.strict&&Object.hasOwnProperty.call(n,e)&&l('Duplicate key "'+e+'"'),!0===o.test(e)?"error"===t.protoAction?l("Object contains forbidden prototype property"):"ignore"===t.protoAction?c():n[e]=c():!0===i.test(e)?"error"===t.constructorAction?l("Object contains forbidden constructor property"):"ignore"===t.constructorAction?c():n[e]=c():n[e]=c(),g(),"}"===a)return p("}"),n;p(","),g()}}l("Bad object")}();case"[":return function(){var e=[];if("["===a){if(p("["),g(),"]"===a)return p("]"),e;for(;a;){if(e.push(c()),g(),"]"===a)return p("]"),e;p(","),g()}}l("Bad array")}();case'"':return h();case"-":return d();default:return a>="0"&&a<="9"?d():function(){switch(a){case"t":return p("t"),p("r"),p("u"),p("e"),!0;case"f":return p("f"),p("a"),p("l"),p("s"),p("e"),!1;case"n":return p("n"),p("u"),p("l"),p("l"),null}l("Unexpected '"+a+"'")}()}},function(e,t){var n;return u=e+"",s=0,a=" ",n=c(),g(),a&&l("Syntax error"),"function"==typeof t?function e(n,r){var o,i=n[r];return i&&"object"==typeof i&&Object.keys(i).forEach((function(t){void 0!==(o=e(i,t))?i[t]=o:delete i[t]})),t.call(n,r,i)}({"":n},""):n}}},4123:function(e,t,n){var r=n(4431),o=e.exports;!function(){"use strict";var e,t,n,i=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,s={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function a(e){return i.lastIndex=0,i.test(e)?'"'+e.replace(i,(function(e){var t=s[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)}))+'"':'"'+e+'"'}function u(o,i){var s,c,f,l,p,d=e,h=i[o],g=null!=h&&(h instanceof r||r.isBigNumber(h));switch(h&&"object"==typeof h&&"function"==typeof h.toJSON&&(h=h.toJSON(o)),"function"==typeof n&&(h=n.call(i,o,h)),typeof h){case"string":return g?h:a(h);case"number":return isFinite(h)?String(h):"null";case"boolean":case"null":case"bigint":return String(h);case"object":if(!h)return"null";if(e+=t,p=[],"[object Array]"===Object.prototype.toString.apply(h)){for(l=h.length,s=0;s1){var n=e.shift();e[0]=n+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var r=0;r0&&(o=o.replace(/^[\/]+/,"")),o=r0?"?":"")+s.join("&")}return function(){return e("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}},e.exports?e.exports=i():void 0===(o="function"==typeof(r=i)?r.call(t,n,t,e):r)||(e.exports=o)},4147:function(e){"use strict";e.exports=JSON.parse('{"name":"node-mailjet","version":"6.0.4","main":"./dist/mailjet.node.js","browser":"./dist/mailjet.web.js","types":"./dist/declarations/index.d.ts","description":"Mailjet API client","author":"Mailjet","license":"MIT","private":true,"keywords":["email","sms","node","mail","mailjet"],"engines":{"node":">= 12.0.0","npm":">= 6.9.0"},"files":["lib/**","dist/**"],"directories":{"lib":"./lib","docs":"./docs"},"typescript":{"definition":"./dist/declarations/index.d.ts"},"scripts":{"test":"npm run ts:mocha test/","test:int":"npm run ts:mocha test/integration/","test:unit":"npm run ts:mocha test/unit/","test:watch":"mocha --extension ts -r tsconfig-paths/register -r ts-node/register --watch","cover":"npm run cover:expandable npm run test","cover:int":"npm run cover:expandable npm run test:int","cover:unit":"npm run cover:expandable npm run test:unit","cover:expandable":"nyc --reporter=text-summary --reporter=lcov --report-dir=.coverage --temp-dir=./.coverage/.nyc_output","build":"npm run build:release && npm run build:prepublish","build:dev":"webpack --config ./webpack/webpack.dev.config.js --progress --color","build:release":"webpack --config ./webpack/webpack.release.config.js --progress --color","build:prepublish":"node ./scripts/PreparePackage.js","build:watch":"webpack --watch --config ./webpack/webpack.dev.config.js --progress --color","lint":"eslint .","lint:fix":"eslint --fix .","lint:errors":"eslint --quiet .","ts:run":"ts-node --transpileOnly --project ./tsconfig.json -r tsconfig-paths/register","ts:watch":"ts-node-dev --respawn --transpile-only --project ./tsconfig.json -r tsconfig-paths/register","ts:mocha":"mocha --extension ts --recursive -r tsconfig-paths/register -r ts-node/register","ts:patch":"ts-patch install -s","init":"npm install && npm run ts:patch && npm run pkg:prepare","pkg:link":"cd ./dist && npm link && echo \'\\n=== link name: node-mailjet ===\'","pkg:prepare":"husky install","pkg:precommit":"npm audit && npm run lint:errors && npm run test","release":"standard-version -a","release:dry":"standard-version --dry-run","release:quiet":"standard-version --no-verify -a","release:minor":"standard-version -a --release-as minor","release:patch":"standard-version -a --release-as patch","release:major":"standard-version -a --release-as major","docs":"typedoc --tsconfig ./tsconfig.json"},"dependencies":{"axios":"^0.27.2","url-join":"^4.0.0","json-bigint":"^1.0.0"},"devDependencies":{"qs":"^6.5.0","@babel/core":"^7.18.0","@babel/preset-env":"^7.18.0","@commitlint/cli":"^17.0.2","@commitlint/config-conventional":"^17.0.2","@types/chai":"^4.3.1","@types/json-bigint":"^1.0.1","@types/mocha":"^9.1.1","@types/node":"^17.0.34","@types/qs":"^6.9.7","@types/superagent":"^4.1.15","@types/url-join":"^4.0.1","@typescript-eslint/eslint-plugin":"^5.24.0","@typescript-eslint/parser":"^5.24.0","babel-loader":"^8.2.5","chai":"^4.1.0","eslint":"^8.15.0","eslint-config-airbnb-base":"^15.0.0","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","eslint-plugin-tsdoc":"^0.2.16","husky":"^8.0.1","mocha":"^9.0.0","nock":"^13.2.4","nyc":"^15.1.0","standard-version":"^9.5.0","terser-webpack-plugin":"^5.3.1","ts-loader":"^9.3.0","ts-node":"^10.7.0","ts-node-dev":"^1.1.8","ts-patch":"^2.0.1","tsconfig-paths":"^4.0.0","tsconfig-paths-webpack-plugin":"^3.5.2","typedoc":"^0.22.15","typescript":"^4.6.4","typescript-transform-paths":"^3.3.1","webpack":"^5.76.0","webpack-cli":"^4.9.2","webpack-merge":"^5.8.0"},"homepage":"https://github.com/mailjet/mailjet-apiv3-nodejs#readme","repository":{"type":"git","url":"git+https://github.com/mailjet/mailjet-apiv3-nodejs.git"},"bugs":{"url":"https://github.com/mailjet/mailjet-apiv3-nodejs/issues"},"contributors":["Arnaud Breton (https://github.com/arnaudbreton)","Nicholas Smith (https://github.com/safani)","Jérémie Parker (https://github.com/p-j)"]}')}},t={},n=function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}(8321),n;var e,t,n})); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QSxFQUFBQSxvQkFBQUEsR0FBQUEsc0JBQ0FBLEVBQUFBLEVBQUFBLGNBQUFBLEdBQUFBLGdCQUNBQSxFQUFBQSxFQUFBQSxlQUFBQSxHQUFBQSxpQkFDQUEsRUFBQUEsRUFBQUEsWUFBQUEsR0FBQUEsY0FDQUEsRUFBQUEsRUFBQUEsWUFBQUEsSUFBQUEsY0FDQUEsRUFBQUEsRUFBQUEsY0FBQUEsSUFBQUEsZ0JBQ0FBLEVBQUFBLEVBQUFBLGdCQUFBQSxJQUFBQSxrQkFDQUEsRUFBQUEsRUFBQUEsV0FBQUEsSUFBQUEsYUFDQUEsRUFBQUEsRUFBQUEsV0FBQUEsSUFBQUEsYUFDQUEsRUFBQUEsRUFBQUEsb0JBQUFBLElBQUFBLHNCQUNBQSxFQUFBQSxFQUFBQSxlQUFBQSxJQUFBQSxpQkFDQUEsRUFBQUEsRUFBQUEsbUJBQUFBLElBQUFBLHFCQUNBQSxFQUFBQSxFQUFBQSx3QkFBQUEsSUFBQUEsMEJBQ0FBLEVBQUFBLEVBQUFBLFFBQUFBLElBQUFBLFVBQ0FBLEVBQUFBLEVBQUFBLFlBQUFBLElBQUFBLGNBQ0FBLEVBQUFBLEVBQUFBLGFBQUFBLElBQUFBLGNBckJGLEVBQVlELEVBQUFBLGVBQUFBLEVBQUFBLGFBQVksS0F3QnhCLFNBQVlFLEdBQ1ZBLEVBQUFBLEVBQUFBLGNBQUFBLEdBQUFBLGdCQUNBQSxFQUFBQSxFQUFBQSxVQUFBQSxHQUFBQSxZQUNBQSxFQUFBQSxFQUFBQSxRQUFBQSxHQUFBQSxTQUhGLEVBQVlGLEVBQUFBLFdBQUFBLEVBQUFBLFNBQVEsS0FNcEIsU0FBWUcsR0FDVkEsRUFBQUEsRUFBQUEsVUFBQUEsR0FBQUEsWUFDQUEsRUFBQUEsRUFBQUEsT0FBQUEsR0FBQUEsU0FDQUEsRUFBQUEsRUFBQUEsS0FBQUEsR0FBQUEsT0FDQUEsRUFBQUEsRUFBQUEsT0FBQUEsR0FBQUEsU0FDQUEsRUFBQUEsRUFBQUEsUUFBQUEsR0FBQUEsVUFDQUEsRUFBQUEsRUFBQUEsT0FBQUEsR0FBQUEsU0FDQUEsRUFBQUEsRUFBQUEsS0FBQUEsR0FBQUEsT0FDQUEsRUFBQUEsRUFBQUEsTUFB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eUJHLEdBQzVDLFFBQXFCN3RCLElBQWpCOHRCLEVBQ0gsT0FBT0EsRUFBYXh5QixRQUdyQixJQUFJRCxFQUFTcXlCLEVBQXlCRyxHQUFZLENBR2pEdnlCLFFBQVMsQ0FBQyxHQU9YLE9BSEF5eUIsRUFBb0JGLEdBQVU5cEIsS0FBSzFJLEVBQU9DLFFBQVNELEVBQVFBLEVBQU9DLFFBQVNzeUIsR0FHcEV2eUIsRUFBT0MsT0FDZixDQ25CMEJzeUIsQ0FBb0IsY0RGMUNGLEVDRUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2luZGV4LmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsVG9rZW4uanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsZWRFcnJvci5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0F4aW9zRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9tZXJnZUNvbmZpZy5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS90cmFuc2Zvcm1EYXRhLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9lbnYvZGF0YS5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0F4aW9zRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbnVsbC5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9wYXJzZVByb3RvY29sLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcHJlYWQuanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3RvRm9ybURhdGEuanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3ZhbGlkYXRvci5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi9jbGllbnQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbGliL2luZGV4LnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi9yZXF1ZXN0L0h0dHBNZXRob2RzLnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi9yZXF1ZXN0L2luZGV4LnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi90eXBlcy9hcGkvQ2FtcGFpZ24udHMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbGliL3R5cGVzL2FwaS9Db21tb24udHMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbGliL3R5cGVzL2FwaS9Db250YWN0LnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi90eXBlcy9hcGkvTWVzc2FnZS50cyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9saWIvdHlwZXMvYXBpL1NlZ21lbnRhdGlvbi50cyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9saWIvdHlwZXMvYXBpL1NlbmRFbWFpbC50cyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9saWIvdHlwZXMvYXBpL1NlbmRlckFkZHJlc3NBbmREb21haW4udHMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbGliL3R5cGVzL2FwaS9TZXR0aW5nLnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi90eXBlcy9hcGkvU3RhdGlzdGljLnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi90eXBlcy9hcGkvVGVtcGxhdGUudHMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbGliL3R5cGVzL2FwaS9XZWJob29rLnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi90eXBlcy9hcGkvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbGliL3V0aWxzL2luZGV4LnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi91dGlscy9pc05pbC50cyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9saWIvdXRpbHMvaXNOdWxsLnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi91dGlscy9pc1B1cmVPYmplY3QudHMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0Ly4vbGliL3V0aWxzL2lzVW5kZWZpbmVkLnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL2xpYi91dGlscy9zZXRWYWx1ZUlmTm90TmlsLnRzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9iaWdudW1iZXIuanMvYmlnbnVtYmVyLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9qc29uLWJpZ2ludC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ub2RlLW1haWxqZXQvLi9ub2RlX21vZHVsZXMvanNvbi1iaWdpbnQvbGliL3BhcnNlLmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy9qc29uLWJpZ2ludC9saWIvc3RyaW5naWZ5LmpzIiwid2VicGFjazovL25vZGUtbWFpbGpldC8uL25vZGVfbW9kdWxlcy91cmwtam9pbi9saWIvdXJsLWpvaW4uanMiLCJ3ZWJwYWNrOi8vbm9kZS1tYWlsamV0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL25vZGUtbWFpbGpldC93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9heGlvcycpOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIHNldHRsZSA9IHJlcXVpcmUoJy4vLi4vY29yZS9zZXR0bGUnKTtcbnZhciBjb29raWVzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2Nvb2tpZXMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9idWlsZFVSTCcpO1xudmFyIGJ1aWxkRnVsbFBhdGggPSByZXF1aXJlKCcuLi9jb3JlL2J1aWxkRnVsbFBhdGgnKTtcbnZhciBwYXJzZUhlYWRlcnMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvcGFyc2VIZWFkZXJzJyk7XG52YXIgaXNVUkxTYW1lT3JpZ2luID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbicpO1xudmFyIHRyYW5zaXRpb25hbERlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMvdHJhbnNpdGlvbmFsJyk7XG52YXIgQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvQXhpb3NFcnJvcicpO1xudmFyIENhbmNlbGVkRXJyb3IgPSByZXF1aXJlKCcuLi9jYW5jZWwvQ2FuY2VsZWRFcnJvcicpO1xudmFyIHBhcnNlUHJvdG9jb2wgPSByZXF1aXJlKCcuLi9oZWxwZXJzL3BhcnNlUHJvdG9jb2wnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4aHJBZGFwdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0RGF0YSA9IGNvbmZpZy5kYXRhO1xuICAgIHZhciByZXF1ZXN0SGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzO1xuICAgIHZhciByZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xuICAgIHZhciBvbkNhbmNlbGVkO1xuICAgIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShvbkNhbmNlbGVkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcbiAgICAgICAgY29uZmlnLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uQ2FuY2VsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSAmJiB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpKSB7XG4gICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XG4gICAgfVxuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcblxuICAgIC8vIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb25cbiAgICBpZiAoY29uZmlnLmF1dGgpIHtcbiAgICAgIHZhciB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xuICAgICAgdmFyIHBhc3N3b3JkID0gY29uZmlnLmF1dGgucGFzc3dvcmQgPyB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoY29uZmlnLmF1dGgucGFzc3dvcmQpKSA6ICcnO1xuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcblxuICAgIHJlcXVlc3Qub3Blbihjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplciksIHRydWUpO1xuXG4gICAgLy8gU2V0IHRoZSByZXF1ZXN0IHRpbWVvdXQgaW4gTVNcbiAgICByZXF1ZXN0LnRpbWVvdXQgPSBjb25maWcudGltZW91dDtcblxuICAgIGZ1bmN0aW9uIG9ubG9hZGVuZCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxuICAgICAgdmFyIHJlc3BvbnNlSGVhZGVycyA9ICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgPyBwYXJzZUhlYWRlcnMocmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkgOiBudWxsO1xuICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9ICFyZXNwb25zZVR5cGUgfHwgcmVzcG9uc2VUeXBlID09PSAndGV4dCcgfHwgIHJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nID9cbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRleHQgOiByZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgdmFyIHJlc3BvbnNlID0ge1xuICAgICAgICBkYXRhOiByZXNwb25zZURhdGEsXG4gICAgICAgIHN0YXR1czogcmVxdWVzdC5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcXVlc3Quc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcmVzcG9uc2VIZWFkZXJzLFxuICAgICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdDogcmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgc2V0dGxlKGZ1bmN0aW9uIF9yZXNvbHZlKHZhbHVlKSB7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbiBfcmVqZWN0KGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgcmVzcG9uc2UpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoJ29ubG9hZGVuZCcgaW4gcmVxdWVzdCkge1xuICAgICAgLy8gVXNlIG9ubG9hZGVuZCBpZiBhdmFpbGFibGVcbiAgICAgIHJlcXVlc3Qub25sb2FkZW5kID0gb25sb2FkZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMaXN0ZW4gZm9yIHJlYWR5IHN0YXRlIHRvIGVtdWxhdGUgb25sb2FkZW5kXG4gICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgcmVxdWVzdCBlcnJvcmVkIG91dCBhbmQgd2UgZGlkbid0IGdldCBhIHJlc3BvbnNlLCB0aGlzIHdpbGwgYmVcbiAgICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcbiAgICAgICAgLy8gV2l0aCBvbmUgZXhjZXB0aW9uOiByZXF1ZXN0IHRoYXQgdXNpbmcgZmlsZTogcHJvdG9jb2wsIG1vc3QgYnJvd3NlcnNcbiAgICAgICAgLy8gd2lsbCByZXR1cm4gc3RhdHVzIGFzIDAgZXZlbiB0aG91Z2ggaXQncyBhIHN1Y2Nlc3NmdWwgcmVxdWVzdFxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVhZHlzdGF0ZSBoYW5kbGVyIGlzIGNhbGxpbmcgYmVmb3JlIG9uZXJyb3Igb3Igb250aW1lb3V0IGhhbmRsZXJzLFxuICAgICAgICAvLyBzbyB3ZSBzaG91bGQgY2FsbCBvbmxvYWRlbmQgb24gdGhlIG5leHQgJ3RpY2snXG4gICAgICAgIHNldFRpbWVvdXQob25sb2FkZW5kKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGJyb3dzZXIgcmVxdWVzdCBjYW5jZWxsYXRpb24gKGFzIG9wcG9zZWQgdG8gYSBtYW51YWwgY2FuY2VsbGF0aW9uKVxuICAgIHJlcXVlc3Qub25hYm9ydCA9IGZ1bmN0aW9uIGhhbmRsZUFib3J0KCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdSZXF1ZXN0IGFib3J0ZWQnLCBBeGlvc0Vycm9yLkVDT05OQUJPUlRFRCwgY29uZmlnLCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbG93IGxldmVsIG5ldHdvcmsgZXJyb3JzXG4gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XG4gICAgICAvLyBSZWFsIGVycm9ycyBhcmUgaGlkZGVuIGZyb20gdXMgYnkgdGhlIGJyb3dzZXJcbiAgICAgIC8vIG9uZXJyb3Igc2hvdWxkIG9ubHkgZmlyZSBpZiBpdCdzIGEgbmV0d29yayBlcnJvclxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKCdOZXR3b3JrIEVycm9yJywgQXhpb3NFcnJvci5FUlJfTkVUV09SSywgY29uZmlnLCByZXF1ZXN0LCByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgdGltZW91dFxuICAgIHJlcXVlc3Qub250aW1lb3V0ID0gZnVuY3Rpb24gaGFuZGxlVGltZW91dCgpIHtcbiAgICAgIHZhciB0aW1lb3V0RXJyb3JNZXNzYWdlID0gY29uZmlnLnRpbWVvdXQgPyAndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnIDogJ3RpbWVvdXQgZXhjZWVkZWQnO1xuICAgICAgdmFyIHRyYW5zaXRpb25hbCA9IGNvbmZpZy50cmFuc2l0aW9uYWwgfHwgdHJhbnNpdGlvbmFsRGVmYXVsdHM7XG4gICAgICBpZiAoY29uZmlnLnRpbWVvdXRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xuICAgICAgfVxuICAgICAgcmVqZWN0KG5ldyBBeGlvc0Vycm9yKFxuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlLFxuICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/IEF4aW9zRXJyb3IuRVRJTUVET1VUIDogQXhpb3NFcnJvci5FQ09OTkFCT1JURUQsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxdWVzdCkpO1xuXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICB9O1xuXG4gICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgLy8gVGhpcyBpcyBvbmx5IGRvbmUgaWYgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnQuXG4gICAgLy8gU3BlY2lmaWNhbGx5IG5vdCBpZiB3ZSdyZSBpbiBhIHdlYiB3b3JrZXIsIG9yIHJlYWN0LW5hdGl2ZS5cbiAgICBpZiAodXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSkge1xuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXG4gICAgICB2YXIgeHNyZlZhbHVlID0gKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMgfHwgaXNVUkxTYW1lT3JpZ2luKGZ1bGxQYXRoKSkgJiYgY29uZmlnLnhzcmZDb29raWVOYW1lID9cbiAgICAgICAgY29va2llcy5yZWFkKGNvbmZpZy54c3JmQ29va2llTmFtZSkgOlxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh4c3JmVmFsdWUpIHtcbiAgICAgICAgcmVxdWVzdEhlYWRlcnNbY29uZmlnLnhzcmZIZWFkZXJOYW1lXSA9IHhzcmZWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycywgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlcXVlc3REYXRhID09PSAndW5kZWZpbmVkJyAmJiBrZXkudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRlbnQtdHlwZScpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgQ29udGVudC1UeXBlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzW2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBoZWFkZXIgdG8gdGhlIHJlcXVlc3RcbiAgICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aENyZWRlbnRpYWxzIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcud2l0aENyZWRlbnRpYWxzKSkge1xuICAgICAgcmVxdWVzdC53aXRoQ3JlZGVudGlhbHMgPSAhIWNvbmZpZy53aXRoQ3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHJlc3BvbnNlVHlwZSB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmIChyZXNwb25zZVR5cGUgJiYgcmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgcHJvZ3Jlc3MgaWYgbmVlZGVkXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25Eb3dubG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgLy8gTm90IGFsbCBicm93c2VycyBzdXBwb3J0IHVwbG9hZCBldmVudHNcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nICYmIHJlcXVlc3QudXBsb2FkKSB7XG4gICAgICByZXF1ZXN0LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuIHx8IGNvbmZpZy5zaWduYWwpIHtcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gICAgICBvbkNhbmNlbGVkID0gZnVuY3Rpb24oY2FuY2VsKSB7XG4gICAgICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZWplY3QoIWNhbmNlbCB8fCAoY2FuY2VsICYmIGNhbmNlbC50eXBlKSA/IG5ldyBDYW5jZWxlZEVycm9yKCkgOiBjYW5jZWwpO1xuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfTtcblxuICAgICAgY29uZmlnLmNhbmNlbFRva2VuICYmIGNvbmZpZy5jYW5jZWxUb2tlbi5zdWJzY3JpYmUob25DYW5jZWxlZCk7XG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xuICAgICAgICBjb25maWcuc2lnbmFsLmFib3J0ZWQgPyBvbkNhbmNlbGVkKCkgOiBjb25maWcuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZXF1ZXN0RGF0YSkge1xuICAgICAgcmVxdWVzdERhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIHZhciBwcm90b2NvbCA9IHBhcnNlUHJvdG9jb2woZnVsbFBhdGgpO1xuXG4gICAgaWYgKHByb3RvY29sICYmIFsgJ2h0dHAnLCAnaHR0cHMnLCAnZmlsZScgXS5pbmRleE9mKHByb3RvY29sKSA9PT0gLTEpIHtcbiAgICAgIHJlamVjdChuZXcgQXhpb3NFcnJvcignVW5zdXBwb3J0ZWQgcHJvdG9jb2wgJyArIHByb3RvY29sICsgJzonLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVRVUVTVCwgY29uZmlnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG52YXIgQXhpb3MgPSByZXF1aXJlKCcuL2NvcmUvQXhpb3MnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vY29yZS9tZXJnZUNvbmZpZycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICB2YXIgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcbiAgdmFyIGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQpO1xuXG4gIC8vIEZhY3RvcnkgZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXNcbiAgaW5zdGFuY2UuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKG1lcmdlQ29uZmlnKGRlZmF1bHRDb25maWcsIGluc3RhbmNlQ29uZmlnKSk7XG4gIH07XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG4vLyBDcmVhdGUgdGhlIGRlZmF1bHQgaW5zdGFuY2UgdG8gYmUgZXhwb3J0ZWRcbnZhciBheGlvcyA9IGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRzKTtcblxuLy8gRXhwb3NlIEF4aW9zIGNsYXNzIHRvIGFsbG93IGNsYXNzIGluaGVyaXRhbmNlXG5heGlvcy5BeGlvcyA9IEF4aW9zO1xuXG4vLyBFeHBvc2UgQ2FuY2VsICYgQ2FuY2VsVG9rZW5cbmF4aW9zLkNhbmNlbGVkRXJyb3IgPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWxlZEVycm9yJyk7XG5heGlvcy5DYW5jZWxUb2tlbiA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbFRva2VuJyk7XG5heGlvcy5pc0NhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL2lzQ2FuY2VsJyk7XG5heGlvcy5WRVJTSU9OID0gcmVxdWlyZSgnLi9lbnYvZGF0YScpLnZlcnNpb247XG5heGlvcy50b0Zvcm1EYXRhID0gcmVxdWlyZSgnLi9oZWxwZXJzL3RvRm9ybURhdGEnKTtcblxuLy8gRXhwb3NlIEF4aW9zRXJyb3IgY2xhc3NcbmF4aW9zLkF4aW9zRXJyb3IgPSByZXF1aXJlKCcuLi9saWIvY29yZS9BeGlvc0Vycm9yJyk7XG5cbi8vIGFsaWFzIGZvciBDYW5jZWxlZEVycm9yIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5heGlvcy5DYW5jZWwgPSBheGlvcy5DYW5jZWxlZEVycm9yO1xuXG4vLyBFeHBvc2UgYWxsL3NwcmVhZFxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG59O1xuYXhpb3Muc3ByZWFkID0gcmVxdWlyZSgnLi9oZWxwZXJzL3NwcmVhZCcpO1xuXG4vLyBFeHBvc2UgaXNBeGlvc0Vycm9yXG5heGlvcy5pc0F4aW9zRXJyb3IgPSByZXF1aXJlKCcuL2hlbHBlcnMvaXNBeGlvc0Vycm9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXhpb3M7XG5cbi8vIEFsbG93IHVzZSBvZiBkZWZhdWx0IGltcG9ydCBzeW50YXggaW4gVHlwZVNjcmlwdFxubW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9IGF4aW9zO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsZWRFcnJvciA9IHJlcXVpcmUoJy4vQ2FuY2VsZWRFcnJvcicpO1xuXG4vKipcbiAqIEEgYENhbmNlbFRva2VuYCBpcyBhbiBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byByZXF1ZXN0IGNhbmNlbGxhdGlvbiBvZiBhbiBvcGVyYXRpb24uXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBleGVjdXRvciBUaGUgZXhlY3V0b3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIENhbmNlbFRva2VuKGV4ZWN1dG9yKSB7XG4gIGlmICh0eXBlb2YgZXhlY3V0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uJyk7XG4gIH1cblxuICB2YXIgcmVzb2x2ZVByb21pc2U7XG5cbiAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUV4ZWN1dG9yKHJlc29sdmUpIHtcbiAgICByZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gIH0pO1xuXG4gIHZhciB0b2tlbiA9IHRoaXM7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgdGhpcy5wcm9taXNlLnRoZW4oZnVuY3Rpb24oY2FuY2VsKSB7XG4gICAgaWYgKCF0b2tlbi5fbGlzdGVuZXJzKSByZXR1cm47XG5cbiAgICB2YXIgaTtcbiAgICB2YXIgbCA9IHRva2VuLl9saXN0ZW5lcnMubGVuZ3RoO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgdG9rZW4uX2xpc3RlbmVyc1tpXShjYW5jZWwpO1xuICAgIH1cbiAgICB0b2tlbi5fbGlzdGVuZXJzID0gbnVsbDtcbiAgfSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgdGhpcy5wcm9taXNlLnRoZW4gPSBmdW5jdGlvbihvbmZ1bGZpbGxlZCkge1xuICAgIHZhciBfcmVzb2x2ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xuICAgICAgdG9rZW4uc3Vic2NyaWJlKHJlc29sdmUpO1xuICAgICAgX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgIH0pLnRoZW4ob25mdWxmaWxsZWQpO1xuXG4gICAgcHJvbWlzZS5jYW5jZWwgPSBmdW5jdGlvbiByZWplY3QoKSB7XG4gICAgICB0b2tlbi51bnN1YnNjcmliZShfcmVzb2x2ZSk7XG4gICAgfTtcblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9O1xuXG4gIGV4ZWN1dG9yKGZ1bmN0aW9uIGNhbmNlbChtZXNzYWdlKSB7XG4gICAgaWYgKHRva2VuLnJlYXNvbikge1xuICAgICAgLy8gQ2FuY2VsbGF0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdG9rZW4ucmVhc29uID0gbmV3IENhbmNlbGVkRXJyb3IobWVzc2FnZSk7XG4gICAgcmVzb2x2ZVByb21pc2UodG9rZW4ucmVhc29uKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGVkRXJyb3JgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogU3Vic2NyaWJlIHRvIHRoZSBjYW5jZWwgc2lnbmFsXG4gKi9cblxuQ2FuY2VsVG9rZW4ucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuICBpZiAodGhpcy5yZWFzb24pIHtcbiAgICBsaXN0ZW5lcih0aGlzLnJlYXNvbik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHRoaXMuX2xpc3RlbmVycykge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbbGlzdGVuZXJdO1xuICB9XG59O1xuXG4vKipcbiAqIFVuc3Vic2NyaWJlIGZyb20gdGhlIGNhbmNlbCBzaWduYWxcbiAqL1xuXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiB1bnN1YnNjcmliZShsaXN0ZW5lcikge1xuICBpZiAoIXRoaXMuX2xpc3RlbmVycykge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgaW5kZXggPSB0aGlzLl9saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgbmV3IGBDYW5jZWxUb2tlbmAgYW5kIGEgZnVuY3Rpb24gdGhhdCwgd2hlbiBjYWxsZWQsXG4gKiBjYW5jZWxzIHRoZSBgQ2FuY2VsVG9rZW5gLlxuICovXG5DYW5jZWxUb2tlbi5zb3VyY2UgPSBmdW5jdGlvbiBzb3VyY2UoKSB7XG4gIHZhciBjYW5jZWw7XG4gIHZhciB0b2tlbiA9IG5ldyBDYW5jZWxUb2tlbihmdW5jdGlvbiBleGVjdXRvcihjKSB7XG4gICAgY2FuY2VsID0gYztcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgdG9rZW46IHRva2VuLFxuICAgIGNhbmNlbDogY2FuY2VsXG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbFRva2VuO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvQXhpb3NFcnJvcicpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxlZEVycm9yYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbGVkRXJyb3IobWVzc2FnZSkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXEtbnVsbCxlcWVxZXFcbiAgQXhpb3NFcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UgPT0gbnVsbCA/ICdjYW5jZWxlZCcgOiBtZXNzYWdlLCBBeGlvc0Vycm9yLkVSUl9DQU5DRUxFRCk7XG4gIHRoaXMubmFtZSA9ICdDYW5jZWxlZEVycm9yJztcbn1cblxudXRpbHMuaW5oZXJpdHMoQ2FuY2VsZWRFcnJvciwgQXhpb3NFcnJvciwge1xuICBfX0NBTkNFTF9fOiB0cnVlXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxlZEVycm9yO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XG4gIHJldHVybiAhISh2YWx1ZSAmJiB2YWx1ZS5fX0NBTkNFTF9fKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBidWlsZFVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL21lcmdlQ29uZmlnJyk7XG52YXIgYnVpbGRGdWxsUGF0aCA9IHJlcXVpcmUoJy4vYnVpbGRGdWxsUGF0aCcpO1xudmFyIHZhbGlkYXRvciA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvdmFsaWRhdG9yJyk7XG5cbnZhciB2YWxpZGF0b3JzID0gdmFsaWRhdG9yLnZhbGlkYXRvcnM7XG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBBeGlvcyhpbnN0YW5jZUNvbmZpZykge1xuICB0aGlzLmRlZmF1bHRzID0gaW5zdGFuY2VDb25maWc7XG4gIHRoaXMuaW50ZXJjZXB0b3JzID0ge1xuICAgIHJlcXVlc3Q6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKSxcbiAgICByZXNwb25zZTogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpXG4gIH07XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHNwZWNpZmljIGZvciB0aGlzIHJlcXVlc3QgKG1lcmdlZCB3aXRoIHRoaXMuZGVmYXVsdHMpXG4gKi9cbkF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0ID0gZnVuY3Rpb24gcmVxdWVzdChjb25maWdPclVybCwgY29uZmlnKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAvLyBBbGxvdyBmb3IgYXhpb3MoJ2V4YW1wbGUvdXJsJ1ssIGNvbmZpZ10pIGEgbGEgZmV0Y2ggQVBJXG4gIGlmICh0eXBlb2YgY29uZmlnT3JVcmwgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICAgIGNvbmZpZy51cmwgPSBjb25maWdPclVybDtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcgPSBjb25maWdPclVybCB8fCB7fTtcbiAgfVxuXG4gIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG5cbiAgLy8gU2V0IGNvbmZpZy5tZXRob2RcbiAgaWYgKGNvbmZpZy5tZXRob2QpIHtcbiAgICBjb25maWcubWV0aG9kID0gY29uZmlnLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdHMubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IHRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmlnLm1ldGhvZCA9ICdnZXQnO1xuICB9XG5cbiAgdmFyIHRyYW5zaXRpb25hbCA9IGNvbmZpZy50cmFuc2l0aW9uYWw7XG5cbiAgaWYgKHRyYW5zaXRpb25hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnModHJhbnNpdGlvbmFsLCB7XG4gICAgICBzaWxlbnRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcbiAgICAgIGZvcmNlZEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxuICAgICAgY2xhcmlmeVRpbWVvdXRFcnJvcjogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKVxuICAgIH0sIGZhbHNlKTtcbiAgfVxuXG4gIC8vIGZpbHRlciBvdXQgc2tpcHBlZCBpbnRlcmNlcHRvcnNcbiAgdmFyIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluID0gW107XG4gIHZhciBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSB0cnVlO1xuICB0aGlzLmludGVyY2VwdG9ycy5yZXF1ZXN0LmZvckVhY2goZnVuY3Rpb24gdW5zaGlmdFJlcXVlc3RJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICBpZiAodHlwZW9mIGludGVyY2VwdG9yLnJ1bldoZW4gPT09ICdmdW5jdGlvbicgJiYgaW50ZXJjZXB0b3IucnVuV2hlbihjb25maWcpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyAmJiBpbnRlcmNlcHRvci5zeW5jaHJvbm91cztcblxuICAgIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHZhciByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbiBwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcbiAgICByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4ucHVzaChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgfSk7XG5cbiAgdmFyIHByb21pc2U7XG5cbiAgaWYgKCFzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMpIHtcbiAgICB2YXIgY2hhaW4gPSBbZGlzcGF0Y2hSZXF1ZXN0LCB1bmRlZmluZWRdO1xuXG4gICAgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoY2hhaW4sIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluKTtcbiAgICBjaGFpbiA9IGNoYWluLmNvbmNhdChyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4pO1xuXG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjb25maWcpO1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGgpIHtcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oY2hhaW4uc2hpZnQoKSwgY2hhaW4uc2hpZnQoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuXG4gIHZhciBuZXdDb25maWcgPSBjb25maWc7XG4gIHdoaWxlIChyZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5sZW5ndGgpIHtcbiAgICB2YXIgb25GdWxmaWxsZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpO1xuICAgIHZhciBvblJlamVjdGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcbiAgICB0cnkge1xuICAgICAgbmV3Q29uZmlnID0gb25GdWxmaWxsZWQobmV3Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25SZWplY3RlZChlcnJvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIHByb21pc2UgPSBkaXNwYXRjaFJlcXVlc3QobmV3Q29uZmlnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICB9XG5cbiAgd2hpbGUgKHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5sZW5ndGgpIHtcbiAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpLCByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKSk7XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG5cbkF4aW9zLnByb3RvdHlwZS5nZXRVcmkgPSBmdW5jdGlvbiBnZXRVcmkoY29uZmlnKSB7XG4gIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG4gIHZhciBmdWxsUGF0aCA9IGJ1aWxkRnVsbFBhdGgoY29uZmlnLmJhc2VVUkwsIGNvbmZpZy51cmwpO1xuICByZXR1cm4gYnVpbGRVUkwoZnVsbFBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKTtcbn07XG5cbi8vIFByb3ZpZGUgYWxpYXNlcyBmb3Igc3VwcG9ydGVkIHJlcXVlc3QgbWV0aG9kc1xudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdvcHRpb25zJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IChjb25maWcgfHwge30pLmRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cblxuICBmdW5jdGlvbiBnZW5lcmF0ZUhUVFBNZXRob2QoaXNGb3JtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGh0dHBNZXRob2QodXJsLCBkYXRhLCBjb25maWcpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgICBoZWFkZXJzOiBpc0Zvcm0gPyB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJ1xuICAgICAgICB9IDoge30sXG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KSk7XG4gICAgfTtcbiAgfVxuXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZ2VuZXJhdGVIVFRQTWV0aG9kKCk7XG5cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZCArICdGb3JtJ10gPSBnZW5lcmF0ZUhUVFBNZXRob2QodHJ1ZSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBBeGlvcztcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UsIGNvbmZpZywgZXJyb3IgY29kZSwgcmVxdWVzdCBhbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtjb25maWddIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xuZnVuY3Rpb24gQXhpb3NFcnJvcihtZXNzYWdlLCBjb2RlLCBjb25maWcsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIEVycm9yLmNhbGwodGhpcyk7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIHRoaXMubmFtZSA9ICdBeGlvc0Vycm9yJztcbiAgY29kZSAmJiAodGhpcy5jb2RlID0gY29kZSk7XG4gIGNvbmZpZyAmJiAodGhpcy5jb25maWcgPSBjb25maWcpO1xuICByZXF1ZXN0ICYmICh0aGlzLnJlcXVlc3QgPSByZXF1ZXN0KTtcbiAgcmVzcG9uc2UgJiYgKHRoaXMucmVzcG9uc2UgPSByZXNwb25zZSk7XG59XG5cbnV0aWxzLmluaGVyaXRzKEF4aW9zRXJyb3IsIEVycm9yLCB7XG4gIHRvSlNPTjogZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvLyBTdGFuZGFyZFxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgLy8gTWljcm9zb2Z0XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIG51bWJlcjogdGhpcy5udW1iZXIsXG4gICAgICAvLyBNb3ppbGxhXG4gICAgICBmaWxlTmFtZTogdGhpcy5maWxlTmFtZSxcbiAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcbiAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5jb2x1bW5OdW1iZXIsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIC8vIEF4aW9zXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgY29kZTogdGhpcy5jb2RlLFxuICAgICAgc3RhdHVzOiB0aGlzLnJlc3BvbnNlICYmIHRoaXMucmVzcG9uc2Uuc3RhdHVzID8gdGhpcy5yZXNwb25zZS5zdGF0dXMgOiBudWxsXG4gICAgfTtcbiAgfVxufSk7XG5cbnZhciBwcm90b3R5cGUgPSBBeGlvc0Vycm9yLnByb3RvdHlwZTtcbnZhciBkZXNjcmlwdG9ycyA9IHt9O1xuXG5bXG4gICdFUlJfQkFEX09QVElPTl9WQUxVRScsXG4gICdFUlJfQkFEX09QVElPTicsXG4gICdFQ09OTkFCT1JURUQnLFxuICAnRVRJTUVET1VUJyxcbiAgJ0VSUl9ORVRXT1JLJyxcbiAgJ0VSUl9GUl9UT09fTUFOWV9SRURJUkVDVFMnLFxuICAnRVJSX0RFUFJFQ0FURUQnLFxuICAnRVJSX0JBRF9SRVNQT05TRScsXG4gICdFUlJfQkFEX1JFUVVFU1QnLFxuICAnRVJSX0NBTkNFTEVEJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbl0uZm9yRWFjaChmdW5jdGlvbihjb2RlKSB7XG4gIGRlc2NyaXB0b3JzW2NvZGVdID0ge3ZhbHVlOiBjb2RlfTtcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhBeGlvc0Vycm9yLCBkZXNjcmlwdG9ycyk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCAnaXNBeGlvc0Vycm9yJywge3ZhbHVlOiB0cnVlfSk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5BeGlvc0Vycm9yLmZyb20gPSBmdW5jdGlvbihlcnJvciwgY29kZSwgY29uZmlnLCByZXF1ZXN0LCByZXNwb25zZSwgY3VzdG9tUHJvcHMpIHtcbiAgdmFyIGF4aW9zRXJyb3IgPSBPYmplY3QuY3JlYXRlKHByb3RvdHlwZSk7XG5cbiAgdXRpbHMudG9GbGF0T2JqZWN0KGVycm9yLCBheGlvc0Vycm9yLCBmdW5jdGlvbiBmaWx0ZXIob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAhPT0gRXJyb3IucHJvdG90eXBlO1xuICB9KTtcblxuICBBeGlvc0Vycm9yLmNhbGwoYXhpb3NFcnJvciwgZXJyb3IubWVzc2FnZSwgY29kZSwgY29uZmlnLCByZXF1ZXN0LCByZXNwb25zZSk7XG5cbiAgYXhpb3NFcnJvci5uYW1lID0gZXJyb3IubmFtZTtcblxuICBjdXN0b21Qcm9wcyAmJiBPYmplY3QuYXNzaWduKGF4aW9zRXJyb3IsIGN1c3RvbVByb3BzKTtcblxuICByZXR1cm4gYXhpb3NFcnJvcjtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQXhpb3NFcnJvcjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBJbnRlcmNlcHRvck1hbmFnZXIoKSB7XG4gIHRoaXMuaGFuZGxlcnMgPSBbXTtcbn1cblxuLyoqXG4gKiBBZGQgYSBuZXcgaW50ZXJjZXB0b3IgdG8gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVsZmlsbGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHRoZW5gIGZvciBhIGBQcm9taXNlYFxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0ZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgcmVqZWN0YCBmb3IgYSBgUHJvbWlzZWBcbiAqXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IEFuIElEIHVzZWQgdG8gcmVtb3ZlIGludGVyY2VwdG9yIGxhdGVyXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIG9wdGlvbnMpIHtcbiAgdGhpcy5oYW5kbGVycy5wdXNoKHtcbiAgICBmdWxmaWxsZWQ6IGZ1bGZpbGxlZCxcbiAgICByZWplY3RlZDogcmVqZWN0ZWQsXG4gICAgc3luY2hyb25vdXM6IG9wdGlvbnMgPyBvcHRpb25zLnN5bmNocm9ub3VzIDogZmFsc2UsXG4gICAgcnVuV2hlbjogb3B0aW9ucyA/IG9wdGlvbnMucnVuV2hlbiA6IG51bGxcbiAgfSk7XG4gIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpbnRlcmNlcHRvciBmcm9tIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5lamVjdCA9IGZ1bmN0aW9uIGVqZWN0KGlkKSB7XG4gIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xuICAgIHRoaXMuaGFuZGxlcnNbaWRdID0gbnVsbDtcbiAgfVxufTtcblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xuICpcbiAqIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNraXBwaW5nIG92ZXIgYW55XG4gKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpbnRlcmNlcHRvclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xuICAgIGlmIChoICE9PSBudWxsKSB7XG4gICAgICBmbihoKTtcbiAgICB9XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBJbnRlcmNlcHRvck1hbmFnZXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc0Fic29sdXRlVVJMID0gcmVxdWlyZSgnLi4vaGVscGVycy9pc0Fic29sdXRlVVJMJyk7XG52YXIgY29tYmluZVVSTHMgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2NvbWJpbmVVUkxzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBiYXNlVVJMIHdpdGggdGhlIHJlcXVlc3RlZFVSTCxcbiAqIG9ubHkgd2hlbiB0aGUgcmVxdWVzdGVkVVJMIGlzIG5vdCBhbHJlYWR5IGFuIGFic29sdXRlIFVSTC5cbiAqIElmIHRoZSByZXF1ZXN0VVJMIGlzIGFic29sdXRlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVlc3RlZFVSTCB1bnRvdWNoZWQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdGVkVVJMIEFic29sdXRlIG9yIHJlbGF0aXZlIFVSTCB0byBjb21iaW5lXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgZnVsbCBwYXRoXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRGdWxsUGF0aChiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpIHtcbiAgaWYgKGJhc2VVUkwgJiYgIWlzQWJzb2x1dGVVUkwocmVxdWVzdGVkVVJMKSkge1xuICAgIHJldHVybiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpO1xuICB9XG4gIHJldHVybiByZXF1ZXN0ZWRVUkw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgdHJhbnNmb3JtRGF0YSA9IHJlcXVpcmUoJy4vdHJhbnNmb3JtRGF0YScpO1xudmFyIGlzQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL2lzQ2FuY2VsJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuLi9kZWZhdWx0cycpO1xudmFyIENhbmNlbGVkRXJyb3IgPSByZXF1aXJlKCcuLi9jYW5jZWwvQ2FuY2VsZWRFcnJvcicpO1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxlZEVycm9yYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICovXG5mdW5jdGlvbiB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZykge1xuICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XG4gICAgY29uZmlnLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKTtcbiAgfVxuXG4gIGlmIChjb25maWcuc2lnbmFsICYmIGNvbmZpZy5zaWduYWwuYWJvcnRlZCkge1xuICAgIHRocm93IG5ldyBDYW5jZWxlZEVycm9yKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgY29uZmlndXJlZCBhZGFwdGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgLy8gRW5zdXJlIGhlYWRlcnMgZXhpc3RcbiAgY29uZmlnLmhlYWRlcnMgPSBjb25maWcuaGVhZGVycyB8fCB7fTtcblxuICAvLyBUcmFuc2Zvcm0gcmVxdWVzdCBkYXRhXG4gIGNvbmZpZy5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgIGNvbmZpZyxcbiAgICBjb25maWcuZGF0YSxcbiAgICBjb25maWcuaGVhZGVycyxcbiAgICBjb25maWcudHJhbnNmb3JtUmVxdWVzdFxuICApO1xuXG4gIC8vIEZsYXR0ZW4gaGVhZGVyc1xuICBjb25maWcuaGVhZGVycyA9IHV0aWxzLm1lcmdlKFxuICAgIGNvbmZpZy5oZWFkZXJzLmNvbW1vbiB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1tjb25maWcubWV0aG9kXSB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1xuICApO1xuXG4gIHV0aWxzLmZvckVhY2goXG4gICAgWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnY29tbW9uJ10sXG4gICAgZnVuY3Rpb24gY2xlYW5IZWFkZXJDb25maWcobWV0aG9kKSB7XG4gICAgICBkZWxldGUgY29uZmlnLmhlYWRlcnNbbWV0aG9kXTtcbiAgICB9XG4gICk7XG5cbiAgdmFyIGFkYXB0ZXIgPSBjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cy5hZGFwdGVyO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgY29uZmlnLFxuICAgICAgcmVzcG9uc2UuZGF0YSxcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XG4gICAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgICBpZiAocmVhc29uICYmIHJlYXNvbi5yZXNwb25zZSkge1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuLyoqXG4gKiBDb25maWctc3BlY2lmaWMgbWVyZ2UtZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyBhIG5ldyBjb25maWctb2JqZWN0XG4gKiBieSBtZXJnaW5nIHR3byBjb25maWd1cmF0aW9uIG9iamVjdHMgdG9nZXRoZXIuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzFcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBOZXcgb2JqZWN0IHJlc3VsdGluZyBmcm9tIG1lcmdpbmcgY29uZmlnMiB0byBjb25maWcxXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnMSwgY29uZmlnMikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgY29uZmlnMiA9IGNvbmZpZzIgfHwge307XG4gIHZhciBjb25maWcgPSB7fTtcblxuICBmdW5jdGlvbiBnZXRNZXJnZWRWYWx1ZSh0YXJnZXQsIHNvdXJjZSkge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHRhcmdldCkgJiYgdXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2UodGFyZ2V0LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMVtwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiB2YWx1ZUZyb21Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMVtwcm9wXSkpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICBmdW5jdGlvbiBtZXJnZURpcmVjdEtleXMocHJvcCkge1xuICAgIGlmIChwcm9wIGluIGNvbmZpZzIpIHtcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKHByb3AgaW4gY29uZmlnMSkge1xuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIG1lcmdlTWFwID0ge1xuICAgICd1cmwnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdtZXRob2QnOiB2YWx1ZUZyb21Db25maWcyLFxuICAgICdkYXRhJzogdmFsdWVGcm9tQ29uZmlnMixcbiAgICAnYmFzZVVSTCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zZm9ybVJlcXVlc3QnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0cmFuc2Zvcm1SZXNwb25zZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3BhcmFtc1NlcmlhbGl6ZXInOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd0aW1lb3V0JzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndGltZW91dE1lc3NhZ2UnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd3aXRoQ3JlZGVudGlhbHMnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdhZGFwdGVyJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAncmVzcG9uc2VUeXBlJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAneHNyZkNvb2tpZU5hbWUnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICd4c3JmSGVhZGVyTmFtZSc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ29uVXBsb2FkUHJvZ3Jlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdvbkRvd25sb2FkUHJvZ3Jlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdkZWNvbXByZXNzJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAnbWF4Q29udGVudExlbmd0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ21heEJvZHlMZW5ndGgnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdiZWZvcmVSZWRpcmVjdCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3RyYW5zcG9ydCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2h0dHBBZ2VudCc6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ2h0dHBzQWdlbnQnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdjYW5jZWxUb2tlbic6IGRlZmF1bHRUb0NvbmZpZzIsXG4gICAgJ3NvY2tldFBhdGgnOiBkZWZhdWx0VG9Db25maWcyLFxuICAgICdyZXNwb25zZUVuY29kaW5nJzogZGVmYXVsdFRvQ29uZmlnMixcbiAgICAndmFsaWRhdGVTdGF0dXMnOiBtZXJnZURpcmVjdEtleXNcbiAgfTtcblxuICB1dGlscy5mb3JFYWNoKE9iamVjdC5rZXlzKGNvbmZpZzEpLmNvbmNhdChPYmplY3Qua2V5cyhjb25maWcyKSksIGZ1bmN0aW9uIGNvbXB1dGVDb25maWdWYWx1ZShwcm9wKSB7XG4gICAgdmFyIG1lcmdlID0gbWVyZ2VNYXBbcHJvcF0gfHwgbWVyZ2VEZWVwUHJvcGVydGllcztcbiAgICB2YXIgY29uZmlnVmFsdWUgPSBtZXJnZShwcm9wKTtcbiAgICAodXRpbHMuaXNVbmRlZmluZWQoY29uZmlnVmFsdWUpICYmIG1lcmdlICE9PSBtZXJnZURpcmVjdEtleXMpIHx8IChjb25maWdbcHJvcF0gPSBjb25maWdWYWx1ZSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4vQXhpb3NFcnJvcicpO1xuXG4vKipcbiAqIFJlc29sdmUgb3IgcmVqZWN0IGEgUHJvbWlzZSBiYXNlZCBvbiByZXNwb25zZSBzdGF0dXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZSBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3QgQSBmdW5jdGlvbiB0aGF0IHJlamVjdHMgdGhlIHByb21pc2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKSB7XG4gIHZhciB2YWxpZGF0ZVN0YXR1cyA9IHJlc3BvbnNlLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztcbiAgaWYgKCFyZXNwb25zZS5zdGF0dXMgfHwgIXZhbGlkYXRlU3RhdHVzIHx8IHZhbGlkYXRlU3RhdHVzKHJlc3BvbnNlLnN0YXR1cykpIHtcbiAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgfSBlbHNlIHtcbiAgICByZWplY3QobmV3IEF4aW9zRXJyb3IoXG4gICAgICAnUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAnICsgcmVzcG9uc2Uuc3RhdHVzLFxuICAgICAgW0F4aW9zRXJyb3IuRVJSX0JBRF9SRVFVRVNULCBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0VdW01hdGguZmxvb3IocmVzcG9uc2Uuc3RhdHVzIC8gMTAwKSAtIDRdLFxuICAgICAgcmVzcG9uc2UuY29uZmlnLFxuICAgICAgcmVzcG9uc2UucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlXG4gICAgKSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBkYXRhIGZvciBhIHJlcXVlc3Qgb3IgYSByZXNwb25zZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ30gZGF0YSBUaGUgZGF0YSB0byBiZSB0cmFuc2Zvcm1lZFxuICogQHBhcmFtIHtBcnJheX0gaGVhZGVycyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3Qgb3IgcmVzcG9uc2VcbiAqIEBwYXJhbSB7QXJyYXl8RnVuY3Rpb259IGZucyBBIHNpbmdsZSBmdW5jdGlvbiBvciBBcnJheSBvZiBmdW5jdGlvbnNcbiAqIEByZXR1cm5zIHsqfSBUaGUgcmVzdWx0aW5nIHRyYW5zZm9ybWVkIGRhdGFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGRhdGEsIGhlYWRlcnMsIGZucykge1xuICB2YXIgY29udGV4dCA9IHRoaXMgfHwgZGVmYXVsdHM7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICB1dGlscy5mb3JFYWNoKGZucywgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgZGF0YSA9IGZuLmNhbGwoY29udGV4dCwgZGF0YSwgaGVhZGVycyk7XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBub3JtYWxpemVIZWFkZXJOYW1lID0gcmVxdWlyZSgnLi4vaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lJyk7XG52YXIgQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvQXhpb3NFcnJvcicpO1xudmFyIHRyYW5zaXRpb25hbERlZmF1bHRzID0gcmVxdWlyZSgnLi90cmFuc2l0aW9uYWwnKTtcbnZhciB0b0Zvcm1EYXRhID0gcmVxdWlyZSgnLi4vaGVscGVycy90b0Zvcm1EYXRhJyk7XG5cbnZhciBERUZBVUxUX0NPTlRFTlRfVFlQRSA9IHtcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG59O1xuXG5mdW5jdGlvbiBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgdmFsdWUpIHtcbiAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChoZWFkZXJzKSAmJiB1dGlscy5pc1VuZGVmaW5lZChoZWFkZXJzWydDb250ZW50LVR5cGUnXSkpIHtcbiAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IHZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRBZGFwdGVyKCkge1xuICB2YXIgYWRhcHRlcjtcbiAgaWYgKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBGb3IgYnJvd3NlcnMgdXNlIFhIUiBhZGFwdGVyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4uL2FkYXB0ZXJzL3hocicpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJykge1xuICAgIC8vIEZvciBub2RlIHVzZSBIVFRQIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi4vYWRhcHRlcnMvaHR0cCcpO1xuICB9XG4gIHJldHVybiBhZGFwdGVyO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlTYWZlbHkocmF3VmFsdWUsIHBhcnNlciwgZW5jb2Rlcikge1xuICBpZiAodXRpbHMuaXNTdHJpbmcocmF3VmFsdWUpKSB7XG4gICAgdHJ5IHtcbiAgICAgIChwYXJzZXIgfHwgSlNPTi5wYXJzZSkocmF3VmFsdWUpO1xuICAgICAgcmV0dXJuIHV0aWxzLnRyaW0ocmF3VmFsdWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlLm5hbWUgIT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGVuY29kZXIgfHwgSlNPTi5zdHJpbmdpZnkpKHJhd1ZhbHVlKTtcbn1cblxudmFyIGRlZmF1bHRzID0ge1xuXG4gIHRyYW5zaXRpb25hbDogdHJhbnNpdGlvbmFsRGVmYXVsdHMsXG5cbiAgYWRhcHRlcjogZ2V0RGVmYXVsdEFkYXB0ZXIoKSxcblxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQWNjZXB0Jyk7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQ29udGVudC1UeXBlJyk7XG5cbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzU3RyZWFtKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKVxuICAgICkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc0FycmF5QnVmZmVyVmlldyhkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMoZGF0YSkpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnKTtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgdmFyIGlzT2JqZWN0UGF5bG9hZCA9IHV0aWxzLmlzT2JqZWN0KGRhdGEpO1xuICAgIHZhciBjb250ZW50VHlwZSA9IGhlYWRlcnMgJiYgaGVhZGVyc1snQ29udGVudC1UeXBlJ107XG5cbiAgICB2YXIgaXNGaWxlTGlzdDtcblxuICAgIGlmICgoaXNGaWxlTGlzdCA9IHV0aWxzLmlzRmlsZUxpc3QoZGF0YSkpIHx8IChpc09iamVjdFBheWxvYWQgJiYgY29udGVudFR5cGUgPT09ICdtdWx0aXBhcnQvZm9ybS1kYXRhJykpIHtcbiAgICAgIHZhciBfRm9ybURhdGEgPSB0aGlzLmVudiAmJiB0aGlzLmVudi5Gb3JtRGF0YTtcbiAgICAgIHJldHVybiB0b0Zvcm1EYXRhKGlzRmlsZUxpc3QgPyB7J2ZpbGVzW10nOiBkYXRhfSA6IGRhdGEsIF9Gb3JtRGF0YSAmJiBuZXcgX0Zvcm1EYXRhKCkpO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3RQYXlsb2FkIHx8IGNvbnRlbnRUeXBlID09PSAnYXBwbGljYXRpb24vanNvbicpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgcmV0dXJuIHN0cmluZ2lmeVNhZmVseShkYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfV0sXG5cbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XG4gICAgdmFyIHRyYW5zaXRpb25hbCA9IHRoaXMudHJhbnNpdGlvbmFsIHx8IGRlZmF1bHRzLnRyYW5zaXRpb25hbDtcbiAgICB2YXIgc2lsZW50SlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLnNpbGVudEpTT05QYXJzaW5nO1xuICAgIHZhciBmb3JjZWRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuZm9yY2VkSlNPTlBhcnNpbmc7XG4gICAgdmFyIHN0cmljdEpTT05QYXJzaW5nID0gIXNpbGVudEpTT05QYXJzaW5nICYmIHRoaXMucmVzcG9uc2VUeXBlID09PSAnanNvbic7XG5cbiAgICBpZiAoc3RyaWN0SlNPTlBhcnNpbmcgfHwgKGZvcmNlZEpTT05QYXJzaW5nICYmIHV0aWxzLmlzU3RyaW5nKGRhdGEpICYmIGRhdGEubGVuZ3RoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChzdHJpY3RKU09OUGFyc2luZykge1xuICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdTeW50YXhFcnJvcicpIHtcbiAgICAgICAgICAgIHRocm93IEF4aW9zRXJyb3IuZnJvbShlLCBBeGlvc0Vycm9yLkVSUl9CQURfUkVTUE9OU0UsIHRoaXMsIG51bGwsIHRoaXMucmVzcG9uc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcblxuICBlbnY6IHtcbiAgICBGb3JtRGF0YTogcmVxdWlyZSgnLi9lbnYvRm9ybURhdGEnKVxuICB9LFxuXG4gIHZhbGlkYXRlU3RhdHVzOiBmdW5jdGlvbiB2YWxpZGF0ZVN0YXR1cyhzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG4gIH0sXG5cbiAgaGVhZGVyczoge1xuICAgIGNvbW1vbjoge1xuICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyonXG4gICAgfVxuICB9XG59O1xuXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHt9O1xufSk7XG5cbnV0aWxzLmZvckVhY2goWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kV2l0aERhdGEobWV0aG9kKSB7XG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHV0aWxzLm1lcmdlKERFRkFVTFRfQ09OVEVOVF9UWVBFKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2lsZW50SlNPTlBhcnNpbmc6IHRydWUsXG4gIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxuICBjbGFyaWZ5VGltZW91dEVycm9yOiBmYWxzZVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBcInZlcnNpb25cIjogXCIwLjI3LjJcIlxufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmluZChmbiwgdGhpc0FyZykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHZhbCkuXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxuICAgIHJlcGxhY2UoLyUyQy9naSwgJywnKS5cbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXG4gICAgcmVwbGFjZSgvJTVEL2dpLCAnXScpO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIGJhc2Ugb2YgdGhlIHVybCAoZS5nLiwgaHR0cDovL3d3dy5nb29nbGUuY29tKVxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIGlmICghcGFyYW1zKSB7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXNTZXJpYWxpemVyKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFydHMgPSBbXTtcblxuICAgIHV0aWxzLmZvckVhY2gocGFyYW1zLCBmdW5jdGlvbiBzZXJpYWxpemUodmFsLCBrZXkpIHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGtleSA9IGtleSArICdbXSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBbdmFsXTtcbiAgICAgIH1cblxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xuICAgICAgICBpZiAodXRpbHMuaXNEYXRlKHYpKSB7XG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xuICAgICAgICAgIHYgPSBKU09OLnN0cmluZ2lmeSh2KTtcbiAgICAgICAgfVxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcnRzLmpvaW4oJyYnKTtcbiAgfVxuXG4gIGlmIChzZXJpYWxpemVkUGFyYW1zKSB7XG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xuICAgICAgdXJsID0gdXJsLnNsaWNlKDAsIGhhc2htYXJrSW5kZXgpO1xuICAgIH1cblxuICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc2VyaWFsaXplZFBhcmFtcztcbiAgfVxuXG4gIHJldHVybiB1cmw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgc3BlY2lmaWVkIFVSTHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVVSTCBUaGUgcmVsYXRpdmUgVVJMXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVsYXRpdmVVUkwpIHtcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcbiAgICA6IGJhc2VVUkw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgc3VwcG9ydCBkb2N1bWVudC5jb29raWVcbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkge1xuICAgICAgICAgIHZhciBjb29raWUgPSBbXTtcbiAgICAgICAgICBjb29raWUucHVzaChuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNOdW1iZXIoZXhwaXJlcykpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcocGF0aCkpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdwYXRoPScgKyBwYXRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcoZG9tYWluKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2RvbWFpbj0nICsgZG9tYWluKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2VjdXJlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnc2VjdXJlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XG4gICAgICAgICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcbiAgICAgICAgICByZXR1cm4gKG1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzNdKSA6IG51bGwpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKG5hbWUpIHtcbiAgICAgICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudiAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKCkge30sXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQoKSB7IHJldHVybiBudWxsOyB9LFxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgICB9O1xuICAgIH0pKClcbik7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgVVJMIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0Fic29sdXRlVVJMKHVybCkge1xuICAvLyBBIFVSTCBpcyBjb25zaWRlcmVkIGFic29sdXRlIGlmIGl0IGJlZ2lucyB3aXRoIFwiPHNjaGVtZT46Ly9cIiBvciBcIi8vXCIgKHByb3RvY29sLXJlbGF0aXZlIFVSTCkuXG4gIC8vIFJGQyAzOTg2IGRlZmluZXMgc2NoZW1lIG5hbWUgYXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBmb2xsb3dlZFxuICAvLyBieSBhbnkgY29tYmluYXRpb24gb2YgbGV0dGVycywgZGlnaXRzLCBwbHVzLCBwZXJpb2QsIG9yIGh5cGhlbi5cbiAgcmV0dXJuIC9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvc1xuICpcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0F4aW9zRXJyb3IocGF5bG9hZCkge1xuICByZXR1cm4gdXRpbHMuaXNPYmplY3QocGF5bG9hZCkgJiYgKHBheWxvYWQuaXNBeGlvc0Vycm9yID09PSB0cnVlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBoYXZlIGZ1bGwgc3VwcG9ydCBvZiB0aGUgQVBJcyBuZWVkZWQgdG8gdGVzdFxuICAvLyB3aGV0aGVyIHRoZSByZXF1ZXN0IFVSTCBpcyBvZiB0aGUgc2FtZSBvcmlnaW4gYXMgY3VycmVudCBsb2NhdGlvbi5cbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xuICAgICAgdmFyIG1zaWUgPSAvKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgICAgdmFyIHVybFBhcnNpbmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgdmFyIG9yaWdpblVSTDtcblxuICAgICAgLyoqXG4gICAgKiBQYXJzZSBhIFVSTCB0byBkaXNjb3ZlciBpdCdzIGNvbXBvbmVudHNcbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIFRoZSBVUkwgdG8gYmUgcGFyc2VkXG4gICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgICovXG4gICAgICBmdW5jdGlvbiByZXNvbHZlVVJMKHVybCkge1xuICAgICAgICB2YXIgaHJlZiA9IHVybDtcblxuICAgICAgICBpZiAobXNpZSkge1xuICAgICAgICAvLyBJRSBuZWVkcyBhdHRyaWJ1dGUgc2V0IHR3aWNlIHRvIG5vcm1hbGl6ZSBwcm9wZXJ0aWVzXG4gICAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG4gICAgICAgICAgaHJlZiA9IHVybFBhcnNpbmdOb2RlLmhyZWY7XG4gICAgICAgIH1cblxuICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcblxuICAgICAgICAvLyB1cmxQYXJzaW5nTm9kZSBwcm92aWRlcyB0aGUgVXJsVXRpbHMgaW50ZXJmYWNlIC0gaHR0cDovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybHV0aWxzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaHJlZjogdXJsUGFyc2luZ05vZGUuaHJlZixcbiAgICAgICAgICBwcm90b2NvbDogdXJsUGFyc2luZ05vZGUucHJvdG9jb2wgPyB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbC5yZXBsYWNlKC86JC8sICcnKSA6ICcnLFxuICAgICAgICAgIGhvc3Q6IHVybFBhcnNpbmdOb2RlLmhvc3QsXG4gICAgICAgICAgc2VhcmNoOiB1cmxQYXJzaW5nTm9kZS5zZWFyY2ggPyB1cmxQYXJzaW5nTm9kZS5zZWFyY2gucmVwbGFjZSgvXlxcPy8sICcnKSA6ICcnLFxuICAgICAgICAgIGhhc2g6IHVybFBhcnNpbmdOb2RlLmhhc2ggPyB1cmxQYXJzaW5nTm9kZS5oYXNoLnJlcGxhY2UoL14jLywgJycpIDogJycsXG4gICAgICAgICAgaG9zdG5hbWU6IHVybFBhcnNpbmdOb2RlLmhvc3RuYW1lLFxuICAgICAgICAgIHBvcnQ6IHVybFBhcnNpbmdOb2RlLnBvcnQsXG4gICAgICAgICAgcGF0aG5hbWU6ICh1cmxQYXJzaW5nTm9kZS5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJykgP1xuICAgICAgICAgICAgdXJsUGFyc2luZ05vZGUucGF0aG5hbWUgOlxuICAgICAgICAgICAgJy8nICsgdXJsUGFyc2luZ05vZGUucGF0aG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgb3JpZ2luVVJMID0gcmVzb2x2ZVVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG5cbiAgICAgIC8qKlxuICAgICogRGV0ZXJtaW5lIGlmIGEgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIGN1cnJlbnQgbG9jYXRpb25cbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gcmVxdWVzdFVSTCBUaGUgVVJMIHRvIHRlc3RcbiAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luLCBvdGhlcndpc2UgZmFsc2VcbiAgICAqL1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbihyZXF1ZXN0VVJMKSB7XG4gICAgICAgIHZhciBwYXJzZWQgPSAodXRpbHMuaXNTdHJpbmcocmVxdWVzdFVSTCkpID8gcmVzb2x2ZVVSTChyZXF1ZXN0VVJMKSA6IHJlcXVlc3RVUkw7XG4gICAgICAgIHJldHVybiAocGFyc2VkLnByb3RvY29sID09PSBvcmlnaW5VUkwucHJvdG9jb2wgJiZcbiAgICAgICAgICAgIHBhcnNlZC5ob3N0ID09PSBvcmlnaW5VUkwuaG9zdCk7XG4gICAgICB9O1xuICAgIH0pKCkgOlxuXG4gIC8vIE5vbiBzdGFuZGFyZCBicm93c2VyIGVudnMgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4oKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfTtcbiAgICB9KSgpXG4pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgbm9ybWFsaXplZE5hbWUpIHtcbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLCBmdW5jdGlvbiBwcm9jZXNzSGVhZGVyKHZhbHVlLCBuYW1lKSB7XG4gICAgaWYgKG5hbWUgIT09IG5vcm1hbGl6ZWROYW1lICYmIG5hbWUudG9VcHBlckNhc2UoKSA9PT0gbm9ybWFsaXplZE5hbWUudG9VcHBlckNhc2UoKSkge1xuICAgICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcbiAgICAgIGRlbGV0ZSBoZWFkZXJzW25hbWVdO1xuICAgIH1cbiAgfSk7XG59O1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHN0cmljdFxubW9kdWxlLmV4cG9ydHMgPSBudWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbi8vIEhlYWRlcnMgd2hvc2UgZHVwbGljYXRlcyBhcmUgaWdub3JlZCBieSBub2RlXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXG52YXIgaWdub3JlRHVwbGljYXRlT2YgPSBbXG4gICdhZ2UnLCAnYXV0aG9yaXphdGlvbicsICdjb250ZW50LWxlbmd0aCcsICdjb250ZW50LXR5cGUnLCAnZXRhZycsXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxuICAncmVmZXJlcicsICdyZXRyeS1hZnRlcicsICd1c2VyLWFnZW50J1xuXTtcblxuLyoqXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XG4gKlxuICogYGBgXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXG4gKiBDb25uZWN0aW9uOiBrZWVwLWFsaXZlXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUhlYWRlcnMoaGVhZGVycykge1xuICB2YXIgcGFyc2VkID0ge307XG4gIHZhciBrZXk7XG4gIHZhciB2YWw7XG4gIHZhciBpO1xuXG4gIGlmICghaGVhZGVycykgeyByZXR1cm4gcGFyc2VkOyB9XG5cbiAgdXRpbHMuZm9yRWFjaChoZWFkZXJzLnNwbGl0KCdcXG4nKSwgZnVuY3Rpb24gcGFyc2VyKGxpbmUpIHtcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAga2V5ID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcbiAgICB2YWwgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKGkgKyAxKSk7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBpZiAocGFyc2VkW2tleV0gJiYgaWdub3JlRHVwbGljYXRlT2YuaW5kZXhPZihrZXkpID49IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleSA9PT0gJ3NldC1jb29raWUnKSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZFtrZXldID0gcGFyc2VkW2tleV0gPyBwYXJzZWRba2V5XSArICcsICcgKyB2YWwgOiB2YWw7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZVByb3RvY29sKHVybCkge1xuICB2YXIgbWF0Y2ggPSAvXihbLStcXHddezEsMjV9KSg6P1xcL1xcL3w6KS8uZXhlYyh1cmwpO1xuICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2hbMV0gfHwgJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFN5bnRhY3RpYyBzdWdhciBmb3IgaW52b2tpbmcgYSBmdW5jdGlvbiBhbmQgZXhwYW5kaW5nIGFuIGFycmF5IGZvciBhcmd1bWVudHMuXG4gKlxuICogQ29tbW9uIHVzZSBjYXNlIHdvdWxkIGJlIHRvIHVzZSBgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5YC5cbiAqXG4gKiAgYGBganNcbiAqICBmdW5jdGlvbiBmKHgsIHksIHopIHt9XG4gKiAgdmFyIGFyZ3MgPSBbMSwgMiwgM107XG4gKiAgZi5hcHBseShudWxsLCBhcmdzKTtcbiAqICBgYGBcbiAqXG4gKiBXaXRoIGBzcHJlYWRgIHRoaXMgZXhhbXBsZSBjYW4gYmUgcmUtd3JpdHRlbi5cbiAqXG4gKiAgYGBganNcbiAqICBzcHJlYWQoZnVuY3Rpb24oeCwgeSwgeikge30pKFsxLCAyLCAzXSk7XG4gKiAgYGBgXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoYXJyKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbnZlcnQgYSBkYXRhIG9iamVjdCB0byBGb3JtRGF0YVxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHBhcmFtIHs/T2JqZWN0fSBbZm9ybURhdGFdXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICoqL1xuXG5mdW5jdGlvbiB0b0Zvcm1EYXRhKG9iaiwgZm9ybURhdGEpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGZvcm1EYXRhID0gZm9ybURhdGEgfHwgbmV3IEZvcm1EYXRhKCk7XG5cbiAgdmFyIHN0YWNrID0gW107XG5cbiAgZnVuY3Rpb24gY29udmVydFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gJyc7XG5cbiAgICBpZiAodXRpbHMuaXNEYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXIodmFsdWUpIHx8IHV0aWxzLmlzVHlwZWRBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgQmxvYiA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBCbG9iKFt2YWx1ZV0pIDogQnVmZmVyLmZyb20odmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkKGRhdGEsIHBhcmVudEtleSkge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KGRhdGEpIHx8IHV0aWxzLmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIGlmIChzdGFjay5pbmRleE9mKGRhdGEpICE9PSAtMSkge1xuICAgICAgICB0aHJvdyBFcnJvcignQ2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkIGluICcgKyBwYXJlbnRLZXkpO1xuICAgICAgfVxuXG4gICAgICBzdGFjay5wdXNoKGRhdGEpO1xuXG4gICAgICB1dGlscy5mb3JFYWNoKGRhdGEsIGZ1bmN0aW9uIGVhY2godmFsdWUsIGtleSkge1xuICAgICAgICBpZiAodXRpbHMuaXNVbmRlZmluZWQodmFsdWUpKSByZXR1cm47XG4gICAgICAgIHZhciBmdWxsS2V5ID0gcGFyZW50S2V5ID8gcGFyZW50S2V5ICsgJy4nICsga2V5IDoga2V5O1xuICAgICAgICB2YXIgYXJyO1xuXG4gICAgICAgIGlmICh2YWx1ZSAmJiAhcGFyZW50S2V5ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBpZiAodXRpbHMuZW5kc1dpdGgoa2V5LCAne30nKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHV0aWxzLmVuZHNXaXRoKGtleSwgJ1tdJykgJiYgKGFyciA9IHV0aWxzLnRvQXJyYXkodmFsdWUpKSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgICAgICAgICAgIGFyci5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICF1dGlscy5pc1VuZGVmaW5lZChlbCkgJiYgZm9ybURhdGEuYXBwZW5kKGZ1bGxLZXksIGNvbnZlcnRWYWx1ZShlbCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYnVpbGQodmFsdWUsIGZ1bGxLZXkpO1xuICAgICAgfSk7XG5cbiAgICAgIHN0YWNrLnBvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQocGFyZW50S2V5LCBjb252ZXJ0VmFsdWUoZGF0YSkpO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkKG9iaik7XG5cbiAgcmV0dXJuIGZvcm1EYXRhO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvRm9ybURhdGE7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBWRVJTSU9OID0gcmVxdWlyZSgnLi4vZW52L2RhdGEnKS52ZXJzaW9uO1xudmFyIEF4aW9zRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL0F4aW9zRXJyb3InKTtcblxudmFyIHZhbGlkYXRvcnMgPSB7fTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblsnb2JqZWN0JywgJ2Jvb2xlYW4nLCAnbnVtYmVyJywgJ2Z1bmN0aW9uJywgJ3N0cmluZycsICdzeW1ib2wnXS5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUsIGkpIHtcbiAgdmFsaWRhdG9yc1t0eXBlXSA9IGZ1bmN0aW9uIHZhbGlkYXRvcih0aGluZykge1xuICAgIHJldHVybiB0eXBlb2YgdGhpbmcgPT09IHR5cGUgfHwgJ2EnICsgKGkgPCAxID8gJ24gJyA6ICcgJykgKyB0eXBlO1xuICB9O1xufSk7XG5cbnZhciBkZXByZWNhdGVkV2FybmluZ3MgPSB7fTtcblxuLyoqXG4gKiBUcmFuc2l0aW9uYWwgb3B0aW9uIHZhbGlkYXRvclxuICogQHBhcmFtIHtmdW5jdGlvbnxib29sZWFuP30gdmFsaWRhdG9yIC0gc2V0IHRvIGZhbHNlIGlmIHRoZSB0cmFuc2l0aW9uYWwgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWRcbiAqIEBwYXJhbSB7c3RyaW5nP30gdmVyc2lvbiAtIGRlcHJlY2F0ZWQgdmVyc2lvbiAvIHJlbW92ZWQgc2luY2UgdmVyc2lvblxuICogQHBhcmFtIHtzdHJpbmc/fSBtZXNzYWdlIC0gc29tZSBtZXNzYWdlIHdpdGggYWRkaXRpb25hbCBpbmZvXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gKi9cbnZhbGlkYXRvcnMudHJhbnNpdGlvbmFsID0gZnVuY3Rpb24gdHJhbnNpdGlvbmFsKHZhbGlkYXRvciwgdmVyc2lvbiwgbWVzc2FnZSkge1xuICBmdW5jdGlvbiBmb3JtYXRNZXNzYWdlKG9wdCwgZGVzYykge1xuICAgIHJldHVybiAnW0F4aW9zIHYnICsgVkVSU0lPTiArICddIFRyYW5zaXRpb25hbCBvcHRpb24gXFwnJyArIG9wdCArICdcXCcnICsgZGVzYyArIChtZXNzYWdlID8gJy4gJyArIG1lc3NhZ2UgOiAnJyk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG9wdCwgb3B0cykge1xuICAgIGlmICh2YWxpZGF0b3IgPT09IGZhbHNlKSB7XG4gICAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShvcHQsICcgaGFzIGJlZW4gcmVtb3ZlZCcgKyAodmVyc2lvbiA/ICcgaW4gJyArIHZlcnNpb24gOiAnJykpLFxuICAgICAgICBBeGlvc0Vycm9yLkVSUl9ERVBSRUNBVEVEXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh2ZXJzaW9uICYmICFkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSkge1xuICAgICAgZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0gPSB0cnVlO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgZm9ybWF0TWVzc2FnZShcbiAgICAgICAgICBvcHQsXG4gICAgICAgICAgJyBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYnICsgdmVyc2lvbiArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRvciA/IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRzKSA6IHRydWU7XG4gIH07XG59O1xuXG4vKipcbiAqIEFzc2VydCBvYmplY3QncyBwcm9wZXJ0aWVzIHR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hXG4gKiBAcGFyYW0ge2Jvb2xlYW4/fSBhbGxvd1Vua25vd25cbiAqL1xuXG5mdW5jdGlvbiBhc3NlcnRPcHRpb25zKG9wdGlvbnMsIHNjaGVtYSwgYWxsb3dVbmtub3duKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgQXhpb3NFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT05fVkFMVUUpO1xuICB9XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgdmFyIG9wdCA9IGtleXNbaV07XG4gICAgdmFyIHZhbGlkYXRvciA9IHNjaGVtYVtvcHRdO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9wdGlvbnNbb3B0XTtcbiAgICAgIHZhciByZXN1bHQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRpb25zKTtcbiAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEF4aW9zRXJyb3IoJ29wdGlvbiAnICsgb3B0ICsgJyBtdXN0IGJlICcgKyByZXN1bHQsIEF4aW9zRXJyb3IuRVJSX0JBRF9PUFRJT05fVkFMVUUpO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChhbGxvd1Vua25vd24gIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBBeGlvc0Vycm9yKCdVbmtub3duIG9wdGlvbiAnICsgb3B0LCBBeGlvc0Vycm9yLkVSUl9CQURfT1BUSU9OKTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFzc2VydE9wdGlvbnM6IGFzc2VydE9wdGlvbnMsXG4gIHZhbGlkYXRvcnM6IHZhbGlkYXRvcnNcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcblxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcblxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbnZhciBraW5kT2YgPSAoZnVuY3Rpb24oY2FjaGUpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaW5nKSB7XG4gICAgdmFyIHN0ciA9IHRvU3RyaW5nLmNhbGwodGhpbmcpO1xuICAgIHJldHVybiBjYWNoZVtzdHJdIHx8IChjYWNoZVtzdHJdID0gc3RyLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpKTtcbiAgfTtcbn0pKE9iamVjdC5jcmVhdGUobnVsbCkpO1xuXG5mdW5jdGlvbiBraW5kT2ZUZXN0KHR5cGUpIHtcbiAgdHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIGlzS2luZE9mKHRoaW5nKSB7XG4gICAgcmV0dXJuIGtpbmRPZih0aGluZykgPT09IHR5cGU7XG4gIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xudmFyIGlzQXJyYXlCdWZmZXIgPSBraW5kT2ZUZXN0KCdBcnJheUJ1ZmZlcicpO1xuXG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJykgJiYgKEFycmF5QnVmZmVyLmlzVmlldykpIHtcbiAgICByZXN1bHQgPSBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSAodmFsKSAmJiAodmFsLmJ1ZmZlcikgJiYgKGlzQXJyYXlCdWZmZXIodmFsLmJ1ZmZlcikpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcic7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWwpIHtcbiAgaWYgKGtpbmRPZih2YWwpICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsKTtcbiAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGU7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBEYXRlXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG52YXIgaXNEYXRlID0ga2luZE9mVGVzdCgnRGF0ZScpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xudmFyIGlzRmlsZSA9IGtpbmRPZlRlc3QoJ0ZpbGUnKTtcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJsb2JcbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbnZhciBpc0Jsb2IgPSBraW5kT2ZUZXN0KCdCbG9iJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGaWxlTGlzdFxuICpcbiAqIEBmdW5jdGlvblxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGaWxlLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xudmFyIGlzRmlsZUxpc3QgPSBraW5kT2ZUZXN0KCdGaWxlTGlzdCcpO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJlYW0odmFsKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpbmcgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEZvcm1EYXRhLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGb3JtRGF0YSh0aGluZykge1xuICB2YXIgcGF0dGVybiA9ICdbb2JqZWN0IEZvcm1EYXRhXSc7XG4gIHJldHVybiB0aGluZyAmJiAoXG4gICAgKHR5cGVvZiBGb3JtRGF0YSA9PT0gJ2Z1bmN0aW9uJyAmJiB0aGluZyBpbnN0YW5jZW9mIEZvcm1EYXRhKSB8fFxuICAgIHRvU3RyaW5nLmNhbGwodGhpbmcpID09PSBwYXR0ZXJuIHx8XG4gICAgKGlzRnVuY3Rpb24odGhpbmcudG9TdHJpbmcpICYmIHRoaW5nLnRvU3RyaW5nKCkgPT09IHBhdHRlcm4pXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0XG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbnZhciBpc1VSTFNlYXJjaFBhcmFtcyA9IGtpbmRPZlRlc3QoJ1VSTFNlYXJjaFBhcmFtcycpO1xuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gIHJldHVybiBzdHIudHJpbSA/IHN0ci50cmltKCkgOiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudFxuICpcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXG4gKiBCb3RoIGVudmlyb25tZW50cyBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LCBidXQgbm90IGZ1bGx5IHN0YW5kYXJkIGdsb2JhbHMuXG4gKlxuICogd2ViIHdvcmtlcnM6XG4gKiAgdHlwZW9mIHdpbmRvdyAtPiB1bmRlZmluZWRcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXG4gKlxuICogcmVhY3QtbmF0aXZlOlxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcbiAqIG5hdGl2ZXNjcmlwdFxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdOYXRpdmVTY3JpcHQnIG9yICdOUydcbiAqL1xuZnVuY3Rpb24gaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAobmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05hdGl2ZVNjcmlwdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05TJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcbiAgKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0IGludm9raW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGluZGV4LCBhbmQgY29tcGxldGUgYXJyYXkgZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBrZXksIGFuZCBjb21wbGV0ZSBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBjYWxsYmFjayB0byBpbnZva2UgZm9yIGVhY2ggaXRlbVxuICovXG5mdW5jdGlvbiBmb3JFYWNoKG9iaiwgZm4pIHtcbiAgLy8gRG9uJ3QgYm90aGVyIGlmIG5vIHZhbHVlIHByb3ZpZGVkXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgb2JqID0gW29ial07XG4gIH1cblxuICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIGFycmF5IHZhbHVlc1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpbaV0sIGksIG9iaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2tleV0sIGtleSwgb2JqKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIHZhciByZXN1bHQgPSBtZXJnZSh7Zm9vOiAxMjN9LCB7Zm9vOiA0NTZ9KTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxuICogYGBgXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHRba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHt9LCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbC5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3VsdGluZyB2YWx1ZSBvZiBvYmplY3QgYVxuICovXG5mdW5jdGlvbiBleHRlbmQoYSwgYiwgdGhpc0FyZykge1xuICBmb3JFYWNoKGIsIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKHRoaXNBcmcgJiYgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhW2tleV0gPSB2YWw7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGE7XG59XG5cbi8qKlxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cbiAqIEByZXR1cm4ge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5mdW5jdGlvbiBzdHJpcEJPTShjb250ZW50KSB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlclxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHN1cGVyQ29uc3RydWN0b3JcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcHJvcHNdXG4gKiBAcGFyYW0ge29iamVjdH0gW2Rlc2NyaXB0b3JzXVxuICovXG5cbmZ1bmN0aW9uIGluaGVyaXRzKGNvbnN0cnVjdG9yLCBzdXBlckNvbnN0cnVjdG9yLCBwcm9wcywgZGVzY3JpcHRvcnMpIHtcbiAgY29uc3RydWN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZSwgZGVzY3JpcHRvcnMpO1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgcHJvcHMgJiYgT2JqZWN0LmFzc2lnbihjb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3BzKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIG9iamVjdCB3aXRoIGRlZXAgcHJvdG90eXBlIGNoYWluIHRvIGEgZmxhdCBvYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2VPYmogc291cmNlIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IFtkZXN0T2JqXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZpbHRlcl1cbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cblxuZnVuY3Rpb24gdG9GbGF0T2JqZWN0KHNvdXJjZU9iaiwgZGVzdE9iaiwgZmlsdGVyKSB7XG4gIHZhciBwcm9wcztcbiAgdmFyIGk7XG4gIHZhciBwcm9wO1xuICB2YXIgbWVyZ2VkID0ge307XG5cbiAgZGVzdE9iaiA9IGRlc3RPYmogfHwge307XG5cbiAgZG8ge1xuICAgIHByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlT2JqKTtcbiAgICBpID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICBwcm9wID0gcHJvcHNbaV07XG4gICAgICBpZiAoIW1lcmdlZFtwcm9wXSkge1xuICAgICAgICBkZXN0T2JqW3Byb3BdID0gc291cmNlT2JqW3Byb3BdO1xuICAgICAgICBtZXJnZWRbcHJvcF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3VyY2VPYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlT2JqKTtcbiAgfSB3aGlsZSAoc291cmNlT2JqICYmICghZmlsdGVyIHx8IGZpbHRlcihzb3VyY2VPYmosIGRlc3RPYmopKSAmJiBzb3VyY2VPYmogIT09IE9iamVjdC5wcm90b3R5cGUpO1xuXG4gIHJldHVybiBkZXN0T2JqO1xufVxuXG4vKlxuICogZGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3RyaW5nIGVuZHMgd2l0aCB0aGUgY2hhcmFjdGVycyBvZiBhIHNwZWNpZmllZCBzdHJpbmdcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWFyY2hTdHJpbmdcbiAqIEBwYXJhbSB7TnVtYmVyfSBbcG9zaXRpb249IDBdXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gZW5kc1dpdGgoc3RyLCBzZWFyY2hTdHJpbmcsIHBvc2l0aW9uKSB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAocG9zaXRpb24gPT09IHVuZGVmaW5lZCB8fCBwb3NpdGlvbiA+IHN0ci5sZW5ndGgpIHtcbiAgICBwb3NpdGlvbiA9IHN0ci5sZW5ndGg7XG4gIH1cbiAgcG9zaXRpb24gLT0gc2VhcmNoU3RyaW5nLmxlbmd0aDtcbiAgdmFyIGxhc3RJbmRleCA9IHN0ci5pbmRleE9mKHNlYXJjaFN0cmluZywgcG9zaXRpb24pO1xuICByZXR1cm4gbGFzdEluZGV4ICE9PSAtMSAmJiBsYXN0SW5kZXggPT09IHBvc2l0aW9uO1xufVxuXG5cbi8qKlxuICogUmV0dXJucyBuZXcgYXJyYXkgZnJvbSBhcnJheSBsaWtlIG9iamVjdFxuICogQHBhcmFtIHsqfSBbdGhpbmddXG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmZ1bmN0aW9uIHRvQXJyYXkodGhpbmcpIHtcbiAgaWYgKCF0aGluZykgcmV0dXJuIG51bGw7XG4gIHZhciBpID0gdGhpbmcubGVuZ3RoO1xuICBpZiAoaXNVbmRlZmluZWQoaSkpIHJldHVybiBudWxsO1xuICB2YXIgYXJyID0gbmV3IEFycmF5KGkpO1xuICB3aGlsZSAoaS0tID4gMCkge1xuICAgIGFycltpXSA9IHRoaW5nW2ldO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG52YXIgaXNUeXBlZEFycmF5ID0gKGZ1bmN0aW9uKFR5cGVkQXJyYXkpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbiAgcmV0dXJuIGZ1bmN0aW9uKHRoaW5nKSB7XG4gICAgcmV0dXJuIFR5cGVkQXJyYXkgJiYgdGhpbmcgaW5zdGFuY2VvZiBUeXBlZEFycmF5O1xuICB9O1xufSkodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihVaW50OEFycmF5KSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0FycmF5OiBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gIGlzRm9ybURhdGE6IGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3OiBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICBpc051bWJlcjogaXNOdW1iZXIsXG4gIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc0RhdGU6IGlzRGF0ZSxcbiAgaXNGaWxlOiBpc0ZpbGUsXG4gIGlzQmxvYjogaXNCbG9iLFxuICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbTogaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zOiBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNTdGFuZGFyZEJyb3dzZXJFbnY6IGlzU3RhbmRhcmRCcm93c2VyRW52LFxuICBmb3JFYWNoOiBmb3JFYWNoLFxuICBtZXJnZTogbWVyZ2UsXG4gIGV4dGVuZDogZXh0ZW5kLFxuICB0cmltOiB0cmltLFxuICBzdHJpcEJPTTogc3RyaXBCT00sXG4gIGluaGVyaXRzOiBpbmhlcml0cyxcbiAgdG9GbGF0T2JqZWN0OiB0b0ZsYXRPYmplY3QsXG4gIGtpbmRPZjoga2luZE9mLFxuICBraW5kT2ZUZXN0OiBraW5kT2ZUZXN0LFxuICBlbmRzV2l0aDogZW5kc1dpdGgsXG4gIHRvQXJyYXk6IHRvQXJyYXksXG4gIGlzVHlwZWRBcnJheTogaXNUeXBlZEFycmF5LFxuICBpc0ZpbGVMaXN0OiBpc0ZpbGVMaXN0XG59O1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdXRpbHMqL1xuaW1wb3J0IHtcbiAgaXNQdXJlT2JqZWN0LFxuICBzZXRWYWx1ZUlmTm90TmlsLFxufSBmcm9tICcuLi91dGlscyc7XG4vKnR5cGVzKi9cbmltcG9ydCBIdHRwTWV0aG9kcyBmcm9tICcuLi9yZXF1ZXN0L0h0dHBNZXRob2RzJztcbmltcG9ydCB7IENsaWVudFBhcmFtcyB9IGZyb20gJy4vQ2xpZW50JztcbmltcG9ydCB7IFJlcXVlc3RDb25maWcsIFJlcXVlc3RPcHRpb25zLCBSZXF1ZXN0Q29uc3RydWN0b3JDb25maWcgfSBmcm9tICcuLi9yZXF1ZXN0L1JlcXVlc3QnO1xuLypsaWIqL1xuaW1wb3J0IFJlcXVlc3QgZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgcGFja2FnZUpTT04gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJztcbi8qb3RoZXIqL1xuXG5leHBvcnQgdHlwZSBDbGllbnRDb25uZWN0UGFyYW1zID0gUGljazxDbGllbnRQYXJhbXMsICdjb25maWcnIHwgJ29wdGlvbnMnPjtcblxuY2xhc3MgQ2xpZW50IHtcbiAgcHJpdmF0ZSB2ZXJzaW9uITogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uZmlnITogUmVxdWVzdENvbmZpZztcbiAgcHJpdmF0ZSBvcHRpb25zITogUmVxdWVzdE9wdGlvbnM7XG5cbiAgcHJpdmF0ZSBhcGlLZXk/OiBzdHJpbmc7XG4gIHByaXZhdGUgYXBpU2VjcmV0Pzogc3RyaW5nO1xuICBwcml2YXRlIGFwaVRva2VuPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtczogQ2xpZW50UGFyYW1zKSB7XG4gICAgaWYgKCFpc1B1cmVPYmplY3QocGFyYW1zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBcInBhcmFtc1wiIG11c3QgYmUgb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0KHRoaXMuY2xvbmVQYXJhbXMocGFyYW1zKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UGFja2FnZVZlcnNpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBUElLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpS2V5O1xuICB9XG5cbiAgcHVibGljIGdldEFQSVNlY3JldCgpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZWNyZXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0QVBJVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpVG9rZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29uZmlnKCkge1xuICAgIHJldHVybiB7IC4uLnRoaXMuY29uZmlnIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0T3B0aW9ucygpIHtcbiAgICByZXR1cm4geyAuLi50aGlzLm9wdGlvbnMgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQocmVzb3VyY2U6IHN0cmluZywgY29uZmlnPzogUmVxdWVzdENvbnN0cnVjdG9yQ29uZmlnKSB7XG4gICAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIEh0dHBNZXRob2RzLkdldCwgcmVzb3VyY2UsIGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgcG9zdChyZXNvdXJjZTogc3RyaW5nLCBjb25maWc/OiBSZXF1ZXN0Q29uc3RydWN0b3JDb25maWcpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcywgSHR0cE1ldGhvZHMuUG9zdCwgcmVzb3VyY2UsIGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgcHV0KHJlc291cmNlOiBzdHJpbmcsIGNvbmZpZz86IFJlcXVlc3RDb25zdHJ1Y3RvckNvbmZpZykge1xuICAgIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCBIdHRwTWV0aG9kcy5QdXQsIHJlc291cmNlLCBjb25maWcpO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShyZXNvdXJjZTogc3RyaW5nLCBjb25maWc/OiBSZXF1ZXN0Q29uc3RydWN0b3JDb25maWcpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcywgSHR0cE1ldGhvZHMuRGVsZXRlLCByZXNvdXJjZSwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdChwYXJhbXM6IENsaWVudFBhcmFtcykge1xuICAgIGlmICghaXNQdXJlT2JqZWN0KHBhcmFtcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJwYXJhbXNcIiBtdXN0IGJlIG9iamVjdCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHtcbiAgICAgIGFwaVRva2VuLFxuICAgICAgYXBpS2V5LFxuICAgICAgYXBpU2VjcmV0LFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGNvbmZpZyxcbiAgICB9ID0gcGFyYW1zO1xuXG4gICAgdGhpcy52ZXJzaW9uID0gQ2xpZW50LnBhY2thZ2VKU09OLnZlcnNpb247XG5cbiAgICB0aGlzLnNldENvbmZpZyhjb25maWcgPz8gbnVsbCk7XG4gICAgdGhpcy5zZXRPcHRpb25zKG9wdGlvbnMgPz8gbnVsbCk7XG5cbiAgICByZXR1cm4gJ2FwaVRva2VuJyBpbiBwYXJhbXNcbiAgICAgID8gdGhpcy50b2tlbkNvbm5lY3RTdHJhdGVneShhcGlUb2tlbilcbiAgICAgIDogdGhpcy5iYXNpY0Nvbm5lY3RTdHJhdGVneShhcGlLZXksIGFwaVNlY3JldCk7XG4gIH1cblxuICBwcml2YXRlIGNsb25lUGFyYW1zKHBhcmFtczogQ2xpZW50UGFyYW1zKSB7XG4gICAgaWYgKCFpc1B1cmVPYmplY3QocGFyYW1zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBcInBhcmFtc1wiIG11c3QgYmUgb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvbmVkUGFyYW1zID0geyAuLi5wYXJhbXMgfTtcblxuICAgIGlmIChwYXJhbXMuY29uZmlnKSB7XG4gICAgICBjbG9uZWRQYXJhbXMuY29uZmlnID0ge1xuICAgICAgICAuLi5wYXJhbXMuY29uZmlnLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLm9wdGlvbnMpIHtcbiAgICAgIGNsb25lZFBhcmFtcy5vcHRpb25zID0ge1xuICAgICAgICAuLi5wYXJhbXMub3B0aW9ucyxcbiAgICAgIH07XG5cbiAgICAgIGlmIChjbG9uZWRQYXJhbXMub3B0aW9ucy5wcm94eSkge1xuICAgICAgICBjbG9uZWRQYXJhbXMub3B0aW9ucy5wcm94eSA9IHtcbiAgICAgICAgICAuLi5jbG9uZWRQYXJhbXMub3B0aW9ucy5wcm94eSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNsb25lZFBhcmFtcy5vcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgICAgY2xvbmVkUGFyYW1zLm9wdGlvbnMuaGVhZGVycyA9IHtcbiAgICAgICAgICAuLi5jbG9uZWRQYXJhbXMub3B0aW9ucy5oZWFkZXJzLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbG9uZWRQYXJhbXM7XG4gIH1cblxuICBwcml2YXRlIHNldENvbmZpZyhjdXN0b21Db25maWc6IFBhcnRpYWw8UmVxdWVzdENvbmZpZz4gfCBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiBjdXN0b21Db25maWcgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FyZ3VtZW50IFwiY3VzdG9tQ29uZmlnXCIgbXVzdCBiZSBvYmplY3Qgb3IgbnVsbCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHsgLi4uQ2xpZW50LmNvbmZpZyB9O1xuXG4gICAgaWYgKGN1c3RvbUNvbmZpZyAhPT0gbnVsbCkge1xuICAgICAgc2V0VmFsdWVJZk5vdE5pbChjb25maWcsICdob3N0JywgY3VzdG9tQ29uZmlnLmhvc3QpO1xuICAgICAgc2V0VmFsdWVJZk5vdE5pbChjb25maWcsICdvdXRwdXQnLCBjdXN0b21Db25maWcub3V0cHV0KTtcbiAgICAgIHNldFZhbHVlSWZOb3ROaWwoY29uZmlnLCAndmVyc2lvbicsIGN1c3RvbUNvbmZpZy52ZXJzaW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRPcHRpb25zKG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zIHwgbnVsbCkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJvcHRpb25zXCIgbXVzdCBiZSBvYmplY3Qgb3IgbnVsbCcpO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPz8ge307XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgdG9rZW5Db25uZWN0U3RyYXRlZ3koYXBpVG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghYXBpVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWFpbGpldCBBUElfVE9LRU4gaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFwaVRva2VuID0gYXBpVG9rZW47XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByaXZhdGUgYmFzaWNDb25uZWN0U3RyYXRlZ3koYXBpS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQsIGFwaVNlY3JldDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFhcGlLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWFpbGpldCBBUElfS0VZIGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuICAgIGlmICghYXBpU2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01haWxqZXQgQVBJX1NFQ1JFVCBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIHRoaXMuYXBpS2V5ID0gYXBpS2V5O1xuICAgIHRoaXMuYXBpU2VjcmV0ID0gYXBpU2VjcmV0O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFwaUNvbm5lY3QoYXBpS2V5OiBzdHJpbmcsIGFwaVNlY3JldDogc3RyaW5nLCBwYXJhbXM/OiBDbGllbnRDb25uZWN0UGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGllbnQoeyBhcGlLZXksIGFwaVNlY3JldCwgLi4ucGFyYW1zIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzbXNDb25uZWN0KGFwaVRva2VuOiBzdHJpbmcsIHBhcmFtcz86IENsaWVudENvbm5lY3RQYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsaWVudCh7IGFwaVRva2VuLCAuLi5wYXJhbXMgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbmZpZzogUmVhZG9ubHk8UmVxdWVzdENvbmZpZz4gPSBPYmplY3QuZnJlZXplKHtcbiAgICBob3N0OiAnYXBpLm1haWxqZXQuY29tJyxcbiAgICB2ZXJzaW9uOiAndjMnLFxuICAgIG91dHB1dDogJ2pzb24nLFxuICB9IGFzIGNvbnN0KTtcblxuICBwdWJsaWMgc3RhdGljIHBhY2thZ2VKU09OID0gT2JqZWN0LmZyZWV6ZSh7XG4gICAgLi4ucGFja2FnZUpTT04sXG4gIH0gYXMgY29uc3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDbGllbnQ7XG4iLCIvKmV4dGVybmFsIG1vZHVsZXMqL1xuLyp1dGlscyovXG4vKnR5cGVzKi9cbmltcG9ydCBIdHRwTWV0aG9kcyBmcm9tICcuL3JlcXVlc3QvSHR0cE1ldGhvZHMnO1xuLypsaWIqL1xuaW1wb3J0IFJlcXVlc3QgZnJvbSAnLi9yZXF1ZXN0L2luZGV4JztcbmltcG9ydCBDbGllbnQgZnJvbSAnLi9jbGllbnQvaW5kZXgnO1xuLypvdGhlciovXG5cbmNsYXNzIE1haWxqZXQgZXh0ZW5kcyBDbGllbnQge1xuICBzdGF0aWMgUmVxdWVzdCA9IFJlcXVlc3Q7XG4gIHN0YXRpYyBIdHRwTWV0aG9kcyA9IEh0dHBNZXRob2RzO1xuICBzdGF0aWMgQ2xpZW50ID0gQ2xpZW50O1xufVxuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2FwaSc7XG5leHBvcnQgeyBDbGllbnQsIFJlcXVlc3QsIEh0dHBNZXRob2RzIH07XG5leHBvcnQgZGVmYXVsdCBNYWlsamV0O1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG4vKmxpYiovXG4vKm90aGVyKi9cblxuZW51bSBIdHRwTWV0aG9kcyB7XG4gIEdldCA9ICdnZXQnLFxuICBQb3N0ID0gJ3Bvc3QnLFxuICBQdXQgPSAncHV0JyxcbiAgRGVsZXRlID0gJ2RlbGV0ZSdcbn1cblxuZXhwb3J0IGRlZmF1bHQgSHR0cE1ldGhvZHM7XG4iLCIvKmV4dGVybmFsIG1vZHVsZXMqL1xuaW1wb3J0IHVybEpvaW4gZnJvbSAndXJsLWpvaW4nO1xuaW1wb3J0IEpTT05CaWdJbnQgZnJvbSAnanNvbi1iaWdpbnQnO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zRXJyb3IgfSBmcm9tICdheGlvcyc7XG4vKnV0aWxzKi9cbmltcG9ydCB7IHNldFZhbHVlSWZOb3ROaWwgfSBmcm9tICcuLi91dGlscy9pbmRleCc7XG4vKnR5cGVzKi9cbmltcG9ydCB7IFRPYmplY3QgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBMaWJyYXJ5UmVzcG9uc2UsIExpYnJhcnlMb2NhbFJlc3BvbnNlIH0gZnJvbSAnLi4vdHlwZXMvYXBpJztcbmltcG9ydCBIdHRwTWV0aG9kcyBmcm9tICcuL0h0dHBNZXRob2RzJztcbmltcG9ydCB7XG4gIFJlcXVlc3RDb25maWcsXG4gIFJlcXVlc3REYXRhLFxuICBSZXF1ZXN0UGFyYW1zLFxuICBSZXF1ZXN0Q29uc3RydWN0b3JDb25maWcsXG4gIFJlcXVlc3RBeGlvc0NvbmZpZyxcbiAgU3ViUGF0aCxcbn0gZnJvbSAnLi9SZXF1ZXN0Jztcbi8qbGliKi9cbmltcG9ydCBDbGllbnQgZnJvbSAnLi4vY2xpZW50Jztcbi8qb3RoZXIqL1xuXG50eXBlIFVua25vd25SZWMgPSBUT2JqZWN0LlVua25vd25SZWNcblxuY29uc3QgSlNPTmIgPSBKU09OQmlnSW50KHsgc3RvcmVBc1N0cmluZzogdHJ1ZSB9KTtcblxuY2xhc3MgUmVxdWVzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50OiBDbGllbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0aG9kOiBIdHRwTWV0aG9kcztcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFBhcnRpYWw8UmVxdWVzdENvbmZpZz47XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IHN0cmluZztcblxuICBwcml2YXRlIHVybDogc3RyaW5nO1xuICBwcml2YXRlIHN1YlBhdGg6IFN1YlBhdGg7XG4gIHByaXZhdGUgYWN0aW9uUGF0aDogc3RyaW5nIHwgbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjbGllbnQ6IENsaWVudCxcbiAgICBtZXRob2Q6IEh0dHBNZXRob2RzLFxuICAgIHJlc291cmNlOiBzdHJpbmcsXG4gICAgY29uZmlnPzogUmVxdWVzdENvbnN0cnVjdG9yQ29uZmlnLFxuICApIHtcbiAgICBpZiAoIShjbGllbnQgaW5zdGFuY2VvZiBDbGllbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FyZ3VtZW50IFwiY2xpZW50XCIgbXVzdCBiZSBpbnN0YW5jZSBvZiBDbGllbnQnKTtcbiAgICB9XG5cbiAgICBpZiAoIU9iamVjdC52YWx1ZXMoSHR0cE1ldGhvZHMpLmluY2x1ZGVzKG1ldGhvZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJtZXRob2RcIiBtdXN0IGJlIG9uZSBvZiBzdXBwb3J0ZWQgbWV0aG9kczogZ2V0LCBwb3N0LCBwdXQsIGRlbGV0ZScpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVzb3VyY2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FyZ3VtZW50IFwicmVzb3VyY2VcIiBtdXN0IGJlIHN0cmluZycpO1xuICAgIH1cblxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuXG4gICAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gICAgdGhpcy51cmwgPSByZXNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMucmVzb3VyY2UgPSByZXNvdXJjZS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuc3ViUGF0aCA9IHRoaXMuYnVpbGRTdWJQYXRoKCk7XG4gICAgdGhpcy5hY3Rpb25QYXRoID0gbnVsbDtcblxuICAgIHRoaXMuY29uZmlnID0geyAuLi5jb25maWcgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVc2VyQWdlbnQoKSB7XG4gICAgcmV0dXJuIGBtYWlsamV0LWFwaS12My1ub2RlanMvJHt0aGlzLmNsaWVudC5nZXRQYWNrYWdlVmVyc2lvbigpfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3JlZGVudGlhbHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFwaVRva2VuOiB0aGlzLmNsaWVudC5nZXRBUElUb2tlbigpLFxuICAgICAgYXBpS2V5OiB0aGlzLmNsaWVudC5nZXRBUElLZXkoKSxcbiAgICAgIGFwaVNlY3JldDogdGhpcy5jbGllbnQuZ2V0QVBJU2VjcmV0KCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGVudFR5cGUodXJsOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJ1cmxcIiBtdXN0IGJlIHN0cmluZycpO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwuaW5kZXhPZigndGV4dDpwbGFpbicpID4gLTFcbiAgICAgID8gJ3RleHQvcGxhaW4nXG4gICAgICA6ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVxdWVzdEJvZHkoZGF0YTogUmVxdWVzdERhdGEpIHtcbiAgICByZXR1cm4gW1xuICAgICAgSHR0cE1ldGhvZHMuUHV0LFxuICAgICAgSHR0cE1ldGhvZHMuUG9zdCxcbiAgICAgIEh0dHBNZXRob2RzLkRlbGV0ZSxcbiAgICBdLmluY2x1ZGVzKHRoaXMubWV0aG9kKSA/IGRhdGEgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRnVsbFVybCgpIHtcbiAgICBjb25zdCBjbGllbnRDb25maWcgPSB0aGlzLmNsaWVudC5nZXRDb25maWcoKTtcblxuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmNvbmZpZy5ob3N0ID8/IGNsaWVudENvbmZpZy5ob3N0O1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmNvbmZpZy52ZXJzaW9uID8/IGNsaWVudENvbmZpZy52ZXJzaW9uO1xuXG4gICAgcmV0dXJuIHVybEpvaW4oUmVxdWVzdC5wcm90b2NvbCwgaG9zdCwgdmVyc2lvbiwgdGhpcy5zdWJQYXRoLCB0aGlzLnVybCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3ViUGF0aCgpIHtcbiAgICBpZiAodGhpcy5hY3Rpb25QYXRoKSB7XG4gICAgICBjb25zdCBpc0NvbnRhY3RMaXN0V2l0aENTViA9IHRoaXMucmVzb3VyY2UgPT09ICdjb250YWN0c2xpc3QnICYmIHRoaXMuYWN0aW9uUGF0aCA9PT0gJ2NzdmRhdGEvdGV4dDpwbGFpbic7XG4gICAgICBjb25zdCBpc0JhdGNoSm9iV2l0aENTViA9IHRoaXMucmVzb3VyY2UgPT09ICdiYXRjaGpvYicgJiYgdGhpcy5hY3Rpb25QYXRoID09PSAnY3N2ZXJyb3IvdGV4dDpjc3YnO1xuXG4gICAgICByZXR1cm4gKGlzQ29udGFjdExpc3RXaXRoQ1NWIHx8IGlzQmF0Y2hKb2JXaXRoQ1NWKSA/ICdEQVRBJyA6IHRoaXMuc3ViUGF0aDtcbiAgICB9XG4gICAgY29uc3QgaXNTZW5kUmVzb3VyY2UgPSB0aGlzLnJlc291cmNlID09PSAnc2VuZCc7XG4gICAgY29uc3QgcmVzb3VyY2VDb250YWluU01TID0gdGhpcy5yZXNvdXJjZS5pbmRleE9mKCdzbXMnKSA+IC0xO1xuXG4gICAgcmV0dXJuICghaXNTZW5kUmVzb3VyY2UgJiYgIXJlc291cmNlQ29udGFpblNNUykgPyAnUkVTVCcgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgbWFrZVJlcXVlc3QodXJsOiBzdHJpbmcsIGRhdGE6IFJlcXVlc3REYXRhLCBwYXJhbXM6IFJlcXVlc3RQYXJhbXMpIHtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXhpb3MvYXhpb3MjcmVxdWVzdC1jb25maWdcbiAgICBjb25zdCByZXF1ZXN0Q29uZmlnOiBSZXF1ZXN0QXhpb3NDb25maWcgPSB7XG4gICAgICB1cmwsXG4gICAgICBwYXJhbXMsXG4gICAgICBkYXRhOiB0aGlzLmdldFJlcXVlc3RCb2R5KGRhdGEpLFxuICAgICAgbWV0aG9kOiB0aGlzLm1ldGhvZCxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnVXNlci1BZ2VudCc6IHRoaXMuZ2V0VXNlckFnZW50KCksXG4gICAgICAgICdDb250ZW50LVR5cGUnOiB0aGlzLmdldENvbnRlbnRUeXBlKHVybCksXG4gICAgICB9LFxuICAgICAgdHJhbnNmb3JtUmVzcG9uc2UocmVzcG9uc2VEYXRhOiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IGRhdGFJc1N0cmluZyA9IHR5cGVvZiByZXNwb25zZURhdGEgPT09ICdzdHJpbmcnO1xuICAgICAgICBjb25zdCBpc0pTT05SZXF1ZXN0ZWQgPSB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xuXG4gICAgICAgIGlmIChyZXNwb25zZURhdGEgJiYgZGF0YUlzU3RyaW5nICYmIGlzSlNPTlJlcXVlc3RlZCkge1xuICAgICAgICAgIHJldHVybiBSZXF1ZXN0LnBhcnNlVG9KU09OYihyZXNwb25zZURhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIEJST1dTRVIgU0lERVxuICAgIGlmIChSZXF1ZXN0LmlzQnJvd3NlcigpKSB7XG4gICAgICByZXF1ZXN0Q29uZmlnLmhlYWRlcnNbJ1gtVXNlci1BZ2VudCddID0gcmVxdWVzdENvbmZpZy5oZWFkZXJzWydVc2VyLUFnZW50J107XG4gICAgfVxuXG4gICAgLy8gQVVUSFxuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gdGhpcy5nZXRDcmVkZW50aWFscygpO1xuXG4gICAgaWYgKGNyZWRlbnRpYWxzLmFwaVRva2VuKSB7XG4gICAgICByZXF1ZXN0Q29uZmlnLmhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHtjcmVkZW50aWFscy5hcGlUb2tlbn1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Q29uZmlnLmF1dGggPSB7XG4gICAgICAgIHVzZXJuYW1lOiBjcmVkZW50aWFscy5hcGlLZXkgYXMgc3RyaW5nLFxuICAgICAgICBwYXNzd29yZDogY3JlZGVudGlhbHMuYXBpU2VjcmV0IGFzIHN0cmluZyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gT1BUSU9OU1xuICAgIGNvbnN0IGNsaWVudENvbmZpZyA9IHRoaXMuY2xpZW50LmdldENvbmZpZygpO1xuICAgIGNvbnN0IGNsaWVudE9wdGlvbnMgPSB0aGlzLmNsaWVudC5nZXRPcHRpb25zKCk7XG5cbiAgICAvLyAxLiBUaW1lb3V0XG4gICAgaWYgKGNsaWVudE9wdGlvbnMudGltZW91dCkge1xuICAgICAgcmVxdWVzdENvbmZpZy50aW1lb3V0ID0gY2xpZW50T3B0aW9ucy50aW1lb3V0O1xuICAgIH1cblxuICAgIC8vIDIuIFByb3h5XG4gICAgaWYgKGNsaWVudE9wdGlvbnMucHJveHkpIHtcbiAgICAgIHJlcXVlc3RDb25maWcucHJveHkgPSBjbGllbnRPcHRpb25zLnByb3h5O1xuICAgIH1cblxuICAgIC8vIDMuIEhlYWRlcnNcbiAgICBpZiAoY2xpZW50T3B0aW9ucy5oZWFkZXJzICYmIE9iamVjdC5rZXlzKGNsaWVudE9wdGlvbnMuaGVhZGVycykubGVuZ3RoID4gMCkge1xuICAgICAgcmVxdWVzdENvbmZpZy5oZWFkZXJzID0ge1xuICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLmhlYWRlcnMsXG4gICAgICAgIC4uLmNsaWVudE9wdGlvbnMuaGVhZGVycyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gNC4gT3V0cHV0XG4gICAgY29uc3Qgb3V0cHV0ID0gdGhpcy5jb25maWcub3V0cHV0ID8/IGNsaWVudENvbmZpZy5vdXRwdXQ7XG4gICAgaWYgKG91dHB1dCkge1xuICAgICAgcmVxdWVzdENvbmZpZy5yZXNwb25zZVR5cGUgPSBvdXRwdXQ7XG4gICAgfVxuXG4gICAgLy8gTk9ERSBTSURFXG4gICAgLy8gNS4gTWF4IHJlcXVlc3QgY29udGVudCBzaXplXG4gICAgaWYgKGNsaWVudE9wdGlvbnMubWF4Qm9keUxlbmd0aCkge1xuICAgICAgcmVxdWVzdENvbmZpZy5tYXhCb2R5TGVuZ3RoID0gY2xpZW50T3B0aW9ucy5tYXhCb2R5TGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIE5PREUgU0lERVxuICAgIC8vIDYuIE1heCByZXNwb25zZSBjb250ZW50IHNpemVcbiAgICBpZiAoY2xpZW50T3B0aW9ucy5tYXhDb250ZW50TGVuZ3RoKSB7XG4gICAgICByZXF1ZXN0Q29uZmlnLm1heENvbnRlbnRMZW5ndGggPSBjbGllbnRPcHRpb25zLm1heENvbnRlbnRMZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF4aW9zKHJlcXVlc3RDb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRCYXNlVVJMKGJhc2VVcmw6IHN0cmluZykge1xuICAgIHRoaXMudXJsID0gYmFzZVVybC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGlkKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBpZiAoIVsnc3RyaW5nJywgJ251bWJlciddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnQgXCJ2YWx1ZVwiIG11c3QgYmUgc3RyaW5nIG9yIG51bWJlcicpO1xuICAgIH1cblxuICAgIHRoaXMudXJsID0gdXJsSm9pbih0aGlzLnVybCwgdmFsdWUudG9TdHJpbmcoKSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBcIm5hbWVcIiBtdXN0IGJlIHN0cmluZycpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9uUGF0aCA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIHN3aXRjaCAodGhpcy5hY3Rpb25QYXRoKSB7XG4gICAgICBjYXNlICdjc3ZkYXRhJzoge1xuICAgICAgICB0aGlzLmFjdGlvblBhdGggPSAnY3N2ZGF0YS90ZXh0OnBsYWluJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdjc3ZlcnJvcic6IHtcbiAgICAgICAgdGhpcy5hY3Rpb25QYXRoID0gJ2NzdmVycm9yL3RleHQ6Y3N2JztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudXJsID0gdXJsSm9pbih0aGlzLnVybCwgdGhpcy5hY3Rpb25QYXRoKTtcbiAgICB0aGlzLnN1YlBhdGggPSB0aGlzLmJ1aWxkU3ViUGF0aCgpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVxdWVzdDxCb2R5IGV4dGVuZHMgUmVxdWVzdERhdGE+KFxuICAgIGRhdGE/OiBSZXF1ZXN0RGF0YSxcbiAgICBwYXJhbXM/OiBSZXF1ZXN0UGFyYW1zLFxuICAgIHBlcmZvcm1BUElDYWxsPzogdHJ1ZSxcbiAgKTogUHJvbWlzZTxMaWJyYXJ5UmVzcG9uc2U8Qm9keT4+XG5cbiAgcHVibGljIGFzeW5jIHJlcXVlc3Q8Qm9keSBleHRlbmRzIFJlcXVlc3REYXRhLCBQYXJhbXMgZXh0ZW5kcyBVbmtub3duUmVjPihcbiAgICBkYXRhPzogQm9keSxcbiAgICBwYXJhbXM/OiBQYXJhbXMsXG4gICAgcGVyZm9ybUFQSUNhbGw/OiBmYWxzZSxcbiAgKTogUHJvbWlzZTxMaWJyYXJ5TG9jYWxSZXNwb25zZTxCb2R5LCBQYXJhbXM+PlxuXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0PEJvZHkgZXh0ZW5kcyBSZXF1ZXN0RGF0YSwgUGFyYW1zIGV4dGVuZHMgVW5rbm93blJlYz4oXG4gICAgZGF0YTogUmVxdWVzdERhdGEgfCBCb2R5ID0ge30sXG4gICAgcGFyYW1zOiBSZXF1ZXN0UGFyYW1zIHwgUGFyYW1zID0ge30sXG4gICAgcGVyZm9ybUFQSUNhbGwgPSB0cnVlLFxuICApOiBQcm9taXNlPExpYnJhcnlSZXNwb25zZTxCb2R5PiB8IExpYnJhcnlMb2NhbFJlc3BvbnNlPEJvZHksIFBhcmFtcz4+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkRnVsbFVybCgpO1xuICAgIHRoaXMuc2V0QmFzZVVSTCh0aGlzLnJlc291cmNlKTtcblxuICAgIGlmICghcGVyZm9ybUFQSUNhbGwpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmdldFJlcXVlc3RCb2R5KGRhdGEpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBib2R5LFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHVybCxcbiAgICAgIH0gYXMgTGlicmFyeUxvY2FsUmVzcG9uc2U8Qm9keSwgUGFyYW1zPjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLm1ha2VSZXF1ZXN0KHVybCwgZGF0YSwgcGFyYW1zKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3BvbnNlLFxuICAgICAgICBib2R5OiByZXNwb25zZS5kYXRhLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBBeGlvc0Vycm9yKSB7XG4gICAgICAgIGNvbnN0IGVycm9yOiBhbnkgPSBuZXcgRXJyb3IoKTtcblxuICAgICAgICBlcnJvci5jb2RlID0gZXJyLmNvZGU7XG4gICAgICAgIGVycm9yLmNvbmZpZyA9IGVyci5jb25maWc7XG5cbiAgICAgICAgaWYgKGVyci5yZXNwb25zZSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIHN0YXR1c1RleHQsXG4gICAgICAgICAgICBkYXRhOiBib2R5LFxuICAgICAgICAgIH0gPSBlcnIucmVzcG9uc2U7XG5cbiAgICAgICAgICBlcnJvci5yZXNwb25zZSA9IGVyci5yZXNwb25zZTtcblxuICAgICAgICAgIGVycm9yLnN0YXR1c0NvZGUgPSBzdGF0dXM7XG4gICAgICAgICAgZXJyb3Iuc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQ7XG5cbiAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBib2R5Py5FcnJvck1lc3NhZ2UgPz8gZXJyLm1lc3NhZ2U7XG4gICAgICAgICAgZXJyb3Iub3JpZ2luYWxNZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSBgVW5zdWNjZXNzZnVsOiBTdGF0dXMgQ29kZTogXCIke2Vycm9yLnN0YXR1c0NvZGV9XCIgTWVzc2FnZTogXCIke2Vycm9yTWVzc2FnZX1cImA7XG5cbiAgICAgICAgICBpZiAoYm9keSkge1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9kZXYubWFpbGpldC5jb20vZW1haWwvZ3VpZGVzL3NlbmQtYXBpLXYzMS8jc2VuZC1pbi1idWxrXG4gICAgICAgICAgICBjb25zdCBmdWxsTWVzc2FnZSA9IGJvZHkuTWVzc2FnZXM/LlswXT8uRXJyb3JzPy5bMF0/LkVycm9yTWVzc2FnZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZnVsbE1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgKz0gYDtcXG4ke2Z1bGxNZXNzYWdlfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHYzLjEgY2FzZVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9kZXYubWFpbGpldC5jb20vZW1haWwvZ3VpZGVzL3NlbmQtYXBpLXYzMS8jc2FuZGJveC1tb2RlXG4gICAgICAgICAgICBzZXRWYWx1ZUlmTm90TmlsKGVycm9yLCAnRXJyb3JNZXNzYWdlJywgYm9keS5FcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgc2V0VmFsdWVJZk5vdE5pbChlcnJvciwgJ0Vycm9yQ29kZScsIGJvZHkuRXJyb3JDb2RlKTtcbiAgICAgICAgICAgIHNldFZhbHVlSWZOb3ROaWwoZXJyb3IsICdFcnJvcklkZW50aWZpZXInLCBib2R5LkVycm9ySWRlbnRpZmllcik7XG4gICAgICAgICAgICBzZXRWYWx1ZUlmTm90TmlsKGVycm9yLCAnRXJyb3JSZWxhdGVkVG8nLCBib2R5LkVycm9yUmVsYXRlZFRvKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3IucmVzcG9uc2UgPSBudWxsO1xuXG4gICAgICAgICAgZXJyb3Iuc3RhdHVzQ29kZSA9IG51bGw7XG4gICAgICAgICAgZXJyb3Iuc3RhdHVzVGV4dCA9IG51bGw7XG5cbiAgICAgICAgICBlcnJvci5vcmlnaW5hbE1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICBlcnJvci5tZXNzYWdlID0gYFVuc3VjY2Vzc2Z1bDogRXJyb3IgQ29kZTogXCIke2Vycm9yLmNvZGV9XCIgTWVzc2FnZTogXCIke2Vyci5tZXNzYWdlfVwiYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwcm90b2NvbCA9ICdodHRwczovLycgYXMgY29uc3Q7XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZVRvSlNPTmIodGV4dDogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBcInRleHRcIiBtdXN0IGJlIHN0cmluZycpO1xuICAgIH1cblxuICAgIGxldCBib2R5O1xuICAgIHRyeSB7XG4gICAgICBib2R5ID0gSlNPTmIucGFyc2UodGV4dCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYm9keSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0Jyb3dzZXIoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlcXVlc3Q7XG4iLCJpbXBvcnQgeyBDb21tb24gfSBmcm9tICcuL0NvbW1vbic7XG5cbmV4cG9ydCBuYW1lc3BhY2UgRHJhZnRDYW1wYWlnbiB7XG4gIGV4cG9ydCBlbnVtIEVkaXRNb2RlIHtcbiAgICBUb29sMiA9ICd0b29sMicsXG4gICAgSFRNTDIgPSAnaHRtbDInLFxuICAgIE1KTUwgPSAnbWptbCdcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIENhbXBhaWduRHJhZnRTdGF0dXMge1xuICAgIEFYQ2FuY2VsZWQgPSAtMyxcbiAgICBEZWxldGVkID0gLTIsXG4gICAgQXJjaGl2ZWQgPSAtMSxcbiAgICBEcmFmdCA9IDAsXG4gICAgUHJvZ3JhbW1lZCA9IDEsXG4gICAgU2VudCA9IDIsXG4gICAgQVhUZXN0ZWQgPSAzLFxuICAgIEFYU2VsZWN0ZWQgPSA0XG4gIH1cblxuICBleHBvcnQgZW51bSBDYW1wYWlnbkRyYWZ0U2VuZGluZ1N0YXR1cyB7XG4gICAgQVhDYW5jZWxsZWQgPSAnQVhDYW5jZWxsZWQnLFxuICAgIERlbGV0ZWQgPSAnRGVsZXRlZCcsXG4gICAgQXJjaGl2ZWQgPSAnQXJjaGl2ZWQnLFxuICAgIERyYWZ0ID0gJ0RyYWZ0JyxcbiAgICBQcm9ncmFtbWVkID0gJ1Byb2dyYW1tZWQnLFxuICAgIFNlbnQgPSAnU2VudCcsXG4gICAgQVhUZXN0ZWQgPSAnQVhUZXN0ZWQnLFxuICAgIEFYU2VsZWN0ZWQgPSAnQVhTZWxlY3RlZCdcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUmVjaXBpZW50IHtcbiAgICBFbWFpbDogc3RyaW5nO1xuICAgIE5hbWU/OiBzdHJpbmdcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ2FtcGFpZ25EcmFmdDxBWFRlc3RpbmcgPSBDb21tb24uVW5rbm93blJlYz4ge1xuICAgIElEOiBudW1iZXI7XG4gICAgQVhGcmFjdGlvbjogbnVtYmVyO1xuICAgIEFYRnJhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgQVhUZXN0aW5nOiBBWFRlc3Rpbmc7XG4gICAgQ3VycmVudDogbnVtYmVyO1xuICAgIEVkaXRNb2RlOiBFZGl0TW9kZTtcbiAgICBJc1N0YXJyZWQ6IGJvb2xlYW47XG4gICAgSXNUZXh0UGFydEluY2x1ZGVkOiBib29sZWFuO1xuICAgIFJlcGx5RW1haWw6IHN0cmluZztcbiAgICBTZW5kZXJOYW1lOiBzdHJpbmc7XG4gICAgVGVtcGxhdGVJRDogbnVtYmVyO1xuICAgIFRpdGxlOiBzdHJpbmc7XG4gICAgQ2FtcGFpZ25JRDogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdElEOiBudW1iZXI7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgRGVsaXZlcmVkQXQ6IHN0cmluZztcbiAgICBMb2NhbGU6IHN0cmluZztcbiAgICBNb2RpZmllZEF0OiBzdHJpbmc7XG4gICAgUHJlc2V0OiBzdHJpbmc7XG4gICAgU2VnbWVudGF0aW9uSUQ6IG51bWJlcjtcbiAgICBTZW5kZXI6IHN0cmluZztcbiAgICBTZW5kZXJFbWFpbDogc3RyaW5nO1xuICAgIFN0YXR1czogQ2FtcGFpZ25EcmFmdFN0YXR1cztcbiAgICBTdWJqZWN0OiBzdHJpbmc7XG4gICAgVXJsOiBzdHJpbmc7XG4gICAgVXNlZDogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ2FtcGFpZ25EcmFmdERldGFpbENvbnRlbnQ8SGVhZGVycyA9IENvbW1vbi5Vbmtub3duUmVjPiB7XG4gICAgSGVhZGVyczogSGVhZGVycztcbiAgICAnSHRtbC1wYXJ0Jzogc3RyaW5nO1xuICAgICdUZXh0LXBhcnQnOiBzdHJpbmc7XG4gICAgTUpNTENvbnRlbnQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ2FtcGFpZ25EcmFmdFNjaGVkdWxlIHtcbiAgICBEYXRlOiBzdHJpbmc7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdENhbXBhaWduRHJhZnRCb2R5PEFYVGVzdGluZyA9IENvbW1vbi5Vbmtub3duUmVjPiA9IHtcbiAgICBMb2NhbGU6IHN0cmluZztcbiAgICBTdWJqZWN0OiBzdHJpbmc7XG5cbiAgICBBWEZyYWN0aW9uPzogbnVtYmVyO1xuICAgIEFYRnJhY3Rpb25OYW1lPzogc3RyaW5nO1xuICAgIEFYVGVzdGluZz86IEFYVGVzdGluZztcbiAgICBDdXJyZW50PzogbnVtYmVyO1xuICAgIEVkaXRNb2RlPzogRWRpdE1vZGU7XG4gICAgSXNTdGFycmVkPzogYm9vbGVhbjtcbiAgICBJc1RleHRQYXJ0SW5jbHVkZWQ/OiBib29sZWFuO1xuICAgIFJlcGx5RW1haWw/OiBzdHJpbmc7XG4gICAgU2VuZGVyTmFtZT86IHN0cmluZztcbiAgICBUZW1wbGF0ZUlEPzogbnVtYmVyO1xuICAgIFRpdGxlPzogc3RyaW5nO1xuICAgIENvbnRhY3RzTGlzdElEPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdEFsdD86IHN0cmluZztcbiAgICBTZWdtZW50YXRpb25JRD86IG51bWJlcjtcbiAgICBTZWdtZW50YXRpb25BbHQ/OiBzdHJpbmc7XG4gICAgU2VuZGVyPzogc3RyaW5nO1xuICAgIFNlbmRlckVtYWlsPzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0Q2FtcGFpZ25EcmFmdEJvZHk8QVhUZXN0aW5nID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICBPbWl0PFBhcnRpYWw8UG9zdENhbXBhaWduRHJhZnRCb2R5PEFYVGVzdGluZz4+LCAnQ29udGFjdHNMaXN0QWx0Jz4gJlxuICB7XG4gICAgU3RhdHVzPzogQ2FtcGFpZ25EcmFmdFN0YXR1c1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgR2V0Q2FtcGFpZ25EcmFmdFF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgQVhUZXN0aW5nPzogbnVtYmVyO1xuICAgIENhbXBhaWduPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdD86IG51bWJlcjtcbiAgICBEZWxpdmVyZWRBdD86IHN0cmluZztcbiAgICBFZGl0TW9kZT86IEVkaXRNb2RlO1xuICAgIElzQXJjaGl2ZWQ/OiBib29sZWFuO1xuICAgIElzQ2FtcGFpZ24/OiBib29sZWFuO1xuICAgIElzRGVsZXRlZD86IGJvb2xlYW47XG4gICAgSXNIYW5kbGVkPzogYm9vbGVhbjtcbiAgICBJc1N0YXJyZWQ/OiBib29sZWFuO1xuICAgIE1vZGlmaWVkPzogYm9vbGVhbjtcbiAgICBOZXdzTGV0dGVyVGVtcGxhdGU/OiBudW1iZXI7XG4gICAgU3RhdHVzPzogQ2FtcGFpZ25EcmFmdFN0YXR1cztcbiAgICBTdWJqZWN0Pzogc3RyaW5nO1xuICAgIFRlbXBsYXRlPzogbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENhbXBhaWduRHJhZnREZXRhaWxDb250ZW50Qm9keTxIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICBQYXJ0aWFsPENhbXBhaWduRHJhZnREZXRhaWxDb250ZW50PEhlYWRlcnM+PlxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0U2NoZWR1bGVCb2R5ID0ge1xuICAgIERhdGU6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFB1dENhbXBhaWduRHJhZnRTY2hlZHVsZUJvZHkgPSBQYXJ0aWFsPFBvc3RDYW1wYWlnbkRyYWZ0U2NoZWR1bGVCb2R5PlxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0VGVzdEJvZHkgPSB7XG4gICAgUmVjaXBpZW50czogUmVjaXBpZW50W11cbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBDYW1wYWlnbkRyYWZ0UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8Q2FtcGFpZ25EcmFmdFtdPjtcbiAgdHlwZSBDYW1wYWlnbkRyYWZ0U2NoZWR1bGVSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDYW1wYWlnbkRyYWZ0U2NoZWR1bGVbXT47XG4gIHR5cGUgQ2FtcGFpZ25EcmFmdERldGFpbENvbnRlbnRSZXNwb25zZTxIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICBDb21tb24uUmVzcG9uc2U8QXJyYXk8Q2FtcGFpZ25EcmFmdERldGFpbENvbnRlbnQ8SGVhZGVycz4+PjtcbiAgdHlwZSBDYW1wYWlnbkRyYWZ0U3RhdHVzUmVzcG9uc2UgPVxuICAgIENvbW1vbi5SZXNwb25zZTxBcnJheTx7IFN0YXR1czogQ2FtcGFpZ25EcmFmdFNlbmRpbmdTdGF0dXMgfT4+O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0UmVzcG9uc2UgPSBDYW1wYWlnbkRyYWZ0UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0Q2FtcGFpZ25EcmFmdFJlc3BvbnNlID0gQ2FtcGFpZ25EcmFmdFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENhbXBhaWduRHJhZnRSZXNwb25zZSA9IENhbXBhaWduRHJhZnRSZXNwb25zZVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0U2NoZWR1bGVSZXNwb25zZSA9IENhbXBhaWduRHJhZnRTY2hlZHVsZVJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFB1dENhbXBhaWduRHJhZnRTY2hlZHVsZVJlc3BvbnNlID0gQ2FtcGFpZ25EcmFmdFNjaGVkdWxlUmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0Q2FtcGFpZ25EcmFmdFNjaGVkdWxlUmVzcG9uc2UgPSBDYW1wYWlnbkRyYWZ0U2NoZWR1bGVSZXNwb25zZVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0RGV0YWlsQ29udGVudFJlc3BvbnNlPEhlYWRlcnMgPSBDb21tb24uVW5rbm93blJlYz4gPVxuICAgIENhbXBhaWduRHJhZnREZXRhaWxDb250ZW50UmVzcG9uc2U8SGVhZGVycz5cbiAgZXhwb3J0IHR5cGUgR2V0Q2FtcGFpZ25EcmFmdERldGFpbENvbnRlbnRSZXNwb25zZTxIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICBDYW1wYWlnbkRyYWZ0RGV0YWlsQ29udGVudFJlc3BvbnNlPEhlYWRlcnM+XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENhbXBhaWduRHJhZnRTZW5kID0gQ2FtcGFpZ25EcmFmdFN0YXR1c1Jlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFBvc3RDYW1wYWlnbkRyYWZ0VGVzdCA9IENhbXBhaWduRHJhZnRTdGF0dXNSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRDYW1wYWlnbkRyYWZ0U3RhdHVzID0gQ2FtcGFpZ25EcmFmdFN0YXR1c1Jlc3BvbnNlXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgU2VudENhbXBhaWduIHtcbiAgZXhwb3J0IGVudW0gQ2FtcGFpZ25UeXBlIHtcbiAgICBUcmFuc2FjdGlvbmFsID0gMSxcbiAgICBNYXJrZXRpbmcgPSAyLFxuICAgIFVua25vd24gPSAzLFxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDYW1wYWlnbiB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJc0RlbGV0ZWQ6IGJvb2xlYW47XG4gICAgSXNTdGFycmVkOiBib29sZWFuO1xuICAgIENhbXBhaWduVHlwZTogQ2FtcGFpZ25UeXBlO1xuICAgIENyZWF0ZWRBdDogc3RyaW5nO1xuICAgIEN1c3RvbVZhbHVlOiBzdHJpbmc7XG4gICAgRmlyc3RNZXNzYWdlSUQ6IG51bWJlcjtcbiAgICBGcm9tRW1haWw6IHN0cmluZztcbiAgICBGcm9tSUQ6IG51bWJlcjtcbiAgICBGcm9tTmFtZTogc3RyaW5nO1xuICAgIEhhc0h0bWxDb3VudDogbnVtYmVyO1xuICAgIEhhc1R4dENvdW50OiBudW1iZXI7XG4gICAgTGlzdElEOiBudW1iZXI7XG4gICAgTmV3c0xldHRlcklEOiBudW1iZXI7XG4gICAgU2VnbWVudGF0aW9uSUQ6IG51bWJlcjtcbiAgICBTZW5kRW5kQXQ6IHN0cmluZztcbiAgICBTZW5kU3RhcnRBdDogc3RyaW5nO1xuICAgIFNwYW1hc3NTY29yZTogbnVtYmVyO1xuICAgIFN1YmplY3Q6IHN0cmluZztcbiAgICBXb3JrZmxvd0lEOiBudW1iZXI7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUHV0Q2FtcGFpZ25Cb2R5ID0ge1xuICAgIElzRGVsZXRlZD86IGJvb2xlYW47XG4gICAgSXNTdGFycmVkPzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENhbXBhaWduUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5UaW1lc3RhbXBQZXJpb2Q+ICZcbiAgICBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmXG4gIHtcbiAgICBDYW1wYWlnbklEPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdElEPzogbnVtYmVyO1xuICAgIEN1c3RvbUNhbXBhaWduPzogc3RyaW5nO1xuICAgIEZyb20/OiBzdHJpbmc7XG4gICAgRnJvbURvbWFpbj86IHN0cmluZztcbiAgICBGcm9tSUQ/OiBudW1iZXI7XG4gICAgRnJvbVR5cGU/OiBDYW1wYWlnblR5cGU7XG4gICAgSXNEZWxldGVkPzogYm9vbGVhbjtcbiAgICBJc05ld3NsZXR0ZXJUb29sPzogYm9vbGVhbjtcbiAgICBJc1N0YXJyZWQ/OiBib29sZWFuO1xuICAgIFBlcmlvZD86IENvbW1vbi5QZXJpb2Q7XG4gICAgV29ya2Zsb3dJRD86IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBDYW1wYWlnblJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENhbXBhaWduW10+O1xuXG4gIGV4cG9ydCB0eXBlIFB1dENhbXBhaWduUmVzcG9uc2UgPSBDYW1wYWlnblJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENhbXBhaWduUmVzcG9uc2UgPSBDYW1wYWlnblJlc3BvbnNlXG59XG4iLCJleHBvcnQgbmFtZXNwYWNlIENvbW1vbiB7XG4gIGV4cG9ydCB0eXBlIFVua25vd25SZWMgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbiB7XG4gICAgY291bnRPbmx5OiBib29sZWFuO1xuXG4gICAgTGltaXQ6IG51bWJlcjtcbiAgICBPZmZzZXQ6IG51bWJlcjtcbiAgICBTb3J0OiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFRpbWVzdGFtcFBlcmlvZCB7XG4gICAgRnJvbVRTOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgVG9UUzogc3RyaW5nIHwgbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUmVzcG9uc2U8RW50aXR5PiA9IHtcbiAgICBDb3VudDogbnVtYmVyO1xuICAgIFRvdGFsOiBudW1iZXI7XG4gICAgRGF0YTogRW50aXR5O1xuICB9XG5cbiAgZXhwb3J0IGVudW0gUGVyaW9kIHtcbiAgICBEYXkgPSAnRGF5JyxcbiAgICBXZWVrID0gJ1dlZWsnLFxuICAgIE1vbnRoID0gJ01vbnRoJyxcbiAgICBZZWFyID0gJ1llYXInLFxuICB9XG59XG4iLCJpbXBvcnQgeyBDb21tb24gfSBmcm9tICcuL0NvbW1vbic7XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29udGFjdCB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdCB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJc0V4Y2x1ZGVkRnJvbUNhbXBhaWduczogYm9vbGVhbjtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgRGVsaXZlcmVkQ291bnQ6IG51bWJlcjtcbiAgICBFbWFpbDogc3RyaW5nO1xuICAgIEV4Y2x1c2lvbkZyb21DYW1wYWlnbnNVcGRhdGVkQXQ6IHN0cmluZztcbiAgICBJc09wdEluUGVuZGluZzogYm9vbGVhbjtcbiAgICBJc1NwYW1Db21wbGFpbmluZzogYm9vbGVhbjtcbiAgICBMYXN0QWN0aXZpdHlBdDogc3RyaW5nO1xuICAgIExhc3RVcGRhdGVBdDogc3RyaW5nO1xuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0Qm9keSA9IHtcbiAgICBFbWFpbDogc3RyaW5nO1xuICAgIElzRXhjbHVkZWRGcm9tQ2FtcGFpZ25zPzogYm9vbGVhbjtcbiAgICBOYW1lPzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdEJvZHkgPSBPbWl0PFBvc3RDb250YWN0Qm9keSwgJ0VtYWlsJz5cblxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0UXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBDYW1wYWlnbj86IG51bWJlcjtcbiAgICBDb250YWN0c0xpc3Q/OiBudW1iZXI7XG4gICAgSXNFeGNsdWRlZEZyb21DYW1wYWlnbnM/OiBib29sZWFuO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIENvbnRhY3RSZXNwb25zZSA9IHtcbiAgICBDb3VudDogbnVtYmVyO1xuICAgIFRvdGFsOiBudW1iZXI7XG4gICAgRGF0YTogQ29udGFjdFtdO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0UmVzcG9uc2UgPSBDb250YWN0UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdFJlc3BvbnNlID0gQ29udGFjdFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RSZXNwb25zZSA9IENvbnRhY3RSZXNwb25zZVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIENvbnRhY3RMaXN0IHtcbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0TGlzdCB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJc0RlbGV0ZWQ6IGJvb2xlYW47XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIEFkZHJlc3M6IHN0cmluZztcbiAgICBDcmVhdGVkQXQ6IHN0cmluZztcbiAgICBTdWJzY3JpYmVyQ291bnQ6IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdExpc3RCb2R5ID0ge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBJc0RlbGV0ZWQ/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdExpc3RCb2R5ID0gUGFydGlhbDxQb3N0Q29udGFjdExpc3RCb2R5PlxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RMaXN0UXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBBZGRyZXNzPzogc3RyaW5nO1xuICAgIEV4Y2x1ZGVJRD86IG51bWJlcjtcbiAgICBJc0RlbGV0ZWQ/OiBib29sZWFuO1xuICAgIE5hbWU/OiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVNQT05TRSBQQVJUXG4gIHR5cGUgQ29udGFjdExpc3RSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDb250YWN0TGlzdFtdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdExpc3RSZXNwb25zZSA9IENvbnRhY3RMaXN0UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdExpc3RSZXNwb25zZSA9IENvbnRhY3RMaXN0UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdExpc3RSZXNwb25zZSA9IENvbnRhY3RMaXN0UmVzcG9uc2Vcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBCdWxrQ29udGFjdE1hbmFnZW1lbnQge1xuICBleHBvcnQgZW51bSBNYW5hZ2VDb250YWN0c0FjdGlvbiB7XG4gICAgQWRkRm9yY2UgPSAnYWRkZm9yY2UnLFxuICAgIEFkZE5vRm9yY2UgPSAnYWRkbm9mb3JjZScsXG4gICAgUmVtb3ZlID0gJ3JlbW92ZScsXG4gICAgVW5TdWIgPSAndW5zdWInXG4gIH1cblxuICBleHBvcnQgZW51bSBJbXBvcnRMaXN0QWN0aW9uIHtcbiAgICBBZGRGb3JjZSA9ICdhZGRmb3JjZScsXG4gICAgQWRkTm9Gb3JjZSA9ICdhZGRub2ZvcmNlJyxcbiAgICBVblN1YiA9ICd1bnN1YicsXG4gICAgRHVwbGljYXRlT3ZlcnJpZGUgPSAnZHVwbGljYXRlLW92ZXJyaWRlJyxcbiAgICBEdXBsaWNhdGVOb092ZXJyaWRlID0gJ2R1cGxpY2F0ZS1uby1vdmVycmlkZSdcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEltcG9ydENTVk1ldGhvZCB7XG4gICAgQWRkRm9yY2UgPSAnYWRkZm9yY2UnLFxuICAgIEFkZE5vRm9yY2UgPSAnYWRkbm9mb3JjZScsXG4gICAgUmVtb3ZlID0gJ3JlbW92ZScsXG4gICAgVW5TdWIgPSAndW5zdWInLFxuICAgIEV4Y2x1ZGVNYXJrZXRpbmcgPSAnZXhjbHVkZW1hcmtldGluZycsXG4gICAgSW5jbHVkZU1hcmtldGluZyA9ICdpbmNsdWRlbWFya2V0aW5nJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gQ1NWSW1wb3J0U3RhdHVzIHtcbiAgICBVcGxvYWQgPSAnVXBsb2FkJyxcbiAgICBDb21wbGV0ZWQgPSAnQ29tcGxldGVkJyxcbiAgICBBYm9ydCA9ICdBYm9ydCcsXG4gIH1cblxuICBleHBvcnQgZW51bSBKb2JTdGF0dXMge1xuICAgIENvbXBsZXRlZCA9ICdDb21wbGV0ZWQnLFxuICAgIEluUHJvZ3Jlc3MgPSAnSW4gUHJvZ3Jlc3MnLFxuICAgIEVycm9yID0gJ0Vycm9yJ1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBKb2Ige1xuICAgIEpvYklEOiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENTVkltcG9ydCB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBFcnJUcmVzaG9sZDogbnVtYmVyO1xuICAgIEltcG9ydE9wdGlvbnM6IHN0cmluZztcbiAgICBNZXRob2Q6IEltcG9ydENTVk1ldGhvZDtcbiAgICBBbGl2ZUF0OiBzdHJpbmc7XG4gICAgQ29udGFjdHNMaXN0SUQ6IG51bWJlcjtcbiAgICBDb3VudDogbnVtYmVyO1xuICAgIEN1cnJlbnQ6IG51bWJlcjtcbiAgICBEYXRhSUQ6IG51bWJlcjtcbiAgICBFcnJjb3VudDogbnVtYmVyO1xuICAgIEpvYkVuZDogc3RyaW5nO1xuICAgIEpvYlN0YXJ0OiBzdHJpbmc7XG4gICAgUmVxdWVzdEF0OiBzdHJpbmc7XG4gICAgU3RhdHVzOiBDU1ZJbXBvcnRTdGF0dXM7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENvbnRhY3RMaXN0IHtcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgICBBY3Rpb246IE1hbmFnZUNvbnRhY3RzQWN0aW9uO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0TWFuYWdlTWFueUNvbnRhY3RzIHtcbiAgICBDb250YWN0c0xpc3RzOiBDb250YWN0TGlzdFtdO1xuICAgIENvdW50OiBudW1iZXI7XG4gICAgRXJyb3I6IHN0cmluZztcbiAgICBFcnJvckZpbGU6IHN0cmluZztcbiAgICBKb2JFbmQ6IHN0cmluZztcbiAgICBKb2JTdGFydDogc3RyaW5nO1xuICAgIFN0YXR1czogSm9iU3RhdHVzO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0c0xpc3RJbXBvcnRMaXN0IHtcbiAgICBKb2JJRDogbnVtYmVyO1xuICAgIEFjdGlvbjogSW1wb3J0TGlzdEFjdGlvbjtcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBDb250YWN0Qm9keTxQcm9wZXJ0aWVzID0gQ29tbW9uLlVua25vd25SZWM+ID0ge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgTmFtZT86IHN0cmluZztcbiAgICBJc0V4Y2x1ZGVkRnJvbUNhbXBhaWducz86IGJvb2xlYW47XG4gICAgUHJvcGVydGllcz86IFByb3BlcnRpZXM7XG4gIH1cblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdE1hbmFnZU1hbnlDb250YWN0c0JvZHk8UHJvcGVydGllcyA9IENvbW1vbi5Vbmtub3duUmVjPiA9IHtcbiAgICBDb250YWN0czogQXJyYXk8Q29udGFjdEJvZHk8UHJvcGVydGllcz4+O1xuICAgIENvbnRhY3RzTGlzdHM/OiBDb250YWN0TGlzdFtdO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENvbnRhY3RzTGlzdEltcG9ydExpc3RCb2R5ID0ge1xuICAgIEFjdGlvbjogSW1wb3J0TGlzdEFjdGlvbjtcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0c0xpc3RNYW5hZ2VNYW55Q29udGFjdHNCb2R5PFByb3BlcnRpZXMgPSBDb21tb24uVW5rbm93blJlYz4gPSB7XG4gICAgQWN0aW9uOiBNYW5hZ2VDb250YWN0c0FjdGlvbjtcbiAgICBDb250YWN0czogQXJyYXk8Q29udGFjdEJvZHk8UHJvcGVydGllcz4+O1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENTVkltcG9ydEJvZHkgPSB7XG4gICAgQ29udGFjdHNMaXN0SUQ6IG51bWJlcjtcbiAgICBEYXRhSUQ6IG51bWJlcjtcbiAgICBFcnJUcmVzaG9sZD86IG51bWJlcjtcbiAgICBJbXBvcnRPcHRpb25zPzogc3RyaW5nO1xuICAgIE1ldGhvZD86IEltcG9ydENTVk1ldGhvZDtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFB1dENTVkltcG9ydEJvZHkgPSBQYXJ0aWFsPFBvc3RDU1ZJbXBvcnRCb2R5PiAmIHtcbiAgICBTdGF0dXM/OiBDU1ZJbXBvcnRTdGF0dXM7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRDU1ZJbXBvcnRRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIEpvYlJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPEpvYltdPjtcbiAgdHlwZSBDU1ZJbXBvcnRSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDU1ZJbXBvcnRbXT47XG4gIHR5cGUgQ29udGFjdE1hbmFnZU1hbnlDb250YWN0c1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNbXT47XG5cbiAgZXhwb3J0IHR5cGUgUG9zdENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZSA9IEpvYlJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZSA9IENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0c0xpc3RJbXBvcnRMaXN0UmVzcG9uc2UgPSBKb2JSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0c0xpc3RJbXBvcnRMaXN0UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8Q29udGFjdHNMaXN0SW1wb3J0TGlzdFtdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdHNMaXN0TWFuYWdlTWFueUNvbnRhY3RzUmVzcG9uc2UgPSBKb2JSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0c0xpc3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZSA9IENvbnRhY3RNYW5hZ2VNYW55Q29udGFjdHNSZXNwb25zZTtcblxuICBleHBvcnQgdHlwZSBQb3N0Q1NWSW1wb3J0UmVzcG9uc2UgPSBDU1ZJbXBvcnRSZXNwb25zZVxuICBleHBvcnQgdHlwZSBQdXRDU1ZJbXBvcnRSZXNwb25zZSA9IENTVkltcG9ydFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldENTVkltcG9ydFJlc3BvbnNlID0gQ1NWSW1wb3J0UmVzcG9uc2Vcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBDb250YWN0UHJvcGVydGllcyB7XG4gIGV4cG9ydCBlbnVtIERhdGFUeXBlIHtcbiAgICBTdHIgPSAnc3RyJyxcbiAgICBJbnQgPSAnaW50JyxcbiAgICBGbG9hdCA9ICdmbG9hdCcsXG4gICAgQm9vbCA9ICdib29sJyxcbiAgICBEYXRlVGltZSA9ICdkYXRldGltZSdcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIE5hbWVTcGFjZSB7XG4gICAgU3RhdGljID0gJ3N0YXRpYycsXG4gICAgSGlzdG9yaWMgPSAnaGlzdG9yaWMnXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENvbnRhY3RQcm9wZXJ0eSB7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIFZhbHVlOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENvbnRhY3REYXRhIHtcbiAgICBJRDogbnVtYmVyO1xuICAgIENvbnRhY3RJRDogbnVtYmVyO1xuICAgIERhdGE6IENvbnRhY3RQcm9wZXJ0eVtdO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0TWV0YURhdGEge1xuICAgIElEOiBudW1iZXI7XG4gICAgRGF0YXR5cGU6IERhdGFUeXBlO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBOYW1lU3BhY2U6IE5hbWVTcGFjZTtcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdE1ldGFEYXRhQm9keSA9IHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgRGF0YXR5cGU/OiBEYXRhVHlwZTtcbiAgICBOYW1lU3BhY2U/OiBOYW1lU3BhY2U7XG4gIH1cblxuICBleHBvcnQgdHlwZSBQdXRDb250YWN0TWV0YURhdGFCb2R5ID0ge1xuICAgIE5hbWU/OiBzdHJpbmc7XG4gICAgRGF0YXR5cGU/OiBEYXRhVHlwZTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RNZXRhRGF0YVF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgRGF0YVR5cGU/OiBEYXRhVHlwZVxuICAgIE5hbWVzcGFjZT86IE5hbWVTcGFjZTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFB1dENvbnRhY3REYXRhQm9keSA9IHtcbiAgICBEYXRhOiBDb250YWN0UHJvcGVydHlbXTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3REYXRhUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBDYW1wYWlnbj86IG51bWJlcjtcbiAgICBDb250YWN0RW1haWw/OiBzdHJpbmc7XG4gICAgQ29udGFjdHNMaXN0PzogbnVtYmVyO1xuICAgIEZpZWxkcz86IHN0cmluZztcbiAgICBMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBDb250YWN0RGF0YVJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENvbnRhY3REYXRhW10+O1xuICB0eXBlIENvbnRhY3RNZXRhRGF0YVJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENvbnRhY3RNZXRhRGF0YVtdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdE1ldGFEYXRhUmVzcG9uc2UgPSBDb250YWN0TWV0YURhdGFSZXNwb25zZTtcbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdE1ldGFEYXRhUmVzcG9uc2UgPSBDb250YWN0TWV0YURhdGFSZXNwb25zZTtcbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdE1ldGFEYXRhUmVzcG9uc2UgPSBDb250YWN0TWV0YURhdGFSZXNwb25zZTtcblxuICBleHBvcnQgdHlwZSBQdXRDb250YWN0RGF0YVJlc3BvbnNlID0gQ29udGFjdERhdGFSZXNwb25zZTtcbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdERhdGFSZXNwb25zZSA9IENvbnRhY3REYXRhUmVzcG9uc2U7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ29udGFjdFN1YnNjcmlwdGlvbiB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlQ29udGFjdHM8UHJvcGVydGllcyA9IENvbW1vbi5Vbmtub3duUmVjPiB7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBBY3Rpb246IEJ1bGtDb250YWN0TWFuYWdlbWVudC5NYW5hZ2VDb250YWN0c0FjdGlvbjtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgUHJvcGVydGllczogUHJvcGVydGllcztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTGlzdFJlY2lwaWVudCB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJc1Vuc3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgICBDb250YWN0SUQ6IG51bWJlcjtcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgICBMaXN0TmFtZTogc3RyaW5nO1xuICAgIFN1YnNjcmliZWRBdDogc3RyaW5nO1xuICAgIFVuc3Vic2NyaWJlZEF0OiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIENvbnRhY3RzTGlzdCB7XG4gICAgTGlzdElEOiBudW1iZXI7XG4gICAgSXNVbnN1YjogYm9vbGVhbjtcbiAgICBTdWJzY3JpYmVkQXQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdHNMaXN0U2lnbnVwIHtcbiAgICBJRDogbnVtYmVyO1xuICAgIENvbmZpcm1BdDogbnVtYmVyO1xuICAgIENvbmZpcm1JcDogc3RyaW5nO1xuICAgIENvbnRhY3RJRDogbnVtYmVyO1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgTGlzdElEOiBudW1iZXI7XG4gICAgU2lnbnVwQXQ6IG51bWJlcjtcbiAgICBTaWdudXBJcDogc3RyaW5nO1xuICAgIFNpZ251cEtleTogc3RyaW5nO1xuICAgIFNvdXJjZUlkOiBudW1iZXI7XG4gICAgU291cmNlOiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdENvbnRhY3RNYW5hZ2VDb250YWN0c0xpc3RzQm9keSA9IHtcbiAgICBDb250YWN0c0xpc3RzOiBCdWxrQ29udGFjdE1hbmFnZW1lbnQuQ29udGFjdExpc3RbXTtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0c0xpc3RNYW5hZ2VDb250YWN0Qm9keTxQcm9wZXJ0aWVzID0gQ29tbW9uLlVua25vd25SZWM+ID0ge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgQWN0aW9uOiBCdWxrQ29udGFjdE1hbmFnZW1lbnQuTWFuYWdlQ29udGFjdHNBY3Rpb247XG4gICAgTmFtZT86IHN0cmluZztcbiAgICBQcm9wZXJ0aWVzPzogUHJvcGVydGllcztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RMaXN0UmVjaXBpZW50Qm9keSA9IHtcbiAgICBJc1Vuc3Vic2NyaWJlZD86IGJvb2xlYW47XG4gICAgQ29udGFjdElEOiBudW1iZXI7XG4gICAgQ29udGFjdEFsdD86IHN0cmluZztcbiAgICBMaXN0SUQ6IG51bWJlcjtcbiAgICBMaXN0QWx0Pzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0TGlzdFJlY2lwaWVudEJvZHkgPSB7XG4gICAgSXNVbnN1YnNjcmliZWQ/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgR2V0TGlzdFJlY2lwaWVudFF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgQmxvY2tlZD86IGJvb2xlYW47XG4gICAgQ29udGFjdD86IG51bWJlcjtcbiAgICBDb250YWN0RW1haWw/OiBzdHJpbmc7XG4gICAgQ29udGFjdHNMaXN0PzogbnVtYmVyO1xuICAgIElnbm9yZURlbGV0ZWQ/OiBib29sZWFuO1xuICAgIElzRXhjbHVkZWRGcm9tQ2FtcGFpZ25zPzogYm9vbGVhbjtcbiAgICBMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBMaXN0TmFtZT86IHN0cmluZztcbiAgICBPcGVuZWQ/OiBib29sZWFuO1xuICAgIFVuc3ViPzogYm9vbGVhbjtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RzTGlzdFNpZ251cFF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgQ29udGFjdD86IG51bWJlcjtcbiAgICBDb250YWN0c0xpc3Q/OiBudW1iZXI7XG4gICAgRG9tYWluPzogc3RyaW5nO1xuICAgIEVtYWlsPzogc3RyaW5nO1xuICAgIExvY2FsUGFydD86IHN0cmluZztcbiAgICBNYXhDb25maXJtQXQ/OiBudW1iZXI7XG4gICAgTWluQ29uZmlybUF0PzogbnVtYmVyO1xuICAgIE1heFNpZ251cEF0PzogbnVtYmVyO1xuICAgIE1pblNpZ251cEF0PzogbnVtYmVyO1xuICAgIFNpZ251cElwPzogc3RyaW5nO1xuICAgIFNvdXJjZT86IHN0cmluZztcbiAgICBTb3VyY2VJRD86IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBMaXN0UmVjaXBpZW50UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8TGlzdFJlY2lwaWVudFtdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdE1hbmFnZUNvbnRhY3RzTGlzdHNSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxcbiAgICBBcnJheTx7IENvbnRhY3RzTGlzdHM6IEJ1bGtDb250YWN0TWFuYWdlbWVudC5Db250YWN0TGlzdFtdIH0+XG4gICAgPjtcblxuICBleHBvcnQgdHlwZSBQb3N0Q29udGFjdHNMaXN0TWFuYWdlQ29udGFjdFJlc3BvbnNlPFByb3BlcnRpZXMgPSBDb21tb24uVW5rbm93blJlYz4gPVxuICAgICAgQ29tbW9uLlJlc3BvbnNlPEFycmF5PE1hbmFnZUNvbnRhY3RzPFByb3BlcnRpZXM+Pj47XG5cbiAgZXhwb3J0IHR5cGUgUG9zdExpc3RSZWNpcGllbnRSZXNwb25zZSA9IExpc3RSZWNpcGllbnRSZXNwb25zZVxuICBleHBvcnQgdHlwZSBQdXRMaXN0UmVjaXBpZW50UmVzcG9uc2UgPSBMaXN0UmVjaXBpZW50UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0TGlzdFJlY2lwaWVudFJlc3BvbnNlID0gTGlzdFJlY2lwaWVudFJlc3BvbnNlXG5cbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdEdldENvbnRhY3RzTGlzdHNSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDb250YWN0c0xpc3RbXT5cblxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0c0xpc3RTaWdudXBSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDb250YWN0c0xpc3RTaWdudXBbXT5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBDb250YWN0VmVyaWZpY2F0aW9uIHtcbiAgZXhwb3J0IGludGVyZmFjZSBWZXJpZmljYXRpb25TdW1tYXJ5PFJlc3VsdCA9IENvbW1vbi5Vbmtub3duUmVjLCBSaXNrID0gQ29tbW9uLlVua25vd25SZWM+IHtcbiAgICByZXN1bHQ6IFJlc3VsdDtcbiAgICByaXNrOiBSaXNrO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0c0xpc3RWZXJpZmljYXRpb248UmVzdWx0ID0gQ29tbW9uLlVua25vd25SZWMsIFJpc2sgPSBDb21tb24uVW5rbm93blJlYz4ge1xuICAgIEFraWQ6IG51bWJlcjtcbiAgICBDb250YWN0TGlzdElEOiBudW1iZXI7XG4gICAgQ291bnQ6IG51bWJlcjtcbiAgICBFcnJvcjogc3RyaW5nO1xuICAgIElEOiBudW1iZXI7XG4gICAgSm9iRW5kOiBzdHJpbmc7XG4gICAgSm9iU3RhcnQ6IHN0cmluZztcbiAgICBNZXRob2Q6IHN0cmluZztcbiAgICBSZXNwb25zZVVSTDogc3RyaW5nO1xuICAgIFN0YXR1czogc3RyaW5nO1xuICAgIFN1bW1hcnk6IFZlcmlmaWNhdGlvblN1bW1hcnk8UmVzdWx0LCBSaXNrPlxuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0c0xpc3RWZXJpZnlSZXNwb25zZTxSZXN1bHQgPSBDb21tb24uVW5rbm93blJlYywgUmlzayA9IENvbW1vbi5Vbmtub3duUmVjPiA9XG4gICAgQ29tbW9uLlJlc3BvbnNlPEFycmF5PENvbnRhY3RzTGlzdFZlcmlmaWNhdGlvbjxSZXN1bHQsIFJpc2s+Pj47XG59XG4iLCJpbXBvcnQgeyBDb21tb24gfSBmcm9tICcuL0NvbW1vbic7XG5cbmV4cG9ydCBuYW1lc3BhY2UgTWVzc2FnZSB7XG4gIGV4cG9ydCBlbnVtIE1lc3NhZ2VTdGF0ZSB7XG4gICAgVXNlclVua25vd24gPSAxLFxuICAgIE1haWxib3hJbmFjdGl2ZSA9IDIsXG4gICAgUXVvdGFFeGNlZWRlZCA9IDMsXG4gICAgSW52YWxpZERvbWFpbiA9IDQsXG4gICAgTm9NYWlsSG9zdCA9IDUsXG4gICAgUmVsYXlPckFjY2Vzc0RlbmllZCA9IDYsXG4gICAgU2VuZGVyQmxvY2tlZCA9IDcsXG4gICAgQ29udGVudEJsb2NrZWQgPSA4LFxuICAgIFBvbGljeUlzc3VlID0gOSxcbiAgICBTeXN0ZW1Jc3N1ZSA9IDEwLFxuICAgIFByb3RvY29sSXNzdWUgPSAxMSxcbiAgICBDb25uZWN0aW9uSXNzdWUgPSAxMixcbiAgICBHcmV5TGlzdGVkID0gMTMsXG4gICAgUHJlQmxvY2tlZCA9IDE0LFxuICAgIER1cGxpY2F0ZUluQ2FtcGFpZ24gPSAxNSxcbiAgICBTcGFtUHJlQmxvY2tlZCA9IDE2LFxuICAgIEJhZE9yRW1wdHlUZW1wbGF0ZSA9IDE3LFxuICAgIEVycm9ySW5UZW1wbGF0ZUxhbmd1YWdlID0gMTgsXG4gICAgVHlwb0ZpeCA9IDE5LFxuICAgIEJsYWNrTGlzdGVkID0gMjAsXG4gICAgU3BhbVJlcG9ydGVyID0gMjFcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEZyb21UeXBlIHtcbiAgICBUcmFuc2FjdGlvbmFsID0gMSxcbiAgICBNYXJrZXRpbmcgPSAyLFxuICAgIFVua25vd24gPSAzLFxuICB9XG5cbiAgZXhwb3J0IGVudW0gTWVzc2FnZVN0YXR1cyB7XG4gICAgUHJvY2Vzc2VkID0gMCxcbiAgICBRdWV1ZWQgPSAxLFxuICAgIFNlbnQgPSAyLFxuICAgIE9wZW5lZCA9IDMsXG4gICAgQ2xpY2tlZCA9IDQsXG4gICAgQm91bmNlID0gNSxcbiAgICBTcGFtID0gNixcbiAgICBVbnN1YiA9IDcsXG4gICAgQmxvY2tlZCA9IDgsXG4gICAgU29mdEJvdW5jZSA9IDksXG4gICAgSGFyZEJvdW5jZSA9IDEwLFxuICAgIERlZmVycmVkID0gMTEsXG4gIH1cblxuICBleHBvcnQgZW51bSBDdXJyZW50TWVzc2FnZVN0YXR1cyB7XG4gICAgVW5rbm93biA9ICd1bmtub3duJyxcbiAgICBRdWV1ZWQgPSAncXVldWVkJyxcbiAgICBTZW50ID0gJ3NlbnQnLFxuICAgIE9wZW5lZCA9ICdvcGVuZWQnLFxuICAgIENsaWNrZWQgPSAnY2xpY2tlZCcsXG4gICAgQm91bmNlID0gJ2JvdW5jZScsXG4gICAgU3BhbSA9ICdzcGFtJyxcbiAgICBVbnN1YiA9ICd1bnN1YicsXG4gICAgQmxvY2tlZCA9ICdibG9ja2VkJyxcbiAgICBIYXJkQm91bmNlZCA9ICdoYXJkYm91bmNlZCcsXG4gICAgU29mdEJvdW5jZWQgPSAnc29mdGJvdW5jZWQnLFxuICAgIERlZmVycmVkID0gJ2RlZmVycmVkJyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEV2ZW50VHlwZSB7XG4gICAgU2VudCA9ICdzZW50JyxcbiAgICBPcGVuZWQgPSAnb3BlbmVkJyxcbiAgICBDbGlja2VkID0gJ2NsaWNrZWQnLFxuICAgIEJvdW5jZWQgPSAnYm91bmNlZCcsXG4gICAgQmxvY2tlZCA9ICdibG9ja2VkJyxcbiAgICBVbnN1YiA9ICd1bnN1YicsXG4gICAgU3BhbSA9ICdzcGFtJ1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlVHJhY2tlZCB7XG4gICAgSXNDbGlja1RyYWNrZWQ6IGJvb2xlYW47XG4gICAgSXNIVE1MUGFydEluY2x1ZGVkOiBib29sZWFuO1xuICAgIElzT3BlblRyYWNrZWQ6IGJvb2xlYW47XG4gICAgSXNUZXh0UGFydEluY2x1ZGVkOiBib29sZWFuO1xuICAgIElzVW5zdWJUcmFja2VkOiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZVRyYWNrZWQge1xuICAgIElEOiBudW1iZXI7XG4gICAgQXJyaXZlZEF0OiBzdHJpbmc7XG4gICAgQXR0YWNobWVudENvdW50OiBudW1iZXI7XG4gICAgQXR0ZW1wdENvdW50OiBudW1iZXI7XG4gICAgQ2FtcGFpZ25JRDogbnVtYmVyO1xuICAgIENvbnRhY3RBbHQ6IHN0cmluZztcbiAgICBDb250YWN0SUQ6IG51bWJlcjtcbiAgICBEZWxheTogbnVtYmVyO1xuICAgIERlc3RpbmF0aW9uSUQ6IG51bWJlcjtcbiAgICBGaWx0ZXJUaW1lOiBudW1iZXI7XG4gICAgTWVzc2FnZVNpemU6IG51bWJlcjtcbiAgICBTZW5kZXJJRDogbnVtYmVyO1xuICAgIFNwYW1hc3Nhc3NpblNjb3JlOiBudW1iZXI7XG4gICAgU3BhbWFzc1J1bGVzOiBzdHJpbmc7XG4gICAgU3RhdGVJRDogTWVzc2FnZVN0YXRlO1xuICAgIFN0YXRlUGVybWFuZW50OiBib29sZWFuO1xuICAgIFN0YXR1czogQ3VycmVudE1lc3NhZ2VTdGF0dXM7XG4gICAgU3ViamVjdDogc3RyaW5nO1xuICAgIFVVSUQ6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUhpc3Rvcnkge1xuICAgIENvbW1lbnQ6IHN0cmluZztcbiAgICBFdmVudEF0OiBudW1iZXI7XG4gICAgRXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gICAgU3RhdGU6IHN0cmluZztcbiAgICBVc2VyYWdlbnQ6IHN0cmluZztcbiAgICBVc2VyYWdlbnRJRDogbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlSW5mb3JtYXRpb248UnVsZXMgPSBDb21tb24uVW5rbm93blJlYz4ge1xuICAgIElEOiBudW1iZXI7XG4gICAgQ2FtcGFpZ25JRDogbnVtYmVyO1xuICAgIENsaWNrVHJhY2tlZENvdW50OiBudW1iZXI7XG4gICAgQ29udGFjdElEOiBudW1iZXI7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgTWVzc2FnZVNpemU6IG51bWJlcjtcbiAgICBPcGVuVHJhY2tlZENvdW50OiBudW1iZXI7XG4gICAgUXVldWVkQ291bnQ6IG51bWJlcjtcbiAgICBTZW5kRW5kQXQ6IHN0cmluZztcbiAgICBTZW50Q291bnQ6IG51bWJlcjtcbiAgICBTcGFtQXNzYXNzaW5SdWxlczogUnVsZXM7XG4gICAgU3BhbUFzc2Fzc2luU2NvcmU6IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRNZXNzYWdlUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5UaW1lc3RhbXBQZXJpb2Q+ICZcbiAgICBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmXG4gIHtcbiAgICBDYW1wYWlnbj86IG51bWJlcjtcbiAgICBDb250YWN0PzogbnVtYmVyO1xuICAgIEN1c3RvbUlEPzogc3RyaW5nO1xuICAgIERlc3RpbmF0aW9uPzogbnVtYmVyO1xuICAgIEZyb21UeXBlPzogRnJvbVR5cGU7XG4gICAgTWVzc2FnZVN0YXRlPzogTWVzc2FnZVN0YXRlO1xuICAgIE1lc3NhZ2VTdGF0dXM/OiBNZXNzYWdlU3RhdHVzO1xuICAgIFBsYW5TdWJzY3JpcHRpb24/OiBudW1iZXI7XG4gICAgU2VuZGVySUQ/OiBudW1iZXI7XG4gICAgU2hvd0NvbnRhY3RBbHQ/OiBib29sZWFuO1xuICAgIFNob3dDdXN0b21JRD86IGJvb2xlYW47XG4gICAgU2hvd1N1YmplY3Q/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgR2V0TWVzc2FnZUluZm9ybWF0aW9uUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5UaW1lc3RhbXBQZXJpb2Q+ICZcbiAgICBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmXG4gIHtcbiAgICBDYW1wYWlnbklEPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdD86IG51bWJlcjtcbiAgICBDdXN0b21DYW1wYWlnbj86IHN0cmluZztcbiAgICBGcm9tPzogc3RyaW5nO1xuICAgIEZyb21Eb21haW4/OiBzdHJpbmc7XG4gICAgRnJvbUlEPzogbnVtYmVyO1xuICAgIEZyb21UeXBlPzogRnJvbVR5cGU7XG4gICAgSXNEZWxldGVkPzogYm9vbGVhbjtcbiAgICBJc05ld3NsZXR0ZXJUb29sPzogYm9vbGVhbjtcbiAgICBJc1N0YXJyZWQ/OiBib29sZWFuO1xuICAgIE1lc3NhZ2VTdGF0dXM/OiBNZXNzYWdlU3RhdHVzO1xuICAgIFBlcmlvZD86IENvbW1vbi5QZXJpb2Q7XG4gIH1cblxuICAvLyBSRVNQT05TRSBQQVJUXG4gIGV4cG9ydCB0eXBlIEdldE1lc3NhZ2VzUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8TWVzc2FnZVtdPlxuICBleHBvcnQgdHlwZSBHZXRNZXNzYWdlSGlzdG9yeVJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPE1lc3NhZ2VIaXN0b3J5W10+XG4gIGV4cG9ydCB0eXBlIEdldE1lc3NhZ2VJbmZvcm1hdGlvblJlc3BvbnNlPFJ1bGVzID0gQ29tbW9uLlVua25vd25SZWM+ID1cbiAgICAgIENvbW1vbi5SZXNwb25zZTxBcnJheTxNZXNzYWdlSW5mb3JtYXRpb248UnVsZXM+Pj5cbn1cbiIsImltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vQ29tbW9uJztcblxuZXhwb3J0IG5hbWVzcGFjZSBTZWdtZW50YXRpb24ge1xuICBleHBvcnQgZW51bSBTZWdtZW50U3RhdHVzIHtcbiAgICBVc2VkID0gJ3VzZWQnLFxuICAgIFVuVXNlZCA9ICd1bnVzZWQnLFxuICAgIERlbGV0ZWQgPSAnZGVsZXRlZCdcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdEZpbHRlciB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIEV4cHJlc3Npb246IHN0cmluZztcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgU3RhdHVzOiBTZWdtZW50U3RhdHVzO1xuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0RmlsdGVyQm9keSA9IHtcbiAgICBOYW1lOiBzdHJpbmc7XG4gICAgRXhwcmVzc2lvbjogc3RyaW5nO1xuICAgIERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0Q29udGFjdEZpbHRlckJvZHkgPSBQYXJ0aWFsPFBvc3RDb250YWN0RmlsdGVyQm9keT4gJiB7XG4gICAgU3RhdHVzPzogU2VnbWVudFN0YXR1cztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RGaWx0ZXJRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIFNob3dEZWxldGVkPzogYm9vbGVhbjtcbiAgICBTdGF0dXM/OiBTZWdtZW50U3RhdHVzO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIENvbnRhY3RGaWx0ZXJSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxDb250YWN0RmlsdGVyW10+O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RDb250YWN0RmlsdGVyUmVzcG9uc2UgPSBDb250YWN0RmlsdGVyUmVzcG9uc2U7XG4gIGV4cG9ydCB0eXBlIFB1dENvbnRhY3RGaWx0ZXJSZXNwb25zZSA9IENvbnRhY3RGaWx0ZXJSZXNwb25zZTtcbiAgZXhwb3J0IHR5cGUgR2V0Q29udGFjdEZpbHRlclJlc3BvbnNlID0gQ29udGFjdEZpbHRlclJlc3BvbnNlO1xufVxuIiwiaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi9Db21tb24nO1xuXG5leHBvcnQgbmFtZXNwYWNlIFNlbmRFbWFpbFYzIHtcbiAgZXhwb3J0IHR5cGUgTWpUZW1wbGF0ZUVycm9yRGVsaXZlciA9ICcwJyB8ICdkZWxpdmVyJ1xuICBleHBvcnQgdHlwZSBNakRlZHVwbGljYXRlQ2FtcGFpZ24gPSAwIHwgMTtcbiAgZXhwb3J0IHR5cGUgTWpUcmFja09wZW4gPSAwIHwgMSB8IDI7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZWNpcGllbnQge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgTmFtZT86IHN0cmluZ1xuICAgIFZhcnM/OiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnQge1xuICAgIEZpbGVuYW1lOiBzdHJpbmc7XG4gICAgQ29udGVudDogc3RyaW5nO1xuICAgICdDb250ZW50LXR5cGUnOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgdHlwZSBCb2R5TWogPSB7XG4gICAgJ01qLVRlbXBsYXRlSUQnPzogbnVtYmVyO1xuICAgICdNai1UZW1wbGF0ZUxhbmd1YWdlJz86IGJvb2xlYW47XG4gICAgJ01qLVRlbXBsYXRlRXJyb3JSZXBvcnRpbmcnPzogc3RyaW5nO1xuICAgICdNai1UZW1wbGF0ZUVycm9yRGVsaXZlcic/OiBNalRlbXBsYXRlRXJyb3JEZWxpdmVyO1xuICAgICdNai1wcmlvJz86IG51bWJlcjtcbiAgICAnTWotY2FtcGFpZ24nPzogc3RyaW5nO1xuICAgICdNai1kZWR1cGxpY2F0ZWNhbXBhaWduJz86IE1qRGVkdXBsaWNhdGVDYW1wYWlnbjtcbiAgICAnTWotdHJhY2tvcGVuJz86IE1qVHJhY2tPcGVuO1xuICAgICdNai1DdXN0b21JRCc/OiBzdHJpbmc7XG4gICAgJ01qLUV2ZW50UGF5bG9hZCc/OiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgQm9keTxcbiAgICBIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWMsXG4gICAgVmFycyA9IENvbW1vbi5Vbmtub3duUmVjXG4gICAgPiA9IEJvZHlNaiAmIHtcbiAgICBGcm9tRW1haWw/OiBzdHJpbmc7XG4gICAgRnJvbU5hbWU/OiBzdHJpbmc7XG4gICAgUmVjaXBpZW50cz86IFJlY2lwaWVudFtdO1xuICAgIFNlbmRlcj86IGJvb2xlYW47XG4gICAgU3ViamVjdD86IHN0cmluZztcbiAgICAnVGV4dC1wYXJ0Jz86IHN0cmluZztcbiAgICAnSHRtbC1wYXJ0Jz86IHN0cmluZztcbiAgICBUbz86IHN0cmluZztcbiAgICBDYz86IHN0cmluZztcbiAgICBCY2M/OiBzdHJpbmc7XG4gICAgQXR0YWNobWVudHM/OiBBdHRhY2htZW50W107XG4gICAgSW5saW5lX2F0dGFjaG1lbnRzPzogQXR0YWNobWVudFtdO1xuICAgIEhlYWRlcnM/OiBIZWFkZXJzO1xuICAgIFZhcnM/OiBWYXJzO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICBleHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlU2VudCB7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBNZXNzYWdlSUQ6IG51bWJlcjtcbiAgICBNZXNzYWdlVVVJRDogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUmVzcG9uc2UgPSB7XG4gICAgU2VudDogUmVzcG9uc2VTZW50W107XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBTZW5kRW1haWxWM18xIHtcbiAgZXhwb3J0IGVudW0gVHJhY2tPcGVucyB7XG4gICAgQWNjb3VudERlZmF1bHQgPSAnYWNjb3VudF9kZWZhdWx0JyxcbiAgICBEaXNhYmxlZCA9ICdkaXNhYmxlZCcsXG4gICAgRW5hYmxlZCA9ICdlbmFibGVkJyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIFRyYWNrQ2xpY2tzIHtcbiAgICBBY2NvdW50RGVmYXVsdCA9ICdhY2NvdW50X2RlZmF1bHQnLFxuICAgIERpc2FibGVkID0gJ2Rpc2FibGVkJyxcbiAgICBFbmFibGVkID0gJ2VuYWJsZWQnLFxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBFbWFpbEFkZHJlc3NUbyB7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBOYW1lPzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBBdHRhY2htZW50IHtcbiAgICBGaWxlbmFtZTogc3RyaW5nO1xuICAgIENvbnRlbnRUeXBlOiBzdHJpbmc7XG4gICAgQmFzZTY0Q29udGVudDogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBJbmxpbmVkQXR0YWNobWVudCBleHRlbmRzIEF0dGFjaG1lbnQge1xuICAgIENvbnRlbnRJRD86IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZTxIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWMsIFZhcmlhYmxlcyA9IENvbW1vbi5Vbmtub3duUmVjPiB7XG4gICAgRnJvbTogRW1haWxBZGRyZXNzVG87XG4gICAgU2VuZGVyPzogRW1haWxBZGRyZXNzVG87XG4gICAgVG86IEVtYWlsQWRkcmVzc1RvW107XG4gICAgQ2M/OiBFbWFpbEFkZHJlc3NUb1tdO1xuICAgIEJjYz86IEVtYWlsQWRkcmVzc1RvW107XG4gICAgUmVwbHlUbz86IEVtYWlsQWRkcmVzc1RvO1xuICAgIFN1YmplY3Q/OiBzdHJpbmc7XG4gICAgVGV4dFBhcnQ/OiBzdHJpbmc7XG4gICAgSFRNTFBhcnQ/OiBzdHJpbmc7XG4gICAgVGVtcGxhdGVJRD86IG51bWJlcjtcbiAgICBUZW1wbGF0ZUxhbmd1YWdlPzogYm9vbGVhbjtcbiAgICBUZW1wbGF0ZUVycm9yUmVwb3J0aW5nPzogRW1haWxBZGRyZXNzVG87XG4gICAgVGVtcGxhdGVFcnJvckRlbGl2ZXI/OiBib29sZWFuO1xuICAgIEF0dGFjaG1lbnRzPzogQXR0YWNobWVudFtdO1xuICAgIElubGluZWRBdHRhY2htZW50cz86IElubGluZWRBdHRhY2htZW50W107XG4gICAgUHJpb3JpdHk/OiBudW1iZXI7XG4gICAgQ3VzdG9tQ2FtcGFpZ24/OiBzdHJpbmc7XG4gICAgRGVkdXBsaWNhdGVDYW1wYWlnbj86IGJvb2xlYW47XG4gICAgVHJhY2tPcGVucz86IFRyYWNrT3BlbnM7XG4gICAgVHJhY2tDbGlja3M/OiBUcmFja0NsaWNrcztcbiAgICBDdXN0b21JRD86IHN0cmluZztcbiAgICBFdmVudFBheWxvYWQ/OiBzdHJpbmc7XG4gICAgVVJMVGFncz86IHN0cmluZztcbiAgICBIZWFkZXJzPzogSGVhZGVycztcbiAgICBWYXJpYWJsZXM/OiBWYXJpYWJsZXM7XG4gIH1cblxuICBleHBvcnQgZW51bSBSZXNwb25zZVN0YXR1cyB7XG4gICAgU3VjY2VzcyA9ICdzdWNjZXNzJyxcbiAgICBFcnJvciA9ICdlcnJvcicsXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlRXJyb3Ige1xuICAgIEVycm9ySWRlbnRpZmllcjogc3RyaW5nO1xuICAgIEVycm9yQ29kZTogc3RyaW5nO1xuICAgIFN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBFcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgICBFcnJvclJlbGF0ZWRUbzogQXJyYXk8c3RyaW5nPjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2VFbWFpbEFkZHJlc3NUbyB7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBNZXNzYWdlVVVJRDogc3RyaW5nO1xuICAgIE1lc3NhZ2VJRDogbnVtYmVyO1xuICAgIE1lc3NhZ2VIcmVmOiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgQm9keTxcbiAgICBIZWFkZXJzID0gQ29tbW9uLlVua25vd25SZWMsXG4gICAgVmFyaWFibGVzID0gQ29tbW9uLlVua25vd25SZWMsXG4gICAgR2xvYmFscyA9IENvbW1vbi5Vbmtub3duUmVjLFxuICAgID4gPSB7XG4gICAgTWVzc2FnZXM6IEFycmF5PE1lc3NhZ2U8SGVhZGVycywgVmFyaWFibGVzPj47XG4gICAgU2FuZGJveE1vZGU/OiBib29sZWFuO1xuICAgIEFkdmFuY2VFcnJvckhhbmRsaW5nPzogYm9vbGVhbjtcbiAgICBHbG9iYWxzPzogR2xvYmFscztcbiAgfSB8IHtcbiAgICBNZXNzYWdlczogQXJyYXk8T21pdDxNZXNzYWdlPEhlYWRlcnMsIFZhcmlhYmxlcz4sICdGcm9tJz4gJiB7IEZyb20/OiBzdHJpbmcgfT47XG4gICAgU2FuZGJveE1vZGU/OiBib29sZWFuO1xuICAgIEFkdmFuY2VFcnJvckhhbmRsaW5nPzogYm9vbGVhbjtcbiAgICBHbG9iYWxzOiB7XG4gICAgICBGcm9tOiBFbWFpbEFkZHJlc3NUbztcbiAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfTtcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgZXhwb3J0IGludGVyZmFjZSBSZXNwb25zZU1lc3NhZ2Uge1xuICAgIFN0YXR1czogUmVzcG9uc2VTdGF0dXM7XG4gICAgRXJyb3JzOiBSZXNwb25zZUVycm9yW107XG4gICAgQ3VzdG9tSUQ6IHN0cmluZztcbiAgICBUbzogUmVzcG9uc2VFbWFpbEFkZHJlc3NUb1tdO1xuICAgIENjOiBSZXNwb25zZUVtYWlsQWRkcmVzc1RvW107XG4gICAgQmNjOiBSZXNwb25zZUVtYWlsQWRkcmVzc1RvW107XG4gIH1cblxuICBleHBvcnQgdHlwZSBSZXNwb25zZSA9IHtcbiAgICBNZXNzYWdlczogUmVzcG9uc2VNZXNzYWdlW107XG4gIH1cbn1cbiIsImltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vQ29tbW9uJztcblxuZXhwb3J0IG5hbWVzcGFjZSBTZW5kZXIge1xuICBleHBvcnQgZW51bSBFbWFpbFR5cGUge1xuICAgIFRyYW5zYWN0aW9uYWwgPSAndHJhbnNhY3Rpb25hbCcsXG4gICAgQnVsayA9ICdidWxrJyxcbiAgICBVbmtub3duID0gJ3Vua25vd24nXG4gIH1cblxuICBleHBvcnQgZW51bSBTZW5kZXJTdGF0dXMge1xuICAgIEluYWN0aXZlID0gJ0luYWN0aXZlJyxcbiAgICBBY3RpdmUgPSAnQWN0aXZlJyxcbiAgICBEZWxldGVkID0gJ0RlbGV0ZWQnLFxuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBTZW5kZXIge1xuICAgIElEOiBudW1iZXI7XG4gICAgRW1haWxUeXBlOiBFbWFpbFR5cGU7XG4gICAgSXNEZWZhdWx0U2VuZGVyOiBib29sZWFuO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBDcmVhdGVkQXQ6IHN0cmluZztcbiAgICBETlNJRDogbnVtYmVyO1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgRmlsZW5hbWU6IHN0cmluZztcbiAgICBTdGF0dXM6IFNlbmRlclN0YXR1cztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgU2VuZGVyVmFsaWRhdGUge1xuICAgIFZhbGlkYXRpb25NZXRob2Q6IHN0cmluZztcbiAgICBFcnJvcnM6IHN0cmluZztcbiAgICBHbG9iYWxFcnJvcjogc3RyaW5nO1xuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG4gIGV4cG9ydCB0eXBlIFBvc3RTZW5kZXJCb2R5ID0ge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgRW1haWxUeXBlPzogRW1haWxUeXBlO1xuICAgIElzRGVmYXVsdFNlbmRlcj86IGJvb2xlYW47XG4gICAgTmFtZT86IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFB1dFNlbmRlckJvZHkgPSBPbWl0PFBvc3RTZW5kZXJCb2R5LCAnRW1haWwnPlxuXG4gIGV4cG9ydCB0eXBlIEdldFNlbmRlclF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJiB7XG4gICAgRG5zSUQ/OiBudW1iZXI7XG4gICAgRG9tYWluPzogc3RyaW5nO1xuICAgIEVtYWlsPzogc3RyaW5nO1xuICAgIElzRG9tYWluU2VuZGVyPzogYm9vbGVhbjtcbiAgICBMb2NhbFBhcnQ/OiBzdHJpbmc7XG4gICAgU2hvd0RlbGV0ZWQ/OiBib29sZWFuO1xuICAgIFN0YXR1cz86IFNlbmRlclN0YXR1cztcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBTZW5kZXJSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxTZW5kZXJbXT47XG5cbiAgZXhwb3J0IHR5cGUgUG9zdFNlbmRlclJlc3BvbnNlID0gU2VuZGVyUmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0U2VuZGVyUmVzcG9uc2UgPSBTZW5kZXJSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRTZW5kZXJSZXNwb25zZSA9IFNlbmRlclJlc3BvbnNlXG5cbiAgZXhwb3J0IHR5cGUgUG9zdFNlbmRlclZhbGlkYXRlUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8U2VuZGVyVmFsaWRhdGVbXT47XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgTWV0YXNlbmRlciB7XG4gIGV4cG9ydCBpbnRlcmZhY2UgTWV0YVNlbmRlciB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIENyZWF0ZWRBdDogc3RyaW5nO1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgRmlsZW5hbWU6IHN0cmluZztcbiAgICBJc0VuYWJsZWQ6IGJvb2xlYW47XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdE1ldGFTZW5kZXJCb2R5ID0ge1xuICAgIEVtYWlsOiBzdHJpbmc7XG4gICAgRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgdHlwZSBQdXRNZXRhU2VuZGVyQm9keSA9IE9taXQ8UG9zdE1ldGFTZW5kZXJCb2R5LCAnRW1haWwnPlxuXG4gIGV4cG9ydCB0eXBlIEdldE1ldGFTZW5kZXJRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIEROUz86IG51bWJlcjtcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgdHlwZSBNZXRhU2VuZGVyUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8TWV0YVNlbmRlcltdPjtcblxuICBleHBvcnQgdHlwZSBQb3N0TWV0YVNlbmRlclJlc3BvbnNlID0gTWV0YVNlbmRlclJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFB1dE1ldGFTZW5kZXJSZXNwb25zZSA9IE1ldGFTZW5kZXJSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRNZXRhU2VuZGVyUmVzcG9uc2UgPSBNZXRhU2VuZGVyUmVzcG9uc2Vcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBETlMge1xuICBleHBvcnQgZW51bSBES0lNQ29uZmlndXJhdGlvbkNoZWNrU3RhdHVzIHtcbiAgICBPSyA9ICdPSycsXG4gICAgRXJyb3IgPSAnRXJyb3InLFxuICAgIE5vdENoZWNrZWQgPSAnTm90IGNoZWNrZWQnXG4gIH1cblxuICBleHBvcnQgZW51bSBES0lNQ29uZmlndXJhdGlvblN0YXR1cyB7XG4gICAgT0sgPSAnT0snLFxuICAgIEVycm9yID0gJ0Vycm9yJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gU1BGQ29uZmlndXJhdGlvbkNoZWNrU3RhdHVzIHtcbiAgICBPSyA9ICdPSycsXG4gICAgRXJyb3IgPSAnRXJyb3InLFxuICAgIE5vdENoZWNrZWQgPSAnTm90IGNoZWNrZWQnLFxuICAgIE5vdEZvdW5kID0gJ05vdCBmb3VuZCcsXG4gIH1cblxuICBleHBvcnQgZW51bSBTUEZDb25maWd1cmF0aW9uU3RhdHVzIHtcbiAgICBPSyA9ICdPSycsXG4gICAgRXJyb3IgPSAnRXJyb3InXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEROUyB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBES0lNUmVjb3JkTmFtZTogc3RyaW5nO1xuICAgIERLSU1SZWNvcmRWYWx1ZTogc3RyaW5nO1xuICAgIERLSU1TdGF0dXM6IERLSU1Db25maWd1cmF0aW9uQ2hlY2tTdGF0dXM7XG4gICAgRG9tYWluOiBzdHJpbmc7XG4gICAgSXNDaGVja0luUHJvZ3Jlc3M6IGJvb2xlYW47XG4gICAgTGFzdENoZWNrQXQ6IHN0cmluZztcbiAgICBPd25lclNoaXBUb2tlbjogc3RyaW5nO1xuICAgIE93bmVyU2hpcFRva2VuUmVjb3JkTmFtZTogc3RyaW5nO1xuICAgIFNQRlJlY29yZFZhbHVlOiBzdHJpbmc7XG4gICAgU1BGU3RhdHVzOiBTUEZDb25maWd1cmF0aW9uQ2hlY2tTdGF0dXM7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEROU0NoZWNrIHtcbiAgICBES0lNRXJyb3JzOiBzdHJpbmc7XG4gICAgREtJTVJlY29yZEN1cnJlbnRWYWx1ZTogc3RyaW5nO1xuICAgIERLSU1TdGF0dXM6IERLSU1Db25maWd1cmF0aW9uU3RhdHVzO1xuICAgIFNQRkVycm9yczogc3RyaW5nO1xuICAgIFNQRlJlY29yZEN1cnJlbnRWYWx1ZTogc3RyaW5nO1xuICAgIFNQRlN0YXR1czogU1BGQ29uZmlndXJhdGlvblN0YXR1cztcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRETlNRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIElzQ2hlY2tJblByb2dyZXNzPzogYm9vbGVhbjtcbiAgICBJc1NlbmRlcklkZW50aWZpZWQ/OiBib29sZWFuO1xuICAgIElzWWFob29GQkw/OiBib29sZWFuO1xuICAgIE1heExhc3RDaGVja0F0Pzogc3RyaW5nO1xuICAgIE1pbkxhc3RDaGVja0F0Pzogc3RyaW5nO1xuICAgIFNQRlN0YXR1cz86IFNQRkNvbmZpZ3VyYXRpb25DaGVja1N0YXR1cztcbiAgfVxuXG4gIC8vIFJFU1BPTlNFIFBBUlRcbiAgZXhwb3J0IHR5cGUgR2V0RE5TUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8RE5TW10+O1xuICBleHBvcnQgdHlwZSBQb3N0RE5TQ2hlY2tSZXNwb25zZSA9IENvbW1vbi5SZXNwb25zZTxETlNDaGVja1tdPjtcbn1cbiIsImltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vQ29tbW9uJztcblxuZXhwb3J0IG5hbWVzcGFjZSBBUElLZXlDb25maWd1cmF0aW9uIHtcbiAgZXhwb3J0IGVudW0gUnVuTGV2ZWwge1xuICAgIE5vcm1hbCA9ICdOb3JtYWwnLFxuICAgIFNvZnRMb2NrID0gJ1NvZnRsb2NrJyxcbiAgICBIYXJkTG9jayA9ICdIYXJkbG9jaydcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXBpS2V5IHtcbiAgICBJRDogbnVtYmVyO1xuICAgIEFDTDogc3RyaW5nO1xuICAgIElzQWN0aXZlOiBib29sZWFuO1xuICAgIEFQSUtleTogc3RyaW5nO1xuICAgIENyZWF0ZWRBdDogc3RyaW5nO1xuICAgIElzTWFzdGVyOiBib29sZWFuO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBRdWFyYW50aW5lVmFsdWU6IG51bWJlcjtcbiAgICBSdW5sZXZlbDogUnVuTGV2ZWw7XG4gICAgU2VjcmV0S2V5OiBzdHJpbmc7XG4gICAgVHJhY2tIb3N0OiBzdHJpbmc7XG4gICAgVXNlcklEOiBudW1iZXI7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdEFwaUtleUJvZHkgPSB7XG4gICAgTmFtZTogc3RyaW5nO1xuICAgIEFDTD86IHN0cmluZztcbiAgICBJc0FjdGl2ZT86IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgdHlwZSBQdXRBcGlLZXlCb2R5ID0gUGFydGlhbDxQb3N0QXBpS2V5Qm9keT5cblxuICBleHBvcnQgdHlwZSBHZXRBcGlLZXlRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIEFQSUtleT86IHN0cmluZztcbiAgICBJc0FjdGl2ZT86IGJvb2xlYW47XG4gICAgSXNNYXN0ZXI/OiBib29sZWFuO1xuICAgIE5hbWU/OiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVNQT05TRSBQQVJUXG4gIHR5cGUgQXBpS2V5UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8QXBpS2V5W10+O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RBcGlLZXlSZXNwb25zZSA9IEFwaUtleVJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFB1dEFwaUtleVJlc3BvbnNlID0gQXBpS2V5UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0QXBpS2V5UmVzcG9uc2UgPUFwaUtleVJlc3BvbnNlXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQWNjb3VudFNldHRpbmcge1xuICBleHBvcnQgaW50ZXJmYWNlIE15UHJvZmlsZSB7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBBZGRyZXNzQ2l0eTogc3RyaW5nO1xuICAgIEFkZHJlc3NDb3VudHJ5OiBzdHJpbmc7XG4gICAgQWRkcmVzc1Bvc3RhbENvZGU6IHN0cmluZztcbiAgICBBZGRyZXNzU3RhdGU6IHN0cmluZztcbiAgICBBZGRyZXNzU3RyZWV0OiBzdHJpbmc7XG4gICAgQmlsbGluZ0VtYWlsOiBzdHJpbmc7XG4gICAgQmlydGhkYXlBdDogc3RyaW5nO1xuICAgIENvbXBhbnlOYW1lOiBzdHJpbmc7XG4gICAgQ29tcGFueU51bU9mRW1wbG95ZWVzOiBzdHJpbmc7XG4gICAgQ29udGFjdFBob25lOiBzdHJpbmc7XG4gICAgRXN0aW1hdGVkVm9sdW1lOiBudW1iZXI7XG4gICAgRmVhdHVyZXM6IHN0cmluZztcbiAgICBGaXJzdG5hbWU6IHN0cmluZztcbiAgICBJbmR1c3RyeTogbnVtYmVyO1xuICAgIEpvYlRpdGxlOiBzdHJpbmc7XG4gICAgTGFzdG5hbWU6IHN0cmluZztcbiAgICBWQVROdW1iZXI6IHN0cmluZztcbiAgICBXZWJzaXRlOiBzdHJpbmc7XG4gICAgVkFUOiBudW1iZXI7XG4gICAgVXNlcklEOiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFVzZXIge1xuICAgIElEOiBudW1iZXI7XG4gICAgQUNMOiBzdHJpbmc7XG4gICAgRW1haWw6IHN0cmluZztcbiAgICBMYXN0TG9naW5BdDogc3RyaW5nO1xuICAgIExvY2FsZTogc3RyaW5nO1xuICAgIFRpbWV6b25lOiBzdHJpbmc7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgRmlyc3RJcDogc3RyaW5nO1xuICAgIExhc3RJcDogc3RyaW5nO1xuICAgIE1heEFsbG93ZWRBUElLZXlzOiBudW1iZXI7XG4gICAgVXNlcm5hbWU6IHN0cmluZztcbiAgICBXYXJuZWRSYXRlbGltaXRBdDogc3RyaW5nO1xuICB9XG5cbiAgLy8gUkVRVUVTVCBQQVJUXG4gIGV4cG9ydCB0eXBlIFB1dE15UHJvZmlsZUJvZHkgPSBQYXJ0aWFsPE9taXQ8TXlQcm9maWxlLCAnSUQnIHwgJ1ZBVCcgfCAnVXNlcklEJz4+XG5cbiAgZXhwb3J0IHR5cGUgUHV0VXNlckJvZHkgPVxuICAgIFBhcnRpYWw8T21pdDxVc2VyLCAnSUQnIHwgJ0NyZWF0ZWRBdCcgfCAnRmlyc3RJcCcgfCAnTWF4QWxsb3dlZEFQSUtleXMnIHwgJ1dhcm5lZFJhdGVsaW1pdEF0Jz4+XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIE15UHJvZmlsZVJlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPE15UHJvZmlsZVtdPjtcbiAgdHlwZSBVc2VyUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8VXNlcltdPjtcblxuICBleHBvcnQgdHlwZSBQdXRNeVByb2ZpbGVSZXNwb25zZSA9IE15UHJvZmlsZVJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldE15UHJvZmlsZVJlc3BvbnNlID0gTXlQcm9maWxlUmVzcG9uc2VcblxuICBleHBvcnQgdHlwZSBQdXRVc2VyUmVzcG9uc2UgPSBVc2VyUmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0VXNlclJlc3BvbnNlID0gVXNlclJlc3BvbnNlXG59XG4iLCJpbXBvcnQgeyBDb21tb24gfSBmcm9tICcuL0NvbW1vbic7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnLi9NZXNzYWdlJztcblxuZXhwb3J0IG5hbWVzcGFjZSBTdGF0aXN0aWMge1xuICBleHBvcnQgZW51bSBDYW1wYWlnbk92ZXJ2aWV3SURUeXBlIHtcbiAgICBTZW50Q2FtcGFpZ24gPSAnQ2FtcGFpZ24nLFxuICAgIEFCVGVzdGluZyA9ICdBWCcsXG4gICAgRHJhZnQgPSAnTkwnXG4gIH1cblxuICBleHBvcnQgZW51bSBDYW1wYWlnbk92ZXJ2aWV3RWRpdE1vZGUge1xuICAgIFRvb2wgPSAndG9vbCcsXG4gICAgSFRNTCA9ICdodG1sJyxcbiAgICBUb29sMiA9ICd0b29sMicsXG4gICAgSFRNTDIgPSAnaHRtbDInLFxuICAgIE1KTUwgPSAnbWptbCcsXG4gIH1cblxuICBleHBvcnQgZW51bSBDYW1wYWlnbk92ZXJ2aWV3RWRpdFR5cGUge1xuICAgIEZ1bGwgPSAnZnVsbCcsXG4gICAgVW5rbm93biA9ICd1bmtub3duJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gQ291bnRlclNvdXJjZSB7XG4gICAgQ2FtcGFpZ24gPSAnQ2FtcGFpZ24nLFxuICAgIEFQSUtleSA9ICdBUElLZXknLFxuICAgIExpc3QgPSAnTGlzdCcsXG4gICAgU2VuZGVyID0gJ1NlbmRlcidcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIENvdW50ZXJSZXNvbHV0aW9uIHtcbiAgICBIaWdoZXN0ID0gJ0hpZ2hlc3QnLFxuICAgIEhvdXIgPSAnSG91cicsXG4gICAgRGF5ID0gJ0RheScsXG4gICAgTGlmZXRpbWUgPSAnTGlmZXRpbWUnXG4gIH1cblxuICBleHBvcnQgZW51bSBDb3VudGVyVGltaW5nIHtcbiAgICBNZXNzYWdlID0gJ01lc3NhZ2UnLFxuICAgIEV2ZW50ID0gJ0V2ZW50J1xuICB9XG5cbiAgZXhwb3J0IGVudW0gRW1haWxFdmVudCB7XG4gICAgT3BlbiA9ICdvcGVuJyxcbiAgICBDbGljayA9ICdjbGljaydcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQ2FtcGFpZ25PdmVydmlldyB7XG4gICAgQ2xpY2tlZENvdW50OiBudW1iZXI7XG4gICAgRGVsaXZlcmVkQ291bnQ6IG51bWJlcjtcbiAgICBFZGl0TW9kZTogQ2FtcGFpZ25PdmVydmlld0VkaXRNb2RlO1xuICAgIEVkaXRUeXBlOiBDYW1wYWlnbk92ZXJ2aWV3RWRpdFR5cGU7XG4gICAgSUQ6IG51bWJlcjtcbiAgICBJRFR5cGU6IENhbXBhaWduT3ZlcnZpZXdJRFR5cGU7XG4gICAgT3BlbmVkQ291bnQ6IG51bWJlcjtcbiAgICBQcm9jZXNzZWRDb3VudDogbnVtYmVyO1xuICAgIFNlbmRUaW1lU3RhcnQ6IG51bWJlcjtcbiAgICBTdGFycmVkOiBib29sZWFuO1xuICAgIFN1YmplY3Q6IHN0cmluZztcbiAgICBUaXRsZTogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBDb250YWN0U3RhdGlzdGljIHtcbiAgICBCbG9ja2VkQ291bnQ6IG51bWJlcjtcbiAgICBCb3VuY2VkQ291bnQ6IG51bWJlcjtcbiAgICBDbGlja2VkQ291bnQ6IG51bWJlcjtcbiAgICBDb250YWN0SUQ6IG51bWJlcjtcbiAgICBEZWZlcnJlZENvdW50OiBudW1iZXI7XG4gICAgRGVsaXZlcmVkQ291bnQ6IG51bWJlcjtcbiAgICBIYXJkYm91bmNlZENvdW50OiBudW1iZXI7XG4gICAgTGFzdEFjdGl2aXR5QXQ6IHN0cmluZztcbiAgICBNYXJrZXRpbmdDb250YWN0czogbnVtYmVyO1xuICAgIE9wZW5lZENvdW50OiBudW1iZXI7XG4gICAgUHJvY2Vzc2VkQ291bnQ6IG51bWJlcjtcbiAgICBRdWV1ZWRDb3VudDogbnVtYmVyO1xuICAgIFNvZnRib3VuY2VkQ291bnQ6IG51bWJlcjtcbiAgICBTcGFtQ29tcGxhaW50Q291bnQ6IG51bWJlcjtcbiAgICBVbnN1YnNjcmliZWRDb3VudDogbnVtYmVyO1xuICAgIFVzZXJNYXJrZXRpbmdDb250YWN0czogbnVtYmVyO1xuICAgIFdvcmtGbG93RXhpdGVkQ291bnQ6IG51bWJlcjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgR0VPU3RhdGlzdGljIHtcbiAgICBDbGlja2VkQ291bnQ6IG51bWJlcjtcbiAgICBPcGVuZWRDb3VudDogbnVtYmVyO1xuICAgIENvdW50cnk6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTGlzdFJlY2lwaWVudFN0YXRpc3RpYzxEYXRhID0gQXJyYXk8dW5rbm93bj4+IHtcbiAgICBCbG9ja2VkQ291bnQ6IG51bWJlcjtcbiAgICBCb3VuY2VkQ291bnQ6IG51bWJlcjtcbiAgICBDbGlja2VkQ291bnQ6IG51bWJlcjtcbiAgICBEYXRhOiBEYXRhO1xuICAgIERlZmVycmVkQ291bnQ6IG51bWJlcjtcbiAgICBEZWxpdmVyZWRDb3VudDogbnVtYmVyO1xuICAgIEhhcmRib3VuY2VkQ291bnQ6IG51bWJlcjtcbiAgICBMYXN0QWN0aXZpdHlBdDogc3RyaW5nO1xuICAgIExpc3RSZWNpcGllbnRJRDogbnVtYmVyO1xuICAgIE9wZW5lZENvdW50OiBudW1iZXI7XG4gICAgUHJlUXVldWVkQ291bnQ6IG51bWJlcjtcbiAgICBQcm9jZXNzZWRDb3VudDogbnVtYmVyO1xuICAgIFF1ZXVlZENvdW50OiBudW1iZXI7XG4gICAgU29mdGJvdW5jZWRDb3VudDogbnVtYmVyO1xuICAgIFNwYW1Db21wbGFpbnRDb3VudDogbnVtYmVyO1xuICAgIFVuc3Vic2NyaWJlZENvdW50OiBudW1iZXI7XG4gICAgV29ya0Zsb3dFeGl0ZWRDb3VudDogbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBTdGF0Q291bnRlciB7XG4gICAgQVBJS2V5SUQ6IG51bWJlcjtcbiAgICBFdmVudENsaWNrRGVsYXk6IG51bWJlcjtcbiAgICBFdmVudENsaWNrZWRDb3VudDogbnVtYmVyO1xuICAgIEV2ZW50T3BlbkRlbGF5OiBudW1iZXI7XG4gICAgRXZlbnRPcGVuZWRDb3VudDogbnVtYmVyO1xuICAgIEV2ZW50U3BhbUNvdW50OiBudW1iZXI7XG4gICAgRXZlbnRVbnN1YnNjcmliZWRDb3VudDogbnVtYmVyO1xuICAgIEV2ZW50V29ya2Zsb3dFeGl0ZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VCbG9ja2VkQ291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlQ2xpY2tlZENvdW50OiBudW1iZXI7XG4gICAgTWVzc2FnZURlZmVycmVkQ291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlSGFyZEJvdW5jZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VPcGVuZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VRdWV1ZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VTZW50Q291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlU29mdEJvdW5jZWRDb3VudDogbnVtYmVyO1xuICAgIE1lc3NhZ2VTcGFtQ291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlVW5zdWJzY3JpYmVkQ291bnQ6IG51bWJlcjtcbiAgICBNZXNzYWdlV29ya0Zsb3dFeGl0ZWRDb3VudDogbnVtYmVyO1xuICAgIFNvdXJjZUlEOiBudW1iZXI7XG4gICAgVGltZXNsaWNlOiBzdHJpbmc7XG4gICAgVG90YWw6IG51bWJlcjtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgTGlua0NsaWNrU3RhdGlzdGljIHtcbiAgICBDbGlja2VkRXZlbnRzQ291bnQ6IG51bWJlcjtcbiAgICBDbGlja2VkTWVzc2FnZXNDb3VudDogbnVtYmVyO1xuICAgIFBvc2l0aW9uSW5kZXg6IG51bWJlcjtcbiAgICBVUkw6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUmVjaXBpZW50RVNQU3RhdGlzdGljIHtcbiAgICBBdHRlbXB0ZWRNZXNzYWdlc0NvdW50PzogbnVtYmVyO1xuICAgIENsaWNrZWRNZXNzYWdlc0NvdW50PzogbnVtYmVyO1xuICAgIERlZmVycmVkTWVzc2FnZXNDb3VudD86IG51bWJlcjtcbiAgICBEZWxpdmVyZWRNZXNzYWdlc0NvdW50PzogbnVtYmVyO1xuICAgIEhhcmRCb3VuY2VkTWVzc2FnZXNDb3VudD86IG51bWJlcjtcbiAgICBFU1BOYW1lPzogc3RyaW5nO1xuICAgIE9wZW5lZE1lc3NhZ2VzQ291bnQ/OiBudW1iZXI7XG4gICAgU29mdEJvdW5jZWRNZXNzYWdlc0NvdW50PzogbnVtYmVyO1xuICAgIFNwYW1SZXBvcnRzQ291bnQ/OiBudW1iZXI7XG4gICAgVW5zdWJzY3JpYmVkTWVzc2FnZXNDb3VudD86IG51bWJlcjtcbiAgICBPcGVuUmF0ZT86IG51bWJlcjtcbiAgICBDbGlja1Rocm91Z2hSYXRlPzogbnVtYmVyO1xuICAgIFNvZnRCb3VuY2VkUmF0ZT86IG51bWJlcjtcbiAgICBIYXJkQm91bmNlZFJhdGU/OiBudW1iZXI7XG4gICAgVW5zdWJzY3JpYmVkUmF0ZT86IG51bWJlcjtcbiAgICBTcGFtUmVwb3J0c1JhdGU/OiBudW1iZXI7XG4gICAgRGVmZXJyZWRSYXRlPzogbnVtYmVyO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBUb3BMaW5rQ2xpY2tlZCB7XG4gICAgQ2xpY2tlZENvdW50OiBudW1iZXI7XG4gICAgTGlua0lkOiBudW1iZXI7XG4gICAgVXJsOiBzdHJpbmc7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFVzZXJBZ2VudFN0YXRpc3RpYyB7XG4gICAgQ291bnQ6IG51bWJlcjtcbiAgICBEaXN0aW5jdENvdW50OiBudW1iZXI7XG4gICAgUGxhdGZvcm06IHN0cmluZztcbiAgICBVc2VyQWdlbnQ6IHN0cmluZztcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRDYW1wYWlnbk92ZXJ2aWV3UXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBBbGw/OiBib29sZWFuO1xuICAgIEFyY2hpdmVkPzogYm9vbGVhbjtcbiAgICBEcmFmdHM/OiBib29sZWFuO1xuICAgIElEPzogbnVtYmVyO1xuICAgIElEVHlwZT86IENhbXBhaWduT3ZlcnZpZXdJRFR5cGU7XG4gICAgUHJvZ3JhbW1lZD86IGJvb2xlYW47XG4gICAgU2VudD86IGJvb2xlYW47XG4gICAgU3RhcnJlZD86IGJvb2xlYW47XG4gICAgU3ViamVjdD86IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldENvbnRhY3RTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBCbG9ja2VkPzogYm9vbGVhbjtcbiAgICBCb3VuY2VkPzogYm9vbGVhbjtcbiAgICBDbGljaz86IGJvb2xlYW47XG4gICAgRGVmZXJyZWQ/OiBib29sZWFuO1xuICAgIEhhcmRib3VuY2VkPzogYm9vbGVhbjtcbiAgICBMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNYXhMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNaW5MYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBPcGVuPzogYm9vbGVhbjtcbiAgICBRdWV1ZWQ/OiBib29sZWFuO1xuICAgIFNlbnQ/OiBib29sZWFuO1xuICAgIFNwYW0/OiBib29sZWFuO1xuICAgIFNvZnRib3VuY2VkPzogYm9vbGVhbjtcbiAgICBVbnN1YnNjcmliZWQ/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgR2V0R0VPU3RhdGlzdGljc1F1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uVGltZXN0YW1wUGVyaW9kPiAmXG4gICAgUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJlxuICB7XG4gICAgQ2FtcGFpZ25JRD86IG51bWJlcjtcbiAgICBDb250YWN0c0xpc3Q/OiBudW1iZXI7XG4gICAgQ3VzdG9tQ2FtcGFpZ24/OiBzdHJpbmc7XG4gICAgRnJvbT86IHN0cmluZztcbiAgICBGcm9tRG9tYWluPzogc3RyaW5nO1xuICAgIEZyb21JRD86IG51bWJlcjtcbiAgICBGcm9tVHlwZT86IE1lc3NhZ2UuRnJvbVR5cGU7XG4gICAgSXNEZWxldGVkPzogYm9vbGVhbjtcbiAgICBJc05ld3NsZXR0ZXJUb29sPzogYm9vbGVhbjtcbiAgICBJc1N0YXJyZWQ/OiBib29sZWFuO1xuICAgIE1lc3NhZ2VTdGF0dXM/OiBNZXNzYWdlLk1lc3NhZ2VTdGF0dXM7XG4gICAgUGVyaW9kPzogQ29tbW9uLlBlcmlvZDtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIEdldExpc3RSZWNpcGllbnRTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBCbG9ja2VkPzogYm9vbGVhbjtcbiAgICBCb3VuY2VkPzogYm9vbGVhbjtcbiAgICBDbGljaz86IGJvb2xlYW47XG4gICAgQ29udGFjdD86IG51bWJlcjtcbiAgICBDb250YWN0c0xpc3Q/OiBudW1iZXI7XG4gICAgSXNFeGNsdWRlZEZyb21DYW1wYWlnbnM/OiBib29sZWFuO1xuICAgIElzVW5zdWJzY3JpYmVkPzogYm9vbGVhbjtcbiAgICBMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNYXhMYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNaW5MYXN0QWN0aXZpdHlBdD86IHN0cmluZztcbiAgICBNYXhVbnN1YnNjcmliZWRBdD86IHN0cmluZztcbiAgICBNaW5VbnN1YnNjcmliZWRBdD86IHN0cmluZztcbiAgICBPcGVuPzogYm9vbGVhbjtcbiAgICBRdWV1ZWQ/OiBib29sZWFuO1xuICAgIFNlbnQ/OiBib29sZWFuO1xuICAgIFNob3dFeHRyYURhdGE/OiBib29sZWFuO1xuICAgIFNwYW0/OiBib29sZWFuO1xuICAgIFRpbWVab25lPzogc3RyaW5nO1xuICAgIFVuc3Vic2NyaWJlZD86IGJvb2xlYW47XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRTdGF0Q291bnRlcnNRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlRpbWVzdGFtcFBlcmlvZD4gJlxuICAgIFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICZcbiAge1xuICAgIENvdW50ZXJTb3VyY2U6IENvdW50ZXJTb3VyY2U7XG4gICAgQ291bnRlclJlc29sdXRpb246IENvdW50ZXJSZXNvbHV0aW9uO1xuICAgIENvdW50ZXJUaW1pbmc6IENvdW50ZXJUaW1pbmc7XG4gICAgU291cmNlSUQ/OiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRMaW5rQ2xpY2tTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBDYW1wYWlnbklEOiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRSZWNpcGllbnRFU1BTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBHZXRMaW5rQ2xpY2tTdGF0aXN0aWNzUXVlcnlQYXJhbXMgJlxuICB7XG4gICAgRVNQX05hbWU/OiBudW1iZXI7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRUb3BMaW5rQ2xpY2tlZFF1ZXJ5UGFyYW1zID0gUGFydGlhbDxDb21tb24uVGltZXN0YW1wUGVyaW9kPiAmXG4gICAgUGFydGlhbDxDb21tb24uUGFnaW5hdGlvbj4gJlxuICB7XG4gICAgQWN0dWFsQ2xpY2tzPzogYm9vbGVhbjtcbiAgICBDYW1wYWlnbklEPzogbnVtYmVyO1xuICAgIENvbnRhY3Q/OiBudW1iZXI7XG4gICAgQ29udGFjdHNMaXN0PzogbnVtYmVyO1xuICAgIEN1c3RvbUNhbXBhaWduPzogc3RyaW5nO1xuICAgIEZyb20/OiBzdHJpbmc7XG4gICAgRnJvbURvbWFpbj86IHN0cmluZztcbiAgICBGcm9tSUQ/OiBudW1iZXI7XG4gICAgRnJvbVR5cGU/OiBNZXNzYWdlLkZyb21UeXBlO1xuICAgIElzRGVsZXRlZD86IGJvb2xlYW47XG4gICAgSXNOZXdzbGV0dGVyVG9vbD86IGJvb2xlYW47XG4gICAgSXNTdGFycmVkPzogYm9vbGVhbjtcbiAgICBNZXNzYWdlPzogbnVtYmVyO1xuICAgIFBlcmlvZD86IENvbW1vbi5QZXJpb2Q7XG4gIH1cblxuICBleHBvcnQgdHlwZSBHZXRVc2VyQWdlbnRTdGF0aXN0aWNzUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5UaW1lc3RhbXBQZXJpb2Q+ICZcbiAgICBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmXG4gIHtcbiAgICBDYW1wYWlnbklEPzogbnVtYmVyO1xuICAgIENvbnRhY3RzTGlzdD86IG51bWJlcjtcbiAgICBDdXN0b21DYW1wYWlnbj86IHN0cmluZztcbiAgICBFdmVudD86IEVtYWlsRXZlbnQ7XG4gICAgRXhjbHVkZVBsYXRmb3JtPzogc3RyaW5nO1xuICAgIEZyb20/OiBzdHJpbmc7XG4gICAgRnJvbURvbWFpbj86IHN0cmluZztcbiAgICBGcm9tSUQ/OiBudW1iZXI7XG4gICAgRnJvbVR5cGU/OiBNZXNzYWdlLkZyb21UeXBlO1xuICAgIElzRGVsZXRlZD86IGJvb2xlYW47XG4gICAgSXNOZXdzbGV0dGVyVG9vbD86IGJvb2xlYW47XG4gICAgSXNTdGFycmVkPzogYm9vbGVhbjtcbiAgICBQZXJpb2Q/OiBDb21tb24uUGVyaW9kO1xuICAgIFBsYXRmb3JtPzogc3RyaW5nO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICBleHBvcnQgdHlwZSBHZXRDYW1wYWlnbk92ZXJ2aWV3UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8Q2FtcGFpZ25PdmVydmlld1tdPjtcblxuICBleHBvcnQgdHlwZSBHZXRDb250YWN0U3RhdGlzdGljc1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPENvbnRhY3RTdGF0aXN0aWNbXT47XG5cbiAgZXhwb3J0IHR5cGUgR2V0R0VPU3RhdGlzdGljc1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPEdFT1N0YXRpc3RpY1tdPjtcblxuICBleHBvcnQgdHlwZSBHZXRMaXN0UmVjaXBpZW50U3RhdGlzdGljc1Jlc3BvbnNlPERhdGEgPSBBcnJheTx1bmtub3duPj4gPVxuICAgIENvbW1vbi5SZXNwb25zZTxBcnJheTxMaXN0UmVjaXBpZW50U3RhdGlzdGljPERhdGE+Pj47XG5cbiAgZXhwb3J0IHR5cGUgR2V0U3RhdENvdW50ZXJzUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8U3RhdENvdW50ZXJbXT47XG5cbiAgZXhwb3J0IHR5cGUgR2V0TGlua0NsaWNrU3RhdGlzdGljc1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPExpbmtDbGlja1N0YXRpc3RpY1tdPjtcblxuICBleHBvcnQgdHlwZSBHZXRSZWNpcGllbnRFU1BTdGF0aXN0aWNzUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8UmVjaXBpZW50RVNQU3RhdGlzdGljW10+O1xuXG4gIGV4cG9ydCB0eXBlIEdldFRvcExpbmtDbGlja2VkUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8VG9wTGlua0NsaWNrZWRbXT47XG5cbiAgZXhwb3J0IHR5cGUgR2V0VXNlckFnZW50U3RhdGlzdGljc1Jlc3BvbnNlID0gQ29tbW9uLlJlc3BvbnNlPFVzZXJBZ2VudFN0YXRpc3RpY1tdPjtcbn1cbiIsImltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4vQ29tbW9uJztcblxuZXhwb3J0IG5hbWVzcGFjZSBUZW1wbGF0ZSB7XG4gIGV4cG9ydCBlbnVtIENhdGVnb3JpZXMge1xuICAgIEZ1bGwgPSAnZnVsbCcsXG4gICAgQmFzaWMgPSAnYmFzaWMnLFxuICAgIE5ld3NMZXR0ZXIgPSAnbmV3c2xldHRlcicsXG4gICAgRUNvbW1lcmNlID0gJ2UtY29tbWVyY2UnLFxuICAgIEV2ZW50cyA9ICdldmVudHMnLFxuICAgIFRyYXZlbCA9ICd0cmF2ZWwnLFxuICAgIFNwb3J0cyA9ICdzcG9ydHMnLFxuICAgIFdlbGNvbWUgPSAnd2VsY29tZScsXG4gICAgQ29udGFjdFByb3BlcnR5VXBkYXRlID0gJ2NvbnRhY3QtcHJvcGVydHktdXBkYXRlJyxcbiAgICBTdXBwb3J0ID0gJ3N1cHBvcnQnLFxuICAgIEludm9pY2UgPSAnaW52b2ljZScsXG4gICAgQW5uaXZlcnNhcnkgPSAnYW5uaXZlcnNhcnknLFxuICAgIEFjY291bnQgPSAnYWNjb3VudCcsXG4gICAgQWN0aXZhdGlvbiA9ICdhY3RpdmF0aW9uJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gQ2F0ZWdvcmllc1NlbGVjdGlvbk1ldGhvZCB7XG4gICAgQ29udGFpbnNBbnkgPSAnY29udGFpbnNhbnknLFxuICAgIENvbnRhaW5zQWxsID0gJ2NvbnRhaW5zYWxsJyxcbiAgICBJc1N1YlNldCA9ICdpc3N1YnNldCdcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEVkaXRNb2RlIHtcbiAgICBEcmFnQW5kRHJvcEJ1aWxkZXIgPSAxLFxuICAgIEhUTUxCdWlsZGVyID0gMixcbiAgICBTYXZlZFNlY3Rpb25CdWlsZGVyID0gMyxcbiAgICBNSk1MQnVpbGRlciA9IDRcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIE93bmVyVHlwZSB7XG4gICAgQXBpS2V5ID0gJ2FwaWtleScsXG4gICAgVXNlciA9ICd1c2VyJyxcbiAgICBHbG9iYWwgPSAnZ2xvYmFsJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gUHVycG9zZXMge1xuICAgIE1hcmtldGluZyA9ICdtYXJrZXRpbmcnLFxuICAgIFRyYW5zYWN0aW9uYWwgPSAndHJhbnNhY3Rpb25hbCcsXG4gICAgQXV0b21hdGlvbiA9ICdhdXRvbWF0aW9uJ1xuICB9XG5cbiAgZXhwb3J0IGVudW0gUHVycG9zZXNTZWxlY3Rpb25NZXRob2Qge1xuICAgIENvbnRhaW5zQW55ID0gJ2NvbnRhaW5zYW55JyxcbiAgICBDb250YWluc0FsbCA9ICdjb250YWluc2FsbCcsXG4gICAgSXNTdWJTZXQgPSAnaXNzdWJzZXQnXG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIEhlYWRlcnMge1xuICAgIEZyb206IHN0cmluZztcbiAgICBTdWJqZWN0OiBzdHJpbmc7XG4gICAgJ1JlcGx5LXRvJzogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZSB7XG4gICAgQXV0aG9yOiBzdHJpbmc7XG4gICAgQ2F0ZWdvcmllczogQ2F0ZWdvcmllcztcbiAgICBDb3B5cmlnaHQ6IHN0cmluZztcbiAgICBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIEVkaXRNb2RlOiBFZGl0TW9kZTtcbiAgICBJc1N0YXJyZWQ6IGJvb2xlYW47XG4gICAgSXNUZXh0UGFydEdlbmVyYXRpb25FbmFibGVkOiBib29sZWFuO1xuICAgIExvY2FsZTogc3RyaW5nO1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBPd25lclR5cGU6IE93bmVyVHlwZTtcbiAgICBQcmVzZXRzOiBzdHJpbmc7XG4gICAgUHVycG9zZXM6IFB1cnBvc2VzO1xuICAgIElEOiBudW1iZXI7XG4gICAgT3duZXJJZDogbnVtYmVyO1xuICAgIFByZXZpZXdzOiBzdHJpbmc7XG4gICAgQ3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgTGFzdFVwZGF0ZWRBdDogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgVGVtcGxhdGVEZXRhaWxDb250ZW50ID0ge1xuICAgIEhlYWRlcnM6IEhlYWRlcnM7XG4gICAgJ0h0bWwtcGFydCc6IHN0cmluZztcbiAgICAnVGV4dC1wYXJ0Jzogc3RyaW5nO1xuICAgIE1KTUxDb250ZW50OiBzdHJpbmc7XG4gIH1cblxuICAvLyBSRVFVRVNUIFBBUlRcbiAgZXhwb3J0IHR5cGUgUG9zdFRlbXBsYXRlQm9keSA9XG4gICAgUGFydGlhbDxPbWl0PFRlbXBsYXRlLCAnTmFtZScgfCAnSUQnIHwgJ093bmVySWQnIHwgJ1ByZXZpZXdzJyB8ICdDcmVhdGVkQXQnIHwgJ0xhc3RVcGRhdGVkQXQnPj4gJlxuICB7XG4gICAgTmFtZTogc3RyaW5nO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0VGVtcGxhdGVCb2R5ID0gUGFydGlhbDxQb3N0VGVtcGxhdGVCb2R5PlxuXG4gIGV4cG9ydCB0eXBlIEdldFRlbXBsYXRlUXVlcnlQYXJhbXMgPSBQYXJ0aWFsPENvbW1vbi5QYWdpbmF0aW9uPiAmIHtcbiAgICBDYXRlZ29yaWVzPzogc3RyaW5nO1xuICAgIENhdGVnb3JpZXNTZWxlY3Rpb25NZXRob2Q/OiBDYXRlZ29yaWVzU2VsZWN0aW9uTWV0aG9kO1xuICAgIEVkaXRNb2RlPzogRWRpdE1vZGU7XG4gICAgTmFtZT86IHN0cmluZztcbiAgICBPd25lclR5cGU/OiBPd25lclR5cGU7XG4gICAgUHVycG9zZXM/OiBQdXJwb3NlcztcbiAgICBQdXJwb3Nlc1NlbGVjdGlvbk1ldGhvZD86IFB1cnBvc2VzU2VsZWN0aW9uTWV0aG9kO1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUG9zdFRlbXBsYXRlRGV0YWlsQ29udGVudEJvZHkgPVxuICAgIFBhcnRpYWw8T21pdDxUZW1wbGF0ZURldGFpbENvbnRlbnQsICdIZWFkZXJzJz4+ICZcbiAge1xuICAgIEhlYWRlcnM/OiBQYXJ0aWFsPEhlYWRlcnM+O1xuICB9XG5cbiAgZXhwb3J0IHR5cGUgUHV0VGVtcGxhdGVEZXRhaWxDb250ZW50Qm9keSA9IFBvc3RUZW1wbGF0ZURldGFpbENvbnRlbnRCb2R5XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIFRlbXBsYXRlUmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8VGVtcGxhdGVbXT47XG4gIHR5cGUgVGVtcGxhdGVEZXRhaWxDb250ZW50UmVzcG9uc2UgPSBDb21tb24uUmVzcG9uc2U8VGVtcGxhdGVEZXRhaWxDb250ZW50W10+O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RUZW1wbGF0ZVJlc3BvbnNlID0gVGVtcGxhdGVSZXNwb25zZVxuICBleHBvcnQgdHlwZSBQdXRUZW1wbGF0ZVJlc3BvbnNlID0gVGVtcGxhdGVSZXNwb25zZVxuICBleHBvcnQgdHlwZSBHZXRUZW1wbGF0ZVJlc3BvbnNlID0gVGVtcGxhdGVSZXNwb25zZVxuXG4gIGV4cG9ydCB0eXBlIFBvc3RUZW1wbGF0ZURldGFpbENvbnRlbnRSZXNwb25zZSA9IFRlbXBsYXRlRGV0YWlsQ29udGVudFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIFB1dFRlbXBsYXRlRGV0YWlsQ29udGVudFJlc3BvbnNlID0gVGVtcGxhdGVEZXRhaWxDb250ZW50UmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgR2V0VGVtcGxhdGVEZXRhaWxDb250ZW50UmVzcG9uc2UgPSBUZW1wbGF0ZURldGFpbENvbnRlbnRSZXNwb25zZVxufVxuIiwiaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi9Db21tb24nO1xuXG5leHBvcnQgbmFtZXNwYWNlIFdlYmhvb2sge1xuICBleHBvcnQgZW51bSBFdmVudFR5cGUge1xuICAgIE9wZW4gPSAnb3BlbicsXG4gICAgQ2xpY2sgPSAnY2xpY2snLFxuICAgIEJvdW5jZSA9ICdib3VuY2UnLFxuICAgIFNwYW0gPSAnc3BhbScsXG4gICAgQmxvY2tlZCA9ICdibG9ja2VkJyxcbiAgICBVblN1YiA9ICd1bnN1YicsXG4gICAgU2VudCA9ICdzZW50JyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEV2ZW50VHlwZVZhbHVlIHtcbiAgICBDbGljayA9IDEsXG4gICAgQm91bmNlID0gMixcbiAgICBTcGFtID0gMyxcbiAgICBCbG9ja2VkID0gNCxcbiAgICBVbnN1YnNjcmliZSA9IDUsXG4gICAgT3BlbiA9IDYsXG4gICAgU2VudCA9IDcsXG4gIH1cblxuICBleHBvcnQgZW51bSBTdGF0dXMge1xuICAgIERlYWQgPSAnZGVhZCcsXG4gICAgQWxpdmUgPSAnYWxpdmUnXG4gIH1cblxuICBleHBvcnQgdHlwZSBWZXJzaW9uID0gMSB8IDI7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBFdmVudENhbGxiYWNrVXJsIHtcbiAgICBJRDogbnVtYmVyO1xuICAgIEV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICAgIElzQmFja3VwOiBib29sZWFuO1xuICAgIFN0YXR1czogU3RhdHVzO1xuICAgIEFQSUtleUlEOiBudW1iZXI7XG4gICAgVmVyc2lvbjogVmVyc2lvbjtcbiAgICBVcmw6IHN0cmluZztcbiAgfVxuXG4gIC8vIFJFUVVFU1QgUEFSVFxuICBleHBvcnQgdHlwZSBQb3N0RXZlbnRDYWxsYmFja1VybEJvZHkgPSB7XG4gICAgVXJsOiBzdHJpbmc7XG4gICAgRXZlbnRUeXBlPzogRXZlbnRUeXBlO1xuICAgIElzQmFja3VwPzogYm9vbGVhbjtcbiAgICBTdGF0dXM/OiBTdGF0dXM7XG4gIH1cblxuICBleHBvcnQgdHlwZSBQdXRFdmVudENhbGxiYWNrVXJsQm9keSA9IFBhcnRpYWw8UG9zdEV2ZW50Q2FsbGJhY2tVcmxCb2R5PlxuXG4gIGV4cG9ydCB0eXBlIEdldEV2ZW50Q2FsbGJhY2tVcmxRdWVyeVBhcmFtcyA9IFBhcnRpYWw8Q29tbW9uLlBhZ2luYXRpb24+ICYge1xuICAgIEJhY2t1cD86IGJvb2xlYW47XG4gICAgRXZlbnRUeXBlPzogRXZlbnRUeXBlVmFsdWU7XG4gICAgU3RhdHVzPzogc3RyaW5nO1xuICAgIFZlcnNpb24/OiBWZXJzaW9uO1xuICB9XG5cbiAgLy8gUkVTUE9OU0UgUEFSVFxuICB0eXBlIEV2ZW50Q2FsbGJhY2tVcmxSZXNwb25zZSA9IHtcbiAgICBDb3VudDogbnVtYmVyO1xuICAgIFRvdGFsOiBudW1iZXI7XG4gICAgRGF0YTogRXZlbnRDYWxsYmFja1VybFtdO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIFBvc3RFdmVudENhbGxiYWNrVXJsUmVzcG9uc2UgPSBFdmVudENhbGxiYWNrVXJsUmVzcG9uc2VcbiAgZXhwb3J0IHR5cGUgUHV0RXZlbnRDYWxsYmFja1VybFJlc3BvbnNlID0gRXZlbnRDYWxsYmFja1VybFJlc3BvbnNlXG4gIGV4cG9ydCB0eXBlIEdldEV2ZW50Q2FsbGJhY2tVcmxSZXNwb25zZSA9IEV2ZW50Q2FsbGJhY2tVcmxSZXNwb25zZVxufVxuIiwiLy8gQ09NTU9OXG5leHBvcnQgeyBMaWJyYXJ5UmVzcG9uc2UsIExpYnJhcnlMb2NhbFJlc3BvbnNlIH0gZnJvbSAnLi9MaWJyYXJ5UmVzcG9uc2UnO1xuZXhwb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi9Db21tb24nO1xuXG4vLyBTRU5EXG5leHBvcnQge1xuICBTZW5kRW1haWxWMyxcbiAgU2VuZEVtYWlsVjNfMSxcbn0gZnJvbSAnLi9TZW5kRW1haWwnO1xuXG4vLyBBUElcbmV4cG9ydCB7IE1lc3NhZ2UgfSBmcm9tICcuL01lc3NhZ2UnO1xuZXhwb3J0IHtcbiAgQ29udGFjdCxcbiAgQ29udGFjdExpc3QsXG4gIEJ1bGtDb250YWN0TWFuYWdlbWVudCxcbiAgQ29udGFjdFByb3BlcnRpZXMsXG4gIENvbnRhY3RTdWJzY3JpcHRpb24sXG4gIENvbnRhY3RWZXJpZmljYXRpb24sXG59IGZyb20gJy4vQ29udGFjdCc7XG5leHBvcnQge1xuICBEcmFmdENhbXBhaWduLFxuICBTZW50Q2FtcGFpZ24sXG59IGZyb20gJy4vQ2FtcGFpZ24nO1xuZXhwb3J0IHsgU2VnbWVudGF0aW9uIH0gZnJvbSAnLi9TZWdtZW50YXRpb24nO1xuZXhwb3J0IHsgVGVtcGxhdGUgfSBmcm9tICcuL1RlbXBsYXRlJztcbmV4cG9ydCB7IFN0YXRpc3RpYyB9IGZyb20gJy4vU3RhdGlzdGljJztcbmV4cG9ydCB7IE1lc3NhZ2VFdmVudCB9IGZyb20gJy4vTWVzc2FnZUV2ZW50JztcbmV4cG9ydCB7IFdlYmhvb2sgfSBmcm9tICcuL1dlYmhvb2snO1xuZXhwb3J0IHsgUGFyc2UgfSBmcm9tICcuL1BhcnNlJztcbmV4cG9ydCB7XG4gIFNlbmRlcixcbiAgTWV0YXNlbmRlcixcbiAgRE5TLFxufSBmcm9tICcuL1NlbmRlckFkZHJlc3NBbmREb21haW4nO1xuZXhwb3J0IHtcbiAgQVBJS2V5Q29uZmlndXJhdGlvbixcbiAgQWNjb3VudFNldHRpbmcsXG59IGZyb20gJy4vU2V0dGluZyc7XG5cbi8vIFNNU1xuZXhwb3J0IHsgU2VuZE1lc3NhZ2UgfSBmcm9tICcuL1NlbmRNZXNzYWdlJztcbmV4cG9ydCB7IFNNU01lc3NhZ2UgfSBmcm9tICcuL1NNU01lc3NhZ2UnO1xuIiwiaW1wb3J0IGlzTmlsIGZyb20gJy4vaXNOaWwnO1xuaW1wb3J0IGlzTnVsbCBmcm9tICcuL2lzTnVsbCc7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSAnLi9pc1VuZGVmaW5lZCc7XG5pbXBvcnQgaXNQdXJlT2JqZWN0IGZyb20gJy4vaXNQdXJlT2JqZWN0JztcbmltcG9ydCBzZXRWYWx1ZUlmTm90TmlsIGZyb20gJy4vc2V0VmFsdWVJZk5vdE5pbCc7XG5cbmV4cG9ydCB7XG4gIGlzTmlsLFxuICBpc051bGwsXG4gIGlzVW5kZWZpbmVkLFxuICBpc1B1cmVPYmplY3QsXG4gIHNldFZhbHVlSWZOb3ROaWwsXG59O1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG5pbXBvcnQgaXNOdWxsIGZyb20gJy4vaXNOdWxsJztcbmltcG9ydCBpc1VuZGVmaW5lZCBmcm9tICcuL2lzVW5kZWZpbmVkJztcbi8qbGliKi9cbi8qb3RoZXIqL1xuXG5mdW5jdGlvbiBpc05pbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNVbmRlZmluZWQodmFsdWUpIHx8IGlzTnVsbCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTmlsO1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG4vKmxpYiovXG4vKm90aGVyKi9cblxuZnVuY3Rpb24gaXNOdWxsKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgbnVsbCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNOdWxsO1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG4vKmxpYiovXG4vKm90aGVyKi9cblxuZnVuY3Rpb24gaXNQdXJlT2JqZWN0KHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG4gICAgJiYgdmFsdWUgIT09IG51bGxcbiAgICAmJiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKSA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpID09PSBudWxsKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQdXJlT2JqZWN0O1xuIiwiLypleHRlcm5hbCBtb2R1bGVzKi9cbi8qdHlwZXMqL1xuLyp1dGlscyovXG4vKmxpYiovXG4vKm90aGVyKi9cblxuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyB1bmRlZmluZWQge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNVbmRlZmluZWQ7XG4iLCIvKmV4dGVybmFsIG1vZHVsZXMqL1xuLyp0eXBlcyovXG5pbXBvcnQgeyBUT2JqZWN0IH0gZnJvbSAnLi4vdHlwZXMnO1xuLyp1dGlscyovXG5pbXBvcnQgaXNOaWwgZnJvbSAnLi9pc05pbCc7XG5pbXBvcnQgaXNOdWxsIGZyb20gJy4vaXNOdWxsJztcbi8qbGliKi9cbi8qb3RoZXIqL1xuXG5mdW5jdGlvbiBzZXRWYWx1ZUlmTm90TmlsKFxuICB0YXJnZXRPYmplY3Q6IFRPYmplY3QuVW5rbm93blJlYyxcbiAgcGF0aDogc3RyaW5nLFxuICB2YWx1ZTogdW5rbm93bixcbik6IHZvaWQge1xuICBpZiAodHlwZW9mIHRhcmdldE9iamVjdCAhPT0gJ29iamVjdCcgfHwgaXNOdWxsKHRhcmdldE9iamVjdCkpIHtcbiAgICB0aHJvdyBFcnJvcignQXJndW1lbnQgXCJ0YXJnZXRPYmplY3RcIiBpcyBub3Qgb2JqZWN0Jyk7XG4gIH1cblxuICBpZiAoIXBhdGgpIHtcbiAgICB0aHJvdyBFcnJvcignQXJndW1lbnQgXCJwYXRoXCIgaXMgcmVxdWlyZWQnKTtcbiAgfVxuXG4gIGlmICghaXNOaWwodmFsdWUpKSB7XG4gICAgdGFyZ2V0T2JqZWN0W3BhdGhdID0gdmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgc2V0VmFsdWVJZk5vdE5pbDtcbiIsIjsoZnVuY3Rpb24gKGdsb2JhbE9iamVjdCkge1xyXG4gICd1c2Ugc3RyaWN0JztcclxuXHJcbi8qXHJcbiAqICAgICAgYmlnbnVtYmVyLmpzIHY5LjAuMVxyXG4gKiAgICAgIEEgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBhcmJpdHJhcnktcHJlY2lzaW9uIGFyaXRobWV0aWMuXHJcbiAqICAgICAgaHR0cHM6Ly9naXRodWIuY29tL01pa2VNY2wvYmlnbnVtYmVyLmpzXHJcbiAqICAgICAgQ29weXJpZ2h0IChjKSAyMDIwIE1pY2hhZWwgTWNsYXVnaGxpbiA8TThjaDg4bEBnbWFpbC5jb20+XHJcbiAqICAgICAgTUlUIExpY2Vuc2VkLlxyXG4gKlxyXG4gKiAgICAgIEJpZ051bWJlci5wcm90b3R5cGUgbWV0aG9kcyAgICAgfCAgQmlnTnVtYmVyIG1ldGhvZHNcclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBhYnNvbHV0ZVZhbHVlICAgICAgICAgICAgYWJzICAgIHwgIGNsb25lXHJcbiAqICAgICAgY29tcGFyZWRUbyAgICAgICAgICAgICAgICAgICAgICB8ICBjb25maWcgICAgICAgICAgICAgICBzZXRcclxuICogICAgICBkZWNpbWFsUGxhY2VzICAgICAgICAgICAgZHAgICAgIHwgICAgICBERUNJTUFMX1BMQUNFU1xyXG4gKiAgICAgIGRpdmlkZWRCeSAgICAgICAgICAgICAgICBkaXYgICAgfCAgICAgIFJPVU5ESU5HX01PREVcclxuICogICAgICBkaXZpZGVkVG9JbnRlZ2VyQnkgICAgICAgaWRpdiAgIHwgICAgICBFWFBPTkVOVElBTF9BVFxyXG4gKiAgICAgIGV4cG9uZW50aWF0ZWRCeSAgICAgICAgICBwb3cgICAgfCAgICAgIFJBTkdFXHJcbiAqICAgICAgaW50ZWdlclZhbHVlICAgICAgICAgICAgICAgICAgICB8ICAgICAgQ1JZUFRPXHJcbiAqICAgICAgaXNFcXVhbFRvICAgICAgICAgICAgICAgIGVxICAgICB8ICAgICAgTU9EVUxPX01PREVcclxuICogICAgICBpc0Zpbml0ZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICBQT1dfUFJFQ0lTSU9OXHJcbiAqICAgICAgaXNHcmVhdGVyVGhhbiAgICAgICAgICAgIGd0ICAgICB8ICAgICAgRk9STUFUXHJcbiAqICAgICAgaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyAgIGd0ZSAgICB8ICAgICAgQUxQSEFCRVRcclxuICogICAgICBpc0ludGVnZXIgICAgICAgICAgICAgICAgICAgICAgIHwgIGlzQmlnTnVtYmVyXHJcbiAqICAgICAgaXNMZXNzVGhhbiAgICAgICAgICAgICAgIGx0ICAgICB8ICBtYXhpbXVtICAgICAgICAgICAgICBtYXhcclxuICogICAgICBpc0xlc3NUaGFuT3JFcXVhbFRvICAgICAgbHRlICAgIHwgIG1pbmltdW0gICAgICAgICAgICAgIG1pblxyXG4gKiAgICAgIGlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcmFuZG9tXHJcbiAqICAgICAgaXNOZWdhdGl2ZSAgICAgICAgICAgICAgICAgICAgICB8ICBzdW1cclxuICogICAgICBpc1Bvc2l0aXZlICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBpc1plcm8gICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBtaW51cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBtb2R1bG8gICAgICAgICAgICAgICAgICAgbW9kICAgIHxcclxuICogICAgICBtdWx0aXBsaWVkQnkgICAgICAgICAgICAgdGltZXMgIHxcclxuICogICAgICBuZWdhdGVkICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBwbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBwcmVjaXNpb24gICAgICAgICAgICAgICAgc2QgICAgIHxcclxuICogICAgICBzaGlmdGVkQnkgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBzcXVhcmVSb290ICAgICAgICAgICAgICAgc3FydCAgIHxcclxuICogICAgICB0b0V4cG9uZW50aWFsICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0ZpeGVkICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0ZyYWN0aW9uICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0pTT04gICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b051bWJlciAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b1ByZWNpc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB2YWx1ZU9mICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICpcclxuICovXHJcblxyXG5cclxuICB2YXIgQmlnTnVtYmVyLFxyXG4gICAgaXNOdW1lcmljID0gL14tPyg/OlxcZCsoPzpcXC5cXGQqKT98XFwuXFxkKykoPzplWystXT9cXGQrKT8kL2ksXHJcbiAgICBtYXRoY2VpbCA9IE1hdGguY2VpbCxcclxuICAgIG1hdGhmbG9vciA9IE1hdGguZmxvb3IsXHJcblxyXG4gICAgYmlnbnVtYmVyRXJyb3IgPSAnW0JpZ051bWJlciBFcnJvcl0gJyxcclxuICAgIHRvb01hbnlEaWdpdHMgPSBiaWdudW1iZXJFcnJvciArICdOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNhbnQgZGlnaXRzOiAnLFxyXG5cclxuICAgIEJBU0UgPSAxZTE0LFxyXG4gICAgTE9HX0JBU0UgPSAxNCxcclxuICAgIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFmZmZmZmZmZmZmZmZmLCAgICAgICAgIC8vIDJeNTMgLSAxXHJcbiAgICAvLyBNQVhfSU5UMzIgPSAweDdmZmZmZmZmLCAgICAgICAgICAgICAgICAgICAvLyAyXjMxIC0gMVxyXG4gICAgUE9XU19URU4gPSBbMSwgMTAsIDEwMCwgMWUzLCAxZTQsIDFlNSwgMWU2LCAxZTcsIDFlOCwgMWU5LCAxZTEwLCAxZTExLCAxZTEyLCAxZTEzXSxcclxuICAgIFNRUlRfQkFTRSA9IDFlNyxcclxuXHJcbiAgICAvLyBFRElUQUJMRVxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBERUNJTUFMX1BMQUNFUywgVE9fRVhQX05FRywgVE9fRVhQX1BPUywgTUlOX0VYUCwgTUFYX0VYUCwgYW5kXHJcbiAgICAvLyB0aGUgYXJndW1lbnRzIHRvIHRvRXhwb25lbnRpYWwsIHRvRml4ZWQsIHRvRm9ybWF0LCBhbmQgdG9QcmVjaXNpb24uXHJcbiAgICBNQVggPSAxRTk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIE1BWF9JTlQzMlxyXG5cclxuXHJcbiAgLypcclxuICAgKiBDcmVhdGUgYW5kIHJldHVybiBhIEJpZ051bWJlciBjb25zdHJ1Y3Rvci5cclxuICAgKi9cclxuICBmdW5jdGlvbiBjbG9uZShjb25maWdPYmplY3QpIHtcclxuICAgIHZhciBkaXYsIGNvbnZlcnRCYXNlLCBwYXJzZU51bWVyaWMsXHJcbiAgICAgIFAgPSBCaWdOdW1iZXIucHJvdG90eXBlID0geyBjb25zdHJ1Y3RvcjogQmlnTnVtYmVyLCB0b1N0cmluZzogbnVsbCwgdmFsdWVPZjogbnVsbCB9LFxyXG4gICAgICBPTkUgPSBuZXcgQmlnTnVtYmVyKDEpLFxyXG5cclxuXHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRURJVEFCTEUgQ09ORklHIERFRkFVTFRTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gICAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZXMgYmVsb3cgbXVzdCBiZSBpbnRlZ2VycyB3aXRoaW4gdGhlIGluY2x1c2l2ZSByYW5nZXMgc3RhdGVkLlxyXG4gICAgICAvLyBUaGUgdmFsdWVzIGNhbiBhbHNvIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUgdXNpbmcgQmlnTnVtYmVyLnNldC5cclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgZGl2aXNpb24uXHJcbiAgICAgIERFQ0lNQUxfUExBQ0VTID0gMjAsICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFRoZSByb3VuZGluZyBtb2RlIHVzZWQgd2hlbiByb3VuZGluZyB0byB0aGUgYWJvdmUgZGVjaW1hbCBwbGFjZXMsIGFuZCB3aGVuIHVzaW5nXHJcbiAgICAgIC8vIHRvRXhwb25lbnRpYWwsIHRvRml4ZWQsIHRvRm9ybWF0IGFuZCB0b1ByZWNpc2lvbiwgYW5kIHJvdW5kIChkZWZhdWx0IHZhbHVlKS5cclxuICAgICAgLy8gVVAgICAgICAgICAwIEF3YXkgZnJvbSB6ZXJvLlxyXG4gICAgICAvLyBET1dOICAgICAgIDEgVG93YXJkcyB6ZXJvLlxyXG4gICAgICAvLyBDRUlMICAgICAgIDIgVG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIEZMT09SICAgICAgMyBUb3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgLy8gSEFMRl9VUCAgICA0IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB1cC5cclxuICAgICAgLy8gSEFMRl9ET1dOICA1IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCBkb3duLlxyXG4gICAgICAvLyBIQUxGX0VWRU4gIDYgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIHRvd2FyZHMgZXZlbiBuZWlnaGJvdXIuXHJcbiAgICAgIC8vIEhBTEZfQ0VJTCAgNyBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIEhBTEZfRkxPT1IgOCBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyAtSW5maW5pdHkuXHJcbiAgICAgIFJPVU5ESU5HX01PREUgPSA0LCAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA4XHJcblxyXG4gICAgICAvLyBFWFBPTkVOVElBTF9BVCA6IFtUT19FWFBfTkVHICwgVE9fRVhQX1BPU11cclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYmVuZWF0aCB3aGljaCB0b1N0cmluZyByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAvLyBOdW1iZXIgdHlwZTogLTdcclxuICAgICAgVE9fRVhQX05FRyA9IC03LCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIC1NQVhcclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYWJvdmUgd2hpY2ggdG9TdHJpbmcgcmV0dXJucyBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAgLy8gTnVtYmVyIHR5cGU6IDIxXHJcbiAgICAgIFRPX0VYUF9QT1MgPSAyMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFJBTkdFIDogW01JTl9FWFAsIE1BWF9FWFBdXHJcblxyXG4gICAgICAvLyBUaGUgbWluaW11bSBleHBvbmVudCB2YWx1ZSwgYmVuZWF0aCB3aGljaCB1bmRlcmZsb3cgdG8gemVybyBvY2N1cnMuXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAtMzI0ICAoNWUtMzI0KVxyXG4gICAgICBNSU5fRVhQID0gLTFlNywgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0xIHRvIC1NQVhcclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIGV4cG9uZW50IHZhbHVlLCBhYm92ZSB3aGljaCBvdmVyZmxvdyB0byBJbmZpbml0eSBvY2N1cnMuXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAgMzA4ICAoMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgpXHJcbiAgICAgIC8vIEZvciBNQVhfRVhQID4gMWU3LCBlLmcuIG5ldyBCaWdOdW1iZXIoJzFlMTAwMDAwMDAwJykucGx1cygxKSBtYXkgYmUgc2xvdy5cclxuICAgICAgTUFYX0VYUCA9IDFlNywgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIHRvIE1BWFxyXG5cclxuICAgICAgLy8gV2hldGhlciB0byB1c2UgY3J5cHRvZ3JhcGhpY2FsbHktc2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiwgaWYgYXZhaWxhYmxlLlxyXG4gICAgICBDUllQVE8gPSBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUgb3IgZmFsc2VcclxuXHJcbiAgICAgIC8vIFRoZSBtb2R1bG8gbW9kZSB1c2VkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1vZHVsdXM6IGEgbW9kIG4uXHJcbiAgICAgIC8vIFRoZSBxdW90aWVudCAocSA9IGEgLyBuKSBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyByb3VuZGluZyBtb2RlLlxyXG4gICAgICAvLyBUaGUgcmVtYWluZGVyIChyKSBpcyBjYWxjdWxhdGVkIGFzOiByID0gYSAtIG4gKiBxLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBVUCAgICAgICAgMCBUaGUgcmVtYWluZGVyIGlzIHBvc2l0aXZlIGlmIHRoZSBkaXZpZGVuZCBpcyBuZWdhdGl2ZSwgZWxzZSBpcyBuZWdhdGl2ZS5cclxuICAgICAgLy8gRE9XTiAgICAgIDEgVGhlIHJlbWFpbmRlciBoYXMgdGhlIHNhbWUgc2lnbiBhcyB0aGUgZGl2aWRlbmQuXHJcbiAgICAgIC8vICAgICAgICAgICAgIFRoaXMgbW9kdWxvIG1vZGUgaXMgY29tbW9ubHkga25vd24gYXMgJ3RydW5jYXRlZCBkaXZpc2lvbicgYW5kIGlzXHJcbiAgICAgIC8vICAgICAgICAgICAgIGVxdWl2YWxlbnQgdG8gKGEgJSBuKSBpbiBKYXZhU2NyaXB0LlxyXG4gICAgICAvLyBGTE9PUiAgICAgMyBUaGUgcmVtYWluZGVyIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpc29yIChQeXRob24gJSkuXHJcbiAgICAgIC8vIEhBTEZfRVZFTiA2IFRoaXMgbW9kdWxvIG1vZGUgaW1wbGVtZW50cyB0aGUgSUVFRSA3NTQgcmVtYWluZGVyIGZ1bmN0aW9uLlxyXG4gICAgICAvLyBFVUNMSUQgICAgOSBFdWNsaWRpYW4gZGl2aXNpb24uIHEgPSBzaWduKG4pICogZmxvb3IoYSAvIGFicyhuKSkuXHJcbiAgICAgIC8vICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgaXMgYWx3YXlzIHBvc2l0aXZlLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBUaGUgdHJ1bmNhdGVkIGRpdmlzaW9uLCBmbG9vcmVkIGRpdmlzaW9uLCBFdWNsaWRpYW4gZGl2aXNpb24gYW5kIElFRUUgNzU0IHJlbWFpbmRlclxyXG4gICAgICAvLyBtb2RlcyBhcmUgY29tbW9ubHkgdXNlZCBmb3IgdGhlIG1vZHVsdXMgb3BlcmF0aW9uLlxyXG4gICAgICAvLyBBbHRob3VnaCB0aGUgb3RoZXIgcm91bmRpbmcgbW9kZXMgY2FuIGFsc28gYmUgdXNlZCwgdGhleSBtYXkgbm90IGdpdmUgdXNlZnVsIHJlc3VsdHMuXHJcbiAgICAgIE1PRFVMT19NT0RFID0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA5XHJcblxyXG4gICAgICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIG9mIHRoZSByZXN1bHQgb2YgdGhlIGV4cG9uZW50aWF0ZWRCeSBvcGVyYXRpb24uXHJcbiAgICAgIC8vIElmIFBPV19QUkVDSVNJT04gaXMgMCwgdGhlcmUgd2lsbCBiZSB1bmxpbWl0ZWQgc2lnbmlmaWNhbnQgZGlnaXRzLlxyXG4gICAgICBQT1dfUFJFQ0lTSU9OID0gMCwgICAgICAgICAgICAgICAgICAgIC8vIDAgdG8gTUFYXHJcblxyXG4gICAgICAvLyBUaGUgZm9ybWF0IHNwZWNpZmljYXRpb24gdXNlZCBieSB0aGUgQmlnTnVtYmVyLnByb3RvdHlwZS50b0Zvcm1hdCBtZXRob2QuXHJcbiAgICAgIEZPUk1BVCA9IHtcclxuICAgICAgICBwcmVmaXg6ICcnLFxyXG4gICAgICAgIGdyb3VwU2l6ZTogMyxcclxuICAgICAgICBzZWNvbmRhcnlHcm91cFNpemU6IDAsXHJcbiAgICAgICAgZ3JvdXBTZXBhcmF0b3I6ICcsJyxcclxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLicsXHJcbiAgICAgICAgZnJhY3Rpb25Hcm91cFNpemU6IDAsXHJcbiAgICAgICAgZnJhY3Rpb25Hcm91cFNlcGFyYXRvcjogJ1xceEEwJywgICAgICAvLyBub24tYnJlYWtpbmcgc3BhY2VcclxuICAgICAgICBzdWZmaXg6ICcnXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICAvLyBUaGUgYWxwaGFiZXQgdXNlZCBmb3IgYmFzZSBjb252ZXJzaW9uLiBJdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25nLCB3aXRoIG5vICcrJyxcclxuICAgICAgLy8gJy0nLCAnLicsIHdoaXRlc3BhY2UsIG9yIHJlcGVhdGVkIGNoYXJhY3Rlci5cclxuICAgICAgLy8gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJF8nXHJcbiAgICAgIEFMUEhBQkVUID0gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7XHJcblxyXG5cclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cclxuICAgIC8vIENPTlNUUlVDVE9SXHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBUaGUgQmlnTnVtYmVyIGNvbnN0cnVjdG9yIGFuZCBleHBvcnRlZCBmdW5jdGlvbi5cclxuICAgICAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIGEgQmlnTnVtYmVyIG9iamVjdC5cclxuICAgICAqXHJcbiAgICAgKiB2IHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gQSBudW1lcmljIHZhbHVlLlxyXG4gICAgICogW2JdIHtudW1iZXJ9IFRoZSBiYXNlIG9mIHYuIEludGVnZXIsIDIgdG8gQUxQSEFCRVQubGVuZ3RoIGluY2x1c2l2ZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gQmlnTnVtYmVyKHYsIGIpIHtcclxuICAgICAgdmFyIGFscGhhYmV0LCBjLCBjYXNlQ2hhbmdlZCwgZSwgaSwgaXNOdW0sIGxlbiwgc3RyLFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgLy8gRW5hYmxlIGNvbnN0cnVjdG9yIGNhbGwgd2l0aG91dCBgbmV3YC5cclxuICAgICAgaWYgKCEoeCBpbnN0YW5jZW9mIEJpZ051bWJlcikpIHJldHVybiBuZXcgQmlnTnVtYmVyKHYsIGIpO1xyXG5cclxuICAgICAgaWYgKGIgPT0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAodiAmJiB2Ll9pc0JpZ051bWJlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgeC5zID0gdi5zO1xyXG5cclxuICAgICAgICAgIGlmICghdi5jIHx8IHYuZSA+IE1BWF9FWFApIHtcclxuICAgICAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodi5lIDwgTUlOX0VYUCkge1xyXG4gICAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICAgIHguYyA9IHYuYy5zbGljZSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgoaXNOdW0gPSB0eXBlb2YgdiA9PSAnbnVtYmVyJykgJiYgdiAqIDAgPT0gMCkge1xyXG5cclxuICAgICAgICAgIC8vIFVzZSBgMSAvIG5gIHRvIGhhbmRsZSBtaW51cyB6ZXJvIGFsc28uXHJcbiAgICAgICAgICB4LnMgPSAxIC8gdiA8IDAgPyAodiA9IC12LCAtMSkgOiAxO1xyXG5cclxuICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgaW50ZWdlcnMsIHdoZXJlIG4gPCAyMTQ3NDgzNjQ4ICgyKiozMSkuXHJcbiAgICAgICAgICBpZiAodiA9PT0gfn52KSB7XHJcbiAgICAgICAgICAgIGZvciAoZSA9IDAsIGkgPSB2OyBpID49IDEwOyBpIC89IDEwLCBlKyspO1xyXG5cclxuICAgICAgICAgICAgaWYgKGUgPiBNQVhfRVhQKSB7XHJcbiAgICAgICAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgICAgIHguYyA9IFt2XTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHN0ciA9IFN0cmluZyh2KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIGlmICghaXNOdW1lcmljLnRlc3Qoc3RyID0gU3RyaW5nKHYpKSkgcmV0dXJuIHBhcnNlTnVtZXJpYyh4LCBzdHIsIGlzTnVtKTtcclxuXHJcbiAgICAgICAgICB4LnMgPSBzdHIuY2hhckNvZGVBdCgwKSA9PSA0NSA/IChzdHIgPSBzdHIuc2xpY2UoMSksIC0xKSA6IDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgICAgIGlmICgoZSA9IHN0ci5pbmRleE9mKCcuJykpID4gLTEpIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG5cclxuICAgICAgICAvLyBFeHBvbmVudGlhbCBmb3JtP1xyXG4gICAgICAgIGlmICgoaSA9IHN0ci5zZWFyY2goL2UvaSkpID4gMCkge1xyXG5cclxuICAgICAgICAgIC8vIERldGVybWluZSBleHBvbmVudC5cclxuICAgICAgICAgIGlmIChlIDwgMCkgZSA9IGk7XHJcbiAgICAgICAgICBlICs9ICtzdHIuc2xpY2UoaSArIDEpO1xyXG4gICAgICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGUgPCAwKSB7XHJcblxyXG4gICAgICAgICAgLy8gSW50ZWdlci5cclxuICAgICAgICAgIGUgPSBzdHIubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBCYXNlIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtifSdcclxuICAgICAgICBpbnRDaGVjayhiLCAyLCBBTFBIQUJFVC5sZW5ndGgsICdCYXNlJyk7XHJcblxyXG4gICAgICAgIC8vIEFsbG93IGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGJlIHVzZWQgd2l0aCBiYXNlIDEwIGFyZ3VtZW50LCB3aGlsZVxyXG4gICAgICAgIC8vIGFsc28gcm91bmRpbmcgdG8gREVDSU1BTF9QTEFDRVMgYXMgd2l0aCBvdGhlciBiYXNlcy5cclxuICAgICAgICBpZiAoYiA9PSAxMCkge1xyXG4gICAgICAgICAgeCA9IG5ldyBCaWdOdW1iZXIodik7XHJcbiAgICAgICAgICByZXR1cm4gcm91bmQoeCwgREVDSU1BTF9QTEFDRVMgKyB4LmUgKyAxLCBST1VORElOR19NT0RFKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0ciA9IFN0cmluZyh2KTtcclxuXHJcbiAgICAgICAgaWYgKGlzTnVtID0gdHlwZW9mIHYgPT0gJ251bWJlcicpIHtcclxuXHJcbiAgICAgICAgICAvLyBBdm9pZCBwb3RlbnRpYWwgaW50ZXJwcmV0YXRpb24gb2YgSW5maW5pdHkgYW5kIE5hTiBhcyBiYXNlIDQ0KyB2YWx1ZXMuXHJcbiAgICAgICAgICBpZiAodiAqIDAgIT0gMCkgcmV0dXJuIHBhcnNlTnVtZXJpYyh4LCBzdHIsIGlzTnVtLCBiKTtcclxuXHJcbiAgICAgICAgICB4LnMgPSAxIC8gdiA8IDAgPyAoc3RyID0gc3RyLnNsaWNlKDEpLCAtMSkgOiAxO1xyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNhbnQgZGlnaXRzOiB7bn0nXHJcbiAgICAgICAgICBpZiAoQmlnTnVtYmVyLkRFQlVHICYmIHN0ci5yZXBsYWNlKC9eMFxcLjAqfFxcLi8sICcnKS5sZW5ndGggPiAxNSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKHRvb01hbnlEaWdpdHMgKyB2KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeC5zID0gc3RyLmNoYXJDb2RlQXQoMCkgPT09IDQ1ID8gKHN0ciA9IHN0ci5zbGljZSgxKSwgLTEpIDogMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFscGhhYmV0ID0gQUxQSEFCRVQuc2xpY2UoMCwgYik7XHJcbiAgICAgICAgZSA9IGkgPSAwO1xyXG5cclxuICAgICAgICAvLyBDaGVjayB0aGF0IHN0ciBpcyBhIHZhbGlkIGJhc2UgYiBudW1iZXIuXHJcbiAgICAgICAgLy8gRG9uJ3QgdXNlIFJlZ0V4cCwgc28gYWxwaGFiZXQgY2FuIGNvbnRhaW4gc3BlY2lhbCBjaGFyYWN0ZXJzLlxyXG4gICAgICAgIGZvciAobGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoYWxwaGFiZXQuaW5kZXhPZihjID0gc3RyLmNoYXJBdChpKSkgPCAwKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09ICcuJykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiAnLicgaXMgbm90IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGl0IGhhcyBub3QgYmUgZm91bmQgYmVmb3JlLlxyXG4gICAgICAgICAgICAgIGlmIChpID4gZSkge1xyXG4gICAgICAgICAgICAgICAgZSA9IGxlbjtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICghY2FzZUNoYW5nZWQpIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQWxsb3cgZS5nLiBoZXhhZGVjaW1hbCAnRkYnIGFzIHdlbGwgYXMgJ2ZmJy5cclxuICAgICAgICAgICAgICBpZiAoc3RyID09IHN0ci50b1VwcGVyQ2FzZSgpICYmIChzdHIgPSBzdHIudG9Mb3dlckNhc2UoKSkgfHxcclxuICAgICAgICAgICAgICAgICAgc3RyID09IHN0ci50b0xvd2VyQ2FzZSgpICYmIChzdHIgPSBzdHIudG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2VDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGkgPSAtMTtcclxuICAgICAgICAgICAgICAgIGUgPSAwO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljKHgsIFN0cmluZyh2KSwgaXNOdW0sIGIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUHJldmVudCBsYXRlciBjaGVjayBmb3IgbGVuZ3RoIG9uIGNvbnZlcnRlZCBudW1iZXIuXHJcbiAgICAgICAgaXNOdW0gPSBmYWxzZTtcclxuICAgICAgICBzdHIgPSBjb252ZXJ0QmFzZShzdHIsIGIsIDEwLCB4LnMpO1xyXG5cclxuICAgICAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgICAgIGlmICgoZSA9IHN0ci5pbmRleE9mKCcuJykpID4gLTEpIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICAgIGVsc2UgZSA9IHN0ci5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERldGVybWluZSBsZWFkaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKGkgPSAwOyBzdHIuY2hhckNvZGVBdChpKSA9PT0gNDg7IGkrKyk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAobGVuID0gc3RyLmxlbmd0aDsgc3RyLmNoYXJDb2RlQXQoLS1sZW4pID09PSA0ODspO1xyXG5cclxuICAgICAgaWYgKHN0ciA9IHN0ci5zbGljZShpLCArK2xlbikpIHtcclxuICAgICAgICBsZW4gLT0gaTtcclxuXHJcbiAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE51bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6IHtufSdcclxuICAgICAgICBpZiAoaXNOdW0gJiYgQmlnTnVtYmVyLkRFQlVHICYmXHJcbiAgICAgICAgICBsZW4gPiAxNSAmJiAodiA+IE1BWF9TQUZFX0lOVEVHRVIgfHwgdiAhPT0gbWF0aGZsb29yKHYpKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKHRvb01hbnlEaWdpdHMgKyAoeC5zICogdikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgIC8vIE92ZXJmbG93P1xyXG4gICAgICAgIGlmICgoZSA9IGUgLSBpIC0gMSkgPiBNQVhfRVhQKSB7XHJcblxyXG4gICAgICAgICAgLy8gSW5maW5pdHkuXHJcbiAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBVbmRlcmZsb3c/XHJcbiAgICAgICAgfSBlbHNlIGlmIChlIDwgTUlOX0VYUCkge1xyXG5cclxuICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHguZSA9IGU7XHJcbiAgICAgICAgICB4LmMgPSBbXTtcclxuXHJcbiAgICAgICAgICAvLyBUcmFuc2Zvcm0gYmFzZVxyXG5cclxuICAgICAgICAgIC8vIGUgaXMgdGhlIGJhc2UgMTAgZXhwb25lbnQuXHJcbiAgICAgICAgICAvLyBpIGlzIHdoZXJlIHRvIHNsaWNlIHN0ciB0byBnZXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGNvZWZmaWNpZW50IGFycmF5LlxyXG4gICAgICAgICAgaSA9IChlICsgMSkgJSBMT0dfQkFTRTtcclxuICAgICAgICAgIGlmIChlIDwgMCkgaSArPSBMT0dfQkFTRTsgIC8vIGkgPCAxXHJcblxyXG4gICAgICAgICAgaWYgKGkgPCBsZW4pIHtcclxuICAgICAgICAgICAgaWYgKGkpIHguYy5wdXNoKCtzdHIuc2xpY2UoMCwgaSkpO1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZW4gLT0gTE9HX0JBU0U7IGkgPCBsZW47KSB7XHJcbiAgICAgICAgICAgICAgeC5jLnB1c2goK3N0ci5zbGljZShpLCBpICs9IExPR19CQVNFKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGkgPSBMT0dfQkFTRSAtIChzdHIgPSBzdHIuc2xpY2UoaSkpLmxlbmd0aDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGkgLT0gbGVuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZvciAoOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgeC5jLnB1c2goK3N0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAvLyBaZXJvLlxyXG4gICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBDT05TVFJVQ1RPUiBQUk9QRVJUSUVTXHJcblxyXG5cclxuICAgIEJpZ051bWJlci5jbG9uZSA9IGNsb25lO1xyXG5cclxuICAgIEJpZ051bWJlci5ST1VORF9VUCA9IDA7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfRE9XTiA9IDE7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfQ0VJTCA9IDI7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfRkxPT1IgPSAzO1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVAgPSA0O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfRE9XTiA9IDU7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9FVkVOID0gNjtcclxuICAgIEJpZ051bWJlci5ST1VORF9IQUxGX0NFSUwgPSA3O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfRkxPT1IgPSA4O1xyXG4gICAgQmlnTnVtYmVyLkVVQ0xJRCA9IDk7XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBDb25maWd1cmUgaW5mcmVxdWVudGx5LWNoYW5naW5nIGxpYnJhcnktd2lkZSBzZXR0aW5ncy5cclxuICAgICAqXHJcbiAgICAgKiBBY2NlcHQgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25hbCBwcm9wZXJ0aWVzIChpZiB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBpc1xyXG4gICAgICogYSBudW1iZXIsIGl0IG11c3QgYmUgYW4gaW50ZWdlciB3aXRoaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBzdGF0ZWQpOlxyXG4gICAgICpcclxuICAgICAqICAgREVDSU1BTF9QTEFDRVMgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byBNQVhcclxuICAgICAqICAgUk9VTkRJTkdfTU9ERSAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byA4XHJcbiAgICAgKiAgIEVYUE9ORU5USUFMX0FUICAge251bWJlcnxudW1iZXJbXX0gIC1NQVggdG8gTUFYICBvciAgWy1NQVggdG8gMCwgMCB0byBNQVhdXHJcbiAgICAgKiAgIFJBTkdFICAgICAgICAgICAge251bWJlcnxudW1iZXJbXX0gIC1NQVggdG8gTUFYIChub3QgemVybykgIG9yICBbLU1BWCB0byAtMSwgMSB0byBNQVhdXHJcbiAgICAgKiAgIENSWVBUTyAgICAgICAgICAge2Jvb2xlYW59ICAgICAgICAgIHRydWUgb3IgZmFsc2VcclxuICAgICAqICAgTU9EVUxPX01PREUgICAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byA5XHJcbiAgICAgKiAgIFBPV19QUkVDSVNJT04gICAgICAge251bWJlcn0gICAgICAgICAgIDAgdG8gTUFYXHJcbiAgICAgKiAgIEFMUEhBQkVUICAgICAgICAge3N0cmluZ30gICAgICAgICAgIEEgc3RyaW5nIG9mIHR3byBvciBtb3JlIHVuaXF1ZSBjaGFyYWN0ZXJzIHdoaWNoIGRvZXNcclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGNvbnRhaW4gJy4nLlxyXG4gICAgICogICBGT1JNQVQgICAgICAgICAgIHtvYmplY3R9ICAgICAgICAgICBBbiBvYmplY3Qgd2l0aCBzb21lIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcclxuICAgICAqICAgICBwcmVmaXggICAgICAgICAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZ3JvdXBTaXplICAgICAgICAgICAgICB7bnVtYmVyfVxyXG4gICAgICogICAgIHNlY29uZGFyeUdyb3VwU2l6ZSAgICAge251bWJlcn1cclxuICAgICAqICAgICBncm91cFNlcGFyYXRvciAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZGVjaW1hbFNlcGFyYXRvciAgICAgICB7c3RyaW5nfVxyXG4gICAgICogICAgIGZyYWN0aW9uR3JvdXBTaXplICAgICAge251bWJlcn1cclxuICAgICAqICAgICBmcmFjdGlvbkdyb3VwU2VwYXJhdG9yIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgc3VmZml4ICAgICAgICAgICAgICAgICB7c3RyaW5nfVxyXG4gICAgICpcclxuICAgICAqIChUaGUgdmFsdWVzIGFzc2lnbmVkIHRvIHRoZSBhYm92ZSBGT1JNQVQgb2JqZWN0IHByb3BlcnRpZXMgYXJlIG5vdCBjaGVja2VkIGZvciB2YWxpZGl0eS4pXHJcbiAgICAgKlxyXG4gICAgICogRS5nLlxyXG4gICAgICogQmlnTnVtYmVyLmNvbmZpZyh7IERFQ0lNQUxfUExBQ0VTIDogMjAsIFJPVU5ESU5HX01PREUgOiA0IH0pXHJcbiAgICAgKlxyXG4gICAgICogSWdub3JlIHByb3BlcnRpZXMvcGFyYW1ldGVycyBzZXQgdG8gbnVsbCBvciB1bmRlZmluZWQsIGV4Y2VwdCBmb3IgQUxQSEFCRVQuXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGFuIG9iamVjdCB3aXRoIHRoZSBwcm9wZXJ0aWVzIGN1cnJlbnQgdmFsdWVzLlxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIuY29uZmlnID0gQmlnTnVtYmVyLnNldCA9IGZ1bmN0aW9uIChvYmopIHtcclxuICAgICAgdmFyIHAsIHY7XHJcblxyXG4gICAgICBpZiAob2JqICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT0gJ29iamVjdCcpIHtcclxuXHJcbiAgICAgICAgICAvLyBERUNJTUFMX1BMQUNFUyB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gREVDSU1BTF9QTEFDRVMge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0RFQ0lNQUxfUExBQ0VTJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgREVDSU1BTF9QTEFDRVMgPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJPVU5ESU5HX01PREUge251bWJlcn0gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBST1VORElOR19NT0RFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdST1VORElOR19NT0RFJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgOCwgcCk7XHJcbiAgICAgICAgICAgIFJPVU5ESU5HX01PREUgPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEVYUE9ORU5USUFMX0FUIHtudW1iZXJ8bnVtYmVyW119XHJcbiAgICAgICAgICAvLyBJbnRlZ2VyLCAtTUFYIHRvIE1BWCBpbmNsdXNpdmUgb3JcclxuICAgICAgICAgIC8vIFtpbnRlZ2VyIC1NQVggdG8gMCBpbmNsdXNpdmUsIDAgdG8gTUFYIGluY2x1c2l2ZV0uXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gRVhQT05FTlRJQUxfQVQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0VYUE9ORU5USUFMX0FUJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHYgJiYgdi5wb3ApIHtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzBdLCAtTUFYLCAwLCBwKTtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzFdLCAwLCBNQVgsIHApO1xyXG4gICAgICAgICAgICAgIFRPX0VYUF9ORUcgPSB2WzBdO1xyXG4gICAgICAgICAgICAgIFRPX0VYUF9QT1MgPSB2WzFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHYsIC1NQVgsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgVE9fRVhQX05FRyA9IC0oVE9fRVhQX1BPUyA9IHYgPCAwID8gLXYgOiB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJBTkdFIHtudW1iZXJ8bnVtYmVyW119IE5vbi16ZXJvIGludGVnZXIsIC1NQVggdG8gTUFYIGluY2x1c2l2ZSBvclxyXG4gICAgICAgICAgLy8gW2ludGVnZXIgLU1BWCB0byAtMSBpbmNsdXNpdmUsIGludGVnZXIgMSB0byBNQVggaW5jbHVzaXZlXS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBSQU5HRSB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V8Y2Fubm90IGJlIHplcm99OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnUkFOR0UnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpZiAodiAmJiB2LnBvcCkge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMF0sIC1NQVgsIC0xLCBwKTtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzFdLCAxLCBNQVgsIHApO1xyXG4gICAgICAgICAgICAgIE1JTl9FWFAgPSB2WzBdO1xyXG4gICAgICAgICAgICAgIE1BWF9FWFAgPSB2WzFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHYsIC1NQVgsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgaWYgKHYpIHtcclxuICAgICAgICAgICAgICAgIE1JTl9FWFAgPSAtKE1BWF9FWFAgPSB2IDwgMCA/IC12IDogdik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgcCArICcgY2Fubm90IGJlIHplcm86ICcgKyB2KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBDUllQVE8ge2Jvb2xlYW59IHRydWUgb3IgZmFsc2UuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gQ1JZUFRPIG5vdCB0cnVlIG9yIGZhbHNlOiB7dn0nXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gY3J5cHRvIHVuYXZhaWxhYmxlJ1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0NSWVBUTycpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGlmICh2ID09PSAhIXYpIHtcclxuICAgICAgICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8gIT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvICYmXHJcbiAgICAgICAgICAgICAgICAgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgfHwgY3J5cHRvLnJhbmRvbUJ5dGVzKSkge1xyXG4gICAgICAgICAgICAgICAgICBDUllQVE8gPSB2O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgQ1JZUFRPID0gIXY7XHJcbiAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnY3J5cHRvIHVuYXZhaWxhYmxlJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIENSWVBUTyA9IHY7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIG5vdCB0cnVlIG9yIGZhbHNlOiAnICsgdik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBNT0RVTE9fTU9ERSB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIDkgaW5jbHVzaXZlLlxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE1PRFVMT19NT0RFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdNT0RVTE9fTU9ERScpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGludENoZWNrKHYsIDAsIDksIHApO1xyXG4gICAgICAgICAgICBNT0RVTE9fTU9ERSA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUE9XX1BSRUNJU0lPTiB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gUE9XX1BSRUNJU0lPTiB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnUE9XX1BSRUNJU0lPTicpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGludENoZWNrKHYsIDAsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgIFBPV19QUkVDSVNJT04gPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEZPUk1BVCB7b2JqZWN0fVxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIEZPUk1BVCBub3QgYW4gb2JqZWN0OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnRk9STUFUJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09ICdvYmplY3QnKSBGT1JNQVQgPSB2O1xyXG4gICAgICAgICAgICBlbHNlIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyBwICsgJyBub3QgYW4gb2JqZWN0OiAnICsgdik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gQUxQSEFCRVQge3N0cmluZ31cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBBTFBIQUJFVCBpbnZhbGlkOiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnQUxQSEFCRVQnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG5cclxuICAgICAgICAgICAgLy8gRGlzYWxsb3cgaWYgbGVzcyB0aGFuIHR3byBjaGFyYWN0ZXJzLFxyXG4gICAgICAgICAgICAvLyBvciBpZiBpdCBjb250YWlucyAnKycsICctJywgJy4nLCB3aGl0ZXNwYWNlLCBvciBhIHJlcGVhdGVkIGNoYXJhY3Rlci5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09ICdzdHJpbmcnICYmICEvXi4/JHxbK1xcLS5cXHNdfCguKS4qXFwxLy50ZXN0KHYpKSB7XHJcbiAgICAgICAgICAgICAgQUxQSEFCRVQgPSB2O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIGludmFsaWQ6ICcgKyB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBPYmplY3QgZXhwZWN0ZWQ6IHt2fSdcclxuICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ09iamVjdCBleHBlY3RlZDogJyArIG9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIERFQ0lNQUxfUExBQ0VTOiBERUNJTUFMX1BMQUNFUyxcclxuICAgICAgICBST1VORElOR19NT0RFOiBST1VORElOR19NT0RFLFxyXG4gICAgICAgIEVYUE9ORU5USUFMX0FUOiBbVE9fRVhQX05FRywgVE9fRVhQX1BPU10sXHJcbiAgICAgICAgUkFOR0U6IFtNSU5fRVhQLCBNQVhfRVhQXSxcclxuICAgICAgICBDUllQVE86IENSWVBUTyxcclxuICAgICAgICBNT0RVTE9fTU9ERTogTU9EVUxPX01PREUsXHJcbiAgICAgICAgUE9XX1BSRUNJU0lPTjogUE9XX1BSRUNJU0lPTixcclxuICAgICAgICBGT1JNQVQ6IEZPUk1BVCxcclxuICAgICAgICBBTFBIQUJFVDogQUxQSEFCRVRcclxuICAgICAgfTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB2IGlzIGEgQmlnTnVtYmVyIGluc3RhbmNlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICpcclxuICAgICAqIElmIEJpZ051bWJlci5ERUJVRyBpcyB0cnVlLCB0aHJvdyBpZiBhIEJpZ051bWJlciBpbnN0YW5jZSBpcyBub3Qgd2VsbC1mb3JtZWQuXHJcbiAgICAgKlxyXG4gICAgICogdiB7YW55fVxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBJbnZhbGlkIEJpZ051bWJlcjoge3Z9J1xyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIuaXNCaWdOdW1iZXIgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICBpZiAoIXYgfHwgdi5faXNCaWdOdW1iZXIgIT09IHRydWUpIHJldHVybiBmYWxzZTtcclxuICAgICAgaWYgKCFCaWdOdW1iZXIuREVCVUcpIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgdmFyIGksIG4sXHJcbiAgICAgICAgYyA9IHYuYyxcclxuICAgICAgICBlID0gdi5lLFxyXG4gICAgICAgIHMgPSB2LnM7XHJcblxyXG4gICAgICBvdXQ6IGlmICh7fS50b1N0cmluZy5jYWxsKGMpID09ICdbb2JqZWN0IEFycmF5XScpIHtcclxuXHJcbiAgICAgICAgaWYgKChzID09PSAxIHx8IHMgPT09IC0xKSAmJiBlID49IC1NQVggJiYgZSA8PSBNQVggJiYgZSA9PT0gbWF0aGZsb29yKGUpKSB7XHJcblxyXG4gICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgemVybywgdGhlIEJpZ051bWJlciB2YWx1ZSBtdXN0IGJlIHplcm8uXHJcbiAgICAgICAgICBpZiAoY1swXSA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoZSA9PT0gMCAmJiBjLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgbnVtYmVyIG9mIGRpZ2l0cyB0aGF0IGNbMF0gc2hvdWxkIGhhdmUsIGJhc2VkIG9uIHRoZSBleHBvbmVudC5cclxuICAgICAgICAgIGkgPSAoZSArIDEpICUgTE9HX0JBU0U7XHJcbiAgICAgICAgICBpZiAoaSA8IDEpIGkgKz0gTE9HX0JBU0U7XHJcblxyXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiBkaWdpdHMgb2YgY1swXS5cclxuICAgICAgICAgIC8vaWYgKE1hdGguY2VpbChNYXRoLmxvZyhjWzBdICsgMSkgLyBNYXRoLkxOMTApID09IGkpIHtcclxuICAgICAgICAgIGlmIChTdHJpbmcoY1swXSkubGVuZ3RoID09IGkpIHtcclxuXHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgbiA9IGNbaV07XHJcbiAgICAgICAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gQkFTRSB8fCBuICE9PSBtYXRoZmxvb3IobikpIGJyZWFrIG91dDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gTGFzdCBlbGVtZW50IGNhbm5vdCBiZSB6ZXJvLCB1bmxlc3MgaXQgaXMgdGhlIG9ubHkgZWxlbWVudC5cclxuICAgICAgICAgICAgaWYgKG4gIT09IDApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIC8vIEluZmluaXR5L05hTlxyXG4gICAgICB9IGVsc2UgaWYgKGMgPT09IG51bGwgJiYgZSA9PT0gbnVsbCAmJiAocyA9PT0gbnVsbCB8fCBzID09PSAxIHx8IHMgPT09IC0xKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgIChiaWdudW1iZXJFcnJvciArICdJbnZhbGlkIEJpZ051bWJlcjogJyArIHYpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIG1heGltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIubWF4aW11bSA9IEJpZ051bWJlci5tYXggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBtYXhPck1pbihhcmd1bWVudHMsIFAubHQpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIG1pbmltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIubWluaW11bSA9IEJpZ051bWJlci5taW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBtYXhPck1pbihhcmd1bWVudHMsIFAuZ3QpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2l0aCBhIHJhbmRvbSB2YWx1ZSBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMCBhbmQgbGVzcyB0aGFuIDEsXHJcbiAgICAgKiBhbmQgd2l0aCBkcCwgb3IgREVDSU1BTF9QTEFDRVMgaWYgZHAgaXMgb21pdHRlZCwgZGVjaW1hbCBwbGFjZXMgKG9yIGxlc3MgaWYgdHJhaWxpbmdcclxuICAgICAqIHplcm9zIGFyZSBwcm9kdWNlZCkuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB9J1xyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIGNyeXB0byB1bmF2YWlsYWJsZSdcclxuICAgICAqL1xyXG4gICAgQmlnTnVtYmVyLnJhbmRvbSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBwb3cyXzUzID0gMHgyMDAwMDAwMDAwMDAwMDtcclxuXHJcbiAgICAgIC8vIFJldHVybiBhIDUzIGJpdCBpbnRlZ2VyIG4sIHdoZXJlIDAgPD0gbiA8IDkwMDcxOTkyNTQ3NDA5OTIuXHJcbiAgICAgIC8vIENoZWNrIGlmIE1hdGgucmFuZG9tKCkgcHJvZHVjZXMgbW9yZSB0aGFuIDMyIGJpdHMgb2YgcmFuZG9tbmVzcy5cclxuICAgICAgLy8gSWYgaXQgZG9lcywgYXNzdW1lIGF0IGxlYXN0IDUzIGJpdHMgYXJlIHByb2R1Y2VkLCBvdGhlcndpc2UgYXNzdW1lIGF0IGxlYXN0IDMwIGJpdHMuXHJcbiAgICAgIC8vIDB4NDAwMDAwMDAgaXMgMl4zMCwgMHg4MDAwMDAgaXMgMl4yMywgMHgxZmZmZmYgaXMgMl4yMSAtIDEuXHJcbiAgICAgIHZhciByYW5kb201M2JpdEludCA9IChNYXRoLnJhbmRvbSgpICogcG93Ml81MykgJiAweDFmZmZmZlxyXG4gICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBtYXRoZmxvb3IoTWF0aC5yYW5kb20oKSAqIHBvdzJfNTMpOyB9XHJcbiAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICgoTWF0aC5yYW5kb20oKSAqIDB4NDAwMDAwMDAgfCAwKSAqIDB4ODAwMDAwKSArXHJcbiAgICAgICAgIChNYXRoLnJhbmRvbSgpICogMHg4MDAwMDAgfCAwKTsgfTtcclxuXHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZHApIHtcclxuICAgICAgICB2YXIgYSwgYiwgZSwgaywgdixcclxuICAgICAgICAgIGkgPSAwLFxyXG4gICAgICAgICAgYyA9IFtdLFxyXG4gICAgICAgICAgcmFuZCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuXHJcbiAgICAgICAgaWYgKGRwID09IG51bGwpIGRwID0gREVDSU1BTF9QTEFDRVM7XHJcbiAgICAgICAgZWxzZSBpbnRDaGVjayhkcCwgMCwgTUFYKTtcclxuXHJcbiAgICAgICAgayA9IG1hdGhjZWlsKGRwIC8gTE9HX0JBU0UpO1xyXG5cclxuICAgICAgICBpZiAoQ1JZUFRPKSB7XHJcblxyXG4gICAgICAgICAgLy8gQnJvd3NlcnMgc3VwcG9ydGluZyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLlxyXG4gICAgICAgICAgaWYgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcclxuXHJcbiAgICAgICAgICAgIGEgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheShrICo9IDIpKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoOyBpIDwgazspIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gNTMgYml0czpcclxuICAgICAgICAgICAgICAvLyAoKE1hdGgucG93KDIsIDMyKSAtIDEpICogTWF0aC5wb3coMiwgMjEpKS50b1N0cmluZygyKVxyXG4gICAgICAgICAgICAgIC8vIDExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwXHJcbiAgICAgICAgICAgICAgLy8gKChNYXRoLnBvdygyLCAzMikgLSAxKSA+Pj4gMTEpLnRvU3RyaW5nKDIpXHJcbiAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTEgMTExMTExMTEgMTExMTExMTFcclxuICAgICAgICAgICAgICAvLyAweDIwMDAwIGlzIDJeMjEuXHJcbiAgICAgICAgICAgICAgdiA9IGFbaV0gKiAweDIwMDAwICsgKGFbaSArIDFdID4+PiAxMSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFJlamVjdGlvbiBzYW1wbGluZzpcclxuICAgICAgICAgICAgICAvLyAwIDw9IHYgPCA5MDA3MTk5MjU0NzQwOTkyXHJcbiAgICAgICAgICAgICAgLy8gUHJvYmFiaWxpdHkgdGhhdCB2ID49IDllMTUsIGlzXHJcbiAgICAgICAgICAgICAgLy8gNzE5OTI1NDc0MDk5MiAvIDkwMDcxOTkyNTQ3NDA5OTIgfj0gMC4wMDA4LCBpLmUuIDEgaW4gMTI1MVxyXG4gICAgICAgICAgICAgIGlmICh2ID49IDllMTUpIHtcclxuICAgICAgICAgICAgICAgIGIgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgyKSk7XHJcbiAgICAgICAgICAgICAgICBhW2ldID0gYlswXTtcclxuICAgICAgICAgICAgICAgIGFbaSArIDFdID0gYlsxXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDAgPD0gdiA8PSA4OTk5OTk5OTk5OTk5OTk5XHJcbiAgICAgICAgICAgICAgICAvLyAwIDw9ICh2ICUgMWUxNCkgPD0gOTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIGMucHVzaCh2ICUgMWUxNCk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgPSBrIC8gMjtcclxuXHJcbiAgICAgICAgICAvLyBOb2RlLmpzIHN1cHBvcnRpbmcgY3J5cHRvLnJhbmRvbUJ5dGVzLlxyXG4gICAgICAgICAgfSBlbHNlIGlmIChjcnlwdG8ucmFuZG9tQnl0ZXMpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGJ1ZmZlclxyXG4gICAgICAgICAgICBhID0gY3J5cHRvLnJhbmRvbUJ5dGVzKGsgKj0gNyk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKDsgaSA8IGs7KSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIDB4MTAwMDAwMDAwMDAwMCBpcyAyXjQ4LCAweDEwMDAwMDAwMDAwIGlzIDJeNDBcclxuICAgICAgICAgICAgICAvLyAweDEwMDAwMDAwMCBpcyAyXjMyLCAweDEwMDAwMDAgaXMgMl4yNFxyXG4gICAgICAgICAgICAgIC8vIDExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExXHJcbiAgICAgICAgICAgICAgLy8gMCA8PSB2IDwgOTAwNzE5OTI1NDc0MDk5MlxyXG4gICAgICAgICAgICAgIHYgPSAoKGFbaV0gJiAzMSkgKiAweDEwMDAwMDAwMDAwMDApICsgKGFbaSArIDFdICogMHgxMDAwMDAwMDAwMCkgK1xyXG4gICAgICAgICAgICAgICAgIChhW2kgKyAyXSAqIDB4MTAwMDAwMDAwKSArIChhW2kgKyAzXSAqIDB4MTAwMDAwMCkgK1xyXG4gICAgICAgICAgICAgICAgIChhW2kgKyA0XSA8PCAxNikgKyAoYVtpICsgNV0gPDwgOCkgKyBhW2kgKyA2XTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHYgPj0gOWUxNSkge1xyXG4gICAgICAgICAgICAgICAgY3J5cHRvLnJhbmRvbUJ5dGVzKDcpLmNvcHkoYSwgaSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAwIDw9ICh2ICUgMWUxNCkgPD0gOTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIGMucHVzaCh2ICUgMWUxNCk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgPSBrIC8gNztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIENSWVBUTyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ2NyeXB0byB1bmF2YWlsYWJsZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVXNlIE1hdGgucmFuZG9tLlxyXG4gICAgICAgIGlmICghQ1JZUFRPKSB7XHJcblxyXG4gICAgICAgICAgZm9yICg7IGkgPCBrOykge1xyXG4gICAgICAgICAgICB2ID0gcmFuZG9tNTNiaXRJbnQoKTtcclxuICAgICAgICAgICAgaWYgKHYgPCA5ZTE1KSBjW2krK10gPSB2ICUgMWUxNDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGsgPSBjWy0taV07XHJcbiAgICAgICAgZHAgJT0gTE9HX0JBU0U7XHJcblxyXG4gICAgICAgIC8vIENvbnZlcnQgdHJhaWxpbmcgZGlnaXRzIHRvIHplcm9zIGFjY29yZGluZyB0byBkcC5cclxuICAgICAgICBpZiAoayAmJiBkcCkge1xyXG4gICAgICAgICAgdiA9IFBPV1NfVEVOW0xPR19CQVNFIC0gZHBdO1xyXG4gICAgICAgICAgY1tpXSA9IG1hdGhmbG9vcihrIC8gdikgKiB2O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIGVsZW1lbnRzIHdoaWNoIGFyZSB6ZXJvLlxyXG4gICAgICAgIGZvciAoOyBjW2ldID09PSAwOyBjLnBvcCgpLCBpLS0pO1xyXG5cclxuICAgICAgICAvLyBaZXJvP1xyXG4gICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgYyA9IFtlID0gMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBSZW1vdmUgbGVhZGluZyBlbGVtZW50cyB3aGljaCBhcmUgemVybyBhbmQgYWRqdXN0IGV4cG9uZW50IGFjY29yZGluZ2x5LlxyXG4gICAgICAgICAgZm9yIChlID0gLTEgOyBjWzBdID09PSAwOyBjLnNwbGljZSgwLCAxKSwgZSAtPSBMT0dfQkFTRSk7XHJcblxyXG4gICAgICAgICAgLy8gQ291bnQgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBjIHRvIGRldGVybWluZSBsZWFkaW5nIHplcm9zLCBhbmQuLi5cclxuICAgICAgICAgIGZvciAoaSA9IDEsIHYgPSBjWzBdOyB2ID49IDEwOyB2IC89IDEwLCBpKyspO1xyXG5cclxuICAgICAgICAgIC8vIGFkanVzdCB0aGUgZXhwb25lbnQgYWNjb3JkaW5nbHkuXHJcbiAgICAgICAgICBpZiAoaSA8IExPR19CQVNFKSBlIC09IExPR19CQVNFIC0gaTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJhbmQuZSA9IGU7XHJcbiAgICAgICAgcmFuZC5jID0gYztcclxuICAgICAgICByZXR1cm4gcmFuZDtcclxuICAgICAgfTtcclxuICAgIH0pKCk7XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHN1bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5zdW0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBpID0gMSxcclxuICAgICAgICBhcmdzID0gYXJndW1lbnRzLFxyXG4gICAgICAgIHN1bSA9IG5ldyBCaWdOdW1iZXIoYXJnc1swXSk7XHJcbiAgICAgIGZvciAoOyBpIDwgYXJncy5sZW5ndGg7KSBzdW0gPSBzdW0ucGx1cyhhcmdzW2krK10pO1xyXG4gICAgICByZXR1cm4gc3VtO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLy8gUFJJVkFURSBGVU5DVElPTlNcclxuXHJcblxyXG4gICAgLy8gQ2FsbGVkIGJ5IEJpZ051bWJlciBhbmQgQmlnTnVtYmVyLnByb3RvdHlwZS50b1N0cmluZy5cclxuICAgIGNvbnZlcnRCYXNlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIGRlY2ltYWwgPSAnMDEyMzQ1Njc4OSc7XHJcblxyXG4gICAgICAvKlxyXG4gICAgICAgKiBDb252ZXJ0IHN0cmluZyBvZiBiYXNlSW4gdG8gYW4gYXJyYXkgb2YgbnVtYmVycyBvZiBiYXNlT3V0LlxyXG4gICAgICAgKiBFZy4gdG9CYXNlT3V0KCcyNTUnLCAxMCwgMTYpIHJldHVybnMgWzE1LCAxNV0uXHJcbiAgICAgICAqIEVnLiB0b0Jhc2VPdXQoJ2ZmJywgMTYsIDEwKSByZXR1cm5zIFsyLCA1LCA1XS5cclxuICAgICAgICovXHJcbiAgICAgIGZ1bmN0aW9uIHRvQmFzZU91dChzdHIsIGJhc2VJbiwgYmFzZU91dCwgYWxwaGFiZXQpIHtcclxuICAgICAgICB2YXIgaixcclxuICAgICAgICAgIGFyciA9IFswXSxcclxuICAgICAgICAgIGFyckwsXHJcbiAgICAgICAgICBpID0gMCxcclxuICAgICAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAgIGZvciAoOyBpIDwgbGVuOykge1xyXG4gICAgICAgICAgZm9yIChhcnJMID0gYXJyLmxlbmd0aDsgYXJyTC0tOyBhcnJbYXJyTF0gKj0gYmFzZUluKTtcclxuXHJcbiAgICAgICAgICBhcnJbMF0gKz0gYWxwaGFiZXQuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpO1xyXG5cclxuICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBhcnIubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnJbal0gPiBiYXNlT3V0IC0gMSkge1xyXG4gICAgICAgICAgICAgIGlmIChhcnJbaiArIDFdID09IG51bGwpIGFycltqICsgMV0gPSAwO1xyXG4gICAgICAgICAgICAgIGFycltqICsgMV0gKz0gYXJyW2pdIC8gYmFzZU91dCB8IDA7XHJcbiAgICAgICAgICAgICAgYXJyW2pdICU9IGJhc2VPdXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhcnIucmV2ZXJzZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IGEgbnVtZXJpYyBzdHJpbmcgb2YgYmFzZUluIHRvIGEgbnVtZXJpYyBzdHJpbmcgb2YgYmFzZU91dC5cclxuICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyB0b1N0cmluZywgd2UgYXJlIGNvbnZlcnRpbmcgZnJvbSBiYXNlIDEwIHRvIGJhc2VPdXQuXHJcbiAgICAgIC8vIElmIHRoZSBjYWxsZXIgaXMgQmlnTnVtYmVyLCB3ZSBhcmUgY29udmVydGluZyBmcm9tIGJhc2VJbiB0byBiYXNlIDEwLlxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHN0ciwgYmFzZUluLCBiYXNlT3V0LCBzaWduLCBjYWxsZXJJc1RvU3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIGFscGhhYmV0LCBkLCBlLCBrLCByLCB4LCB4YywgeSxcclxuICAgICAgICAgIGkgPSBzdHIuaW5kZXhPZignLicpLFxyXG4gICAgICAgICAgZHAgPSBERUNJTUFMX1BMQUNFUyxcclxuICAgICAgICAgIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuXHJcbiAgICAgICAgLy8gTm9uLWludGVnZXIuXHJcbiAgICAgICAgaWYgKGkgPj0gMCkge1xyXG4gICAgICAgICAgayA9IFBPV19QUkVDSVNJT047XHJcblxyXG4gICAgICAgICAgLy8gVW5saW1pdGVkIHByZWNpc2lvbi5cclxuICAgICAgICAgIFBPV19QUkVDSVNJT04gPSAwO1xyXG4gICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgICB5ID0gbmV3IEJpZ051bWJlcihiYXNlSW4pO1xyXG4gICAgICAgICAgeCA9IHkucG93KHN0ci5sZW5ndGggLSBpKTtcclxuICAgICAgICAgIFBPV19QUkVDSVNJT04gPSBrO1xyXG5cclxuICAgICAgICAgIC8vIENvbnZlcnQgc3RyIGFzIGlmIGFuIGludGVnZXIsIHRoZW4gcmVzdG9yZSB0aGUgZnJhY3Rpb24gcGFydCBieSBkaXZpZGluZyB0aGVcclxuICAgICAgICAgIC8vIHJlc3VsdCBieSBpdHMgYmFzZSByYWlzZWQgdG8gYSBwb3dlci5cclxuXHJcbiAgICAgICAgICB5LmMgPSB0b0Jhc2VPdXQodG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcoeC5jKSwgeC5lLCAnMCcpLFxyXG4gICAgICAgICAgIDEwLCBiYXNlT3V0LCBkZWNpbWFsKTtcclxuICAgICAgICAgIHkuZSA9IHkuYy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgYXMgaW50ZWdlci5cclxuXHJcbiAgICAgICAgeGMgPSB0b0Jhc2VPdXQoc3RyLCBiYXNlSW4sIGJhc2VPdXQsIGNhbGxlcklzVG9TdHJpbmdcclxuICAgICAgICAgPyAoYWxwaGFiZXQgPSBBTFBIQUJFVCwgZGVjaW1hbClcclxuICAgICAgICAgOiAoYWxwaGFiZXQgPSBkZWNpbWFsLCBBTFBIQUJFVCkpO1xyXG5cclxuICAgICAgICAvLyB4YyBub3cgcmVwcmVzZW50cyBzdHIgYXMgYW4gaW50ZWdlciBhbmQgY29udmVydGVkIHRvIGJhc2VPdXQuIGUgaXMgdGhlIGV4cG9uZW50LlxyXG4gICAgICAgIGUgPSBrID0geGMubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yICg7IHhjWy0ta10gPT0gMDsgeGMucG9wKCkpO1xyXG5cclxuICAgICAgICAvLyBaZXJvP1xyXG4gICAgICAgIGlmICgheGNbMF0pIHJldHVybiBhbHBoYWJldC5jaGFyQXQoMCk7XHJcblxyXG4gICAgICAgIC8vIERvZXMgc3RyIHJlcHJlc2VudCBhbiBpbnRlZ2VyPyBJZiBzbywgbm8gbmVlZCBmb3IgdGhlIGRpdmlzaW9uLlxyXG4gICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgLS1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LmMgPSB4YztcclxuICAgICAgICAgIHguZSA9IGU7XHJcblxyXG4gICAgICAgICAgLy8gVGhlIHNpZ24gaXMgbmVlZGVkIGZvciBjb3JyZWN0IHJvdW5kaW5nLlxyXG4gICAgICAgICAgeC5zID0gc2lnbjtcclxuICAgICAgICAgIHggPSBkaXYoeCwgeSwgZHAsIHJtLCBiYXNlT3V0KTtcclxuICAgICAgICAgIHhjID0geC5jO1xyXG4gICAgICAgICAgciA9IHgucjtcclxuICAgICAgICAgIGUgPSB4LmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB4YyBub3cgcmVwcmVzZW50cyBzdHIgY29udmVydGVkIHRvIGJhc2VPdXQuXHJcblxyXG4gICAgICAgIC8vIFRIZSBpbmRleCBvZiB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgZCA9IGUgKyBkcCArIDE7XHJcblxyXG4gICAgICAgIC8vIFRoZSByb3VuZGluZyBkaWdpdDogdGhlIGRpZ2l0IHRvIHRoZSByaWdodCBvZiB0aGUgZGlnaXQgdGhhdCBtYXkgYmUgcm91bmRlZCB1cC5cclxuICAgICAgICBpID0geGNbZF07XHJcblxyXG4gICAgICAgIC8vIExvb2sgYXQgdGhlIHJvdW5kaW5nIGRpZ2l0cyBhbmQgbW9kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byByb3VuZCB1cC5cclxuXHJcbiAgICAgICAgayA9IGJhc2VPdXQgLyAyO1xyXG4gICAgICAgIHIgPSByIHx8IGQgPCAwIHx8IHhjW2QgKyAxXSAhPSBudWxsO1xyXG5cclxuICAgICAgICByID0gcm0gPCA0ID8gKGkgIT0gbnVsbCB8fCByKSAmJiAocm0gPT0gMCB8fCBybSA9PSAoeC5zIDwgMCA/IDMgOiAyKSlcclxuICAgICAgICAgICAgICA6IGkgPiBrIHx8IGkgPT0gayAmJihybSA9PSA0IHx8IHIgfHwgcm0gPT0gNiAmJiB4Y1tkIC0gMV0gJiAxIHx8XHJcbiAgICAgICAgICAgICAgIHJtID09ICh4LnMgPCAwID8gOCA6IDcpKTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIGluZGV4IG9mIHRoZSByb3VuZGluZyBkaWdpdCBpcyBub3QgZ3JlYXRlciB0aGFuIHplcm8sIG9yIHhjIHJlcHJlc2VudHNcclxuICAgICAgICAvLyB6ZXJvLCB0aGVuIHRoZSByZXN1bHQgb2YgdGhlIGJhc2UgY29udmVyc2lvbiBpcyB6ZXJvIG9yLCBpZiByb3VuZGluZyB1cCwgYSB2YWx1ZVxyXG4gICAgICAgIC8vIHN1Y2ggYXMgMC4wMDAwMS5cclxuICAgICAgICBpZiAoZCA8IDEgfHwgIXhjWzBdKSB7XHJcblxyXG4gICAgICAgICAgLy8gMV4tZHAgb3IgMFxyXG4gICAgICAgICAgc3RyID0gciA/IHRvRml4ZWRQb2ludChhbHBoYWJldC5jaGFyQXQoMSksIC1kcCwgYWxwaGFiZXQuY2hhckF0KDApKSA6IGFscGhhYmV0LmNoYXJBdCgwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIFRydW5jYXRlIHhjIHRvIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgICAgICB4Yy5sZW5ndGggPSBkO1xyXG5cclxuICAgICAgICAgIC8vIFJvdW5kIHVwP1xyXG4gICAgICAgICAgaWYgKHIpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIFJvdW5kaW5nIHVwIG1heSBtZWFuIHRoZSBwcmV2aW91cyBkaWdpdCBoYXMgdG8gYmUgcm91bmRlZCB1cCBhbmQgc28gb24uXHJcbiAgICAgICAgICAgIGZvciAoLS1iYXNlT3V0OyArK3hjWy0tZF0gPiBiYXNlT3V0Oykge1xyXG4gICAgICAgICAgICAgIHhjW2RdID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKCFkKSB7XHJcbiAgICAgICAgICAgICAgICArK2U7XHJcbiAgICAgICAgICAgICAgICB4YyA9IFsxXS5jb25jYXQoeGMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIERldGVybWluZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICAgIGZvciAoayA9IHhjLmxlbmd0aDsgIXhjWy0ta107KTtcclxuXHJcbiAgICAgICAgICAvLyBFLmcuIFs0LCAxMSwgMTVdIGJlY29tZXMgNGJmLlxyXG4gICAgICAgICAgZm9yIChpID0gMCwgc3RyID0gJyc7IGkgPD0gazsgc3RyICs9IGFscGhhYmV0LmNoYXJBdCh4Y1tpKytdKSk7XHJcblxyXG4gICAgICAgICAgLy8gQWRkIGxlYWRpbmcgemVyb3MsIGRlY2ltYWwgcG9pbnQgYW5kIHRyYWlsaW5nIHplcm9zIGFzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgc3RyID0gdG9GaXhlZFBvaW50KHN0ciwgZSwgYWxwaGFiZXQuY2hhckF0KDApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRoZSBjYWxsZXIgd2lsbCBhZGQgdGhlIHNpZ24uXHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgICAgfTtcclxuICAgIH0pKCk7XHJcblxyXG5cclxuICAgIC8vIFBlcmZvcm0gZGl2aXNpb24gaW4gdGhlIHNwZWNpZmllZCBiYXNlLiBDYWxsZWQgYnkgZGl2IGFuZCBjb252ZXJ0QmFzZS5cclxuICAgIGRpdiA9IChmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAvLyBBc3N1bWUgbm9uLXplcm8geCBhbmQgay5cclxuICAgICAgZnVuY3Rpb24gbXVsdGlwbHkoeCwgaywgYmFzZSkge1xyXG4gICAgICAgIHZhciBtLCB0ZW1wLCB4bG8sIHhoaSxcclxuICAgICAgICAgIGNhcnJ5ID0gMCxcclxuICAgICAgICAgIGkgPSB4Lmxlbmd0aCxcclxuICAgICAgICAgIGtsbyA9IGsgJSBTUVJUX0JBU0UsXHJcbiAgICAgICAgICBraGkgPSBrIC8gU1FSVF9CQVNFIHwgMDtcclxuXHJcbiAgICAgICAgZm9yICh4ID0geC5zbGljZSgpOyBpLS07KSB7XHJcbiAgICAgICAgICB4bG8gPSB4W2ldICUgU1FSVF9CQVNFO1xyXG4gICAgICAgICAgeGhpID0geFtpXSAvIFNRUlRfQkFTRSB8IDA7XHJcbiAgICAgICAgICBtID0ga2hpICogeGxvICsgeGhpICoga2xvO1xyXG4gICAgICAgICAgdGVtcCA9IGtsbyAqIHhsbyArICgobSAlIFNRUlRfQkFTRSkgKiBTUVJUX0JBU0UpICsgY2Fycnk7XHJcbiAgICAgICAgICBjYXJyeSA9ICh0ZW1wIC8gYmFzZSB8IDApICsgKG0gLyBTUVJUX0JBU0UgfCAwKSArIGtoaSAqIHhoaTtcclxuICAgICAgICAgIHhbaV0gPSB0ZW1wICUgYmFzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjYXJyeSkgeCA9IFtjYXJyeV0uY29uY2F0KHgpO1xyXG5cclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgZnVuY3Rpb24gY29tcGFyZShhLCBiLCBhTCwgYkwpIHtcclxuICAgICAgICB2YXIgaSwgY21wO1xyXG5cclxuICAgICAgICBpZiAoYUwgIT0gYkwpIHtcclxuICAgICAgICAgIGNtcCA9IGFMID4gYkwgPyAxIDogLTE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICBmb3IgKGkgPSBjbXAgPSAwOyBpIDwgYUw7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgaWYgKGFbaV0gIT0gYltpXSkge1xyXG4gICAgICAgICAgICAgIGNtcCA9IGFbaV0gPiBiW2ldID8gMSA6IC0xO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY21wO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiLCBhTCwgYmFzZSkge1xyXG4gICAgICAgIHZhciBpID0gMDtcclxuXHJcbiAgICAgICAgLy8gU3VidHJhY3QgYiBmcm9tIGEuXHJcbiAgICAgICAgZm9yICg7IGFMLS07KSB7XHJcbiAgICAgICAgICBhW2FMXSAtPSBpO1xyXG4gICAgICAgICAgaSA9IGFbYUxdIDwgYlthTF0gPyAxIDogMDtcclxuICAgICAgICAgIGFbYUxdID0gaSAqIGJhc2UgKyBhW2FMXSAtIGJbYUxdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yICg7ICFhWzBdICYmIGEubGVuZ3RoID4gMTsgYS5zcGxpY2UoMCwgMSkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB4OiBkaXZpZGVuZCwgeTogZGl2aXNvci5cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5LCBkcCwgcm0sIGJhc2UpIHtcclxuICAgICAgICB2YXIgY21wLCBlLCBpLCBtb3JlLCBuLCBwcm9kLCBwcm9kTCwgcSwgcWMsIHJlbSwgcmVtTCwgcmVtMCwgeGksIHhMLCB5YzAsXHJcbiAgICAgICAgICB5TCwgeXosXHJcbiAgICAgICAgICBzID0geC5zID09IHkucyA/IDEgOiAtMSxcclxuICAgICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgICAgeWMgPSB5LmM7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciBOYU4sIEluZmluaXR5IG9yIDA/XHJcbiAgICAgICAgaWYgKCF4YyB8fCAheGNbMF0gfHwgIXljIHx8ICF5Y1swXSkge1xyXG5cclxuICAgICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKFxyXG5cclxuICAgICAgICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBOYU4sIG9yIGJvdGggSW5maW5pdHkgb3IgMC5cclxuICAgICAgICAgICAheC5zIHx8ICF5LnMgfHwgKHhjID8geWMgJiYgeGNbMF0gPT0geWNbMF0gOiAheWMpID8gTmFOIDpcclxuXHJcbiAgICAgICAgICAgIC8vIFJldHVybiDCsTAgaWYgeCBpcyDCsTAgb3IgeSBpcyDCsUluZmluaXR5LCBvciByZXR1cm4gwrFJbmZpbml0eSBhcyB5IGlzIMKxMC5cclxuICAgICAgICAgICAgeGMgJiYgeGNbMF0gPT0gMCB8fCAheWMgPyBzICogMCA6IHMgLyAwXHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBxID0gbmV3IEJpZ051bWJlcihzKTtcclxuICAgICAgICBxYyA9IHEuYyA9IFtdO1xyXG4gICAgICAgIGUgPSB4LmUgLSB5LmU7XHJcbiAgICAgICAgcyA9IGRwICsgZSArIDE7XHJcblxyXG4gICAgICAgIGlmICghYmFzZSkge1xyXG4gICAgICAgICAgYmFzZSA9IEJBU0U7XHJcbiAgICAgICAgICBlID0gYml0Rmxvb3IoeC5lIC8gTE9HX0JBU0UpIC0gYml0Rmxvb3IoeS5lIC8gTE9HX0JBU0UpO1xyXG4gICAgICAgICAgcyA9IHMgLyBMT0dfQkFTRSB8IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZXN1bHQgZXhwb25lbnQgbWF5IGJlIG9uZSBsZXNzIHRoZW4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgZS5cclxuICAgICAgICAvLyBUaGUgY29lZmZpY2llbnRzIG9mIHRoZSBCaWdOdW1iZXJzIGZyb20gY29udmVydEJhc2UgbWF5IGhhdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yIChpID0gMDsgeWNbaV0gPT0gKHhjW2ldIHx8IDApOyBpKyspO1xyXG5cclxuICAgICAgICBpZiAoeWNbaV0gPiAoeGNbaV0gfHwgMCkpIGUtLTtcclxuXHJcbiAgICAgICAgaWYgKHMgPCAwKSB7XHJcbiAgICAgICAgICBxYy5wdXNoKDEpO1xyXG4gICAgICAgICAgbW9yZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHhMID0geGMubGVuZ3RoO1xyXG4gICAgICAgICAgeUwgPSB5Yy5sZW5ndGg7XHJcbiAgICAgICAgICBpID0gMDtcclxuICAgICAgICAgIHMgKz0gMjtcclxuXHJcbiAgICAgICAgICAvLyBOb3JtYWxpc2UgeGMgYW5kIHljIHNvIGhpZ2hlc3Qgb3JkZXIgZGlnaXQgb2YgeWMgaXMgPj0gYmFzZSAvIDIuXHJcblxyXG4gICAgICAgICAgbiA9IG1hdGhmbG9vcihiYXNlIC8gKHljWzBdICsgMSkpO1xyXG5cclxuICAgICAgICAgIC8vIE5vdCBuZWNlc3NhcnksIGJ1dCB0byBoYW5kbGUgb2RkIGJhc2VzIHdoZXJlIHljWzBdID09IChiYXNlIC8gMikgLSAxLlxyXG4gICAgICAgICAgLy8gaWYgKG4gPiAxIHx8IG4rKyA9PSAxICYmIHljWzBdIDwgYmFzZSAvIDIpIHtcclxuICAgICAgICAgIGlmIChuID4gMSkge1xyXG4gICAgICAgICAgICB5YyA9IG11bHRpcGx5KHljLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgeGMgPSBtdWx0aXBseSh4YywgbiwgYmFzZSk7XHJcbiAgICAgICAgICAgIHlMID0geWMubGVuZ3RoO1xyXG4gICAgICAgICAgICB4TCA9IHhjLmxlbmd0aDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB4aSA9IHlMO1xyXG4gICAgICAgICAgcmVtID0geGMuc2xpY2UoMCwgeUwpO1xyXG4gICAgICAgICAgcmVtTCA9IHJlbS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgLy8gQWRkIHplcm9zIHRvIG1ha2UgcmVtYWluZGVyIGFzIGxvbmcgYXMgZGl2aXNvci5cclxuICAgICAgICAgIGZvciAoOyByZW1MIDwgeUw7IHJlbVtyZW1MKytdID0gMCk7XHJcbiAgICAgICAgICB5eiA9IHljLnNsaWNlKCk7XHJcbiAgICAgICAgICB5eiA9IFswXS5jb25jYXQoeXopO1xyXG4gICAgICAgICAgeWMwID0geWNbMF07XHJcbiAgICAgICAgICBpZiAoeWNbMV0gPj0gYmFzZSAvIDIpIHljMCsrO1xyXG4gICAgICAgICAgLy8gTm90IG5lY2Vzc2FyeSwgYnV0IHRvIHByZXZlbnQgdHJpYWwgZGlnaXQgbiA+IGJhc2UsIHdoZW4gdXNpbmcgYmFzZSAzLlxyXG4gICAgICAgICAgLy8gZWxzZSBpZiAoYmFzZSA9PSAzICYmIHljMCA9PSAxKSB5YzAgPSAxICsgMWUtMTU7XHJcblxyXG4gICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBuID0gMDtcclxuXHJcbiAgICAgICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICBjbXAgPSBjb21wYXJlKHljLCByZW0sIHlMLCByZW1MKTtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIGRpdmlzb3IgPCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0cmlhbCBkaWdpdCwgbi5cclxuXHJcbiAgICAgICAgICAgICAgcmVtMCA9IHJlbVswXTtcclxuICAgICAgICAgICAgICBpZiAoeUwgIT0gcmVtTCkgcmVtMCA9IHJlbTAgKiBiYXNlICsgKHJlbVsxXSB8fCAwKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gbiBpcyBob3cgbWFueSB0aW1lcyB0aGUgZGl2aXNvciBnb2VzIGludG8gdGhlIGN1cnJlbnQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIG4gPSBtYXRoZmxvb3IocmVtMCAvIHljMCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vICBBbGdvcml0aG06XHJcbiAgICAgICAgICAgICAgLy8gIHByb2R1Y3QgPSBkaXZpc29yIG11bHRpcGxpZWQgYnkgdHJpYWwgZGlnaXQgKG4pLlxyXG4gICAgICAgICAgICAgIC8vICBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAvLyAgSWYgcHJvZHVjdCBpcyBncmVhdGVyIHRoYW4gcmVtYWluZGVyOlxyXG4gICAgICAgICAgICAgIC8vICAgIFN1YnRyYWN0IGRpdmlzb3IgZnJvbSBwcm9kdWN0LCBkZWNyZW1lbnQgdHJpYWwgZGlnaXQuXHJcbiAgICAgICAgICAgICAgLy8gIFN1YnRyYWN0IHByb2R1Y3QgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgLy8gIElmIHByb2R1Y3Qgd2FzIGxlc3MgdGhhbiByZW1haW5kZXIgYXQgdGhlIGxhc3QgY29tcGFyZTpcclxuICAgICAgICAgICAgICAvLyAgICBDb21wYXJlIG5ldyByZW1haW5kZXIgYW5kIGRpdmlzb3IuXHJcbiAgICAgICAgICAgICAgLy8gICAgSWYgcmVtYWluZGVyIGlzIGdyZWF0ZXIgdGhhbiBkaXZpc29yOlxyXG4gICAgICAgICAgICAgIC8vICAgICAgU3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlciwgaW5jcmVtZW50IHRyaWFsIGRpZ2l0LlxyXG5cclxuICAgICAgICAgICAgICBpZiAobiA+IDEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBuIG1heSBiZSA+IGJhc2Ugb25seSB3aGVuIGJhc2UgaXMgMy5cclxuICAgICAgICAgICAgICAgIGlmIChuID49IGJhc2UpIG4gPSBiYXNlIC0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBwcm9kdWN0ID0gZGl2aXNvciAqIHRyaWFsIGRpZ2l0LlxyXG4gICAgICAgICAgICAgICAgcHJvZCA9IG11bHRpcGx5KHljLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIElmIHByb2R1Y3QgPiByZW1haW5kZXIgdGhlbiB0cmlhbCBkaWdpdCBuIHRvbyBoaWdoLlxyXG4gICAgICAgICAgICAgICAgLy8gbiBpcyAxIHRvbyBoaWdoIGFib3V0IDUlIG9mIHRoZSB0aW1lLCBhbmQgaXMgbm90IGtub3duIHRvIGhhdmVcclxuICAgICAgICAgICAgICAgIC8vIGV2ZXIgYmVlbiBtb3JlIHRoYW4gMSB0b28gaGlnaC5cclxuICAgICAgICAgICAgICAgIHdoaWxlIChjb21wYXJlKHByb2QsIHJlbSwgcHJvZEwsIHJlbUwpID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgbi0tO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gU3VidHJhY3QgZGl2aXNvciBmcm9tIHByb2R1Y3QuXHJcbiAgICAgICAgICAgICAgICAgIHN1YnRyYWN0KHByb2QsIHlMIDwgcHJvZEwgPyB5eiA6IHljLCBwcm9kTCwgYmFzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgIGNtcCA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBuIGlzIDAgb3IgMSwgY21wIGlzIC0xLlxyXG4gICAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNvbXBhcmUgeWMgYW5kIHJlbSBhZ2FpbiBiZWxvdyxcclxuICAgICAgICAgICAgICAgIC8vIHNvIGNoYW5nZSBjbXAgdG8gMSB0byBhdm9pZCBpdC5cclxuICAgICAgICAgICAgICAgIC8vIElmIG4gaXMgMSwgbGVhdmUgY21wIGFzIC0xLCBzbyB5YyBhbmQgcmVtIGFyZSBjb21wYXJlZCBhZ2Fpbi5cclxuICAgICAgICAgICAgICAgIGlmIChuID09IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIGRpdmlzb3IgPCByZW1haW5kZXIsIHNvIG4gbXVzdCBiZSBhdCBsZWFzdCAxLlxyXG4gICAgICAgICAgICAgICAgICBjbXAgPSBuID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBwcm9kdWN0ID0gZGl2aXNvclxyXG4gICAgICAgICAgICAgICAgcHJvZCA9IHljLnNsaWNlKCk7XHJcbiAgICAgICAgICAgICAgICBwcm9kTCA9IHByb2QubGVuZ3RoO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHByb2RMIDwgcmVtTCkgcHJvZCA9IFswXS5jb25jYXQocHJvZCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFN1YnRyYWN0IHByb2R1Y3QgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgc3VidHJhY3QocmVtLCBwcm9kLCByZW1MLCBiYXNlKTtcclxuICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgIC8vIElmIHByb2R1Y3Qgd2FzIDwgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGlmIChjbXAgPT0gLTEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIGRpdmlzb3IgYW5kIG5ldyByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiBkaXZpc29yIDwgbmV3IHJlbWFpbmRlciwgc3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIFRyaWFsIGRpZ2l0IG4gdG9vIGxvdy5cclxuICAgICAgICAgICAgICAgIC8vIG4gaXMgMSB0b28gbG93IGFib3V0IDUlIG9mIHRoZSB0aW1lLCBhbmQgdmVyeSByYXJlbHkgMiB0b28gbG93LlxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvbXBhcmUoeWMsIHJlbSwgeUwsIHJlbUwpIDwgMSkge1xyXG4gICAgICAgICAgICAgICAgICBuKys7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgICBzdWJ0cmFjdChyZW0sIHlMIDwgcmVtTCA/IHl6IDogeWMsIHJlbUwsIGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY21wID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgbisrO1xyXG4gICAgICAgICAgICAgIHJlbSA9IFswXTtcclxuICAgICAgICAgICAgfSAvLyBlbHNlIGNtcCA9PT0gMSBhbmQgbiB3aWxsIGJlIDBcclxuXHJcbiAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV4dCBkaWdpdCwgbiwgdG8gdGhlIHJlc3VsdCBhcnJheS5cclxuICAgICAgICAgICAgcWNbaSsrXSA9IG47XHJcblxyXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgaWYgKHJlbVswXSkge1xyXG4gICAgICAgICAgICAgIHJlbVtyZW1MKytdID0geGNbeGldIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVtID0gW3hjW3hpXV07XHJcbiAgICAgICAgICAgICAgcmVtTCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gd2hpbGUgKCh4aSsrIDwgeEwgfHwgcmVtWzBdICE9IG51bGwpICYmIHMtLSk7XHJcblxyXG4gICAgICAgICAgbW9yZSA9IHJlbVswXSAhPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vIExlYWRpbmcgemVybz9cclxuICAgICAgICAgIGlmICghcWNbMF0pIHFjLnNwbGljZSgwLCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChiYXNlID09IEJBU0UpIHtcclxuXHJcbiAgICAgICAgICAvLyBUbyBjYWxjdWxhdGUgcS5lLCBmaXJzdCBnZXQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgcWNbMF0uXHJcbiAgICAgICAgICBmb3IgKGkgPSAxLCBzID0gcWNbMF07IHMgPj0gMTA7IHMgLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAgICAgcm91bmQocSwgZHAgKyAocS5lID0gaSArIGUgKiBMT0dfQkFTRSAtIDEpICsgMSwgcm0sIG1vcmUpO1xyXG5cclxuICAgICAgICAvLyBDYWxsZXIgaXMgY29udmVydEJhc2UuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHEuZSA9IGU7XHJcbiAgICAgICAgICBxLnIgPSArbW9yZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBxO1xyXG4gICAgICB9O1xyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIEJpZ051bWJlciBuIGluIGZpeGVkLXBvaW50IG9yIGV4cG9uZW50aWFsXHJcbiAgICAgKiBub3RhdGlvbiByb3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgZGVjaW1hbCBwbGFjZXMgb3Igc2lnbmlmaWNhbnQgZGlnaXRzLlxyXG4gICAgICpcclxuICAgICAqIG46IGEgQmlnTnVtYmVyLlxyXG4gICAgICogaTogdGhlIGluZGV4IG9mIHRoZSBsYXN0IGRpZ2l0IHJlcXVpcmVkIChpLmUuIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwKS5cclxuICAgICAqIHJtOiB0aGUgcm91bmRpbmcgbW9kZS5cclxuICAgICAqIGlkOiAxICh0b0V4cG9uZW50aWFsKSBvciAyICh0b1ByZWNpc2lvbikuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGZvcm1hdChuLCBpLCBybSwgaWQpIHtcclxuICAgICAgdmFyIGMwLCBlLCBuZSwgbGVuLCBzdHI7XHJcblxyXG4gICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgIGlmICghbi5jKSByZXR1cm4gbi50b1N0cmluZygpO1xyXG5cclxuICAgICAgYzAgPSBuLmNbMF07XHJcbiAgICAgIG5lID0gbi5lO1xyXG5cclxuICAgICAgaWYgKGkgPT0gbnVsbCkge1xyXG4gICAgICAgIHN0ciA9IGNvZWZmVG9TdHJpbmcobi5jKTtcclxuICAgICAgICBzdHIgPSBpZCA9PSAxIHx8IGlkID09IDIgJiYgKG5lIDw9IFRPX0VYUF9ORUcgfHwgbmUgPj0gVE9fRVhQX1BPUylcclxuICAgICAgICAgPyB0b0V4cG9uZW50aWFsKHN0ciwgbmUpXHJcbiAgICAgICAgIDogdG9GaXhlZFBvaW50KHN0ciwgbmUsICcwJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbiA9IHJvdW5kKG5ldyBCaWdOdW1iZXIobiksIGksIHJtKTtcclxuXHJcbiAgICAgICAgLy8gbi5lIG1heSBoYXZlIGNoYW5nZWQgaWYgdGhlIHZhbHVlIHdhcyByb3VuZGVkIHVwLlxyXG4gICAgICAgIGUgPSBuLmU7XHJcblxyXG4gICAgICAgIHN0ciA9IGNvZWZmVG9TdHJpbmcobi5jKTtcclxuICAgICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyB0b1ByZWNpc2lvbiByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uIGlmIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzXHJcbiAgICAgICAgLy8gc3BlY2lmaWVkIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSBpbnRlZ2VyXHJcbiAgICAgICAgLy8gcGFydCBvZiB0aGUgdmFsdWUgaW4gZml4ZWQtcG9pbnQgbm90YXRpb24uXHJcblxyXG4gICAgICAgIC8vIEV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAgIGlmIChpZCA9PSAxIHx8IGlkID09IDIgJiYgKGkgPD0gZSB8fCBlIDw9IFRPX0VYUF9ORUcpKSB7XHJcblxyXG4gICAgICAgICAgLy8gQXBwZW5kIHplcm9zP1xyXG4gICAgICAgICAgZm9yICg7IGxlbiA8IGk7IHN0ciArPSAnMCcsIGxlbisrKTtcclxuICAgICAgICAgIHN0ciA9IHRvRXhwb25lbnRpYWwoc3RyLCBlKTtcclxuXHJcbiAgICAgICAgLy8gRml4ZWQtcG9pbnQgbm90YXRpb24uXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGkgLT0gbmU7XHJcbiAgICAgICAgICBzdHIgPSB0b0ZpeGVkUG9pbnQoc3RyLCBlLCAnMCcpO1xyXG5cclxuICAgICAgICAgIC8vIEFwcGVuZCB6ZXJvcz9cclxuICAgICAgICAgIGlmIChlICsgMSA+IGxlbikge1xyXG4gICAgICAgICAgICBpZiAoLS1pID4gMCkgZm9yIChzdHIgKz0gJy4nOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSArPSBlIC0gbGVuO1xyXG4gICAgICAgICAgICBpZiAoaSA+IDApIHtcclxuICAgICAgICAgICAgICBpZiAoZSArIDEgPT0gbGVuKSBzdHIgKz0gJy4nO1xyXG4gICAgICAgICAgICAgIGZvciAoOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbi5zIDwgMCAmJiBjMCA/ICctJyArIHN0ciA6IHN0cjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gSGFuZGxlIEJpZ051bWJlci5tYXggYW5kIEJpZ051bWJlci5taW4uXHJcbiAgICBmdW5jdGlvbiBtYXhPck1pbihhcmdzLCBtZXRob2QpIHtcclxuICAgICAgdmFyIG4sXHJcbiAgICAgICAgaSA9IDEsXHJcbiAgICAgICAgbSA9IG5ldyBCaWdOdW1iZXIoYXJnc1swXSk7XHJcblxyXG4gICAgICBmb3IgKDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBuID0gbmV3IEJpZ051bWJlcihhcmdzW2ldKTtcclxuXHJcbiAgICAgICAgLy8gSWYgYW55IG51bWJlciBpcyBOYU4sIHJldHVybiBOYU4uXHJcbiAgICAgICAgaWYgKCFuLnMpIHtcclxuICAgICAgICAgIG0gPSBuO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXRob2QuY2FsbChtLCBuKSkge1xyXG4gICAgICAgICAgbSA9IG47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFN0cmlwIHRyYWlsaW5nIHplcm9zLCBjYWxjdWxhdGUgYmFzZSAxMCBleHBvbmVudCBhbmQgY2hlY2sgYWdhaW5zdCBNSU5fRVhQIGFuZCBNQVhfRVhQLlxyXG4gICAgICogQ2FsbGVkIGJ5IG1pbnVzLCBwbHVzIGFuZCB0aW1lcy5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gbm9ybWFsaXNlKG4sIGMsIGUpIHtcclxuICAgICAgdmFyIGkgPSAxLFxyXG4gICAgICAgIGogPSBjLmxlbmd0aDtcclxuXHJcbiAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoOyAhY1stLWpdOyBjLnBvcCgpKTtcclxuXHJcbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYmFzZSAxMCBleHBvbmVudC4gRmlyc3QgZ2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIGNbMF0uXHJcbiAgICAgIGZvciAoaiA9IGNbMF07IGogPj0gMTA7IGogLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdz9cclxuICAgICAgaWYgKChlID0gaSArIGUgKiBMT0dfQkFTRSAtIDEpID4gTUFYX0VYUCkge1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eS5cclxuICAgICAgICBuLmMgPSBuLmUgPSBudWxsO1xyXG5cclxuICAgICAgLy8gVW5kZXJmbG93P1xyXG4gICAgICB9IGVsc2UgaWYgKGUgPCBNSU5fRVhQKSB7XHJcblxyXG4gICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgbi5jID0gW24uZSA9IDBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG4uZSA9IGU7XHJcbiAgICAgICAgbi5jID0gYztcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIEhhbmRsZSB2YWx1ZXMgdGhhdCBmYWlsIHRoZSB2YWxpZGl0eSB0ZXN0IGluIEJpZ051bWJlci5cclxuICAgIHBhcnNlTnVtZXJpYyA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBiYXNlUHJlZml4ID0gL14oLT8pMChbeGJvXSkoPz1cXHdbXFx3Ll0qJCkvaSxcclxuICAgICAgICBkb3RBZnRlciA9IC9eKFteLl0rKVxcLiQvLFxyXG4gICAgICAgIGRvdEJlZm9yZSA9IC9eXFwuKFteLl0rKSQvLFxyXG4gICAgICAgIGlzSW5maW5pdHlPck5hTiA9IC9eLT8oSW5maW5pdHl8TmFOKSQvLFxyXG4gICAgICAgIHdoaXRlc3BhY2VPclBsdXMgPSAvXlxccypcXCsoPz1bXFx3Ll0pfF5cXHMrfFxccyskL2c7XHJcblxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHgsIHN0ciwgaXNOdW0sIGIpIHtcclxuICAgICAgICB2YXIgYmFzZSxcclxuICAgICAgICAgIHMgPSBpc051bSA/IHN0ciA6IHN0ci5yZXBsYWNlKHdoaXRlc3BhY2VPclBsdXMsICcnKTtcclxuXHJcbiAgICAgICAgLy8gTm8gZXhjZXB0aW9uIG9uIMKxSW5maW5pdHkgb3IgTmFOLlxyXG4gICAgICAgIGlmIChpc0luZmluaXR5T3JOYU4udGVzdChzKSkge1xyXG4gICAgICAgICAgeC5zID0gaXNOYU4ocykgPyBudWxsIDogcyA8IDAgPyAtMSA6IDE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICghaXNOdW0pIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGJhc2VQcmVmaXggPSAvXigtPykwKFt4Ym9dKSg/PVxcd1tcXHcuXSokKS9pXHJcbiAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoYmFzZVByZWZpeCwgZnVuY3Rpb24gKG0sIHAxLCBwMikge1xyXG4gICAgICAgICAgICAgIGJhc2UgPSAocDIgPSBwMi50b0xvd2VyQ2FzZSgpKSA9PSAneCcgPyAxNiA6IHAyID09ICdiJyA/IDIgOiA4O1xyXG4gICAgICAgICAgICAgIHJldHVybiAhYiB8fCBiID09IGJhc2UgPyBwMSA6IG07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGIpIHtcclxuICAgICAgICAgICAgICBiYXNlID0gYjtcclxuXHJcbiAgICAgICAgICAgICAgLy8gRS5nLiAnMS4nIHRvICcxJywgJy4xJyB0byAnMC4xJ1xyXG4gICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoZG90QWZ0ZXIsICckMScpLnJlcGxhY2UoZG90QmVmb3JlLCAnMC4kMScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc3RyICE9IHMpIHJldHVybiBuZXcgQmlnTnVtYmVyKHMsIGJhc2UpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOb3QgYSBudW1iZXI6IHtufSdcclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOb3QgYSBiYXNlIHtifSBudW1iZXI6IHtufSdcclxuICAgICAgICAgIGlmIChCaWdOdW1iZXIuREVCVUcpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnTm90IGEnICsgKGIgPyAnIGJhc2UgJyArIGIgOiAnJykgKyAnIG51bWJlcjogJyArIHN0cik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gTmFOXHJcbiAgICAgICAgICB4LnMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJvdW5kIHggdG8gc2Qgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0uIENoZWNrIGZvciBvdmVyL3VuZGVyLWZsb3cuXHJcbiAgICAgKiBJZiByIGlzIHRydXRoeSwgaXQgaXMga25vd24gdGhhdCB0aGVyZSBhcmUgbW9yZSBkaWdpdHMgYWZ0ZXIgdGhlIHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiByb3VuZCh4LCBzZCwgcm0sIHIpIHtcclxuICAgICAgdmFyIGQsIGksIGosIGssIG4sIG5pLCByZCxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICBwb3dzMTAgPSBQT1dTX1RFTjtcclxuXHJcbiAgICAgIC8vIGlmIHggaXMgbm90IEluZmluaXR5IG9yIE5hTi4uLlxyXG4gICAgICBpZiAoeGMpIHtcclxuXHJcbiAgICAgICAgLy8gcmQgaXMgdGhlIHJvdW5kaW5nIGRpZ2l0LCBpLmUuIHRoZSBkaWdpdCBhZnRlciB0aGUgZGlnaXQgdGhhdCBtYXkgYmUgcm91bmRlZCB1cC5cclxuICAgICAgICAvLyBuIGlzIGEgYmFzZSAxZTE0IG51bWJlciwgdGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50IG9mIGFycmF5IHguYyBjb250YWluaW5nIHJkLlxyXG4gICAgICAgIC8vIG5pIGlzIHRoZSBpbmRleCBvZiBuIHdpdGhpbiB4LmMuXHJcbiAgICAgICAgLy8gZCBpcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBuLlxyXG4gICAgICAgIC8vIGkgaXMgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiBuIGluY2x1ZGluZyBsZWFkaW5nIHplcm9zLlxyXG4gICAgICAgIC8vIGogaXMgdGhlIGFjdHVhbCBpbmRleCBvZiByZCB3aXRoaW4gbiAoaWYgPCAwLCByZCBpcyBhIGxlYWRpbmcgemVybykuXHJcbiAgICAgICAgb3V0OiB7XHJcblxyXG4gICAgICAgICAgLy8gR2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50IG9mIHhjLlxyXG4gICAgICAgICAgZm9yIChkID0gMSwgayA9IHhjWzBdOyBrID49IDEwOyBrIC89IDEwLCBkKyspO1xyXG4gICAgICAgICAgaSA9IHNkIC0gZDtcclxuXHJcbiAgICAgICAgICAvLyBJZiB0aGUgcm91bmRpbmcgZGlnaXQgaXMgaW4gdGhlIGZpcnN0IGVsZW1lbnQgb2YgeGMuLi5cclxuICAgICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgICBpICs9IExPR19CQVNFO1xyXG4gICAgICAgICAgICBqID0gc2Q7XHJcbiAgICAgICAgICAgIG4gPSB4Y1tuaSA9IDBdO1xyXG5cclxuICAgICAgICAgICAgLy8gR2V0IHRoZSByb3VuZGluZyBkaWdpdCBhdCBpbmRleCBqIG9mIG4uXHJcbiAgICAgICAgICAgIHJkID0gbiAvIHBvd3MxMFtkIC0gaiAtIDFdICUgMTAgfCAwO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmkgPSBtYXRoY2VpbCgoaSArIDEpIC8gTE9HX0JBU0UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG5pID49IHhjLmxlbmd0aCkge1xyXG5cclxuICAgICAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE5lZWRlZCBieSBzcXJ0LlxyXG4gICAgICAgICAgICAgICAgZm9yICg7IHhjLmxlbmd0aCA8PSBuaTsgeGMucHVzaCgwKSk7XHJcbiAgICAgICAgICAgICAgICBuID0gcmQgPSAwO1xyXG4gICAgICAgICAgICAgICAgZCA9IDE7XHJcbiAgICAgICAgICAgICAgICBpICU9IExPR19CQVNFO1xyXG4gICAgICAgICAgICAgICAgaiA9IGkgLSBMT0dfQkFTRSArIDE7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbiA9IGsgPSB4Y1tuaV07XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBuLlxyXG4gICAgICAgICAgICAgIGZvciAoZCA9IDE7IGsgPj0gMTA7IGsgLz0gMTAsIGQrKyk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgaW5kZXggb2YgcmQgd2l0aGluIG4uXHJcbiAgICAgICAgICAgICAgaSAlPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gR2V0IHRoZSBpbmRleCBvZiByZCB3aXRoaW4gbiwgYWRqdXN0ZWQgZm9yIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgICAgICAgLy8gVGhlIG51bWJlciBvZiBsZWFkaW5nIHplcm9zIG9mIG4gaXMgZ2l2ZW4gYnkgTE9HX0JBU0UgLSBkLlxyXG4gICAgICAgICAgICAgIGogPSBpIC0gTE9HX0JBU0UgKyBkO1xyXG5cclxuICAgICAgICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygbi5cclxuICAgICAgICAgICAgICByZCA9IGogPCAwID8gMCA6IG4gLyBwb3dzMTBbZCAtIGogLSAxXSAlIDEwIHwgMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHIgPSByIHx8IHNkIDwgMCB8fFxyXG5cclxuICAgICAgICAgIC8vIEFyZSB0aGVyZSBhbnkgbm9uLXplcm8gZGlnaXRzIGFmdGVyIHRoZSByb3VuZGluZyBkaWdpdD9cclxuICAgICAgICAgIC8vIFRoZSBleHByZXNzaW9uICBuICUgcG93czEwW2QgLSBqIC0gMV0gIHJldHVybnMgYWxsIGRpZ2l0cyBvZiBuIHRvIHRoZSByaWdodFxyXG4gICAgICAgICAgLy8gb2YgdGhlIGRpZ2l0IGF0IGosIGUuZy4gaWYgbiBpcyA5MDg3MTQgYW5kIGogaXMgMiwgdGhlIGV4cHJlc3Npb24gZ2l2ZXMgNzE0LlxyXG4gICAgICAgICAgIHhjW25pICsgMV0gIT0gbnVsbCB8fCAoaiA8IDAgPyBuIDogbiAlIHBvd3MxMFtkIC0gaiAtIDFdKTtcclxuXHJcbiAgICAgICAgICByID0gcm0gPCA0XHJcbiAgICAgICAgICAgPyAocmQgfHwgcikgJiYgKHJtID09IDAgfHwgcm0gPT0gKHgucyA8IDAgPyAzIDogMikpXHJcbiAgICAgICAgICAgOiByZCA+IDUgfHwgcmQgPT0gNSAmJiAocm0gPT0gNCB8fCByIHx8IHJtID09IDYgJiZcclxuXHJcbiAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGRpZ2l0IHRvIHRoZSBsZWZ0IG9mIHRoZSByb3VuZGluZyBkaWdpdCBpcyBvZGQuXHJcbiAgICAgICAgICAgICgoaSA+IDAgPyBqID4gMCA/IG4gLyBwb3dzMTBbZCAtIGpdIDogMCA6IHhjW25pIC0gMV0pICUgMTApICYgMSB8fFxyXG4gICAgICAgICAgICAgcm0gPT0gKHgucyA8IDAgPyA4IDogNykpO1xyXG5cclxuICAgICAgICAgIGlmIChzZCA8IDEgfHwgIXhjWzBdKSB7XHJcbiAgICAgICAgICAgIHhjLmxlbmd0aCA9IDA7XHJcblxyXG4gICAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgICAvLyBDb252ZXJ0IHNkIHRvIGRlY2ltYWwgcGxhY2VzLlxyXG4gICAgICAgICAgICAgIHNkIC09IHguZSArIDE7XHJcblxyXG4gICAgICAgICAgICAgIC8vIDEsIDAuMSwgMC4wMSwgMC4wMDEsIDAuMDAwMSBldGMuXHJcbiAgICAgICAgICAgICAgeGNbMF0gPSBwb3dzMTBbKExPR19CQVNFIC0gc2QgJSBMT0dfQkFTRSkgJSBMT0dfQkFTRV07XHJcbiAgICAgICAgICAgICAgeC5lID0gLXNkIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICAgICAgeGNbMF0gPSB4LmUgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4geDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBSZW1vdmUgZXhjZXNzIGRpZ2l0cy5cclxuICAgICAgICAgIGlmIChpID09IDApIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gbmk7XHJcbiAgICAgICAgICAgIGsgPSAxO1xyXG4gICAgICAgICAgICBuaS0tO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gbmkgKyAxO1xyXG4gICAgICAgICAgICBrID0gcG93czEwW0xPR19CQVNFIC0gaV07XHJcblxyXG4gICAgICAgICAgICAvLyBFLmcuIDU2NzAwIGJlY29tZXMgNTYwMDAgaWYgNyBpcyB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgICAgIC8vIGogPiAwIG1lYW5zIGkgPiBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiBuLlxyXG4gICAgICAgICAgICB4Y1tuaV0gPSBqID4gMCA/IG1hdGhmbG9vcihuIC8gcG93czEwW2QgLSBqXSAlIHBvd3MxMFtqXSkgKiBrIDogMDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBSb3VuZCB1cD9cclxuICAgICAgICAgIGlmIChyKSB7XHJcblxyXG4gICAgICAgICAgICBmb3IgKDsgOykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiB0aGUgZGlnaXQgdG8gYmUgcm91bmRlZCB1cCBpcyBpbiB0aGUgZmlyc3QgZWxlbWVudCBvZiB4Yy4uLlxyXG4gICAgICAgICAgICAgIGlmIChuaSA9PSAwKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaSB3aWxsIGJlIHRoZSBsZW5ndGggb2YgeGNbMF0gYmVmb3JlIGsgaXMgYWRkZWQuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBqID0geGNbMF07IGogPj0gMTA7IGogLz0gMTAsIGkrKyk7XHJcbiAgICAgICAgICAgICAgICBqID0geGNbMF0gKz0gaztcclxuICAgICAgICAgICAgICAgIGZvciAoayA9IDE7IGogPj0gMTA7IGogLz0gMTAsIGsrKyk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgaSAhPSBrIHRoZSBsZW5ndGggaGFzIGluY3JlYXNlZC5cclxuICAgICAgICAgICAgICAgIGlmIChpICE9IGspIHtcclxuICAgICAgICAgICAgICAgICAgeC5lKys7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh4Y1swXSA9PSBCQVNFKSB4Y1swXSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHhjW25pXSArPSBrO1xyXG4gICAgICAgICAgICAgICAgaWYgKHhjW25pXSAhPSBCQVNFKSBicmVhaztcclxuICAgICAgICAgICAgICAgIHhjW25pLS1dID0gMDtcclxuICAgICAgICAgICAgICAgIGsgPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICAgIGZvciAoaSA9IHhjLmxlbmd0aDsgeGNbLS1pXSA9PT0gMDsgeGMucG9wKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gT3ZlcmZsb3c/IEluZmluaXR5LlxyXG4gICAgICAgIGlmICh4LmUgPiBNQVhfRVhQKSB7XHJcbiAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBVbmRlcmZsb3c/IFplcm8uXHJcbiAgICAgICAgfSBlbHNlIGlmICh4LmUgPCBNSU5fRVhQKSB7XHJcbiAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4geDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gdmFsdWVPZihuKSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgZSA9IG4uZTtcclxuXHJcbiAgICAgIGlmIChlID09PSBudWxsKSByZXR1cm4gbi50b1N0cmluZygpO1xyXG5cclxuICAgICAgc3RyID0gY29lZmZUb1N0cmluZyhuLmMpO1xyXG5cclxuICAgICAgc3RyID0gZSA8PSBUT19FWFBfTkVHIHx8IGUgPj0gVE9fRVhQX1BPU1xyXG4gICAgICAgID8gdG9FeHBvbmVudGlhbChzdHIsIGUpXHJcbiAgICAgICAgOiB0b0ZpeGVkUG9pbnQoc3RyLCBlLCAnMCcpO1xyXG5cclxuICAgICAgcmV0dXJuIG4ucyA8IDAgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIFBST1RPVFlQRS9JTlNUQU5DRSBNRVRIT0RTXHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlci5cclxuICAgICAqL1xyXG4gICAgUC5hYnNvbHV0ZVZhbHVlID0gUC5hYnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciB4ID0gbmV3IEJpZ051bWJlcih0aGlzKTtcclxuICAgICAgaWYgKHgucyA8IDApIHgucyA9IDE7XHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVyblxyXG4gICAgICogICAxIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqICAgLTEgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogICAwIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZSxcclxuICAgICAqICAgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgZWl0aGVyIGlzIE5hTi5cclxuICAgICAqL1xyXG4gICAgUC5jb21wYXJlZFRvID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogSWYgZHAgaXMgdW5kZWZpbmVkIG9yIG51bGwgb3IgdHJ1ZSBvciBmYWxzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgb2YgdGhlXHJcbiAgICAgKiB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgKlxyXG4gICAgICogT3RoZXJ3aXNlLCBpZiBkcCBpcyBhIG51bWJlciwgcmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpc1xyXG4gICAgICogQmlnTnVtYmVyIHJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGRwIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yXHJcbiAgICAgKiBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlczogaW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLmRlY2ltYWxQbGFjZXMgPSBQLmRwID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgICB2YXIgYywgbiwgdixcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgaWYgKHJtID09IG51bGwpIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuICAgICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJvdW5kKG5ldyBCaWdOdW1iZXIoeCksIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIShjID0geC5jKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgIG4gPSAoKHYgPSBjLmxlbmd0aCAtIDEpIC0gYml0Rmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpKSAqIExPR19CQVNFO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCBudW1iZXIuXHJcbiAgICAgIGlmICh2ID0gY1t2XSkgZm9yICg7IHYgJSAxMCA9PSAwOyB2IC89IDEwLCBuLS0pO1xyXG4gICAgICBpZiAobiA8IDApIG4gPSAwO1xyXG5cclxuICAgICAgcmV0dXJuIG47XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gLyAwID0gSVxyXG4gICAgICogIG4gLyBOID0gTlxyXG4gICAgICogIG4gLyBJID0gMFxyXG4gICAgICogIDAgLyBuID0gMFxyXG4gICAgICogIDAgLyAwID0gTlxyXG4gICAgICogIDAgLyBOID0gTlxyXG4gICAgICogIDAgLyBJID0gMFxyXG4gICAgICogIE4gLyBuID0gTlxyXG4gICAgICogIE4gLyAwID0gTlxyXG4gICAgICogIE4gLyBOID0gTlxyXG4gICAgICogIE4gLyBJID0gTlxyXG4gICAgICogIEkgLyBuID0gSVxyXG4gICAgICogIEkgLyAwID0gSVxyXG4gICAgICogIEkgLyBOID0gTlxyXG4gICAgICogIEkgLyBJID0gTlxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGRpdmlkZWQgYnkgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIHJvdW5kZWQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZCBST1VORElOR19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLmRpdmlkZWRCeSA9IFAuZGl2ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGRpdih0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpLCBERUNJTUFMX1BMQUNFUywgUk9VTkRJTkdfTU9ERSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgaW50ZWdlciBwYXJ0IG9mIGRpdmlkaW5nIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgYnkgdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5kaXZpZGVkVG9JbnRlZ2VyQnkgPSBQLmlkaXYgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gZGl2KHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYiksIDAsIDEpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgZXhwb25lbnRpYXRlZCBieSBuLlxyXG4gICAgICpcclxuICAgICAqIElmIG0gaXMgcHJlc2VudCwgcmV0dXJuIHRoZSByZXN1bHQgbW9kdWxvIG0uXHJcbiAgICAgKiBJZiBuIGlzIG5lZ2F0aXZlIHJvdW5kIGFjY29yZGluZyB0byBERUNJTUFMX1BMQUNFUyBhbmQgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqIElmIFBPV19QUkVDSVNJT04gaXMgbm9uLXplcm8gYW5kIG0gaXMgbm90IHByZXNlbnQsIHJvdW5kIHRvIFBPV19QUkVDSVNJT04gdXNpbmcgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqXHJcbiAgICAgKiBUaGUgbW9kdWxhciBwb3dlciBvcGVyYXRpb24gd29ya3MgZWZmaWNpZW50bHkgd2hlbiB4LCBuLCBhbmQgbSBhcmUgaW50ZWdlcnMsIG90aGVyd2lzZSBpdFxyXG4gICAgICogaXMgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB4LmV4cG9uZW50aWF0ZWRCeShuKS5tb2R1bG8obSkgd2l0aCBhIFBPV19QUkVDSVNJT04gb2YgMC5cclxuICAgICAqXHJcbiAgICAgKiBuIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gVGhlIGV4cG9uZW50LiBBbiBpbnRlZ2VyLlxyXG4gICAgICogW21dIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gVGhlIG1vZHVsdXMuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEV4cG9uZW50IG5vdCBhbiBpbnRlZ2VyOiB7bn0nXHJcbiAgICAgKi9cclxuICAgIFAuZXhwb25lbnRpYXRlZEJ5ID0gUC5wb3cgPSBmdW5jdGlvbiAobiwgbSkge1xyXG4gICAgICB2YXIgaGFsZiwgaXNNb2RFeHAsIGksIGssIG1vcmUsIG5Jc0JpZywgbklzTmVnLCBuSXNPZGQsIHksXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICBuID0gbmV3IEJpZ051bWJlcihuKTtcclxuXHJcbiAgICAgIC8vIEFsbG93IE5hTiBhbmQgwrFJbmZpbml0eSwgYnV0IG5vdCBvdGhlciBub24taW50ZWdlcnMuXHJcbiAgICAgIGlmIChuLmMgJiYgIW4uaXNJbnRlZ2VyKCkpIHtcclxuICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0V4cG9uZW50IG5vdCBhbiBpbnRlZ2VyOiAnICsgdmFsdWVPZihuKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtICE9IG51bGwpIG0gPSBuZXcgQmlnTnVtYmVyKG0pO1xyXG5cclxuICAgICAgLy8gRXhwb25lbnQgb2YgTUFYX1NBRkVfSU5URUdFUiBpcyAxNS5cclxuICAgICAgbklzQmlnID0gbi5lID4gMTQ7XHJcblxyXG4gICAgICAvLyBJZiB4IGlzIE5hTiwgwrFJbmZpbml0eSwgwrEwIG9yIMKxMSwgb3IgbiBpcyDCsUluZmluaXR5LCBOYU4gb3IgwrEwLlxyXG4gICAgICBpZiAoIXguYyB8fCAheC5jWzBdIHx8IHguY1swXSA9PSAxICYmICF4LmUgJiYgeC5jLmxlbmd0aCA9PSAxIHx8ICFuLmMgfHwgIW4uY1swXSkge1xyXG5cclxuICAgICAgICAvLyBUaGUgc2lnbiBvZiB0aGUgcmVzdWx0IG9mIHBvdyB3aGVuIHggaXMgbmVnYXRpdmUgZGVwZW5kcyBvbiB0aGUgZXZlbm5lc3Mgb2Ygbi5cclxuICAgICAgICAvLyBJZiArbiBvdmVyZmxvd3MgdG8gwrFJbmZpbml0eSwgdGhlIGV2ZW5uZXNzIG9mIG4gd291bGQgYmUgbm90IGJlIGtub3duLlxyXG4gICAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKE1hdGgucG93KCt2YWx1ZU9mKHgpLCBuSXNCaWcgPyAyIC0gaXNPZGQobikgOiArdmFsdWVPZihuKSkpO1xyXG4gICAgICAgIHJldHVybiBtID8geS5tb2QobSkgOiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBuSXNOZWcgPSBuLnMgPCAwO1xyXG5cclxuICAgICAgaWYgKG0pIHtcclxuXHJcbiAgICAgICAgLy8geCAlIG0gcmV0dXJucyBOYU4gaWYgYWJzKG0pIGlzIHplcm8sIG9yIG0gaXMgTmFOLlxyXG4gICAgICAgIGlmIChtLmMgPyAhbS5jWzBdIDogIW0ucykgcmV0dXJuIG5ldyBCaWdOdW1iZXIoTmFOKTtcclxuXHJcbiAgICAgICAgaXNNb2RFeHAgPSAhbklzTmVnICYmIHguaXNJbnRlZ2VyKCkgJiYgbS5pc0ludGVnZXIoKTtcclxuXHJcbiAgICAgICAgaWYgKGlzTW9kRXhwKSB4ID0geC5tb2QobSk7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdyB0byDCsUluZmluaXR5OiA+PTIqKjFlMTAgb3IgPj0xLjAwMDAwMjQqKjFlMTUuXHJcbiAgICAgIC8vIFVuZGVyZmxvdyB0byDCsTA6IDw9MC43OSoqMWUxMCBvciA8PTAuOTk5OTk3NSoqMWUxNS5cclxuICAgICAgfSBlbHNlIGlmIChuLmUgPiA5ICYmICh4LmUgPiAwIHx8IHguZSA8IC0xIHx8ICh4LmUgPT0gMFxyXG4gICAgICAgIC8vIFsxLCAyNDAwMDAwMDBdXHJcbiAgICAgICAgPyB4LmNbMF0gPiAxIHx8IG5Jc0JpZyAmJiB4LmNbMV0gPj0gMjRlN1xyXG4gICAgICAgIC8vIFs4MDAwMDAwMDAwMDAwMF0gIFs5OTk5OTc1MDAwMDAwMF1cclxuICAgICAgICA6IHguY1swXSA8IDhlMTMgfHwgbklzQmlnICYmIHguY1swXSA8PSA5OTk5OTc1ZTcpKSkge1xyXG5cclxuICAgICAgICAvLyBJZiB4IGlzIG5lZ2F0aXZlIGFuZCBuIGlzIG9kZCwgayA9IC0wLCBlbHNlIGsgPSAwLlxyXG4gICAgICAgIGsgPSB4LnMgPCAwICYmIGlzT2RkKG4pID8gLTAgOiAwO1xyXG5cclxuICAgICAgICAvLyBJZiB4ID49IDEsIGsgPSDCsUluZmluaXR5LlxyXG4gICAgICAgIGlmICh4LmUgPiAtMSkgayA9IDEgLyBrO1xyXG5cclxuICAgICAgICAvLyBJZiBuIGlzIG5lZ2F0aXZlIHJldHVybiDCsTAsIGVsc2UgcmV0dXJuIMKxSW5maW5pdHkuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIobklzTmVnID8gMSAvIGsgOiBrKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoUE9XX1BSRUNJU0lPTikge1xyXG5cclxuICAgICAgICAvLyBUcnVuY2F0aW5nIGVhY2ggY29lZmZpY2llbnQgYXJyYXkgdG8gYSBsZW5ndGggb2YgayBhZnRlciBlYWNoIG11bHRpcGxpY2F0aW9uXHJcbiAgICAgICAgLy8gZXF1YXRlcyB0byB0cnVuY2F0aW5nIHNpZ25pZmljYW50IGRpZ2l0cyB0byBQT1dfUFJFQ0lTSU9OICsgWzI4LCA0MV0sXHJcbiAgICAgICAgLy8gaS5lLiB0aGVyZSB3aWxsIGJlIGEgbWluaW11bSBvZiAyOCBndWFyZCBkaWdpdHMgcmV0YWluZWQuXHJcbiAgICAgICAgayA9IG1hdGhjZWlsKFBPV19QUkVDSVNJT04gLyBMT0dfQkFTRSArIDIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobklzQmlnKSB7XHJcbiAgICAgICAgaGFsZiA9IG5ldyBCaWdOdW1iZXIoMC41KTtcclxuICAgICAgICBpZiAobklzTmVnKSBuLnMgPSAxO1xyXG4gICAgICAgIG5Jc09kZCA9IGlzT2RkKG4pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGkgPSBNYXRoLmFicygrdmFsdWVPZihuKSk7XHJcbiAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKE9ORSk7XHJcblxyXG4gICAgICAvLyBQZXJmb3JtcyA1NCBsb29wIGl0ZXJhdGlvbnMgZm9yIG4gb2YgOTAwNzE5OTI1NDc0MDk5MS5cclxuICAgICAgZm9yICg7IDspIHtcclxuXHJcbiAgICAgICAgaWYgKG5Jc09kZCkge1xyXG4gICAgICAgICAgeSA9IHkudGltZXMoeCk7XHJcbiAgICAgICAgICBpZiAoIXkuYykgYnJlYWs7XHJcblxyXG4gICAgICAgICAgaWYgKGspIHtcclxuICAgICAgICAgICAgaWYgKHkuYy5sZW5ndGggPiBrKSB5LmMubGVuZ3RoID0gaztcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNNb2RFeHApIHtcclxuICAgICAgICAgICAgeSA9IHkubW9kKG0pOyAgICAvL3kgPSB5Lm1pbnVzKGRpdih5LCBtLCAwLCBNT0RVTE9fTU9ERSkudGltZXMobSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGkpIHtcclxuICAgICAgICAgIGkgPSBtYXRoZmxvb3IoaSAvIDIpO1xyXG4gICAgICAgICAgaWYgKGkgPT09IDApIGJyZWFrO1xyXG4gICAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG4gPSBuLnRpbWVzKGhhbGYpO1xyXG4gICAgICAgICAgcm91bmQobiwgbi5lICsgMSwgMSk7XHJcblxyXG4gICAgICAgICAgaWYgKG4uZSA+IDE0KSB7XHJcbiAgICAgICAgICAgIG5Jc09kZCA9IGlzT2RkKG4pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSA9ICt2YWx1ZU9mKG4pO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkgYnJlYWs7XHJcbiAgICAgICAgICAgIG5Jc09kZCA9IGkgJSAyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeCA9IHgudGltZXMoeCk7XHJcblxyXG4gICAgICAgIGlmIChrKSB7XHJcbiAgICAgICAgICBpZiAoeC5jICYmIHguYy5sZW5ndGggPiBrKSB4LmMubGVuZ3RoID0gaztcclxuICAgICAgICB9IGVsc2UgaWYgKGlzTW9kRXhwKSB7XHJcbiAgICAgICAgICB4ID0geC5tb2QobSk7ICAgIC8veCA9IHgubWludXMoZGl2KHgsIG0sIDAsIE1PRFVMT19NT0RFKS50aW1lcyhtKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNNb2RFeHApIHJldHVybiB5O1xyXG4gICAgICBpZiAobklzTmVnKSB5ID0gT05FLmRpdih5KTtcclxuXHJcbiAgICAgIHJldHVybiBtID8geS5tb2QobSkgOiBrID8gcm91bmQoeSwgUE9XX1BSRUNJU0lPTiwgUk9VTkRJTkdfTU9ERSwgbW9yZSkgOiB5O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHJvdW5kZWQgdG8gYW4gaW50ZWdlclxyXG4gICAgICogdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3IgUk9VTkRJTkdfTU9ERSBpZiBybSBpcyBvbWl0dGVkLlxyXG4gICAgICpcclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3JtfSdcclxuICAgICAqL1xyXG4gICAgUC5pbnRlZ2VyVmFsdWUgPSBmdW5jdGlvbiAocm0pIHtcclxuICAgICAgdmFyIG4gPSBuZXcgQmlnTnVtYmVyKHRoaXMpO1xyXG4gICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuICAgICAgcmV0dXJuIHJvdW5kKG4sIG4uZSArIDEsIHJtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNFcXVhbFRvID0gUC5lcSA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpID09PSAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBhIGZpbml0ZSBudW1iZXIsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNGaW5pdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuYztcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXIoeSwgYiksXHJcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzR3JlYXRlclRoYW4gPSBQLmd0ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkgPiAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyA9IFAuZ3RlID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIChiID0gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKSkgPT09IDEgfHwgYiA9PT0gMDtcclxuXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGFuIGludGVnZXIsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNJbnRlZ2VyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLmMgJiYgYml0Rmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpID4gdGhpcy5jLmxlbmd0aCAtIDI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0xlc3NUaGFuID0gUC5sdCA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpIDwgMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzTGVzc1RoYW5PckVxdWFsVG8gPSBQLmx0ZSA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiAoYiA9IGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkpID09PSAtMSB8fCBiID09PSAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBOYU4sIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNOYU4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhdGhpcy5zO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBuZWdhdGl2ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zIDwgMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgcG9zaXRpdmUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucyA+IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIDAgb3IgLTAsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLmMgJiYgdGhpcy5jWzBdID09IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gLSAwID0gblxyXG4gICAgICogIG4gLSBOID0gTlxyXG4gICAgICogIG4gLSBJID0gLUlcclxuICAgICAqICAwIC0gbiA9IC1uXHJcbiAgICAgKiAgMCAtIDAgPSAwXHJcbiAgICAgKiAgMCAtIE4gPSBOXHJcbiAgICAgKiAgMCAtIEkgPSAtSVxyXG4gICAgICogIE4gLSBuID0gTlxyXG4gICAgICogIE4gLSAwID0gTlxyXG4gICAgICogIE4gLSBOID0gTlxyXG4gICAgICogIE4gLSBJID0gTlxyXG4gICAgICogIEkgLSBuID0gSVxyXG4gICAgICogIEkgLSAwID0gSVxyXG4gICAgICogIEkgLSBOID0gTlxyXG4gICAgICogIEkgLSBJID0gTlxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIG1pbnVzIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLlxyXG4gICAgICovXHJcbiAgICBQLm1pbnVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIGksIGosIHQsIHhMVHksXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgYSA9IHgucztcclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpO1xyXG4gICAgICBiID0geS5zO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTj9cclxuICAgICAgaWYgKCFhIHx8ICFiKSByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgICBpZiAoYSAhPSBiKSB7XHJcbiAgICAgICAgeS5zID0gLWI7XHJcbiAgICAgICAgcmV0dXJuIHgucGx1cyh5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHhlID0geC5lIC8gTE9HX0JBU0UsXHJcbiAgICAgICAgeWUgPSB5LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgIGlmICgheGUgfHwgIXllKSB7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciBJbmZpbml0eT9cclxuICAgICAgICBpZiAoIXhjIHx8ICF5YykgcmV0dXJuIHhjID8gKHkucyA9IC1iLCB5KSA6IG5ldyBCaWdOdW1iZXIoeWMgPyB4IDogTmFOKTtcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIHplcm8/XHJcbiAgICAgICAgaWYgKCF4Y1swXSB8fCAheWNbMF0pIHtcclxuXHJcbiAgICAgICAgICAvLyBSZXR1cm4geSBpZiB5IGlzIG5vbi16ZXJvLCB4IGlmIHggaXMgbm9uLXplcm8sIG9yIHplcm8gaWYgYm90aCBhcmUgemVyby5cclxuICAgICAgICAgIHJldHVybiB5Y1swXSA/ICh5LnMgPSAtYiwgeSkgOiBuZXcgQmlnTnVtYmVyKHhjWzBdID8geCA6XHJcblxyXG4gICAgICAgICAgIC8vIElFRUUgNzU0ICgyMDA4KSA2LjM6IG4gLSBuID0gLTAgd2hlbiByb3VuZGluZyB0byAtSW5maW5pdHlcclxuICAgICAgICAgICBST1VORElOR19NT0RFID09IDMgPyAtMCA6IDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgeGUgPSBiaXRGbG9vcih4ZSk7XHJcbiAgICAgIHllID0gYml0Rmxvb3IoeWUpO1xyXG4gICAgICB4YyA9IHhjLnNsaWNlKCk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGJpZ2dlciBudW1iZXIuXHJcbiAgICAgIGlmIChhID0geGUgLSB5ZSkge1xyXG5cclxuICAgICAgICBpZiAoeExUeSA9IGEgPCAwKSB7XHJcbiAgICAgICAgICBhID0gLWE7XHJcbiAgICAgICAgICB0ID0geGM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHllID0geGU7XHJcbiAgICAgICAgICB0ID0geWM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0LnJldmVyc2UoKTtcclxuXHJcbiAgICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuXHJcbiAgICAgICAgZm9yIChiID0gYTsgYi0tOyB0LnB1c2goMCkpO1xyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAvLyBFeHBvbmVudHMgZXF1YWwuIENoZWNrIGRpZ2l0IGJ5IGRpZ2l0LlxyXG4gICAgICAgIGogPSAoeExUeSA9IChhID0geGMubGVuZ3RoKSA8IChiID0geWMubGVuZ3RoKSkgPyBhIDogYjtcclxuXHJcbiAgICAgICAgZm9yIChhID0gYiA9IDA7IGIgPCBqOyBiKyspIHtcclxuXHJcbiAgICAgICAgICBpZiAoeGNbYl0gIT0geWNbYl0pIHtcclxuICAgICAgICAgICAgeExUeSA9IHhjW2JdIDwgeWNbYl07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8geCA8IHk/IFBvaW50IHhjIHRvIHRoZSBhcnJheSBvZiB0aGUgYmlnZ2VyIG51bWJlci5cclxuICAgICAgaWYgKHhMVHkpIHQgPSB4YywgeGMgPSB5YywgeWMgPSB0LCB5LnMgPSAteS5zO1xyXG5cclxuICAgICAgYiA9IChqID0geWMubGVuZ3RoKSAtIChpID0geGMubGVuZ3RoKTtcclxuXHJcbiAgICAgIC8vIEFwcGVuZCB6ZXJvcyB0byB4YyBpZiBzaG9ydGVyLlxyXG4gICAgICAvLyBObyBuZWVkIHRvIGFkZCB6ZXJvcyB0byB5YyBpZiBzaG9ydGVyIGFzIHN1YnRyYWN0IG9ubHkgbmVlZHMgdG8gc3RhcnQgYXQgeWMubGVuZ3RoLlxyXG4gICAgICBpZiAoYiA+IDApIGZvciAoOyBiLS07IHhjW2krK10gPSAwKTtcclxuICAgICAgYiA9IEJBU0UgLSAxO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgeWMgZnJvbSB4Yy5cclxuICAgICAgZm9yICg7IGogPiBhOykge1xyXG5cclxuICAgICAgICBpZiAoeGNbLS1qXSA8IHljW2pdKSB7XHJcbiAgICAgICAgICBmb3IgKGkgPSBqOyBpICYmICF4Y1stLWldOyB4Y1tpXSA9IGIpO1xyXG4gICAgICAgICAgLS14Y1tpXTtcclxuICAgICAgICAgIHhjW2pdICs9IEJBU0U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB4Y1tqXSAtPSB5Y1tqXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb3MgYW5kIGFkanVzdCBleHBvbmVudCBhY2NvcmRpbmdseS5cclxuICAgICAgZm9yICg7IHhjWzBdID09IDA7IHhjLnNwbGljZSgwLCAxKSwgLS15ZSk7XHJcblxyXG4gICAgICAvLyBaZXJvP1xyXG4gICAgICBpZiAoIXhjWzBdKSB7XHJcblxyXG4gICAgICAgIC8vIEZvbGxvd2luZyBJRUVFIDc1NCAoMjAwOCkgNi4zLFxyXG4gICAgICAgIC8vIG4gLSBuID0gKzAgIGJ1dCAgbiAtIG4gPSAtMCAgd2hlbiByb3VuZGluZyB0b3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgICB5LnMgPSBST1VORElOR19NT0RFID09IDMgPyAtMSA6IDE7XHJcbiAgICAgICAgeS5jID0gW3kuZSA9IDBdO1xyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciBJbmZpbml0eSBhcyAreCAtICt5ICE9IEluZmluaXR5ICYmIC14IC0gLXkgIT0gSW5maW5pdHlcclxuICAgICAgLy8gZm9yIGZpbml0ZSB4IGFuZCB5LlxyXG4gICAgICByZXR1cm4gbm9ybWFsaXNlKHksIHhjLCB5ZSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogICBuICUgMCA9ICBOXHJcbiAgICAgKiAgIG4gJSBOID0gIE5cclxuICAgICAqICAgbiAlIEkgPSAgblxyXG4gICAgICogICAwICUgbiA9ICAwXHJcbiAgICAgKiAgLTAgJSBuID0gLTBcclxuICAgICAqICAgMCAlIDAgPSAgTlxyXG4gICAgICogICAwICUgTiA9ICBOXHJcbiAgICAgKiAgIDAgJSBJID0gIDBcclxuICAgICAqICAgTiAlIG4gPSAgTlxyXG4gICAgICogICBOICUgMCA9ICBOXHJcbiAgICAgKiAgIE4gJSBOID0gIE5cclxuICAgICAqICAgTiAlIEkgPSAgTlxyXG4gICAgICogICBJICUgbiA9ICBOXHJcbiAgICAgKiAgIEkgJSAwID0gIE5cclxuICAgICAqICAgSSAlIE4gPSAgTlxyXG4gICAgICogICBJICUgSSA9ICBOXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbW9kdWxvIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLiBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIE1PRFVMT19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLm1vZHVsbyA9IFAubW9kID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIHEsIHMsXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICB5ID0gbmV3IEJpZ051bWJlcih5LCBiKTtcclxuXHJcbiAgICAgIC8vIFJldHVybiBOYU4gaWYgeCBpcyBJbmZpbml0eSBvciBOYU4sIG9yIHkgaXMgTmFOIG9yIHplcm8uXHJcbiAgICAgIGlmICgheC5jIHx8ICF5LnMgfHwgeS5jICYmICF5LmNbMF0pIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgeSBpcyBJbmZpbml0eSBvciB4IGlzIHplcm8uXHJcbiAgICAgIH0gZWxzZSBpZiAoIXkuYyB8fCB4LmMgJiYgIXguY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKHgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoTU9EVUxPX01PREUgPT0gOSkge1xyXG5cclxuICAgICAgICAvLyBFdWNsaWRpYW4gZGl2aXNpb246IHEgPSBzaWduKHkpICogZmxvb3IoeCAvIGFicyh5KSlcclxuICAgICAgICAvLyByID0geCAtIHF5ICAgIHdoZXJlICAwIDw9IHIgPCBhYnMoeSlcclxuICAgICAgICBzID0geS5zO1xyXG4gICAgICAgIHkucyA9IDE7XHJcbiAgICAgICAgcSA9IGRpdih4LCB5LCAwLCAzKTtcclxuICAgICAgICB5LnMgPSBzO1xyXG4gICAgICAgIHEucyAqPSBzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHEgPSBkaXYoeCwgeSwgMCwgTU9EVUxPX01PREUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB5ID0geC5taW51cyhxLnRpbWVzKHkpKTtcclxuXHJcbiAgICAgIC8vIFRvIG1hdGNoIEphdmFTY3JpcHQgJSwgZW5zdXJlIHNpZ24gb2YgemVybyBpcyBzaWduIG9mIGRpdmlkZW5kLlxyXG4gICAgICBpZiAoIXkuY1swXSAmJiBNT0RVTE9fTU9ERSA9PSAxKSB5LnMgPSB4LnM7XHJcblxyXG4gICAgICByZXR1cm4geTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiAqIDAgPSAwXHJcbiAgICAgKiAgbiAqIE4gPSBOXHJcbiAgICAgKiAgbiAqIEkgPSBJXHJcbiAgICAgKiAgMCAqIG4gPSAwXHJcbiAgICAgKiAgMCAqIDAgPSAwXHJcbiAgICAgKiAgMCAqIE4gPSBOXHJcbiAgICAgKiAgMCAqIEkgPSBOXHJcbiAgICAgKiAgTiAqIG4gPSBOXHJcbiAgICAgKiAgTiAqIDAgPSBOXHJcbiAgICAgKiAgTiAqIE4gPSBOXHJcbiAgICAgKiAgTiAqIEkgPSBOXHJcbiAgICAgKiAgSSAqIG4gPSBJXHJcbiAgICAgKiAgSSAqIDAgPSBOXHJcbiAgICAgKiAgSSAqIE4gPSBOXHJcbiAgICAgKiAgSSAqIEkgPSBJXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbXVsdGlwbGllZCBieSB0aGUgdmFsdWVcclxuICAgICAqIG9mIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5tdWx0aXBsaWVkQnkgPSBQLnRpbWVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIGMsIGUsIGksIGosIGssIG0sIHhjTCwgeGxvLCB4aGksIHljTCwgeWxvLCB5aGksIHpjLFxyXG4gICAgICAgIGJhc2UsIHNxcnRCYXNlLFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHljID0gKHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpKS5jO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTiwgwrFJbmZpbml0eSBvciDCsTA/XHJcbiAgICAgIGlmICgheGMgfHwgIXljIHx8ICF4Y1swXSB8fCAheWNbMF0pIHtcclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIE5hTiBpZiBlaXRoZXIgaXMgTmFOLCBvciBvbmUgaXMgMCBhbmQgdGhlIG90aGVyIGlzIEluZmluaXR5LlxyXG4gICAgICAgIGlmICgheC5zIHx8ICF5LnMgfHwgeGMgJiYgIXhjWzBdICYmICF5YyB8fCB5YyAmJiAheWNbMF0gJiYgIXhjKSB7XHJcbiAgICAgICAgICB5LmMgPSB5LmUgPSB5LnMgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB5LnMgKj0geC5zO1xyXG5cclxuICAgICAgICAgIC8vIFJldHVybiDCsUluZmluaXR5IGlmIGVpdGhlciBpcyDCsUluZmluaXR5LlxyXG4gICAgICAgICAgaWYgKCF4YyB8fCAheWMpIHtcclxuICAgICAgICAgICAgeS5jID0geS5lID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAvLyBSZXR1cm4gwrEwIGlmIGVpdGhlciBpcyDCsTAuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB5LmMgPSBbMF07XHJcbiAgICAgICAgICAgIHkuZSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZSA9IGJpdEZsb29yKHguZSAvIExPR19CQVNFKSArIGJpdEZsb29yKHkuZSAvIExPR19CQVNFKTtcclxuICAgICAgeS5zICo9IHgucztcclxuICAgICAgeGNMID0geGMubGVuZ3RoO1xyXG4gICAgICB5Y0wgPSB5Yy5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBFbnN1cmUgeGMgcG9pbnRzIHRvIGxvbmdlciBhcnJheSBhbmQgeGNMIHRvIGl0cyBsZW5ndGguXHJcbiAgICAgIGlmICh4Y0wgPCB5Y0wpIHpjID0geGMsIHhjID0geWMsIHljID0gemMsIGkgPSB4Y0wsIHhjTCA9IHljTCwgeWNMID0gaTtcclxuXHJcbiAgICAgIC8vIEluaXRpYWxpc2UgdGhlIHJlc3VsdCBhcnJheSB3aXRoIHplcm9zLlxyXG4gICAgICBmb3IgKGkgPSB4Y0wgKyB5Y0wsIHpjID0gW107IGktLTsgemMucHVzaCgwKSk7XHJcblxyXG4gICAgICBiYXNlID0gQkFTRTtcclxuICAgICAgc3FydEJhc2UgPSBTUVJUX0JBU0U7XHJcblxyXG4gICAgICBmb3IgKGkgPSB5Y0w7IC0taSA+PSAwOykge1xyXG4gICAgICAgIGMgPSAwO1xyXG4gICAgICAgIHlsbyA9IHljW2ldICUgc3FydEJhc2U7XHJcbiAgICAgICAgeWhpID0geWNbaV0gLyBzcXJ0QmFzZSB8IDA7XHJcblxyXG4gICAgICAgIGZvciAoayA9IHhjTCwgaiA9IGkgKyBrOyBqID4gaTspIHtcclxuICAgICAgICAgIHhsbyA9IHhjWy0ta10gJSBzcXJ0QmFzZTtcclxuICAgICAgICAgIHhoaSA9IHhjW2tdIC8gc3FydEJhc2UgfCAwO1xyXG4gICAgICAgICAgbSA9IHloaSAqIHhsbyArIHhoaSAqIHlsbztcclxuICAgICAgICAgIHhsbyA9IHlsbyAqIHhsbyArICgobSAlIHNxcnRCYXNlKSAqIHNxcnRCYXNlKSArIHpjW2pdICsgYztcclxuICAgICAgICAgIGMgPSAoeGxvIC8gYmFzZSB8IDApICsgKG0gLyBzcXJ0QmFzZSB8IDApICsgeWhpICogeGhpO1xyXG4gICAgICAgICAgemNbai0tXSA9IHhsbyAlIGJhc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB6Y1tqXSA9IGM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgKytlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHpjLnNwbGljZSgwLCAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG5vcm1hbGlzZSh5LCB6YywgZSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbmVnYXRlZCxcclxuICAgICAqIGkuZS4gbXVsdGlwbGllZCBieSAtMS5cclxuICAgICAqL1xyXG4gICAgUC5uZWdhdGVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgeCA9IG5ldyBCaWdOdW1iZXIodGhpcyk7XHJcbiAgICAgIHgucyA9IC14LnMgfHwgbnVsbDtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gKyAwID0gblxyXG4gICAgICogIG4gKyBOID0gTlxyXG4gICAgICogIG4gKyBJID0gSVxyXG4gICAgICogIDAgKyBuID0gblxyXG4gICAgICogIDAgKyAwID0gMFxyXG4gICAgICogIDAgKyBOID0gTlxyXG4gICAgICogIDAgKyBJID0gSVxyXG4gICAgICogIE4gKyBuID0gTlxyXG4gICAgICogIE4gKyAwID0gTlxyXG4gICAgICogIE4gKyBOID0gTlxyXG4gICAgICogIE4gKyBJID0gTlxyXG4gICAgICogIEkgKyBuID0gSVxyXG4gICAgICogIEkgKyAwID0gSVxyXG4gICAgICogIEkgKyBOID0gTlxyXG4gICAgICogIEkgKyBJID0gSVxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHBsdXMgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYikuXHJcbiAgICAgKi9cclxuICAgIFAucGx1cyA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHZhciB0LFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIGEgPSB4LnM7XHJcblxyXG4gICAgICB5ID0gbmV3IEJpZ051bWJlcih5LCBiKTtcclxuICAgICAgYiA9IHkucztcclxuXHJcbiAgICAgIC8vIEVpdGhlciBOYU4/XHJcbiAgICAgIGlmICghYSB8fCAhYikgcmV0dXJuIG5ldyBCaWdOdW1iZXIoTmFOKTtcclxuXHJcbiAgICAgIC8vIFNpZ25zIGRpZmZlcj9cclxuICAgICAgIGlmIChhICE9IGIpIHtcclxuICAgICAgICB5LnMgPSAtYjtcclxuICAgICAgICByZXR1cm4geC5taW51cyh5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHhlID0geC5lIC8gTE9HX0JBU0UsXHJcbiAgICAgICAgeWUgPSB5LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgIGlmICgheGUgfHwgIXllKSB7XHJcblxyXG4gICAgICAgIC8vIFJldHVybiDCsUluZmluaXR5IGlmIGVpdGhlciDCsUluZmluaXR5LlxyXG4gICAgICAgIGlmICgheGMgfHwgIXljKSByZXR1cm4gbmV3IEJpZ051bWJlcihhIC8gMCk7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciB6ZXJvP1xyXG4gICAgICAgIC8vIFJldHVybiB5IGlmIHkgaXMgbm9uLXplcm8sIHggaWYgeCBpcyBub24temVybywgb3IgemVybyBpZiBib3RoIGFyZSB6ZXJvLlxyXG4gICAgICAgIGlmICgheGNbMF0gfHwgIXljWzBdKSByZXR1cm4geWNbMF0gPyB5IDogbmV3IEJpZ051bWJlcih4Y1swXSA/IHggOiBhICogMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHhlID0gYml0Rmxvb3IoeGUpO1xyXG4gICAgICB5ZSA9IGJpdEZsb29yKHllKTtcclxuICAgICAgeGMgPSB4Yy5zbGljZSgpO1xyXG5cclxuICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuIEZhc3RlciB0byB1c2UgcmV2ZXJzZSB0aGVuIGRvIHVuc2hpZnRzLlxyXG4gICAgICBpZiAoYSA9IHhlIC0geWUpIHtcclxuICAgICAgICBpZiAoYSA+IDApIHtcclxuICAgICAgICAgIHllID0geGU7XHJcbiAgICAgICAgICB0ID0geWM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGEgPSAtYTtcclxuICAgICAgICAgIHQgPSB4YztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG4gICAgICAgIGZvciAoOyBhLS07IHQucHVzaCgwKSk7XHJcbiAgICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGEgPSB4Yy5sZW5ndGg7XHJcbiAgICAgIGIgPSB5Yy5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBQb2ludCB4YyB0byB0aGUgbG9uZ2VyIGFycmF5LCBhbmQgYiB0byB0aGUgc2hvcnRlciBsZW5ndGguXHJcbiAgICAgIGlmIChhIC0gYiA8IDApIHQgPSB5YywgeWMgPSB4YywgeGMgPSB0LCBiID0gYTtcclxuXHJcbiAgICAgIC8vIE9ubHkgc3RhcnQgYWRkaW5nIGF0IHljLmxlbmd0aCAtIDEgYXMgdGhlIGZ1cnRoZXIgZGlnaXRzIG9mIHhjIGNhbiBiZSBpZ25vcmVkLlxyXG4gICAgICBmb3IgKGEgPSAwOyBiOykge1xyXG4gICAgICAgIGEgPSAoeGNbLS1iXSA9IHhjW2JdICsgeWNbYl0gKyBhKSAvIEJBU0UgfCAwO1xyXG4gICAgICAgIHhjW2JdID0gQkFTRSA9PT0geGNbYl0gPyAwIDogeGNbYl0gJSBCQVNFO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYSkge1xyXG4gICAgICAgIHhjID0gW2FdLmNvbmNhdCh4Yyk7XHJcbiAgICAgICAgKyt5ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgemVybywgYXMgK3ggKyAreSAhPSAwICYmIC14ICsgLXkgIT0gMFxyXG4gICAgICAvLyB5ZSA9IE1BWF9FWFAgKyAxIHBvc3NpYmxlXHJcbiAgICAgIHJldHVybiBub3JtYWxpc2UoeSwgeGMsIHllKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBJZiBzZCBpcyB1bmRlZmluZWQgb3IgbnVsbCBvciB0cnVlIG9yIGZhbHNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMgb2ZcclxuICAgICAqIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgKiBJZiBzZCBpcyB0cnVlIGluY2x1ZGUgaW50ZWdlci1wYXJ0IHRyYWlsaW5nIHplcm9zIGluIHRoZSBjb3VudC5cclxuICAgICAqXHJcbiAgICAgKiBPdGhlcndpc2UsIGlmIHNkIGlzIGEgbnVtYmVyLCByZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgcm91bmRlZCB0byBhIG1heGltdW0gb2Ygc2Qgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yXHJcbiAgICAgKiBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogc2Qge251bWJlcnxib29sZWFufSBudW1iZXI6IHNpZ25pZmljYW50IGRpZ2l0czogaW50ZWdlciwgMSB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogICAgICAgICAgICAgICAgICAgICBib29sZWFuOiB3aGV0aGVyIHRvIGNvdW50IGludGVnZXItcGFydCB0cmFpbGluZyB6ZXJvczogdHJ1ZSBvciBmYWxzZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3NkfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC5wcmVjaXNpb24gPSBQLnNkID0gZnVuY3Rpb24gKHNkLCBybSkge1xyXG4gICAgICB2YXIgYywgbiwgdixcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIGlmIChzZCAhPSBudWxsICYmIHNkICE9PSAhIXNkKSB7XHJcbiAgICAgICAgaW50Q2hlY2soc2QsIDEsIE1BWCk7XHJcbiAgICAgICAgaWYgKHJtID09IG51bGwpIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuICAgICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJvdW5kKG5ldyBCaWdOdW1iZXIoeCksIHNkLCBybSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghKGMgPSB4LmMpKSByZXR1cm4gbnVsbDtcclxuICAgICAgdiA9IGMubGVuZ3RoIC0gMTtcclxuICAgICAgbiA9IHYgKiBMT0dfQkFTRSArIDE7XHJcblxyXG4gICAgICBpZiAodiA9IGNbdl0pIHtcclxuXHJcbiAgICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCBlbGVtZW50LlxyXG4gICAgICAgIGZvciAoOyB2ICUgMTAgPT0gMDsgdiAvPSAxMCwgbi0tKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50LlxyXG4gICAgICAgIGZvciAodiA9IGNbMF07IHYgPj0gMTA7IHYgLz0gMTAsIG4rKyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzZCAmJiB4LmUgKyAxID4gbikgbiA9IHguZSArIDE7XHJcblxyXG4gICAgICByZXR1cm4gbjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBzaGlmdGVkIGJ5IGsgcGxhY2VzXHJcbiAgICAgKiAocG93ZXJzIG9mIDEwKS4gU2hpZnQgdG8gdGhlIHJpZ2h0IGlmIG4gPiAwLCBhbmQgdG8gdGhlIGxlZnQgaWYgbiA8IDAuXHJcbiAgICAgKlxyXG4gICAgICogayB7bnVtYmVyfSBJbnRlZ2VyLCAtTUFYX1NBRkVfSU5URUdFUiB0byBNQVhfU0FGRV9JTlRFR0VSIGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2t9J1xyXG4gICAgICovXHJcbiAgICBQLnNoaWZ0ZWRCeSA9IGZ1bmN0aW9uIChrKSB7XHJcbiAgICAgIGludENoZWNrKGssIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKTtcclxuICAgICAgcmV0dXJuIHRoaXMudGltZXMoJzFlJyArIGspO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqICBzcXJ0KC1uKSA9ICBOXHJcbiAgICAgKiAgc3FydChOKSA9ICBOXHJcbiAgICAgKiAgc3FydCgtSSkgPSAgTlxyXG4gICAgICogIHNxcnQoSSkgPSAgSVxyXG4gICAgICogIHNxcnQoMCkgPSAgMFxyXG4gICAgICogIHNxcnQoLTApID0gLTBcclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIsXHJcbiAgICAgKiByb3VuZGVkIGFjY29yZGluZyB0byBERUNJTUFMX1BMQUNFUyBhbmQgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqL1xyXG4gICAgUC5zcXVhcmVSb290ID0gUC5zcXJ0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgbSwgbiwgciwgcmVwLCB0LFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIGMgPSB4LmMsXHJcbiAgICAgICAgcyA9IHgucyxcclxuICAgICAgICBlID0geC5lLFxyXG4gICAgICAgIGRwID0gREVDSU1BTF9QTEFDRVMgKyA0LFxyXG4gICAgICAgIGhhbGYgPSBuZXcgQmlnTnVtYmVyKCcwLjUnKTtcclxuXHJcbiAgICAgIC8vIE5lZ2F0aXZlL05hTi9JbmZpbml0eS96ZXJvP1xyXG4gICAgICBpZiAocyAhPT0gMSB8fCAhYyB8fCAhY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKCFzIHx8IHMgPCAwICYmICghYyB8fCBjWzBdKSA/IE5hTiA6IGMgPyB4IDogMSAvIDApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJbml0aWFsIGVzdGltYXRlLlxyXG4gICAgICBzID0gTWF0aC5zcXJ0KCt2YWx1ZU9mKHgpKTtcclxuXHJcbiAgICAgIC8vIE1hdGguc3FydCB1bmRlcmZsb3cvb3ZlcmZsb3c/XHJcbiAgICAgIC8vIFBhc3MgeCB0byBNYXRoLnNxcnQgYXMgaW50ZWdlciwgdGhlbiBhZGp1c3QgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQuXHJcbiAgICAgIGlmIChzID09IDAgfHwgcyA9PSAxIC8gMCkge1xyXG4gICAgICAgIG4gPSBjb2VmZlRvU3RyaW5nKGMpO1xyXG4gICAgICAgIGlmICgobi5sZW5ndGggKyBlKSAlIDIgPT0gMCkgbiArPSAnMCc7XHJcbiAgICAgICAgcyA9IE1hdGguc3FydCgrbik7XHJcbiAgICAgICAgZSA9IGJpdEZsb29yKChlICsgMSkgLyAyKSAtIChlIDwgMCB8fCBlICUgMik7XHJcblxyXG4gICAgICAgIGlmIChzID09IDEgLyAwKSB7XHJcbiAgICAgICAgICBuID0gJzVlJyArIGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG4gPSBzLnRvRXhwb25lbnRpYWwoKTtcclxuICAgICAgICAgIG4gPSBuLnNsaWNlKDAsIG4uaW5kZXhPZignZScpICsgMSkgKyBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgciA9IG5ldyBCaWdOdW1iZXIobik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgciA9IG5ldyBCaWdOdW1iZXIocyArICcnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2hlY2sgZm9yIHplcm8uXHJcbiAgICAgIC8vIHIgY291bGQgYmUgemVybyBpZiBNSU5fRVhQIGlzIGNoYW5nZWQgYWZ0ZXIgdGhlIHRoaXMgdmFsdWUgd2FzIGNyZWF0ZWQuXHJcbiAgICAgIC8vIFRoaXMgd291bGQgY2F1c2UgYSBkaXZpc2lvbiBieSB6ZXJvICh4L3QpIGFuZCBoZW5jZSBJbmZpbml0eSBiZWxvdywgd2hpY2ggd291bGQgY2F1c2VcclxuICAgICAgLy8gY29lZmZUb1N0cmluZyB0byB0aHJvdy5cclxuICAgICAgaWYgKHIuY1swXSkge1xyXG4gICAgICAgIGUgPSByLmU7XHJcbiAgICAgICAgcyA9IGUgKyBkcDtcclxuICAgICAgICBpZiAocyA8IDMpIHMgPSAwO1xyXG5cclxuICAgICAgICAvLyBOZXd0b24tUmFwaHNvbiBpdGVyYXRpb24uXHJcbiAgICAgICAgZm9yICg7IDspIHtcclxuICAgICAgICAgIHQgPSByO1xyXG4gICAgICAgICAgciA9IGhhbGYudGltZXModC5wbHVzKGRpdih4LCB0LCBkcCwgMSkpKTtcclxuXHJcbiAgICAgICAgICBpZiAoY29lZmZUb1N0cmluZyh0LmMpLnNsaWNlKDAsIHMpID09PSAobiA9IGNvZWZmVG9TdHJpbmcoci5jKSkuc2xpY2UoMCwgcykpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIFRoZSBleHBvbmVudCBvZiByIG1heSBoZXJlIGJlIG9uZSBsZXNzIHRoYW4gdGhlIGZpbmFsIHJlc3VsdCBleHBvbmVudCxcclxuICAgICAgICAgICAgLy8gZS5nIDAuMDAwOTk5OSAoZS00KSAtLT4gMC4wMDEgKGUtMyksIHNvIGFkanVzdCBzIHNvIHRoZSByb3VuZGluZyBkaWdpdHNcclxuICAgICAgICAgICAgLy8gYXJlIGluZGV4ZWQgY29ycmVjdGx5LlxyXG4gICAgICAgICAgICBpZiAoci5lIDwgZSkgLS1zO1xyXG4gICAgICAgICAgICBuID0gbi5zbGljZShzIC0gMywgcyArIDEpO1xyXG5cclxuICAgICAgICAgICAgLy8gVGhlIDR0aCByb3VuZGluZyBkaWdpdCBtYXkgYmUgaW4gZXJyb3IgYnkgLTEgc28gaWYgdGhlIDQgcm91bmRpbmcgZGlnaXRzXHJcbiAgICAgICAgICAgIC8vIGFyZSA5OTk5IG9yIDQ5OTkgKGkuZS4gYXBwcm9hY2hpbmcgYSByb3VuZGluZyBib3VuZGFyeSkgY29udGludWUgdGhlXHJcbiAgICAgICAgICAgIC8vIGl0ZXJhdGlvbi5cclxuICAgICAgICAgICAgaWYgKG4gPT0gJzk5OTknIHx8ICFyZXAgJiYgbiA9PSAnNDk5OScpIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gT24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBvbmx5LCBjaGVjayB0byBzZWUgaWYgcm91bmRpbmcgdXAgZ2l2ZXMgdGhlXHJcbiAgICAgICAgICAgICAgLy8gZXhhY3QgcmVzdWx0IGFzIHRoZSBuaW5lcyBtYXkgaW5maW5pdGVseSByZXBlYXQuXHJcbiAgICAgICAgICAgICAgaWYgKCFyZXApIHtcclxuICAgICAgICAgICAgICAgIHJvdW5kKHQsIHQuZSArIERFQ0lNQUxfUExBQ0VTICsgMiwgMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHQudGltZXModCkuZXEoeCkpIHtcclxuICAgICAgICAgICAgICAgICAgciA9IHQ7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgZHAgKz0gNDtcclxuICAgICAgICAgICAgICBzICs9IDQ7XHJcbiAgICAgICAgICAgICAgcmVwID0gMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gSWYgcm91bmRpbmcgZGlnaXRzIGFyZSBudWxsLCAwezAsNH0gb3IgNTB7MCwzfSwgY2hlY2sgZm9yIGV4YWN0XHJcbiAgICAgICAgICAgICAgLy8gcmVzdWx0LiBJZiBub3QsIHRoZW4gdGhlcmUgYXJlIGZ1cnRoZXIgZGlnaXRzIGFuZCBtIHdpbGwgYmUgdHJ1dGh5LlxyXG4gICAgICAgICAgICAgIGlmICghK24gfHwgIStuLnNsaWNlKDEpICYmIG4uY2hhckF0KDApID09ICc1Jykge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFRydW5jYXRlIHRvIHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdC5cclxuICAgICAgICAgICAgICAgIHJvdW5kKHIsIHIuZSArIERFQ0lNQUxfUExBQ0VTICsgMiwgMSk7XHJcbiAgICAgICAgICAgICAgICBtID0gIXIudGltZXMocikuZXEoeCk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHJvdW5kKHIsIHIuZSArIERFQ0lNQUxfUExBQ0VTICsgMSwgUk9VTkRJTkdfTU9ERSwgbSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gZXhwb25lbnRpYWwgbm90YXRpb24gYW5kXHJcbiAgICAgKiByb3VuZGVkIHVzaW5nIFJPVU5ESU5HX01PREUgdG8gZHAgZml4ZWQgZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLnRvRXhwb25lbnRpYWwgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgZHArKztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZm9ybWF0KHRoaXMsIGRwLCBybSwgMSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gZml4ZWQtcG9pbnQgbm90YXRpb24gcm91bmRpbmdcclxuICAgICAqIHRvIGRwIGZpeGVkIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yIFJPVU5ESU5HX01PREUgaWYgcm0gaXMgb21pdHRlZC5cclxuICAgICAqXHJcbiAgICAgKiBOb3RlOiBhcyB3aXRoIEphdmFTY3JpcHQncyBudW1iZXIgdHlwZSwgKC0wKS50b0ZpeGVkKDApIGlzICcwJyxcclxuICAgICAqIGJ1dCBlLmcuICgtMC4wMDAwMSkudG9GaXhlZCgwKSBpcyAnLTAnLlxyXG4gICAgICpcclxuICAgICAqIFtkcF0ge251bWJlcn0gRGVjaW1hbCBwbGFjZXMuIEludGVnZXIsIDAgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2RwfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC50b0ZpeGVkID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgICBpZiAoZHAgIT0gbnVsbCkge1xyXG4gICAgICAgIGludENoZWNrKGRwLCAwLCBNQVgpO1xyXG4gICAgICAgIGRwID0gZHAgKyB0aGlzLmUgKyAxO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmb3JtYXQodGhpcywgZHAsIHJtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiByb3VuZGVkXHJcbiAgICAgKiB1c2luZyBybSBvciBST1VORElOR19NT0RFIHRvIGRwIGRlY2ltYWwgcGxhY2VzLCBhbmQgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgcHJvcGVydGllc1xyXG4gICAgICogb2YgdGhlIGZvcm1hdCBvciBGT1JNQVQgb2JqZWN0IChzZWUgQmlnTnVtYmVyLnNldCkuXHJcbiAgICAgKlxyXG4gICAgICogVGhlIGZvcm1hdHRpbmcgb2JqZWN0IG1heSBjb250YWluIHNvbWUgb3IgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHNob3duIGJlbG93LlxyXG4gICAgICpcclxuICAgICAqIEZPUk1BVCA9IHtcclxuICAgICAqICAgcHJlZml4OiAnJyxcclxuICAgICAqICAgZ3JvdXBTaXplOiAzLFxyXG4gICAgICogICBzZWNvbmRhcnlHcm91cFNpemU6IDAsXHJcbiAgICAgKiAgIGdyb3VwU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgKiAgIGRlY2ltYWxTZXBhcmF0b3I6ICcuJyxcclxuICAgICAqICAgZnJhY3Rpb25Hcm91cFNpemU6IDAsXHJcbiAgICAgKiAgIGZyYWN0aW9uR3JvdXBTZXBhcmF0b3I6ICdcXHhBMCcsICAgICAgLy8gbm9uLWJyZWFraW5nIHNwYWNlXHJcbiAgICAgKiAgIHN1ZmZpeDogJydcclxuICAgICAqIH07XHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICogW2Zvcm1hdF0ge29iamVjdH0gRm9ybWF0dGluZyBvcHRpb25zLiBTZWUgRk9STUFUIHBiamVjdCBhYm92ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2RwfHJtfSdcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCBub3QgYW4gb2JqZWN0OiB7Zm9ybWF0fSdcclxuICAgICAqL1xyXG4gICAgUC50b0Zvcm1hdCA9IGZ1bmN0aW9uIChkcCwgcm0sIGZvcm1hdCkge1xyXG4gICAgICB2YXIgc3RyLFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgaWYgKGZvcm1hdCA9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGRwICE9IG51bGwgJiYgcm0gJiYgdHlwZW9mIHJtID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBmb3JtYXQgPSBybTtcclxuICAgICAgICAgIHJtID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKGRwICYmIHR5cGVvZiBkcCA9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgZm9ybWF0ID0gZHA7XHJcbiAgICAgICAgICBkcCA9IHJtID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9ybWF0ID0gRk9STUFUO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm9ybWF0ICE9ICdvYmplY3QnKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgIChiaWdudW1iZXJFcnJvciArICdBcmd1bWVudCBub3QgYW4gb2JqZWN0OiAnICsgZm9ybWF0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3RyID0geC50b0ZpeGVkKGRwLCBybSk7XHJcblxyXG4gICAgICBpZiAoeC5jKSB7XHJcbiAgICAgICAgdmFyIGksXHJcbiAgICAgICAgICBhcnIgPSBzdHIuc3BsaXQoJy4nKSxcclxuICAgICAgICAgIGcxID0gK2Zvcm1hdC5ncm91cFNpemUsXHJcbiAgICAgICAgICBnMiA9ICtmb3JtYXQuc2Vjb25kYXJ5R3JvdXBTaXplLFxyXG4gICAgICAgICAgZ3JvdXBTZXBhcmF0b3IgPSBmb3JtYXQuZ3JvdXBTZXBhcmF0b3IgfHwgJycsXHJcbiAgICAgICAgICBpbnRQYXJ0ID0gYXJyWzBdLFxyXG4gICAgICAgICAgZnJhY3Rpb25QYXJ0ID0gYXJyWzFdLFxyXG4gICAgICAgICAgaXNOZWcgPSB4LnMgPCAwLFxyXG4gICAgICAgICAgaW50RGlnaXRzID0gaXNOZWcgPyBpbnRQYXJ0LnNsaWNlKDEpIDogaW50UGFydCxcclxuICAgICAgICAgIGxlbiA9IGludERpZ2l0cy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmIChnMikgaSA9IGcxLCBnMSA9IGcyLCBnMiA9IGksIGxlbiAtPSBpO1xyXG5cclxuICAgICAgICBpZiAoZzEgPiAwICYmIGxlbiA+IDApIHtcclxuICAgICAgICAgIGkgPSBsZW4gJSBnMSB8fCBnMTtcclxuICAgICAgICAgIGludFBhcnQgPSBpbnREaWdpdHMuc3Vic3RyKDAsIGkpO1xyXG4gICAgICAgICAgZm9yICg7IGkgPCBsZW47IGkgKz0gZzEpIGludFBhcnQgKz0gZ3JvdXBTZXBhcmF0b3IgKyBpbnREaWdpdHMuc3Vic3RyKGksIGcxKTtcclxuICAgICAgICAgIGlmIChnMiA+IDApIGludFBhcnQgKz0gZ3JvdXBTZXBhcmF0b3IgKyBpbnREaWdpdHMuc2xpY2UoaSk7XHJcbiAgICAgICAgICBpZiAoaXNOZWcpIGludFBhcnQgPSAnLScgKyBpbnRQYXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RyID0gZnJhY3Rpb25QYXJ0XHJcbiAgICAgICAgID8gaW50UGFydCArIChmb3JtYXQuZGVjaW1hbFNlcGFyYXRvciB8fCAnJykgKyAoKGcyID0gK2Zvcm1hdC5mcmFjdGlvbkdyb3VwU2l6ZSlcclxuICAgICAgICAgID8gZnJhY3Rpb25QYXJ0LnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXGR7JyArIGcyICsgJ31cXFxcQicsICdnJyksXHJcbiAgICAgICAgICAgJyQmJyArIChmb3JtYXQuZnJhY3Rpb25Hcm91cFNlcGFyYXRvciB8fCAnJykpXHJcbiAgICAgICAgICA6IGZyYWN0aW9uUGFydClcclxuICAgICAgICAgOiBpbnRQYXJ0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gKGZvcm1hdC5wcmVmaXggfHwgJycpICsgc3RyICsgKGZvcm1hdC5zdWZmaXggfHwgJycpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhbiBhcnJheSBvZiB0d28gQmlnTnVtYmVycyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGFzIGEgc2ltcGxlXHJcbiAgICAgKiBmcmFjdGlvbiB3aXRoIGFuIGludGVnZXIgbnVtZXJhdG9yIGFuZCBhbiBpbnRlZ2VyIGRlbm9taW5hdG9yLlxyXG4gICAgICogVGhlIGRlbm9taW5hdG9yIHdpbGwgYmUgYSBwb3NpdGl2ZSBub24temVybyB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNwZWNpZmllZFxyXG4gICAgICogbWF4aW11bSBkZW5vbWluYXRvci4gSWYgYSBtYXhpbXVtIGRlbm9taW5hdG9yIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZW5vbWluYXRvciB3aWxsIGJlXHJcbiAgICAgKiB0aGUgbG93ZXN0IHZhbHVlIG5lY2Vzc2FyeSB0byByZXByZXNlbnQgdGhlIG51bWJlciBleGFjdGx5LlxyXG4gICAgICpcclxuICAgICAqIFttZF0ge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBJbnRlZ2VyID49IDEsIG9yIEluZmluaXR5LiBUaGUgbWF4aW11bSBkZW5vbWluYXRvci5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX0gOiB7bWR9J1xyXG4gICAgICovXHJcbiAgICBQLnRvRnJhY3Rpb24gPSBmdW5jdGlvbiAobWQpIHtcclxuICAgICAgdmFyIGQsIGQwLCBkMSwgZDIsIGUsIGV4cCwgbiwgbjAsIG4xLCBxLCByLCBzLFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIHhjID0geC5jO1xyXG5cclxuICAgICAgaWYgKG1kICE9IG51bGwpIHtcclxuICAgICAgICBuID0gbmV3IEJpZ051bWJlcihtZCk7XHJcblxyXG4gICAgICAgIC8vIFRocm93IGlmIG1kIGlzIGxlc3MgdGhhbiBvbmUgb3IgaXMgbm90IGFuIGludGVnZXIsIHVubGVzcyBpdCBpcyBJbmZpbml0eS5cclxuICAgICAgICBpZiAoIW4uaXNJbnRlZ2VyKCkgJiYgKG4uYyB8fCBuLnMgIT09IDEpIHx8IG4ubHQoT05FKSkge1xyXG4gICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0FyZ3VtZW50ICcgK1xyXG4gICAgICAgICAgICAgIChuLmlzSW50ZWdlcigpID8gJ291dCBvZiByYW5nZTogJyA6ICdub3QgYW4gaW50ZWdlcjogJykgKyB2YWx1ZU9mKG4pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICgheGMpIHJldHVybiBuZXcgQmlnTnVtYmVyKHgpO1xyXG5cclxuICAgICAgZCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgbjEgPSBkMCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgZDEgPSBuMCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgcyA9IGNvZWZmVG9TdHJpbmcoeGMpO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIGluaXRpYWwgZGVub21pbmF0b3IuXHJcbiAgICAgIC8vIGQgaXMgYSBwb3dlciBvZiAxMCBhbmQgdGhlIG1pbmltdW0gbWF4IGRlbm9taW5hdG9yIHRoYXQgc3BlY2lmaWVzIHRoZSB2YWx1ZSBleGFjdGx5LlxyXG4gICAgICBlID0gZC5lID0gcy5sZW5ndGggLSB4LmUgLSAxO1xyXG4gICAgICBkLmNbMF0gPSBQT1dTX1RFTlsoZXhwID0gZSAlIExPR19CQVNFKSA8IDAgPyBMT0dfQkFTRSArIGV4cCA6IGV4cF07XHJcbiAgICAgIG1kID0gIW1kIHx8IG4uY29tcGFyZWRUbyhkKSA+IDAgPyAoZSA+IDAgPyBkIDogbjEpIDogbjtcclxuXHJcbiAgICAgIGV4cCA9IE1BWF9FWFA7XHJcbiAgICAgIE1BWF9FWFAgPSAxIC8gMDtcclxuICAgICAgbiA9IG5ldyBCaWdOdW1iZXIocyk7XHJcblxyXG4gICAgICAvLyBuMCA9IGQxID0gMFxyXG4gICAgICBuMC5jWzBdID0gMDtcclxuXHJcbiAgICAgIGZvciAoOyA7KSAge1xyXG4gICAgICAgIHEgPSBkaXYobiwgZCwgMCwgMSk7XHJcbiAgICAgICAgZDIgPSBkMC5wbHVzKHEudGltZXMoZDEpKTtcclxuICAgICAgICBpZiAoZDIuY29tcGFyZWRUbyhtZCkgPT0gMSkgYnJlYWs7XHJcbiAgICAgICAgZDAgPSBkMTtcclxuICAgICAgICBkMSA9IGQyO1xyXG4gICAgICAgIG4xID0gbjAucGx1cyhxLnRpbWVzKGQyID0gbjEpKTtcclxuICAgICAgICBuMCA9IGQyO1xyXG4gICAgICAgIGQgPSBuLm1pbnVzKHEudGltZXMoZDIgPSBkKSk7XHJcbiAgICAgICAgbiA9IGQyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkMiA9IGRpdihtZC5taW51cyhkMCksIGQxLCAwLCAxKTtcclxuICAgICAgbjAgPSBuMC5wbHVzKGQyLnRpbWVzKG4xKSk7XHJcbiAgICAgIGQwID0gZDAucGx1cyhkMi50aW1lcyhkMSkpO1xyXG4gICAgICBuMC5zID0gbjEucyA9IHgucztcclxuICAgICAgZSA9IGUgKiAyO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGZyYWN0aW9uIGlzIGNsb3NlciB0byB4LCBuMC9kMCBvciBuMS9kMVxyXG4gICAgICByID0gZGl2KG4xLCBkMSwgZSwgUk9VTkRJTkdfTU9ERSkubWludXMoeCkuYWJzKCkuY29tcGFyZWRUbyhcclxuICAgICAgICAgIGRpdihuMCwgZDAsIGUsIFJPVU5ESU5HX01PREUpLm1pbnVzKHgpLmFicygpKSA8IDEgPyBbbjEsIGQxXSA6IFtuMCwgZDBdO1xyXG5cclxuICAgICAgTUFYX0VYUCA9IGV4cDtcclxuXHJcbiAgICAgIHJldHVybiByO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgY29udmVydGVkIHRvIGEgbnVtYmVyIHByaW1pdGl2ZS5cclxuICAgICAqL1xyXG4gICAgUC50b051bWJlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICt2YWx1ZU9mKHRoaXMpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHJvdW5kZWQgdG8gc2Qgc2lnbmlmaWNhbnQgZGlnaXRzXHJcbiAgICAgKiB1c2luZyByb3VuZGluZyBtb2RlIHJtIG9yIFJPVU5ESU5HX01PREUuIElmIHNkIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0c1xyXG4gICAgICogbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSB2YWx1ZSBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiwgdGhlbiB1c2VcclxuICAgICAqIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtzZHxybX0nXHJcbiAgICAgKi9cclxuICAgIFAudG9QcmVjaXNpb24gPSBmdW5jdGlvbiAoc2QsIHJtKSB7XHJcbiAgICAgIGlmIChzZCAhPSBudWxsKSBpbnRDaGVjayhzZCwgMSwgTUFYKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdCh0aGlzLCBzZCwgcm0sIDIpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGluIGJhc2UgYiwgb3IgYmFzZSAxMCBpZiBiIGlzXHJcbiAgICAgKiBvbWl0dGVkLiBJZiBhIGJhc2UgaXMgc3BlY2lmaWVkLCBpbmNsdWRpbmcgYmFzZSAxMCwgcm91bmQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZFxyXG4gICAgICogUk9VTkRJTkdfTU9ERS4gSWYgYSBiYXNlIGlzIG5vdCBzcGVjaWZpZWQsIGFuZCB0aGlzIEJpZ051bWJlciBoYXMgYSBwb3NpdGl2ZSBleHBvbmVudFxyXG4gICAgICogdGhhdCBpcyBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gVE9fRVhQX1BPUywgb3IgYSBuZWdhdGl2ZSBleHBvbmVudCBlcXVhbCB0byBvciBsZXNzIHRoYW5cclxuICAgICAqIFRPX0VYUF9ORUcsIHJldHVybiBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBbYl0ge251bWJlcn0gSW50ZWdlciwgMiB0byBBTFBIQUJFVC5sZW5ndGggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBCYXNlIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtifSdcclxuICAgICAqL1xyXG4gICAgUC50b1N0cmluZyA9IGZ1bmN0aW9uIChiKSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgbiA9IHRoaXMsXHJcbiAgICAgICAgcyA9IG4ucyxcclxuICAgICAgICBlID0gbi5lO1xyXG5cclxuICAgICAgLy8gSW5maW5pdHkgb3IgTmFOP1xyXG4gICAgICBpZiAoZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgICBzdHIgPSAnSW5maW5pdHknO1xyXG4gICAgICAgICAgaWYgKHMgPCAwKSBzdHIgPSAnLScgKyBzdHI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0ciA9ICdOYU4nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoYiA9PSBudWxsKSB7XHJcbiAgICAgICAgICBzdHIgPSBlIDw9IFRPX0VYUF9ORUcgfHwgZSA+PSBUT19FWFBfUE9TXHJcbiAgICAgICAgICAgPyB0b0V4cG9uZW50aWFsKGNvZWZmVG9TdHJpbmcobi5jKSwgZSlcclxuICAgICAgICAgICA6IHRvRml4ZWRQb2ludChjb2VmZlRvU3RyaW5nKG4uYyksIGUsICcwJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChiID09PSAxMCkge1xyXG4gICAgICAgICAgbiA9IHJvdW5kKG5ldyBCaWdOdW1iZXIobiksIERFQ0lNQUxfUExBQ0VTICsgZSArIDEsIFJPVU5ESU5HX01PREUpO1xyXG4gICAgICAgICAgc3RyID0gdG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcobi5jKSwgbi5lLCAnMCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpbnRDaGVjayhiLCAyLCBBTFBIQUJFVC5sZW5ndGgsICdCYXNlJyk7XHJcbiAgICAgICAgICBzdHIgPSBjb252ZXJ0QmFzZSh0b0ZpeGVkUG9pbnQoY29lZmZUb1N0cmluZyhuLmMpLCBlLCAnMCcpLCAxMCwgYiwgcywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocyA8IDAgJiYgbi5jWzBdKSBzdHIgPSAnLScgKyBzdHI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGFzIHRvU3RyaW5nLCBidXQgZG8gbm90IGFjY2VwdCBhIGJhc2UgYXJndW1lbnQsIGFuZCBpbmNsdWRlIHRoZSBtaW51cyBzaWduIGZvclxyXG4gICAgICogbmVnYXRpdmUgemVyby5cclxuICAgICAqL1xyXG4gICAgUC52YWx1ZU9mID0gUC50b0pTT04gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZU9mKHRoaXMpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgUC5faXNCaWdOdW1iZXIgPSB0cnVlO1xyXG5cclxuICAgIGlmIChjb25maWdPYmplY3QgIT0gbnVsbCkgQmlnTnVtYmVyLnNldChjb25maWdPYmplY3QpO1xyXG5cclxuICAgIHJldHVybiBCaWdOdW1iZXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUFJJVkFURSBIRUxQRVIgRlVOQ1RJT05TXHJcblxyXG4gIC8vIFRoZXNlIGZ1bmN0aW9ucyBkb24ndCBuZWVkIGFjY2VzcyB0byB2YXJpYWJsZXMsXHJcbiAgLy8gZS5nLiBERUNJTUFMX1BMQUNFUywgaW4gdGhlIHNjb3BlIG9mIHRoZSBgY2xvbmVgIGZ1bmN0aW9uIGFib3ZlLlxyXG5cclxuXHJcbiAgZnVuY3Rpb24gYml0Rmxvb3Iobikge1xyXG4gICAgdmFyIGkgPSBuIHwgMDtcclxuICAgIHJldHVybiBuID4gMCB8fCBuID09PSBpID8gaSA6IGkgLSAxO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIFJldHVybiBhIGNvZWZmaWNpZW50IGFycmF5IGFzIGEgc3RyaW5nIG9mIGJhc2UgMTAgZGlnaXRzLlxyXG4gIGZ1bmN0aW9uIGNvZWZmVG9TdHJpbmcoYSkge1xyXG4gICAgdmFyIHMsIHosXHJcbiAgICAgIGkgPSAxLFxyXG4gICAgICBqID0gYS5sZW5ndGgsXHJcbiAgICAgIHIgPSBhWzBdICsgJyc7XHJcblxyXG4gICAgZm9yICg7IGkgPCBqOykge1xyXG4gICAgICBzID0gYVtpKytdICsgJyc7XHJcbiAgICAgIHogPSBMT0dfQkFTRSAtIHMubGVuZ3RoO1xyXG4gICAgICBmb3IgKDsgei0tOyBzID0gJzAnICsgcyk7XHJcbiAgICAgIHIgKz0gcztcclxuICAgIH1cclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICBmb3IgKGogPSByLmxlbmd0aDsgci5jaGFyQ29kZUF0KC0taikgPT09IDQ4Oyk7XHJcblxyXG4gICAgcmV0dXJuIHIuc2xpY2UoMCwgaiArIDEgfHwgMSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ29tcGFyZSB0aGUgdmFsdWUgb2YgQmlnTnVtYmVycyB4IGFuZCB5LlxyXG4gIGZ1bmN0aW9uIGNvbXBhcmUoeCwgeSkge1xyXG4gICAgdmFyIGEsIGIsXHJcbiAgICAgIHhjID0geC5jLFxyXG4gICAgICB5YyA9IHkuYyxcclxuICAgICAgaSA9IHgucyxcclxuICAgICAgaiA9IHkucyxcclxuICAgICAgayA9IHguZSxcclxuICAgICAgbCA9IHkuZTtcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOP1xyXG4gICAgaWYgKCFpIHx8ICFqKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBhID0geGMgJiYgIXhjWzBdO1xyXG4gICAgYiA9IHljICYmICF5Y1swXTtcclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmIChhIHx8IGIpIHJldHVybiBhID8gYiA/IDAgOiAtaiA6IGk7XHJcblxyXG4gICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgaWYgKGkgIT0gaikgcmV0dXJuIGk7XHJcblxyXG4gICAgYSA9IGkgPCAwO1xyXG4gICAgYiA9IGsgPT0gbDtcclxuXHJcbiAgICAvLyBFaXRoZXIgSW5maW5pdHk/XHJcbiAgICBpZiAoIXhjIHx8ICF5YykgcmV0dXJuIGIgPyAwIDogIXhjIF4gYSA/IDEgOiAtMTtcclxuXHJcbiAgICAvLyBDb21wYXJlIGV4cG9uZW50cy5cclxuICAgIGlmICghYikgcmV0dXJuIGsgPiBsIF4gYSA/IDEgOiAtMTtcclxuXHJcbiAgICBqID0gKGsgPSB4Yy5sZW5ndGgpIDwgKGwgPSB5Yy5sZW5ndGgpID8gayA6IGw7XHJcblxyXG4gICAgLy8gQ29tcGFyZSBkaWdpdCBieSBkaWdpdC5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBqOyBpKyspIGlmICh4Y1tpXSAhPSB5Y1tpXSkgcmV0dXJuIHhjW2ldID4geWNbaV0gXiBhID8gMSA6IC0xO1xyXG5cclxuICAgIC8vIENvbXBhcmUgbGVuZ3Rocy5cclxuICAgIHJldHVybiBrID09IGwgPyAwIDogayA+IGwgXiBhID8gMSA6IC0xO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ2hlY2sgdGhhdCBuIGlzIGEgcHJpbWl0aXZlIG51bWJlciwgYW4gaW50ZWdlciwgYW5kIGluIHJhbmdlLCBvdGhlcndpc2UgdGhyb3cuXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaW50Q2hlY2sobiwgbWluLCBtYXgsIG5hbWUpIHtcclxuICAgIGlmIChuIDwgbWluIHx8IG4gPiBtYXggfHwgbiAhPT0gbWF0aGZsb29yKG4pKSB7XHJcbiAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAobmFtZSB8fCAnQXJndW1lbnQnKSArICh0eXBlb2YgbiA9PSAnbnVtYmVyJ1xyXG4gICAgICAgICA/IG4gPCBtaW4gfHwgbiA+IG1heCA/ICcgb3V0IG9mIHJhbmdlOiAnIDogJyBub3QgYW4gaW50ZWdlcjogJ1xyXG4gICAgICAgICA6ICcgbm90IGEgcHJpbWl0aXZlIG51bWJlcjogJykgKyBTdHJpbmcobikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIEFzc3VtZXMgZmluaXRlIG4uXHJcbiAgZnVuY3Rpb24gaXNPZGQobikge1xyXG4gICAgdmFyIGsgPSBuLmMubGVuZ3RoIC0gMTtcclxuICAgIHJldHVybiBiaXRGbG9vcihuLmUgLyBMT0dfQkFTRSkgPT0gayAmJiBuLmNba10gJSAyICE9IDA7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gdG9FeHBvbmVudGlhbChzdHIsIGUpIHtcclxuICAgIHJldHVybiAoc3RyLmxlbmd0aCA+IDEgPyBzdHIuY2hhckF0KDApICsgJy4nICsgc3RyLnNsaWNlKDEpIDogc3RyKSArXHJcbiAgICAgKGUgPCAwID8gJ2UnIDogJ2UrJykgKyBlO1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIHRvRml4ZWRQb2ludChzdHIsIGUsIHopIHtcclxuICAgIHZhciBsZW4sIHpzO1xyXG5cclxuICAgIC8vIE5lZ2F0aXZlIGV4cG9uZW50P1xyXG4gICAgaWYgKGUgPCAwKSB7XHJcblxyXG4gICAgICAvLyBQcmVwZW5kIHplcm9zLlxyXG4gICAgICBmb3IgKHpzID0geiArICcuJzsgKytlOyB6cyArPSB6KTtcclxuICAgICAgc3RyID0genMgKyBzdHI7XHJcblxyXG4gICAgLy8gUG9zaXRpdmUgZXhwb25lbnRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBBcHBlbmQgemVyb3MuXHJcbiAgICAgIGlmICgrK2UgPiBsZW4pIHtcclxuICAgICAgICBmb3IgKHpzID0geiwgZSAtPSBsZW47IC0tZTsgenMgKz0geik7XHJcbiAgICAgICAgc3RyICs9IHpzO1xyXG4gICAgICB9IGVsc2UgaWYgKGUgPCBsZW4pIHtcclxuICAgICAgICBzdHIgPSBzdHIuc2xpY2UoMCwgZSkgKyAnLicgKyBzdHIuc2xpY2UoZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIEVYUE9SVFxyXG5cclxuXHJcbiAgQmlnTnVtYmVyID0gY2xvbmUoKTtcclxuICBCaWdOdW1iZXJbJ2RlZmF1bHQnXSA9IEJpZ051bWJlci5CaWdOdW1iZXIgPSBCaWdOdW1iZXI7XHJcblxyXG4gIC8vIEFNRC5cclxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcclxuICAgIGRlZmluZShmdW5jdGlvbiAoKSB7IHJldHVybiBCaWdOdW1iZXI7IH0pO1xyXG5cclxuICAvLyBOb2RlLmpzIGFuZCBvdGhlciBlbnZpcm9ubWVudHMgdGhhdCBzdXBwb3J0IG1vZHVsZS5leHBvcnRzLlxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xyXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCaWdOdW1iZXI7XHJcblxyXG4gIC8vIEJyb3dzZXIuXHJcbiAgfSBlbHNlIHtcclxuICAgIGlmICghZ2xvYmFsT2JqZWN0KSB7XHJcbiAgICAgIGdsb2JhbE9iamVjdCA9IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYgPyBzZWxmIDogd2luZG93O1xyXG4gICAgfVxyXG5cclxuICAgIGdsb2JhbE9iamVjdC5CaWdOdW1iZXIgPSBCaWdOdW1iZXI7XHJcbiAgfVxyXG59KSh0aGlzKTtcclxuIiwidmFyIGpzb25fc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9saWIvc3RyaW5naWZ5LmpzJykuc3RyaW5naWZ5O1xudmFyIGpzb25fcGFyc2UgICAgID0gcmVxdWlyZSgnLi9saWIvcGFyc2UuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgcmV0dXJuICB7XG4gICAgICAgIHBhcnNlOiBqc29uX3BhcnNlKG9wdGlvbnMpLFxuICAgICAgICBzdHJpbmdpZnk6IGpzb25fc3RyaW5naWZ5XG4gICAgfVxufTtcbi8vY3JlYXRlIHRoZSBkZWZhdWx0IG1ldGhvZCBtZW1iZXJzIHdpdGggbm8gb3B0aW9ucyBhcHBsaWVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxubW9kdWxlLmV4cG9ydHMucGFyc2UgPSBqc29uX3BhcnNlKCk7XG5tb2R1bGUuZXhwb3J0cy5zdHJpbmdpZnkgPSBqc29uX3N0cmluZ2lmeTtcbiIsInZhciBCaWdOdW1iZXIgPSBudWxsO1xuXG4vLyByZWdleHB4cyBleHRyYWN0ZWQgZnJvbVxuLy8gKGMpIEJTRC0zLUNsYXVzZVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zhc3RpZnkvc2VjdXJlLWpzb24tcGFyc2UvZ3JhcGhzL2NvbnRyaWJ1dG9ycyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL2hhcGlqcy9ib3VybmUvZ3JhcGhzL2NvbnRyaWJ1dG9yc1xuXG5jb25zdCBzdXNwZWN0UHJvdG9SeCA9IC8oPzpffFxcXFx1MDA1W0ZmXSkoPzpffFxcXFx1MDA1W0ZmXSkoPzpwfFxcXFx1MDA3MCkoPzpyfFxcXFx1MDA3MikoPzpvfFxcXFx1MDA2W0ZmXSkoPzp0fFxcXFx1MDA3NCkoPzpvfFxcXFx1MDA2W0ZmXSkoPzpffFxcXFx1MDA1W0ZmXSkoPzpffFxcXFx1MDA1W0ZmXSkvO1xuY29uc3Qgc3VzcGVjdENvbnN0cnVjdG9yUnggPSAvKD86Y3xcXFxcdTAwNjMpKD86b3xcXFxcdTAwNltGZl0pKD86bnxcXFxcdTAwNltFZV0pKD86c3xcXFxcdTAwNzMpKD86dHxcXFxcdTAwNzQpKD86cnxcXFxcdTAwNzIpKD86dXxcXFxcdTAwNzUpKD86Y3xcXFxcdTAwNjMpKD86dHxcXFxcdTAwNzQpKD86b3xcXFxcdTAwNltGZl0pKD86cnxcXFxcdTAwNzIpLztcblxuLypcbiAgICBqc29uX3BhcnNlLmpzXG4gICAgMjAxMi0wNi0yMFxuXG4gICAgUHVibGljIERvbWFpbi5cblxuICAgIE5PIFdBUlJBTlRZIEVYUFJFU1NFRCBPUiBJTVBMSUVELiBVU0UgQVQgWU9VUiBPV04gUklTSy5cblxuICAgIFRoaXMgZmlsZSBjcmVhdGVzIGEganNvbl9wYXJzZSBmdW5jdGlvbi5cbiAgICBEdXJpbmcgY3JlYXRlIHlvdSBjYW4gKG9wdGlvbmFsbHkpIHNwZWNpZnkgc29tZSBiZWhhdmlvdXJhbCBzd2l0Y2hlc1xuXG4gICAgICAgIHJlcXVpcmUoJ2pzb24tYmlnaW50Jykob3B0aW9ucylcblxuICAgICAgICAgICAgVGhlIG9wdGlvbmFsIG9wdGlvbnMgcGFyYW1ldGVyIGhvbGRzIHN3aXRjaGVzIHRoYXQgZHJpdmUgY2VydGFpblxuICAgICAgICAgICAgYXNwZWN0cyBvZiB0aGUgcGFyc2luZyBwcm9jZXNzOlxuICAgICAgICAgICAgKiBvcHRpb25zLnN0cmljdCA9IHRydWUgd2lsbCB3YXJuIGFib3V0IGR1cGxpY2F0ZS1rZXkgdXNhZ2UgaW4gdGhlIGpzb24uXG4gICAgICAgICAgICAgIFRoZSBkZWZhdWx0IChzdHJpY3QgPSBmYWxzZSkgd2lsbCBzaWxlbnRseSBpZ25vcmUgdGhvc2UgYW5kIG92ZXJ3cml0ZVxuICAgICAgICAgICAgICB2YWx1ZXMgZm9yIGtleXMgdGhhdCBhcmUgaW4gZHVwbGljYXRlIHVzZS5cblxuICAgIFRoZSByZXN1bHRpbmcgZnVuY3Rpb24gZm9sbG93cyB0aGlzIHNpZ25hdHVyZTpcbiAgICAgICAganNvbl9wYXJzZSh0ZXh0LCByZXZpdmVyKVxuICAgICAgICAgICAgVGhpcyBtZXRob2QgcGFyc2VzIGEgSlNPTiB0ZXh0IHRvIHByb2R1Y2UgYW4gb2JqZWN0IG9yIGFycmF5LlxuICAgICAgICAgICAgSXQgY2FuIHRocm93IGEgU3ludGF4RXJyb3IgZXhjZXB0aW9uLlxuXG4gICAgICAgICAgICBUaGUgb3B0aW9uYWwgcmV2aXZlciBwYXJhbWV0ZXIgaXMgYSBmdW5jdGlvbiB0aGF0IGNhbiBmaWx0ZXIgYW5kXG4gICAgICAgICAgICB0cmFuc2Zvcm0gdGhlIHJlc3VsdHMuIEl0IHJlY2VpdmVzIGVhY2ggb2YgdGhlIGtleXMgYW5kIHZhbHVlcyxcbiAgICAgICAgICAgIGFuZCBpdHMgcmV0dXJuIHZhbHVlIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgdmFsdWUuXG4gICAgICAgICAgICBJZiBpdCByZXR1cm5zIHdoYXQgaXQgcmVjZWl2ZWQsIHRoZW4gdGhlIHN0cnVjdHVyZSBpcyBub3QgbW9kaWZpZWQuXG4gICAgICAgICAgICBJZiBpdCByZXR1cm5zIHVuZGVmaW5lZCB0aGVuIHRoZSBtZW1iZXIgaXMgZGVsZXRlZC5cblxuICAgICAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICAgICAgLy8gUGFyc2UgdGhlIHRleHQuIFZhbHVlcyB0aGF0IGxvb2sgbGlrZSBJU08gZGF0ZSBzdHJpbmdzIHdpbGxcbiAgICAgICAgICAgIC8vIGJlIGNvbnZlcnRlZCB0byBEYXRlIG9iamVjdHMuXG5cbiAgICAgICAgICAgIG15RGF0YSA9IGpzb25fcGFyc2UodGV4dCwgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgYTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBhID1cbi9eKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSlUKFxcZHsyfSk6KFxcZHsyfSk6KFxcZHsyfSg/OlxcLlxcZCopPylaJC8uZXhlYyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK2FbMV0sICthWzJdIC0gMSwgK2FbM10sICthWzRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICthWzVdLCArYVs2XSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgVGhpcyBpcyBhIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4gWW91IGFyZSBmcmVlIHRvIGNvcHksIG1vZGlmeSwgb3JcbiAgICByZWRpc3RyaWJ1dGUuXG5cbiAgICBUaGlzIGNvZGUgc2hvdWxkIGJlIG1pbmlmaWVkIGJlZm9yZSBkZXBsb3ltZW50LlxuICAgIFNlZSBodHRwOi8vamF2YXNjcmlwdC5jcm9ja2ZvcmQuY29tL2pzbWluLmh0bWxcblxuICAgIFVTRSBZT1VSIE9XTiBDT1BZLiBJVCBJUyBFWFRSRU1FTFkgVU5XSVNFIFRPIExPQUQgQ09ERSBGUk9NIFNFUlZFUlMgWU9VIERPXG4gICAgTk9UIENPTlRST0wuXG4qL1xuXG4vKm1lbWJlcnMgXCJcIiwgXCJcXFwiXCIsIFwiXFwvXCIsIFwiXFxcXFwiLCBhdCwgYiwgY2FsbCwgY2hhckF0LCBmLCBmcm9tQ2hhckNvZGUsXG4gICAgaGFzT3duUHJvcGVydHksIG1lc3NhZ2UsIG4sIG5hbWUsIHByb3RvdHlwZSwgcHVzaCwgciwgdCwgdGV4dFxuKi9cblxudmFyIGpzb25fcGFyc2UgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVGhpcyBpcyBhIGZ1bmN0aW9uIHRoYXQgY2FuIHBhcnNlIGEgSlNPTiB0ZXh0LCBwcm9kdWNpbmcgYSBKYXZhU2NyaXB0XG4gIC8vIGRhdGEgc3RydWN0dXJlLiBJdCBpcyBhIHNpbXBsZSwgcmVjdXJzaXZlIGRlc2NlbnQgcGFyc2VyLiBJdCBkb2VzIG5vdCB1c2VcbiAgLy8gZXZhbCBvciByZWd1bGFyIGV4cHJlc3Npb25zLCBzbyBpdCBjYW4gYmUgdXNlZCBhcyBhIG1vZGVsIGZvciBpbXBsZW1lbnRpbmdcbiAgLy8gYSBKU09OIHBhcnNlciBpbiBvdGhlciBsYW5ndWFnZXMuXG5cbiAgLy8gV2UgYXJlIGRlZmluaW5nIHRoZSBmdW5jdGlvbiBpbnNpZGUgb2YgYW5vdGhlciBmdW5jdGlvbiB0byBhdm9pZCBjcmVhdGluZ1xuICAvLyBnbG9iYWwgdmFyaWFibGVzLlxuXG4gIC8vIERlZmF1bHQgb3B0aW9ucyBvbmUgY2FuIG92ZXJyaWRlIGJ5IHBhc3Npbmcgb3B0aW9ucyB0byB0aGUgcGFyc2UoKVxuICB2YXIgX29wdGlvbnMgPSB7XG4gICAgc3RyaWN0OiBmYWxzZSwgLy8gbm90IGJlaW5nIHN0cmljdCBtZWFucyBkbyBub3QgZ2VuZXJhdGUgc3ludGF4IGVycm9ycyBmb3IgXCJkdXBsaWNhdGUga2V5XCJcbiAgICBzdG9yZUFzU3RyaW5nOiBmYWxzZSwgLy8gdG9nZ2xlcyB3aGV0aGVyIHRoZSB2YWx1ZXMgc2hvdWxkIGJlIHN0b3JlZCBhcyBCaWdOdW1iZXIgKGRlZmF1bHQpIG9yIGEgc3RyaW5nXG4gICAgYWx3YXlzUGFyc2VBc0JpZzogZmFsc2UsIC8vIHRvZ2dsZXMgd2hldGhlciBhbGwgbnVtYmVycyBzaG91bGQgYmUgQmlnXG4gICAgdXNlTmF0aXZlQmlnSW50OiBmYWxzZSwgLy8gdG9nZ2xlcyB3aGV0aGVyIHRvIHVzZSBuYXRpdmUgQmlnSW50IGluc3RlYWQgb2YgYmlnbnVtYmVyLmpzXG4gICAgcHJvdG9BY3Rpb246ICdlcnJvcicsXG4gICAgY29uc3RydWN0b3JBY3Rpb246ICdlcnJvcicsXG4gIH07XG5cbiAgLy8gSWYgdGhlcmUgYXJlIG9wdGlvbnMsIHRoZW4gdXNlIHRoZW0gdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgX29wdGlvbnNcbiAgaWYgKG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zICE9PSBudWxsKSB7XG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0ID09PSB0cnVlKSB7XG4gICAgICBfb3B0aW9ucy5zdHJpY3QgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zdG9yZUFzU3RyaW5nID09PSB0cnVlKSB7XG4gICAgICBfb3B0aW9ucy5zdG9yZUFzU3RyaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgX29wdGlvbnMuYWx3YXlzUGFyc2VBc0JpZyA9XG4gICAgICBvcHRpb25zLmFsd2F5c1BhcnNlQXNCaWcgPT09IHRydWUgPyBvcHRpb25zLmFsd2F5c1BhcnNlQXNCaWcgOiBmYWxzZTtcbiAgICBfb3B0aW9ucy51c2VOYXRpdmVCaWdJbnQgPVxuICAgICAgb3B0aW9ucy51c2VOYXRpdmVCaWdJbnQgPT09IHRydWUgPyBvcHRpb25zLnVzZU5hdGl2ZUJpZ0ludCA6IGZhbHNlO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmNvbnN0cnVjdG9yQWN0aW9uICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKFxuICAgICAgICBvcHRpb25zLmNvbnN0cnVjdG9yQWN0aW9uID09PSAnZXJyb3InIHx8XG4gICAgICAgIG9wdGlvbnMuY29uc3RydWN0b3JBY3Rpb24gPT09ICdpZ25vcmUnIHx8XG4gICAgICAgIG9wdGlvbnMuY29uc3RydWN0b3JBY3Rpb24gPT09ICdwcmVzZXJ2ZSdcbiAgICAgICkge1xuICAgICAgICBfb3B0aW9ucy5jb25zdHJ1Y3RvckFjdGlvbiA9IG9wdGlvbnMuY29uc3RydWN0b3JBY3Rpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEluY29ycmVjdCB2YWx1ZSBmb3IgY29uc3RydWN0b3JBY3Rpb24gb3B0aW9uLCBtdXN0IGJlIFwiZXJyb3JcIiwgXCJpZ25vcmVcIiBvciB1bmRlZmluZWQgYnV0IHBhc3NlZCAke29wdGlvbnMuY29uc3RydWN0b3JBY3Rpb259YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5wcm90b0FjdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChcbiAgICAgICAgb3B0aW9ucy5wcm90b0FjdGlvbiA9PT0gJ2Vycm9yJyB8fFxuICAgICAgICBvcHRpb25zLnByb3RvQWN0aW9uID09PSAnaWdub3JlJyB8fFxuICAgICAgICBvcHRpb25zLnByb3RvQWN0aW9uID09PSAncHJlc2VydmUnXG4gICAgICApIHtcbiAgICAgICAgX29wdGlvbnMucHJvdG9BY3Rpb24gPSBvcHRpb25zLnByb3RvQWN0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbmNvcnJlY3QgdmFsdWUgZm9yIHByb3RvQWN0aW9uIG9wdGlvbiwgbXVzdCBiZSBcImVycm9yXCIsIFwiaWdub3JlXCIgb3IgdW5kZWZpbmVkIGJ1dCBwYXNzZWQgJHtvcHRpb25zLnByb3RvQWN0aW9ufWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgYXQsIC8vIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBjaGFyYWN0ZXJcbiAgICBjaCwgLy8gVGhlIGN1cnJlbnQgY2hhcmFjdGVyXG4gICAgZXNjYXBlZSA9IHtcbiAgICAgICdcIic6ICdcIicsXG4gICAgICAnXFxcXCc6ICdcXFxcJyxcbiAgICAgICcvJzogJy8nLFxuICAgICAgYjogJ1xcYicsXG4gICAgICBmOiAnXFxmJyxcbiAgICAgIG46ICdcXG4nLFxuICAgICAgcjogJ1xccicsXG4gICAgICB0OiAnXFx0JyxcbiAgICB9LFxuICAgIHRleHQsXG4gICAgZXJyb3IgPSBmdW5jdGlvbiAobSkge1xuICAgICAgLy8gQ2FsbCBlcnJvciB3aGVuIHNvbWV0aGluZyBpcyB3cm9uZy5cblxuICAgICAgdGhyb3cge1xuICAgICAgICBuYW1lOiAnU3ludGF4RXJyb3InLFxuICAgICAgICBtZXNzYWdlOiBtLFxuICAgICAgICBhdDogYXQsXG4gICAgICAgIHRleHQ6IHRleHQsXG4gICAgICB9O1xuICAgIH0sXG4gICAgbmV4dCA9IGZ1bmN0aW9uIChjKSB7XG4gICAgICAvLyBJZiBhIGMgcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCB2ZXJpZnkgdGhhdCBpdCBtYXRjaGVzIHRoZSBjdXJyZW50IGNoYXJhY3Rlci5cblxuICAgICAgaWYgKGMgJiYgYyAhPT0gY2gpIHtcbiAgICAgICAgZXJyb3IoXCJFeHBlY3RlZCAnXCIgKyBjICsgXCInIGluc3RlYWQgb2YgJ1wiICsgY2ggKyBcIidcIik7XG4gICAgICB9XG5cbiAgICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIuIFdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgY2hhcmFjdGVycyxcbiAgICAgIC8vIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nLlxuXG4gICAgICBjaCA9IHRleHQuY2hhckF0KGF0KTtcbiAgICAgIGF0ICs9IDE7XG4gICAgICByZXR1cm4gY2g7XG4gICAgfSxcbiAgICBudW1iZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBQYXJzZSBhIG51bWJlciB2YWx1ZS5cblxuICAgICAgdmFyIG51bWJlcixcbiAgICAgICAgc3RyaW5nID0gJyc7XG5cbiAgICAgIGlmIChjaCA9PT0gJy0nKSB7XG4gICAgICAgIHN0cmluZyA9ICctJztcbiAgICAgICAgbmV4dCgnLScpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHtcbiAgICAgICAgc3RyaW5nICs9IGNoO1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9XG4gICAgICBpZiAoY2ggPT09ICcuJykge1xuICAgICAgICBzdHJpbmcgKz0gJy4nO1xuICAgICAgICB3aGlsZSAobmV4dCgpICYmIGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHtcbiAgICAgICAgICBzdHJpbmcgKz0gY2g7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaCA9PT0gJ2UnIHx8IGNoID09PSAnRScpIHtcbiAgICAgICAgc3RyaW5nICs9IGNoO1xuICAgICAgICBuZXh0KCk7XG4gICAgICAgIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnKycpIHtcbiAgICAgICAgICBzdHJpbmcgKz0gY2g7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7XG4gICAgICAgICAgc3RyaW5nICs9IGNoO1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbnVtYmVyID0gK3N0cmluZztcbiAgICAgIGlmICghaXNGaW5pdGUobnVtYmVyKSkge1xuICAgICAgICBlcnJvcignQmFkIG51bWJlcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKEJpZ051bWJlciA9PSBudWxsKSBCaWdOdW1iZXIgPSByZXF1aXJlKCdiaWdudW1iZXIuanMnKTtcbiAgICAgICAgLy9pZiAobnVtYmVyID4gOTAwNzE5OTI1NDc0MDk5MiB8fCBudW1iZXIgPCAtOTAwNzE5OTI1NDc0MDk5MilcbiAgICAgICAgLy8gQmlnbnVtYmVyIGhhcyBzdHJpY3RlciBjaGVjazogZXZlcnl0aGluZyB3aXRoIGxlbmd0aCA+IDE1IGRpZ2l0cyBkaXNhbGxvd2VkXG4gICAgICAgIGlmIChzdHJpbmcubGVuZ3RoID4gMTUpXG4gICAgICAgICAgcmV0dXJuIF9vcHRpb25zLnN0b3JlQXNTdHJpbmdcbiAgICAgICAgICAgID8gc3RyaW5nXG4gICAgICAgICAgICA6IF9vcHRpb25zLnVzZU5hdGl2ZUJpZ0ludFxuICAgICAgICAgICAgPyBCaWdJbnQoc3RyaW5nKVxuICAgICAgICAgICAgOiBuZXcgQmlnTnVtYmVyKHN0cmluZyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXR1cm4gIV9vcHRpb25zLmFsd2F5c1BhcnNlQXNCaWdcbiAgICAgICAgICAgID8gbnVtYmVyXG4gICAgICAgICAgICA6IF9vcHRpb25zLnVzZU5hdGl2ZUJpZ0ludFxuICAgICAgICAgICAgPyBCaWdJbnQobnVtYmVyKVxuICAgICAgICAgICAgOiBuZXcgQmlnTnVtYmVyKG51bWJlcik7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBQYXJzZSBhIHN0cmluZyB2YWx1ZS5cblxuICAgICAgdmFyIGhleCxcbiAgICAgICAgaSxcbiAgICAgICAgc3RyaW5nID0gJycsXG4gICAgICAgIHVmZmZmO1xuXG4gICAgICAvLyBXaGVuIHBhcnNpbmcgZm9yIHN0cmluZyB2YWx1ZXMsIHdlIG11c3QgbG9vayBmb3IgXCIgYW5kIFxcIGNoYXJhY3RlcnMuXG5cbiAgICAgIGlmIChjaCA9PT0gJ1wiJykge1xuICAgICAgICB2YXIgc3RhcnRBdCA9IGF0O1xuICAgICAgICB3aGlsZSAobmV4dCgpKSB7XG4gICAgICAgICAgaWYgKGNoID09PSAnXCInKSB7XG4gICAgICAgICAgICBpZiAoYXQgLSAxID4gc3RhcnRBdCkgc3RyaW5nICs9IHRleHQuc3Vic3RyaW5nKHN0YXJ0QXQsIGF0IC0gMSk7XG4gICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgaWYgKGF0IC0gMSA+IHN0YXJ0QXQpIHN0cmluZyArPSB0ZXh0LnN1YnN0cmluZyhzdGFydEF0LCBhdCAtIDEpO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgaWYgKGNoID09PSAndScpIHtcbiAgICAgICAgICAgICAgdWZmZmYgPSAwO1xuICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgaGV4ID0gcGFyc2VJbnQobmV4dCgpLCAxNik7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZShoZXgpKSB7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdWZmZmYgPSB1ZmZmZiAqIDE2ICsgaGV4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHVmZmZmKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVzY2FwZWVbY2hdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gZXNjYXBlZVtjaF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXJ0QXQgPSBhdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVycm9yKCdCYWQgc3RyaW5nJyk7XG4gICAgfSxcbiAgICB3aGl0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFNraXAgd2hpdGVzcGFjZS5cblxuICAgICAgd2hpbGUgKGNoICYmIGNoIDw9ICcgJykge1xuICAgICAgICBuZXh0KCk7XG4gICAgICB9XG4gICAgfSxcbiAgICB3b3JkID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gdHJ1ZSwgZmFsc2UsIG9yIG51bGwuXG5cbiAgICAgIHN3aXRjaCAoY2gpIHtcbiAgICAgICAgY2FzZSAndCc6XG4gICAgICAgICAgbmV4dCgndCcpO1xuICAgICAgICAgIG5leHQoJ3InKTtcbiAgICAgICAgICBuZXh0KCd1Jyk7XG4gICAgICAgICAgbmV4dCgnZScpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjYXNlICdmJzpcbiAgICAgICAgICBuZXh0KCdmJyk7XG4gICAgICAgICAgbmV4dCgnYScpO1xuICAgICAgICAgIG5leHQoJ2wnKTtcbiAgICAgICAgICBuZXh0KCdzJyk7XG4gICAgICAgICAgbmV4dCgnZScpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgbmV4dCgnbicpO1xuICAgICAgICAgIG5leHQoJ3UnKTtcbiAgICAgICAgICBuZXh0KCdsJyk7XG4gICAgICAgICAgbmV4dCgnbCcpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZXJyb3IoXCJVbmV4cGVjdGVkICdcIiArIGNoICsgXCInXCIpO1xuICAgIH0sXG4gICAgdmFsdWUsIC8vIFBsYWNlIGhvbGRlciBmb3IgdGhlIHZhbHVlIGZ1bmN0aW9uLlxuICAgIGFycmF5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUGFyc2UgYW4gYXJyYXkgdmFsdWUuXG5cbiAgICAgIHZhciBhcnJheSA9IFtdO1xuXG4gICAgICBpZiAoY2ggPT09ICdbJykge1xuICAgICAgICBuZXh0KCdbJyk7XG4gICAgICAgIHdoaXRlKCk7XG4gICAgICAgIGlmIChjaCA9PT0gJ10nKSB7XG4gICAgICAgICAgbmV4dCgnXScpO1xuICAgICAgICAgIHJldHVybiBhcnJheTsgLy8gZW1wdHkgYXJyYXlcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2gpIHtcbiAgICAgICAgICBhcnJheS5wdXNoKHZhbHVlKCkpO1xuICAgICAgICAgIHdoaXRlKCk7XG4gICAgICAgICAgaWYgKGNoID09PSAnXScpIHtcbiAgICAgICAgICAgIG5leHQoJ10nKTtcbiAgICAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dCgnLCcpO1xuICAgICAgICAgIHdoaXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVycm9yKCdCYWQgYXJyYXknKTtcbiAgICB9LFxuICAgIG9iamVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFBhcnNlIGFuIG9iamVjdCB2YWx1ZS5cblxuICAgICAgdmFyIGtleSxcbiAgICAgICAgb2JqZWN0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgICAgaWYgKGNoID09PSAneycpIHtcbiAgICAgICAgbmV4dCgneycpO1xuICAgICAgICB3aGl0ZSgpO1xuICAgICAgICBpZiAoY2ggPT09ICd9Jykge1xuICAgICAgICAgIG5leHQoJ30nKTtcbiAgICAgICAgICByZXR1cm4gb2JqZWN0OyAvLyBlbXB0eSBvYmplY3RcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2gpIHtcbiAgICAgICAgICBrZXkgPSBzdHJpbmcoKTtcbiAgICAgICAgICB3aGl0ZSgpO1xuICAgICAgICAgIG5leHQoJzonKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBfb3B0aW9ucy5zdHJpY3QgPT09IHRydWUgJiZcbiAgICAgICAgICAgIE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZXJyb3IoJ0R1cGxpY2F0ZSBrZXkgXCInICsga2V5ICsgJ1wiJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN1c3BlY3RQcm90b1J4LnRlc3Qoa2V5KSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKF9vcHRpb25zLnByb3RvQWN0aW9uID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgIGVycm9yKCdPYmplY3QgY29udGFpbnMgZm9yYmlkZGVuIHByb3RvdHlwZSBwcm9wZXJ0eScpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChfb3B0aW9ucy5wcm90b0FjdGlvbiA9PT0gJ2lnbm9yZScpIHtcbiAgICAgICAgICAgICAgdmFsdWUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9iamVjdFtrZXldID0gdmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHN1c3BlY3RDb25zdHJ1Y3RvclJ4LnRlc3Qoa2V5KSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKF9vcHRpb25zLmNvbnN0cnVjdG9yQWN0aW9uID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgIGVycm9yKCdPYmplY3QgY29udGFpbnMgZm9yYmlkZGVuIGNvbnN0cnVjdG9yIHByb3BlcnR5Jyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9vcHRpb25zLmNvbnN0cnVjdG9yQWN0aW9uID09PSAnaWdub3JlJykge1xuICAgICAgICAgICAgICB2YWx1ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgd2hpdGUoKTtcbiAgICAgICAgICBpZiAoY2ggPT09ICd9Jykge1xuICAgICAgICAgICAgbmV4dCgnfScpO1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dCgnLCcpO1xuICAgICAgICAgIHdoaXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVycm9yKCdCYWQgb2JqZWN0Jyk7XG4gICAgfTtcblxuICB2YWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBQYXJzZSBhIEpTT04gdmFsdWUuIEl0IGNvdWxkIGJlIGFuIG9iamVjdCwgYW4gYXJyYXksIGEgc3RyaW5nLCBhIG51bWJlcixcbiAgICAvLyBvciBhIHdvcmQuXG5cbiAgICB3aGl0ZSgpO1xuICAgIHN3aXRjaCAoY2gpIHtcbiAgICAgIGNhc2UgJ3snOlxuICAgICAgICByZXR1cm4gb2JqZWN0KCk7XG4gICAgICBjYXNlICdbJzpcbiAgICAgICAgcmV0dXJuIGFycmF5KCk7XG4gICAgICBjYXNlICdcIic6XG4gICAgICAgIHJldHVybiBzdHJpbmcoKTtcbiAgICAgIGNhc2UgJy0nOlxuICAgICAgICByZXR1cm4gbnVtYmVyKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gY2ggPj0gJzAnICYmIGNoIDw9ICc5JyA/IG51bWJlcigpIDogd29yZCgpO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIGpzb25fcGFyc2UgZnVuY3Rpb24uIEl0IHdpbGwgaGF2ZSBhY2Nlc3MgdG8gYWxsIG9mIHRoZSBhYm92ZVxuICAvLyBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcy5cblxuICByZXR1cm4gZnVuY3Rpb24gKHNvdXJjZSwgcmV2aXZlcikge1xuICAgIHZhciByZXN1bHQ7XG5cbiAgICB0ZXh0ID0gc291cmNlICsgJyc7XG4gICAgYXQgPSAwO1xuICAgIGNoID0gJyAnO1xuICAgIHJlc3VsdCA9IHZhbHVlKCk7XG4gICAgd2hpdGUoKTtcbiAgICBpZiAoY2gpIHtcbiAgICAgIGVycm9yKCdTeW50YXggZXJyb3InKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhIHJldml2ZXIgZnVuY3Rpb24sIHdlIHJlY3Vyc2l2ZWx5IHdhbGsgdGhlIG5ldyBzdHJ1Y3R1cmUsXG4gICAgLy8gcGFzc2luZyBlYWNoIG5hbWUvdmFsdWUgcGFpciB0byB0aGUgcmV2aXZlciBmdW5jdGlvbiBmb3IgcG9zc2libGVcbiAgICAvLyB0cmFuc2Zvcm1hdGlvbiwgc3RhcnRpbmcgd2l0aCBhIHRlbXBvcmFyeSByb290IG9iamVjdCB0aGF0IGhvbGRzIHRoZSByZXN1bHRcbiAgICAvLyBpbiBhbiBlbXB0eSBrZXkuIElmIHRoZXJlIGlzIG5vdCBhIHJldml2ZXIgZnVuY3Rpb24sIHdlIHNpbXBseSByZXR1cm4gdGhlXG4gICAgLy8gcmVzdWx0LlxuXG4gICAgcmV0dXJuIHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nXG4gICAgICA/IChmdW5jdGlvbiB3YWxrKGhvbGRlciwga2V5KSB7XG4gICAgICAgICAgdmFyIGssXG4gICAgICAgICAgICB2LFxuICAgICAgICAgICAgdmFsdWUgPSBob2xkZXJba2V5XTtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgdiA9IHdhbGsodmFsdWUsIGspO1xuICAgICAgICAgICAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVba10gPSB2O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtrXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXZpdmVyLmNhbGwoaG9sZGVyLCBrZXksIHZhbHVlKTtcbiAgICAgICAgfSkoeyAnJzogcmVzdWx0IH0sICcnKVxuICAgICAgOiByZXN1bHQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGpzb25fcGFyc2U7XG4iLCJ2YXIgQmlnTnVtYmVyID0gcmVxdWlyZSgnYmlnbnVtYmVyLmpzJyk7XG5cbi8qXG4gICAganNvbjIuanNcbiAgICAyMDEzLTA1LTI2XG5cbiAgICBQdWJsaWMgRG9tYWluLlxuXG4gICAgTk8gV0FSUkFOVFkgRVhQUkVTU0VEIE9SIElNUExJRUQuIFVTRSBBVCBZT1VSIE9XTiBSSVNLLlxuXG4gICAgU2VlIGh0dHA6Ly93d3cuSlNPTi5vcmcvanMuaHRtbFxuXG5cbiAgICBUaGlzIGNvZGUgc2hvdWxkIGJlIG1pbmlmaWVkIGJlZm9yZSBkZXBsb3ltZW50LlxuICAgIFNlZSBodHRwOi8vamF2YXNjcmlwdC5jcm9ja2ZvcmQuY29tL2pzbWluLmh0bWxcblxuICAgIFVTRSBZT1VSIE9XTiBDT1BZLiBJVCBJUyBFWFRSRU1FTFkgVU5XSVNFIFRPIExPQUQgQ09ERSBGUk9NIFNFUlZFUlMgWU9VIERPXG4gICAgTk9UIENPTlRST0wuXG5cblxuICAgIFRoaXMgZmlsZSBjcmVhdGVzIGEgZ2xvYmFsIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdHdvIG1ldGhvZHM6IHN0cmluZ2lmeVxuICAgIGFuZCBwYXJzZS5cblxuICAgICAgICBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlKVxuICAgICAgICAgICAgdmFsdWUgICAgICAgYW55IEphdmFTY3JpcHQgdmFsdWUsIHVzdWFsbHkgYW4gb2JqZWN0IG9yIGFycmF5LlxuXG4gICAgICAgICAgICByZXBsYWNlciAgICBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBkZXRlcm1pbmVzIGhvdyBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyBhcmUgc3RyaW5naWZpZWQgZm9yIG9iamVjdHMuIEl0IGNhbiBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuXG4gICAgICAgICAgICBzcGFjZSAgICAgICBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBzcGVjaWZpZXMgdGhlIGluZGVudGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvZiBuZXN0ZWQgc3RydWN0dXJlcy4gSWYgaXQgaXMgb21pdHRlZCwgdGhlIHRleHQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgYmUgcGFja2VkIHdpdGhvdXQgZXh0cmEgd2hpdGVzcGFjZS4gSWYgaXQgaXMgYSBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdCB3aWxsIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IGF0IGVhY2hcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsLiBJZiBpdCBpcyBhIHN0cmluZyAoc3VjaCBhcyAnXFx0JyBvciAnJm5ic3A7JyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpdCBjb250YWlucyB0aGUgY2hhcmFjdGVycyB1c2VkIHRvIGluZGVudCBhdCBlYWNoIGxldmVsLlxuXG4gICAgICAgICAgICBUaGlzIG1ldGhvZCBwcm9kdWNlcyBhIEpTT04gdGV4dCBmcm9tIGEgSmF2YVNjcmlwdCB2YWx1ZS5cblxuICAgICAgICAgICAgV2hlbiBhbiBvYmplY3QgdmFsdWUgaXMgZm91bmQsIGlmIHRoZSBvYmplY3QgY29udGFpbnMgYSB0b0pTT05cbiAgICAgICAgICAgIG1ldGhvZCwgaXRzIHRvSlNPTiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYW5kIHRoZSByZXN1bHQgd2lsbCBiZVxuICAgICAgICAgICAgc3RyaW5naWZpZWQuIEEgdG9KU09OIG1ldGhvZCBkb2VzIG5vdCBzZXJpYWxpemU6IGl0IHJldHVybnMgdGhlXG4gICAgICAgICAgICB2YWx1ZSByZXByZXNlbnRlZCBieSB0aGUgbmFtZS92YWx1ZSBwYWlyIHRoYXQgc2hvdWxkIGJlIHNlcmlhbGl6ZWQsXG4gICAgICAgICAgICBvciB1bmRlZmluZWQgaWYgbm90aGluZyBzaG91bGQgYmUgc2VyaWFsaXplZC4gVGhlIHRvSlNPTiBtZXRob2RcbiAgICAgICAgICAgIHdpbGwgYmUgcGFzc2VkIHRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSB2YWx1ZSwgYW5kIHRoaXMgd2lsbCBiZVxuICAgICAgICAgICAgYm91bmQgdG8gdGhlIHZhbHVlXG5cbiAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGlzIHdvdWxkIHNlcmlhbGl6ZSBEYXRlcyBhcyBJU08gc3RyaW5ncy5cblxuICAgICAgICAgICAgICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gZihuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3JtYXQgaW50ZWdlcnMgdG8gaGF2ZSBhdCBsZWFzdCB0d28gZGlnaXRzLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4gOiBuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VVRDRnVsbFllYXIoKSAgICsgJy0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBmKHRoaXMuZ2V0VVRDTW9udGgoKSArIDEpICsgJy0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBmKHRoaXMuZ2V0VVRDRGF0ZSgpKSAgICAgICsgJ1QnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBmKHRoaXMuZ2V0VVRDSG91cnMoKSkgICAgICsgJzonICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBmKHRoaXMuZ2V0VVRDTWludXRlcygpKSAgICsgJzonICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBmKHRoaXMuZ2V0VVRDU2Vjb25kcygpKSAgICsgJ1onO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbCByZXBsYWNlciBtZXRob2QuIEl0IHdpbGwgYmUgcGFzc2VkIHRoZVxuICAgICAgICAgICAga2V5IGFuZCB2YWx1ZSBvZiBlYWNoIG1lbWJlciwgd2l0aCB0aGlzIGJvdW5kIHRvIHRoZSBjb250YWluaW5nXG4gICAgICAgICAgICBvYmplY3QuIFRoZSB2YWx1ZSB0aGF0IGlzIHJldHVybmVkIGZyb20geW91ciBtZXRob2Qgd2lsbCBiZVxuICAgICAgICAgICAgc2VyaWFsaXplZC4gSWYgeW91ciBtZXRob2QgcmV0dXJucyB1bmRlZmluZWQsIHRoZW4gdGhlIG1lbWJlciB3aWxsXG4gICAgICAgICAgICBiZSBleGNsdWRlZCBmcm9tIHRoZSBzZXJpYWxpemF0aW9uLlxuXG4gICAgICAgICAgICBJZiB0aGUgcmVwbGFjZXIgcGFyYW1ldGVyIGlzIGFuIGFycmF5IG9mIHN0cmluZ3MsIHRoZW4gaXQgd2lsbCBiZVxuICAgICAgICAgICAgdXNlZCB0byBzZWxlY3QgdGhlIG1lbWJlcnMgdG8gYmUgc2VyaWFsaXplZC4gSXQgZmlsdGVycyB0aGUgcmVzdWx0c1xuICAgICAgICAgICAgc3VjaCB0aGF0IG9ubHkgbWVtYmVycyB3aXRoIGtleXMgbGlzdGVkIGluIHRoZSByZXBsYWNlciBhcnJheSBhcmVcbiAgICAgICAgICAgIHN0cmluZ2lmaWVkLlxuXG4gICAgICAgICAgICBWYWx1ZXMgdGhhdCBkbyBub3QgaGF2ZSBKU09OIHJlcHJlc2VudGF0aW9ucywgc3VjaCBhcyB1bmRlZmluZWQgb3JcbiAgICAgICAgICAgIGZ1bmN0aW9ucywgd2lsbCBub3QgYmUgc2VyaWFsaXplZC4gU3VjaCB2YWx1ZXMgaW4gb2JqZWN0cyB3aWxsIGJlXG4gICAgICAgICAgICBkcm9wcGVkOyBpbiBhcnJheXMgdGhleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbnVsbC4gWW91IGNhbiB1c2VcbiAgICAgICAgICAgIGEgcmVwbGFjZXIgZnVuY3Rpb24gdG8gcmVwbGFjZSB0aG9zZSB3aXRoIEpTT04gdmFsdWVzLlxuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodW5kZWZpbmVkKSByZXR1cm5zIHVuZGVmaW5lZC5cblxuICAgICAgICAgICAgVGhlIG9wdGlvbmFsIHNwYWNlIHBhcmFtZXRlciBwcm9kdWNlcyBhIHN0cmluZ2lmaWNhdGlvbiBvZiB0aGVcbiAgICAgICAgICAgIHZhbHVlIHRoYXQgaXMgZmlsbGVkIHdpdGggbGluZSBicmVha3MgYW5kIGluZGVudGF0aW9uIHRvIG1ha2UgaXRcbiAgICAgICAgICAgIGVhc2llciB0byByZWFkLlxuXG4gICAgICAgICAgICBJZiB0aGUgc3BhY2UgcGFyYW1ldGVyIGlzIGEgbm9uLWVtcHR5IHN0cmluZywgdGhlbiB0aGF0IHN0cmluZyB3aWxsXG4gICAgICAgICAgICBiZSB1c2VkIGZvciBpbmRlbnRhdGlvbi4gSWYgdGhlIHNwYWNlIHBhcmFtZXRlciBpcyBhIG51bWJlciwgdGhlblxuICAgICAgICAgICAgdGhlIGluZGVudGF0aW9uIHdpbGwgYmUgdGhhdCBtYW55IHNwYWNlcy5cblxuICAgICAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICAgICAgdGV4dCA9IEpTT04uc3RyaW5naWZ5KFsnZScsIHtwbHVyaWJ1czogJ3VudW0nfV0pO1xuICAgICAgICAgICAgLy8gdGV4dCBpcyAnW1wiZVwiLHtcInBsdXJpYnVzXCI6XCJ1bnVtXCJ9XSdcblxuXG4gICAgICAgICAgICB0ZXh0ID0gSlNPTi5zdHJpbmdpZnkoWydlJywge3BsdXJpYnVzOiAndW51bSd9XSwgbnVsbCwgJ1xcdCcpO1xuICAgICAgICAgICAgLy8gdGV4dCBpcyAnW1xcblxcdFwiZVwiLFxcblxcdHtcXG5cXHRcXHRcInBsdXJpYnVzXCI6IFwidW51bVwiXFxuXFx0fVxcbl0nXG5cbiAgICAgICAgICAgIHRleHQgPSBKU09OLnN0cmluZ2lmeShbbmV3IERhdGUoKV0sIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNba2V5XSBpbnN0YW5jZW9mIERhdGUgP1xuICAgICAgICAgICAgICAgICAgICAnRGF0ZSgnICsgdGhpc1trZXldICsgJyknIDogdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHRleHQgaXMgJ1tcIkRhdGUoLS0tY3VycmVudCB0aW1lLS0tKVwiXSdcblxuXG4gICAgICAgIEpTT04ucGFyc2UodGV4dCwgcmV2aXZlcilcbiAgICAgICAgICAgIFRoaXMgbWV0aG9kIHBhcnNlcyBhIEpTT04gdGV4dCB0byBwcm9kdWNlIGFuIG9iamVjdCBvciBhcnJheS5cbiAgICAgICAgICAgIEl0IGNhbiB0aHJvdyBhIFN5bnRheEVycm9yIGV4Y2VwdGlvbi5cblxuICAgICAgICAgICAgVGhlIG9wdGlvbmFsIHJldml2ZXIgcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhhdCBjYW4gZmlsdGVyIGFuZFxuICAgICAgICAgICAgdHJhbnNmb3JtIHRoZSByZXN1bHRzLiBJdCByZWNlaXZlcyBlYWNoIG9mIHRoZSBrZXlzIGFuZCB2YWx1ZXMsXG4gICAgICAgICAgICBhbmQgaXRzIHJldHVybiB2YWx1ZSBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIHZhbHVlLlxuICAgICAgICAgICAgSWYgaXQgcmV0dXJucyB3aGF0IGl0IHJlY2VpdmVkLCB0aGVuIHRoZSBzdHJ1Y3R1cmUgaXMgbm90IG1vZGlmaWVkLlxuICAgICAgICAgICAgSWYgaXQgcmV0dXJucyB1bmRlZmluZWQgdGhlbiB0aGUgbWVtYmVyIGlzIGRlbGV0ZWQuXG5cbiAgICAgICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICAgICAgIC8vIFBhcnNlIHRoZSB0ZXh0LiBWYWx1ZXMgdGhhdCBsb29rIGxpa2UgSVNPIGRhdGUgc3RyaW5ncyB3aWxsXG4gICAgICAgICAgICAvLyBiZSBjb252ZXJ0ZWQgdG8gRGF0ZSBvYmplY3RzLlxuXG4gICAgICAgICAgICBteURhdGEgPSBKU09OLnBhcnNlKHRleHQsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGE7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgYSA9XG4vXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKT8pWiQvLmV4ZWModmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKCthWzFdLCArYVsyXSAtIDEsICthWzNdLCArYVs0XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArYVs1XSwgK2FbNl0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbXlEYXRhID0gSlNPTi5wYXJzZSgnW1wiRGF0ZSgwOS8wOS8yMDAxKVwiXScsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGQ7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnNsaWNlKDAsIDUpID09PSAnRGF0ZSgnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zbGljZSgtMSkgPT09ICcpJykge1xuICAgICAgICAgICAgICAgICAgICBkID0gbmV3IERhdGUodmFsdWUuc2xpY2UoNSwgLTEpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuXG5cbiAgICBUaGlzIGlzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLiBZb3UgYXJlIGZyZWUgdG8gY29weSwgbW9kaWZ5LCBvclxuICAgIHJlZGlzdHJpYnV0ZS5cbiovXG5cbi8qanNsaW50IGV2aWw6IHRydWUsIHJlZ2V4cDogdHJ1ZSAqL1xuXG4vKm1lbWJlcnMgXCJcIiwgXCJcXGJcIiwgXCJcXHRcIiwgXCJcXG5cIiwgXCJcXGZcIiwgXCJcXHJcIiwgXCJcXFwiXCIsIEpTT04sIFwiXFxcXFwiLCBhcHBseSxcbiAgICBjYWxsLCBjaGFyQ29kZUF0LCBnZXRVVENEYXRlLCBnZXRVVENGdWxsWWVhciwgZ2V0VVRDSG91cnMsXG4gICAgZ2V0VVRDTWludXRlcywgZ2V0VVRDTW9udGgsIGdldFVUQ1NlY29uZHMsIGhhc093blByb3BlcnR5LCBqb2luLFxuICAgIGxhc3RJbmRleCwgbGVuZ3RoLCBwYXJzZSwgcHJvdG90eXBlLCBwdXNoLCByZXBsYWNlLCBzbGljZSwgc3RyaW5naWZ5LFxuICAgIHRlc3QsIHRvSlNPTiwgdG9TdHJpbmcsIHZhbHVlT2ZcbiovXG5cblxuLy8gQ3JlYXRlIGEgSlNPTiBvYmplY3Qgb25seSBpZiBvbmUgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4gV2UgY3JlYXRlIHRoZVxuLy8gbWV0aG9kcyBpbiBhIGNsb3N1cmUgdG8gYXZvaWQgY3JlYXRpbmcgZ2xvYmFsIHZhcmlhYmxlcy5cblxudmFyIEpTT04gPSBtb2R1bGUuZXhwb3J0cztcblxuKGZ1bmN0aW9uICgpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICBmdW5jdGlvbiBmKG4pIHtcbiAgICAgICAgLy8gRm9ybWF0IGludGVnZXJzIHRvIGhhdmUgYXQgbGVhc3QgdHdvIGRpZ2l0cy5cbiAgICAgICAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4gOiBuO1xuICAgIH1cblxuICAgIHZhciBjeCA9IC9bXFx1MDAwMFxcdTAwYWRcXHUwNjAwLVxcdTA2MDRcXHUwNzBmXFx1MTdiNFxcdTE3YjVcXHUyMDBjLVxcdTIwMGZcXHUyMDI4LVxcdTIwMmZcXHUyMDYwLVxcdTIwNmZcXHVmZWZmXFx1ZmZmMC1cXHVmZmZmXS9nLFxuICAgICAgICBlc2NhcGFibGUgPSAvW1xcXFxcXFwiXFx4MDAtXFx4MWZcXHg3Zi1cXHg5ZlxcdTAwYWRcXHUwNjAwLVxcdTA2MDRcXHUwNzBmXFx1MTdiNFxcdTE3YjVcXHUyMDBjLVxcdTIwMGZcXHUyMDI4LVxcdTIwMmZcXHUyMDYwLVxcdTIwNmZcXHVmZWZmXFx1ZmZmMC1cXHVmZmZmXS9nLFxuICAgICAgICBnYXAsXG4gICAgICAgIGluZGVudCxcbiAgICAgICAgbWV0YSA9IHsgICAgLy8gdGFibGUgb2YgY2hhcmFjdGVyIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgICAgICdcXGInOiAnXFxcXGInLFxuICAgICAgICAgICAgJ1xcdCc6ICdcXFxcdCcsXG4gICAgICAgICAgICAnXFxuJzogJ1xcXFxuJyxcbiAgICAgICAgICAgICdcXGYnOiAnXFxcXGYnLFxuICAgICAgICAgICAgJ1xccic6ICdcXFxccicsXG4gICAgICAgICAgICAnXCInIDogJ1xcXFxcIicsXG4gICAgICAgICAgICAnXFxcXCc6ICdcXFxcXFxcXCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVwO1xuXG5cbiAgICBmdW5jdGlvbiBxdW90ZShzdHJpbmcpIHtcblxuLy8gSWYgdGhlIHN0cmluZyBjb250YWlucyBubyBjb250cm9sIGNoYXJhY3RlcnMsIG5vIHF1b3RlIGNoYXJhY3RlcnMsIGFuZCBub1xuLy8gYmFja3NsYXNoIGNoYXJhY3RlcnMsIHRoZW4gd2UgY2FuIHNhZmVseSBzbGFwIHNvbWUgcXVvdGVzIGFyb3VuZCBpdC5cbi8vIE90aGVyd2lzZSB3ZSBtdXN0IGFsc28gcmVwbGFjZSB0aGUgb2ZmZW5kaW5nIGNoYXJhY3RlcnMgd2l0aCBzYWZlIGVzY2FwZVxuLy8gc2VxdWVuY2VzLlxuXG4gICAgICAgIGVzY2FwYWJsZS5sYXN0SW5kZXggPSAwO1xuICAgICAgICByZXR1cm4gZXNjYXBhYmxlLnRlc3Qoc3RyaW5nKSA/ICdcIicgKyBzdHJpbmcucmVwbGFjZShlc2NhcGFibGUsIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICB2YXIgYyA9IG1ldGFbYV07XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBjXG4gICAgICAgICAgICAgICAgOiAnXFxcXHUnICsgKCcwMDAwJyArIGEuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KTtcbiAgICAgICAgfSkgKyAnXCInIDogJ1wiJyArIHN0cmluZyArICdcIic7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBzdHIoa2V5LCBob2xkZXIpIHtcblxuLy8gUHJvZHVjZSBhIHN0cmluZyBmcm9tIGhvbGRlcltrZXldLlxuXG4gICAgICAgIHZhciBpLCAgICAgICAgICAvLyBUaGUgbG9vcCBjb3VudGVyLlxuICAgICAgICAgICAgaywgICAgICAgICAgLy8gVGhlIG1lbWJlciBrZXkuXG4gICAgICAgICAgICB2LCAgICAgICAgICAvLyBUaGUgbWVtYmVyIHZhbHVlLlxuICAgICAgICAgICAgbGVuZ3RoLFxuICAgICAgICAgICAgbWluZCA9IGdhcCxcbiAgICAgICAgICAgIHBhcnRpYWwsXG4gICAgICAgICAgICB2YWx1ZSA9IGhvbGRlcltrZXldLFxuICAgICAgICAgICAgaXNCaWdOdW1iZXIgPSB2YWx1ZSAhPSBudWxsICYmICh2YWx1ZSBpbnN0YW5jZW9mIEJpZ051bWJlciB8fCBCaWdOdW1iZXIuaXNCaWdOdW1iZXIodmFsdWUpKTtcblxuLy8gSWYgdGhlIHZhbHVlIGhhcyBhIHRvSlNPTiBtZXRob2QsIGNhbGwgaXQgdG8gb2J0YWluIGEgcmVwbGFjZW1lbnQgdmFsdWUuXG5cbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvSlNPTihrZXkpO1xuICAgICAgICB9XG5cbi8vIElmIHdlIHdlcmUgY2FsbGVkIHdpdGggYSByZXBsYWNlciBmdW5jdGlvbiwgdGhlbiBjYWxsIHRoZSByZXBsYWNlciB0b1xuLy8gb2J0YWluIGEgcmVwbGFjZW1lbnQgdmFsdWUuXG5cbiAgICAgICAgaWYgKHR5cGVvZiByZXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhbHVlID0gcmVwLmNhbGwoaG9sZGVyLCBrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuXG4vLyBXaGF0IGhhcHBlbnMgbmV4dCBkZXBlbmRzIG9uIHRoZSB2YWx1ZSdzIHR5cGUuXG5cbiAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgIGlmIChpc0JpZ051bWJlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1b3RlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICBjYXNlICdudW1iZXInOlxuXG4vLyBKU09OIG51bWJlcnMgbXVzdCBiZSBmaW5pdGUuIEVuY29kZSBub24tZmluaXRlIG51bWJlcnMgYXMgbnVsbC5cblxuICAgICAgICAgICAgcmV0dXJuIGlzRmluaXRlKHZhbHVlKSA/IFN0cmluZyh2YWx1ZSkgOiAnbnVsbCc7XG5cbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICBjYXNlICdiaWdpbnQnOlxuXG4vLyBJZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuIG9yIG51bGwsIGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcuIE5vdGU6XG4vLyB0eXBlb2YgbnVsbCBkb2VzIG5vdCBwcm9kdWNlICdudWxsJy4gVGhlIGNhc2UgaXMgaW5jbHVkZWQgaGVyZSBpblxuLy8gdGhlIHJlbW90ZSBjaGFuY2UgdGhhdCB0aGlzIGdldHMgZml4ZWQgc29tZWRheS5cblxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG5cbi8vIElmIHRoZSB0eXBlIGlzICdvYmplY3QnLCB3ZSBtaWdodCBiZSBkZWFsaW5nIHdpdGggYW4gb2JqZWN0IG9yIGFuIGFycmF5IG9yXG4vLyBudWxsLlxuXG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG5cbi8vIER1ZSB0byBhIHNwZWNpZmljYXRpb24gYmx1bmRlciBpbiBFQ01BU2NyaXB0LCB0eXBlb2YgbnVsbCBpcyAnb2JqZWN0Jyxcbi8vIHNvIHdhdGNoIG91dCBmb3IgdGhhdCBjYXNlLlxuXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICAgICAgICAgIH1cblxuLy8gTWFrZSBhbiBhcnJheSB0byBob2xkIHRoZSBwYXJ0aWFsIHJlc3VsdHMgb2Ygc3RyaW5naWZ5aW5nIHRoaXMgb2JqZWN0IHZhbHVlLlxuXG4gICAgICAgICAgICBnYXAgKz0gaW5kZW50O1xuICAgICAgICAgICAgcGFydGlhbCA9IFtdO1xuXG4vLyBJcyB0aGUgdmFsdWUgYW4gYXJyYXk/XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuXG4vLyBUaGUgdmFsdWUgaXMgYW4gYXJyYXkuIFN0cmluZ2lmeSBldmVyeSBlbGVtZW50LiBVc2UgbnVsbCBhcyBhIHBsYWNlaG9sZGVyXG4vLyBmb3Igbm9uLUpTT04gdmFsdWVzLlxuXG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsW2ldID0gc3RyKGksIHZhbHVlKSB8fCAnbnVsbCc7XG4gICAgICAgICAgICAgICAgfVxuXG4vLyBKb2luIGFsbCBvZiB0aGUgZWxlbWVudHMgdG9nZXRoZXIsIHNlcGFyYXRlZCB3aXRoIGNvbW1hcywgYW5kIHdyYXAgdGhlbSBpblxuLy8gYnJhY2tldHMuXG5cbiAgICAgICAgICAgICAgICB2ID0gcGFydGlhbC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyAnW10nXG4gICAgICAgICAgICAgICAgICAgIDogZ2FwXG4gICAgICAgICAgICAgICAgICAgID8gJ1tcXG4nICsgZ2FwICsgcGFydGlhbC5qb2luKCcsXFxuJyArIGdhcCkgKyAnXFxuJyArIG1pbmQgKyAnXSdcbiAgICAgICAgICAgICAgICAgICAgOiAnWycgKyBwYXJ0aWFsLmpvaW4oJywnKSArICddJztcbiAgICAgICAgICAgICAgICBnYXAgPSBtaW5kO1xuICAgICAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgICAgfVxuXG4vLyBJZiB0aGUgcmVwbGFjZXIgaXMgYW4gYXJyYXksIHVzZSBpdCB0byBzZWxlY3QgdGhlIG1lbWJlcnMgdG8gYmUgc3RyaW5naWZpZWQuXG5cbiAgICAgICAgICAgIGlmIChyZXAgJiYgdHlwZW9mIHJlcCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSByZXAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlcFtpXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByZXBbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB2ID0gc3RyKGssIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicpICsgdik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4vLyBPdGhlcndpc2UsIGl0ZXJhdGUgdGhyb3VnaCBhbGwgb2YgdGhlIGtleXMgaW4gdGhlIG9iamVjdC5cblxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHZhbHVlKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHYgPSBzdHIoaywgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicpICsgdik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuLy8gSm9pbiBhbGwgb2YgdGhlIG1lbWJlciB0ZXh0cyB0b2dldGhlciwgc2VwYXJhdGVkIHdpdGggY29tbWFzLFxuLy8gYW5kIHdyYXAgdGhlbSBpbiBicmFjZXMuXG5cbiAgICAgICAgICAgIHYgPSBwYXJ0aWFsLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgID8gJ3t9J1xuICAgICAgICAgICAgICAgIDogZ2FwXG4gICAgICAgICAgICAgICAgPyAne1xcbicgKyBnYXAgKyBwYXJ0aWFsLmpvaW4oJyxcXG4nICsgZ2FwKSArICdcXG4nICsgbWluZCArICd9J1xuICAgICAgICAgICAgICAgIDogJ3snICsgcGFydGlhbC5qb2luKCcsJykgKyAnfSc7XG4gICAgICAgICAgICBnYXAgPSBtaW5kO1xuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH1cbiAgICB9XG5cbi8vIElmIHRoZSBKU09OIG9iamVjdCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIHN0cmluZ2lmeSBtZXRob2QsIGdpdmUgaXQgb25lLlxuXG4gICAgaWYgKHR5cGVvZiBKU09OLnN0cmluZ2lmeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBKU09OLnN0cmluZ2lmeSA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlKSB7XG5cbi8vIFRoZSBzdHJpbmdpZnkgbWV0aG9kIHRha2VzIGEgdmFsdWUgYW5kIGFuIG9wdGlvbmFsIHJlcGxhY2VyLCBhbmQgYW4gb3B0aW9uYWxcbi8vIHNwYWNlIHBhcmFtZXRlciwgYW5kIHJldHVybnMgYSBKU09OIHRleHQuIFRoZSByZXBsYWNlciBjYW4gYmUgYSBmdW5jdGlvblxuLy8gdGhhdCBjYW4gcmVwbGFjZSB2YWx1ZXMsIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MgdGhhdCB3aWxsIHNlbGVjdCB0aGUga2V5cy5cbi8vIEEgZGVmYXVsdCByZXBsYWNlciBtZXRob2QgY2FuIGJlIHByb3ZpZGVkLiBVc2Ugb2YgdGhlIHNwYWNlIHBhcmFtZXRlciBjYW5cbi8vIHByb2R1Y2UgdGV4dCB0aGF0IGlzIG1vcmUgZWFzaWx5IHJlYWRhYmxlLlxuXG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGdhcCA9ICcnO1xuICAgICAgICAgICAgaW5kZW50ID0gJyc7XG5cbi8vIElmIHRoZSBzcGFjZSBwYXJhbWV0ZXIgaXMgYSBudW1iZXIsIG1ha2UgYW4gaW5kZW50IHN0cmluZyBjb250YWluaW5nIHRoYXRcbi8vIG1hbnkgc3BhY2VzLlxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHNwYWNlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzcGFjZTsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGVudCArPSAnICc7XG4gICAgICAgICAgICAgICAgfVxuXG4vLyBJZiB0aGUgc3BhY2UgcGFyYW1ldGVyIGlzIGEgc3RyaW5nLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGluZGVudCBzdHJpbmcuXG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNwYWNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGluZGVudCA9IHNwYWNlO1xuICAgICAgICAgICAgfVxuXG4vLyBJZiB0aGVyZSBpcyBhIHJlcGxhY2VyLCBpdCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYW4gYXJyYXkuXG4vLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yLlxuXG4gICAgICAgICAgICByZXAgPSByZXBsYWNlcjtcbiAgICAgICAgICAgIGlmIChyZXBsYWNlciAmJiB0eXBlb2YgcmVwbGFjZXIgIT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiByZXBsYWNlciAhPT0gJ29iamVjdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHJlcGxhY2VyLmxlbmd0aCAhPT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdKU09OLnN0cmluZ2lmeScpO1xuICAgICAgICAgICAgfVxuXG4vLyBNYWtlIGEgZmFrZSByb290IG9iamVjdCBjb250YWluaW5nIG91ciB2YWx1ZSB1bmRlciB0aGUga2V5IG9mICcnLlxuLy8gUmV0dXJuIHRoZSByZXN1bHQgb2Ygc3RyaW5naWZ5aW5nIHRoZSB2YWx1ZS5cblxuICAgICAgICAgICAgcmV0dXJuIHN0cignJywgeycnOiB2YWx1ZX0pO1xuICAgICAgICB9O1xuICAgIH1cbn0oKSk7XG4iLCIoZnVuY3Rpb24gKG5hbWUsIGNvbnRleHQsIGRlZmluaXRpb24pIHtcbiAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24oKTtcbiAgZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSBkZWZpbmUoZGVmaW5pdGlvbik7XG4gIGVsc2UgY29udGV4dFtuYW1lXSA9IGRlZmluaXRpb24oKTtcbn0pKCd1cmxqb2luJywgdGhpcywgZnVuY3Rpb24gKCkge1xuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZSAoc3RyQXJyYXkpIHtcbiAgICB2YXIgcmVzdWx0QXJyYXkgPSBbXTtcbiAgICBpZiAoc3RyQXJyYXkubGVuZ3RoID09PSAwKSB7IHJldHVybiAnJzsgfVxuXG4gICAgaWYgKHR5cGVvZiBzdHJBcnJheVswXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1VybCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAnICsgc3RyQXJyYXlbMF0pO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBmaXJzdCBwYXJ0IGlzIGEgcGxhaW4gcHJvdG9jb2wsIHdlIGNvbWJpbmUgaXQgd2l0aCB0aGUgbmV4dCBwYXJ0LlxuICAgIGlmIChzdHJBcnJheVswXS5tYXRjaCgvXlteLzpdKzpcXC8qJC8pICYmIHN0ckFycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciBmaXJzdCA9IHN0ckFycmF5LnNoaWZ0KCk7XG4gICAgICBzdHJBcnJheVswXSA9IGZpcnN0ICsgc3RyQXJyYXlbMF07XG4gICAgfVxuXG4gICAgLy8gVGhlcmUgbXVzdCBiZSB0d28gb3IgdGhyZWUgc2xhc2hlcyBpbiB0aGUgZmlsZSBwcm90b2NvbCwgdHdvIHNsYXNoZXMgaW4gYW55dGhpbmcgZWxzZS5cbiAgICBpZiAoc3RyQXJyYXlbMF0ubWF0Y2goL15maWxlOlxcL1xcL1xcLy8pKSB7XG4gICAgICBzdHJBcnJheVswXSA9IHN0ckFycmF5WzBdLnJlcGxhY2UoL14oW14vOl0rKTpcXC8qLywgJyQxOi8vLycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJBcnJheVswXSA9IHN0ckFycmF5WzBdLnJlcGxhY2UoL14oW14vOl0rKTpcXC8qLywgJyQxOi8vJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHN0ckFycmF5W2ldO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVXJsIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICcgKyBjb21wb25lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY29tcG9uZW50ID09PSAnJykgeyBjb250aW51ZTsgfVxuXG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgLy8gUmVtb3ZpbmcgdGhlIHN0YXJ0aW5nIHNsYXNoZXMgZm9yIGVhY2ggY29tcG9uZW50IGJ1dCB0aGUgZmlyc3QuXG4gICAgICAgIGNvbXBvbmVudCA9IGNvbXBvbmVudC5yZXBsYWNlKC9eW1xcL10rLywgJycpO1xuICAgICAgfVxuICAgICAgaWYgKGkgPCBzdHJBcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICAgIC8vIFJlbW92aW5nIHRoZSBlbmRpbmcgc2xhc2hlcyBmb3IgZWFjaCBjb21wb25lbnQgYnV0IHRoZSBsYXN0LlxuICAgICAgICBjb21wb25lbnQgPSBjb21wb25lbnQucmVwbGFjZSgvW1xcL10rJC8sICcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciB0aGUgbGFzdCBjb21wb25lbnQgd2Ugd2lsbCBjb21iaW5lIG11bHRpcGxlIHNsYXNoZXMgdG8gYSBzaW5nbGUgb25lLlxuICAgICAgICBjb21wb25lbnQgPSBjb21wb25lbnQucmVwbGFjZSgvW1xcL10rJC8sICcvJyk7XG4gICAgICB9XG5cbiAgICAgIHJlc3VsdEFycmF5LnB1c2goY29tcG9uZW50KTtcblxuICAgIH1cblxuICAgIHZhciBzdHIgPSByZXN1bHRBcnJheS5qb2luKCcvJyk7XG4gICAgLy8gRWFjaCBpbnB1dCBjb21wb25lbnQgaXMgbm93IHNlcGFyYXRlZCBieSBhIHNpbmdsZSBzbGFzaCBleGNlcHQgdGhlIHBvc3NpYmxlIGZpcnN0IHBsYWluIHByb3RvY29sIHBhcnQuXG5cbiAgICAvLyByZW1vdmUgdHJhaWxpbmcgc2xhc2ggYmVmb3JlIHBhcmFtZXRlcnMgb3IgaGFzaFxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cXC8oXFw/fCZ8I1teIV0pL2csICckMScpO1xuXG4gICAgLy8gcmVwbGFjZSA/IGluIHBhcmFtZXRlcnMgd2l0aCAmXG4gICAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KCc/Jyk7XG4gICAgc3RyID0gcGFydHMuc2hpZnQoKSArIChwYXJ0cy5sZW5ndGggPiAwID8gJz8nOiAnJykgKyBwYXJ0cy5qb2luKCcmJyk7XG5cbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5wdXQ7XG5cbiAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlucHV0ID0gYXJndW1lbnRzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dCA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9ybWFsaXplKGlucHV0KTtcbiAgfTtcblxufSk7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgzMjEpO1xuIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJ1dGlscyIsInNldHRsZSIsImNvb2tpZXMiLCJidWlsZFVSTCIsImJ1aWxkRnVsbFBhdGgiLCJwYXJzZUhlYWRlcnMiLCJpc1VSTFNhbWVPcmlnaW4iLCJ0cmFuc2l0aW9uYWxEZWZhdWx0cyIsIkF4aW9zRXJyb3IiLCJDYW5jZWxlZEVycm9yIiwicGFyc2VQcm90b2NvbCIsImNvbmZpZyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwib25DYW5jZWxlZCIsInJlcXVlc3REYXRhIiwiZGF0YSIsInJlcXVlc3RIZWFkZXJzIiwiaGVhZGVycyIsInJlc3BvbnNlVHlwZSIsImRvbmUiLCJjYW5jZWxUb2tlbiIsInVuc3Vic2NyaWJlIiwic2lnbmFsIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlzRm9ybURhdGEiLCJpc1N0YW5kYXJkQnJvd3NlckVudiIsInJlcXVlc3QiLCJYTUxIdHRwUmVxdWVzdCIsImF1dGgiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJBdXRob3JpemF0aW9uIiwiYnRvYSIsImZ1bGxQYXRoIiwiYmFzZVVSTCIsInVybCIsIm9ubG9hZGVuZCIsInJlc3BvbnNlSGVhZGVycyIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInJlc3BvbnNlIiwicmVzcG9uc2VUZXh0Iiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInZhbHVlIiwiZXJyIiwib3BlbiIsIm1ldGhvZCIsInRvVXBwZXJDYXNlIiwicGFyYW1zIiwicGFyYW1zU2VyaWFsaXplciIsInRpbWVvdXQiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwicmVzcG9uc2VVUkwiLCJpbmRleE9mIiwic2V0VGltZW91dCIsIm9uYWJvcnQiLCJFQ09OTkFCT1JURUQiLCJvbmVycm9yIiwiRVJSX05FVFdPUksiLCJvbnRpbWVvdXQiLCJ0aW1lb3V0RXJyb3JNZXNzYWdlIiwidHJhbnNpdGlvbmFsIiwiY2xhcmlmeVRpbWVvdXRFcnJvciIsIkVUSU1FRE9VVCIsInhzcmZWYWx1ZSIsIndpdGhDcmVkZW50aWFscyIsInhzcmZDb29raWVOYW1lIiwicmVhZCIsInVuZGVmaW5lZCIsInhzcmZIZWFkZXJOYW1lIiwiZm9yRWFjaCIsInZhbCIsImtleSIsInRvTG93ZXJDYXNlIiwic2V0UmVxdWVzdEhlYWRlciIsImlzVW5kZWZpbmVkIiwib25Eb3dubG9hZFByb2dyZXNzIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9uVXBsb2FkUHJvZ3Jlc3MiLCJ1cGxvYWQiLCJjYW5jZWwiLCJ0eXBlIiwiYWJvcnQiLCJzdWJzY3JpYmUiLCJhYm9ydGVkIiwicHJvdG9jb2wiLCJFUlJfQkFEX1JFUVVFU1QiLCJzZW5kIiwiYmluZCIsIkF4aW9zIiwibWVyZ2VDb25maWciLCJheGlvcyIsImNyZWF0ZUluc3RhbmNlIiwiZGVmYXVsdENvbmZpZyIsImNvbnRleHQiLCJpbnN0YW5jZSIsInByb3RvdHlwZSIsImV4dGVuZCIsImNyZWF0ZSIsImluc3RhbmNlQ29uZmlnIiwiQ2FuY2VsVG9rZW4iLCJpc0NhbmNlbCIsIlZFUlNJT04iLCJ0b0Zvcm1EYXRhIiwiQ2FuY2VsIiwiYWxsIiwicHJvbWlzZXMiLCJzcHJlYWQiLCJpc0F4aW9zRXJyb3IiLCJleGVjdXRvciIsIlR5cGVFcnJvciIsInJlc29sdmVQcm9taXNlIiwidGhpcyIsInByb21pc2UiLCJ0b2tlbiIsInRoZW4iLCJfbGlzdGVuZXJzIiwiaSIsImwiLCJsZW5ndGgiLCJvbmZ1bGZpbGxlZCIsIl9yZXNvbHZlIiwibWVzc2FnZSIsInJlYXNvbiIsInRocm93SWZSZXF1ZXN0ZWQiLCJsaXN0ZW5lciIsInB1c2giLCJpbmRleCIsInNwbGljZSIsInNvdXJjZSIsImMiLCJjYWxsIiwiRVJSX0NBTkNFTEVEIiwibmFtZSIsImluaGVyaXRzIiwiX19DQU5DRUxfXyIsIkludGVyY2VwdG9yTWFuYWdlciIsImRpc3BhdGNoUmVxdWVzdCIsInZhbGlkYXRvciIsInZhbGlkYXRvcnMiLCJkZWZhdWx0cyIsImludGVyY2VwdG9ycyIsImNvbmZpZ09yVXJsIiwiYXNzZXJ0T3B0aW9ucyIsInNpbGVudEpTT05QYXJzaW5nIiwiYm9vbGVhbiIsImZvcmNlZEpTT05QYXJzaW5nIiwicmVxdWVzdEludGVyY2VwdG9yQ2hhaW4iLCJzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMiLCJpbnRlcmNlcHRvciIsInJ1bldoZW4iLCJzeW5jaHJvbm91cyIsInVuc2hpZnQiLCJmdWxmaWxsZWQiLCJyZWplY3RlZCIsInJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbiIsImNoYWluIiwiQXJyYXkiLCJhcHBseSIsImNvbmNhdCIsInNoaWZ0IiwibmV3Q29uZmlnIiwib25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwiZXJyb3IiLCJnZXRVcmkiLCJnZW5lcmF0ZUhUVFBNZXRob2QiLCJpc0Zvcm0iLCJjb2RlIiwiRXJyb3IiLCJ0b0pTT04iLCJkZXNjcmlwdGlvbiIsIm51bWJlciIsImZpbGVOYW1lIiwibGluZU51bWJlciIsImNvbHVtbk51bWJlciIsInN0YWNrIiwiZGVzY3JpcHRvcnMiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJmcm9tIiwiY3VzdG9tUHJvcHMiLCJheGlvc0Vycm9yIiwidG9GbGF0T2JqZWN0Iiwib2JqIiwiYXNzaWduIiwiaGFuZGxlcnMiLCJ1c2UiLCJvcHRpb25zIiwiZWplY3QiLCJpZCIsImZuIiwiaCIsImlzQWJzb2x1dGVVUkwiLCJjb21iaW5lVVJMcyIsInJlcXVlc3RlZFVSTCIsInRyYW5zZm9ybURhdGEiLCJ0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkIiwidHJhbnNmb3JtUmVxdWVzdCIsIm1lcmdlIiwiY29tbW9uIiwiYWRhcHRlciIsInRyYW5zZm9ybVJlc3BvbnNlIiwiY29uZmlnMSIsImNvbmZpZzIiLCJnZXRNZXJnZWRWYWx1ZSIsInRhcmdldCIsImlzUGxhaW5PYmplY3QiLCJpc0FycmF5Iiwic2xpY2UiLCJtZXJnZURlZXBQcm9wZXJ0aWVzIiwicHJvcCIsInZhbHVlRnJvbUNvbmZpZzIiLCJkZWZhdWx0VG9Db25maWcyIiwibWVyZ2VEaXJlY3RLZXlzIiwibWVyZ2VNYXAiLCJrZXlzIiwiY29uZmlnVmFsdWUiLCJ2YWxpZGF0ZVN0YXR1cyIsIkVSUl9CQURfUkVTUE9OU0UiLCJNYXRoIiwiZmxvb3IiLCJmbnMiLCJub3JtYWxpemVIZWFkZXJOYW1lIiwiREVGQVVMVF9DT05URU5UX1RZUEUiLCJzZXRDb250ZW50VHlwZUlmVW5zZXQiLCJwcm9jZXNzIiwidG9TdHJpbmciLCJpc0FycmF5QnVmZmVyIiwiaXNCdWZmZXIiLCJpc1N0cmVhbSIsImlzRmlsZSIsImlzQmxvYiIsImlzQXJyYXlCdWZmZXJWaWV3IiwiYnVmZmVyIiwiaXNVUkxTZWFyY2hQYXJhbXMiLCJpc0ZpbGVMaXN0IiwiaXNPYmplY3RQYXlsb2FkIiwiaXNPYmplY3QiLCJjb250ZW50VHlwZSIsIl9Gb3JtRGF0YSIsImVudiIsIkZvcm1EYXRhIiwicmF3VmFsdWUiLCJwYXJzZXIiLCJlbmNvZGVyIiwiaXNTdHJpbmciLCJKU09OIiwicGFyc2UiLCJ0cmltIiwiZSIsInN0cmluZ2lmeSIsInN0cmluZ2lmeVNhZmVseSIsInN0cmljdEpTT05QYXJzaW5nIiwibWF4Q29udGVudExlbmd0aCIsIm1heEJvZHlMZW5ndGgiLCJ0aGlzQXJnIiwiYXJncyIsImFyZ3VtZW50cyIsImVuY29kZSIsInJlcGxhY2UiLCJzZXJpYWxpemVkUGFyYW1zIiwicGFydHMiLCJ2IiwiaXNEYXRlIiwidG9JU09TdHJpbmciLCJqb2luIiwiaGFzaG1hcmtJbmRleCIsInJlbGF0aXZlVVJMIiwid3JpdGUiLCJleHBpcmVzIiwicGF0aCIsImRvbWFpbiIsInNlY3VyZSIsImNvb2tpZSIsImlzTnVtYmVyIiwiRGF0ZSIsInRvR01UU3RyaW5nIiwiZG9jdW1lbnQiLCJtYXRjaCIsIlJlZ0V4cCIsImRlY29kZVVSSUNvbXBvbmVudCIsInJlbW92ZSIsIm5vdyIsInRlc3QiLCJwYXlsb2FkIiwib3JpZ2luVVJMIiwibXNpZSIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInVybFBhcnNpbmdOb2RlIiwiY3JlYXRlRWxlbWVudCIsInJlc29sdmVVUkwiLCJocmVmIiwic2V0QXR0cmlidXRlIiwiaG9zdCIsInNlYXJjaCIsImhhc2giLCJob3N0bmFtZSIsInBvcnQiLCJwYXRobmFtZSIsImNoYXJBdCIsIndpbmRvdyIsImxvY2F0aW9uIiwicmVxdWVzdFVSTCIsInBhcnNlZCIsIm5vcm1hbGl6ZWROYW1lIiwiaWdub3JlRHVwbGljYXRlT2YiLCJzcGxpdCIsImxpbmUiLCJzdWJzdHIiLCJleGVjIiwiY2FsbGJhY2siLCJhcnIiLCJmb3JtRGF0YSIsImNvbnZlcnRWYWx1ZSIsImlzVHlwZWRBcnJheSIsIkJsb2IiLCJCdWZmZXIiLCJidWlsZCIsInBhcmVudEtleSIsImZ1bGxLZXkiLCJlbmRzV2l0aCIsInRvQXJyYXkiLCJlbCIsImFwcGVuZCIsInBvcCIsInRoaW5nIiwiZGVwcmVjYXRlZFdhcm5pbmdzIiwidmVyc2lvbiIsImZvcm1hdE1lc3NhZ2UiLCJvcHQiLCJkZXNjIiwib3B0cyIsIkVSUl9ERVBSRUNBVEVEIiwiY29uc29sZSIsIndhcm4iLCJzY2hlbWEiLCJhbGxvd1Vua25vd24iLCJFUlJfQkFEX09QVElPTl9WQUxVRSIsInJlc3VsdCIsIkVSUl9CQURfT1BUSU9OIiwiY2FjaGUiLCJraW5kT2YiLCJzdHIiLCJraW5kT2ZUZXN0IiwiZ2V0UHJvdG90eXBlT2YiLCJpc0Z1bmN0aW9uIiwiaGFzT3duUHJvcGVydHkiLCJUeXBlZEFycmF5IiwiVWludDhBcnJheSIsImNvbnN0cnVjdG9yIiwicGF0dGVybiIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwicGlwZSIsInByb2R1Y3QiLCJhc3NpZ25WYWx1ZSIsImEiLCJiIiwic3RyaXBCT00iLCJjb250ZW50IiwiY2hhckNvZGVBdCIsInN1cGVyQ29uc3RydWN0b3IiLCJwcm9wcyIsInNvdXJjZU9iaiIsImRlc3RPYmoiLCJmaWx0ZXIiLCJtZXJnZWQiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwic2VhcmNoU3RyaW5nIiwicG9zaXRpb24iLCJTdHJpbmciLCJsYXN0SW5kZXgiLCJpc1B1cmVPYmplY3QiLCJpbml0IiwiY2xvbmVQYXJhbXMiLCJDbGllbnQiLCJhcGlLZXkiLCJhcGlTZWNyZXQiLCJhcGlUb2tlbiIsInJlc291cmNlIiwicmVxdWVzdF8xIiwiSHR0cE1ldGhvZHNfMSIsIkdldCIsIlBvc3QiLCJQdXQiLCJEZWxldGUiLCJwYWNrYWdlSlNPTiIsInNldENvbmZpZyIsInNldE9wdGlvbnMiLCJ0b2tlbkNvbm5lY3RTdHJhdGVneSIsImJhc2ljQ29ubmVjdFN0cmF0ZWd5IiwiY2xvbmVkUGFyYW1zIiwiX19hc3NpZ24iLCJwcm94eSIsImN1c3RvbUNvbmZpZyIsInNldFZhbHVlSWZOb3ROaWwiLCJvdXRwdXQiLCJmcmVlemUiLCJwYWNrYWdlX2pzb25fMSIsImluZGV4XzEiLCJpbmRleF8yIiwiX19leHRlbmRzIiwiTWFpbGpldCIsIl9fZXhwb3J0U3RhciIsIkh0dHBNZXRob2RzIiwiSlNPTmIiLCJzdG9yZUFzU3RyaW5nIiwiY2xpZW50IiwiY2xpZW50XzEiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsInN1YlBhdGgiLCJidWlsZFN1YlBhdGgiLCJhY3Rpb25QYXRoIiwiUmVxdWVzdCIsImdldFBhY2thZ2VWZXJzaW9uIiwiZ2V0QVBJVG9rZW4iLCJnZXRBUElLZXkiLCJnZXRBUElTZWNyZXQiLCJjbGllbnRDb25maWciLCJnZXRDb25maWciLCJfYSIsIl9iIiwiaXNDb250YWN0TGlzdFdpdGhDU1YiLCJpc0JhdGNoSm9iV2l0aENTViIsImlzU2VuZFJlc291cmNlIiwicmVzb3VyY2VDb250YWluU01TIiwicmVxdWVzdENvbmZpZyIsImdldFJlcXVlc3RCb2R5IiwiZ2V0VXNlckFnZW50IiwiZ2V0Q29udGVudFR5cGUiLCJyZXNwb25zZURhdGEiLCJkYXRhSXNTdHJpbmciLCJpc0pTT05SZXF1ZXN0ZWQiLCJwYXJzZVRvSlNPTmIiLCJpc0Jyb3dzZXIiLCJjcmVkZW50aWFscyIsImdldENyZWRlbnRpYWxzIiwiY2xpZW50T3B0aW9ucyIsImdldE9wdGlvbnMiLCJiYXNlVXJsIiwicGVyZm9ybUFQSUNhbGwiLCJidWlsZEZ1bGxVcmwiLCJzZXRCYXNlVVJMIiwiYm9keSIsIm1ha2VSZXF1ZXN0IiwiX2ciLCJheGlvc18xIiwiZXJyXzEiLCJfZiIsInN0YXR1c18xIiwic3RhdHVzQ29kZSIsImVycm9yTWVzc2FnZSIsIkVycm9yTWVzc2FnZSIsIm9yaWdpbmFsTWVzc2FnZSIsImZ1bGxNZXNzYWdlIiwiTWVzc2FnZXMiLCJfYyIsIkVycm9ycyIsIl9kIiwiX2UiLCJFcnJvckNvZGUiLCJFcnJvcklkZW50aWZpZXIiLCJFcnJvclJlbGF0ZWRUbyIsInRleHQiLCJEcmFmdENhbXBhaWduIiwiRWRpdE1vZGUiLCJDYW1wYWlnbkRyYWZ0U3RhdHVzIiwiQ2FtcGFpZ25EcmFmdFNlbmRpbmdTdGF0dXMiLCJTZW50Q2FtcGFpZ24iLCJDYW1wYWlnblR5cGUiLCJDb21tb24iLCJQZXJpb2QiLCJCdWxrQ29udGFjdE1hbmFnZW1lbnQiLCJNYW5hZ2VDb250YWN0c0FjdGlvbiIsIkltcG9ydExpc3RBY3Rpb24iLCJJbXBvcnRDU1ZNZXRob2QiLCJDU1ZJbXBvcnRTdGF0dXMiLCJKb2JTdGF0dXMiLCJDb250YWN0UHJvcGVydGllcyIsIkRhdGFUeXBlIiwiTmFtZVNwYWNlIiwiTWVzc2FnZSIsIk1lc3NhZ2VTdGF0ZSIsIkZyb21UeXBlIiwiTWVzc2FnZVN0YXR1cyIsIkN1cnJlbnRNZXNzYWdlU3RhdHVzIiwiRXZlbnRUeXBlIiwiU2VnbWVudGF0aW9uIiwiU2VnbWVudFN0YXR1cyIsIlNlbmRFbWFpbFYzXzEiLCJUcmFja09wZW5zIiwiVHJhY2tDbGlja3MiLCJSZXNwb25zZVN0YXR1cyIsIlNlbmRlciIsIkVtYWlsVHlwZSIsIlNlbmRlclN0YXR1cyIsIkROUyIsIkRLSU1Db25maWd1cmF0aW9uQ2hlY2tTdGF0dXMiLCJES0lNQ29uZmlndXJhdGlvblN0YXR1cyIsIlNQRkNvbmZpZ3VyYXRpb25DaGVja1N0YXR1cyIsIlNQRkNvbmZpZ3VyYXRpb25TdGF0dXMiLCJBUElLZXlDb25maWd1cmF0aW9uIiwiUnVuTGV2ZWwiLCJTdGF0aXN0aWMiLCJDYW1wYWlnbk92ZXJ2aWV3SURUeXBlIiwiQ2FtcGFpZ25PdmVydmlld0VkaXRNb2RlIiwiQ2FtcGFpZ25PdmVydmlld0VkaXRUeXBlIiwiQ291bnRlclNvdXJjZSIsIkNvdW50ZXJSZXNvbHV0aW9uIiwiQ291bnRlclRpbWluZyIsIkVtYWlsRXZlbnQiLCJUZW1wbGF0ZSIsIkNhdGVnb3JpZXMiLCJDYXRlZ29yaWVzU2VsZWN0aW9uTWV0aG9kIiwiT3duZXJUeXBlIiwiUHVycG9zZXMiLCJQdXJwb3Nlc1NlbGVjdGlvbk1ldGhvZCIsIldlYmhvb2siLCJFdmVudFR5cGVWYWx1ZSIsIlN0YXR1cyIsImVudW1lcmFibGUiLCJnZXQiLCJpc05pbF8xIiwiaXNOdWxsXzEiLCJpc1VuZGVmaW5lZF8xIiwiaXNQdXJlT2JqZWN0XzEiLCJzZXRWYWx1ZUlmTm90TmlsXzEiLCJ0YXJnZXRPYmplY3QiLCJnbG9iYWxPYmplY3QiLCJCaWdOdW1iZXIiLCJpc051bWVyaWMiLCJtYXRoY2VpbCIsImNlaWwiLCJtYXRoZmxvb3IiLCJiaWdudW1iZXJFcnJvciIsInRvb01hbnlEaWdpdHMiLCJCQVNFIiwiTE9HX0JBU0UiLCJNQVhfU0FGRV9JTlRFR0VSIiwiUE9XU19URU4iLCJTUVJUX0JBU0UiLCJNQVgiLCJiaXRGbG9vciIsIm4iLCJjb2VmZlRvU3RyaW5nIiwicyIsInoiLCJqIiwiciIsImNvbXBhcmUiLCJ4IiwieSIsInhjIiwieWMiLCJrIiwiaW50Q2hlY2siLCJtaW4iLCJtYXgiLCJpc09kZCIsInRvRXhwb25lbnRpYWwiLCJ0b0ZpeGVkUG9pbnQiLCJsZW4iLCJ6cyIsImNsb25lIiwiY29uZmlnT2JqZWN0IiwiZGl2IiwiY29udmVydEJhc2UiLCJwYXJzZU51bWVyaWMiLCJwb3cyXzUzIiwicmFuZG9tNTNiaXRJbnQiLCJiYXNlUHJlZml4IiwiZG90QWZ0ZXIiLCJkb3RCZWZvcmUiLCJpc0luZmluaXR5T3JOYU4iLCJ3aGl0ZXNwYWNlT3JQbHVzIiwiUCIsInZhbHVlT2YiLCJPTkUiLCJERUNJTUFMX1BMQUNFUyIsIlJPVU5ESU5HX01PREUiLCJUT19FWFBfTkVHIiwiVE9fRVhQX1BPUyIsIk1JTl9FWFAiLCJNQVhfRVhQIiwiQ1JZUFRPIiwiTU9EVUxPX01PREUiLCJQT1dfUFJFQ0lTSU9OIiwiRk9STUFUIiwicHJlZml4IiwiZ3JvdXBTaXplIiwic2Vjb25kYXJ5R3JvdXBTaXplIiwiZ3JvdXBTZXBhcmF0b3IiLCJkZWNpbWFsU2VwYXJhdG9yIiwiZnJhY3Rpb25Hcm91cFNpemUiLCJmcmFjdGlvbkdyb3VwU2VwYXJhdG9yIiwic3VmZml4IiwiQUxQSEFCRVQiLCJhbHBoYWJldCIsImNhc2VDaGFuZ2VkIiwiaXNOdW0iLCJfaXNCaWdOdW1iZXIiLCJzdWJzdHJpbmciLCJyb3VuZCIsIkRFQlVHIiwiZm9ybWF0Iiwicm0iLCJjMCIsIm5lIiwibWF4T3JNaW4iLCJtIiwibm9ybWFsaXNlIiwic2QiLCJkIiwibmkiLCJyZCIsInBvd3MxMCIsIm91dCIsIlJPVU5EX1VQIiwiUk9VTkRfRE9XTiIsIlJPVU5EX0NFSUwiLCJST1VORF9GTE9PUiIsIlJPVU5EX0hBTEZfVVAiLCJST1VORF9IQUxGX0RPV04iLCJST1VORF9IQUxGX0VWRU4iLCJST1VORF9IQUxGX0NFSUwiLCJST1VORF9IQUxGX0ZMT09SIiwiRVVDTElEIiwic2V0IiwicCIsImNyeXB0byIsImdldFJhbmRvbVZhbHVlcyIsInJhbmRvbUJ5dGVzIiwiRVhQT05FTlRJQUxfQVQiLCJSQU5HRSIsImlzQmlnTnVtYmVyIiwibWF4aW11bSIsImx0IiwibWluaW11bSIsImd0IiwicmFuZG9tIiwiZHAiLCJyYW5kIiwiVWludDMyQXJyYXkiLCJjb3B5Iiwic3VtIiwicGx1cyIsImRlY2ltYWwiLCJ0b0Jhc2VPdXQiLCJiYXNlSW4iLCJiYXNlT3V0IiwiYXJyTCIsInJldmVyc2UiLCJzaWduIiwiY2FsbGVySXNUb1N0cmluZyIsInBvdyIsIm11bHRpcGx5IiwiYmFzZSIsInRlbXAiLCJ4bG8iLCJ4aGkiLCJjYXJyeSIsImtsbyIsImtoaSIsImFMIiwiYkwiLCJjbXAiLCJzdWJ0cmFjdCIsIm1vcmUiLCJwcm9kIiwicHJvZEwiLCJxIiwicWMiLCJyZW0iLCJyZW1MIiwicmVtMCIsInhpIiwieEwiLCJ5YzAiLCJ5TCIsInl6IiwiTmFOIiwiaXNOYU4iLCJwMSIsInAyIiwiYWJzb2x1dGVWYWx1ZSIsImFicyIsImNvbXBhcmVkVG8iLCJkZWNpbWFsUGxhY2VzIiwiZGl2aWRlZEJ5IiwiZGl2aWRlZFRvSW50ZWdlckJ5IiwiaWRpdiIsImV4cG9uZW50aWF0ZWRCeSIsImhhbGYiLCJpc01vZEV4cCIsIm5Jc0JpZyIsIm5Jc05lZyIsIm5Jc09kZCIsImlzSW50ZWdlciIsIm1vZCIsInRpbWVzIiwiaW50ZWdlclZhbHVlIiwiaXNFcXVhbFRvIiwiZXEiLCJpc0Zpbml0ZSIsImlzR3JlYXRlclRoYW4iLCJpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIiwiZ3RlIiwiaXNMZXNzVGhhbiIsImlzTGVzc1RoYW5PckVxdWFsVG8iLCJsdGUiLCJpc05lZ2F0aXZlIiwiaXNQb3NpdGl2ZSIsImlzWmVybyIsIm1pbnVzIiwidCIsInhMVHkiLCJ4ZSIsInllIiwibW9kdWxvIiwibXVsdGlwbGllZEJ5IiwieGNMIiwieWNMIiwieWxvIiwieWhpIiwiemMiLCJzcXJ0QmFzZSIsIm5lZ2F0ZWQiLCJwcmVjaXNpb24iLCJzaGlmdGVkQnkiLCJzcXVhcmVSb290Iiwic3FydCIsInJlcCIsInRvRml4ZWQiLCJ0b0Zvcm1hdCIsImcxIiwiZzIiLCJpbnRQYXJ0IiwiZnJhY3Rpb25QYXJ0IiwiaXNOZWciLCJpbnREaWdpdHMiLCJ0b0ZyYWN0aW9uIiwibWQiLCJkMCIsImQxIiwiZDIiLCJleHAiLCJuMCIsIm4xIiwidG9OdW1iZXIiLCJ0b1ByZWNpc2lvbiIsImpzb25fc3RyaW5naWZ5IiwianNvbl9wYXJzZSIsInN1c3BlY3RQcm90b1J4Iiwic3VzcGVjdENvbnN0cnVjdG9yUngiLCJfb3B0aW9ucyIsInN0cmljdCIsImFsd2F5c1BhcnNlQXNCaWciLCJ1c2VOYXRpdmVCaWdJbnQiLCJwcm90b0FjdGlvbiIsImNvbnN0cnVjdG9yQWN0aW9uIiwiYXQiLCJjaCIsImVzY2FwZWUiLCJmIiwibmV4dCIsInN0cmluZyIsIkJpZ0ludCIsImhleCIsInVmZmZmIiwic3RhcnRBdCIsInBhcnNlSW50IiwiZnJvbUNoYXJDb2RlIiwid2hpdGUiLCJvYmplY3QiLCJhcnJheSIsIndvcmQiLCJyZXZpdmVyIiwid2FsayIsImhvbGRlciIsImdhcCIsImluZGVudCIsImVzY2FwYWJsZSIsIm1ldGEiLCJxdW90ZSIsInBhcnRpYWwiLCJtaW5kIiwicmVwbGFjZXIiLCJzcGFjZSIsIm5vcm1hbGl6ZSIsInN0ckFycmF5IiwicmVzdWx0QXJyYXkiLCJmaXJzdCIsImNvbXBvbmVudCIsImRlZmluaXRpb24iLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/dist/mailjet.web.js.LICENSE.txt b/dist/mailjet.web.js.LICENSE.txt index 04315f5..db99a3c 100644 --- a/dist/mailjet.web.js.LICENSE.txt +++ b/dist/mailjet.web.js.LICENSE.txt @@ -1 +1 @@ -/*! node-mailjet v6.0.3 */ +/*! node-mailjet v6.0.4 */ diff --git a/dist/package-lock.json b/dist/package-lock.json index 887248c..b833a04 100644 --- a/dist/package-lock.json +++ b/dist/package-lock.json @@ -1,6 +1,6 @@ { "name": "node-mailjet", - "version": "6.0.3", + "version": "6.0.4", "lockfileVersion": 2, "requires": true, "dependencies": { diff --git a/dist/package.json b/dist/package.json index 0dbaf34..259a7f1 100644 --- a/dist/package.json +++ b/dist/package.json @@ -1,6 +1,6 @@ { "name": "node-mailjet", - "version": "6.0.3", + "version": "6.0.4", "main": "./mailjet.node.js", "browser": "./mailjet.web.js", "types": "./declarations/index.d.ts", diff --git a/docs/classes/client.default.html b/docs/classes/client.default.html index 68b04eb..57e08f9 100644 --- a/docs/classes/client.default.html +++ b/docs/classes/client.default.html @@ -1 +1 @@ -default | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

apiKey?: string
apiSecret?: string
apiToken?: string
version: string
config: Readonly<RequestConfig> = ...
packageJSON: Readonly<{ author: string; browser: string; bugs: { url: string }; contributors: string[]; dependencies: { axios: string; json-bigint: string; url-join: string }; description: string; devDependencies: { @babel/core: string; @babel/preset-env: string; @commitlint/cli: string; @commitlint/config-conventional: string; @types/chai: string; @types/json-bigint: string; @types/mocha: string; @types/node: string; @types/qs: string; @types/superagent: string; @types/url-join: string; @typescript-eslint/eslint-plugin: string; @typescript-eslint/parser: string; babel-loader: string; chai: string; eslint: string; eslint-config-airbnb-base: string; eslint-import-resolver-typescript: string; eslint-plugin-import: string; eslint-plugin-tsdoc: string; husky: string; mocha: string; nock: string; nyc: string; qs: string; standard-version: string; terser-webpack-plugin: string; ts-loader: string; ts-node: string; ts-node-dev: string; ts-patch: string; tsconfig-paths: string; tsconfig-paths-webpack-plugin: string; typedoc: string; typescript: string; typescript-transform-paths: string; webpack: string; webpack-cli: string; webpack-merge: string }; directories: { docs: string; lib: string }; engines: { node: string; npm: string }; files: string[]; homepage: string; keywords: string[]; license: string; main: string; name: string; private: boolean; repository: { type: string; url: string }; scripts: { build: string; build:dev: string; build:prepublish: string; build:release: string; build:watch: string; cover: string; cover:expandable: string; cover:int: string; cover:unit: string; docs: string; init: string; lint: string; lint:errors: string; lint:fix: string; pkg:link: string; pkg:precommit: string; pkg:prepare: string; release: string; release:dry: string; release:major: string; release:minor: string; release:patch: string; release:quiet: string; test: string; test:int: string; test:unit: string; test:watch: string; ts:mocha: string; ts:patch: string; ts:run: string; ts:watch: string }; types: string; typescript: { definition: string }; version: string }> = ...

Methods

  • basicConnectStrategy(apiKey: undefined | string, apiSecret: undefined | string): default
  • getAPIKey(): undefined | string
  • getAPISecret(): undefined | string
  • getAPIToken(): undefined | string
  • getConfig(): { host: string; output: ResponseType; version: string }
  • Returns { host: string; output: ResponseType; version: string }

    • host: string
    • output: ResponseType
    • version: string
  • getOptions(): { headers?: AxiosRequestHeaders; maxBodyLength?: number; maxContentLength?: number; proxy?: AxiosProxyConfig; timeout?: number }
  • Returns { headers?: AxiosRequestHeaders; maxBodyLength?: number; maxContentLength?: number; proxy?: AxiosProxyConfig; timeout?: number }

    • Optional headers?: AxiosRequestHeaders
    • Optional maxBodyLength?: number
    • Optional maxContentLength?: number
    • Optional proxy?: AxiosProxyConfig
    • Optional timeout?: number
  • getPackageVersion(): string
  • tokenConnectStrategy(apiToken: undefined | string): default

Legend

  • Namespace
  • Function
  • Type alias
  • Class
  • Constructor
  • Method
  • Interface
  • Interface with type parameter
  • Private property
  • Private method
  • Static property
  • Static method
  • Enumeration

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +default | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

apiKey?: string
apiSecret?: string
apiToken?: string
version: string
config: Readonly<RequestConfig> = ...
packageJSON: Readonly<{ author: string; browser: string; bugs: { url: string }; contributors: string[]; dependencies: { axios: string; json-bigint: string; url-join: string }; description: string; devDependencies: { @babel/core: string; @babel/preset-env: string; @commitlint/cli: string; @commitlint/config-conventional: string; @types/chai: string; @types/json-bigint: string; @types/mocha: string; @types/node: string; @types/qs: string; @types/superagent: string; @types/url-join: string; @typescript-eslint/eslint-plugin: string; @typescript-eslint/parser: string; babel-loader: string; chai: string; eslint: string; eslint-config-airbnb-base: string; eslint-import-resolver-typescript: string; eslint-plugin-import: string; eslint-plugin-tsdoc: string; husky: string; mocha: string; nock: string; nyc: string; qs: string; standard-version: string; terser-webpack-plugin: string; ts-loader: string; ts-node: string; ts-node-dev: string; ts-patch: string; tsconfig-paths: string; tsconfig-paths-webpack-plugin: string; typedoc: string; typescript: string; typescript-transform-paths: string; webpack: string; webpack-cli: string; webpack-merge: string }; directories: { docs: string; lib: string }; engines: { node: string; npm: string }; files: string[]; homepage: string; keywords: string[]; license: string; main: string; name: string; private: boolean; repository: { type: string; url: string }; scripts: { build: string; build:dev: string; build:prepublish: string; build:release: string; build:watch: string; cover: string; cover:expandable: string; cover:int: string; cover:unit: string; docs: string; init: string; lint: string; lint:errors: string; lint:fix: string; pkg:link: string; pkg:precommit: string; pkg:prepare: string; release: string; release:dry: string; release:major: string; release:minor: string; release:patch: string; release:quiet: string; test: string; test:int: string; test:unit: string; test:watch: string; ts:mocha: string; ts:patch: string; ts:run: string; ts:watch: string }; types: string; typescript: { definition: string }; version: string }> = ...

Methods

  • basicConnectStrategy(apiKey: undefined | string, apiSecret: undefined | string): default
  • getAPIKey(): undefined | string
  • getAPISecret(): undefined | string
  • getAPIToken(): undefined | string
  • getConfig(): { host: string; output: ResponseType; version: string }
  • Returns { host: string; output: ResponseType; version: string }

    • host: string
    • output: ResponseType
    • version: string
  • getOptions(): { headers?: AxiosRequestHeaders; maxBodyLength?: number; maxContentLength?: number; proxy?: AxiosProxyConfig; timeout?: number }
  • Returns { headers?: AxiosRequestHeaders; maxBodyLength?: number; maxContentLength?: number; proxy?: AxiosProxyConfig; timeout?: number }

    • Optional headers?: AxiosRequestHeaders
    • Optional maxBodyLength?: number
    • Optional maxContentLength?: number
    • Optional proxy?: AxiosProxyConfig
    • Optional timeout?: number
  • getPackageVersion(): string
  • tokenConnectStrategy(apiToken: undefined | string): default

Legend

  • Namespace
  • Function
  • Type alias
  • Class
  • Constructor
  • Method
  • Interface
  • Interface with type parameter
  • Private property
  • Private method
  • Static property
  • Static method
  • Enumeration

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/index.default.html b/docs/classes/index.default.html index 955176d..233fde4 100644 --- a/docs/classes/index.default.html +++ b/docs/classes/index.default.html @@ -1 +1 @@ -default | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

Client: typeof default = Client
HttpMethods: typeof default = HttpMethods
Request: typeof default = Request
config: Readonly<RequestConfig> = ...
packageJSON: Readonly<{ author: string; browser: string; bugs: { url: string }; contributors: string[]; dependencies: { axios: string; json-bigint: string; url-join: string }; description: string; devDependencies: { @babel/core: string; @babel/preset-env: string; @commitlint/cli: string; @commitlint/config-conventional: string; @types/chai: string; @types/json-bigint: string; @types/mocha: string; @types/node: string; @types/qs: string; @types/superagent: string; @types/url-join: string; @typescript-eslint/eslint-plugin: string; @typescript-eslint/parser: string; babel-loader: string; chai: string; eslint: string; eslint-config-airbnb-base: string; eslint-import-resolver-typescript: string; eslint-plugin-import: string; eslint-plugin-tsdoc: string; husky: string; mocha: string; nock: string; nyc: string; qs: string; standard-version: string; terser-webpack-plugin: string; ts-loader: string; ts-node: string; ts-node-dev: string; ts-patch: string; tsconfig-paths: string; tsconfig-paths-webpack-plugin: string; typedoc: string; typescript: string; typescript-transform-paths: string; webpack: string; webpack-cli: string; webpack-merge: string }; directories: { docs: string; lib: string }; engines: { node: string; npm: string }; files: string[]; homepage: string; keywords: string[]; license: string; main: string; name: string; private: boolean; repository: { type: string; url: string }; scripts: { build: string; build:dev: string; build:prepublish: string; build:release: string; build:watch: string; cover: string; cover:expandable: string; cover:int: string; cover:unit: string; docs: string; init: string; lint: string; lint:errors: string; lint:fix: string; pkg:link: string; pkg:precommit: string; pkg:prepare: string; release: string; release:dry: string; release:major: string; release:minor: string; release:patch: string; release:quiet: string; test: string; test:int: string; test:unit: string; test:watch: string; ts:mocha: string; ts:patch: string; ts:run: string; ts:watch: string }; types: string; typescript: { definition: string }; version: string }> = ...

Methods

  • getAPIKey(): undefined | string
  • getAPISecret(): undefined | string
  • getAPIToken(): undefined | string
  • getConfig(): { host: string; output: ResponseType; version: string }
  • getOptions(): { headers?: AxiosRequestHeaders; maxBodyLength?: number; maxContentLength?: number; proxy?: AxiosProxyConfig; timeout?: number }
  • Returns { headers?: AxiosRequestHeaders; maxBodyLength?: number; maxContentLength?: number; proxy?: AxiosProxyConfig; timeout?: number }

    • Optional headers?: AxiosRequestHeaders
    • Optional maxBodyLength?: number
    • Optional maxContentLength?: number
    • Optional proxy?: AxiosProxyConfig
    • Optional timeout?: number
  • getPackageVersion(): string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Inherited constructor
  • Inherited method
  • Enumeration
  • Class
  • Static property

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +default | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Constructors

Properties

Client: typeof default = Client
HttpMethods: typeof default = HttpMethods
Request: typeof default = Request
config: Readonly<RequestConfig> = ...
packageJSON: Readonly<{ author: string; browser: string; bugs: { url: string }; contributors: string[]; dependencies: { axios: string; json-bigint: string; url-join: string }; description: string; devDependencies: { @babel/core: string; @babel/preset-env: string; @commitlint/cli: string; @commitlint/config-conventional: string; @types/chai: string; @types/json-bigint: string; @types/mocha: string; @types/node: string; @types/qs: string; @types/superagent: string; @types/url-join: string; @typescript-eslint/eslint-plugin: string; @typescript-eslint/parser: string; babel-loader: string; chai: string; eslint: string; eslint-config-airbnb-base: string; eslint-import-resolver-typescript: string; eslint-plugin-import: string; eslint-plugin-tsdoc: string; husky: string; mocha: string; nock: string; nyc: string; qs: string; standard-version: string; terser-webpack-plugin: string; ts-loader: string; ts-node: string; ts-node-dev: string; ts-patch: string; tsconfig-paths: string; tsconfig-paths-webpack-plugin: string; typedoc: string; typescript: string; typescript-transform-paths: string; webpack: string; webpack-cli: string; webpack-merge: string }; directories: { docs: string; lib: string }; engines: { node: string; npm: string }; files: string[]; homepage: string; keywords: string[]; license: string; main: string; name: string; private: boolean; repository: { type: string; url: string }; scripts: { build: string; build:dev: string; build:prepublish: string; build:release: string; build:watch: string; cover: string; cover:expandable: string; cover:int: string; cover:unit: string; docs: string; init: string; lint: string; lint:errors: string; lint:fix: string; pkg:link: string; pkg:precommit: string; pkg:prepare: string; release: string; release:dry: string; release:major: string; release:minor: string; release:patch: string; release:quiet: string; test: string; test:int: string; test:unit: string; test:watch: string; ts:mocha: string; ts:patch: string; ts:run: string; ts:watch: string }; types: string; typescript: { definition: string }; version: string }> = ...

Methods

  • getAPIKey(): undefined | string
  • getAPISecret(): undefined | string
  • getAPIToken(): undefined | string
  • getConfig(): { host: string; output: ResponseType; version: string }
  • getOptions(): { headers?: AxiosRequestHeaders; maxBodyLength?: number; maxContentLength?: number; proxy?: AxiosProxyConfig; timeout?: number }
  • Returns { headers?: AxiosRequestHeaders; maxBodyLength?: number; maxContentLength?: number; proxy?: AxiosProxyConfig; timeout?: number }

    • Optional headers?: AxiosRequestHeaders
    • Optional maxBodyLength?: number
    • Optional maxContentLength?: number
    • Optional proxy?: AxiosProxyConfig
    • Optional timeout?: number
  • getPackageVersion(): string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Inherited constructor
  • Inherited method
  • Enumeration
  • Class
  • Static property

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/request.default.html b/docs/classes/request.default.html index cb2159e..5cbdb50 100644 --- a/docs/classes/request.default.html +++ b/docs/classes/request.default.html @@ -1 +1 @@ -default | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • default

Index

Constructors

Properties

actionPath: null | string
client: default
config: Partial<RequestConfig>
method: default
resource: string
subPath: SubPath
url: string
protocol: "https://" = ...

Methods

  • buildFullUrl(): string
  • getContentType(url: string): "text/plain" | "application/json"
  • getCredentials(): { apiKey: undefined | string; apiSecret: undefined | string; apiToken: undefined | string }
  • Returns { apiKey: undefined | string; apiSecret: undefined | string; apiToken: undefined | string }

    • apiKey: undefined | string
    • apiSecret: undefined | string
    • apiToken: undefined | string
  • getUserAgent(): string
  • id(value: string | number): default
  • setBaseURL(baseUrl: string): default
  • isBrowser(): boolean
  • parseToJSONb(text: string): any

Legend

  • Namespace
  • Function
  • Type alias
  • Class
  • Constructor
  • Method
  • Interface
  • Interface with type parameter
  • Private property
  • Private method
  • Static property
  • Static method
  • Enumeration

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +default | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • default

Index

Constructors

Properties

actionPath: null | string
client: default
config: Partial<RequestConfig>
method: default
resource: string
subPath: SubPath
url: string
protocol: "https://" = ...

Methods

  • buildFullUrl(): string
  • getContentType(url: string): "text/plain" | "application/json"
  • getCredentials(): { apiKey: undefined | string; apiSecret: undefined | string; apiToken: undefined | string }
  • Returns { apiKey: undefined | string; apiSecret: undefined | string; apiToken: undefined | string }

    • apiKey: undefined | string
    • apiSecret: undefined | string
    • apiToken: undefined | string
  • getUserAgent(): string
  • id(value: string | number): default
  • setBaseURL(baseUrl: string): default
  • isBrowser(): boolean
  • parseToJSONb(text: string): any

Legend

  • Namespace
  • Function
  • Type alias
  • Class
  • Constructor
  • Method
  • Interface
  • Interface with type parameter
  • Private property
  • Private method
  • Static property
  • Static method
  • Enumeration

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/request_HttpMethods.default.html b/docs/enums/request_HttpMethods.default.html index 3672427..f04be89 100644 --- a/docs/enums/request_HttpMethods.default.html +++ b/docs/enums/request_HttpMethods.default.html @@ -1 +1 @@ -default | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +default | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Campaign.DraftCampaign.CampaignDraftSendingStatus.html b/docs/enums/types_api_Campaign.DraftCampaign.CampaignDraftSendingStatus.html index 68f01b3..86a94fa 100644 --- a/docs/enums/types_api_Campaign.DraftCampaign.CampaignDraftSendingStatus.html +++ b/docs/enums/types_api_Campaign.DraftCampaign.CampaignDraftSendingStatus.html @@ -1 +1 @@ -CampaignDraftSendingStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignDraftSendingStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Campaign.DraftCampaign.CampaignDraftStatus.html b/docs/enums/types_api_Campaign.DraftCampaign.CampaignDraftStatus.html index f40f741..da34a9c 100644 --- a/docs/enums/types_api_Campaign.DraftCampaign.CampaignDraftStatus.html +++ b/docs/enums/types_api_Campaign.DraftCampaign.CampaignDraftStatus.html @@ -1 +1 @@ -CampaignDraftStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignDraftStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Campaign.DraftCampaign.EditMode.html b/docs/enums/types_api_Campaign.DraftCampaign.EditMode.html index e006e3d..77095f6 100644 --- a/docs/enums/types_api_Campaign.DraftCampaign.EditMode.html +++ b/docs/enums/types_api_Campaign.DraftCampaign.EditMode.html @@ -1 +1 @@ -EditMode | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +EditMode | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Campaign.SentCampaign.CampaignType.html b/docs/enums/types_api_Campaign.SentCampaign.CampaignType.html index 9da1ae6..14e67af 100644 --- a/docs/enums/types_api_Campaign.SentCampaign.CampaignType.html +++ b/docs/enums/types_api_Campaign.SentCampaign.CampaignType.html @@ -1 +1 @@ -CampaignType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Common.Common.Period.html b/docs/enums/types_api_Common.Common.Period.html index 2d0c56f..5107c27 100644 --- a/docs/enums/types_api_Common.Common.Period.html +++ b/docs/enums/types_api_Common.Common.Period.html @@ -1 +1 @@ -Period | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Period | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Contact.BulkContactManagement.CSVImportStatus.html b/docs/enums/types_api_Contact.BulkContactManagement.CSVImportStatus.html index 7b587ec..1680a1e 100644 --- a/docs/enums/types_api_Contact.BulkContactManagement.CSVImportStatus.html +++ b/docs/enums/types_api_Contact.BulkContactManagement.CSVImportStatus.html @@ -1 +1 @@ -CSVImportStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CSVImportStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Contact.BulkContactManagement.ImportCSVMethod.html b/docs/enums/types_api_Contact.BulkContactManagement.ImportCSVMethod.html index 3b99f21..b12ea18 100644 --- a/docs/enums/types_api_Contact.BulkContactManagement.ImportCSVMethod.html +++ b/docs/enums/types_api_Contact.BulkContactManagement.ImportCSVMethod.html @@ -1 +1 @@ -ImportCSVMethod | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ImportCSVMethod | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Contact.BulkContactManagement.ImportListAction.html b/docs/enums/types_api_Contact.BulkContactManagement.ImportListAction.html index eb1ded5..98fcd6a 100644 --- a/docs/enums/types_api_Contact.BulkContactManagement.ImportListAction.html +++ b/docs/enums/types_api_Contact.BulkContactManagement.ImportListAction.html @@ -1 +1 @@ -ImportListAction | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ImportListAction | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Contact.BulkContactManagement.JobStatus.html b/docs/enums/types_api_Contact.BulkContactManagement.JobStatus.html index b342b4f..66cfc34 100644 --- a/docs/enums/types_api_Contact.BulkContactManagement.JobStatus.html +++ b/docs/enums/types_api_Contact.BulkContactManagement.JobStatus.html @@ -1 +1 @@ -JobStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +JobStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Contact.BulkContactManagement.ManageContactsAction.html b/docs/enums/types_api_Contact.BulkContactManagement.ManageContactsAction.html index c047729..32f513c 100644 --- a/docs/enums/types_api_Contact.BulkContactManagement.ManageContactsAction.html +++ b/docs/enums/types_api_Contact.BulkContactManagement.ManageContactsAction.html @@ -1 +1 @@ -ManageContactsAction | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ManageContactsAction | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Contact.ContactProperties.DataType.html b/docs/enums/types_api_Contact.ContactProperties.DataType.html index 141cb05..59254ef 100644 --- a/docs/enums/types_api_Contact.ContactProperties.DataType.html +++ b/docs/enums/types_api_Contact.ContactProperties.DataType.html @@ -1 +1 @@ -DataType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +DataType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Contact.ContactProperties.NameSpace.html b/docs/enums/types_api_Contact.ContactProperties.NameSpace.html index 06d20c9..635cbd8 100644 --- a/docs/enums/types_api_Contact.ContactProperties.NameSpace.html +++ b/docs/enums/types_api_Contact.ContactProperties.NameSpace.html @@ -1 +1 @@ -NameSpace | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +NameSpace | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Message.Message.CurrentMessageStatus.html b/docs/enums/types_api_Message.Message.CurrentMessageStatus.html index 8cfbc53..9be11f2 100644 --- a/docs/enums/types_api_Message.Message.CurrentMessageStatus.html +++ b/docs/enums/types_api_Message.Message.CurrentMessageStatus.html @@ -1 +1 @@ -CurrentMessageStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CurrentMessageStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Message.Message.EventType.html b/docs/enums/types_api_Message.Message.EventType.html index 31eceef..8112777 100644 --- a/docs/enums/types_api_Message.Message.EventType.html +++ b/docs/enums/types_api_Message.Message.EventType.html @@ -1 +1 @@ -EventType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +EventType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Message.Message.FromType.html b/docs/enums/types_api_Message.Message.FromType.html index a9110eb..ad3f21a 100644 --- a/docs/enums/types_api_Message.Message.FromType.html +++ b/docs/enums/types_api_Message.Message.FromType.html @@ -1 +1 @@ -FromType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +FromType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Message.Message.MessageState.html b/docs/enums/types_api_Message.Message.MessageState.html index bbc93b4..01d2149 100644 --- a/docs/enums/types_api_Message.Message.MessageState.html +++ b/docs/enums/types_api_Message.Message.MessageState.html @@ -1 +1 @@ -MessageState | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Enumeration members

BadOrEmptyTemplate = 17
BlackListed = 20
ConnectionIssue = 12
ContentBlocked = 8
DuplicateInCampaign = 15
ErrorInTemplateLanguage = 18
GreyListed = 13
InvalidDomain = 4
MailboxInactive = 2
NoMailHost = 5
PolicyIssue = 9
PreBlocked = 14
ProtocolIssue = 11
QuotaExceeded = 3
RelayOrAccessDenied = 6
SenderBlocked = 7
SpamPreBlocked = 16
SpamReporter = 21
SystemIssue = 10
TypoFix = 19
UserUnknown = 1

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +MessageState | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Enumeration members

BadOrEmptyTemplate = 17
BlackListed = 20
ConnectionIssue = 12
ContentBlocked = 8
DuplicateInCampaign = 15
ErrorInTemplateLanguage = 18
GreyListed = 13
InvalidDomain = 4
MailboxInactive = 2
NoMailHost = 5
PolicyIssue = 9
PreBlocked = 14
ProtocolIssue = 11
QuotaExceeded = 3
RelayOrAccessDenied = 6
SenderBlocked = 7
SpamPreBlocked = 16
SpamReporter = 21
SystemIssue = 10
TypoFix = 19
UserUnknown = 1

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Message.Message.MessageStatus.html b/docs/enums/types_api_Message.Message.MessageStatus.html index 3693534..6b0e504 100644 --- a/docs/enums/types_api_Message.Message.MessageStatus.html +++ b/docs/enums/types_api_Message.Message.MessageStatus.html @@ -1 +1 @@ -MessageStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +MessageStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Segmentation.Segmentation.SegmentStatus.html b/docs/enums/types_api_Segmentation.Segmentation.SegmentStatus.html index 3bcd908..d7b0cd8 100644 --- a/docs/enums/types_api_Segmentation.Segmentation.SegmentStatus.html +++ b/docs/enums/types_api_Segmentation.Segmentation.SegmentStatus.html @@ -1 +1 @@ -SegmentStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SegmentStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_SendEmail.SendEmailV3_1.ResponseStatus.html b/docs/enums/types_api_SendEmail.SendEmailV3_1.ResponseStatus.html index d929476..20765dc 100644 --- a/docs/enums/types_api_SendEmail.SendEmailV3_1.ResponseStatus.html +++ b/docs/enums/types_api_SendEmail.SendEmailV3_1.ResponseStatus.html @@ -1 +1 @@ -ResponseStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ResponseStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_SendEmail.SendEmailV3_1.TrackClicks.html b/docs/enums/types_api_SendEmail.SendEmailV3_1.TrackClicks.html index 7553d1e..f52fdc3 100644 --- a/docs/enums/types_api_SendEmail.SendEmailV3_1.TrackClicks.html +++ b/docs/enums/types_api_SendEmail.SendEmailV3_1.TrackClicks.html @@ -1 +1 @@ -TrackClicks | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +TrackClicks | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_SendEmail.SendEmailV3_1.TrackOpens.html b/docs/enums/types_api_SendEmail.SendEmailV3_1.TrackOpens.html index 9617e6d..a369f41 100644 --- a/docs/enums/types_api_SendEmail.SendEmailV3_1.TrackOpens.html +++ b/docs/enums/types_api_SendEmail.SendEmailV3_1.TrackOpens.html @@ -1 +1 @@ -TrackOpens | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +TrackOpens | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_SenderAddressAndDomain.DNS.DKIMConfigurationCheckStatus.html b/docs/enums/types_api_SenderAddressAndDomain.DNS.DKIMConfigurationCheckStatus.html index 9a0344d..f82934d 100644 --- a/docs/enums/types_api_SenderAddressAndDomain.DNS.DKIMConfigurationCheckStatus.html +++ b/docs/enums/types_api_SenderAddressAndDomain.DNS.DKIMConfigurationCheckStatus.html @@ -1 +1 @@ -DKIMConfigurationCheckStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +DKIMConfigurationCheckStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_SenderAddressAndDomain.DNS.DKIMConfigurationStatus.html b/docs/enums/types_api_SenderAddressAndDomain.DNS.DKIMConfigurationStatus.html index 39bc6ac..520f07b 100644 --- a/docs/enums/types_api_SenderAddressAndDomain.DNS.DKIMConfigurationStatus.html +++ b/docs/enums/types_api_SenderAddressAndDomain.DNS.DKIMConfigurationStatus.html @@ -1 +1 @@ -DKIMConfigurationStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +DKIMConfigurationStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_SenderAddressAndDomain.DNS.SPFConfigurationCheckStatus.html b/docs/enums/types_api_SenderAddressAndDomain.DNS.SPFConfigurationCheckStatus.html index 430dd5c..0ffba97 100644 --- a/docs/enums/types_api_SenderAddressAndDomain.DNS.SPFConfigurationCheckStatus.html +++ b/docs/enums/types_api_SenderAddressAndDomain.DNS.SPFConfigurationCheckStatus.html @@ -1 +1 @@ -SPFConfigurationCheckStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SPFConfigurationCheckStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_SenderAddressAndDomain.DNS.SPFConfigurationStatus.html b/docs/enums/types_api_SenderAddressAndDomain.DNS.SPFConfigurationStatus.html index a926c89..c108969 100644 --- a/docs/enums/types_api_SenderAddressAndDomain.DNS.SPFConfigurationStatus.html +++ b/docs/enums/types_api_SenderAddressAndDomain.DNS.SPFConfigurationStatus.html @@ -1 +1 @@ -SPFConfigurationStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SPFConfigurationStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_SenderAddressAndDomain.Sender.EmailType.html b/docs/enums/types_api_SenderAddressAndDomain.Sender.EmailType.html index 0e95449..211dd5e 100644 --- a/docs/enums/types_api_SenderAddressAndDomain.Sender.EmailType.html +++ b/docs/enums/types_api_SenderAddressAndDomain.Sender.EmailType.html @@ -1 +1 @@ -EmailType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +EmailType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_SenderAddressAndDomain.Sender.SenderStatus.html b/docs/enums/types_api_SenderAddressAndDomain.Sender.SenderStatus.html index 869589e..c3f71cc 100644 --- a/docs/enums/types_api_SenderAddressAndDomain.Sender.SenderStatus.html +++ b/docs/enums/types_api_SenderAddressAndDomain.Sender.SenderStatus.html @@ -1 +1 @@ -SenderStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SenderStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Setting.APIKeyConfiguration.RunLevel.html b/docs/enums/types_api_Setting.APIKeyConfiguration.RunLevel.html index 1644e40..f66d036 100644 --- a/docs/enums/types_api_Setting.APIKeyConfiguration.RunLevel.html +++ b/docs/enums/types_api_Setting.APIKeyConfiguration.RunLevel.html @@ -1 +1 @@ -RunLevel | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +RunLevel | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Statistic.Statistic.CampaignOverViewEditMode.html b/docs/enums/types_api_Statistic.Statistic.CampaignOverViewEditMode.html index 4b2fe17..e15921a 100644 --- a/docs/enums/types_api_Statistic.Statistic.CampaignOverViewEditMode.html +++ b/docs/enums/types_api_Statistic.Statistic.CampaignOverViewEditMode.html @@ -1 +1 @@ -CampaignOverviewEditMode | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignOverviewEditMode | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Statistic.Statistic.CampaignOverViewEditType.html b/docs/enums/types_api_Statistic.Statistic.CampaignOverViewEditType.html index 7c9cc0e..8f144f6 100644 --- a/docs/enums/types_api_Statistic.Statistic.CampaignOverViewEditType.html +++ b/docs/enums/types_api_Statistic.Statistic.CampaignOverViewEditType.html @@ -1 +1 @@ -CampaignOverviewEditType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignOverviewEditType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Statistic.Statistic.CampaignOverViewIDType.html b/docs/enums/types_api_Statistic.Statistic.CampaignOverViewIDType.html index 62717b0..96954ce 100644 --- a/docs/enums/types_api_Statistic.Statistic.CampaignOverViewIDType.html +++ b/docs/enums/types_api_Statistic.Statistic.CampaignOverViewIDType.html @@ -1 +1 @@ -CampaignOverviewIDType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignOverviewIDType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Statistic.Statistic.CounterResolution.html b/docs/enums/types_api_Statistic.Statistic.CounterResolution.html index 9b632d5..e4a63c8 100644 --- a/docs/enums/types_api_Statistic.Statistic.CounterResolution.html +++ b/docs/enums/types_api_Statistic.Statistic.CounterResolution.html @@ -1 +1 @@ -CounterResolution | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CounterResolution | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Statistic.Statistic.CounterSource.html b/docs/enums/types_api_Statistic.Statistic.CounterSource.html index 1255dcf..98f8888 100644 --- a/docs/enums/types_api_Statistic.Statistic.CounterSource.html +++ b/docs/enums/types_api_Statistic.Statistic.CounterSource.html @@ -1 +1 @@ -CounterSource | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CounterSource | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Statistic.Statistic.CounterTiming.html b/docs/enums/types_api_Statistic.Statistic.CounterTiming.html index 4a19ddf..bbfbef2 100644 --- a/docs/enums/types_api_Statistic.Statistic.CounterTiming.html +++ b/docs/enums/types_api_Statistic.Statistic.CounterTiming.html @@ -1 +1 @@ -CounterTiming | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CounterTiming | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Statistic.Statistic.EmailEvent.html b/docs/enums/types_api_Statistic.Statistic.EmailEvent.html index e4d8159..a16bae8 100644 --- a/docs/enums/types_api_Statistic.Statistic.EmailEvent.html +++ b/docs/enums/types_api_Statistic.Statistic.EmailEvent.html @@ -1 +1 @@ -EmailEvent | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +EmailEvent | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Template.Template.Categories.html b/docs/enums/types_api_Template.Template.Categories.html index c534e80..eb90195 100644 --- a/docs/enums/types_api_Template.Template.Categories.html +++ b/docs/enums/types_api_Template.Template.Categories.html @@ -1 +1 @@ -Categories | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Enumeration members

Account = "account"
Activation = "activation"
Anniversary = "anniversary"
Basic = "basic"
ContactPropertyUpdate = "contact-property-update"
ECommerce = "e-commerce"
Events = "events"
Full = "full"
Invoice = "invoice"
NewsLetter = "newsletter"
Sports = "sports"
Support = "support"
Travel = "travel"
Welcome = "welcome"

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Categories | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Enumeration members

Account = "account"
Activation = "activation"
Anniversary = "anniversary"
Basic = "basic"
ContactPropertyUpdate = "contact-property-update"
ECommerce = "e-commerce"
Events = "events"
Full = "full"
Invoice = "invoice"
NewsLetter = "newsletter"
Sports = "sports"
Support = "support"
Travel = "travel"
Welcome = "welcome"

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Template.Template.CategoriesSelectionMethod.html b/docs/enums/types_api_Template.Template.CategoriesSelectionMethod.html index 85390e1..bda65af 100644 --- a/docs/enums/types_api_Template.Template.CategoriesSelectionMethod.html +++ b/docs/enums/types_api_Template.Template.CategoriesSelectionMethod.html @@ -1 +1 @@ -CategoriesSelectionMethod | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CategoriesSelectionMethod | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Template.Template.EditMode.html b/docs/enums/types_api_Template.Template.EditMode.html index 0e7fbf3..b73d0e7 100644 --- a/docs/enums/types_api_Template.Template.EditMode.html +++ b/docs/enums/types_api_Template.Template.EditMode.html @@ -1 +1 @@ -EditMode | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +EditMode | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Template.Template.OwnerType.html b/docs/enums/types_api_Template.Template.OwnerType.html index 4b30409..46c3f91 100644 --- a/docs/enums/types_api_Template.Template.OwnerType.html +++ b/docs/enums/types_api_Template.Template.OwnerType.html @@ -1 +1 @@ -OwnerType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +OwnerType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Template.Template.Purposes.html b/docs/enums/types_api_Template.Template.Purposes.html index 1510aec..58b6a90 100644 --- a/docs/enums/types_api_Template.Template.Purposes.html +++ b/docs/enums/types_api_Template.Template.Purposes.html @@ -1 +1 @@ -Purposes | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Purposes | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Template.Template.PurposesSelectionMethod.html b/docs/enums/types_api_Template.Template.PurposesSelectionMethod.html index dbade4e..7db6cd4 100644 --- a/docs/enums/types_api_Template.Template.PurposesSelectionMethod.html +++ b/docs/enums/types_api_Template.Template.PurposesSelectionMethod.html @@ -1 +1 @@ -PurposesSelectionMethod | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +PurposesSelectionMethod | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Webhook.Webhook.EventType.html b/docs/enums/types_api_Webhook.Webhook.EventType.html index 940641b..c168fa5 100644 --- a/docs/enums/types_api_Webhook.Webhook.EventType.html +++ b/docs/enums/types_api_Webhook.Webhook.EventType.html @@ -1 +1 @@ -EventType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +EventType | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Webhook.Webhook.EventTypeValue.html b/docs/enums/types_api_Webhook.Webhook.EventTypeValue.html index 69e3935..5374c97 100644 --- a/docs/enums/types_api_Webhook.Webhook.EventTypeValue.html +++ b/docs/enums/types_api_Webhook.Webhook.EventTypeValue.html @@ -1 +1 @@ -EventTypeValue | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +EventTypeValue | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/types_api_Webhook.Webhook.Status.html b/docs/enums/types_api_Webhook.Webhook.Status.html index 6a55da8..e386b1d 100644 --- a/docs/enums/types_api_Webhook.Webhook.Status.html +++ b/docs/enums/types_api_Webhook.Webhook.Status.html @@ -1 +1 @@ -Status | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Status | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index c73aa96..6b96404 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,7 +4,7 @@

Mailjet JS

Build Status -Current Version

+Current Version

Overview

diff --git a/docs/interfaces/client_Client.ClientParams.html b/docs/interfaces/client_Client.ClientParams.html index b0d90b2..4af6afe 100644 --- a/docs/interfaces/client_Client.ClientParams.html +++ b/docs/interfaces/client_Client.ClientParams.html @@ -1 +1 @@ -ClientParams | node-mailjet

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ClientParams | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/request_Request.RequestConfig.html b/docs/interfaces/request_Request.RequestConfig.html index cf23665..662ccbd 100644 --- a/docs/interfaces/request_Request.RequestConfig.html +++ b/docs/interfaces/request_Request.RequestConfig.html @@ -1 +1 @@ -RequestConfig | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +RequestConfig | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/request_Request.RequestOptions.html b/docs/interfaces/request_Request.RequestOptions.html index 7a18e5b..9e648ba 100644 --- a/docs/interfaces/request_Request.RequestOptions.html +++ b/docs/interfaces/request_Request.RequestOptions.html @@ -1 +1 @@ -RequestOptions | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +RequestOptions | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraft.html b/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraft.html index eeaf271..af5cbd2 100644 --- a/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraft.html +++ b/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraft.html @@ -1 +1 @@ -CampaignDraft | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Type parameters

Hierarchy

  • CampaignDraft

Index

Properties

AXFraction: number
AXFractionName: string
AXTesting: AXTesting
CampaignID: number
ContactsListID: number
CreatedAt: string
Current: number
DeliveredAt: string
ID: number
IsStarred: boolean
IsTextPartIncluded: boolean
Locale: string
ModifiedAt: string
Preset: string
ReplyEmail: string
SegmentationID: number
Sender: string
SenderEmail: string
SenderName: string
Subject: string
TemplateID: number
Title: string
Url: string
Used: boolean

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignDraft | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Type parameters

Hierarchy

  • CampaignDraft

Index

Properties

AXFraction: number
AXFractionName: string
AXTesting: AXTesting
CampaignID: number
ContactsListID: number
CreatedAt: string
Current: number
DeliveredAt: string
ID: number
IsStarred: boolean
IsTextPartIncluded: boolean
Locale: string
ModifiedAt: string
Preset: string
ReplyEmail: string
SegmentationID: number
Sender: string
SenderEmail: string
SenderName: string
Subject: string
TemplateID: number
Title: string
Url: string
Used: boolean

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraftDetailContent.html b/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraftDetailContent.html index 5418a02..9ce2260 100644 --- a/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraftDetailContent.html +++ b/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraftDetailContent.html @@ -1 +1 @@ -CampaignDraftDetailContent | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface CampaignDraftDetailContent<Headers>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignDraftDetailContent | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface CampaignDraftDetailContent<Headers>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraftSchedule.html b/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraftSchedule.html index 78e4527..57f2511 100644 --- a/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraftSchedule.html +++ b/docs/interfaces/types_api_Campaign.DraftCampaign.CampaignDraftSchedule.html @@ -1 +1 @@ -CampaignDraftSchedule | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignDraftSchedule | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Campaign.DraftCampaign.Recipient.html b/docs/interfaces/types_api_Campaign.DraftCampaign.Recipient.html index f501356..a35b3ad 100644 --- a/docs/interfaces/types_api_Campaign.DraftCampaign.Recipient.html +++ b/docs/interfaces/types_api_Campaign.DraftCampaign.Recipient.html @@ -1 +1 @@ -Recipient | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Recipient | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Campaign.SentCampaign.Campaign.html b/docs/interfaces/types_api_Campaign.SentCampaign.Campaign.html index 7c703ff..3857589 100644 --- a/docs/interfaces/types_api_Campaign.SentCampaign.Campaign.html +++ b/docs/interfaces/types_api_Campaign.SentCampaign.Campaign.html @@ -1 +1 @@ -Campaign | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Campaign

Index

Properties

CampaignType: CampaignType
CreatedAt: string
CustomValue: string
FirstMessageID: number
FromEmail: string
FromID: number
FromName: string
HasHtmlCount: number
HasTxtCount: number
ID: number
IsDeleted: boolean
IsStarred: boolean
ListID: number
NewsLetterID: number
SegmentationID: number
SendEndAt: string
SendStartAt: string
SpamassScore: number
Subject: string
WorkflowID: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Campaign | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Campaign

Index

Properties

CampaignType: CampaignType
CreatedAt: string
CustomValue: string
FirstMessageID: number
FromEmail: string
FromID: number
FromName: string
HasHtmlCount: number
HasTxtCount: number
ID: number
IsDeleted: boolean
IsStarred: boolean
ListID: number
NewsLetterID: number
SegmentationID: number
SendEndAt: string
SendStartAt: string
SpamassScore: number
Subject: string
WorkflowID: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Common.Common.Pagination.html b/docs/interfaces/types_api_Common.Common.Pagination.html index 8296963..ab62331 100644 --- a/docs/interfaces/types_api_Common.Common.Pagination.html +++ b/docs/interfaces/types_api_Common.Common.Pagination.html @@ -1 +1 @@ -Pagination | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Pagination | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Common.Common.TimestampPeriod.html b/docs/interfaces/types_api_Common.Common.TimestampPeriod.html index 11c34c9..84c42d7 100644 --- a/docs/interfaces/types_api_Common.Common.TimestampPeriod.html +++ b/docs/interfaces/types_api_Common.Common.TimestampPeriod.html @@ -1 +1 @@ -TimestampPeriod | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +TimestampPeriod | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.BulkContactManagement.CSVImport.html b/docs/interfaces/types_api_Contact.BulkContactManagement.CSVImport.html index e72d29e..d3eff26 100644 --- a/docs/interfaces/types_api_Contact.BulkContactManagement.CSVImport.html +++ b/docs/interfaces/types_api_Contact.BulkContactManagement.CSVImport.html @@ -1 +1 @@ -CSVImport | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • CSVImport

Index

Properties

AliveAt: string
ContactsListID: number
Count: number
Current: number
DataID: number
ErrTreshold: number
Errcount: number
ID: number
ImportOptions: string
JobEnd: string
JobStart: string
RequestAt: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CSVImport | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • CSVImport

Index

Properties

AliveAt: string
ContactsListID: number
Count: number
Current: number
DataID: number
ErrTreshold: number
Errcount: number
ID: number
ImportOptions: string
JobEnd: string
JobStart: string
RequestAt: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.BulkContactManagement.ContactList.html b/docs/interfaces/types_api_Contact.BulkContactManagement.ContactList.html index fefa7ff..03b306a 100644 --- a/docs/interfaces/types_api_Contact.BulkContactManagement.ContactList.html +++ b/docs/interfaces/types_api_Contact.BulkContactManagement.ContactList.html @@ -1 +1 @@ -ContactList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.BulkContactManagement.ContactManageManyContacts.html b/docs/interfaces/types_api_Contact.BulkContactManagement.ContactManageManyContacts.html index 9ed5e89..100f18f 100644 --- a/docs/interfaces/types_api_Contact.BulkContactManagement.ContactManageManyContacts.html +++ b/docs/interfaces/types_api_Contact.BulkContactManagement.ContactManageManyContacts.html @@ -1 +1 @@ -ContactManageManyContacts | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactManageManyContacts | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.BulkContactManagement.ContactsListImportList.html b/docs/interfaces/types_api_Contact.BulkContactManagement.ContactsListImportList.html index 134cef2..f1c17b9 100644 --- a/docs/interfaces/types_api_Contact.BulkContactManagement.ContactsListImportList.html +++ b/docs/interfaces/types_api_Contact.BulkContactManagement.ContactsListImportList.html @@ -1 +1 @@ -ContactsListImportList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactsListImportList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.BulkContactManagement.Job.html b/docs/interfaces/types_api_Contact.BulkContactManagement.Job.html index a80b013..a2d9d29 100644 --- a/docs/interfaces/types_api_Contact.BulkContactManagement.Job.html +++ b/docs/interfaces/types_api_Contact.BulkContactManagement.Job.html @@ -1 +1 @@ -Job | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Job | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.Contact.Contact.html b/docs/interfaces/types_api_Contact.Contact.Contact.html index 986969d..99a664a 100644 --- a/docs/interfaces/types_api_Contact.Contact.Contact.html +++ b/docs/interfaces/types_api_Contact.Contact.Contact.html @@ -1 +1 @@ -Contact | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Contact

Index

Properties

CreatedAt: string
DeliveredCount: number
Email: string
ExclusionFromCampaignsUpdatedAt: string
ID: number
IsExcludedFromCampaigns: boolean
IsOptInPending: boolean
IsSpamComplaining: boolean
LastActivityAt: string
LastUpdateAt: string
Name: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Contact | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Contact

Index

Properties

CreatedAt: string
DeliveredCount: number
Email: string
ExclusionFromCampaignsUpdatedAt: string
ID: number
IsExcludedFromCampaigns: boolean
IsOptInPending: boolean
IsSpamComplaining: boolean
LastActivityAt: string
LastUpdateAt: string
Name: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactList.ContactList.html b/docs/interfaces/types_api_Contact.ContactList.ContactList.html index 08100a9..c758453 100644 --- a/docs/interfaces/types_api_Contact.ContactList.ContactList.html +++ b/docs/interfaces/types_api_Contact.ContactList.ContactList.html @@ -1 +1 @@ -ContactList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactProperties.ContactData.html b/docs/interfaces/types_api_Contact.ContactProperties.ContactData.html index c10856d..ac4cc06 100644 --- a/docs/interfaces/types_api_Contact.ContactProperties.ContactData.html +++ b/docs/interfaces/types_api_Contact.ContactProperties.ContactData.html @@ -1 +1 @@ -ContactData | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactData | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactProperties.ContactMetaData.html b/docs/interfaces/types_api_Contact.ContactProperties.ContactMetaData.html index 99d8a0b..b93bf32 100644 --- a/docs/interfaces/types_api_Contact.ContactProperties.ContactMetaData.html +++ b/docs/interfaces/types_api_Contact.ContactProperties.ContactMetaData.html @@ -1 +1 @@ -ContactMetaData | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactMetaData | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactProperties.ContactProperty.html b/docs/interfaces/types_api_Contact.ContactProperties.ContactProperty.html index a3731f2..971dcd8 100644 --- a/docs/interfaces/types_api_Contact.ContactProperties.ContactProperty.html +++ b/docs/interfaces/types_api_Contact.ContactProperties.ContactProperty.html @@ -1 +1 @@ -ContactProperty | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactProperty | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactSubscription.ContactsList.html b/docs/interfaces/types_api_Contact.ContactSubscription.ContactsList.html index 3d6ca38..0c83835 100644 --- a/docs/interfaces/types_api_Contact.ContactSubscription.ContactsList.html +++ b/docs/interfaces/types_api_Contact.ContactSubscription.ContactsList.html @@ -1 +1 @@ -ContactsList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactsList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactSubscription.ContactsListSignup.html b/docs/interfaces/types_api_Contact.ContactSubscription.ContactsListSignup.html index a55b2b1..f53d0a1 100644 --- a/docs/interfaces/types_api_Contact.ContactSubscription.ContactsListSignup.html +++ b/docs/interfaces/types_api_Contact.ContactSubscription.ContactsListSignup.html @@ -1 +1 @@ -ContactsListSignup | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactsListSignup | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactSubscription.ListRecipient.html b/docs/interfaces/types_api_Contact.ContactSubscription.ListRecipient.html index ab43316..8bb32f6 100644 --- a/docs/interfaces/types_api_Contact.ContactSubscription.ListRecipient.html +++ b/docs/interfaces/types_api_Contact.ContactSubscription.ListRecipient.html @@ -1 +1 @@ -ListRecipient | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ListRecipient | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactSubscription.ManageContacts.html b/docs/interfaces/types_api_Contact.ContactSubscription.ManageContacts.html index c29f720..bc78530 100644 --- a/docs/interfaces/types_api_Contact.ContactSubscription.ManageContacts.html +++ b/docs/interfaces/types_api_Contact.ContactSubscription.ManageContacts.html @@ -1 +1 @@ -ManageContacts | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ManageContacts | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactVerification.ContactsListVerification.html b/docs/interfaces/types_api_Contact.ContactVerification.ContactsListVerification.html index 172ea5d..a78a871 100644 --- a/docs/interfaces/types_api_Contact.ContactVerification.ContactsListVerification.html +++ b/docs/interfaces/types_api_Contact.ContactVerification.ContactsListVerification.html @@ -1 +1 @@ -ContactsListVerification | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface ContactsListVerification<Result, Risk>

Type parameters

Hierarchy

  • ContactsListVerification

Index

Properties

Akid: number
ContactListID: number
Count: number
Error: string
ID: number
JobEnd: string
JobStart: string
Method: string
ResponseURL: string
Status: string
Summary: VerificationSummary<Result, Risk>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactsListVerification | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface ContactsListVerification<Result, Risk>

Type parameters

Hierarchy

  • ContactsListVerification

Index

Properties

Akid: number
ContactListID: number
Count: number
Error: string
ID: number
JobEnd: string
JobStart: string
Method: string
ResponseURL: string
Status: string
Summary: VerificationSummary<Result, Risk>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Contact.ContactVerification.VerificationSummary.html b/docs/interfaces/types_api_Contact.ContactVerification.VerificationSummary.html index aa55c7a..2e4175e 100644 --- a/docs/interfaces/types_api_Contact.ContactVerification.VerificationSummary.html +++ b/docs/interfaces/types_api_Contact.ContactVerification.VerificationSummary.html @@ -1 +1 @@ -VerificationSummary | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +VerificationSummary | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_LibraryResponse.LibraryLocalResponse.html b/docs/interfaces/types_api_LibraryResponse.LibraryLocalResponse.html index fb4a378..dfa5175 100644 --- a/docs/interfaces/types_api_LibraryResponse.LibraryLocalResponse.html +++ b/docs/interfaces/types_api_LibraryResponse.LibraryLocalResponse.html @@ -1 +1 @@ -LibraryLocalResponse | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface LibraryLocalResponse<Data, Params>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +LibraryLocalResponse | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface LibraryLocalResponse<Data, Params>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_LibraryResponse.LibraryResponse.html b/docs/interfaces/types_api_LibraryResponse.LibraryResponse.html index cabc98f..2964956 100644 --- a/docs/interfaces/types_api_LibraryResponse.LibraryResponse.html +++ b/docs/interfaces/types_api_LibraryResponse.LibraryResponse.html @@ -1 +1 @@ -LibraryResponse | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +LibraryResponse | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Message.Message.Message.html b/docs/interfaces/types_api_Message.Message.Message.html index 78da4eb..e2d3507 100644 --- a/docs/interfaces/types_api_Message.Message.Message.html +++ b/docs/interfaces/types_api_Message.Message.Message.html @@ -1 +1 @@ -Message | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Properties

ArrivedAt: string
AttachmentCount: number
AttemptCount: number
CampaignID: number
ContactAlt: string
ContactID: number
Delay: number
DestinationID: number
FilterTime: number
ID: number
IsClickTracked: boolean
IsHTMLPartIncluded: boolean
IsOpenTracked: boolean
IsTextPartIncluded: boolean
IsUnsubTracked: boolean
MessageSize: number
SenderID: number
SpamassRules: string
SpamassassinScore: number
StateID: MessageState
StatePermanent: boolean
Subject: string
UUID: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Message | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

Index

Properties

ArrivedAt: string
AttachmentCount: number
AttemptCount: number
CampaignID: number
ContactAlt: string
ContactID: number
Delay: number
DestinationID: number
FilterTime: number
ID: number
IsClickTracked: boolean
IsHTMLPartIncluded: boolean
IsOpenTracked: boolean
IsTextPartIncluded: boolean
IsUnsubTracked: boolean
MessageSize: number
SenderID: number
SpamassRules: string
SpamassassinScore: number
StateID: MessageState
StatePermanent: boolean
Subject: string
UUID: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Message.Message.MessageHistory.html b/docs/interfaces/types_api_Message.Message.MessageHistory.html index 497ce4a..70a9317 100644 --- a/docs/interfaces/types_api_Message.Message.MessageHistory.html +++ b/docs/interfaces/types_api_Message.Message.MessageHistory.html @@ -1 +1 @@ -MessageHistory | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +MessageHistory | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Message.Message.MessageInformation.html b/docs/interfaces/types_api_Message.Message.MessageInformation.html index 9eec376..9a8bc5c 100644 --- a/docs/interfaces/types_api_Message.Message.MessageInformation.html +++ b/docs/interfaces/types_api_Message.Message.MessageInformation.html @@ -1 +1 @@ -MessageInformation | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface MessageInformation<Rules>

Type parameters

Hierarchy

  • MessageInformation

Index

Properties

CampaignID: number
ClickTrackedCount: number
ContactID: number
CreatedAt: string
ID: number
MessageSize: number
OpenTrackedCount: number
QueuedCount: number
SendEndAt: string
SentCount: number
SpamAssassinRules: Rules
SpamAssassinScore: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +MessageInformation | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface MessageInformation<Rules>

Type parameters

Hierarchy

  • MessageInformation

Index

Properties

CampaignID: number
ClickTrackedCount: number
ContactID: number
CreatedAt: string
ID: number
MessageSize: number
OpenTrackedCount: number
QueuedCount: number
SendEndAt: string
SentCount: number
SpamAssassinRules: Rules
SpamAssassinScore: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Message.Message.MessageTracked.html b/docs/interfaces/types_api_Message.Message.MessageTracked.html index 6d45010..b469309 100644 --- a/docs/interfaces/types_api_Message.Message.MessageTracked.html +++ b/docs/interfaces/types_api_Message.Message.MessageTracked.html @@ -1 +1 @@ -MessageTracked | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +MessageTracked | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_MessageEvent.MessageEvent.BounceStatistic.html b/docs/interfaces/types_api_MessageEvent.MessageEvent.BounceStatistic.html index 0460ca5..ff98027 100644 --- a/docs/interfaces/types_api_MessageEvent.MessageEvent.BounceStatistic.html +++ b/docs/interfaces/types_api_MessageEvent.MessageEvent.BounceStatistic.html @@ -1 +1 @@ -BounceStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +BounceStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_MessageEvent.MessageEvent.ClickStatistic.html b/docs/interfaces/types_api_MessageEvent.MessageEvent.ClickStatistic.html index c48e83c..d7d2edf 100644 --- a/docs/interfaces/types_api_MessageEvent.MessageEvent.ClickStatistic.html +++ b/docs/interfaces/types_api_MessageEvent.MessageEvent.ClickStatistic.html @@ -1 +1 @@ -ClickStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ClickStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_MessageEvent.MessageEvent.OpenInformation.html b/docs/interfaces/types_api_MessageEvent.MessageEvent.OpenInformation.html index 1e2f320..1cc7189 100644 --- a/docs/interfaces/types_api_MessageEvent.MessageEvent.OpenInformation.html +++ b/docs/interfaces/types_api_MessageEvent.MessageEvent.OpenInformation.html @@ -1 +1 @@ -OpenInformation | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +OpenInformation | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Parse.Parse.ParseRoute.html b/docs/interfaces/types_api_Parse.Parse.ParseRoute.html index 422f60b..36d4d6d 100644 --- a/docs/interfaces/types_api_Parse.Parse.ParseRoute.html +++ b/docs/interfaces/types_api_Parse.Parse.ParseRoute.html @@ -1 +1 @@ -ParseRoute | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ParseRoute | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Segmentation.Segmentation.ContactFilter.html b/docs/interfaces/types_api_Segmentation.Segmentation.ContactFilter.html index 019a1af..968264f 100644 --- a/docs/interfaces/types_api_Segmentation.Segmentation.ContactFilter.html +++ b/docs/interfaces/types_api_Segmentation.Segmentation.ContactFilter.html @@ -1 +1 @@ -ContactFilter | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactFilter | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3.Attachment.html b/docs/interfaces/types_api_SendEmail.SendEmailV3.Attachment.html index 05b1bb5..a8300e6 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3.Attachment.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3.Attachment.html @@ -1 +1 @@ -Attachment | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Attachment | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3.Recipient.html b/docs/interfaces/types_api_SendEmail.SendEmailV3.Recipient.html index 9cfe46b..dd9ec9a 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3.Recipient.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3.Recipient.html @@ -1 +1 @@ -Recipient | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Recipient | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3.ResponseSent.html b/docs/interfaces/types_api_SendEmail.SendEmailV3.ResponseSent.html index 21cee22..d12387e 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3.ResponseSent.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3.ResponseSent.html @@ -1 +1 @@ -ResponseSent | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ResponseSent | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.Attachment.html b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.Attachment.html index e11de2d..ac09115 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.Attachment.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.Attachment.html @@ -1 +1 @@ -Attachment | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Attachment | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.EmailAddressTo.html b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.EmailAddressTo.html index 456ad79..5ceeb9d 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.EmailAddressTo.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.EmailAddressTo.html @@ -1 +1 @@ -EmailAddressTo | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +EmailAddressTo | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.InlinedAttachment.html b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.InlinedAttachment.html index 4f7792d..ad4b4a6 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.InlinedAttachment.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.InlinedAttachment.html @@ -1 +1 @@ -InlinedAttachment | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +InlinedAttachment | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.Message.html b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.Message.html index 15ae0c8..7917410 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.Message.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.Message.html @@ -1 +1 @@ -Message | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface Message<Headers, Variables>

Type parameters

Hierarchy

  • Message

Index

Properties

Attachments?: SendEmailV3_1.Attachment[]
CustomCampaign?: string
CustomID?: string
DeduplicateCampaign?: boolean
EventPayload?: string
HTMLPart?: string
Headers: undefined | Headers
InlinedAttachments?: InlinedAttachment[]
Priority?: number
ReplyTo?: EmailAddressTo
Subject?: string
TemplateErrorDeliver?: boolean
TemplateErrorReporting?: EmailAddressTo
TemplateID?: number
TemplateLanguage?: boolean
TextPart?: string
TrackClicks?: TrackClicks
TrackOpens?: TrackOpens
URLTags?: string
Variables: undefined | Variables

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Message | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface Message<Headers, Variables>

Type parameters

Hierarchy

  • Message

Index

Properties

Attachments?: SendEmailV3_1.Attachment[]
CustomCampaign?: string
CustomID?: string
DeduplicateCampaign?: boolean
EventPayload?: string
HTMLPart?: string
Headers: undefined | Headers
InlinedAttachments?: InlinedAttachment[]
Priority?: number
ReplyTo?: EmailAddressTo
Subject?: string
TemplateErrorDeliver?: boolean
TemplateErrorReporting?: EmailAddressTo
TemplateID?: number
TemplateLanguage?: boolean
TextPart?: string
TrackClicks?: TrackClicks
TrackOpens?: TrackOpens
URLTags?: string
Variables: undefined | Variables

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseEmailAddressTo.html b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseEmailAddressTo.html index e3392be..6379472 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseEmailAddressTo.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseEmailAddressTo.html @@ -1 +1 @@ -ResponseEmailAddressTo | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ResponseEmailAddressTo | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseError.html b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseError.html index 5fc00f6..64a1f3a 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseError.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseError.html @@ -1 +1 @@ -ResponseError | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ResponseError | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseMessage.html b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseMessage.html index 385821a..2f1f3e2 100644 --- a/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseMessage.html +++ b/docs/interfaces/types_api_SendEmail.SendEmailV3_1.ResponseMessage.html @@ -1 +1 @@ -ResponseMessage | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ResponseMessage | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendMessage.SendMessage.Cost.html b/docs/interfaces/types_api_SendMessage.SendMessage.Cost.html index b2e70db..20529a0 100644 --- a/docs/interfaces/types_api_SendMessage.SendMessage.Cost.html +++ b/docs/interfaces/types_api_SendMessage.SendMessage.Cost.html @@ -1 +1 @@ -Cost | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Cost | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SendMessage.SendMessage.SendStatus.html b/docs/interfaces/types_api_SendMessage.SendMessage.SendStatus.html index 77c7ca5..7e3c69b 100644 --- a/docs/interfaces/types_api_SendMessage.SendMessage.SendStatus.html +++ b/docs/interfaces/types_api_SendMessage.SendMessage.SendStatus.html @@ -1 +1 @@ -SendStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SendStatus | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SenderAddressAndDomain.DNS.DNS.html b/docs/interfaces/types_api_SenderAddressAndDomain.DNS.DNS.html index be88d0b..501c3f9 100644 --- a/docs/interfaces/types_api_SenderAddressAndDomain.DNS.DNS.html +++ b/docs/interfaces/types_api_SenderAddressAndDomain.DNS.DNS.html @@ -1 +1 @@ -DNS | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • DNS

Index

Properties

DKIMRecordName: string
DKIMRecordValue: string
Domain: string
ID: number
IsCheckInProgress: boolean
LastCheckAt: string
OwnerShipToken: string
OwnerShipTokenRecordName: string
SPFRecordValue: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +DNS | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • DNS

Index

Properties

DKIMRecordName: string
DKIMRecordValue: string
Domain: string
ID: number
IsCheckInProgress: boolean
LastCheckAt: string
OwnerShipToken: string
OwnerShipTokenRecordName: string
SPFRecordValue: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SenderAddressAndDomain.DNS.DNSCheck.html b/docs/interfaces/types_api_SenderAddressAndDomain.DNS.DNSCheck.html index 1fde48f..53a5938 100644 --- a/docs/interfaces/types_api_SenderAddressAndDomain.DNS.DNSCheck.html +++ b/docs/interfaces/types_api_SenderAddressAndDomain.DNS.DNSCheck.html @@ -1 +1 @@ -DNSCheck | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +DNSCheck | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SenderAddressAndDomain.Metasender.MetaSender.html b/docs/interfaces/types_api_SenderAddressAndDomain.Metasender.MetaSender.html index 99b1f94..72674b1 100644 --- a/docs/interfaces/types_api_SenderAddressAndDomain.Metasender.MetaSender.html +++ b/docs/interfaces/types_api_SenderAddressAndDomain.Metasender.MetaSender.html @@ -1 +1 @@ -MetaSender | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +MetaSender | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SenderAddressAndDomain.Sender.Sender.html b/docs/interfaces/types_api_SenderAddressAndDomain.Sender.Sender.html index 5f54fdb..c8776e7 100644 --- a/docs/interfaces/types_api_SenderAddressAndDomain.Sender.Sender.html +++ b/docs/interfaces/types_api_SenderAddressAndDomain.Sender.Sender.html @@ -1 +1 @@ -Sender | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Sender | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_SenderAddressAndDomain.Sender.SenderValidate.html b/docs/interfaces/types_api_SenderAddressAndDomain.Sender.SenderValidate.html index 10eb978..4f1328c 100644 --- a/docs/interfaces/types_api_SenderAddressAndDomain.Sender.SenderValidate.html +++ b/docs/interfaces/types_api_SenderAddressAndDomain.Sender.SenderValidate.html @@ -1 +1 @@ -SenderValidate | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SenderValidate | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Setting.APIKeyConfiguration.ApiKey.html b/docs/interfaces/types_api_Setting.APIKeyConfiguration.ApiKey.html index 7b383e5..a865af3 100644 --- a/docs/interfaces/types_api_Setting.APIKeyConfiguration.ApiKey.html +++ b/docs/interfaces/types_api_Setting.APIKeyConfiguration.ApiKey.html @@ -1 +1 @@ -ApiKey | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ApiKey | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Setting.AccountSetting.MyProfile.html b/docs/interfaces/types_api_Setting.AccountSetting.MyProfile.html index 1f06371..e360503 100644 --- a/docs/interfaces/types_api_Setting.AccountSetting.MyProfile.html +++ b/docs/interfaces/types_api_Setting.AccountSetting.MyProfile.html @@ -1 +1 @@ -MyProfile | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • MyProfile

Index

Properties

AddressCity: string
AddressCountry: string
AddressPostalCode: string
AddressState: string
AddressStreet: string
BillingEmail: string
BirthdayAt: string
CompanyName: string
CompanyNumOfEmployees: string
ContactPhone: string
EstimatedVolume: number
Features: string
Firstname: string
ID: number
Industry: number
JobTitle: string
Lastname: string
UserID: number
VAT: number
VATNumber: string
Website: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +MyProfile | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • MyProfile

Index

Properties

AddressCity: string
AddressCountry: string
AddressPostalCode: string
AddressState: string
AddressStreet: string
BillingEmail: string
BirthdayAt: string
CompanyName: string
CompanyNumOfEmployees: string
ContactPhone: string
EstimatedVolume: number
Features: string
Firstname: string
ID: number
Industry: number
JobTitle: string
Lastname: string
UserID: number
VAT: number
VATNumber: string
Website: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Setting.AccountSetting.User.html b/docs/interfaces/types_api_Setting.AccountSetting.User.html index eff6e08..a48ecf1 100644 --- a/docs/interfaces/types_api_Setting.AccountSetting.User.html +++ b/docs/interfaces/types_api_Setting.AccountSetting.User.html @@ -1 +1 @@ -User | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • User

Index

Properties

ACL: string
CreatedAt: string
Email: string
FirstIp: string
ID: number
LastIp: string
LastLoginAt: string
Locale: string
MaxAllowedAPIKeys: number
Timezone: string
Username: string
WarnedRatelimitAt: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +User | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • User

Index

Properties

ACL: string
CreatedAt: string
Email: string
FirstIp: string
ID: number
LastIp: string
LastLoginAt: string
Locale: string
MaxAllowedAPIKeys: number
Timezone: string
Username: string
WarnedRatelimitAt: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Statistic.Statistic.CampaignOverview.html b/docs/interfaces/types_api_Statistic.Statistic.CampaignOverview.html index 41115e8..d02e88b 100644 --- a/docs/interfaces/types_api_Statistic.Statistic.CampaignOverview.html +++ b/docs/interfaces/types_api_Statistic.Statistic.CampaignOverview.html @@ -1 +1 @@ -CampaignOverview | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • CampaignOverview

Index

Properties

ClickedCount: number
DeliveredCount: number
ID: number
OpenedCount: number
ProcessedCount: number
SendTimeStart: number
Starred: boolean
Subject: string
Title: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +CampaignOverview | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • CampaignOverview

Index

Properties

ClickedCount: number
DeliveredCount: number
ID: number
OpenedCount: number
ProcessedCount: number
SendTimeStart: number
Starred: boolean
Subject: string
Title: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Statistic.Statistic.ContactStatistic.html b/docs/interfaces/types_api_Statistic.Statistic.ContactStatistic.html index 8ebe96e..b5608ed 100644 --- a/docs/interfaces/types_api_Statistic.Statistic.ContactStatistic.html +++ b/docs/interfaces/types_api_Statistic.Statistic.ContactStatistic.html @@ -1 +1 @@ -ContactStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • ContactStatistic

Index

Properties

BlockedCount: number
BouncedCount: number
ClickedCount: number
ContactID: number
DeferredCount: number
DeliveredCount: number
HardbouncedCount: number
LastActivityAt: string
MarketingContacts: number
OpenedCount: number
ProcessedCount: number
QueuedCount: number
SoftbouncedCount: number
SpamComplaintCount: number
UnsubscribedCount: number
UserMarketingContacts: number
WorkFlowExitedCount: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • ContactStatistic

Index

Properties

BlockedCount: number
BouncedCount: number
ClickedCount: number
ContactID: number
DeferredCount: number
DeliveredCount: number
HardbouncedCount: number
LastActivityAt: string
MarketingContacts: number
OpenedCount: number
ProcessedCount: number
QueuedCount: number
SoftbouncedCount: number
SpamComplaintCount: number
UnsubscribedCount: number
UserMarketingContacts: number
WorkFlowExitedCount: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Statistic.Statistic.GEOStatistic.html b/docs/interfaces/types_api_Statistic.Statistic.GEOStatistic.html index 6b2e530..a937764 100644 --- a/docs/interfaces/types_api_Statistic.Statistic.GEOStatistic.html +++ b/docs/interfaces/types_api_Statistic.Statistic.GEOStatistic.html @@ -1 +1 @@ -GEOStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +GEOStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Statistic.Statistic.LinkClickStatistic.html b/docs/interfaces/types_api_Statistic.Statistic.LinkClickStatistic.html index 099cfa4..6450740 100644 --- a/docs/interfaces/types_api_Statistic.Statistic.LinkClickStatistic.html +++ b/docs/interfaces/types_api_Statistic.Statistic.LinkClickStatistic.html @@ -1 +1 @@ -LinkClickStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +LinkClickStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Statistic.Statistic.ListRecipientStatistic.html b/docs/interfaces/types_api_Statistic.Statistic.ListRecipientStatistic.html index abf62d6..39d537f 100644 --- a/docs/interfaces/types_api_Statistic.Statistic.ListRecipientStatistic.html +++ b/docs/interfaces/types_api_Statistic.Statistic.ListRecipientStatistic.html @@ -1 +1 @@ -ListRecipientStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Type parameters

  • Data = unknown[]

Hierarchy

  • ListRecipientStatistic

Index

Properties

BlockedCount: number
BouncedCount: number
ClickedCount: number
Data: Data
DeferredCount: number
DeliveredCount: number
HardbouncedCount: number
LastActivityAt: string
ListRecipientID: number
OpenedCount: number
PreQueuedCount: number
ProcessedCount: number
QueuedCount: number
SoftbouncedCount: number
SpamComplaintCount: number
UnsubscribedCount: number
WorkFlowExitedCount: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ListRecipientStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Type parameters

  • Data = unknown[]

Hierarchy

  • ListRecipientStatistic

Index

Properties

BlockedCount: number
BouncedCount: number
ClickedCount: number
Data: Data
DeferredCount: number
DeliveredCount: number
HardbouncedCount: number
LastActivityAt: string
ListRecipientID: number
OpenedCount: number
PreQueuedCount: number
ProcessedCount: number
QueuedCount: number
SoftbouncedCount: number
SpamComplaintCount: number
UnsubscribedCount: number
WorkFlowExitedCount: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Statistic.Statistic.RecipientESPStatistic.html b/docs/interfaces/types_api_Statistic.Statistic.RecipientESPStatistic.html index c3e4a8e..75d11e4 100644 --- a/docs/interfaces/types_api_Statistic.Statistic.RecipientESPStatistic.html +++ b/docs/interfaces/types_api_Statistic.Statistic.RecipientESPStatistic.html @@ -1 +1 @@ -RecipientESPStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • RecipientESPStatistic

Index

Properties

AttemptedMessagesCount?: number
ClickThroughRate?: number
ClickedMessagesCount?: number
DeferredMessagesCount?: number
DeferredRate?: number
DeliveredMessagesCount?: number
ESPName?: string
HardBouncedMessagesCount?: number
HardBouncedRate?: number
OpenRate?: number
OpenedMessagesCount?: number
SoftBouncedMessagesCount?: number
SoftBouncedRate?: number
SpamReportsCount?: number
SpamReportsRate?: number
UnsubscribedMessagesCount?: number
UnsubscribedRate?: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +RecipientESPStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • RecipientESPStatistic

Index

Properties

AttemptedMessagesCount?: number
ClickThroughRate?: number
ClickedMessagesCount?: number
DeferredMessagesCount?: number
DeferredRate?: number
DeliveredMessagesCount?: number
ESPName?: string
HardBouncedMessagesCount?: number
HardBouncedRate?: number
OpenRate?: number
OpenedMessagesCount?: number
SoftBouncedMessagesCount?: number
SoftBouncedRate?: number
SpamReportsCount?: number
SpamReportsRate?: number
UnsubscribedMessagesCount?: number
UnsubscribedRate?: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Statistic.Statistic.StatCounter.html b/docs/interfaces/types_api_Statistic.Statistic.StatCounter.html index 7c211e1..34bbc44 100644 --- a/docs/interfaces/types_api_Statistic.Statistic.StatCounter.html +++ b/docs/interfaces/types_api_Statistic.Statistic.StatCounter.html @@ -1 +1 @@ -StatCounter | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • StatCounter

Index

Properties

APIKeyID: number
EventClickDelay: number
EventClickedCount: number
EventOpenDelay: number
EventOpenedCount: number
EventSpamCount: number
EventUnsubscribedCount: number
EventWorkflowExitedCount: number
MessageBlockedCount: number
MessageClickedCount: number
MessageDeferredCount: number
MessageHardBouncedCount: number
MessageOpenedCount: number
MessageQueuedCount: number
MessageSentCount: number
MessageSoftBouncedCount: number
MessageSpamCount: number
MessageUnsubscribedCount: number
MessageWorkFlowExitedCount: number
SourceID: number
Timeslice: string
Total: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +StatCounter | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • StatCounter

Index

Properties

APIKeyID: number
EventClickDelay: number
EventClickedCount: number
EventOpenDelay: number
EventOpenedCount: number
EventSpamCount: number
EventUnsubscribedCount: number
EventWorkflowExitedCount: number
MessageBlockedCount: number
MessageClickedCount: number
MessageDeferredCount: number
MessageHardBouncedCount: number
MessageOpenedCount: number
MessageQueuedCount: number
MessageSentCount: number
MessageSoftBouncedCount: number
MessageSpamCount: number
MessageUnsubscribedCount: number
MessageWorkFlowExitedCount: number
SourceID: number
Timeslice: string
Total: number

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Statistic.Statistic.TopLinkClicked.html b/docs/interfaces/types_api_Statistic.Statistic.TopLinkClicked.html index 378695f..2ae04ca 100644 --- a/docs/interfaces/types_api_Statistic.Statistic.TopLinkClicked.html +++ b/docs/interfaces/types_api_Statistic.Statistic.TopLinkClicked.html @@ -1 +1 @@ -TopLinkClicked | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +TopLinkClicked | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Statistic.Statistic.UserAgentStatistic.html b/docs/interfaces/types_api_Statistic.Statistic.UserAgentStatistic.html index b2c20b5..cd6dd0d 100644 --- a/docs/interfaces/types_api_Statistic.Statistic.UserAgentStatistic.html +++ b/docs/interfaces/types_api_Statistic.Statistic.UserAgentStatistic.html @@ -1 +1 @@ -UserAgentStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +UserAgentStatistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Template.Template.Headers.html b/docs/interfaces/types_api_Template.Template.Headers.html index 67c4651..0695b82 100644 --- a/docs/interfaces/types_api_Template.Template.Headers.html +++ b/docs/interfaces/types_api_Template.Template.Headers.html @@ -1 +1 @@ -Headers | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Headers | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Template.Template.Template.html b/docs/interfaces/types_api_Template.Template.Template.html index 850b3ce..40eca8d 100644 --- a/docs/interfaces/types_api_Template.Template.Template.html +++ b/docs/interfaces/types_api_Template.Template.Template.html @@ -1 +1 @@ -Template | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Template

Index

Properties

Author: string
Categories: Categories
Copyright: string
CreatedAt: string
Description: string
EditMode: Template.EditMode
ID: number
IsStarred: boolean
IsTextPartGenerationEnabled: boolean
LastUpdatedAt: string
Locale: string
Name: string
OwnerId: number
OwnerType: OwnerType
Presets: string
Previews: string
Purposes: Purposes

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Template | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • Template

Index

Properties

Author: string
Categories: Categories
Copyright: string
CreatedAt: string
Description: string
EditMode: Template.EditMode
ID: number
IsStarred: boolean
IsTextPartGenerationEnabled: boolean
LastUpdatedAt: string
Locale: string
Name: string
OwnerId: number
OwnerType: OwnerType
Presets: string
Previews: string
Purposes: Purposes

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/types_api_Webhook.Webhook.EventCallbackUrl.html b/docs/interfaces/types_api_Webhook.Webhook.EventCallbackUrl.html index 73e782c..e59ac3f 100644 --- a/docs/interfaces/types_api_Webhook.Webhook.EventCallbackUrl.html +++ b/docs/interfaces/types_api_Webhook.Webhook.EventCallbackUrl.html @@ -1 +1 @@ -EventCallbackUrl | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +EventCallbackUrl | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Property
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/client.html b/docs/modules/client.html index 6ee5443..b635084 100644 --- a/docs/modules/client.html +++ b/docs/modules/client.html @@ -1 +1 @@ -client | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module client

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +client | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module client

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/request_Request.html b/docs/modules/request_Request.html index 3544c95..6bac035 100644 --- a/docs/modules/request_Request.html +++ b/docs/modules/request_Request.html @@ -1 +1 @@ -request/Request | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module request/Request

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +request/Request | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module request/Request

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types.TArray.html b/docs/modules/types.TArray.html index ffa67d7..84d49ff 100644 --- a/docs/modules/types.TArray.html +++ b/docs/modules/types.TArray.html @@ -1 +1 @@ -TArray | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace TArray

Index

Type aliases

Pair<T, K>: [T, K]

Type parameters

  • T

  • K

Pairs<T, K>: Pair<T, K>[]

Type parameters

  • T

  • K

PossibleArray<TValue>: TValue | TValue[]

Type parameters

  • TValue

SingleType<TValue>: TValue extends infer TSingle[] ? TSingle : TValue

Type parameters

  • TValue

TKeys<T>: Exclude<keyof T, keyof unknown[]>[]

Type parameters

  • T: unknown[]

TValues<T>: T[number][]

Type parameters

  • T: unknown[]

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +TArray | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace TArray

Index

Type aliases

Pair<T, K>: [T, K]

Type parameters

  • T

  • K

Pairs<T, K>: Pair<T, K>[]

Type parameters

  • T

  • K

PossibleArray<TValue>: TValue | TValue[]

Type parameters

  • TValue

SingleType<TValue>: TValue extends infer TSingle[] ? TSingle : TValue

Type parameters

  • TValue

TKeys<T>: Exclude<keyof T, keyof unknown[]>[]

Type parameters

  • T: unknown[]

TValues<T>: T[number][]

Type parameters

  • T: unknown[]

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types.TFunction.html b/docs/modules/types.TFunction.html index e86f4fd..2ace693 100644 --- a/docs/modules/types.TFunction.html +++ b/docs/modules/types.TFunction.html @@ -1 +1 @@ -TFunction | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace TFunction

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +TFunction | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace TFunction

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types.TObject.html b/docs/modules/types.TObject.html index 163c143..4947eb7 100644 --- a/docs/modules/types.TObject.html +++ b/docs/modules/types.TObject.html @@ -1 +1 @@ -TObject | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace TObject

Index

Type aliases

MakeNil<T, TObjKeys>: { [ TKey in TObjKeys]?: T[TKey] | null }

Type parameters

  • T: Record<string, unknown>

  • TObjKeys: keyof T

MakeNilAll<T>: { [ TKey in keyof T]?: T[TKey] | null }

Type parameters

  • T: Record<string, unknown>

MakeOptional<T, K>: Omit<T, K> & Partial<T>

Type parameters

  • T

  • K: keyof T

MakeRequired<T, K>: Omit<T, K> & Required<Pick<T, K>>

Type parameters

  • T

  • K: keyof T

TKeys<T>: keyof T[]

Type parameters

  • T

TValues<TObj>: TObj extends Record<string, infer TKey> ? TKey[] : never

Type parameters

  • TObj

UnknownRec: Record<string, unknown>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +TObject | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Namespace TObject

Index

Type aliases

MakeNil<T, TObjKeys>: { [ TKey in TObjKeys]?: T[TKey] | null }

Type parameters

  • T: Record<string, unknown>

  • TObjKeys: keyof T

MakeNilAll<T>: { [ TKey in keyof T]?: T[TKey] | null }

Type parameters

  • T: Record<string, unknown>

MakeOptional<T, K>: Omit<T, K> & Partial<T>

Type parameters

  • T

  • K: keyof T

MakeRequired<T, K>: Omit<T, K> & Required<Pick<T, K>>

Type parameters

  • T

  • K: keyof T

TKeys<T>: keyof T[]

Type parameters

  • T

TValues<TObj>: TObj extends Record<string, infer TKey> ? TKey[] : never

Type parameters

  • TObj

UnknownRec: Record<string, unknown>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Campaign.DraftCampaign.html b/docs/modules/types_api_Campaign.DraftCampaign.html index 832965d..8432292 100644 --- a/docs/modules/types_api_Campaign.DraftCampaign.html +++ b/docs/modules/types_api_Campaign.DraftCampaign.html @@ -1 +1 @@ -DraftCampaign | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetCampaignDraftDetailContentResponse<Headers>: CampaignDraftDetailContentResponse<Headers>

Type parameters

GetCampaignDraftQueryParams: Partial<Pagination> & { AXTesting?: number; Campaign?: number; ContactsList?: number; DeliveredAt?: string; EditMode?: DraftCampaign.EditMode; IsArchived?: boolean; IsCampaign?: boolean; IsDeleted?: boolean; IsHandled?: boolean; IsStarred?: boolean; Modified?: boolean; NewsLetterTemplate?: number; Status?: CampaignDraftStatus; Subject?: string; Template?: number }
GetCampaignDraftResponse: CampaignDraftResponse
GetCampaignDraftScheduleResponse: CampaignDraftScheduleResponse
GetCampaignDraftStatus: CampaignDraftStatusResponse
PostCampaignDraftBody<AXTesting>: { AXFraction?: number; AXFractionName?: string; AXTesting?: AXTesting; ContactsListAlt?: string; ContactsListID?: number; Current?: number; EditMode?: DraftCampaign.EditMode; IsStarred?: boolean; IsTextPartIncluded?: boolean; Locale: string; ReplyEmail?: string; SegmentationAlt?: string; SegmentationID?: number; Sender?: string; SenderEmail?: string; SenderName?: string; Subject: string; TemplateID?: number; Title?: string }

Type parameters

Type declaration

  • Optional AXFraction?: number
  • Optional AXFractionName?: string
  • Optional AXTesting?: AXTesting
  • Optional ContactsListAlt?: string
  • Optional ContactsListID?: number
  • Optional Current?: number
  • Optional EditMode?: DraftCampaign.EditMode
  • Optional IsStarred?: boolean
  • Optional IsTextPartIncluded?: boolean
  • Locale: string
  • Optional ReplyEmail?: string
  • Optional SegmentationAlt?: string
  • Optional SegmentationID?: number
  • Optional Sender?: string
  • Optional SenderEmail?: string
  • Optional SenderName?: string
  • Subject: string
  • Optional TemplateID?: number
  • Optional Title?: string
PostCampaignDraftDetailContentBody<Headers>: Partial<CampaignDraftDetailContent<Headers>>

Type parameters

PostCampaignDraftDetailContentResponse<Headers>: CampaignDraftDetailContentResponse<Headers>

Type parameters

PostCampaignDraftResponse: CampaignDraftResponse
PostCampaignDraftScheduleBody: { Date: string }

Type declaration

  • Date: string
PostCampaignDraftScheduleResponse: CampaignDraftScheduleResponse
PostCampaignDraftSend: CampaignDraftStatusResponse
PostCampaignDraftTest: CampaignDraftStatusResponse
PostCampaignDraftTestBody: { Recipients: DraftCampaign.Recipient[] }

Type declaration

PutCampaignDraftBody<AXTesting>: Omit<Partial<PostCampaignDraftBody<AXTesting>>, "ContactsListAlt"> & { Status?: CampaignDraftStatus }

Type parameters

PutCampaignDraftResponse: CampaignDraftResponse
PutCampaignDraftScheduleBody: Partial<PostCampaignDraftScheduleBody>
PutCampaignDraftScheduleResponse: CampaignDraftScheduleResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +DraftCampaign | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetCampaignDraftDetailContentResponse<Headers>: CampaignDraftDetailContentResponse<Headers>

Type parameters

GetCampaignDraftQueryParams: Partial<Pagination> & { AXTesting?: number; Campaign?: number; ContactsList?: number; DeliveredAt?: string; EditMode?: DraftCampaign.EditMode; IsArchived?: boolean; IsCampaign?: boolean; IsDeleted?: boolean; IsHandled?: boolean; IsStarred?: boolean; Modified?: boolean; NewsLetterTemplate?: number; Status?: CampaignDraftStatus; Subject?: string; Template?: number }
GetCampaignDraftResponse: CampaignDraftResponse
GetCampaignDraftScheduleResponse: CampaignDraftScheduleResponse
GetCampaignDraftStatus: CampaignDraftStatusResponse
PostCampaignDraftBody<AXTesting>: { AXFraction?: number; AXFractionName?: string; AXTesting?: AXTesting; ContactsListAlt?: string; ContactsListID?: number; Current?: number; EditMode?: DraftCampaign.EditMode; IsStarred?: boolean; IsTextPartIncluded?: boolean; Locale: string; ReplyEmail?: string; SegmentationAlt?: string; SegmentationID?: number; Sender?: string; SenderEmail?: string; SenderName?: string; Subject: string; TemplateID?: number; Title?: string }

Type parameters

Type declaration

  • Optional AXFraction?: number
  • Optional AXFractionName?: string
  • Optional AXTesting?: AXTesting
  • Optional ContactsListAlt?: string
  • Optional ContactsListID?: number
  • Optional Current?: number
  • Optional EditMode?: DraftCampaign.EditMode
  • Optional IsStarred?: boolean
  • Optional IsTextPartIncluded?: boolean
  • Locale: string
  • Optional ReplyEmail?: string
  • Optional SegmentationAlt?: string
  • Optional SegmentationID?: number
  • Optional Sender?: string
  • Optional SenderEmail?: string
  • Optional SenderName?: string
  • Subject: string
  • Optional TemplateID?: number
  • Optional Title?: string
PostCampaignDraftDetailContentBody<Headers>: Partial<CampaignDraftDetailContent<Headers>>

Type parameters

PostCampaignDraftDetailContentResponse<Headers>: CampaignDraftDetailContentResponse<Headers>

Type parameters

PostCampaignDraftResponse: CampaignDraftResponse
PostCampaignDraftScheduleBody: { Date: string }

Type declaration

  • Date: string
PostCampaignDraftScheduleResponse: CampaignDraftScheduleResponse
PostCampaignDraftSend: CampaignDraftStatusResponse
PostCampaignDraftTest: CampaignDraftStatusResponse
PostCampaignDraftTestBody: { Recipients: DraftCampaign.Recipient[] }

Type declaration

PutCampaignDraftBody<AXTesting>: Omit<Partial<PostCampaignDraftBody<AXTesting>>, "ContactsListAlt"> & { Status?: CampaignDraftStatus }

Type parameters

PutCampaignDraftResponse: CampaignDraftResponse
PutCampaignDraftScheduleBody: Partial<PostCampaignDraftScheduleBody>
PutCampaignDraftScheduleResponse: CampaignDraftScheduleResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Campaign.SentCampaign.html b/docs/modules/types_api_Campaign.SentCampaign.html index ff3c877..17a5144 100644 --- a/docs/modules/types_api_Campaign.SentCampaign.html +++ b/docs/modules/types_api_Campaign.SentCampaign.html @@ -1 +1 @@ -SentCampaign | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetCampaignQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsListID?: number; CustomCampaign?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: CampaignType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; Period?: Period; WorkflowID?: number }
GetCampaignResponse: CampaignResponse
PutCampaignBody: { IsDeleted?: boolean; IsStarred?: boolean }

Type declaration

  • Optional IsDeleted?: boolean
  • Optional IsStarred?: boolean
PutCampaignResponse: CampaignResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SentCampaign | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetCampaignQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsListID?: number; CustomCampaign?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: CampaignType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; Period?: Period; WorkflowID?: number }
GetCampaignResponse: CampaignResponse
PutCampaignBody: { IsDeleted?: boolean; IsStarred?: boolean }

Type declaration

  • Optional IsDeleted?: boolean
  • Optional IsStarred?: boolean
PutCampaignResponse: CampaignResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Common.Common.html b/docs/modules/types_api_Common.Common.html index ecbcbff..24d9bb8 100644 --- a/docs/modules/types_api_Common.Common.html +++ b/docs/modules/types_api_Common.Common.html @@ -1 +1 @@ -Common | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Common | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Contact.BulkContactManagement.html b/docs/modules/types_api_Contact.BulkContactManagement.html index eea4cc4..ed1944b 100644 --- a/docs/modules/types_api_Contact.BulkContactManagement.html +++ b/docs/modules/types_api_Contact.BulkContactManagement.html @@ -1 +1 @@ -BulkContactManagement | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

ContactBody<Properties>: { Email: string; IsExcludedFromCampaigns?: boolean; Name?: string; Properties?: Properties }

Type parameters

Type declaration

  • Email: string
  • Optional IsExcludedFromCampaigns?: boolean
  • Optional Name?: string
  • Optional Properties?: Properties
GetCSVImportQueryParams: Partial<Pagination>
GetCSVImportResponse: CSVImportResponse
GetContactManageManyContactsResponse: ContactManageManyContactsResponse
GetContactsListImportListResponse: Common.Response<ContactsListImportList[]>
GetContactsListManageManyContactsResponse: ContactManageManyContactsResponse
PostCSVImportBody: { ContactsListID: number; DataID: number; ErrTreshold?: number; ImportOptions?: string; Method?: ImportCSVMethod }

Type declaration

  • ContactsListID: number
  • DataID: number
  • Optional ErrTreshold?: number
  • Optional ImportOptions?: string
  • Optional Method?: ImportCSVMethod
PostCSVImportResponse: CSVImportResponse
PostContactManageManyContactsBody<Properties>: { Contacts: ContactBody<Properties>[]; ContactsLists?: BulkContactManagement.ContactList[] }

Type parameters

Type declaration

PostContactManageManyContactsResponse: JobResponse
PostContactsListImportListBody: { Action: ImportListAction; ListID: number }

Type declaration

PostContactsListImportListResponse: JobResponse
PostContactsListManageManyContactsBody<Properties>: { Action: ManageContactsAction; Contacts: ContactBody<Properties>[] }

Type parameters

Type declaration

PostContactsListManageManyContactsResponse: JobResponse
PutCSVImportBody: Partial<PostCSVImportBody> & { Status?: CSVImportStatus }
PutCSVImportResponse: CSVImportResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +BulkContactManagement | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

ContactBody<Properties>: { Email: string; IsExcludedFromCampaigns?: boolean; Name?: string; Properties?: Properties }

Type parameters

Type declaration

  • Email: string
  • Optional IsExcludedFromCampaigns?: boolean
  • Optional Name?: string
  • Optional Properties?: Properties
GetCSVImportQueryParams: Partial<Pagination>
GetCSVImportResponse: CSVImportResponse
GetContactManageManyContactsResponse: ContactManageManyContactsResponse
GetContactsListImportListResponse: Common.Response<ContactsListImportList[]>
GetContactsListManageManyContactsResponse: ContactManageManyContactsResponse
PostCSVImportBody: { ContactsListID: number; DataID: number; ErrTreshold?: number; ImportOptions?: string; Method?: ImportCSVMethod }

Type declaration

  • ContactsListID: number
  • DataID: number
  • Optional ErrTreshold?: number
  • Optional ImportOptions?: string
  • Optional Method?: ImportCSVMethod
PostCSVImportResponse: CSVImportResponse
PostContactManageManyContactsBody<Properties>: { Contacts: ContactBody<Properties>[]; ContactsLists?: BulkContactManagement.ContactList[] }

Type parameters

Type declaration

PostContactManageManyContactsResponse: JobResponse
PostContactsListImportListBody: { Action: ImportListAction; ListID: number }

Type declaration

PostContactsListImportListResponse: JobResponse
PostContactsListManageManyContactsBody<Properties>: { Action: ManageContactsAction; Contacts: ContactBody<Properties>[] }

Type parameters

Type declaration

PostContactsListManageManyContactsResponse: JobResponse
PutCSVImportBody: Partial<PostCSVImportBody> & { Status?: CSVImportStatus }
PutCSVImportResponse: CSVImportResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Contact.Contact.html b/docs/modules/types_api_Contact.Contact.html index fdfc0fd..96e1632 100644 --- a/docs/modules/types_api_Contact.Contact.html +++ b/docs/modules/types_api_Contact.Contact.html @@ -1 +1 @@ -Contact | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactQueryParams: Partial<Pagination> & { Campaign?: number; ContactsList?: number; IsExcludedFromCampaigns?: boolean }
GetContactResponse: ContactResponse
PostContactBody: { Email: string; IsExcludedFromCampaigns?: boolean; Name?: string }

Type declaration

  • Email: string
  • Optional IsExcludedFromCampaigns?: boolean
  • Optional Name?: string
PostContactResponse: ContactResponse
PutContactBody: Omit<PostContactBody, "Email">
PutContactResponse: ContactResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Contact | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactQueryParams: Partial<Pagination> & { Campaign?: number; ContactsList?: number; IsExcludedFromCampaigns?: boolean }
GetContactResponse: ContactResponse
PostContactBody: { Email: string; IsExcludedFromCampaigns?: boolean; Name?: string }

Type declaration

  • Email: string
  • Optional IsExcludedFromCampaigns?: boolean
  • Optional Name?: string
PostContactResponse: ContactResponse
PutContactBody: Omit<PostContactBody, "Email">
PutContactResponse: ContactResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Contact.ContactList.html b/docs/modules/types_api_Contact.ContactList.html index 2327824..7316e75 100644 --- a/docs/modules/types_api_Contact.ContactList.html +++ b/docs/modules/types_api_Contact.ContactList.html @@ -1 +1 @@ -ContactList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactListQueryParams: Partial<Pagination> & { Address?: string; ExcludeID?: number; IsDeleted?: boolean; Name?: string }
GetContactListResponse: ContactListResponse
PostContactListBody: { IsDeleted?: boolean; Name: string }

Type declaration

  • Optional IsDeleted?: boolean
  • Name: string
PostContactListResponse: ContactListResponse
PutContactListBody: Partial<PostContactListBody>
PutContactListResponse: ContactListResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactList | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactListQueryParams: Partial<Pagination> & { Address?: string; ExcludeID?: number; IsDeleted?: boolean; Name?: string }
GetContactListResponse: ContactListResponse
PostContactListBody: { IsDeleted?: boolean; Name: string }

Type declaration

  • Optional IsDeleted?: boolean
  • Name: string
PostContactListResponse: ContactListResponse
PutContactListBody: Partial<PostContactListBody>
PutContactListResponse: ContactListResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Contact.ContactProperties.html b/docs/modules/types_api_Contact.ContactProperties.html index a5c9047..2522f08 100644 --- a/docs/modules/types_api_Contact.ContactProperties.html +++ b/docs/modules/types_api_Contact.ContactProperties.html @@ -1 +1 @@ -ContactProperties | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactDataQueryParams: Partial<Pagination> & { Campaign?: number; ContactEmail?: string; ContactsList?: number; Fields?: string; LastActivityAt?: string }
GetContactDataResponse: ContactDataResponse
GetContactMetaDataQueryParams: Partial<Pagination> & { DataType?: DataType; Namespace?: NameSpace }
GetContactMetaDataResponse: ContactMetaDataResponse
PostContactMetaDataBody: { Datatype?: DataType; Name: string; NameSpace?: NameSpace }

Type declaration

PostContactMetaDataResponse: ContactMetaDataResponse
PutContactDataBody: { Data: ContactProperty[] }

Type declaration

PutContactDataResponse: ContactDataResponse
PutContactMetaDataBody: { Datatype?: DataType; Name?: string }

Type declaration

  • Optional Datatype?: DataType
  • Optional Name?: string
PutContactMetaDataResponse: ContactMetaDataResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactProperties | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactDataQueryParams: Partial<Pagination> & { Campaign?: number; ContactEmail?: string; ContactsList?: number; Fields?: string; LastActivityAt?: string }
GetContactDataResponse: ContactDataResponse
GetContactMetaDataQueryParams: Partial<Pagination> & { DataType?: DataType; Namespace?: NameSpace }
GetContactMetaDataResponse: ContactMetaDataResponse
PostContactMetaDataBody: { Datatype?: DataType; Name: string; NameSpace?: NameSpace }

Type declaration

PostContactMetaDataResponse: ContactMetaDataResponse
PutContactDataBody: { Data: ContactProperty[] }

Type declaration

PutContactDataResponse: ContactDataResponse
PutContactMetaDataBody: { Datatype?: DataType; Name?: string }

Type declaration

  • Optional Datatype?: DataType
  • Optional Name?: string
PutContactMetaDataResponse: ContactMetaDataResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Contact.ContactSubscription.html b/docs/modules/types_api_Contact.ContactSubscription.html index 9992bb3..1dbe511 100644 --- a/docs/modules/types_api_Contact.ContactSubscription.html +++ b/docs/modules/types_api_Contact.ContactSubscription.html @@ -1 +1 @@ -ContactSubscription | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactGetContactsListsResponse: Common.Response<ContactsList[]>
GetContactsListSignupQueryParams: Partial<Pagination> & { Contact?: number; ContactsList?: number; Domain?: string; Email?: string; LocalPart?: string; MaxConfirmAt?: number; MaxSignupAt?: number; MinConfirmAt?: number; MinSignupAt?: number; SignupIp?: string; Source?: string; SourceID?: number }
GetContactsListSignupResponse: Common.Response<ContactsListSignup[]>
GetListRecipientQueryParams: Partial<Pagination> & { Blocked?: boolean; Contact?: number; ContactEmail?: string; ContactsList?: number; IgnoreDeleted?: boolean; IsExcludedFromCampaigns?: boolean; LastActivityAt?: string; ListName?: string; Opened?: boolean; Unsub?: boolean }
GetListRecipientResponse: ListRecipientResponse
PostContactManageContactsListsBody: { ContactsLists: BulkContactManagement.ContactList[] }

Type declaration

PostContactManageContactsListsResponse: Common.Response<{ ContactsLists: BulkContactManagement.ContactList[] }[]>
PostContactsListManageContactBody<Properties>: { Action: ManageContactsAction; Email: string; Name?: string; Properties?: Properties }

Type parameters

Type declaration

PostContactsListManageContactResponse<Properties>: Common.Response<ManageContacts<Properties>[]>

Type parameters

PostListRecipientBody: { ContactAlt?: string; ContactID: number; IsUnsubscribed?: boolean; ListAlt?: string; ListID: number }

Type declaration

  • Optional ContactAlt?: string
  • ContactID: number
  • Optional IsUnsubscribed?: boolean
  • Optional ListAlt?: string
  • ListID: number
PostListRecipientResponse: ListRecipientResponse
PutListRecipientBody: { IsUnsubscribed?: boolean }

Type declaration

  • Optional IsUnsubscribed?: boolean
PutListRecipientResponse: ListRecipientResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactSubscription | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactGetContactsListsResponse: Common.Response<ContactsList[]>
GetContactsListSignupQueryParams: Partial<Pagination> & { Contact?: number; ContactsList?: number; Domain?: string; Email?: string; LocalPart?: string; MaxConfirmAt?: number; MaxSignupAt?: number; MinConfirmAt?: number; MinSignupAt?: number; SignupIp?: string; Source?: string; SourceID?: number }
GetContactsListSignupResponse: Common.Response<ContactsListSignup[]>
GetListRecipientQueryParams: Partial<Pagination> & { Blocked?: boolean; Contact?: number; ContactEmail?: string; ContactsList?: number; IgnoreDeleted?: boolean; IsExcludedFromCampaigns?: boolean; LastActivityAt?: string; ListName?: string; Opened?: boolean; Unsub?: boolean }
GetListRecipientResponse: ListRecipientResponse
PostContactManageContactsListsBody: { ContactsLists: BulkContactManagement.ContactList[] }

Type declaration

PostContactManageContactsListsResponse: Common.Response<{ ContactsLists: BulkContactManagement.ContactList[] }[]>
PostContactsListManageContactBody<Properties>: { Action: ManageContactsAction; Email: string; Name?: string; Properties?: Properties }

Type parameters

Type declaration

PostContactsListManageContactResponse<Properties>: Common.Response<ManageContacts<Properties>[]>

Type parameters

PostListRecipientBody: { ContactAlt?: string; ContactID: number; IsUnsubscribed?: boolean; ListAlt?: string; ListID: number }

Type declaration

  • Optional ContactAlt?: string
  • ContactID: number
  • Optional IsUnsubscribed?: boolean
  • Optional ListAlt?: string
  • ListID: number
PostListRecipientResponse: ListRecipientResponse
PutListRecipientBody: { IsUnsubscribed?: boolean }

Type declaration

  • Optional IsUnsubscribed?: boolean
PutListRecipientResponse: ListRecipientResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Contact.ContactVerification.html b/docs/modules/types_api_Contact.ContactVerification.html index fc08dfa..660c1b6 100644 --- a/docs/modules/types_api_Contact.ContactVerification.html +++ b/docs/modules/types_api_Contact.ContactVerification.html @@ -1 +1 @@ -ContactVerification | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +ContactVerification | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Message.Message.html b/docs/modules/types_api_Message.Message.html index 3d4a3d9..7f08af1 100644 --- a/docs/modules/types_api_Message.Message.html +++ b/docs/modules/types_api_Message.Message.html @@ -1 +1 @@ -Message | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetMessageHistoryResponse: Common.Response<MessageHistory[]>
GetMessageInformationQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; MessageStatus?: MessageStatus; Period?: Period }
GetMessageInformationResponse<Rules>: Common.Response<MessageInformation<Rules>[]>

Type parameters

GetMessageQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { Campaign?: number; Contact?: number; CustomID?: string; Destination?: number; FromType?: FromType; MessageState?: MessageState; MessageStatus?: MessageStatus; PlanSubscription?: number; SenderID?: number; ShowContactAlt?: boolean; ShowCustomID?: boolean; ShowSubject?: boolean }
GetMessagesResponse: Common.Response<Message.Message[]>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Message | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetMessageHistoryResponse: Common.Response<MessageHistory[]>
GetMessageInformationQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; MessageStatus?: MessageStatus; Period?: Period }
GetMessageInformationResponse<Rules>: Common.Response<MessageInformation<Rules>[]>

Type parameters

GetMessageQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { Campaign?: number; Contact?: number; CustomID?: string; Destination?: number; FromType?: FromType; MessageState?: MessageState; MessageStatus?: MessageStatus; PlanSubscription?: number; SenderID?: number; ShowContactAlt?: boolean; ShowCustomID?: boolean; ShowSubject?: boolean }
GetMessagesResponse: Common.Response<Message.Message[]>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_MessageEvent.MessageEvent.html b/docs/modules/types_api_MessageEvent.MessageEvent.html index fdead6c..176e4e9 100644 --- a/docs/modules/types_api_MessageEvent.MessageEvent.html +++ b/docs/modules/types_api_MessageEvent.MessageEvent.html @@ -1 +1 @@ -MessageEvent | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetBounceStatisticsQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; EventFromTs?: string; EventToTs?: string; Period?: Period }
GetBounceStatisticsResponse: Common.Response<BounceStatistic[]>
GetClickStatisticsQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; EventFromTs?: string; EventToTs?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; MessageID?: number; MessageStatus?: MessageStatus; Period?: Period }
GetClickStatisticsResponse: Common.Response<ClickStatistic[]>
GetOpenInformationQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; EventFromTs?: string; EventToTs?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; MessageStatus?: MessageStatus; Period?: Period }
GetOpenInformationResponse: Common.Response<OpenInformation[]>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +MessageEvent | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetBounceStatisticsQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; EventFromTs?: string; EventToTs?: string; Period?: Period }
GetBounceStatisticsResponse: Common.Response<BounceStatistic[]>
GetClickStatisticsQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; EventFromTs?: string; EventToTs?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; MessageID?: number; MessageStatus?: MessageStatus; Period?: Period }
GetClickStatisticsResponse: Common.Response<ClickStatistic[]>
GetOpenInformationQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; EventFromTs?: string; EventToTs?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; MessageStatus?: MessageStatus; Period?: Period }
GetOpenInformationResponse: Common.Response<OpenInformation[]>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Parse.Parse.html b/docs/modules/types_api_Parse.Parse.html index 7a7029e..2f9cf47 100644 --- a/docs/modules/types_api_Parse.Parse.html +++ b/docs/modules/types_api_Parse.Parse.html @@ -1 +1 @@ -Parse | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Parse | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_SMSMessage.SMSMessage.html b/docs/modules/types_api_SMSMessage.SMSMessage.html index a4051b8..f9340cb 100644 --- a/docs/modules/types_api_SMSMessage.SMSMessage.html +++ b/docs/modules/types_api_SMSMessage.SMSMessage.html @@ -1 +1 @@ -SMSMessage | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetSMSCountQueryParams: Partial<TimestampPeriod> & { StatusCode?: string[]; To?: string }
GetSMSCountResponse: { Count: number }

Type declaration

  • Count: number
GetSMSExportResponse: SMSExport
GetSMSQueryParams: Partial<TimestampPeriod> & Partial<Pick<Pagination, "Limit" | "Offset">> & { IDs?: string; StatusCode?: string[]; To?: string }
GetSMSResponse: { Data: SMS[] }

Type declaration

PostSMSExportBody: TimestampPeriod
PostSMSExportResponse: SMSExport
SMS: { Cost: Cost; CreationTS: number; From: string; MessageID: string | number; SMSCount: number; SentTS: number; Status: SendStatus; To: string }

Type declaration

  • Cost: Cost
  • CreationTS: number
  • From: string
  • MessageID: string | number
  • SMSCount: number
  • SentTS: number
  • Status: SendStatus
  • To: string
SMSExport: { CreationTS: number; ExpirationTS: number; ID: number; Status: SendStatus; URL: string }

Type declaration

  • CreationTS: number
  • ExpirationTS: number
  • ID: number
  • Status: SendStatus
  • URL: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SMSMessage | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetSMSCountQueryParams: Partial<TimestampPeriod> & { StatusCode?: string[]; To?: string }
GetSMSCountResponse: { Count: number }

Type declaration

  • Count: number
GetSMSExportResponse: SMSExport
GetSMSQueryParams: Partial<TimestampPeriod> & Partial<Pick<Pagination, "Limit" | "Offset">> & { IDs?: string; StatusCode?: string[]; To?: string }
GetSMSResponse: { Data: SMS[] }

Type declaration

PostSMSExportBody: TimestampPeriod
PostSMSExportResponse: SMSExport
SMS: { Cost: Cost; CreationTS: number; From: string; MessageID: string | number; SMSCount: number; SentTS: number; Status: SendStatus; To: string }

Type declaration

  • Cost: Cost
  • CreationTS: number
  • From: string
  • MessageID: string | number
  • SMSCount: number
  • SentTS: number
  • Status: SendStatus
  • To: string
SMSExport: { CreationTS: number; ExpirationTS: number; ID: number; Status: SendStatus; URL: string }

Type declaration

  • CreationTS: number
  • ExpirationTS: number
  • ID: number
  • Status: SendStatus
  • URL: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Segmentation.Segmentation.html b/docs/modules/types_api_Segmentation.Segmentation.html index 60ee63c..0921f95 100644 --- a/docs/modules/types_api_Segmentation.Segmentation.html +++ b/docs/modules/types_api_Segmentation.Segmentation.html @@ -1 +1 @@ -Segmentation | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactFilterQueryParams: Partial<Pagination> & { ShowDeleted?: boolean; Status?: SegmentStatus }
GetContactFilterResponse: ContactFilterResponse
PostContactFilterBody: { Description?: string; Expression: string; Name: string }

Type declaration

  • Optional Description?: string
  • Expression: string
  • Name: string
PostContactFilterResponse: ContactFilterResponse
PutContactFilterBody: Partial<PostContactFilterBody> & { Status?: SegmentStatus }
PutContactFilterResponse: ContactFilterResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Segmentation | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetContactFilterQueryParams: Partial<Pagination> & { ShowDeleted?: boolean; Status?: SegmentStatus }
GetContactFilterResponse: ContactFilterResponse
PostContactFilterBody: { Description?: string; Expression: string; Name: string }

Type declaration

  • Optional Description?: string
  • Expression: string
  • Name: string
PostContactFilterResponse: ContactFilterResponse
PutContactFilterBody: Partial<PostContactFilterBody> & { Status?: SegmentStatus }
PutContactFilterResponse: ContactFilterResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_SendEmail.SendEmailV3.html b/docs/modules/types_api_SendEmail.SendEmailV3.html index 291872f..a800a30 100644 --- a/docs/modules/types_api_SendEmail.SendEmailV3.html +++ b/docs/modules/types_api_SendEmail.SendEmailV3.html @@ -1 +1 @@ -SendEmailV3 | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

Body<Headers, Vars>: BodyMj & { Attachments?: SendEmailV3.Attachment[]; Bcc?: string; Cc?: string; FromEmail?: string; FromName?: string; Headers?: Headers; Html-part?: string; Inline_attachments?: SendEmailV3.Attachment[]; Recipients?: SendEmailV3.Recipient[]; Sender?: boolean; Subject?: string; Text-part?: string; To?: string; Vars?: Vars }

Type parameters

BodyMj: { Mj-CustomID?: string; Mj-EventPayload?: string; Mj-TemplateErrorDeliver?: MjTemplateErrorDeliver; Mj-TemplateErrorReporting?: string; Mj-TemplateID?: number; Mj-TemplateLanguage?: boolean; Mj-campaign?: string; Mj-deduplicatecampaign?: MjDeduplicateCampaign; Mj-prio?: number; Mj-trackopen?: MjTrackOpen }

Type declaration

  • Optional Mj-CustomID?: string
  • Optional Mj-EventPayload?: string
  • Optional Mj-TemplateErrorDeliver?: MjTemplateErrorDeliver
  • Optional Mj-TemplateErrorReporting?: string
  • Optional Mj-TemplateID?: number
  • Optional Mj-TemplateLanguage?: boolean
  • Optional Mj-campaign?: string
  • Optional Mj-deduplicatecampaign?: MjDeduplicateCampaign
  • Optional Mj-prio?: number
  • Optional Mj-trackopen?: MjTrackOpen
MjDeduplicateCampaign: 0 | 1
MjTemplateErrorDeliver: "0" | "deliver"
MjTrackOpen: 0 | 1 | 2
Response: { Sent: ResponseSent[] }

Type declaration

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SendEmailV3 | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

Body<Headers, Vars>: BodyMj & { Attachments?: SendEmailV3.Attachment[]; Bcc?: string; Cc?: string; FromEmail?: string; FromName?: string; Headers?: Headers; Html-part?: string; Inline_attachments?: SendEmailV3.Attachment[]; Recipients?: SendEmailV3.Recipient[]; Sender?: boolean; Subject?: string; Text-part?: string; To?: string; Vars?: Vars }

Type parameters

BodyMj: { Mj-CustomID?: string; Mj-EventPayload?: string; Mj-TemplateErrorDeliver?: MjTemplateErrorDeliver; Mj-TemplateErrorReporting?: string; Mj-TemplateID?: number; Mj-TemplateLanguage?: boolean; Mj-campaign?: string; Mj-deduplicatecampaign?: MjDeduplicateCampaign; Mj-prio?: number; Mj-trackopen?: MjTrackOpen }

Type declaration

  • Optional Mj-CustomID?: string
  • Optional Mj-EventPayload?: string
  • Optional Mj-TemplateErrorDeliver?: MjTemplateErrorDeliver
  • Optional Mj-TemplateErrorReporting?: string
  • Optional Mj-TemplateID?: number
  • Optional Mj-TemplateLanguage?: boolean
  • Optional Mj-campaign?: string
  • Optional Mj-deduplicatecampaign?: MjDeduplicateCampaign
  • Optional Mj-prio?: number
  • Optional Mj-trackopen?: MjTrackOpen
MjDeduplicateCampaign: 0 | 1
MjTemplateErrorDeliver: "0" | "deliver"
MjTrackOpen: 0 | 1 | 2
Response: { Sent: ResponseSent[] }

Type declaration

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_SendEmail.SendEmailV3_1.html b/docs/modules/types_api_SendEmail.SendEmailV3_1.html index 8d09cb6..20bfc1d 100644 --- a/docs/modules/types_api_SendEmail.SendEmailV3_1.html +++ b/docs/modules/types_api_SendEmail.SendEmailV3_1.html @@ -1 +1 @@ -SendEmailV3_1 | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SendEmailV3_1 | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_SendMessage.SendMessage.html b/docs/modules/types_api_SendMessage.SendMessage.html index 2b97b4a..c9743ee 100644 --- a/docs/modules/types_api_SendMessage.SendMessage.html +++ b/docs/modules/types_api_SendMessage.SendMessage.html @@ -1 +1 @@ -SendMessage | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Interfaces

Type aliases

Type aliases

Body: { From: string; Text: string; To: string }

Type declaration

  • From: string
  • Text: string
  • To: string
Response: { Cost: Cost; CreationTS: number; From: string; MessageID: string | number; SMSCount: number; SentTS: number; Status: SendStatus; Text: string; To: string }

Type declaration

  • Cost: Cost
  • CreationTS: number
  • From: string
  • MessageID: string | number
  • SMSCount: number
  • SentTS: number
  • Status: SendStatus
  • Text: string
  • To: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +SendMessage | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Interfaces

Type aliases

Type aliases

Body: { From: string; Text: string; To: string }

Type declaration

  • From: string
  • Text: string
  • To: string
Response: { Cost: Cost; CreationTS: number; From: string; MessageID: string | number; SMSCount: number; SentTS: number; Status: SendStatus; Text: string; To: string }

Type declaration

  • Cost: Cost
  • CreationTS: number
  • From: string
  • MessageID: string | number
  • SMSCount: number
  • SentTS: number
  • Status: SendStatus
  • Text: string
  • To: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_SenderAddressAndDomain.DNS.html b/docs/modules/types_api_SenderAddressAndDomain.DNS.html index badff30..271307d 100644 --- a/docs/modules/types_api_SenderAddressAndDomain.DNS.html +++ b/docs/modules/types_api_SenderAddressAndDomain.DNS.html @@ -1 +1 @@ -DNS | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +DNS | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_SenderAddressAndDomain.Metasender.html b/docs/modules/types_api_SenderAddressAndDomain.Metasender.html index 9fde773..3d57454 100644 --- a/docs/modules/types_api_SenderAddressAndDomain.Metasender.html +++ b/docs/modules/types_api_SenderAddressAndDomain.Metasender.html @@ -1 +1 @@ -Metasender | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetMetaSenderQueryParams: Partial<Pagination> & { DNS?: number }
GetMetaSenderResponse: MetaSenderResponse
PostMetaSenderBody: { Description?: string; Email: string }

Type declaration

  • Optional Description?: string
  • Email: string
PostMetaSenderResponse: MetaSenderResponse
PutMetaSenderBody: Omit<PostMetaSenderBody, "Email">
PutMetaSenderResponse: MetaSenderResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Metasender | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetMetaSenderQueryParams: Partial<Pagination> & { DNS?: number }
GetMetaSenderResponse: MetaSenderResponse
PostMetaSenderBody: { Description?: string; Email: string }

Type declaration

  • Optional Description?: string
  • Email: string
PostMetaSenderResponse: MetaSenderResponse
PutMetaSenderBody: Omit<PostMetaSenderBody, "Email">
PutMetaSenderResponse: MetaSenderResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_SenderAddressAndDomain.Sender.html b/docs/modules/types_api_SenderAddressAndDomain.Sender.html index 724a794..13c71c4 100644 --- a/docs/modules/types_api_SenderAddressAndDomain.Sender.html +++ b/docs/modules/types_api_SenderAddressAndDomain.Sender.html @@ -1 +1 @@ -Sender | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetSenderQueryParams: Partial<Pagination> & { DnsID?: number; Domain?: string; Email?: string; IsDomainSender?: boolean; LocalPart?: string; ShowDeleted?: boolean; Status?: SenderStatus }
GetSenderResponse: SenderResponse
PostSenderBody: { Email: string; EmailType?: EmailType; IsDefaultSender?: boolean; Name?: string }

Type declaration

  • Email: string
  • Optional EmailType?: EmailType
  • Optional IsDefaultSender?: boolean
  • Optional Name?: string
PostSenderResponse: SenderResponse
PostSenderValidateResponse: Common.Response<SenderValidate[]>
PutSenderBody: Omit<PostSenderBody, "Email">
PutSenderResponse: SenderResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Sender | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetSenderQueryParams: Partial<Pagination> & { DnsID?: number; Domain?: string; Email?: string; IsDomainSender?: boolean; LocalPart?: string; ShowDeleted?: boolean; Status?: SenderStatus }
GetSenderResponse: SenderResponse
PostSenderBody: { Email: string; EmailType?: EmailType; IsDefaultSender?: boolean; Name?: string }

Type declaration

  • Email: string
  • Optional EmailType?: EmailType
  • Optional IsDefaultSender?: boolean
  • Optional Name?: string
PostSenderResponse: SenderResponse
PostSenderValidateResponse: Common.Response<SenderValidate[]>
PutSenderBody: Omit<PostSenderBody, "Email">
PutSenderResponse: SenderResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Setting.APIKeyConfiguration.html b/docs/modules/types_api_Setting.APIKeyConfiguration.html index 35542c4..d4a76d6 100644 --- a/docs/modules/types_api_Setting.APIKeyConfiguration.html +++ b/docs/modules/types_api_Setting.APIKeyConfiguration.html @@ -1 +1 @@ -APIKeyConfiguration | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetApiKeyQueryParams: Partial<Pagination> & { APIKey?: string; IsActive?: boolean; IsMaster?: boolean; Name?: string }
GetApiKeyResponse: ApiKeyResponse
PostApiKeyBody: { ACL?: string; IsActive?: boolean; Name: string }

Type declaration

  • Optional ACL?: string
  • Optional IsActive?: boolean
  • Name: string
PostApiKeyResponse: ApiKeyResponse
PutApiKeyBody: Partial<PostApiKeyBody>
PutApiKeyResponse: ApiKeyResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +APIKeyConfiguration | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetApiKeyQueryParams: Partial<Pagination> & { APIKey?: string; IsActive?: boolean; IsMaster?: boolean; Name?: string }
GetApiKeyResponse: ApiKeyResponse
PostApiKeyBody: { ACL?: string; IsActive?: boolean; Name: string }

Type declaration

  • Optional ACL?: string
  • Optional IsActive?: boolean
  • Name: string
PostApiKeyResponse: ApiKeyResponse
PutApiKeyBody: Partial<PostApiKeyBody>
PutApiKeyResponse: ApiKeyResponse

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Setting.AccountSetting.html b/docs/modules/types_api_Setting.AccountSetting.html index 5447e03..af31aaf 100644 --- a/docs/modules/types_api_Setting.AccountSetting.html +++ b/docs/modules/types_api_Setting.AccountSetting.html @@ -1 +1 @@ -AccountSetting | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +AccountSetting | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Statistic.Statistic.html b/docs/modules/types_api_Statistic.Statistic.html index df0d299..2279a77 100644 --- a/docs/modules/types_api_Statistic.Statistic.html +++ b/docs/modules/types_api_Statistic.Statistic.html @@ -1 +1 @@ -Statistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetCampaignOverviewQueryParams: Partial<Pagination> & { All?: boolean; Archived?: boolean; Drafts?: boolean; ID?: number; IDType?: CampaignOverviewIDType; Programmed?: boolean; Sent?: boolean; Starred?: boolean; Subject?: string }
GetCampaignOverviewResponse: Common.Response<CampaignOverview[]>
GetContactStatisticsQueryParams: Partial<Pagination> & { Blocked?: boolean; Bounced?: boolean; Click?: boolean; Deferred?: boolean; Hardbounced?: boolean; LastActivityAt?: string; MaxLastActivityAt?: string; MinLastActivityAt?: string; Open?: boolean; Queued?: boolean; Sent?: boolean; Softbounced?: boolean; Spam?: boolean; Unsubscribed?: boolean }
GetContactStatisticsResponse: Common.Response<ContactStatistic[]>
GetGEOStatisticsQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; MessageStatus?: MessageStatus; Period?: Period }
GetGEOStatisticsResponse: Common.Response<GEOStatistic[]>
GetLinkClickStatisticsQueryParams: Partial<Pagination> & { CampaignID: number }
GetLinkClickStatisticsResponse: Common.Response<LinkClickStatistic[]>
GetListRecipientStatisticsQueryParams: Partial<Pagination> & { Blocked?: boolean; Bounced?: boolean; Click?: boolean; Contact?: number; ContactsList?: number; IsExcludedFromCampaigns?: boolean; IsUnsubscribed?: boolean; LastActivityAt?: string; MaxLastActivityAt?: string; MaxUnsubscribedAt?: string; MinLastActivityAt?: string; MinUnsubscribedAt?: string; Open?: boolean; Queued?: boolean; Sent?: boolean; ShowExtraData?: boolean; Spam?: boolean; TimeZone?: string; Unsubscribed?: boolean }
GetListRecipientStatisticsResponse<Data>: Common.Response<ListRecipientStatistic<Data>[]>

Type parameters

  • Data = unknown[]

GetRecipientESPStatisticsQueryParams: GetLinkClickStatisticsQueryParams & { ESP_Name?: number }
GetRecipientESPStatisticsResponse: Common.Response<RecipientESPStatistic[]>
GetStatCountersQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CounterResolution: CounterResolution; CounterSource: CounterSource; CounterTiming: CounterTiming; SourceID?: number }
GetStatCountersResponse: Common.Response<StatCounter[]>
GetTopLinkClickedQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { ActualClicks?: boolean; CampaignID?: number; Contact?: number; ContactsList?: number; CustomCampaign?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; Message?: number; Period?: Period }
GetTopLinkClickedResponse: Common.Response<TopLinkClicked[]>
GetUserAgentStatisticsQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; Event?: EmailEvent; ExcludePlatform?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; Period?: Period; Platform?: string }
GetUserAgentStatisticsResponse: Common.Response<UserAgentStatistic[]>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Statistic | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetCampaignOverviewQueryParams: Partial<Pagination> & { All?: boolean; Archived?: boolean; Drafts?: boolean; ID?: number; IDType?: CampaignOverviewIDType; Programmed?: boolean; Sent?: boolean; Starred?: boolean; Subject?: string }
GetCampaignOverviewResponse: Common.Response<CampaignOverview[]>
GetContactStatisticsQueryParams: Partial<Pagination> & { Blocked?: boolean; Bounced?: boolean; Click?: boolean; Deferred?: boolean; Hardbounced?: boolean; LastActivityAt?: string; MaxLastActivityAt?: string; MinLastActivityAt?: string; Open?: boolean; Queued?: boolean; Sent?: boolean; Softbounced?: boolean; Spam?: boolean; Unsubscribed?: boolean }
GetContactStatisticsResponse: Common.Response<ContactStatistic[]>
GetGEOStatisticsQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; MessageStatus?: MessageStatus; Period?: Period }
GetGEOStatisticsResponse: Common.Response<GEOStatistic[]>
GetLinkClickStatisticsQueryParams: Partial<Pagination> & { CampaignID: number }
GetLinkClickStatisticsResponse: Common.Response<LinkClickStatistic[]>
GetListRecipientStatisticsQueryParams: Partial<Pagination> & { Blocked?: boolean; Bounced?: boolean; Click?: boolean; Contact?: number; ContactsList?: number; IsExcludedFromCampaigns?: boolean; IsUnsubscribed?: boolean; LastActivityAt?: string; MaxLastActivityAt?: string; MaxUnsubscribedAt?: string; MinLastActivityAt?: string; MinUnsubscribedAt?: string; Open?: boolean; Queued?: boolean; Sent?: boolean; ShowExtraData?: boolean; Spam?: boolean; TimeZone?: string; Unsubscribed?: boolean }
GetListRecipientStatisticsResponse<Data>: Common.Response<ListRecipientStatistic<Data>[]>

Type parameters

  • Data = unknown[]

GetRecipientESPStatisticsQueryParams: GetLinkClickStatisticsQueryParams & { ESP_Name?: number }
GetRecipientESPStatisticsResponse: Common.Response<RecipientESPStatistic[]>
GetStatCountersQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CounterResolution: CounterResolution; CounterSource: CounterSource; CounterTiming: CounterTiming; SourceID?: number }
GetStatCountersResponse: Common.Response<StatCounter[]>
GetTopLinkClickedQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { ActualClicks?: boolean; CampaignID?: number; Contact?: number; ContactsList?: number; CustomCampaign?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; Message?: number; Period?: Period }
GetTopLinkClickedResponse: Common.Response<TopLinkClicked[]>
GetUserAgentStatisticsQueryParams: Partial<TimestampPeriod> & Partial<Pagination> & { CampaignID?: number; ContactsList?: number; CustomCampaign?: string; Event?: EmailEvent; ExcludePlatform?: string; From?: string; FromDomain?: string; FromID?: number; FromType?: FromType; IsDeleted?: boolean; IsNewsletterTool?: boolean; IsStarred?: boolean; Period?: Period; Platform?: string }
GetUserAgentStatisticsResponse: Common.Response<UserAgentStatistic[]>

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Template.Template.html b/docs/modules/types_api_Template.Template.html index cbc941f..e879989 100644 --- a/docs/modules/types_api_Template.Template.html +++ b/docs/modules/types_api_Template.Template.html @@ -1 +1 @@ -Template | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetTemplateDetailContentResponse: TemplateDetailContentResponse
GetTemplateQueryParams: Partial<Pagination> & { Categories?: string; CategoriesSelectionMethod?: CategoriesSelectionMethod; EditMode?: Template.EditMode; Name?: string; OwnerType?: OwnerType; Purposes?: Purposes; PurposesSelectionMethod?: PurposesSelectionMethod }
GetTemplateResponse: TemplateResponse
PostTemplateBody: Partial<Omit<Template, "Name" | "ID" | "OwnerId" | "Previews" | "CreatedAt" | "LastUpdatedAt">> & { Name: string }
PostTemplateDetailContentBody: Partial<Omit<TemplateDetailContent, "Headers">> & { Headers?: Partial<Headers> }
PostTemplateDetailContentResponse: TemplateDetailContentResponse
PostTemplateResponse: TemplateResponse
PutTemplateBody: Partial<PostTemplateBody>
PutTemplateDetailContentBody: PostTemplateDetailContentBody
PutTemplateDetailContentResponse: TemplateDetailContentResponse
PutTemplateResponse: TemplateResponse
TemplateDetailContent: { Headers: Headers; Html-part: string; MJMLContent: string; Text-part: string }

Type declaration

  • Headers: Headers
  • Html-part: string
  • MJMLContent: string
  • Text-part: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Template | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetTemplateDetailContentResponse: TemplateDetailContentResponse
GetTemplateQueryParams: Partial<Pagination> & { Categories?: string; CategoriesSelectionMethod?: CategoriesSelectionMethod; EditMode?: Template.EditMode; Name?: string; OwnerType?: OwnerType; Purposes?: Purposes; PurposesSelectionMethod?: PurposesSelectionMethod }
GetTemplateResponse: TemplateResponse
PostTemplateBody: Partial<Omit<Template, "Name" | "ID" | "OwnerId" | "Previews" | "CreatedAt" | "LastUpdatedAt">> & { Name: string }
PostTemplateDetailContentBody: Partial<Omit<TemplateDetailContent, "Headers">> & { Headers?: Partial<Headers> }
PostTemplateDetailContentResponse: TemplateDetailContentResponse
PostTemplateResponse: TemplateResponse
PutTemplateBody: Partial<PostTemplateBody>
PutTemplateDetailContentBody: PostTemplateDetailContentBody
PutTemplateDetailContentResponse: TemplateDetailContentResponse
PutTemplateResponse: TemplateResponse
TemplateDetailContent: { Headers: Headers; Html-part: string; MJMLContent: string; Text-part: string }

Type declaration

  • Headers: Headers
  • Html-part: string
  • MJMLContent: string
  • Text-part: string

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/types_api_Webhook.Webhook.html b/docs/modules/types_api_Webhook.Webhook.html index 5afc63e..11b65cf 100644 --- a/docs/modules/types_api_Webhook.Webhook.html +++ b/docs/modules/types_api_Webhook.Webhook.html @@ -1 +1 @@ -Webhook | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetEventCallbackUrlQueryParams: Partial<Pagination> & { Backup?: boolean; EventType?: EventTypeValue; Status?: string; Version?: Version }
GetEventCallbackUrlResponse: EventCallbackUrlResponse
PostEventCallbackUrlBody: { EventType?: Webhook.EventType; IsBackup?: boolean; Status?: Status; Url: string }

Type declaration

PostEventCallbackUrlResponse: EventCallbackUrlResponse
PutEventCallbackUrlBody: Partial<PostEventCallbackUrlBody>
PutEventCallbackUrlResponse: EventCallbackUrlResponse
Version: 1 | 2

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +Webhook | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Index

Type aliases

GetEventCallbackUrlQueryParams: Partial<Pagination> & { Backup?: boolean; EventType?: EventTypeValue; Status?: string; Version?: Version }
GetEventCallbackUrlResponse: EventCallbackUrlResponse
PostEventCallbackUrlBody: { EventType?: Webhook.EventType; IsBackup?: boolean; Status?: Status; Url: string }

Type declaration

PostEventCallbackUrlResponse: EventCallbackUrlResponse
PutEventCallbackUrlBody: Partial<PostEventCallbackUrlBody>
PutEventCallbackUrlResponse: EventCallbackUrlResponse
Version: 1 | 2

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/utils_isNil.html b/docs/modules/utils_isNil.html index 9dd745e..16ac458 100644 --- a/docs/modules/utils_isNil.html +++ b/docs/modules/utils_isNil.html @@ -1 +1 @@ -utils/isNil | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/isNil

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +utils/isNil | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/isNil

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/utils_isNull.html b/docs/modules/utils_isNull.html index 46d061c..3f509bf 100644 --- a/docs/modules/utils_isNull.html +++ b/docs/modules/utils_isNull.html @@ -1 +1 @@ -utils/isNull | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/isNull

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +utils/isNull | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/isNull

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/utils_isPureObject.html b/docs/modules/utils_isPureObject.html index 3538b8f..9032cc4 100644 --- a/docs/modules/utils_isPureObject.html +++ b/docs/modules/utils_isPureObject.html @@ -1 +1 @@ -utils/isPureObject | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/isPureObject

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +utils/isPureObject | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/isPureObject

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/utils_isUndefined.html b/docs/modules/utils_isUndefined.html index 41d8b17..2032edb 100644 --- a/docs/modules/utils_isUndefined.html +++ b/docs/modules/utils_isUndefined.html @@ -1 +1 @@ -utils/isUndefined | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/isUndefined

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +utils/isUndefined | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/isUndefined

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules/utils_setValueIfNotNil.html b/docs/modules/utils_setValueIfNotNil.html index 61fc3db..73f7c17 100644 --- a/docs/modules/utils_setValueIfNotNil.html +++ b/docs/modules/utils_setValueIfNotNil.html @@ -1 +1 @@ -utils/setValueIfNotNil | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/setValueIfNotNil

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +utils/setValueIfNotNil | node-mailjet
Options
All
  • Public
  • Public/Protected
  • All
Menu

Module utils/setValueIfNotNil

Legend

  • Namespace
  • Function
  • Type alias
  • Interface
  • Interface with type parameter
  • Enumeration
  • Class

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5f23719..3edd89c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "node-mailjet", - "version": "6.0.3", + "version": "6.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "node-mailjet", - "version": "6.0.3", + "version": "6.0.4", "license": "MIT", "dependencies": { "axios": "^0.27.2", diff --git a/package.json b/package.json index 5a2d55f..73da001 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "node-mailjet", - "version": "6.0.3", + "version": "6.0.4", "main": "./dist/mailjet.node.js", "browser": "./dist/mailjet.web.js", "types": "./dist/declarations/index.d.ts",