Comparing version 4.1.0 to 4.1.1
@@ -1,2 +0,2 @@ | ||
import { RequestOptions, ObjectRequestOptions, ArrayRequestOptions, QueryParams, FilterDataTypes, FilterOperators, RequestBody, ResponseBody, ObjectResponseBody, ArrayResponseBody } from "./models"; | ||
import { RequestOptions, ObjectRequestOptions, ArrayRequestOptions, QueryParams, Filter, RequestBody, ResponseBody, ObjectResponseBody, ArrayResponseBody } from "./models"; | ||
export = domo; | ||
@@ -39,23 +39,3 @@ declare class domo { | ||
static navigate(url: string, isNewWindow: boolean): void; | ||
static filterContainer(filters: ({ | ||
column: string; | ||
operator: FilterOperators; | ||
values: (string | number | Date)[]; | ||
dataType: FilterDataTypes; | ||
} | { | ||
column: string; | ||
operator: FilterOperators; | ||
values: Date[]; | ||
dataType: "DATE" | "DATETIME"; | ||
} | { | ||
column: string; | ||
operator: FilterOperators; | ||
values: number[]; | ||
dataType: "NUMERIC"; | ||
} | { | ||
column: string; | ||
operator: FilterOperators; | ||
values: string[]; | ||
dataType: "STRING"; | ||
})[]): void; | ||
static filterContainer(filters: Filter[] | null): void; | ||
static env: QueryParams; | ||
@@ -62,0 +42,0 @@ static __util: { |
/*! | ||
* domo.js v4.1.0 | ||
* domo.js v4.1.1 | ||
* Optional utility library for Custom Apps | ||
*/ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.domo=t():e.domo=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);t.RequestMethods=r.RequestMethods;var o=n(3);t.DataFormats=o.DataFormats},function(e,t,n){"use strict";var r=n(0),o=n(4),a=function(){function e(){}return e.post=function(e,t,n){return i(r.RequestMethods.POST,e,n,!0,t)},e.put=function(e,t,n){return i(r.RequestMethods.PUT,e,n,!0,t)},e.get=function(e,t){return i(r.RequestMethods.GET,e,t)},e.delete=function(e,t){return i(r.RequestMethods.DELETE,e,t)},e.getAll=function(t,n){return Promise.all(t.map((function(t){return e.get(t,n)})))},e.onDataUpdate=function(e){function t(t){if(c(t.origin)&&"string"==typeof t.data&&t.data.length>0)try{var n=JSON.parse(t.data);if(!n.hasOwnProperty("alias"))return;var r=n.alias,o=JSON.stringify({event:"ack",alias:r});t.source instanceof Window&&t.source.postMessage(o,t.origin),e(r)}catch(e){console.warn("There was an error in onDataUpdate! It may be that our event listener caught a message from another source and tried to parse it, so your update still may have worked. If you would like more info, here is the error: \n",e)}}return window.addEventListener("message",t),function(){return window.removeEventListener("message",t)}},e.navigate=function(e,t){var n=JSON.stringify({event:"navigate",url:e,isNewWindow:t});window.parent.postMessage(n,"*")},e.filterContainer=function(e){var t=window.navigator.userAgent.toLowerCase(),n=/safari/.test(t),r=/iphone|ipod|ipad/.test(t),o=JSON.stringify({event:"filter",filter:e.map((function(e){return{columnName:e.column,operator:e.operator,values:e.values,dataType:e.dataType}}))});r&&!n?window.webkit.messageHandlers.domofilter.postMessage(e.map((function(e){return{column:e.column,operand:e.operator,values:e.values,dataType:e.dataType}}))):window.parent.postMessage(o,"*")},e.connected=!1,e.listeners={onFiltersUpdate:[]},e.connect=function(){e.connected||(e.connected=!0,e.channel=new MessageChannel,window.parent.postMessage(JSON.stringify({event:"subscribe"}),"*",[e.channel.port2]))},e.onFiltersUpdate=function(t){e.connect();var n=e.listeners.onFiltersUpdate.push(t)-1;return e.channel.port1.onmessage=function(t){var n=t.ports[0];void 0!==n&&"filtersUpdated"===t.data.event&&e.listeners.onFiltersUpdate.length>0&&(n.postMessage({}),e.listeners.onFiltersUpdate.forEach((function(e){return e(t.data.filters)})))},function(){e.listeners.onFiltersUpdate.splice(n,1)}},e.env=d(),e.__util={isVerifiedOrigin:c,getQueryParams:d,setFormatHeaders:f,isSuccess:u},e}(),s=window.__RYUU_AUTHENTICATION_TOKEN__;function i(e,t,n,o,a){return n=n||{},new Promise((function(i,c){var d=new XMLHttpRequest;if(o?d.open(e,t,o):d.open(e,t),f(d,t,n),function(e,t){t.contentType?"multipart"!==t.contentType&&e.setRequestHeader("Content-Type",t.contentType):e.setRequestHeader("Content-Type",r.DataFormats.JSON)}(d,n),function(e){s&&e.setRequestHeader("X-DOMO-Ryuu-Token",s)}(d),function(e,t){void 0!==t.responseType&&(e.responseType=t.responseType)}(d,n),d.onload=function(){var e;if(u(d.status)){!["csv","excel"].includes(n.format)&&d.response||i(d.response),"blob"===n.responseType&&i(new Blob([d.response],{type:d.getResponseHeader("content-type")}));var t=d.response;try{e=JSON.parse(t)}catch(e){return void c(Error("Invalid JSON response"))}i(e)}else c(Error(d.statusText))},d.onerror=function(){c(Error("Network Error"))},a)if(n.contentType&&n.contentType!==r.DataFormats.JSON)d.send(a);else{var p=JSON.stringify(a);d.send(p)}else d.send()}))}function u(e){return e>=200&&e<300}function c(e){var t=e.match("^https?://([^/]+[.])?(domo|domotech|domorig).(com|io)?(/.*)?$"),n=e.match("(.*).(domoapps).(.*)");return!!t&&!n}function d(){var e=location.search.substr(1),t={};return e.split("&").forEach((function(e){var n=e.split("=");t[n[0]]=decodeURIComponent(n[1])})),t}function f(e,t,n){if(-1!==t.indexOf("data/v1")){var a=void 0!==n.format?o.domoFormatToRequestFormat(n.format):r.DataFormats.DEFAULT;e.setRequestHeader("Accept",a)}}function p(e){if(e===document.body)return function(e){for(var t=0;t<e.children.length;t++)p(e.children[t])}(e);var t,n;if(e.dataset&&e.dataset.domoHref?(t="href",n=e.dataset.domoHref):e.dataset&&e.dataset.domoSrc?(t="src",n=e.dataset.domoSrc):e.hasAttribute&&e.hasAttribute("href")?(t="href",n=e.getAttribute("href")):e.hasAttribute&&e.hasAttribute("src")&&(t="src",n=e.getAttribute("src")),n&&s){var r=new URL(n,document.location.origin);r.origin===document.location.origin&&(r.searchParams.append("rpt",s),e.setAttribute(t,r.href))}}var l=new MutationObserver((function(e){for(var t=0,n=e;t<n.length;t++){n[t].addedNodes.forEach(p)}}));l.observe(document.documentElement,{childList:!0}),l.observe(document.head,{childList:!0}),e.exports=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.get="GET",e.GET="GET",e.post="POST",e.POST="POST",e.put="PUT",e.PUT="PUT",e.delete="DELETE",e.DELETE="DELETE"}(t.RequestMethods||(t.RequestMethods={}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.DEFAULT="application/array-of-objects",e.ARRAY_OF_OBJECTS="application/array-of-objects",e.JSON="application/json",e.CSV="text/csv",e.EXCEL="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",e.PLAIN="text/plain"}(t.DataFormats||(t.DataFormats={}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.domoFormatToRequestFormat=function(e){switch(e){case"array-of-objects":return r.DataFormats.ARRAY_OF_OBJECTS;case"array-of-arrays":return r.DataFormats.JSON;case"excel":return r.DataFormats.EXCEL;case"csv":return r.DataFormats.CSV;default:return r.DataFormats.DEFAULT}}}])})); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2luZGV4LnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvZG9tby50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9lbnVtcy9yZXF1ZXN0LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvZW51bXMvZGF0YS1mb3JtYXRzLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvdXRpbHMvZGF0YS1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsIndpbmRvdyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJSZXF1ZXN0TWV0aG9kcyIsIkRhdGFGb3JtYXRzIiwicG9zdCIsInVybCIsImJvZHkiLCJvcHRpb25zIiwiZG9tb0h0dHAiLCJQT1NUIiwicHV0IiwiUFVUIiwiR0VUIiwiZGVsZXRlIiwiREVMRVRFIiwiZ2V0QWxsIiwidXJscyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJkb21vIiwib25EYXRhVXBkYXRlIiwiY2IiLCJpbm5lckNhbGxiYWNrIiwiZXZlbnQiLCJpc1ZlcmlmaWVkT3JpZ2luIiwib3JpZ2luIiwiZGF0YSIsImxlbmd0aCIsIm1lc3NhZ2UiLCJKU09OIiwicGFyc2UiLCJhbGlhcyIsImFjayIsInN0cmluZ2lmeSIsInNvdXJjZSIsIldpbmRvdyIsInBvc3RNZXNzYWdlIiwiZXJyIiwiY29uc29sZSIsIndhcm4iLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5hdmlnYXRlIiwiaXNOZXdXaW5kb3ciLCJwYXJlbnQiLCJmaWx0ZXJDb250YWluZXIiLCJmaWx0ZXJzIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidG9Mb3dlckNhc2UiLCJzYWZhcmkiLCJ0ZXN0IiwiaW9zIiwiZmlsdGVyIiwiY29sdW1uTmFtZSIsImNvbHVtbiIsIm9wZXJhdG9yIiwidmFsdWVzIiwiZGF0YVR5cGUiLCJ3ZWJraXQiLCJtZXNzYWdlSGFuZGxlcnMiLCJkb21vZmlsdGVyIiwib3BlcmFuZCIsImNvbm5lY3RlZCIsImxpc3RlbmVycyIsIm9uRmlsdGVyc1VwZGF0ZSIsImNvbm5lY3QiLCJjaGFubmVsIiwiTWVzc2FnZUNoYW5uZWwiLCJwb3J0MiIsImNhbGxiYWNrIiwiaW5kZXgiLCJwdXNoIiwicG9ydDEiLCJvbm1lc3NhZ2UiLCJlIiwicmVzcG9uc2VQb3J0IiwidW5kZWZpbmVkIiwiZm9yRWFjaCIsInNwbGljZSIsImVudiIsImdldFF1ZXJ5UGFyYW1zIiwiX191dGlsIiwic2V0Rm9ybWF0SGVhZGVycyIsImlzU3VjY2VzcyIsInRva2VuIiwiX19SWVVVX0FVVEhFTlRJQ0FUSU9OX1RPS0VOX18iLCJtZXRob2QiLCJhc3luYyIsInJlc29sdmUiLCJyZWplY3QiLCJyZXEiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJjb250ZW50VHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJzZXRDb250ZW50SGVhZGVycyIsInNldEF1dGhUb2tlbkhlYWRlciIsInJlc3BvbnNlVHlwZSIsInNldFJlc3BvbnNlVHlwZSIsIm9ubG9hZCIsInN0YXR1cyIsImluY2x1ZGVzIiwiZm9ybWF0IiwicmVzcG9uc2UiLCJCbG9iIiwidHlwZSIsImdldFJlc3BvbnNlSGVhZGVyIiwicmVzcG9uc2VTdHIiLCJleCIsIkVycm9yIiwic3RhdHVzVGV4dCIsIm9uZXJyb3IiLCJzZW5kIiwianNvbiIsIndoaXRlbGlzdGVkIiwibWF0Y2giLCJibGFja2xpc3RlZCIsInF1ZXJ5IiwibG9jYXRpb24iLCJzZWFyY2giLCJzdWJzdHIiLCJyZXN1bHQiLCJzcGxpdCIsInBhcnQiLCJpdGVtIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaW5kZXhPZiIsInJlcXVlc3RGb3JtYXQiLCJkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0IiwiREVGQVVMVCIsImhhbmRsZU5vZGUiLCJub2RlIiwiZG9jdW1lbnQiLCJjaGlsZHJlbiIsInByb2Nlc3NCb2R5IiwiYXR0ciIsImRhdGFzZXQiLCJkb21vSHJlZiIsImRvbW9TcmMiLCJoYXNBdHRyaWJ1dGUiLCJnZXRBdHRyaWJ1dGUiLCJuZXdVcmwiLCJVUkwiLCJzZWFyY2hQYXJhbXMiLCJhcHBlbmQiLCJzZXRBdHRyaWJ1dGUiLCJocmVmIiwib2IiLCJNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwiYWRkZWROb2RlcyIsIm9ic2VydmUiLCJkb2N1bWVudEVsZW1lbnQiLCJjaGlsZExpc3QiLCJoZWFkIiwiQVJSQVlfT0ZfT0JKRUNUUyIsIkVYQ0VMIiwiQ1NWIl0sIm1hcHBpbmdzIjoiOzs7O0NBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELElBQ1EsbUJBQVhHLFFBQXlCQSxPQUFPQyxJQUM5Q0QsT0FBTyxHQUFJSCxHQUNlLGlCQUFaQyxRQUNkQSxRQUFjLEtBQUlELElBRWxCRCxFQUFXLEtBQUlDLElBUmpCLENBU0dLLFFBQVEsV0FDWCxPLFlDVEUsSUFBSUMsRUFBbUIsR0FHdkIsU0FBU0MsRUFBb0JDLEdBRzVCLEdBQUdGLEVBQWlCRSxHQUNuQixPQUFP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LElBQU15RCxFQUFTLElBQUlDLElBQUkzSSxFQUFLaUksU0FBU2QsU0FBUzlGLFFBQ3hCLEVBQVNBLFNBQVc0RyxTQUFTZCxTQUFTOUYsU0FFMURxSCxFQUFPRSxhQUFhQyxPQUFPLE1BQU81RCxHQUNsQytDLEVBQUtjLGFBQWFWLEVBQU1NLEVBQU9LLFFBV3JDLElBQU1DLEVBQUssSUFBSUMsa0JBQWlCLFNBQUNDLEdBQy9CLElBQXFCLFVBQUFBLEVBQUEsZUFBVyxDQUFmLEtBQ1JDLFdBQVd6RSxRQUFRcUQsT0FHOUJpQixFQUFHSSxRQUFRbkIsU0FBU29CLGdCQUFpQixDQUFFQyxXQUFXLElBQ2xETixFQUFHSSxRQUFRbkIsU0FBU3NCLEtBQU0sQ0FBRUQsV0FBVyxJQXpjdkMsVUFBU3ZJLEcsOEVDakJULFNBQVlsQixHQUNWLFlBQ0EsWUFDQSxjQUNBLGNBQ0EsWUFDQSxZQUNBLGtCQUNBLGtCQVJGLENBQVksRUFBQUEsaUJBQUEsRUFBQUEsZUFBYyxNLDhFQ08xQixTQUFZQyxHQUNWLHlDQUNBLGtEQUNBLDBCQUNBLGlCQUNBLDRFQUNBLHFCQU5GLENBQVksRUFBQUEsY0FBQSxFQUFBQSxZQUFXLE0sOEVDUHZCLFdBRUEscUNBQTBDcUcsR0FDeEMsT0FBUUEsR0FDTixJQUFLLG1CQUNILE9BQU8sRUFBQXJHLFlBQVkwSixpQkFFckIsSUFBSyxrQkFDSCxPQUFPLEVBQUExSixZQUFZMkIsS0FFckIsSUFBSyxRQUNILE9BQU8sRUFBQTNCLFlBQVkySixNQUVyQixJQUFLLE1BQ0gsT0FBTyxFQUFBM0osWUFBWTRKLElBRXJCLFFBQ0UsT0FBTyxFQUFBNUosWUFBWWdJIiwiZmlsZSI6ImRvbW8uanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJkb21vXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImRvbW9cIl0gPSBmYWN0b3J5KCk7XG59KSh3aW5kb3csIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxKTtcbiIsImV4cG9ydCB7IFJlcXVlc3RNZXRob2RzIH0gZnJvbSAnLi9lbnVtcy9yZXF1ZXN0LW1ldGhvZHMnO1xuZXhwb3J0IHsgRG9tb0RhdGFGb3JtYXRzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2RvbW8tZGF0YS1mb3JtYXRzJztcbmV4cG9ydCB7IERhdGFGb3JtYXRzIH0gZnJvbSAnLi9lbnVtcy9kYXRhLWZvcm1hdHMnO1xuZXhwb3J0IHsgRmlsdGVyRGF0YVR5cGVzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1kYXRhLXR5cGVzJztcbmV4cG9ydCB7IEZpbHRlck9wZXJhdG9ycyB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXItb3BlcmF0b3JzJztcblxuZXhwb3J0IHsgUmVxdWVzdE9wdGlvbnMsIE9iamVjdFJlcXVlc3RPcHRpb25zLCBBcnJheVJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcXVlc3Qtb3B0aW9ucyc7XG5leHBvcnQgeyBRdWVyeVBhcmFtcyB9IGZyb20gJy4vaW50ZXJmYWNlcy9xdWVyeS1wYXJhbXMnO1xuZXhwb3J0IHsgUmVxdWVzdEJvZHksIFhNTEh0dHBSZXF1ZXN0Qm9keSB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXF1ZXN0LWJvZHknO1xuZXhwb3J0IHsgUmVzcG9uc2VCb2R5LCBPYmplY3RSZXNwb25zZUJvZHksIEFycmF5UmVzcG9uc2VCb2R5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3Jlc3BvbnNlLWJvZHknO1xuZXhwb3J0IHsgSnNvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9qc29uJztcbiIsImltcG9ydCB7XG4gIFJlcXVlc3RNZXRob2RzLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgT2JqZWN0UmVxdWVzdE9wdGlvbnMsXG4gIEFycmF5UmVxdWVzdE9wdGlvbnMsXG4gIERhdGFGb3JtYXRzLFxuICBRdWVyeVBhcmFtcyxcbiAgRmlsdGVyRGF0YVR5cGVzLFxuICBGaWx0ZXJPcGVyYXRvcnMsXG4gIFJlcXVlc3RCb2R5LFxuICBYTUxIdHRwUmVxdWVzdEJvZHksXG4gIFJlc3BvbnNlQm9keSxcbiAgT2JqZWN0UmVzcG9uc2VCb2R5LFxuICBBcnJheVJlc3BvbnNlQm9keSxcbn0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0IH0gZnJvbSBcIi4vdXRpbHMvZGF0YS1oZWxwZXJzXCI7XG5cbmV4cG9ydCA9IGRvbW87XG5cbmNsYXNzIGRvbW8ge1xuICBzdGF0aWMgcG9zdChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIHBvc3Q8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keT86IFJlcXVlc3RCb2R5LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFQ+O1xuICBzdGF0aWMgcG9zdDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBkb21vSHR0cDxUPihSZXF1ZXN0TWV0aG9kcy5QT1NULCB1cmwsIG9wdGlvbnMsIHRydWUsIGJvZHkpO1xuICB9XG5cbiAgc3RhdGljIHB1dChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIHB1dDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8VD47XG4gIHN0YXRpYyBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keT86IFJlcXVlc3RCb2R5LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gZG9tb0h0dHA8VD4oUmVxdWVzdE1ldGhvZHMuUFVULCB1cmwsIG9wdGlvbnMsIHRydWUsIGJvZHkpO1xuICB9XG5cbiAgc3RhdGljIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiBPYmplY3RSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPE9iamVjdFJlc3BvbnNlQm9keVtdPjtcbiAgc3RhdGljIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiBBcnJheVJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8QXJyYXlSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBnZXQ8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD47XG4gIHN0YXRpYyBnZXQ8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBkb21vSHR0cDxUPihSZXF1ZXN0TWV0aG9kcy5HRVQsIHVybCwgb3B0aW9ucyk7XG4gIH1cblxuICBzdGF0aWMgZGVsZXRlKHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBkZWxldGU8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD47XG4gIHN0YXRpYyBkZWxldGU8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBkb21vSHR0cDxUPihSZXF1ZXN0TWV0aG9kcy5ERUxFVEUsIHVybCwgb3B0aW9ucyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0QWxsKFxuICAgIHVybHM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IE9iamVjdFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8T2JqZWN0UmVzcG9uc2VCb2R5W11bXT47XG4gIHN0YXRpYyBnZXRBbGwoXG4gICAgdXJsczogc3RyaW5nW10sXG4gICAgb3B0aW9uczogQXJyYXlSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPEFycmF5UmVzcG9uc2VCb2R5W10+O1xuICBzdGF0aWMgZ2V0QWxsKFxuICAgIHVybHM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFJlc3BvbnNlQm9keVtdPjtcbiAgc3RhdGljIGdldEFsbDxUPih1cmxzOiBzdHJpbmdbXSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUW10+O1xuICBzdGF0aWMgZ2V0QWxsPFQ+KHVybHM6IHN0cmluZ1tdLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFRbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIHVybHMubWFwKGZ1bmN0aW9uICh1cmwpIHtcbiAgICAgICAgcmV0dXJuIGRvbW8uZ2V0PFQ+KHVybCwgb3B0aW9ucyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTGV0IHRoZSBkb21vYXBwIG9wdGlvbmFsbHkgaGFuZGxlIGl0cyBvd24gZGF0YSB1cGRhdGVzLlxuICAgKi9cbiAgc3RhdGljIG9uRGF0YVVwZGF0ZShjYjogKGFsaWFzOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcbiAgICAgIGlmICghaXNWZXJpZmllZE9yaWdpbihldmVudC5vcmlnaW4pKSByZXR1cm47XG5cbiAgICAgIGlmICh0eXBlb2YgZXZlbnQuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJiBldmVudC5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAoIW1lc3NhZ2UuaGFzT3duUHJvcGVydHkoXCJhbGlhc1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGFsaWFzID0gbWVzc2FnZS5hbGlhcztcblxuICAgICAgICAgIC8vIHNlbmQgYWNrbm93bGVkZ2VtZW50IHRvIHByZXZlbnQgYXV0b3JlZnJlc2hcbiAgICAgICAgICBjb25zdCBhY2sgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBldmVudDogXCJhY2tcIixcbiAgICAgICAgICAgIGFsaWFzOiBhbGlhcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoZXZlbnQuc291cmNlIGluc3RhbmNlb2YgV2luZG93KSB7XG4gICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoYWNrLCBldmVudC5vcmlnaW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGluZm9ybSBkb21vIGFwcCB3aGljaCBhbGlhcyBoYXMgYmVlbiB1cGRhdGVkXG4gICAgICAgICAgY2IoYWxpYXMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zdCBpbmZvID1cbiAgICAgICAgICAgIFwiVGhlcmUgd2FzIGFuIGVycm9yIGluIG9uRGF0YVVwZGF0ZSEgSXQgbWF5IGJlIHRoYXQgb3VyIGV2ZW50IGxpc3RlbmVyIGNhdWdodCBcIiArXG4gICAgICAgICAgICBcImEgbWVzc2FnZSBmcm9tIGFub3RoZXIgc291cmNlIGFuZCB0cmllZCB0byBwYXJzZSBpdCwgc28geW91ciB1cGRhdGUgc3RpbGwgbWF5IGhhdmUgd29ya2VkLiBcIiArXG4gICAgICAgICAgICBcIklmIHlvdSB3b3VsZCBsaWtlIG1vcmUgaW5mbywgaGVyZSBpcyB0aGUgZXJyb3I6IFxcblwiO1xuICAgICAgICAgIGNvbnNvbGUud2FybihpbmZvLCBlcnIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBpbm5lckNhbGxiYWNrKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGlubmVyQ2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIExldCB0aGUgZG9tb2FwcCBvcHRpb25hbGx5IGhhbmRsZSBvdGhlciBldmVudHNcbiAgICovXG4gIHN0YXRpYyBjaGFubmVsPzogTWVzc2FnZUNoYW5uZWw7XG4gIHN0YXRpYyBjb25uZWN0ZWQgPSBmYWxzZTtcbiAgc3RhdGljIGxpc3RlbmVyczogeyBbaW5kZXg6IHN0cmluZ106IEZ1bmN0aW9uW10gfSA9IHtcbiAgICBvbkZpbHRlcnNVcGRhdGU6IFtdLFxuICB9O1xuXG4gIHN0YXRpYyBjb25uZWN0ID0gKCkgPT4ge1xuICAgIGlmIChkb21vLmNvbm5lY3RlZCkgcmV0dXJuO1xuICAgIGRvbW8uY29ubmVjdGVkID0gdHJ1ZTtcbiAgICBkb21vLmNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHsgZXZlbnQ6IFwic3Vic2NyaWJlXCIgfSksIFwiKlwiLCBbXG4gICAgICBkb21vLmNoYW5uZWwucG9ydDIsXG4gICAgXSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIExldCB0aGUgZG9tb2FwcCBoYW5kbGUgaXRzIG93biBmaWx0ZXIgdXBkYXRlc1xuICAgKi9cbiAgc3RhdGljIG9uRmlsdGVyc1VwZGF0ZSA9IChjYWxsYmFjazogRnVuY3Rpb24pID0+IHtcbiAgICBkb21vLmNvbm5lY3QoKTtcbiAgICBjb25zdCBpbmRleCA9IGRvbW8ubGlzdGVuZXJzLm9uRmlsdGVyc1VwZGF0ZS5wdXNoKGNhbGxiYWNrKSAtIDE7XG5cbiAgICBkb21vLmNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gKGU6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgY29uc3QgW3Jlc3BvbnNlUG9ydF0gPSBlLnBvcnRzO1xuICAgICAgaWYgKHJlc3BvbnNlUG9ydCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgIGlmIChcbiAgICAgICAgZS5kYXRhLmV2ZW50ID09PSBcImZpbHRlcnNVcGRhdGVkXCIgJiZcbiAgICAgICAgZG9tby5saXN0ZW5lcnMub25GaWx0ZXJzVXBkYXRlLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICByZXNwb25zZVBvcnQucG9zdE1lc3NhZ2Uoe30pOyAvLyBQcmV2ZW50cyB0aGUgYXBwIGZyb20gcmVsb2FkaW5nLiBTYXlzIHdlJ3ZlIGhhbmRsZWQgaXRcbiAgICAgICAgZG9tby5saXN0ZW5lcnMub25GaWx0ZXJzVXBkYXRlLmZvckVhY2goKGNiKSA9PiBjYihlLmRhdGEuZmlsdGVycykpOyAvLyA8LSBzcGxpdCBvdXQgb25GaWx0ZXJzVXBkYXRlIHNvIHRoYXQgeW91IGNhbiBoYW5kbGUgZWFjaCBtZXNzYWdlIGRpZmZlcmVudGx5IGhlcmVcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gdW5yZWdpc3RlclxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb21vLmxpc3RlbmVycy5vbkZpbHRlcnNVcGRhdGUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IGEgbmF2aWdhdGlvbiBjaGFuZ2VcbiAgICovXG4gIHN0YXRpYyBuYXZpZ2F0ZSh1cmw6IHN0cmluZywgaXNOZXdXaW5kb3c6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZXZlbnQ6IFwibmF2aWdhdGVcIixcbiAgICAgIHVybDogdXJsLFxuICAgICAgaXNOZXdXaW5kb3c6IGlzTmV3V2luZG93LFxuICAgIH0pO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UobWVzc2FnZSwgXCIqXCIpO1xuICB9XG5cbiAgc3RhdGljIGZpbHRlckNvbnRhaW5lcihcbiAgICBmaWx0ZXJzOiAoXG4gICAgICB8IHtcbiAgICAgICAgICBjb2x1bW46IHN0cmluZztcbiAgICAgICAgICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3JzO1xuICAgICAgICAgIHZhbHVlczogKHN0cmluZyB8IG51bWJlciB8IERhdGUpW107XG4gICAgICAgICAgZGF0YVR5cGU6IEZpbHRlckRhdGFUeXBlcztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgY29sdW1uOiBzdHJpbmc7XG4gICAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9ycztcbiAgICAgICAgICB2YWx1ZXM6IERhdGVbXTtcbiAgICAgICAgICBkYXRhVHlwZTogXCJEQVRFXCIgfCBcIkRBVEVUSU1FXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGNvbHVtbjogc3RyaW5nO1xuICAgICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcnM7XG4gICAgICAgICAgdmFsdWVzOiBudW1iZXJbXTtcbiAgICAgICAgICBkYXRhVHlwZTogXCJOVU1FUklDXCI7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGNvbHVtbjogc3RyaW5nO1xuICAgICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcnM7XG4gICAgICAgICAgdmFsdWVzOiBzdHJpbmdbXTtcbiAgICAgICAgICBkYXRhVHlwZTogXCJTVFJJTkdcIjtcbiAgICAgICAgfVxuICAgIClbXVxuICApOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLFxuICAgICAgc2FmYXJpID0gL3NhZmFyaS8udGVzdCh1c2VyQWdlbnQpLFxuICAgICAgaW9zID0gL2lwaG9uZXxpcG9kfGlwYWQvLnRlc3QodXNlckFnZW50KTtcblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBldmVudDogXCJmaWx0ZXJcIixcbiAgICAgIGZpbHRlcjogZmlsdGVycy5tYXAoKGZpbHRlcikgPT4gKHtcbiAgICAgICAgY29sdW1uTmFtZTogZmlsdGVyLmNvbHVtbixcbiAgICAgICAgb3BlcmF0b3I6IGZpbHRlci5vcGVyYXRvcixcbiAgICAgICAgdmFsdWVzOiBmaWx0ZXIudmFsdWVzLFxuICAgICAgICBkYXRhVHlwZTogZmlsdGVyLmRhdGFUeXBlLFxuICAgICAgfSkpLFxuICAgIH0pO1xuXG4gICAgaWYgKGlvcyAmJiAhc2FmYXJpKSB7XG4gICAgICAod2luZG93IGFzIGFueSkud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5kb21vZmlsdGVyLnBvc3RNZXNzYWdlKFxuICAgICAgICBmaWx0ZXJzLm1hcCgoZmlsdGVyKSA9PiAoe1xuICAgICAgICAgIGNvbHVtbjogZmlsdGVyLmNvbHVtbixcbiAgICAgICAgICBvcGVyYW5kOiBmaWx0ZXIub3BlcmF0b3IsXG4gICAgICAgICAgdmFsdWVzOiBmaWx0ZXIudmFsdWVzLFxuICAgICAgICAgIGRhdGFUeXBlOiBmaWx0ZXIuZGF0YVR5cGUsXG4gICAgICAgIH0pKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShtZXNzYWdlLCBcIipcIik7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGVudiA9IGdldFF1ZXJ5UGFyYW1zKCk7XG5cbiAgc3RhdGljIF9fdXRpbCA9IHtcbiAgICBpc1ZlcmlmaWVkT3JpZ2luLFxuICAgIGdldFF1ZXJ5UGFyYW1zLFxuICAgIHNldEZvcm1hdEhlYWRlcnMsXG4gICAgaXNTdWNjZXNzLFxuICB9O1xufVxuXG5jb25zdCB0b2tlbiA9ICh3aW5kb3cgYXMgYW55KS5fX1JZVVVfQVVUSEVOVElDQVRJT05fVE9LRU5fXztcblxuZnVuY3Rpb24gZG9tb0h0dHAoXG4gIG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsXG4gIHVybDogc3RyaW5nLFxuICBvcHRpb25zOiBPYmplY3RSZXF1ZXN0T3B0aW9ucyxcbiAgYXN5bmM/OiBib29sZWFuLFxuICBib2R5PzogUmVxdWVzdEJvZHlcbik6IFByb21pc2U8T2JqZWN0UmVzcG9uc2VCb2R5W10+O1xuZnVuY3Rpb24gZG9tb0h0dHAoXG4gIG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsXG4gIHVybDogc3RyaW5nLFxuICBvcHRpb25zOiBBcnJheVJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxBcnJheVJlc3BvbnNlQm9keT47XG5mdW5jdGlvbiBkb21vSHR0cChcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuZnVuY3Rpb24gZG9tb0h0dHA8VD4oXG4gIG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsXG4gIHVybDogc3RyaW5nLFxuICBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyxcbiAgYXN5bmM/OiBib29sZWFuLFxuICBib2R5PzogUmVxdWVzdEJvZHlcbik6IFByb21pc2U8VD47XG5mdW5jdGlvbiBkb21vSHR0cChcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+IHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoXG4gICAgcmVzb2x2ZTogKHZhbHVlPzogUmVzcG9uc2VCb2R5KSA9PiB2b2lkLFxuICAgIHJlamVjdDogKHJlYXNvbj86IEVycm9yKSA9PiB2b2lkXG4gICkge1xuICAgIC8vIERvIHRoZSB1c3VhbCBYSFIgc3R1ZmZcbiAgICBsZXQgcmVxOiBYTUxIdHRwUmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIGlmIChhc3luYykge1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwpO1xuICAgIH1cbiAgICBzZXRGb3JtYXRIZWFkZXJzKHJlcSwgdXJsLCBvcHRpb25zKTtcbiAgICBzZXRDb250ZW50SGVhZGVycyhyZXEsIG9wdGlvbnMpO1xuICAgIHNldEF1dGhUb2tlbkhlYWRlcihyZXEpO1xuICAgIHNldFJlc3BvbnNlVHlwZShyZXEsIG9wdGlvbnMpO1xuXG4gICAgcmVxLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBkYXRhO1xuICAgICAgLy8gVGhpcyBpcyBjYWxsZWQgZXZlbiBvbiA0MDQgZXRjIHNvIGNoZWNrIHRoZSBzdGF0dXNcbiAgICAgIGlmIChpc1N1Y2Nlc3MocmVxLnN0YXR1cykpIHtcbiAgICAgICAgaWYgKFtcImNzdlwiLCBcImV4Y2VsXCJdLmluY2x1ZGVzKG9wdGlvbnMuZm9ybWF0KSB8fCAhcmVxLnJlc3BvbnNlKSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXEucmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLnJlc3BvbnNlVHlwZSA9PT0gXCJibG9iXCIpIHtcbiAgICAgICAgICByZXNvbHZlKFxuICAgICAgICAgICAgbmV3IEJsb2IoW3JlcS5yZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgdHlwZTogcmVxLmdldFJlc3BvbnNlSGVhZGVyKFwiY29udGVudC10eXBlXCIpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3BvbnNlU3RyID0gcmVxLnJlc3BvbnNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIGlmKCFyZXNwb25zZVN0cikge1xuICAgICAgICAgIC8vICAgcmVzcG9uc2VTdHIgPSBcInt9XCI7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlU3RyKTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICByZWplY3QoRXJyb3IoXCJJbnZhbGlkIEpTT04gcmVzcG9uc2VcIikpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXNvbHZlIHRoZSBwcm9taXNlIHdpdGggdGhlIHJlc3BvbnNlIHRleHRcbiAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSByZWplY3Qgd2l0aCB0aGUgc3RhdHVzIHRleHRcbiAgICAgICAgLy8gd2hpY2ggd2lsbCBob3BlZnVsbHkgYmUgYSBtZWFuaW5nZnVsIGVycm9yXG4gICAgICAgIHJlamVjdChFcnJvcihyZXEuc3RhdHVzVGV4dCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbmV0d29yayBlcnJvcnNcbiAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlamVjdChFcnJvcihcIk5ldHdvcmsgRXJyb3JcIikpO1xuICAgIH07XG5cbiAgICAvLyBNYWtlIHRoZSByZXF1ZXN0XG4gICAgaWYgKGJvZHkpIHtcbiAgICAgIGlmICghb3B0aW9ucy5jb250ZW50VHlwZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlID09PSBEYXRhRm9ybWF0cy5KU09OKSB7XG4gICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICAgICAgLy8gTWFrZSB0aGUgcmVxdWVzdFxuICAgICAgICByZXEuc2VuZChqc29uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGJvZHkgY2FuIG5vIGxvbmdlciBiZSBKU09OXG4gICAgICAgIHJlcS5zZW5kKGJvZHkgYXMgWE1MSHR0cFJlcXVlc3RCb2R5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVxLnNlbmQoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc1N1Y2Nlc3Moc3RhdHVzOiBudW1iZXIpIHtcbiAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xufVxuXG5mdW5jdGlvbiBpc1ZlcmlmaWVkT3JpZ2luKG9yaWdpbjogc3RyaW5nKSB7XG4gIGNvbnN0IHdoaXRlbGlzdGVkID0gb3JpZ2luLm1hdGNoKFxuICAgIFwiXmh0dHBzPzovLyhbXi9dK1suXSk/KGRvbW98ZG9tb3RlY2h8ZG9tb3JpZykuKGNvbXxpbyk/KC8uKik/JFwiXG4gICk7XG4gIGNvbnN0IGJsYWNrbGlzdGVkID0gb3JpZ2luLm1hdGNoKFwiKC4qKS4oZG9tb2FwcHMpLiguKilcIik7XG4gIHJldHVybiAhIXdoaXRlbGlzdGVkICYmICFibGFja2xpc3RlZDtcbn1cblxuZnVuY3Rpb24gZ2V0UXVlcnlQYXJhbXMoKTogUXVlcnlQYXJhbXMge1xuICBjb25zdCBxdWVyeSA9IGxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSk7XG4gIGxldCByZXN1bHQ6IHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICBxdWVyeS5zcGxpdChcIiZcIikuZm9yRWFjaChmdW5jdGlvbiAocGFydCkge1xuICAgIGNvbnN0IGl0ZW0gPSBwYXJ0LnNwbGl0KFwiPVwiKTtcbiAgICByZXN1bHRbaXRlbVswXV0gPSBkZWNvZGVVUklDb21wb25lbnQoaXRlbVsxXSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBzZXRGb3JtYXRIZWFkZXJzKFxuICByZXE6IFhNTEh0dHBSZXF1ZXN0LFxuICB1cmw6IHN0cmluZyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pIHtcbiAgaWYgKHVybC5pbmRleE9mKFwiZGF0YS92MVwiKSA9PT0gLTEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gc2V0IGZvcm1hdFxuICBjb25zdCByZXF1ZXN0Rm9ybWF0OiBEYXRhRm9ybWF0cyA9XG4gICAgb3B0aW9ucy5mb3JtYXQgIT09IHVuZGVmaW5lZFxuICAgICAgPyBkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0KG9wdGlvbnMuZm9ybWF0KVxuICAgICAgOiBEYXRhRm9ybWF0cy5ERUZBVUxUO1xuXG4gIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQWNjZXB0XCIsIHJlcXVlc3RGb3JtYXQpO1xufVxuXG5mdW5jdGlvbiBzZXRDb250ZW50SGVhZGVycyhyZXE6IFhNTEh0dHBSZXF1ZXN0LCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMuY29udGVudFR5cGUpIHtcbiAgICAvLyBzZXQgY29udGVudCB0eXBlIGlmIHVzZXIgcGFzc2VkIG9wdGlvblxuICAgIGlmIChvcHRpb25zLmNvbnRlbnRUeXBlICE9PSBcIm11bHRpcGFydFwiKSB7XG4gICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBvcHRpb25zLmNvbnRlbnRUeXBlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgRGF0YUZvcm1hdHMuSlNPTik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0QXV0aFRva2VuSGVhZGVyKHJlcTogWE1MSHR0cFJlcXVlc3QpIHtcbiAgaWYgKHRva2VuKSB7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoJ1gtRE9NTy1SeXV1LVRva2VuJywgdG9rZW4pO1xuICB9XG59XG5cblxuZnVuY3Rpb24gc2V0UmVzcG9uc2VUeXBlKHJlcTogWE1MSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykge1xuICAvL3NldCByZXNwb25zZSB0eXBlIGlmIHVzZXIgcGFzc2VkIG9wdGlvblxuICBpZiAob3B0aW9ucy5yZXNwb25zZVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlcS5yZXNwb25zZVR5cGUgPSBvcHRpb25zLnJlc3BvbnNlVHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVOb2RlKG5vZGU6IEhUTUxFbGVtZW50KXtcbiAgaWYgKG5vZGUgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICByZXR1cm4gcHJvY2Vzc0JvZHkobm9kZSk7XG4gIH1cbiAgbGV0IGF0dHI7XG4gIGxldCB1cmw7XG4gIGlmIChub2RlLmRhdGFzZXQgJiYgbm9kZS5kYXRhc2V0LmRvbW9IcmVmKSB7XG4gICAgYXR0ciA9ICdocmVmJztcbiAgICB1cmwgPSBub2RlLmRhdGFzZXQuZG9tb0hyZWY7XG4gIH0gZWxzZSBpZiAobm9kZS5kYXRhc2V0ICYmIG5vZGUuZGF0YXNldC5kb21vU3JjKSB7XG4gICAgYXR0ciA9ICdzcmMnO1xuICAgIHVybCA9IG5vZGUuZGF0YXNldC5kb21vU3JjO1xuICB9IGVsc2UgaWYgKG5vZGUuaGFzQXR0cmlidXRlICYmIG5vZGUuaGFzQXR0cmlidXRlKCdocmVmJykpIHtcbiAgICBhdHRyID0gJ2hyZWYnO1xuICAgIHVybCA9IG5vZGUuZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gIH0gZWxzZSBpZiAobm9kZS5oYXNBdHRyaWJ1dGUgJiYgbm9kZS5oYXNBdHRyaWJ1dGUoJ3NyYycpKSB7XG4gICAgYXR0ciA9ICdzcmMnO1xuICAgIHVybCA9IG5vZGUuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgfVxuXG4gIGlmICh1cmwgJiYgdG9rZW4pIHtcbiAgICBjb25zdCBuZXdVcmwgPSBuZXcgVVJMKHVybCwgZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luKTtcbiAgICBjb25zdCBpc1JlbGF0aXZlVXJsID0gKG5ld1VybCkub3JpZ2luID09PSBkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW47XG4gICAgaWYgKGlzUmVsYXRpdmVVcmwpIHtcbiAgICAgIG5ld1VybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdycHQnLCB0b2tlbik7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCBuZXdVcmwuaHJlZik7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBwcm9jZXNzQm9keShub2RlOiBFbGVtZW50KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGhhbmRsZU5vZGUoPEhUTUxFbGVtZW50Pm5vZGUuY2hpbGRyZW5baV0pO1xuICB9XG59XG5cbmNvbnN0IG9iID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICBmb3IgKGNvbnN0IHJlY29yZCBvZiBtdXRhdGlvbnMpIHtcbiAgICByZWNvcmQuYWRkZWROb2Rlcy5mb3JFYWNoKGhhbmRsZU5vZGUpO1xuICB9XG59KTtcbm9iLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbm9iLm9ic2VydmUoZG9jdW1lbnQuaGVhZCwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4iLCJleHBvcnQgZW51bSBSZXF1ZXN0TWV0aG9kcyB7XG4gIGdldCA9ICdHRVQnLFxuICBHRVQgPSAnR0VUJyxcbiAgcG9zdCA9ICdQT1NUJyxcbiAgUE9TVCA9ICdQT1NUJyxcbiAgcHV0ID0gJ1BVVCcsXG4gIFBVVCA9ICdQVVQnLFxuICBkZWxldGUgPSAnREVMRVRFJyxcbiAgREVMRVRFID0gJ0RFTEVURScsXG59XG4iLCIvKipcbiAqIFN1cHBvcnRlZCBgYWNjZXB0YCBoZWFkZXJzIGZvciBjb250cm9sbGluZyB0aGUgZm9ybWF0XG4gKiBvZiB0aGUgZGF0YSByZXR1cm5lZCBmcm9tIERvbW8uXG4gKlxuICogU2VlIFtkZXZlbG9wZXIuZG9tby5jb21dKGh0dHBzOi8vZGV2ZWxvcGVyLmRvbW8uY29tL2RvY3MvZGV2LXN0dWRpby1yZWZlcmVuY2VzL2RhdGEtYXBpI0RhdGElMjBGb3JtYXRzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGVudW0gRGF0YUZvcm1hdHMge1xuICBERUZBVUxUID0gJ2FwcGxpY2F0aW9uL2FycmF5LW9mLW9iamVjdHMnLFxuICBBUlJBWV9PRl9PQkpFQ1RTID0gJ2FwcGxpY2F0aW9uL2FycmF5LW9mLW9iamVjdHMnLFxuICBKU09OID0gJ2FwcGxpY2F0aW9uL2pzb24nLFxuICBDU1YgPSAndGV4dC9jc3YnLFxuICBFWENFTCA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gIFBMQUlOID0gJ3RleHQvcGxhaW4nXG59IiwiaW1wb3J0IHsgRG9tb0RhdGFGb3JtYXRzLCBEYXRhRm9ybWF0cyB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0KGZvcm1hdDogRG9tb0RhdGFGb3JtYXRzKTogRGF0YUZvcm1hdHMge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ2FycmF5LW9mLW9iamVjdHMnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuQVJSQVlfT0ZfT0JKRUNUUztcbiAgICB9XG4gICAgY2FzZSAnYXJyYXktb2YtYXJyYXlzJzoge1xuICAgICAgcmV0dXJuIERhdGFGb3JtYXRzLkpTT047XG4gICAgfVxuICAgIGNhc2UgJ2V4Y2VsJzoge1xuICAgICAgcmV0dXJuIERhdGFGb3JtYXRzLkVYQ0VMO1xuICAgIH1cbiAgICBjYXNlICdjc3YnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuQ1NWO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuREVGQVVMVDtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.domo=t():e.domo=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(2);t.RequestMethods=r.RequestMethods;var o=n(3);t.DataFormats=o.DataFormats;var a=n(4);t.FilterDataTypes=a.FilterDataTypes},function(e,t,n){"use strict";var r=n(0),o=n(5),a=function(){function e(){}return e.post=function(e,t,n){return i(r.RequestMethods.POST,e,n,!0,t)},e.put=function(e,t,n){return i(r.RequestMethods.PUT,e,n,!0,t)},e.get=function(e,t){return i(r.RequestMethods.GET,e,t)},e.delete=function(e,t){return i(r.RequestMethods.DELETE,e,t)},e.getAll=function(t,n){return Promise.all(t.map((function(t){return e.get(t,n)})))},e.onDataUpdate=function(e){function t(t){if(c(t.origin)&&"string"==typeof t.data&&t.data.length>0)try{var n=JSON.parse(t.data);if(!n.hasOwnProperty("alias"))return;var r=n.alias,o=JSON.stringify({event:"ack",alias:r});t.source instanceof MessagePort||t.source instanceof ServiceWorker||t.source.postMessage(o,t.origin),e(r)}catch(e){console.warn("There was an error in onDataUpdate! It may be that our event listener caught a message from another source and tried to parse it, so your update still may have worked. If you would like more info, here is the error: \n",e)}}return window.addEventListener("message",t),function(){return window.removeEventListener("message",t)}},e.navigate=function(e,t){var n=JSON.stringify({event:"navigate",url:e,isNewWindow:t});window.parent.postMessage(n,"*")},e.filterContainer=function(e){var t=window.navigator.userAgent.toLowerCase(),n=/safari/.test(t),r=/iphone|ipod|ipad/.test(t),o=JSON.stringify({event:"filter",filter:e&&e.map((function(e){return{columnName:e.column,operator:e.operator||e.operand,values:e.values,dataType:e.dataType}}))});r&&!n?window.webkit.messageHandlers.domofilter.postMessage(e.map((function(e){return{column:e.column,operand:e.operator||e.operand,values:e.values,dataType:e.dataType}}))):window.parent.postMessage(o,"*")},e.connected=!1,e.listeners={onFiltersUpdate:[]},e.connect=function(){e.connected||(e.connected=!0,e.channel=new MessageChannel,window.parent.postMessage(JSON.stringify({event:"subscribe"}),"*",[e.channel.port2]))},e.onFiltersUpdate=function(t){e.connect();var n=e.listeners.onFiltersUpdate.push(t)-1;return e.channel.port1.onmessage=function(t){var n=t.ports[0];void 0!==n&&"filtersUpdated"===t.data.event&&e.listeners.onFiltersUpdate.length>0&&(n.postMessage({}),e.listeners.onFiltersUpdate.forEach((function(e){return e(t.data.filters)})))},function(){e.listeners.onFiltersUpdate.splice(n,1)}},e.env=d(),e.__util={isVerifiedOrigin:c,getQueryParams:d,setFormatHeaders:f,isSuccess:u},e}(),s=window.__RYUU_AUTHENTICATION_TOKEN__;function i(e,t,n,o,a){return n=n||{},new Promise((function(i,c){var d=new XMLHttpRequest;if(o?d.open(e,t,o):d.open(e,t),f(d,t,n),function(e,t){t.contentType?"multipart"!==t.contentType&&e.setRequestHeader("Content-Type",t.contentType):e.setRequestHeader("Content-Type",r.DataFormats.JSON)}(d,n),function(e){s&&e.setRequestHeader("X-DOMO-Ryuu-Token",s)}(d),function(e,t){void 0!==t.responseType&&(e.responseType=t.responseType)}(d,n),d.onload=function(){var e;if(u(d.status)){!["csv","excel"].includes(n.format)&&d.response||i(d.response),"blob"===n.responseType&&i(new Blob([d.response],{type:d.getResponseHeader("content-type")}));var t=d.response;try{e=JSON.parse(t)}catch(e){return void c(Error("Invalid JSON response"))}i(e)}else c(Error(d.statusText))},d.onerror=function(){c(Error("Network Error"))},a)if(n.contentType&&n.contentType!==r.DataFormats.JSON)d.send(a);else{var p=JSON.stringify(a);d.send(p)}else d.send()}))}function u(e){return e>=200&&e<300}function c(e){var t=e.match("^https?://([^/]+[.])?(domo|domotech|domorig).(com|io)?(/.*)?$"),n=e.match("(.*).(domoapps).(.*)");return!!t&&!n}function d(){var e=location.search.substr(1),t={};return e.split("&").forEach((function(e){var n=e.split("=");t[n[0]]=decodeURIComponent(n[1])})),t}function f(e,t,n){if(-1!==t.indexOf("data/v1")){var a=void 0!==n.format?o.domoFormatToRequestFormat(n.format):r.DataFormats.DEFAULT;e.setRequestHeader("Accept",a)}}function p(e){if(e===document.body)return function(e){for(var t=0;t<e.children.length;t++)p(e.children[t])}(e);var t,n;if(e.dataset&&e.dataset.domoHref?(t="href",n=e.dataset.domoHref):e.dataset&&e.dataset.domoSrc?(t="src",n=e.dataset.domoSrc):e.hasAttribute&&e.hasAttribute("href")?(t="href",n=e.getAttribute("href")):e.hasAttribute&&e.hasAttribute("src")&&(t="src",n=e.getAttribute("src")),n&&s){var r=new URL(n,document.location.origin);r.origin===document.location.origin&&(r.searchParams.append("rpt",s),e.setAttribute(t,r.href))}}var l=new MutationObserver((function(e){for(var t=0,n=e;t<n.length;t++){n[t].addedNodes.forEach(p)}}));l.observe(document.documentElement,{childList:!0}),l.observe(document.head,{childList:!0}),e.exports=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.get="GET",e.GET="GET",e.post="POST",e.POST="POST",e.put="PUT",e.PUT="PUT",e.delete="DELETE",e.DELETE="DELETE"}(t.RequestMethods||(t.RequestMethods={}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.DEFAULT="application/array-of-objects",e.ARRAY_OF_OBJECTS="application/array-of-objects",e.JSON="application/json",e.CSV="text/csv",e.EXCEL="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",e.PLAIN="text/plain"}(t.DataFormats||(t.DataFormats={}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.NUMERIC="NUMERIC",e.DATE="DATE",e.DATETIME="DATETIME",e.STRING="STRING"}(t.FilterDataTypes||(t.FilterDataTypes={}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0);t.domoFormatToRequestFormat=function(e){switch(e){case"array-of-objects":return r.DataFormats.ARRAY_OF_OBJECTS;case"array-of-arrays":return r.DataFormats.JSON;case"excel":return r.DataFormats.EXCEL;case"csv":return r.DataFormats.CSV;default:return r.DataFormats.DEFAULT}}}])})); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2luZGV4LnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvZG9tby50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9lbnVtcy9yZXF1ZXN0LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvZW51bXMvZGF0YS1mb3JtYXRzLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2ludGVyZmFjZXMvZmlsdGVyLWRhdGEtdHlwZXMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy91dGlscy9kYXRhLWhlbHBlcnMudHMiXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwid2luZG93IiwiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIlJlcXVlc3RNZXRob2RzIiwiRGF0YUZvcm1hdHMiLCJGaWx0ZXJEYXRhVHlwZXMiLCJwb3N0IiwidXJsIiwiYm9keSIsIm9wdGlvbnMiLCJkb21vSHR0cCIsIlBPU1QiLCJwdXQiLCJQVVQiLCJHRVQiLCJkZWxldGUiLCJERUxFVEUiLCJnZXRBbGwiLCJ1cmxzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImRvbW8iLCJvbkRhdGFVcGRhdGUiLCJjYiIsImlubmVyQ2FsbGJhY2siLCJldmVudCIsImlzVmVyaWZpZWRPcmlnaW4iLCJvcmlnaW4iLCJkYXRhIiwibGVuZ3RoIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsImFsaWFzIiwiYWNrIiwic3RyaW5naWZ5Iiwic291cmNlIiwiTWVzc2FnZVBvcnQiLCJTZXJ2aWNlV29ya2VyIiwicG9zdE1lc3NhZ2UiLCJlcnIiLCJjb25zb2xlIiwid2FybiIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibmF2aWdhdGUiLCJpc05ld1dpbmRvdyIsInBhcmVudCIsImZpbHRlckNvbnRhaW5lciIsImZpbHRlcnMiLCJ1c2VyQWdlbnQiLCJuYXZpZ2F0b3IiLCJ0b0xvd2VyQ2FzZSIsInNhZmFyaSIsInRlc3QiLCJpb3MiLCJmaWx0ZXIiLCJjb2x1bW5OYW1lIiwiY29sdW1uIiwib3BlcmF0b3IiLCJvcGVyYW5kIiwidmFsdWVzIiwiZGF0YVR5cGUiLCJ3ZWJraXQiLCJtZXNzYWdlSGFuZGxlcnMiLCJkb21vZmlsdGVyIiwiY29ubmVjdGVkIiwibGlzdGVuZXJzIiwib25GaWx0ZXJzVXBkYXRlIiwiY29ubmVjdCIsImNoYW5uZWwiLCJNZXNzYWdlQ2hhbm5lbCIsInBvcnQyIiwiY2FsbGJhY2siLCJpbmRleCIsInB1c2giLCJwb3J0MSIsIm9ubWVzc2FnZSIsImUiLCJyZXNwb25zZVBvcnQiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwic3BsaWNlIiwiZW52IiwiZ2V0UXVlcnlQYXJhbXMiLCJfX3V0aWwiLCJzZXRGb3JtYXRIZWFkZXJzIiwiaXNTdWNjZXNzIiwidG9rZW4iLCJfX1JZVVVfQVVUSEVOVElDQVRJT05fVE9LRU5fXyIsIm1ldGhvZCIsImFzeW5jIiwicmVzb2x2ZSIsInJlamVjdCIsInJlcSIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsImNvbnRlbnRUeXBlIiwic2V0UmVxdWVzdEhlYWRlciIsInNldENvbnRlbnRIZWFkZXJzIiwic2V0QXV0aFRva2VuSGVhZGVyIiwicmVzcG9uc2VUeXBlIiwic2V0UmVzcG9uc2VUeXBlIiwib25sb2FkIiwic3RhdHVzIiwiaW5jbHVkZXMiLCJmb3JtYXQiLCJyZXNwb25zZSIsIkJsb2IiLCJ0eXBlIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJyZXNwb25zZVN0ciIsImV4IiwiRXJyb3IiLCJzdGF0dXNUZXh0Iiwib25lcnJvciIsInNlbmQiLCJqc29uIiwid2hpdGVsaXN0ZWQiLCJtYXRjaCIsImJsYWNrbGlzdGVkIiwicXVlcnkiLCJsb2NhdGlvbiIsInNlYXJjaCIsInN1YnN0ciIsInJlc3VsdCIsInNwbGl0IiwicGFydCIsIml0ZW0iLCJkZWNvZGVVUklDb21wb25lbnQiLCJpbmRleE9mIiwicmVxdWVzdEZvcm1hdCIsImRvbW9Gb3JtYXRUb1JlcXVlc3RGb3JtYXQiLCJERUZBVUxUIiwiaGFuZGxlTm9kZSIsIm5vZGUiLCJkb2N1bWVudCIsImNoaWxkcmVuIiwicHJvY2Vzc0JvZHkiLCJhdHRyIiwiZGF0YXNldCIsImRvbW9IcmVmIiwiZG9tb1NyYyIsImhhc0F0dHJpYnV0ZSIsImdldEF0dHJpYnV0ZSIsIm5ld1VybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsImFwcGVuZCIsInNldEF0dHJpYnV0ZSIsImhyZWYiLCJvYiIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJhZGRlZE5vZGVzIiwib2JzZXJ2ZSIsImRvY3VtZW50RWxlbWVudCIsImNoaWxkTGlzdCIsImhlYWQiLCJBUlJBWV9PRl9PQkpFQ1RTIiwiRVhDRUwiLCJDU1YiXSwibWFwcGluZ3MiOiI7Ozs7Q0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsSUFDUSxtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLEdBQUlILEdBQ2UsaUJBQVpDLFFBQ2RBLFFBQWMsS0FBSUQsSUFFbEJE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QVk2SixNQUVyQixJQUFLLE1BQ0gsT0FBTyxFQUFBN0osWUFBWThKLElBRXJCLFFBQ0UsT0FBTyxFQUFBOUosWUFBWWtJIiwiZmlsZSI6ImRvbW8uanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJkb21vXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImRvbW9cIl0gPSBmYWN0b3J5KCk7XG59KSh3aW5kb3csIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAxKTtcbiIsImV4cG9ydCB7IFJlcXVlc3RNZXRob2RzIH0gZnJvbSAnLi9lbnVtcy9yZXF1ZXN0LW1ldGhvZHMnO1xuZXhwb3J0IHsgRG9tb0RhdGFGb3JtYXRzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2RvbW8tZGF0YS1mb3JtYXRzJztcbmV4cG9ydCB7IERhdGFGb3JtYXRzIH0gZnJvbSAnLi9lbnVtcy9kYXRhLWZvcm1hdHMnO1xuZXhwb3J0IHsgRmlsdGVyRGF0YVR5cGVzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1kYXRhLXR5cGVzJztcbmV4cG9ydCB7IEZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXInO1xuXG5leHBvcnQgeyBSZXF1ZXN0T3B0aW9ucywgT2JqZWN0UmVxdWVzdE9wdGlvbnMsIEFycmF5UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVxdWVzdC1vcHRpb25zJztcbmV4cG9ydCB7IFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3F1ZXJ5LXBhcmFtcyc7XG5leHBvcnQgeyBSZXF1ZXN0Qm9keSwgWE1MSHR0cFJlcXVlc3RCb2R5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcXVlc3QtYm9keSc7XG5leHBvcnQgeyBSZXNwb25zZUJvZHksIE9iamVjdFJlc3BvbnNlQm9keSwgQXJyYXlSZXNwb25zZUJvZHkgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVzcG9uc2UtYm9keSc7XG5leHBvcnQgeyBKc29uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2pzb24nO1xuIiwiaW1wb3J0IHtcbiAgUmVxdWVzdE1ldGhvZHMsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBPYmplY3RSZXF1ZXN0T3B0aW9ucyxcbiAgQXJyYXlSZXF1ZXN0T3B0aW9ucyxcbiAgRGF0YUZvcm1hdHMsXG4gIFF1ZXJ5UGFyYW1zLFxuICBGaWx0ZXIsXG4gIFJlcXVlc3RCb2R5LFxuICBYTUxIdHRwUmVxdWVzdEJvZHksXG4gIFJlc3BvbnNlQm9keSxcbiAgT2JqZWN0UmVzcG9uc2VCb2R5LFxuICBBcnJheVJlc3BvbnNlQm9keSxcbn0gZnJvbSBcIi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0IH0gZnJvbSBcIi4vdXRpbHMvZGF0YS1oZWxwZXJzXCI7XG5cbmV4cG9ydCA9IGRvbW87XG5cbmNsYXNzIGRvbW8ge1xuICBzdGF0aWMgcG9zdChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIHBvc3Q8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keT86IFJlcXVlc3RCb2R5LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFQ+O1xuICBzdGF0aWMgcG9zdDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBkb21vSHR0cDxUPihSZXF1ZXN0TWV0aG9kcy5QT1NULCB1cmwsIG9wdGlvbnMsIHRydWUsIGJvZHkpO1xuICB9XG5cbiAgc3RhdGljIHB1dChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIHB1dDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5PzogUmVxdWVzdEJvZHksXG4gICAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8VD47XG4gIHN0YXRpYyBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keT86IFJlcXVlc3RCb2R5LFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gZG9tb0h0dHA8VD4oUmVxdWVzdE1ldGhvZHMuUFVULCB1cmwsIG9wdGlvbnMsIHRydWUsIGJvZHkpO1xuICB9XG5cbiAgc3RhdGljIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiBPYmplY3RSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPE9iamVjdFJlc3BvbnNlQm9keVtdPjtcbiAgc3RhdGljIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiBBcnJheVJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8QXJyYXlSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBnZXQ8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD47XG4gIHN0YXRpYyBnZXQ8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBkb21vSHR0cDxUPihSZXF1ZXN0TWV0aG9kcy5HRVQsIHVybCwgb3B0aW9ucyk7XG4gIH1cblxuICBzdGF0aWMgZGVsZXRlKHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBkZWxldGU8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD47XG4gIHN0YXRpYyBkZWxldGU8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBkb21vSHR0cDxUPihSZXF1ZXN0TWV0aG9kcy5ERUxFVEUsIHVybCwgb3B0aW9ucyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0QWxsKFxuICAgIHVybHM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IE9iamVjdFJlcXVlc3RPcHRpb25zXG4gICk6IFByb21pc2U8T2JqZWN0UmVzcG9uc2VCb2R5W11bXT47XG4gIHN0YXRpYyBnZXRBbGwoXG4gICAgdXJsczogc3RyaW5nW10sXG4gICAgb3B0aW9uczogQXJyYXlSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPEFycmF5UmVzcG9uc2VCb2R5W10+O1xuICBzdGF0aWMgZ2V0QWxsKFxuICAgIHVybHM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc1xuICApOiBQcm9taXNlPFJlc3BvbnNlQm9keVtdPjtcbiAgc3RhdGljIGdldEFsbDxUPih1cmxzOiBzdHJpbmdbXSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUW10+O1xuICBzdGF0aWMgZ2V0QWxsPFQ+KHVybHM6IHN0cmluZ1tdLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFRbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIHVybHMubWFwKGZ1bmN0aW9uICh1cmwpIHtcbiAgICAgICAgcmV0dXJuIGRvbW8uZ2V0PFQ+KHVybCwgb3B0aW9ucyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTGV0IHRoZSBkb21vYXBwIG9wdGlvbmFsbHkgaGFuZGxlIGl0cyBvd24gZGF0YSB1cGRhdGVzLlxuICAgKi9cbiAgc3RhdGljIG9uRGF0YVVwZGF0ZShjYjogKGFsaWFzOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcbiAgICAgIGlmICghaXNWZXJpZmllZE9yaWdpbihldmVudC5vcmlnaW4pKSByZXR1cm47XG5cbiAgICAgIGlmICh0eXBlb2YgZXZlbnQuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJiBldmVudC5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAoIW1lc3NhZ2UuaGFzT3duUHJvcGVydHkoXCJhbGlhc1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGFsaWFzID0gbWVzc2FnZS5hbGlhcztcblxuICAgICAgICAgIC8vIHNlbmQgYWNrbm93bGVkZ2VtZW50IHRvIHByZXZlbnQgYXV0b3JlZnJlc2hcbiAgICAgICAgICBjb25zdCBhY2sgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBldmVudDogXCJhY2tcIixcbiAgICAgICAgICAgIGFsaWFzOiBhbGlhcyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIE9ubHkgV2luZG93UHJveHkgfCBXaW5kb3cgaGF2ZSB0aGUgcG9zdE1lc3NhZ2UgbWV0aG9kIGFuZCB0aGUgdHlwZSBvZiBldmVudC5zb3VyY2UgdmFyaWVzIGJldHdlZW4gYnJvd3NlcnNcbiAgICAgICAgICBpZiAoIShldmVudC5zb3VyY2UgaW5zdGFuY2VvZiBNZXNzYWdlUG9ydCkgJiYgIShldmVudC5zb3VyY2UgaW5zdGFuY2VvZiBTZXJ2aWNlV29ya2VyKSkge1xuICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKGFjaywgZXZlbnQub3JpZ2luKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBpbmZvcm0gZG9tbyBhcHAgd2hpY2ggYWxpYXMgaGFzIGJlZW4gdXBkYXRlZFxuICAgICAgICAgIGNiKGFsaWFzKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc3QgaW5mbyA9XG4gICAgICAgICAgICBcIlRoZXJlIHdhcyBhbiBlcnJvciBpbiBvbkRhdGFVcGRhdGUhIEl0IG1heSBiZSB0aGF0IG91ciBldmVudCBsaXN0ZW5lciBjYXVnaHQgXCIgK1xuICAgICAgICAgICAgXCJhIG1lc3NhZ2UgZnJvbSBhbm90aGVyIHNvdXJjZSBhbmQgdHJpZWQgdG8gcGFyc2UgaXQsIHNvIHlvdXIgdXBkYXRlIHN0aWxsIG1heSBoYXZlIHdvcmtlZC4gXCIgK1xuICAgICAgICAgICAgXCJJZiB5b3Ugd291bGQgbGlrZSBtb3JlIGluZm8sIGhlcmUgaXMgdGhlIGVycm9yOiBcXG5cIjtcbiAgICAgICAgICBjb25zb2xlLndhcm4oaW5mbywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgaW5uZXJDYWxsYmFjayk7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBpbm5lckNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMZXQgdGhlIGRvbW9hcHAgb3B0aW9uYWxseSBoYW5kbGUgb3RoZXIgZXZlbnRzXG4gICAqL1xuICBzdGF0aWMgY2hhbm5lbD86IE1lc3NhZ2VDaGFubmVsO1xuICBzdGF0aWMgY29ubmVjdGVkID0gZmFsc2U7XG4gIHN0YXRpYyBsaXN0ZW5lcnM6IHsgW2luZGV4OiBzdHJpbmddOiBGdW5jdGlvbltdIH0gPSB7XG4gICAgb25GaWx0ZXJzVXBkYXRlOiBbXSxcbiAgfTtcblxuICBzdGF0aWMgY29ubmVjdCA9ICgpID0+IHtcbiAgICBpZiAoZG9tby5jb25uZWN0ZWQpIHJldHVybjtcbiAgICBkb21vLmNvbm5lY3RlZCA9IHRydWU7XG4gICAgZG9tby5jaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeSh7IGV2ZW50OiBcInN1YnNjcmliZVwiIH0pLCBcIipcIiwgW1xuICAgICAgZG9tby5jaGFubmVsLnBvcnQyLFxuICAgIF0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBMZXQgdGhlIGRvbW9hcHAgaGFuZGxlIGl0cyBvd24gZmlsdGVyIHVwZGF0ZXNcbiAgICovXG4gIHN0YXRpYyBvbkZpbHRlcnNVcGRhdGUgPSAoY2FsbGJhY2s6IEZ1bmN0aW9uKSA9PiB7XG4gICAgZG9tby5jb25uZWN0KCk7XG4gICAgY29uc3QgaW5kZXggPSBkb21vLmxpc3RlbmVycy5vbkZpbHRlcnNVcGRhdGUucHVzaChjYWxsYmFjaykgLSAxO1xuXG4gICAgZG9tby5jaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IChlOiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IFtyZXNwb25zZVBvcnRdID0gZS5wb3J0cztcbiAgICAgIGlmIChyZXNwb25zZVBvcnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGUuZGF0YS5ldmVudCA9PT0gXCJmaWx0ZXJzVXBkYXRlZFwiICYmXG4gICAgICAgIGRvbW8ubGlzdGVuZXJzLm9uRmlsdGVyc1VwZGF0ZS5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgcmVzcG9uc2VQb3J0LnBvc3RNZXNzYWdlKHt9KTsgLy8gUHJldmVudHMgdGhlIGFwcCBmcm9tIHJlbG9hZGluZy4gU2F5cyB3ZSd2ZSBoYW5kbGVkIGl0XG4gICAgICAgIGRvbW8ubGlzdGVuZXJzLm9uRmlsdGVyc1VwZGF0ZS5mb3JFYWNoKChjYikgPT4gY2IoZS5kYXRhLmZpbHRlcnMpKTsgLy8gPC0gc3BsaXQgb3V0IG9uRmlsdGVyc1VwZGF0ZSBzbyB0aGF0IHlvdSBjYW4gaGFuZGxlIGVhY2ggbWVzc2FnZSBkaWZmZXJlbnRseSBoZXJlXG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIHVucmVnaXN0ZXJcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9tby5saXN0ZW5lcnMub25GaWx0ZXJzVXBkYXRlLnNwbGljZShpbmRleCwgMSk7XG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogUmVxdWVzdCBhIG5hdmlnYXRpb24gY2hhbmdlXG4gICAqL1xuICBzdGF0aWMgbmF2aWdhdGUodXJsOiBzdHJpbmcsIGlzTmV3V2luZG93OiBib29sZWFuKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGV2ZW50OiBcIm5hdmlnYXRlXCIsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGlzTmV3V2luZG93OiBpc05ld1dpbmRvdyxcbiAgICB9KTtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKG1lc3NhZ2UsIFwiKlwiKTtcbiAgfVxuXG4gIHN0YXRpYyBmaWx0ZXJDb250YWluZXIoZmlsdGVyczogRmlsdGVyW10gfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxcbiAgICAgIHNhZmFyaSA9IC9zYWZhcmkvLnRlc3QodXNlckFnZW50KSxcbiAgICAgIGlvcyA9IC9pcGhvbmV8aXBvZHxpcGFkLy50ZXN0KHVzZXJBZ2VudCk7XG5cbiAgICBjb25zdCBtZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZXZlbnQ6IFwiZmlsdGVyXCIsXG4gICAgICBmaWx0ZXI6IGZpbHRlcnMgJiYgZmlsdGVycy5tYXAoKGZpbHRlcikgPT4gKHtcbiAgICAgICAgY29sdW1uTmFtZTogZmlsdGVyLmNvbHVtbixcbiAgICAgICAgb3BlcmF0b3I6IGZpbHRlci5vcGVyYXRvciB8fCAoZmlsdGVyIGFzIGFueSkub3BlcmFuZCwgLy8gTW9zdCBmaWx0ZXIgY29kZSAoaW5jbHVkaW5nIFBob2VuaXgpIHN0aWxsIHVzZXMgXCJvcGVyYW5kXCIgaW5zdGVhZCBvZiBcIm9wZXJhdG9yXCJcbiAgICAgICAgdmFsdWVzOiBmaWx0ZXIudmFsdWVzLFxuICAgICAgICBkYXRhVHlwZTogZmlsdGVyLmRhdGFUeXBlLFxuICAgICAgfSkpLFxuICAgIH0pO1xuXG4gICAgaWYgKGlvcyAmJiAhc2FmYXJpKSB7XG4gICAgICAod2luZG93IGFzIGFueSkud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5kb21vZmlsdGVyLnBvc3RNZXNzYWdlKFxuICAgICAgICBmaWx0ZXJzLm1hcCgoZmlsdGVyKSA9PiAoe1xuICAgICAgICAgIGNvbHVtbjogZmlsdGVyLmNvbHVtbixcbiAgICAgICAgICBvcGVyYW5kOiBmaWx0ZXIub3BlcmF0b3IgfHwgKGZpbHRlciBhcyBhbnkpLm9wZXJhbmQsXG4gICAgICAgICAgdmFsdWVzOiBmaWx0ZXIudmFsdWVzLFxuICAgICAgICAgIGRhdGFUeXBlOiBmaWx0ZXIuZGF0YVR5cGUsXG4gICAgICAgIH0pKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShtZXNzYWdlLCBcIipcIik7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGVudiA9IGdldFF1ZXJ5UGFyYW1zKCk7XG5cbiAgc3RhdGljIF9fdXRpbCA9IHtcbiAgICBpc1ZlcmlmaWVkT3JpZ2luLFxuICAgIGdldFF1ZXJ5UGFyYW1zLFxuICAgIHNldEZvcm1hdEhlYWRlcnMsXG4gICAgaXNTdWNjZXNzLFxuICB9O1xufVxuXG5jb25zdCB0b2tlbiA9ICh3aW5kb3cgYXMgYW55KS5fX1JZVVVfQVVUSEVOVElDQVRJT05fVE9LRU5fXztcblxuZnVuY3Rpb24gZG9tb0h0dHAoXG4gIG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsXG4gIHVybDogc3RyaW5nLFxuICBvcHRpb25zOiBPYmplY3RSZXF1ZXN0T3B0aW9ucyxcbiAgYXN5bmM/OiBib29sZWFuLFxuICBib2R5PzogUmVxdWVzdEJvZHlcbik6IFByb21pc2U8T2JqZWN0UmVzcG9uc2VCb2R5W10+O1xuZnVuY3Rpb24gZG9tb0h0dHAoXG4gIG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsXG4gIHVybDogc3RyaW5nLFxuICBvcHRpb25zOiBBcnJheVJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxBcnJheVJlc3BvbnNlQm9keT47XG5mdW5jdGlvbiBkb21vSHR0cChcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuZnVuY3Rpb24gZG9tb0h0dHA8VD4oXG4gIG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsXG4gIHVybDogc3RyaW5nLFxuICBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyxcbiAgYXN5bmM/OiBib29sZWFuLFxuICBib2R5PzogUmVxdWVzdEJvZHlcbik6IFByb21pc2U8VD47XG5mdW5jdGlvbiBkb21vSHR0cChcbiAgbWV0aG9kOiBSZXF1ZXN0TWV0aG9kcyxcbiAgdXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zLFxuICBhc3luYz86IGJvb2xlYW4sXG4gIGJvZHk/OiBSZXF1ZXN0Qm9keVxuKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+IHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoXG4gICAgcmVzb2x2ZTogKHZhbHVlPzogUmVzcG9uc2VCb2R5KSA9PiB2b2lkLFxuICAgIHJlamVjdDogKHJlYXNvbj86IEVycm9yKSA9PiB2b2lkXG4gICkge1xuICAgIC8vIERvIHRoZSB1c3VhbCBYSFIgc3R1ZmZcbiAgICBsZXQgcmVxOiBYTUxIdHRwUmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIGlmIChhc3luYykge1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwpO1xuICAgIH1cbiAgICBzZXRGb3JtYXRIZWFkZXJzKHJlcSwgdXJsLCBvcHRpb25zKTtcbiAgICBzZXRDb250ZW50SGVhZGVycyhyZXEsIG9wdGlvbnMpO1xuICAgIHNldEF1dGhUb2tlbkhlYWRlcihyZXEpO1xuICAgIHNldFJlc3BvbnNlVHlwZShyZXEsIG9wdGlvbnMpO1xuXG4gICAgcmVxLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBkYXRhO1xuICAgICAgLy8gVGhpcyBpcyBjYWxsZWQgZXZlbiBvbiA0MDQgZXRjIHNvIGNoZWNrIHRoZSBzdGF0dXNcbiAgICAgIGlmIChpc1N1Y2Nlc3MocmVxLnN0YXR1cykpIHtcbiAgICAgICAgaWYgKFtcImNzdlwiLCBcImV4Y2VsXCJdLmluY2x1ZGVzKG9wdGlvbnMuZm9ybWF0KSB8fCAhcmVxLnJlc3BvbnNlKSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXEucmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLnJlc3BvbnNlVHlwZSA9PT0gXCJibG9iXCIpIHtcbiAgICAgICAgICByZXNvbHZlKFxuICAgICAgICAgICAgbmV3IEJsb2IoW3JlcS5yZXNwb25zZV0sIHtcbiAgICAgICAgICAgICAgdHlwZTogcmVxLmdldFJlc3BvbnNlSGVhZGVyKFwiY29udGVudC10eXBlXCIpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3BvbnNlU3RyID0gcmVxLnJlc3BvbnNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIGlmKCFyZXNwb25zZVN0cikge1xuICAgICAgICAgIC8vICAgcmVzcG9uc2VTdHIgPSBcInt9XCI7XG4gICAgICAgICAgLy8gfVxuICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlU3RyKTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICByZWplY3QoRXJyb3IoXCJJbnZhbGlkIEpTT04gcmVzcG9uc2VcIikpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXNvbHZlIHRoZSBwcm9taXNlIHdpdGggdGhlIHJlc3BvbnNlIHRleHRcbiAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSByZWplY3Qgd2l0aCB0aGUgc3RhdHVzIHRleHRcbiAgICAgICAgLy8gd2hpY2ggd2lsbCBob3BlZnVsbHkgYmUgYSBtZWFuaW5nZnVsIGVycm9yXG4gICAgICAgIHJlamVjdChFcnJvcihyZXEuc3RhdHVzVGV4dCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbmV0d29yayBlcnJvcnNcbiAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlamVjdChFcnJvcihcIk5ldHdvcmsgRXJyb3JcIikpO1xuICAgIH07XG5cbiAgICAvLyBNYWtlIHRoZSByZXF1ZXN0XG4gICAgaWYgKGJvZHkpIHtcbiAgICAgIGlmICghb3B0aW9ucy5jb250ZW50VHlwZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlID09PSBEYXRhRm9ybWF0cy5KU09OKSB7XG4gICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICAgICAgLy8gTWFrZSB0aGUgcmVxdWVzdFxuICAgICAgICByZXEuc2VuZChqc29uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGJvZHkgY2FuIG5vIGxvbmdlciBiZSBKU09OXG4gICAgICAgIHJlcS5zZW5kKGJvZHkgYXMgWE1MSHR0cFJlcXVlc3RCb2R5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVxLnNlbmQoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc1N1Y2Nlc3Moc3RhdHVzOiBudW1iZXIpIHtcbiAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xufVxuXG5mdW5jdGlvbiBpc1ZlcmlmaWVkT3JpZ2luKG9yaWdpbjogc3RyaW5nKSB7XG4gIGNvbnN0IHdoaXRlbGlzdGVkID0gb3JpZ2luLm1hdGNoKFxuICAgIFwiXmh0dHBzPzovLyhbXi9dK1suXSk/KGRvbW98ZG9tb3RlY2h8ZG9tb3JpZykuKGNvbXxpbyk/KC8uKik/JFwiXG4gICk7XG4gIGNvbnN0IGJsYWNrbGlzdGVkID0gb3JpZ2luLm1hdGNoKFwiKC4qKS4oZG9tb2FwcHMpLiguKilcIik7XG4gIHJldHVybiAhIXdoaXRlbGlzdGVkICYmICFibGFja2xpc3RlZDtcbn1cblxuZnVuY3Rpb24gZ2V0UXVlcnlQYXJhbXMoKTogUXVlcnlQYXJhbXMge1xuICBjb25zdCBxdWVyeSA9IGxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSk7XG4gIGxldCByZXN1bHQ6IHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICBxdWVyeS5zcGxpdChcIiZcIikuZm9yRWFjaChmdW5jdGlvbiAocGFydCkge1xuICAgIGNvbnN0IGl0ZW0gPSBwYXJ0LnNwbGl0KFwiPVwiKTtcbiAgICByZXN1bHRbaXRlbVswXV0gPSBkZWNvZGVVUklDb21wb25lbnQoaXRlbVsxXSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBzZXRGb3JtYXRIZWFkZXJzKFxuICByZXE6IFhNTEh0dHBSZXF1ZXN0LFxuICB1cmw6IHN0cmluZyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zXG4pIHtcbiAgaWYgKHVybC5pbmRleE9mKFwiZGF0YS92MVwiKSA9PT0gLTEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gc2V0IGZvcm1hdFxuICBjb25zdCByZXF1ZXN0Rm9ybWF0OiBEYXRhRm9ybWF0cyA9XG4gICAgb3B0aW9ucy5mb3JtYXQgIT09IHVuZGVmaW5lZFxuICAgICAgPyBkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0KG9wdGlvbnMuZm9ybWF0KVxuICAgICAgOiBEYXRhRm9ybWF0cy5ERUZBVUxUO1xuXG4gIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKFwiQWNjZXB0XCIsIHJlcXVlc3RGb3JtYXQpO1xufVxuXG5mdW5jdGlvbiBzZXRDb250ZW50SGVhZGVycyhyZXE6IFhNTEh0dHBSZXF1ZXN0LCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMuY29udGVudFR5cGUpIHtcbiAgICAvLyBzZXQgY29udGVudCB0eXBlIGlmIHVzZXIgcGFzc2VkIG9wdGlvblxuICAgIGlmIChvcHRpb25zLmNvbnRlbnRUeXBlICE9PSBcIm11bHRpcGFydFwiKSB7XG4gICAgICByZXEuc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBvcHRpb25zLmNvbnRlbnRUeXBlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgRGF0YUZvcm1hdHMuSlNPTik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0QXV0aFRva2VuSGVhZGVyKHJlcTogWE1MSHR0cFJlcXVlc3QpIHtcbiAgaWYgKHRva2VuKSB7XG4gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoJ1gtRE9NTy1SeXV1LVRva2VuJywgdG9rZW4pO1xuICB9XG59XG5cblxuZnVuY3Rpb24gc2V0UmVzcG9uc2VUeXBlKHJlcTogWE1MSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykge1xuICAvL3NldCByZXNwb25zZSB0eXBlIGlmIHVzZXIgcGFzc2VkIG9wdGlvblxuICBpZiAob3B0aW9ucy5yZXNwb25zZVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlcS5yZXNwb25zZVR5cGUgPSBvcHRpb25zLnJlc3BvbnNlVHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVOb2RlKG5vZGU6IEhUTUxFbGVtZW50KXtcbiAgaWYgKG5vZGUgPT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICByZXR1cm4gcHJvY2Vzc0JvZHkobm9kZSk7XG4gIH1cbiAgbGV0IGF0dHI7XG4gIGxldCB1cmw7XG4gIGlmIChub2RlLmRhdGFzZXQgJiYgbm9kZS5kYXRhc2V0LmRvbW9IcmVmKSB7XG4gICAgYXR0ciA9ICdocmVmJztcbiAgICB1cmwgPSBub2RlLmRhdGFzZXQuZG9tb0hyZWY7XG4gIH0gZWxzZSBpZiAobm9kZS5kYXRhc2V0ICYmIG5vZGUuZGF0YXNldC5kb21vU3JjKSB7XG4gICAgYXR0ciA9ICdzcmMnO1xuICAgIHVybCA9IG5vZGUuZGF0YXNldC5kb21vU3JjO1xuICB9IGVsc2UgaWYgKG5vZGUuaGFzQXR0cmlidXRlICYmIG5vZGUuaGFzQXR0cmlidXRlKCdocmVmJykpIHtcbiAgICBhdHRyID0gJ2hyZWYnO1xuICAgIHVybCA9IG5vZGUuZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gIH0gZWxzZSBpZiAobm9kZS5oYXNBdHRyaWJ1dGUgJiYgbm9kZS5oYXNBdHRyaWJ1dGUoJ3NyYycpKSB7XG4gICAgYXR0ciA9ICdzcmMnO1xuICAgIHVybCA9IG5vZGUuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgfVxuXG4gIGlmICh1cmwgJiYgdG9rZW4pIHtcbiAgICBjb25zdCBuZXdVcmwgPSBuZXcgVVJMKHVybCwgZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luKTtcbiAgICBjb25zdCBpc1JlbGF0aXZlVXJsID0gKG5ld1VybCkub3JpZ2luID09PSBkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW47XG4gICAgaWYgKGlzUmVsYXRpdmVVcmwpIHtcbiAgICAgIG5ld1VybC5zZWFyY2hQYXJhbXMuYXBwZW5kKCdycHQnLCB0b2tlbik7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyLCBuZXdVcmwuaHJlZik7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBwcm9jZXNzQm9keShub2RlOiBFbGVtZW50KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGhhbmRsZU5vZGUoPEhUTUxFbGVtZW50Pm5vZGUuY2hpbGRyZW5baV0pO1xuICB9XG59XG5cbmNvbnN0IG9iID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICBmb3IgKGNvbnN0IHJlY29yZCBvZiBtdXRhdGlvbnMpIHtcbiAgICByZWNvcmQuYWRkZWROb2Rlcy5mb3JFYWNoKGhhbmRsZU5vZGUpO1xuICB9XG59KTtcbm9iLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTtcbm9iLm9ic2VydmUoZG9jdW1lbnQuaGVhZCwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4iLCJleHBvcnQgZW51bSBSZXF1ZXN0TWV0aG9kcyB7XG4gIGdldCA9ICdHRVQnLFxuICBHRVQgPSAnR0VUJyxcbiAgcG9zdCA9ICdQT1NUJyxcbiAgUE9TVCA9ICdQT1NUJyxcbiAgcHV0ID0gJ1BVVCcsXG4gIFBVVCA9ICdQVVQnLFxuICBkZWxldGUgPSAnREVMRVRFJyxcbiAgREVMRVRFID0gJ0RFTEVURScsXG59XG4iLCIvKipcbiAqIFN1cHBvcnRlZCBgYWNjZXB0YCBoZWFkZXJzIGZvciBjb250cm9sbGluZyB0aGUgZm9ybWF0XG4gKiBvZiB0aGUgZGF0YSByZXR1cm5lZCBmcm9tIERvbW8uXG4gKlxuICogU2VlIFtkZXZlbG9wZXIuZG9tby5jb21dKGh0dHBzOi8vZGV2ZWxvcGVyLmRvbW8uY29tL2RvY3MvZGV2LXN0dWRpby1yZWZlcmVuY2VzL2RhdGEtYXBpI0RhdGElMjBGb3JtYXRzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGVudW0gRGF0YUZvcm1hdHMge1xuICBERUZBVUxUID0gJ2FwcGxpY2F0aW9uL2FycmF5LW9mLW9iamVjdHMnLFxuICBBUlJBWV9PRl9PQkpFQ1RTID0gJ2FwcGxpY2F0aW9uL2FycmF5LW9mLW9iamVjdHMnLFxuICBKU09OID0gJ2FwcGxpY2F0aW9uL2pzb24nLFxuICBDU1YgPSAndGV4dC9jc3YnLFxuICBFWENFTCA9ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gIFBMQUlOID0gJ3RleHQvcGxhaW4nXG59IiwiZXhwb3J0IGVudW0gRmlsdGVyRGF0YVR5cGVze1xuICBOVU1FUklDID0gXCJOVU1FUklDXCIsXG4gIERBVEUgPSBcIkRBVEVcIixcbiAgREFURVRJTUUgPSBcIkRBVEVUSU1FXCIsXG4gIFNUUklORyA9IFwiU1RSSU5HXCIsXG59XG4iLCJpbXBvcnQgeyBEb21vRGF0YUZvcm1hdHMsIERhdGFGb3JtYXRzIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRvbW9Gb3JtYXRUb1JlcXVlc3RGb3JtYXQoZm9ybWF0OiBEb21vRGF0YUZvcm1hdHMpOiBEYXRhRm9ybWF0cyB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnYXJyYXktb2Ytb2JqZWN0cyc6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5BUlJBWV9PRl9PQkpFQ1RTO1xuICAgIH1cbiAgICBjYXNlICdhcnJheS1vZi1hcnJheXMnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuSlNPTjtcbiAgICB9XG4gICAgY2FzZSAnZXhjZWwnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuRVhDRUw7XG4gICAgfVxuICAgIGNhc2UgJ2Nzdic6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5DU1Y7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5ERUZBVUxUO1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
@@ -5,3 +5,3 @@ export { RequestMethods } from './enums/request-methods'; | ||
export { FilterDataTypes } from './interfaces/filter-data-types'; | ||
export { FilterOperators } from './interfaces/filter-operators'; | ||
export { Filter } from './interfaces/filter'; | ||
export { RequestOptions, ObjectRequestOptions, ArrayRequestOptions } from './interfaces/request-options'; | ||
@@ -8,0 +8,0 @@ export { QueryParams } from './interfaces/query-params'; |
@@ -1,1 +0,6 @@ | ||
export declare type FilterDataTypes = 'DATE' | 'DATETIME' | 'NUMERIC' | 'STRING'; | ||
export declare enum FilterDataTypes { | ||
NUMERIC = "NUMERIC", | ||
DATE = "DATE", | ||
DATETIME = "DATETIME", | ||
STRING = "STRING" | ||
} |
/** | ||
* These are pulled directly from the backend code, | ||
* which is not consistent in naming styles | ||
* Referenced from com/domo/api/content/client/views/model/Operator.java | ||
*/ | ||
export declare type FilterOperators = 'is' | 'is not' | 'IN' | 'NOT_IN' | 'is greater than' | 'is above average' | 'is greater than or equal to' | 'is less than' | 'is below average' | 'is less than or equal to' | 'is between' | 'is not between' | 'like' | 'not like' | 'contains' | 'not contains' | 'starts with' | 'not starts with' | 'ends with' | 'not ends with'; | ||
export declare enum FilterOperatorsString { | ||
IN = "IN", | ||
NOT_IN = "NOT_IN", | ||
CONTAINS = "CONTAINS", | ||
NOT_CONTAINS = "NOT_CONTAINS", | ||
STARTS_WITH = "STARTS_WITH", | ||
NOT_STARTS_WITH = "NOT_STARTS_WITH", | ||
ENDS_WITH = "ENDS_WITH", | ||
NOT_ENDS_WITH = "NOT_ENDS_WITH" | ||
} | ||
export declare enum FilterOperatorsNumeric { | ||
GREATER_THAN = "GREATER_THAN", | ||
GREAT_THAN_EQUALS_TO = "GREAT_THAN_EQUALS_TO", | ||
LESS_THAN = "LESS_THAN", | ||
LESS_THAN_EQUALS_TO = "LESS_THAN_EQUALS_TO", | ||
BETWEEN = "BETWEEN", | ||
EQUALS = "EQUALS", | ||
NOT_EQUALS = "NOT_EQUALS" | ||
} |
{ | ||
"name": "ryuu.js", | ||
"version": "4.1.0", | ||
"version": "4.1.1", | ||
"description": "Ryuu JavaScript Utility Library", | ||
@@ -5,0 +5,0 @@ "main": "dist/domo.js", |
@@ -8,4 +8,3 @@ import { | ||
QueryParams, | ||
FilterDataTypes, | ||
FilterOperators, | ||
Filter, | ||
RequestBody, | ||
@@ -120,3 +119,5 @@ XMLHttpRequestBody, | ||
}); | ||
if (event.source instanceof Window) { | ||
// Only WindowProxy | Window have the postMessage method and the type of event.source varies between browsers | ||
if (!(event.source instanceof MessagePort) && !(event.source instanceof ServiceWorker)) { | ||
event.source.postMessage(ack, event.origin); | ||
@@ -196,30 +197,3 @@ } | ||
static filterContainer( | ||
filters: ( | ||
| { | ||
column: string; | ||
operator: FilterOperators; | ||
values: (string | number | Date)[]; | ||
dataType: FilterDataTypes; | ||
} | ||
| { | ||
column: string; | ||
operator: FilterOperators; | ||
values: Date[]; | ||
dataType: "DATE" | "DATETIME"; | ||
} | ||
| { | ||
column: string; | ||
operator: FilterOperators; | ||
values: number[]; | ||
dataType: "NUMERIC"; | ||
} | ||
| { | ||
column: string; | ||
operator: FilterOperators; | ||
values: string[]; | ||
dataType: "STRING"; | ||
} | ||
)[] | ||
): void { | ||
static filterContainer(filters: Filter[] | null): void { | ||
const userAgent = window.navigator.userAgent.toLowerCase(), | ||
@@ -231,5 +205,5 @@ safari = /safari/.test(userAgent), | ||
event: "filter", | ||
filter: filters.map((filter) => ({ | ||
filter: filters && filters.map((filter) => ({ | ||
columnName: filter.column, | ||
operator: filter.operator, | ||
operator: filter.operator || (filter as any).operand, // Most filter code (including Phoenix) still uses "operand" instead of "operator" | ||
values: filter.values, | ||
@@ -244,3 +218,3 @@ dataType: filter.dataType, | ||
column: filter.column, | ||
operand: filter.operator, | ||
operand: filter.operator || (filter as any).operand, | ||
values: filter.values, | ||
@@ -247,0 +221,0 @@ dataType: filter.dataType, |
@@ -5,3 +5,3 @@ export { RequestMethods } from './enums/request-methods'; | ||
export { FilterDataTypes } from './interfaces/filter-data-types'; | ||
export { FilterOperators } from './interfaces/filter-operators'; | ||
export { Filter } from './interfaces/filter'; | ||
@@ -8,0 +8,0 @@ export { RequestOptions, ObjectRequestOptions, ArrayRequestOptions } from './interfaces/request-options'; |
@@ -1,5 +0,6 @@ | ||
export type FilterDataTypes = | ||
'DATE' | | ||
'DATETIME' | | ||
'NUMERIC' | | ||
'STRING'; | ||
export enum FilterDataTypes{ | ||
NUMERIC = "NUMERIC", | ||
DATE = "DATE", | ||
DATETIME = "DATETIME", | ||
STRING = "STRING", | ||
} |
/** | ||
* These are pulled directly from the backend code, | ||
* which is not consistent in naming styles | ||
* Referenced from com/domo/api/content/client/views/model/Operator.java | ||
*/ | ||
export enum FilterOperatorsString { | ||
IN = "IN", | ||
NOT_IN = "NOT_IN", | ||
CONTAINS = "CONTAINS", | ||
NOT_CONTAINS = "NOT_CONTAINS", | ||
STARTS_WITH = "STARTS_WITH", | ||
NOT_STARTS_WITH = "NOT_STARTS_WITH", | ||
ENDS_WITH = "ENDS_WITH", | ||
NOT_ENDS_WITH = "NOT_ENDS_WITH", | ||
} | ||
export type FilterOperators = 'is' | ||
| 'is not' | ||
| 'IN' | ||
| 'NOT_IN' | ||
| 'is greater than' | ||
| 'is above average' | ||
| 'is greater than or equal to' | ||
| 'is less than' | ||
| 'is below average' | ||
| 'is less than or equal to' | ||
| 'is between' | ||
| 'is not between' | ||
| 'like' | ||
| 'not like' | ||
| 'contains' | ||
| 'not contains' | ||
| 'starts with' | ||
| 'not starts with' | ||
| 'ends with' | ||
| 'not ends with'; | ||
export enum FilterOperatorsNumeric { | ||
GREATER_THAN = 'GREATER_THAN', | ||
GREAT_THAN_EQUALS_TO = 'GREAT_THAN_EQUALS_TO', | ||
LESS_THAN = 'LESS_THAN', | ||
LESS_THAN_EQUALS_TO = 'LESS_THAN_EQUALS_TO', | ||
BETWEEN = 'BETWEEN', | ||
EQUALS = 'EQUALS', | ||
NOT_EQUALS = 'NOT_EQUALS' | ||
} |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
130752
43
1022
1