Comparing version 3.0.1 to 3.0.2
@@ -1,2 +0,2 @@ | ||
import { RequestOptions, ObjectRequestOptions, ArrayRequestOptions, QueryParams, FilterDataTypes, FilterOperators, RequestBody, ResponseBody, ObjectResponseBody, ArrayResponseBody } from './models'; | ||
import { RequestOptions, ObjectRequestOptions, ArrayRequestOptions, QueryParams, FilterOperators, RequestBody, ResponseBody, ObjectResponseBody, ArrayResponseBody } from './models'; | ||
export = domo; | ||
@@ -26,5 +26,5 @@ declare class domo { | ||
static navigate(url: string, isNewWindow: boolean): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: string[], dataType: FilterDataTypes.STRING): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: number[], dataType: FilterDataTypes.NUMERIC): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: Date[], dataType: FilterDataTypes.DATE | FilterDataTypes.DATETIME): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: string[], dataType: 'STRING'): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: number[], dataType: 'NUMERIC'): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: Date[], dataType: 'DATE' | 'DATETIME'): void; | ||
static env: QueryParams; | ||
@@ -31,0 +31,0 @@ static __util: { |
/*! | ||
* domo.js v3.0.1 | ||
* domo.js v3.0.2 | ||
* 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 r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=r(2);t.RequestMethods=o.RequestMethods;var n=r(3);t.DataFormats=n.DataFormats;var a=r(4);t.FilterDataTypes=a.FilterDataTypes;var s=r(5);t.FilterOperators=s.FilterOperators},function(e,t,r){"use strict";var o=r(0),n=r(6),a=function(){function e(){}return e.post=function(e,t,r){return s(o.RequestMethods.POST,e,r,!0,t)},e.put=function(e,t,r){return s(o.RequestMethods.PUT,e,r,!0,t)},e.get=function(e,t){return s(o.RequestMethods.GET,e,t)},e.delete=function(e,t){return s(o.RequestMethods.DELETE,e,t)},e.getAll=function(t,r){return Promise.all(t.map((function(t){return e.get(t,r)})))},e.onDataUpdate=function(e){window.addEventListener("message",(function(t){if(u(t.origin)&&"string"==typeof t.data&&t.data.length>0)try{var r=JSON.parse(t.data);if(!r.hasOwnProperty("alias"))return;var o=r.alias,n=JSON.stringify({event:"ack",alias:o});t.source instanceof Window&&t.source.postMessage(n,t.origin),e(o)}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)}}))},e.navigate=function(e,t){var r=JSON.stringify({event:"navigate",url:e,isNewWindow:t});window.parent.postMessage(r,"*")},e.filterContainer=function(e,t,r,o){var n=window.navigator.userAgent.toLowerCase(),a=/safari/.test(n),s=/iphone|ipod|ipad/.test(n),i=JSON.stringify({event:"filter",filter:{columnName:e,operator:t,values:r,dataType:o}});s&&!a?window.webkit.messageHandlers.domofilter.postMessage({column:e,operand:t,values:r,dataType:o}):window.parent.postMessage(i,"*")},e.env=c(),e.__util={isVerifiedOrigin:u,getQueryParams:c,setFormatHeaders:f,isSuccess:i},e}();function s(e,t,r,n,a){return r=r||{},new Promise((function(s,u){var c=new XMLHttpRequest;if(n?c.open(e,t,n):c.open(e,t),f(c,t,r),function(e,t){t.contentType?"multipart"!==t.contentType&&e.setRequestHeader("Content-Type",t.contentType.toString()):e.setRequestHeader("Content-Type",o.DataFormats.JSON)}(c,r),function(e,t){void 0!==t.responseType&&(e.responseType=t.responseType)}(c,r),function(e,t){if(t.headers){Object.keys(t.headers).forEach((function(r){return e.setRequestHeader(r,t.headers[r])}))}}(c,r),c.onload=function(){var e;if(i(c.status)){!["csv","excel"].includes(r.format)&&c.response||s(c.response),"blob"===r.responseType&&s(new Blob([c.response],{type:c.getResponseHeader("content-type")}));var t=c.response;try{e=JSON.parse(t)}catch(e){return void u(Error("Invalid JSON response"))}s(e)}else u(Error(c.statusText))},c.onerror=function(){u(Error("Network Error"))},a)if(r.contentType&&r.contentType!==o.DataFormats.JSON)c.send(a);else{var p=JSON.stringify(a);c.send(p)}else c.send()}))}function i(e){return e>=200&&e<300}function u(e){var t=e.match("^https?://([^/]+[.])?(domo|domotech|domorig).(com|io)?(/.*)?$"),r=e.match("(.*).(domoapps).(.*)");return!!t&&!r}function c(){var e=location.search.substr(1),t={};return e.split("&").forEach((function(e){var r=e.split("=");t[r[0]]=decodeURIComponent(r[1])})),t}function f(e,t,r){if(-1!==t.indexOf("data/v1")){var a=void 0!==r.format?n.domoFormatToRequestFormat(r.format):o.DataFormats.DEFAULT;e.setRequestHeader("Accept",a)}}e.exports=a},function(e,t,r){"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,r){"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,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.DATE="DATE",e.DATETIME="DATETIME",e.NUMERIC="NUMERIC",e.STRING="STRING"}(t.FilterDataTypes||(t.FilterDataTypes={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.IS="is",e.IS_NOT="is not",e.IN="IN",e.NOT_IN="NOT_IN",e.IS_GREATER_THAN="is greater than",e.IS_ABOVE_AVERAGE="is above average",e.IS_GREATER_THAN_OR_EQUAL_TO="is greater than or equal to",e.IS_LESS_THAN="is less than",e.IS_BELOW_AVERAGE="is below average",e.IS_LESS_THAN_OR_EQUAL_TO="is less than or equal to",e.IS_BETWEEN="is between",e.IS_NOT_BETWEEN="is not between",e.LIKE="like",e.NOT_LIKE="not like",e.CONTAINS="contains",e.NOT_CONTAINS="not contains",e.STARTS_WITH="starts with",e.NOT_STARTS_WITH="not starts with",e.ENDS_WITH="ends with",e.NOT_ENDS_WITH="not ends with"}(t.FilterOperators||(t.FilterOperators={}))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=r(0);t.domoFormatToRequestFormat=function(e){switch(e){case"array-of-objects":return o.DataFormats.ARRAY_OF_OBJECTS;case"array-of-arrays":return o.DataFormats.JSON;case"excel":return o.DataFormats.EXCEL;case"csv":return o.DataFormats.CSV;default:return o.DataFormats.DEFAULT}}}])})); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2luZGV4LnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvZG9tby50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9lbnVtcy9yZXF1ZXN0LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvZW51bXMvZGF0YS1mb3JtYXRzLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2VudW1zL2ZpbHRlci1kYXRhLXR5cGVzLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2VudW1zL2ZpbHRlci1vcGVyYXRvcnMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy91dGlscy9kYXRhLWhlbHBlcnMudHMiXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwid2luZG93IiwiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIlJlcXVlc3RNZXRob2RzIiwiRGF0YUZvcm1hdHMiLCJGaWx0ZXJEYXRhVHlwZXMiLCJGaWx0ZXJPcGVyYXRvcnMiLCJwb3N0IiwidXJsIiwiYm9keSIsIm9wdGlvbnMiLCJkb21vSHR0cCIsIlBPU1QiLCJwdXQiLCJQVVQiLCJHRVQiLCJkZWxldGUiLCJERUxFVEUiLCJnZXRBbGwiLCJ1cmxzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImRvbW8iLCJvbkRhdGFVcGRhdGUiLCJjYiIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsImlzVmVyaWZpZWRPcmlnaW4iLCJvcmlnaW4iLCJkYXRhIiwibGVuZ3RoIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsImFsaWFzIiwiYWNrIiwic3RyaW5naWZ5Iiwic291cmNlIiwiV2luZG93IiwicG9zdE1lc3NhZ2UiLCJlcnIiLCJjb25zb2xlIiwid2FybiIsIm5hdmlnYXRlIiwiaXNOZXdXaW5kb3ciLCJwYXJlbnQiLCJmaWx0ZXJDb250YWluZXIiLCJjb2x1bW4iLCJvcGVyYXRvciIsInZhbHVlcyIsImRhdGFUeXBlIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidG9Mb3dlckNhc2UiLCJzYWZhcmkiLCJ0ZXN0IiwiaW9zIiwiZmlsdGVyIiwiY29sdW1uTmFtZSIsIndlYmtpdCIsIm1lc3NhZ2VIYW5kbGVycyIsImRvbW9maWx0ZXIiLCJvcGVyYW5kIiwiZW52IiwiZ2V0UXVlcnlQYXJhbXMiLCJfX3V0aWwiLCJzZXRGb3JtYXRIZWFkZXJzIiwiaXNTdWNjZXNzIiwibWV0aG9kIiwiYXN5bmMiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVxIiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwiY29udGVudFR5cGUiLCJzZXRSZXF1ZXN0SGVhZGVyIiwidG9TdHJpbmciLCJzZXRDb250ZW50SGVhZGVycyIsInVuZGVmaW5lZCIsInJlc3BvbnNlVHlwZSIsInNldFJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJrZXlzIiwiZm9yRWFjaCIsInNldEhlYWRlcnMiLCJvbmxvYWQiLCJzdGF0dXMiLCJpbmNsdWRlcyIsImZvcm1hdCIsInJlc3BvbnNlIiwiQmxvYiIsInR5cGUiLCJnZXRSZXNwb25zZUhlYWRlciIsInJlc3BvbnNlU3RyIiwiZXgiLCJFcnJvciIsInN0YXR1c1RleHQiLCJvbmVycm9yIiwic2VuZCIsImpzb24iLCJ3aGl0ZWxpc3RlZCIsIm1hdGNoIiwiYmxhY2tsaXN0ZWQiLCJxdWVyeSIsImxvY2F0aW9uIiwic2VhcmNoIiwic3Vic3RyIiwicmVzdWx0Iiwic3BsaXQiLCJwYXJ0IiwiaXRlbSIsImRlY29kZVVSSUNvbXBvbmVudCIsImluZGV4T2YiLCJyZXF1ZXN0Rm9ybWF0IiwiZG9tb0Zvcm1hdFRvUmVxdWVzdEZvcm1hdCIsIkFSUkFZX09GX09CSkVDVFMiLCJFWENFTCIsIkNTViIsIkRFRkFVTFQiXSwibWFwcGluZ3MiOiI7Ozs7Q0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsSUFDUSxtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLEdBQUlILEdBQ2UsaUJBQVpDLFFBQ2RBLFFBQWMsS0FBSUQsSUFFbEJELEVBQVcsS0FBSUMsSUFSakIsQ0FTR0ssUUFBUSxXQUNYLE8sWUNURSxJQUFJQyxFQUFtQixHQUd2QixTQUFTQyxFQUFvQkMsR0FHNUIsR0FBR0YsRUFBaUJFLEdBQ25CLE9BQU9GLEVBQWlCRSxHQUFVUCxRQUduQyxJQUFJQyxFQUFTSSxFQUFpQkUsR0FBWSxDQUN6Q0MsRUFBR0QsRUFDSEUsR0FBRyxFQUNIVCxRQUFTLElBVVYsT0FOQVUsRUFBUUgsR0FBVUksS0FBS1YsRUFBT0QsUUFBU0MsRUFBUUEsRUFBT0QsUUFBU00sR0FHL0RMLEVBQU9RLEdBQUksRUFHSlIsRUFBT0QsUUEwRGYsT0FyREFNLEVBQW9CTSxFQUFJRixFQUd4QkosRUFBb0JPLEVBQUlSLEVBR3hCQyxFQUFvQlEsRUFBSSxTQUFTZCxFQUFTZSxFQUFNQyxHQUMzQ1YsRUFBb0JXLEVBQUVqQixFQUFTZSxJQUNsQ0csT0FBT0MsZUFBZW5CLEVBQVNlLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVYsRUFBb0JnQixFQUFJLFNBQVN0QixH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aUgsaUJBRXJCLElBQUssa0JBQ0gsT0FBTyxFQUFBakgsWUFBWTZCLEtBRXJCLElBQUssUUFDSCxPQUFPLEVBQUE3QixZQUFZa0gsTUFFckIsSUFBSyxNQUNILE9BQU8sRUFBQWxILFlBQVltSCxJQUVyQixRQUNFLE9BQU8sRUFBQW5ILFlBQVlvSCIsImZpbGUiOiJkb21vLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiZG9tb1wiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJkb21vXCJdID0gZmFjdG9yeSgpO1xufSkod2luZG93LCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMSk7XG4iLCJleHBvcnQgeyBSZXF1ZXN0TWV0aG9kcyB9IGZyb20gJy4vZW51bXMvcmVxdWVzdC1tZXRob2RzJztcbmV4cG9ydCB7IERvbW9EYXRhRm9ybWF0cyB9IGZyb20gJy4vaW50ZXJmYWNlcy9kb21vLWRhdGEtZm9ybWF0cyc7XG5leHBvcnQgeyBEYXRhRm9ybWF0cyB9IGZyb20gJy4vZW51bXMvZGF0YS1mb3JtYXRzJztcbmV4cG9ydCB7IEZpbHRlckRhdGFUeXBlcyB9IGZyb20gJy4vZW51bXMvZmlsdGVyLWRhdGEtdHlwZXMnO1xuZXhwb3J0IHsgRmlsdGVyT3BlcmF0b3JzIH0gZnJvbSAnLi9lbnVtcy9maWx0ZXItb3BlcmF0b3JzJztcblxuZXhwb3J0IHsgUmVxdWVzdE9wdGlvbnMsIE9iamVjdFJlcXVlc3RPcHRpb25zLCBBcnJheVJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcXVlc3Qtb3B0aW9ucyc7XG5leHBvcnQgeyBRdWVyeVBhcmFtcyB9IGZyb20gJy4vaW50ZXJmYWNlcy9xdWVyeS1wYXJhbXMnO1xuZXhwb3J0IHsgUmVxdWVzdEJvZHksIFhNTEh0dHBSZXF1ZXN0Qm9keSB9IGZyb20gJy4vaW50ZXJmYWNlcy9yZXF1ZXN0LWJvZHknO1xuZXhwb3J0IHsgUmVzcG9uc2VCb2R5LCBPYmplY3RSZXNwb25zZUJvZHksIEFycmF5UmVzcG9uc2VCb2R5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3Jlc3BvbnNlLWJvZHknO1xuZXhwb3J0IHsgSnNvbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9qc29uJztcbiIsImltcG9ydCB7XG4gIFJlcXVlc3RNZXRob2RzLFxuICBSZXF1ZXN0T3B0aW9ucyxcbiAgT2JqZWN0UmVxdWVzdE9wdGlvbnMsXG4gIEFycmF5UmVxdWVzdE9wdGlvbnMsXG4gIERhdGFGb3JtYXRzLFxuICBRdWVyeVBhcmFtcyxcbiAgRmlsdGVyRGF0YVR5cGVzLFxuICBGaWx0ZXJPcGVyYXRvcnMsXG4gIFJlcXVlc3RCb2R5LFxuICBYTUxIdHRwUmVxdWVzdEJvZHksXG4gIFJlc3BvbnNlQm9keSxcbiAgT2JqZWN0UmVzcG9uc2VCb2R5LFxuICBBcnJheVJlc3BvbnNlQm9keSxcbn0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgZG9tb0Zvcm1hdFRvUmVxdWVzdEZvcm1hdCB9IGZyb20gJy4vdXRpbHMvZGF0YS1oZWxwZXJzJztcblxuZXhwb3J0ID0gZG9tbztcblxuY2xhc3MgZG9tbyB7XG4gIHN0YXRpYyBwb3N0KHVybDogc3RyaW5nLCBib2R5PzogUmVxdWVzdEJvZHksIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIHBvc3Q8VD4odXJsOiBzdHJpbmcsIGJvZHk/OiBSZXF1ZXN0Qm9keSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgc3RhdGljIHBvc3Q8VD4odXJsOiBzdHJpbmcsIGJvZHk/OiBSZXF1ZXN0Qm9keSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGRvbW9IdHRwPFQ+KFJlcXVlc3RNZXRob2RzLlBPU1QsIHVybCwgb3B0aW9ucywgdHJ1ZSwgYm9keSk7XG4gIH1cbiAgXG4gIHN0YXRpYyBwdXQodXJsOiBzdHJpbmcsIGJvZHk/OiBSZXF1ZXN0Qm9keSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgcHV0PFQ+KHVybDogc3RyaW5nLCBib2R5PzogUmVxdWVzdEJvZHksIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD47XG4gIHN0YXRpYyBwdXQ8VD4odXJsOiBzdHJpbmcsIGJvZHk/OiBSZXF1ZXN0Qm9keSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGRvbW9IdHRwPFQ+KFJlcXVlc3RNZXRob2RzLlBVVCwgdXJsLCBvcHRpb25zLCB0cnVlLCBib2R5KTtcbiAgfVxuICBcbiAgc3RhdGljIGdldCh1cmw6IHN0cmluZywgb3B0aW9uczogT2JqZWN0UmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPE9iamVjdFJlc3BvbnNlQm9keVtdPjtcbiAgc3RhdGljIGdldCh1cmw6IHN0cmluZywgb3B0aW9uczogQXJyYXlSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8QXJyYXlSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBnZXQ8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD47XG4gIHN0YXRpYyBnZXQ8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBkb21vSHR0cDxUPihSZXF1ZXN0TWV0aG9kcy5HRVQsIHVybCwgb3B0aW9ucyk7XG4gIH1cbiAgXG4gIHN0YXRpYyBkZWxldGUodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIGRlbGV0ZTxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgc3RhdGljIGRlbGV0ZTxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGRvbW9IdHRwPFQ+KFJlcXVlc3RNZXRob2RzLkRFTEVURSwgdXJsLCBvcHRpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRBbGwodXJsczogc3RyaW5nW10sIG9wdGlvbnM6IE9iamVjdFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxPYmplY3RSZXNwb25zZUJvZHlbXVtdPjtcbiAgc3RhdGljIGdldEFsbCh1cmxzOiBzdHJpbmdbXSwgb3B0aW9uczogQXJyYXlSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8QXJyYXlSZXNwb25zZUJvZHlbXT47XG4gIHN0YXRpYyBnZXRBbGwodXJsczogc3RyaW5nW10sIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VCb2R5W10+O1xuICBzdGF0aWMgZ2V0QWxsPFQ+KHVybHM6IHN0cmluZ1tdLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFRbXT47XG4gIHN0YXRpYyBnZXRBbGw8VD4odXJsczogc3RyaW5nW10sIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHVybHMubWFwKGZ1bmN0aW9uKHVybCl7XG4gICAgICByZXR1cm4gZG9tby5nZXQ8VD4odXJsLCBvcHRpb25zKTtcbiAgICB9KSk7XG4gIH07XG4gIFxuICAvKipcbiAgICogTGV0IHRoZSBkb21vYXBwIG9wdGlvbmFsbHkgaGFuZGxlIGl0cyBvd24gZGF0YSB1cGRhdGVzLlxuICAgKi9cbiAgc3RhdGljIG9uRGF0YVVwZGF0ZShjYjogKGFsaWFzOiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcbiAgICAgIGlmICghaXNWZXJpZmllZE9yaWdpbihldmVudC5vcmlnaW4pKVxuICAgICAgICByZXR1cm47XG4gIFxuICAgICAgaWYgKHR5cGVvZiBldmVudC5kYXRhID09PSAnc3RyaW5nJyAmJiBldmVudC5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAoIW1lc3NhZ2UuaGFzT3duUHJvcGVydHkoJ2FsaWFzJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIGNvbnN0IGFsaWFzID0gbWVzc2FnZS5hbGlhcztcbiAgXG4gICAgICAgICAgLy8gc2VuZCBhY2tub3dsZWRnZW1lbnQgdG8gcHJldmVudCBhdXRvcmVmcmVzaFxuICAgICAgICAgIGNvbnN0IGFjayA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGV2ZW50OiAnYWNrJyxcbiAgICAgICAgICAgIGFsaWFzOiBhbGlhcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZihldmVudC5zb3VyY2UgaW5zdGFuY2VvZiBXaW5kb3cpIHtcbiAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShhY2ssIGV2ZW50Lm9yaWdpbik7XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICAvLyBpbmZvcm0gZG9tbyBhcHAgd2hpY2ggYWxpYXMgaGFzIGJlZW4gdXBkYXRlZFxuICAgICAgICAgIGNiKGFsaWFzKTtcbiAgICAgICAgfSBjYXRjaChlcnIpIHtcbiAgICAgICAgICBjb25zdCBpbmZvID0gJ1RoZXJlIHdhcyBhbiBlcnJvciBpbiBvbkRhdGFVcGRhdGUhIEl0IG1heSBiZSB0aGF0IG91ciBldmVudCBsaXN0ZW5lciBjYXVnaHQgJyArXG4gICAgICAgICAgICAgICAgICAgICAnYSBtZXNzYWdlIGZyb20gYW5vdGhlciBzb3VyY2UgYW5kIHRyaWVkIHRvIHBhcnNlIGl0LCBzbyB5b3VyIHVwZGF0ZSBzdGlsbCBtYXkgaGF2ZSB3b3JrZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAgJ0lmIHlvdSB3b3VsZCBsaWtlIG1vcmUgaW5mbywgaGVyZSBpcyB0aGUgZXJyb3I6IFxcbidcbiAgICAgICAgICBjb25zb2xlLndhcm4oaW5mbywgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICBcbiAgLyoqXG4gICAqIFJlcXVlc3QgYSBuYXZpZ2F0aW9uIGNoYW5nZVxuICAgKi9cbiAgc3RhdGljIG5hdmlnYXRlKHVybDogc3RyaW5nLCBpc05ld1dpbmRvdzogYm9vbGVhbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBldmVudDogJ25hdmlnYXRlJyxcbiAgICAgIHVybDogdXJsLFxuICAgICAgaXNOZXdXaW5kb3c6IGlzTmV3V2luZG93XG4gICAgfSk7XG4gICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShtZXNzYWdlLCBcIipcIik7XG4gIH1cbiAgXG4gIHN0YXRpYyBmaWx0ZXJDb250YWluZXIoY29sdW1uOiBzdHJpbmcsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcnMsIHZhbHVlczogc3RyaW5nW10sIGRhdGFUeXBlOiBGaWx0ZXJEYXRhVHlwZXMuU1RSSU5HKTogdm9pZDtcbiAgc3RhdGljIGZpbHRlckNvbnRhaW5lcihjb2x1bW46IHN0cmluZywgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9ycywgdmFsdWVzOiBudW1iZXJbXSwgZGF0YVR5cGU6IEZpbHRlckRhdGFUeXBlcy5OVU1FUklDKTogdm9pZDtcbiAgc3RhdGljIGZpbHRlckNvbnRhaW5lcihjb2x1bW46IHN0cmluZywgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9ycywgdmFsdWVzOiBEYXRlW10sIGRhdGFUeXBlOiBGaWx0ZXJEYXRhVHlwZXMuREFURSB8IEZpbHRlckRhdGFUeXBlcy5EQVRFVElNRSk6IHZvaWQ7XG4gIHN0YXRpYyBmaWx0ZXJDb250YWluZXIoY29sdW1uOiBzdHJpbmcsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcnMsIHZhbHVlczogKHN0cmluZyB8IG51bWJlciB8IERhdGUpW10sIGRhdGFUeXBlOiBGaWx0ZXJEYXRhVHlwZXMpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLFxuICAgICAgc2FmYXJpID0gL3NhZmFyaS8udGVzdCggdXNlckFnZW50ICksXG4gICAgICBpb3MgPSAvaXBob25lfGlwb2R8aXBhZC8udGVzdCggdXNlckFnZW50ICk7XG4gIFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBldmVudDogJ2ZpbHRlcicsXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgY29sdW1uTmFtZTogY29sdW1uLFxuICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgIHZhbHVlczogdmFsdWVzLFxuICAgICAgICBkYXRhVHlwZTogZGF0YVR5cGVcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgaWYoaW9zICYmICFzYWZhcmkpIHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmRvbW9maWx0ZXIucG9zdE1lc3NhZ2UoeyBjb2x1bW46IGNvbHVtbiwgb3BlcmFuZDogb3BlcmF0b3IsIHZhbHVlczogdmFsdWVzLCBkYXRhVHlwZTogZGF0YVR5cGUgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShtZXNzYWdlLCBcIipcIik7XG4gICAgfVxuICB9XG4gIFxuICBzdGF0aWMgZW52ID0gZ2V0UXVlcnlQYXJhbXMoKTtcbiAgXG4gIHN0YXRpYyBfX3V0aWwgPSB7XG4gICAgaXNWZXJpZmllZE9yaWdpbixcbiAgICBnZXRRdWVyeVBhcmFtcyxcbiAgICBzZXRGb3JtYXRIZWFkZXJzLCBcbiAgICBpc1N1Y2Nlc3NcbiAgfVxuXG59O1xuXG5mdW5jdGlvbiBkb21vSHR0cChtZXRob2Q6IFJlcXVlc3RNZXRob2RzLCB1cmw6IHN0cmluZywgb3B0aW9uczogT2JqZWN0UmVxdWVzdE9wdGlvbnMsIGFzeW5jPzogYm9vbGVhbiwgYm9keT86IFJlcXVlc3RCb2R5KTogUHJvbWlzZTxPYmplY3RSZXNwb25zZUJvZHlbXT47XG5mdW5jdGlvbiBkb21vSHR0cChtZXRob2Q6IFJlcXVlc3RNZXRob2RzLCB1cmw6IHN0cmluZywgb3B0aW9uczogQXJyYXlSZXF1ZXN0T3B0aW9ucywgYXN5bmM/OiBib29sZWFuLCBib2R5PzogUmVxdWVzdEJvZHkpOiBQcm9taXNlPEFycmF5UmVzcG9uc2VCb2R5PjtcbmZ1bmN0aW9uIGRvbW9IdHRwKG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsIHVybDogc3RyaW5nLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucywgYXN5bmM/OiBib29sZWFuLCBib2R5PzogUmVxdWVzdEJvZHkpOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG5mdW5jdGlvbiBkb21vSHR0cDxUPihtZXRob2Q6IFJlcXVlc3RNZXRob2RzLCB1cmw6IHN0cmluZywgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMsIGFzeW5jPzogYm9vbGVhbiwgYm9keT86IFJlcXVlc3RCb2R5KTogUHJvbWlzZTxUPjtcbmZ1bmN0aW9uIGRvbW9IdHRwKG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsIHVybDogc3RyaW5nLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucywgYXN5bmM/OiBib29sZWFuLCBib2R5PzogUmVxdWVzdEJvZHkpOiBQcm9taXNlPFJlc3BvbnNlQm9keT4ge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmU6ICh2YWx1ZT86IFJlc3BvbnNlQm9keSkgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogRXJyb3IpID0+IHZvaWQpIHtcbiAgICAvLyBEbyB0aGUgdXN1YWwgWEhSIHN0dWZmXG4gICAgbGV0IHJlcTogWE1MSHR0cFJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICBpZihhc3luYykge1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXEub3BlbihtZXRob2QsIHVybCk7XG4gICAgfVxuICAgIHNldEZvcm1hdEhlYWRlcnMocmVxLCB1cmwsIG9wdGlvbnMpO1xuICAgIHNldENvbnRlbnRIZWFkZXJzKHJlcSwgb3B0aW9ucyk7XG4gICAgc2V0UmVzcG9uc2VUeXBlKHJlcSwgb3B0aW9ucyk7XG4gICAgc2V0SGVhZGVycyhyZXEsIG9wdGlvbnMpO1xuXG4gICAgcmVxLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgbGV0IGRhdGE7XG4gICAgICAvLyBUaGlzIGlzIGNhbGxlZCBldmVuIG9uIDQwNCBldGMgc28gY2hlY2sgdGhlIHN0YXR1c1xuICAgICAgaWYgKGlzU3VjY2VzcyhyZXEuc3RhdHVzKSkge1xuICAgICAgICBcbiAgICAgICAgaWYgKFsnY3N2JywgJ2V4Y2VsJ10uaW5jbHVkZXMob3B0aW9ucy5mb3JtYXQpIHx8ICFyZXEucmVzcG9uc2Upe1xuICAgICAgICAgIHJlc29sdmUocmVxLnJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZihvcHRpb25zLnJlc3BvbnNlVHlwZSA9PT0gJ2Jsb2InKSB7XG4gICAgICAgICAgcmVzb2x2ZShuZXcgQmxvYihbcmVxLnJlc3BvbnNlXSwge3R5cGU6IHJlcS5nZXRSZXNwb25zZUhlYWRlcignY29udGVudC10eXBlJyl9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVzcG9uc2VTdHIgPSByZXEucmVzcG9uc2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gaWYoIXJlc3BvbnNlU3RyKSB7XG4gICAgICAgICAgLy8gICByZXNwb25zZVN0ciA9IFwie31cIjtcbiAgICAgICAgICAvLyB9XG4gICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2VTdHIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChleCl7XG4gICAgICAgICAgcmVqZWN0KEVycm9yKCdJbnZhbGlkIEpTT04gcmVzcG9uc2UnKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCB0aGUgcmVzcG9uc2UgdGV4dFxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSByZWplY3Qgd2l0aCB0aGUgc3RhdHVzIHRleHRcbiAgICAgICAgLy8gd2hpY2ggd2lsbCBob3BlZnVsbHkgYmUgYSBtZWFuaW5nZnVsIGVycm9yXG4gICAgICAgIHJlamVjdChFcnJvcihyZXEuc3RhdHVzVGV4dCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgbmV0d29yayBlcnJvcnNcbiAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVqZWN0KEVycm9yKFwiTmV0d29yayBFcnJvclwiKSk7XG4gICAgfTtcblxuICAgIC8vIE1ha2UgdGhlIHJlcXVlc3RcbiAgICBpZihib2R5KSB7XG4gICAgICBpZiAoIW9wdGlvbnMuY29udGVudFR5cGUgfHwgb3B0aW9ucy5jb250ZW50VHlwZSA9PT0gRGF0YUZvcm1hdHMuSlNPTikge1xuICAgICAgICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gICAgICAgIC8vIE1ha2UgdGhlIHJlcXVlc3RcbiAgICAgICAgcmVxLnNlbmQoanNvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBib2R5IGNhbiBubyBsb25nZXIgYmUgSlNPTlxuICAgICAgICByZXEuc2VuZChib2R5IGFzIFhNTEh0dHBSZXF1ZXN0Qm9keSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcmVxLnNlbmQoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc1N1Y2Nlc3Moc3RhdHVzOiBudW1iZXIpIHtcbiAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xufVxuXG5mdW5jdGlvbiBpc1ZlcmlmaWVkT3JpZ2luKG9yaWdpbjogc3RyaW5nKSB7XG4gIGNvbnN0IHdoaXRlbGlzdGVkID0gb3JpZ2luLm1hdGNoKCdeaHR0cHM/Oi8vKFteL10rWy5dKT8oZG9tb3xkb21vdGVjaHxkb21vcmlnKVxcLihjb218aW8pPygvLiopPyQnKTtcbiAgY29uc3QgYmxhY2tsaXN0ZWQgPSBvcmlnaW4ubWF0Y2goJyguKilcXC4oZG9tb2FwcHMpXFwuKC4qKScpO1xuICByZXR1cm4gISF3aGl0ZWxpc3RlZCAmJiAhYmxhY2tsaXN0ZWQ7XG59XG5cbmZ1bmN0aW9uIGdldFF1ZXJ5UGFyYW1zKCk6IFF1ZXJ5UGFyYW1zIHtcbiAgY29uc3QgcXVlcnkgPSBsb2NhdGlvbi5zZWFyY2guc3Vic3RyKDEpO1xuICBsZXQgcmVzdWx0IDogeyBbaW5kZXggOiBzdHJpbmddIDogc3RyaW5nfSA9IHt9O1xuICBxdWVyeS5zcGxpdChcIiZcIikuZm9yRWFjaChmdW5jdGlvbihwYXJ0KSB7XG4gICAgY29uc3QgaXRlbSA9IHBhcnQuc3BsaXQoXCI9XCIpO1xuICAgIHJlc3VsdFtpdGVtWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudChpdGVtWzFdKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHNldEZvcm1hdEhlYWRlcnMocmVxOiBYTUxIdHRwUmVxdWVzdCwgdXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyl7XG4gIGlmICh1cmwuaW5kZXhPZignZGF0YS92MScpID09PSAtMSApIHsgcmV0dXJuOyB9XG4gIC8vIHNldCBmb3JtYXRcbiAgY29uc3QgcmVxdWVzdEZvcm1hdDogRGF0YUZvcm1hdHMgPSAob3B0aW9ucy5mb3JtYXQgIT09IHVuZGVmaW5lZClcbiAgICA/IChkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0KG9wdGlvbnMuZm9ybWF0KSkgXG4gICAgOiAoRGF0YUZvcm1hdHMuREVGQVVMVCk7XG5cbiAgcmVxLnNldFJlcXVlc3RIZWFkZXIoJ0FjY2VwdCcsIHJlcXVlc3RGb3JtYXQpO1xufVxuXG5mdW5jdGlvbiBzZXRDb250ZW50SGVhZGVycyhyZXE6IFhNTEh0dHBSZXF1ZXN0LCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMuY29udGVudFR5cGUpIHtcbiAgICAvLyBzZXQgY29udGVudCB0eXBlIGlmIHVzZXIgcGFzc2VkIG9wdGlvblxuICAgIGlmKG9wdGlvbnMuY29udGVudFR5cGUgIT09ICdtdWx0aXBhcnQnKXtcbiAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCBvcHRpb25zLmNvbnRlbnRUeXBlLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICByZXEuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgRGF0YUZvcm1hdHMuSlNPTik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0UmVzcG9uc2VUeXBlKHJlcTogWE1MSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykge1xuICAvL3NldCByZXNwb25zZSB0eXBlIGlmIHVzZXIgcGFzc2VkIG9wdGlvblxuICBpZiAob3B0aW9ucy5yZXNwb25zZVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlcS5yZXNwb25zZVR5cGUgPSBvcHRpb25zLnJlc3BvbnNlVHlwZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXRIZWFkZXJzKHJlcTogWE1MSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykge1xuICBpZihvcHRpb25zLmhlYWRlcnMpIHtcbiAgICBjb25zdCBrZXlzOnN0cmluZ1tdID0gT2JqZWN0LmtleXMob3B0aW9ucy5oZWFkZXJzKTtcbiAgICBrZXlzLmZvckVhY2goKGtleSkgPT4gcmVxLnNldFJlcXVlc3RIZWFkZXIoa2V5LCBvcHRpb25zLmhlYWRlcnNba2V5XSkpO1xuICB9XG59IiwiZXhwb3J0IGVudW0gUmVxdWVzdE1ldGhvZHMge1xuICBnZXQgPSAnR0VUJyxcbiAgR0VUID0gJ0dFVCcsXG4gIHBvc3QgPSAnUE9TVCcsXG4gIFBPU1QgPSAnUE9TVCcsXG4gIHB1dCA9ICdQVVQnLFxuICBQVVQgPSAnUFVUJyxcbiAgZGVsZXRlID0gJ0RFTEVURScsXG4gIERFTEVURSA9ICdERUxFVEUnLFxufVxuIiwiLyoqXG4gKiBTdXBwb3J0ZWQgYGFjY2VwdGAgaGVhZGVycyBmb3IgY29udHJvbGxpbmcgdGhlIGZvcm1hdFxuICogb2YgdGhlIGRhdGEgcmV0dXJuZWQgZnJvbSBEb21vLlxuICpcbiAqIFNlZSBbZGV2ZWxvcGVyLmRvbW8uY29tXShodHRwczovL2RldmVsb3Blci5kb21vLmNvbS9kb2NzL2Rldi1zdHVkaW8tcmVmZXJlbmNlcy9kYXRhLWFwaSNEYXRhJTIwRm9ybWF0cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBlbnVtIERhdGFGb3JtYXRzIHtcbiAgREVGQVVMVCA9ICdhcHBsaWNhdGlvbi9hcnJheS1vZi1vYmplY3RzJyxcbiAgQVJSQVlfT0ZfT0JKRUNUUyA9ICdhcHBsaWNhdGlvbi9hcnJheS1vZi1vYmplY3RzJyxcbiAgSlNPTiA9ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgQ1NWID0gJ3RleHQvY3N2JyxcbiAgRVhDRUwgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnLFxuICBQTEFJTiA9ICd0ZXh0L3BsYWluJ1xufSIsImV4cG9ydCBlbnVtIEZpbHRlckRhdGFUeXBlcyB7XG4gIERBVEUgPSAnREFURScsXG4gIERBVEVUSU1FID0gJ0RBVEVUSU1FJyxcbiAgTlVNRVJJQyA9ICdOVU1FUklDJyxcbiAgU1RSSU5HID0gJ1NUUklORycsXG59IiwiLyoqXG4gKiBUaGVzZSBhcmUgcHVsbGVkIGRpcmVjdGx5IGZyb20gdGhlIGJhY2tlbmQgY29kZSxcbiAqIHdoaWNoIGlzIG5vdCBjb25zaXN0ZW50IGluIG5hbWluZyBzdHlsZXNcbiAqL1xuXG5leHBvcnQgZW51bSBGaWx0ZXJPcGVyYXRvcnMge1xuICBJUyA9ICdpcycsXG4gIElTX05PVCA9ICdpcyBub3QnLFxuICBJTiA9ICdJTicsXG4gIE5PVF9JTiA9ICdOT1RfSU4nLFxuICBJU19HUkVBVEVSX1RIQU4gPSAnaXMgZ3JlYXRlciB0aGFuJyxcbiAgSVNfQUJPVkVfQVZFUkFHRSA9ICdpcyBhYm92ZSBhdmVyYWdlJyxcbiAgSVNfR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPID0gJ2lzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bycsXG4gIElTX0xFU1NfVEhBTiA9ICdpcyBsZXNzIHRoYW4nLFxuICBJU19CRUxPV19BVkVSQUdFID0gJ2lzIGJlbG93IGF2ZXJhZ2UnLFxuICBJU19MRVNTX1RIQU5fT1JfRVFVQUxfVE8gPSAnaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgSVNfQkVUV0VFTiA9ICdpcyBiZXR3ZWVuJyxcbiAgSVNfTk9UX0JFVFdFRU4gPSAnaXMgbm90IGJldHdlZW4nLFxuICBMSUtFID0gJ2xpa2UnLFxuICBOT1RfTElLRSA9ICdub3QgbGlrZScsXG4gIENPTlRBSU5TID0gJ2NvbnRhaW5zJyxcbiAgTk9UX0NPTlRBSU5TID0gJ25vdCBjb250YWlucycsXG4gIFNUQVJUU19XSVRIID0gJ3N0YXJ0cyB3aXRoJyxcbiAgTk9UX1NUQVJUU19XSVRIID0gJ25vdCBzdGFydHMgd2l0aCcsXG4gIEVORFNfV0lUSCA9ICdlbmRzIHdpdGgnLFxuICBOT1RfRU5EU19XSVRIID0gJ25vdCBlbmRzIHdpdGgnLFxufVxuIiwiaW1wb3J0IHsgRG9tb0RhdGFGb3JtYXRzLCBEYXRhRm9ybWF0cyB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0KGZvcm1hdDogRG9tb0RhdGFGb3JtYXRzKTogRGF0YUZvcm1hdHMge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ2FycmF5LW9mLW9iamVjdHMnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuQVJSQVlfT0ZfT0JKRUNUUztcbiAgICB9XG4gICAgY2FzZSAnYXJyYXktb2YtYXJyYXlzJzoge1xuICAgICAgcmV0dXJuIERhdGFGb3JtYXRzLkpTT047XG4gICAgfVxuICAgIGNhc2UgJ2V4Y2VsJzoge1xuICAgICAgcmV0dXJuIERhdGFGb3JtYXRzLkVYQ0VMO1xuICAgIH1cbiAgICBjYXNlICdjc3YnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuQ1NWO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuREVGQVVMVDtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
!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 o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=1)}([function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=o(2);t.RequestMethods=r.RequestMethods;var n=o(3);t.DataFormats=n.DataFormats},function(e,t,o){"use strict";var r=o(0),n=o(4),a=function(){function e(){}return e.post=function(e,t,o){return s(r.RequestMethods.POST,e,o,!0,t)},e.put=function(e,t,o){return s(r.RequestMethods.PUT,e,o,!0,t)},e.get=function(e,t){return s(r.RequestMethods.GET,e,t)},e.delete=function(e,t){return s(r.RequestMethods.DELETE,e,t)},e.getAll=function(t,o){return Promise.all(t.map((function(t){return e.get(t,o)})))},e.onDataUpdate=function(e){window.addEventListener("message",(function(t){if(u(t.origin)&&"string"==typeof t.data&&t.data.length>0)try{var o=JSON.parse(t.data);if(!o.hasOwnProperty("alias"))return;var r=o.alias,n=JSON.stringify({event:"ack",alias:r});t.source instanceof Window&&t.source.postMessage(n,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)}}))},e.navigate=function(e,t){var o=JSON.stringify({event:"navigate",url:e,isNewWindow:t});window.parent.postMessage(o,"*")},e.filterContainer=function(e,t,o,r){var n=window.navigator.userAgent.toLowerCase(),a=/safari/.test(n),s=/iphone|ipod|ipad/.test(n),i=JSON.stringify({event:"filter",filter:{columnName:e,operator:t,values:o,dataType:r}});s&&!a?window.webkit.messageHandlers.domofilter.postMessage({column:e,operand:t,values:o,dataType:r}):window.parent.postMessage(i,"*")},e.env=c(),e.__util={isVerifiedOrigin:u,getQueryParams:c,setFormatHeaders:f,isSuccess:i},e}();function s(e,t,o,n,a){return o=o||{},new Promise((function(s,u){var c=new XMLHttpRequest;if(n?c.open(e,t,n):c.open(e,t),f(c,t,o),function(e,t){t.contentType?"multipart"!==t.contentType&&e.setRequestHeader("Content-Type",t.contentType):e.setRequestHeader("Content-Type",r.DataFormats.JSON)}(c,o),function(e,t){void 0!==t.responseType&&(e.responseType=t.responseType)}(c,o),c.onload=function(){var e;if(i(c.status)){!["csv","excel"].includes(o.format)&&c.response||s(c.response),"blob"===o.responseType&&s(new Blob([c.response],{type:c.getResponseHeader("content-type")}));var t=c.response;try{e=JSON.parse(t)}catch(e){return void u(Error("Invalid JSON response"))}s(e)}else u(Error(c.statusText))},c.onerror=function(){u(Error("Network Error"))},a)if(o.contentType&&o.contentType!==r.DataFormats.JSON)c.send(a);else{var p=JSON.stringify(a);c.send(p)}else c.send()}))}function i(e){return e>=200&&e<300}function u(e){var t=e.match("^https?://([^/]+[.])?(domo|domotech|domorig).(com|io)?(/.*)?$"),o=e.match("(.*).(domoapps).(.*)");return!!t&&!o}function c(){var e=location.search.substr(1),t={};return e.split("&").forEach((function(e){var o=e.split("=");t[o[0]]=decodeURIComponent(o[1])})),t}function f(e,t,o){if(-1!==t.indexOf("data/v1")){var a=void 0!==o.format?n.domoFormatToRequestFormat(o.format):r.DataFormats.DEFAULT;e.setRequestHeader("Accept",a)}}e.exports=a},function(e,t,o){"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,o){"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,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=o(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9kb21vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2luZGV4LnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvZG9tby50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9lbnVtcy9yZXF1ZXN0LW1ldGhvZHMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvZW51bXMvZGF0YS1mb3JtYXRzLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvdXRpbHMvZGF0YS1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsIndpbmRvdyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJSZXF1ZXN0TWV0aG9kcyIsIkRhdGFGb3JtYXRzIiwicG9zdCIsInVybCIsImJvZHkiLCJvcHRpb25zIiwiZG9tb0h0dHAiLCJQT1NUIiwicHV0IiwiUFVUIiwiR0VUIiwiZGVsZXRlIiwiREVMRVRFIiwiZ2V0QWxsIiwidXJscyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJkb21vIiwib25EYXRhVXBkYXRlIiwiY2IiLCJhZGRFdmVudExpc3RlbmVyIiwiZXZlbnQiLCJpc1ZlcmlmaWVkT3JpZ2luIiwib3JpZ2luIiwiZGF0YSIsImxlbmd0aCIsIm1lc3NhZ2UiLCJKU09OIiwicGFyc2UiLCJhbGlhcyIsImFjayIsInN0cmluZ2lmeSIsInNvdXJjZSIsIldpbmRvdyIsInBvc3RNZXNzYWdlIiwiZXJyIiwiY29uc29sZSIsIndhcm4iLCJuYXZpZ2F0ZSIsImlzTmV3V2luZG93IiwicGFyZW50IiwiZmlsdGVyQ29udGFpbmVyIiwiY29sdW1uIiwib3BlcmF0b3IiLCJ2YWx1ZXMiLCJkYXRhVHlwZSIsInVzZXJBZ2VudCIsIm5hdmlnYXRvciIsInRvTG93ZXJDYXNlIiwic2FmYXJpIiwidGVzdCIsImlvcyIsImZpbHRlciIsImNvbHVtbk5hbWUiLCJ3ZWJraXQiLCJtZXNzYWdlSGFuZGxlcnMiLCJkb21vZmlsdGVyIiwib3BlcmFuZCIsImVudiIsImdldFF1ZXJ5UGFyYW1zIiwiX191dGlsIiwic2V0Rm9ybWF0SGVhZGVycyIsImlzU3VjY2VzcyIsIm1ldGhvZCIsImFzeW5jIiwicmVzb2x2ZSIsInJlamVjdCIsInJlcSIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsImNvbnRlbnRUeXBlIiwic2V0UmVxdWVzdEhlYWRlciIsInNldENvbnRlbnRIZWFkZXJzIiwidW5kZWZpbmVkIiwicmVzcG9uc2VUeXBlIiwic2V0UmVzcG9uc2VUeXBlIiwib25sb2FkIiwic3RhdHVzIiwiaW5jbHVkZXMiLCJmb3JtYXQiLCJyZXNwb25zZSIsIkJsb2IiLCJ0eXBlIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJyZXNwb25zZVN0ciIsImV4IiwiRXJyb3IiLCJzdGF0dXNUZXh0Iiwib25lcnJvciIsInNlbmQiLCJqc29uIiwid2hpdGVsaXN0ZWQiLCJtYXRjaCIsImJsYWNrbGlzdGVkIiwicXVlcnkiLCJsb2NhdGlvbiIsInNlYXJjaCIsInN1YnN0ciIsInJlc3VsdCIsInNwbGl0IiwiZm9yRWFjaCIsInBhcnQiLCJpdGVtIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaW5kZXhPZiIsInJlcXVlc3RGb3JtYXQiLCJkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0IiwiQVJSQVlfT0ZfT0JKRUNUUyIsIkVYQ0VMIiwiQ1NWIiwiREVGQVVMVCJdLCJtYXBwaW5ncyI6Ijs7OztDQUFBLFNBQTJDQSxFQUFNQyxHQUMxQixpQkFBWkMsU0FBMEMsaUJBQVhDLE9BQ3hDQSxPQUFPRCxRQUFVRCxJQUNRLG1CQUFYRyxRQUF5QkEsT0FBT0MsSUFDOUNELE9BQU8sR0FBSUgsR0FDZSxpQkFBWkMsUUFDZEEsUUFBYyxLQUFJRCxJQUVsQkQsRUFBVyxLQUFJQyxJQVJqQixDQVNHSyxRQUFRLFdBQ1gsTyxZQ1RFLElBQUlDLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVQLFFBR25DLElBQUlDLEVBQVNJLEVBQWlCRSxHQUFZLENBQ3pDQyxFQUFHRCxFQUNIRSxHQUFHLEVBQ0hULFFBQVMsSUFVVixPQU5BVSxFQUFRSCxHQUFVSSxLQUFLVixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTTSxHQUcvREwsRUFBT1EsR0FBSSxFQUdKUixFQUFPRCxRQTBEZixPQXJEQU0sRUFBb0JNLEVBQUlGLEVBR3hCSixFQUFvQk8sRUFBSVIsRUFHeEJDLEVBQW9CUSxFQUFJLFNBQVNkLEVBQVNlLEVBQU1DLEdBQzNDVixFQUFvQlcsRUFBRWpCLEVBQVNlLElBQ2xDRyxPQUFPQyxlQUFlbkIsRUFBU2UsRUFBTSxDQUFFSyxZQUFZLEVBQU1DLElBQUtMLEtBS2hFVixFQUFvQmdCLEVBQUksU0FBU3RCLEdBQ1gsb0JBQVh1QixRQUEwQkEsT0FBT0MsYUFDMUNOLE9BQU9DLGVBQWVuQixFQUFTdUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEUCxPQUFPQyxlQUFlbkIsRUFBUyxhQUFjLENBQUV5QixPQUFPLEtBUXZEbkIsRUFBb0JvQixFQUFJLFNBQVNELEVBQU9FLEdBRXZDLEdBRFUsRUFBUEEsSUFBVUYsRUFBUW5CLEVBQW9CbUIsSUFD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U0FBWWxCLEdBQ1YsWUFDQSxZQUNBLGNBQ0EsY0FDQSxZQUNBLFlBQ0Esa0JBQ0Esa0JBUkYsQ0FBWSxFQUFBQSxpQkFBQSxFQUFBQSxlQUFjLE0sOEVDTzFCLFNBQVlDLEdBQ1YseUNBQ0Esa0RBQ0EsMEJBQ0EsaUJBQ0EsNEVBQ0EscUJBTkYsQ0FBWSxFQUFBQSxjQUFBLEVBQUFBLFlBQVcsTSw4RUNQdkIsV0FFQSxxQ0FBMEMrRSxHQUN4QyxPQUFRQSxHQUNOLElBQUssbUJBQ0gsT0FBTyxFQUFBL0UsWUFBWTJHLGlCQUVyQixJQUFLLGtCQUNILE9BQU8sRUFBQTNHLFlBQVkyQixLQUVyQixJQUFLLFFBQ0gsT0FBTyxFQUFBM0IsWUFBWTRHLE1BRXJCLElBQUssTUFDSCxPQUFPLEVBQUE1RyxZQUFZNkcsSUFFckIsUUFDRSxPQUFPLEVBQUE3RyxZQUFZOEciLCJmaWxlIjoiZG9tby5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImRvbW9cIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiZG9tb1wiXSA9IGZhY3RvcnkoKTtcbn0pKHdpbmRvdywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDEpO1xuIiwiZXhwb3J0IHsgUmVxdWVzdE1ldGhvZHMgfSBmcm9tICcuL2VudW1zL3JlcXVlc3QtbWV0aG9kcyc7XG5leHBvcnQgeyBEb21vRGF0YUZvcm1hdHMgfSBmcm9tICcuL2ludGVyZmFjZXMvZG9tby1kYXRhLWZvcm1hdHMnO1xuZXhwb3J0IHsgRGF0YUZvcm1hdHMgfSBmcm9tICcuL2VudW1zL2RhdGEtZm9ybWF0cyc7XG5leHBvcnQgeyBGaWx0ZXJEYXRhVHlwZXMgfSBmcm9tICcuL2ludGVyZmFjZXMvZmlsdGVyLWRhdGEtdHlwZXMnO1xuZXhwb3J0IHsgRmlsdGVyT3BlcmF0b3JzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlci1vcGVyYXRvcnMnO1xuXG5leHBvcnQgeyBSZXF1ZXN0T3B0aW9ucywgT2JqZWN0UmVxdWVzdE9wdGlvbnMsIEFycmF5UmVxdWVzdE9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVxdWVzdC1vcHRpb25zJztcbmV4cG9ydCB7IFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3F1ZXJ5LXBhcmFtcyc7XG5leHBvcnQgeyBSZXF1ZXN0Qm9keSwgWE1MSHR0cFJlcXVlc3RCb2R5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcXVlc3QtYm9keSc7XG5leHBvcnQgeyBSZXNwb25zZUJvZHksIE9iamVjdFJlc3BvbnNlQm9keSwgQXJyYXlSZXNwb25zZUJvZHkgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVzcG9uc2UtYm9keSc7XG5leHBvcnQgeyBKc29uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2pzb24nO1xuIiwiaW1wb3J0IHtcbiAgUmVxdWVzdE1ldGhvZHMsXG4gIFJlcXVlc3RPcHRpb25zLFxuICBPYmplY3RSZXF1ZXN0T3B0aW9ucyxcbiAgQXJyYXlSZXF1ZXN0T3B0aW9ucyxcbiAgRGF0YUZvcm1hdHMsXG4gIFF1ZXJ5UGFyYW1zLFxuICBGaWx0ZXJEYXRhVHlwZXMsXG4gIEZpbHRlck9wZXJhdG9ycyxcbiAgUmVxdWVzdEJvZHksXG4gIFhNTEh0dHBSZXF1ZXN0Qm9keSxcbiAgUmVzcG9uc2VCb2R5LFxuICBPYmplY3RSZXNwb25zZUJvZHksXG4gIEFycmF5UmVzcG9uc2VCb2R5LFxufSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBkb21vRm9ybWF0VG9SZXF1ZXN0Rm9ybWF0IH0gZnJvbSAnLi91dGlscy9kYXRhLWhlbHBlcnMnO1xuXG5leHBvcnQgPSBkb21vO1xuXG5jbGFzcyBkb21vIHtcbiAgc3RhdGljIHBvc3QodXJsOiBzdHJpbmcsIGJvZHk/OiBSZXF1ZXN0Qm9keSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgcG9zdDxUPih1cmw6IHN0cmluZywgYm9keT86IFJlcXVlc3RCb2R5LCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICBzdGF0aWMgcG9zdDxUPih1cmw6IHN0cmluZywgYm9keT86IFJlcXVlc3RCb2R5LCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gZG9tb0h0dHA8VD4oUmVxdWVzdE1ldGhvZHMuUE9TVCwgdXJsLCBvcHRpb25zLCB0cnVlLCBib2R5KTtcbiAgfVxuICBcbiAgc3RhdGljIHB1dCh1cmw6IHN0cmluZywgYm9keT86IFJlcXVlc3RCb2R5LCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBwdXQ8VD4odXJsOiBzdHJpbmcsIGJvZHk/OiBSZXF1ZXN0Qm9keSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgc3RhdGljIHB1dDxUPih1cmw6IHN0cmluZywgYm9keT86IFJlcXVlc3RCb2R5LCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gZG9tb0h0dHA8VD4oUmVxdWVzdE1ldGhvZHMuUFVULCB1cmwsIG9wdGlvbnMsIHRydWUsIGJvZHkpO1xuICB9XG4gIFxuICBzdGF0aWMgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zOiBPYmplY3RSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8T2JqZWN0UmVzcG9uc2VCb2R5W10+O1xuICBzdGF0aWMgZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zOiBBcnJheVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxBcnJheVJlc3BvbnNlQm9keT47XG4gIHN0YXRpYyBnZXQodXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbiAgc3RhdGljIGdldDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgc3RhdGljIGdldDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGRvbW9IdHRwPFQ+KFJlcXVlc3RNZXRob2RzLkdFVCwgdXJsLCBvcHRpb25zKTtcbiAgfVxuICBcbiAgc3RhdGljIGRlbGV0ZSh1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuICBzdGF0aWMgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICBzdGF0aWMgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gZG9tb0h0dHA8VD4oUmVxdWVzdE1ldGhvZHMuREVMRVRFLCB1cmwsIG9wdGlvbnMpO1xuICB9XG5cbiAgc3RhdGljIGdldEFsbCh1cmxzOiBzdHJpbmdbXSwgb3B0aW9uczogT2JqZWN0UmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPE9iamVjdFJlc3BvbnNlQm9keVtdW10+O1xuICBzdGF0aWMgZ2V0QWxsKHVybHM6IHN0cmluZ1tdLCBvcHRpb25zOiBBcnJheVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxBcnJheVJlc3BvbnNlQm9keVtdPjtcbiAgc3RhdGljIGdldEFsbCh1cmxzOiBzdHJpbmdbXSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZUJvZHlbXT47XG4gIHN0YXRpYyBnZXRBbGw8VD4odXJsczogc3RyaW5nW10sIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VFtdPjtcbiAgc3RhdGljIGdldEFsbDxUPih1cmxzOiBzdHJpbmdbXSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwodXJscy5tYXAoZnVuY3Rpb24odXJsKXtcbiAgICAgIHJldHVybiBkb21vLmdldDxUPih1cmwsIG9wdGlvbnMpO1xuICAgIH0pKTtcbiAgfTtcbiAgXG4gIC8qKlxuICAgKiBMZXQgdGhlIGRvbW9hcHAgb3B0aW9uYWxseSBoYW5kbGUgaXRzIG93biBkYXRhIHVwZGF0ZXMuXG4gICAqL1xuICBzdGF0aWMgb25EYXRhVXBkYXRlKGNiOiAoYWxpYXM6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xuICAgICAgaWYgKCFpc1ZlcmlmaWVkT3JpZ2luKGV2ZW50Lm9yaWdpbikpXG4gICAgICAgIHJldHVybjtcbiAgXG4gICAgICBpZiAodHlwZW9mIGV2ZW50LmRhdGEgPT09ICdzdHJpbmcnICYmIGV2ZW50LmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuICAgICAgICAgIGlmICghbWVzc2FnZS5oYXNPd25Qcm9wZXJ0eSgnYWxpYXMnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgY29uc3QgYWxpYXMgPSBtZXNzYWdlLmFsaWFzO1xuICBcbiAgICAgICAgICAvLyBzZW5kIGFja25vd2xlZGdlbWVudCB0byBwcmV2ZW50IGF1dG9yZWZyZXNoXG4gICAgICAgICAgY29uc3QgYWNrID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgZXZlbnQ6ICdhY2snLFxuICAgICAgICAgICAgYWxpYXM6IGFsaWFzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmKGV2ZW50LnNvdXJjZSBpbnN0YW5jZW9mIFdpbmRvdykge1xuICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKGFjaywgZXZlbnQub3JpZ2luKTtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIC8vIGluZm9ybSBkb21vIGFwcCB3aGljaCBhbGlhcyBoYXMgYmVlbiB1cGRhdGVkXG4gICAgICAgICAgY2IoYWxpYXMpO1xuICAgICAgICB9IGNhdGNoKGVycikge1xuICAgICAgICAgIGNvbnN0IGluZm8gPSAnVGhlcmUgd2FzIGFuIGVycm9yIGluIG9uRGF0YVVwZGF0ZSEgSXQgbWF5IGJlIHRoYXQgb3VyIGV2ZW50IGxpc3RlbmVyIGNhdWdodCAnICtcbiAgICAgICAgICAgICAgICAgICAgICdhIG1lc3NhZ2UgZnJvbSBhbm90aGVyIHNvdXJjZSBhbmQgdHJpZWQgdG8gcGFyc2UgaXQsIHNvIHlvdXIgdXBkYXRlIHN0aWxsIG1heSBoYXZlIHdvcmtlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICAnSWYgeW91IHdvdWxkIGxpa2UgbW9yZSBpbmZvLCBoZXJlIGlzIHRoZSBlcnJvcjogXFxuJ1xuICAgICAgICAgIGNvbnNvbGUud2FybihpbmZvLCBlcnIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIFxuICAvKipcbiAgICogUmVxdWVzdCBhIG5hdmlnYXRpb24gY2hhbmdlXG4gICAqL1xuICBzdGF0aWMgbmF2aWdhdGUodXJsOiBzdHJpbmcsIGlzTmV3V2luZG93OiBib29sZWFuKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGV2ZW50OiAnbmF2aWdhdGUnLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBpc05ld1dpbmRvdzogaXNOZXdXaW5kb3dcbiAgICB9KTtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKG1lc3NhZ2UsIFwiKlwiKTtcbiAgfVxuICBcbiAgc3RhdGljIGZpbHRlckNvbnRhaW5lcihjb2x1bW46IHN0cmluZywgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9ycywgdmFsdWVzOiBzdHJpbmdbXSwgZGF0YVR5cGU6ICdTVFJJTkcnKTogdm9pZDtcbiAgc3RhdGljIGZpbHRlckNvbnRhaW5lcihjb2x1bW46IHN0cmluZywgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9ycywgdmFsdWVzOiBudW1iZXJbXSwgZGF0YVR5cGU6ICdOVU1FUklDJyk6IHZvaWQ7XG4gIHN0YXRpYyBmaWx0ZXJDb250YWluZXIoY29sdW1uOiBzdHJpbmcsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcnMsIHZhbHVlczogRGF0ZVtdLCBkYXRhVHlwZTogJ0RBVEUnIHwgJ0RBVEVUSU1FJyk6IHZvaWQ7XG4gIHN0YXRpYyBmaWx0ZXJDb250YWluZXIoY29sdW1uOiBzdHJpbmcsIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcnMsIHZhbHVlczogKHN0cmluZyB8IG51bWJlciB8IERhdGUpW10sIGRhdGFUeXBlOiBGaWx0ZXJEYXRhVHlwZXMpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyQWdlbnQgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLFxuICAgICAgc2FmYXJpID0gL3NhZmFyaS8udGVzdCggdXNlckFnZW50ICksXG4gICAgICBpb3MgPSAvaXBob25lfGlwb2R8aXBhZC8udGVzdCggdXNlckFnZW50ICk7XG4gIFxuICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBldmVudDogJ2ZpbHRlcicsXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgY29sdW1uTmFtZTogY29sdW1uLFxuICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgICAgIHZhbHVlczogdmFsdWVzLFxuICAgICAgICBkYXRhVHlwZTogZGF0YVR5cGVcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgaWYoaW9zICYmICFzYWZhcmkpIHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmRvbW9maWx0ZXIucG9zdE1lc3NhZ2UoeyBjb2x1bW46IGNvbHVtbiwgb3BlcmFuZDogb3BlcmF0b3IsIHZhbHVlczogdmFsdWVzLCBkYXRhVHlwZTogZGF0YVR5cGUgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShtZXNzYWdlLCBcIipcIik7XG4gICAgfVxuICB9XG4gIFxuICBzdGF0aWMgZW52ID0gZ2V0UXVlcnlQYXJhbXMoKTtcbiAgXG4gIHN0YXRpYyBfX3V0aWwgPSB7XG4gICAgaXNWZXJpZmllZE9yaWdpbixcbiAgICBnZXRRdWVyeVBhcmFtcyxcbiAgICBzZXRGb3JtYXRIZWFkZXJzLCBcbiAgICBpc1N1Y2Nlc3NcbiAgfVxuXG59O1xuXG5mdW5jdGlvbiBkb21vSHR0cChtZXRob2Q6IFJlcXVlc3RNZXRob2RzLCB1cmw6IHN0cmluZywgb3B0aW9uczogT2JqZWN0UmVxdWVzdE9wdGlvbnMsIGFzeW5jPzogYm9vbGVhbiwgYm9keT86IFJlcXVlc3RCb2R5KTogUHJvbWlzZTxPYmplY3RSZXNwb25zZUJvZHlbXT47XG5mdW5jdGlvbiBkb21vSHR0cChtZXRob2Q6IFJlcXVlc3RNZXRob2RzLCB1cmw6IHN0cmluZywgb3B0aW9uczogQXJyYXlSZXF1ZXN0T3B0aW9ucywgYXN5bmM/OiBib29sZWFuLCBib2R5PzogUmVxdWVzdEJvZHkpOiBQcm9taXNlPEFycmF5UmVzcG9uc2VCb2R5PjtcbmZ1bmN0aW9uIGRvbW9IdHRwKG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsIHVybDogc3RyaW5nLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucywgYXN5bmM/OiBib29sZWFuLCBib2R5PzogUmVxdWVzdEJvZHkpOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG5mdW5jdGlvbiBkb21vSHR0cDxUPihtZXRob2Q6IFJlcXVlc3RNZXRob2RzLCB1cmw6IHN0cmluZywgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMsIGFzeW5jPzogYm9vbGVhbiwgYm9keT86IFJlcXVlc3RCb2R5KTogUHJvbWlzZTxUPjtcbmZ1bmN0aW9uIGRvbW9IdHRwKG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsIHVybDogc3RyaW5nLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucywgYXN5bmM/OiBib29sZWFuLCBib2R5PzogUmVxdWVzdEJvZHkpOiBQcm9taXNlPFJlc3BvbnNlQm9keT4ge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmU6ICh2YWx1ZT86IFJlc3BvbnNlQm9keSkgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogRXJyb3IpID0+IHZvaWQpIHtcbiAgICAvLyBEbyB0aGUgdXN1YWwgWEhSIHN0dWZmXG4gICAgbGV0IHJlcTogWE1MSHR0cFJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICBpZihhc3luYykge1xuICAgICAgcmVxLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXEub3BlbihtZXRob2QsIHVybCk7XG4gICAgfVxuICAgIHNldEZvcm1hdEhlYWRlcnMocmVxLCB1cmwsIG9wdGlvbnMpO1xuICAgIHNldENvbnRlbnRIZWFkZXJzKHJlcSwgb3B0aW9ucyk7XG4gICAgc2V0UmVzcG9uc2VUeXBlKHJlcSwgb3B0aW9ucyk7XG5cbiAgICByZXEub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgZGF0YTtcbiAgICAgIC8vIFRoaXMgaXMgY2FsbGVkIGV2ZW4gb24gNDA0IGV0YyBzbyBjaGVjayB0aGUgc3RhdHVzXG4gICAgICBpZiAoaXNTdWNjZXNzKHJlcS5zdGF0dXMpKSB7XG4gICAgICAgIFxuICAgICAgICBpZiAoWydjc3YnLCAnZXhjZWwnXS5pbmNsdWRlcyhvcHRpb25zLmZvcm1hdCkgfHwgIXJlcS5yZXNwb25zZSl7XG4gICAgICAgICAgcmVzb2x2ZShyZXEucmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmKG9wdGlvbnMucmVzcG9uc2VUeXBlID09PSAnYmxvYicpIHtcbiAgICAgICAgICByZXNvbHZlKG5ldyBCbG9iKFtyZXEucmVzcG9uc2VdLCB7dHlwZTogcmVxLmdldFJlc3BvbnNlSGVhZGVyKCdjb250ZW50LXR5cGUnKX0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXNwb25zZVN0ciA9IHJlcS5yZXNwb25zZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBpZighcmVzcG9uc2VTdHIpIHtcbiAgICAgICAgICAvLyAgIHJlc3BvbnNlU3RyID0gXCJ7fVwiO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZVN0cik7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGV4KXtcbiAgICAgICAgICByZWplY3QoRXJyb3IoJ0ludmFsaWQgSlNPTiByZXNwb25zZScpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcHJvbWlzZSB3aXRoIHRoZSByZXNwb25zZSB0ZXh0XG4gICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIHJlamVjdCB3aXRoIHRoZSBzdGF0dXMgdGV4dFxuICAgICAgICAvLyB3aGljaCB3aWxsIGhvcGVmdWxseSBiZSBhIG1lYW5pbmdmdWwgZXJyb3JcbiAgICAgICAgcmVqZWN0KEVycm9yKHJlcS5zdGF0dXNUZXh0KSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBuZXR3b3JrIGVycm9yc1xuICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QoRXJyb3IoXCJOZXR3b3JrIEVycm9yXCIpKTtcbiAgICB9O1xuXG4gICAgLy8gTWFrZSB0aGUgcmVxdWVzdFxuICAgIGlmKGJvZHkpIHtcbiAgICAgIGlmICghb3B0aW9ucy5jb250ZW50VHlwZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlID09PSBEYXRhRm9ybWF0cy5KU09OKSB7XG4gICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgICAgICAgLy8gTWFrZSB0aGUgcmVxdWVzdFxuICAgICAgICByZXEuc2VuZChqc29uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGJvZHkgY2FuIG5vIGxvbmdlciBiZSBKU09OXG4gICAgICAgIHJlcS5zZW5kKGJvZHkgYXMgWE1MSHR0cFJlcXVlc3RCb2R5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXEuc2VuZCgpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzU3VjY2VzcyhzdGF0dXM6IG51bWJlcikge1xuICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG59XG5cbmZ1bmN0aW9uIGlzVmVyaWZpZWRPcmlnaW4ob3JpZ2luOiBzdHJpbmcpIHtcbiAgY29uc3Qgd2hpdGVsaXN0ZWQgPSBvcmlnaW4ubWF0Y2goJ15odHRwcz86Ly8oW14vXStbLl0pPyhkb21vfGRvbW90ZWNofGRvbW9yaWcpXFwuKGNvbXxpbyk/KC8uKik/JCcpO1xuICBjb25zdCBibGFja2xpc3RlZCA9IG9yaWdpbi5tYXRjaCgnKC4qKVxcLihkb21vYXBwcylcXC4oLiopJyk7XG4gIHJldHVybiAhIXdoaXRlbGlzdGVkICYmICFibGFja2xpc3RlZDtcbn1cblxuZnVuY3Rpb24gZ2V0UXVlcnlQYXJhbXMoKTogUXVlcnlQYXJhbXMge1xuICBjb25zdCBxdWVyeSA9IGxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSk7XG4gIGxldCByZXN1bHQgOiB7IFtpbmRleCA6IHN0cmluZ10gOiBzdHJpbmd9ID0ge307XG4gIHF1ZXJ5LnNwbGl0KFwiJlwiKS5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpIHtcbiAgICBjb25zdCBpdGVtID0gcGFydC5zcGxpdChcIj1cIik7XG4gICAgcmVzdWx0W2l0ZW1bMF1dID0gZGVjb2RlVVJJQ29tcG9uZW50KGl0ZW1bMV0pO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc2V0Rm9ybWF0SGVhZGVycyhyZXE6IFhNTEh0dHBSZXF1ZXN0LCB1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKXtcbiAgaWYgKHVybC5pbmRleE9mKCdkYXRhL3YxJykgPT09IC0xICkgeyByZXR1cm47IH1cbiAgLy8gc2V0IGZvcm1hdFxuICBjb25zdCByZXF1ZXN0Rm9ybWF0OiBEYXRhRm9ybWF0cyA9IChvcHRpb25zLmZvcm1hdCAhPT0gdW5kZWZpbmVkKVxuICAgID8gKGRvbW9Gb3JtYXRUb1JlcXVlc3RGb3JtYXQob3B0aW9ucy5mb3JtYXQpKSBcbiAgICA6IChEYXRhRm9ybWF0cy5ERUZBVUxUKTtcblxuICByZXEuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgcmVxdWVzdEZvcm1hdCk7XG59XG5cbmZ1bmN0aW9uIHNldENvbnRlbnRIZWFkZXJzKHJlcTogWE1MSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykge1xuICBpZiAob3B0aW9ucy5jb250ZW50VHlwZSkge1xuICAgIC8vIHNldCBjb250ZW50IHR5cGUgaWYgdXNlciBwYXNzZWQgb3B0aW9uXG4gICAgaWYob3B0aW9ucy5jb250ZW50VHlwZSAhPT0gJ211bHRpcGFydCcpe1xuICAgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsIG9wdGlvbnMuY29udGVudFR5cGUpO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICByZXEuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgRGF0YUZvcm1hdHMuSlNPTik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0UmVzcG9uc2VUeXBlKHJlcTogWE1MSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykge1xuICAvL3NldCByZXNwb25zZSB0eXBlIGlmIHVzZXIgcGFzc2VkIG9wdGlvblxuICBpZiAob3B0aW9ucy5yZXNwb25zZVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlcS5yZXNwb25zZVR5cGUgPSBvcHRpb25zLnJlc3BvbnNlVHlwZTtcbiAgfVxufSIsImV4cG9ydCBlbnVtIFJlcXVlc3RNZXRob2RzIHtcbiAgZ2V0ID0gJ0dFVCcsXG4gIEdFVCA9ICdHRVQnLFxuICBwb3N0ID0gJ1BPU1QnLFxuICBQT1NUID0gJ1BPU1QnLFxuICBwdXQgPSAnUFVUJyxcbiAgUFVUID0gJ1BVVCcsXG4gIGRlbGV0ZSA9ICdERUxFVEUnLFxuICBERUxFVEUgPSAnREVMRVRFJyxcbn1cbiIsIi8qKlxuICogU3VwcG9ydGVkIGBhY2NlcHRgIGhlYWRlcnMgZm9yIGNvbnRyb2xsaW5nIHRoZSBmb3JtYXRcbiAqIG9mIHRoZSBkYXRhIHJldHVybmVkIGZyb20gRG9tby5cbiAqXG4gKiBTZWUgW2RldmVsb3Blci5kb21vLmNvbV0oaHR0cHM6Ly9kZXZlbG9wZXIuZG9tby5jb20vZG9jcy9kZXYtc3R1ZGlvLXJlZmVyZW5jZXMvZGF0YS1hcGkjRGF0YSUyMEZvcm1hdHMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICovXG5leHBvcnQgZW51bSBEYXRhRm9ybWF0cyB7XG4gIERFRkFVTFQgPSAnYXBwbGljYXRpb24vYXJyYXktb2Ytb2JqZWN0cycsXG4gIEFSUkFZX09GX09CSkVDVFMgPSAnYXBwbGljYXRpb24vYXJyYXktb2Ytb2JqZWN0cycsXG4gIEpTT04gPSAnYXBwbGljYXRpb24vanNvbicsXG4gIENTViA9ICd0ZXh0L2NzdicsXG4gIEVYQ0VMID0gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyxcbiAgUExBSU4gPSAndGV4dC9wbGFpbidcbn0iLCJpbXBvcnQgeyBEb21vRGF0YUZvcm1hdHMsIERhdGFGb3JtYXRzIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRvbW9Gb3JtYXRUb1JlcXVlc3RGb3JtYXQoZm9ybWF0OiBEb21vRGF0YUZvcm1hdHMpOiBEYXRhRm9ybWF0cyB7XG4gIHN3aXRjaCAoZm9ybWF0KSB7XG4gICAgY2FzZSAnYXJyYXktb2Ytb2JqZWN0cyc6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5BUlJBWV9PRl9PQkpFQ1RTO1xuICAgIH1cbiAgICBjYXNlICdhcnJheS1vZi1hcnJheXMnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuSlNPTjtcbiAgICB9XG4gICAgY2FzZSAnZXhjZWwnOiB7XG4gICAgICByZXR1cm4gRGF0YUZvcm1hdHMuRVhDRUw7XG4gICAgfVxuICAgIGNhc2UgJ2Nzdic6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5DU1Y7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBEYXRhRm9ybWF0cy5ERUZBVUxUO1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ== |
export { RequestMethods } from './enums/request-methods'; | ||
export { DomoDataFormats } from './interfaces/domo-data-formats'; | ||
export { DataFormats } from './enums/data-formats'; | ||
export { FilterDataTypes } from './enums/filter-data-types'; | ||
export { FilterOperators } from './enums/filter-operators'; | ||
export { FilterDataTypes } from './interfaces/filter-data-types'; | ||
export { FilterOperators } from './interfaces/filter-operators'; | ||
export { RequestOptions, ObjectRequestOptions, ArrayRequestOptions } from './interfaces/request-options'; | ||
@@ -7,0 +7,0 @@ export { QueryParams } from './interfaces/query-params'; |
@@ -5,8 +5,3 @@ import { DomoDataFormats } from './domo-data-formats'; | ||
responseType?: XMLHttpRequestResponseType; | ||
headers?: { | ||
[key: string]: string; | ||
}; | ||
[key: string]: string | undefined | { | ||
[key: string]: string; | ||
}; | ||
[index: string]: string | undefined; | ||
} | ||
@@ -13,0 +8,0 @@ export interface ObjectRequestOptions extends RequestOptions { |
{ | ||
"name": "ryuu.js", | ||
"version": "3.0.1", | ||
"version": "3.0.2", | ||
"description": "Ryuu JavaScript Utility Library", | ||
@@ -5,0 +5,0 @@ "main": "dist/domo.js", |
@@ -107,5 +107,5 @@ import { | ||
static filterContainer(column: string, operator: FilterOperators, values: string[], dataType: FilterDataTypes.STRING): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: number[], dataType: FilterDataTypes.NUMERIC): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: Date[], dataType: FilterDataTypes.DATE | FilterDataTypes.DATETIME): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: string[], dataType: 'STRING'): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: number[], dataType: 'NUMERIC'): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: Date[], dataType: 'DATE' | 'DATETIME'): void; | ||
static filterContainer(column: string, operator: FilterOperators, values: (string | number | Date)[], dataType: FilterDataTypes): void { | ||
@@ -112,0 +112,0 @@ const userAgent = window.navigator.userAgent.toLowerCase(), |
export { RequestMethods } from './enums/request-methods'; | ||
export { DomoDataFormats } from './interfaces/domo-data-formats'; | ||
export { DataFormats } from './enums/data-formats'; | ||
export { FilterDataTypes } from './enums/filter-data-types'; | ||
export { FilterOperators } from './enums/filter-operators'; | ||
export { FilterDataTypes } from './interfaces/filter-data-types'; | ||
export { FilterOperators } from './interfaces/filter-operators'; | ||
@@ -7,0 +7,0 @@ export { RequestOptions, ObjectRequestOptions, ArrayRequestOptions } from './interfaces/request-options'; |
43
117272
804