UNPKG

ryuu.js

Version:

Ryuu JavaScript Utility Library

3 lines 101 kB
/*! For license information please see domo.js.LICENSE.txt */ !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()}(self,(()=>(()=>{"use strict";var e={110:function(e,t,a){var r=this&&this.__awaiter||function(e,t,a,r){return new(a||(a=Promise))((function(n,o){function s(e){try{d(r.next(e))}catch(e){o(e)}}function i(e){try{d(r.throw(e))}catch(e){o(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof a?t:new a((function(e){e(t)}))).then(s,i)}d((r=r.apply(e,t||[])).next())}))},n=this&&this.__generator||function(e,t){var a,r,n,o,s={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return o={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function i(i){return function(d){return function(i){if(a)throw new TypeError("Generator is already executing.");for(;o&&(o=0,i[0]&&(s=0)),s;)try{if(a=1,r&&(n=2&i[0]?r.return:i[0]?r.throw||((n=r.return)&&n.call(r),0):r.next)&&!(n=n.call(r,i[1])).done)return n;switch(r=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,r=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((n=(n=s.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]<n[3])){s.label=i[1];break}if(6===i[0]&&s.label<n[1]){s.label=n[1],n=i;break}if(n&&s.label<n[2]){s.label=n[2],s.ops.push(i);break}n[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],r=0}finally{a=n=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,d])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.domoHttp=t.delete=t.put=t.post=t.getAll=t.get=void 0;var o=a(617),s=a(256),i=a(994),d=a(797),l=a(748);function u(e,t,a,d){return void 0===a&&(a={}),r(this,void 0,void 0,(function(){var r,l,u,p,h,y,T,g,b;return n(this,(function(n){switch(n.label){case 0:r=a.fetch,l={},(0,i.setFormatHeaders)(l,t,a),(0,s.setContentHeaders)(l,a),(0,s.setAuthTokenHeader)(l,(0,o.getToken)()),u={method:e,headers:l,body:c(d,a.contentType)},p=r||fetch,n.label=1;case 1:return n.trys.push([1,3,,4]),[4,p(t,u)];case 2:return h=n.sent(),[3,4];case 3:throw v(void 0,n.sent().message,"");case 4:if(h.ok)return[3,9];y=h.statusText,T="",n.label=5;case 5:return n.trys.push([5,7,,8]),[4,h.text()];case 6:return T=n.sent(),y=T||y,[3,8];case 7:return n.sent(),[3,8];case 8:throw v(h,y,T);case 9:return n.trys.push([9,11,,12]),[4,f(h,a)];case 10:return[2,n.sent()];case 11:if((g=n.sent())&&(g.status||0===g.status))throw g;throw(b=new Error("domoHttp error: ".concat(g.message))).originalError=g,b;case 12:return[2]}}))}))}function p(e,t){var a;return(null!==(a=null==this?void 0:this.domoHttp)&&void 0!==a?a:u)(l.RequestMethods.GET,e,t)}function c(e,t){if(e)return t&&t!==d.DataFormats.JSON?e:JSON.stringify(e)}function v(e,t,a){var r=new Error(e?"HTTP error ".concat(e.status,": ").concat(t):t);return e&&(r.status=e.status,r.statusText=e.statusText,r.body=a,r.headers={},e.headers&&"function"==typeof e.headers.forEach&&e.headers.forEach((function(e,t){r.headers[t]=e}))),r}function f(e,t){return"blob"!==t.responseType&&["csv","excel"].includes(t.format)?e.text():"blob"===t.responseType?e.blob():e.text().then((function(e){if(!e)return"";try{return JSON.parse(e)}catch(a){var t=new Error("Invalid JSON response: "+a.message);throw t.responseText=e,t}}))}t.domoHttp=u,t.get=p,t.getAll=function(e,t){var a,r=null!==(a=null==this?void 0:this.get)&&void 0!==a?a:p;return Promise.all(e.map((function(e){return r(e,t)})))},t.post=function(e,t,a){var r;return(null!==(r=null==this?void 0:this.domoHttp)&&void 0!==r?r:u)(l.RequestMethods.POST,e,a,t)},t.put=function(e,t,a){var r;return(null!==(r=null==this?void 0:this.domoHttp)&&void 0!==r?r:u)(l.RequestMethods.PUT,e,a,t)},t.delete=function(e,t){var a;return(null!==(a=null==this?void 0:this.domoHttp)&&void 0!==a?a:u)(l.RequestMethods.DELETE,e,t)}},220:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleDataUpdated=t.onDataUpdated=void 0,t.onDataUpdated=function(e){var t=this;return this.connect(!0),this.listeners.onDataUpdated.push(e),function(){var a=t.listeners.onDataUpdated.indexOf(e);a>=0&&t.listeners.onDataUpdated.splice(a,1)}},t.handleDataUpdated=function(e,t){e&&t&&this.listeners.onDataUpdated.length&&(t.postMessage({requestId:e.requestId,event:"ack",alias:e.alias}),this.listeners.onDataUpdated.forEach((function(t){return t(e.alias)})))}},248:(e,t)=>{var a,r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.FilterDataTypes=t.FilterOperatorsNumeric=t.FilterOperatorsString=void 0,(n=t.FilterOperatorsString||(t.FilterOperatorsString={})).IN="IN",n.NOT_IN="NOT_IN",n.CONTAINS="CONTAINS",n.NOT_CONTAINS="NOT_CONTAINS",n.STARTS_WITH="STARTS_WITH",n.NOT_STARTS_WITH="NOT_STARTS_WITH",n.ENDS_WITH="ENDS_WITH",n.NOT_ENDS_WITH="NOT_ENDS_WITH",(r=t.FilterOperatorsNumeric||(t.FilterOperatorsNumeric={})).GREATER_THAN="GREATER_THAN",r.GREAT_THAN_EQUALS_TO="GREAT_THAN_EQUALS_TO",r.LESS_THAN="LESS_THAN",r.LESS_THAN_EQUALS_TO="LESS_THAN_EQUALS_TO",r.BETWEEN="BETWEEN",r.EQUALS="EQUALS",r.NOT_EQUALS="NOT_EQUALS",(a=t.FilterDataTypes||(t.FilterDataTypes={})).NUMERIC="NUMERIC",a.DATE="DATE",a.DATETIME="DATETIME",a.STRING="STRING"},256:(e,t)=>{function a(e,t){var a,n;if(e===document.body||e===document.head)return r(e,t);var o=(null===(a=e.dataset)||void 0===a?void 0:a.domoHref)||e.getAttribute("href"),s=(null===(n=e.dataset)||void 0===n?void 0:n.domoSrc)||e.getAttribute("src"),i=o?"href":"src",d=o||s;if(d&&t&&!d.includes(t)){var l=new URL(d,document.location.origin);l.origin===document.location.origin&&(l.searchParams.append("ryuu_sid",t),e.setAttribute(i,l.href))}}function r(e,t){for(var r=0,n=Array.from(e.children);r<n.length;r++)a(n[r],t)}Object.defineProperty(t,"__esModule",{value:!0}),t.processBody=t.handleNode=t.setResponseType=t.setAuthTokenHeader=t.setContentHeaders=void 0,t.setContentHeaders=function(e,t){"multipart"!==(null==t?void 0:t.contentType)&&(e["Content-Type"]="application/json",(null==t?void 0:t.contentType)&&(e["Content-Type"]=t.contentType))},t.setAuthTokenHeader=function(e,t){if(t)return e["X-DOMO-Ryuu-Session"]=t;delete e["X-DOMO-Ryuu-Session"]},t.setResponseType=function(e,t){t&&void 0!==t.responseType&&(e.responseType=t.responseType)},t.handleNode=a,t.processBody=r},353:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleVariablesUpdated=t.onVariablesUpdated=t.requestVariablesUpdate=void 0;var r=a(994),n=a(396);t.requestVariablesUpdate=function(e,t,a){var o,s,i;(0,n.guardAgainstInvalidVariables)(e);var d="string"==typeof e?JSON.parse(e):e,l=(0,r.generateUniqueId)(),u=(0,r.isIOS)(),p={requestId:l,event:"variable",variables:d};if(this.requests[l]={request:{payload:p,onAck:t,onReply:a,status:"pending",sentAt:Date.now()}},!u)return window.parent.postMessage(JSON.stringify(p),"*"),l;try{var c="string"==typeof d?d:JSON.stringify(d);domovariable.postMessage(c)}catch(e){console.error("Failed to post message using domovariable:",e);try{c="string"==typeof d?d:JSON.stringify(d),null===(i=null===(s=null===(o=window.webkit)||void 0===o?void 0:o.messageHandlers)||void 0===s?void 0:s.domovariable)||void 0===i||i.postMessage(c)}catch(e){console.error("Failed to post message using webkit:",e),window.parent.postMessage(JSON.stringify(p),"*")}}return l},t.onVariablesUpdated=function(e){var t=this;return this.connect(!0),this.listeners.onVariablesUpdated.push(e),function(){var a=t.listeners.onVariablesUpdated.indexOf(e);a>=0&&t.listeners.onVariablesUpdated.splice(a,1)}},t.handleVariablesUpdated=function(e,t){e&&(this.listeners.onVariablesUpdated.length&&(null==t||t.postMessage({requestId:e.requestId,event:"ack",variables:e.variables}),this.listeners.onVariablesUpdated.forEach((function(t){return t(e.variables)}))),this.handleReply(e.requestId,e.variables,e.error))}},396:(e,t)=>{function a(e){return null!==e&&"object"==typeof e&&"number"==typeof e.functionId&&e.hasOwnProperty("value")}function r(e){return Array.isArray(e)&&e.every(a)}Object.defineProperty(t,"__esModule",{value:!0}),t.guardAgainstInvalidVariables=t.isVariableArray=t.isVariable=void 0,t.isVariable=a,t.isVariableArray=r,t.guardAgainstInvalidVariables=function(e){var t=e;try{"string"==typeof e&&(t=JSON.parse(e))}catch(e){throw new Error('Variables string is not valid JSON or a valid Variable array: { "functionId": number, "value": any }[]')}if(!r(t))throw new Error('Variables must be provided as a Variable array or a stringified Variable array: { "functionId": number, "value": any }[]');if(0===t.length)throw new Error("Variables array cannot be empty.")}},617:(e,t)=>{var a;Object.defineProperty(t,"__esModule",{value:!0}),t.getToken=t.eventToListenerMap=t.DomoEvent=void 0,t.DomoEvent={appData:"appData",dataUpdated:"dataUpdated",filtersUpdated:"filtersUpdated",variablesUpdated:"variablesUpdated",ack:"ack"},t.eventToListenerMap=((a={})[t.DomoEvent.appData]="onAppDataUpdated",a[t.DomoEvent.dataUpdated]="onDataUpdated",a[t.DomoEvent.filtersUpdated]="onFiltersUpdated",a[t.DomoEvent.variablesUpdated]="onVariablesUpdated",a),t.getToken=function(){return null===window||void 0===window?void 0:window.__RYUU_SID__}},631:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleFiltersUpdated=t.onFiltersUpdated=t.requestFiltersUpdate=void 0;var r=a(994),n=a(670);t.requestFiltersUpdate=function(e,t,a,o){var s,i,d;void 0===t&&(t=null),(0,n.guardAgainstInvalidFilters)(e);var l=(0,r.generateUniqueId)(),u=(0,r.isIOS)(),p={requestId:l,event:"filter",filter:null==e?void 0:e.map((function(e){var t;return{columnName:e.column,operator:null!==(t=e.operator)&&void 0!==t?t:e.operand,values:e.values,dataType:e.dataType}})),pageStateUpdate:t};if(this.requests[l]={request:{payload:p,onAck:a,onReply:o,status:"pending",sentAt:Date.now()}},!u)return window.parent.postMessage(JSON.stringify(p),"*"),p.requestId;var c=null==e?void 0:e.map((function(e){return{column:e.column,operand:e.operator||e.operand,values:e.values,dataType:e.dataType}}));try{domofilter.postMessage(JSON.stringify(c))}catch(e){console.error("Failed to post message using domofilter:",e);try{null===(d=null===(i=null===(s=window.webkit)||void 0===s?void 0:s.messageHandlers)||void 0===i?void 0:i.domofilter)||void 0===d||d.postMessage(c)}catch(e){console.error("Failed to post message using webkit:",e),window.parent.postMessage(JSON.stringify(p),"*")}}return l},t.onFiltersUpdated=function(e){var t=this,a=this.listeners.onFiltersUpdated.length>0;return this.connect(),this.listeners.onFiltersUpdated.push(e),a||this.requestFiltersUpdate(null,!1),function(){var a=t.listeners.onFiltersUpdated.indexOf(e);a>=0&&t.listeners.onFiltersUpdated.splice(a,1)}},t.handleFiltersUpdated=function(e,t){e&&(this.listeners.onFiltersUpdated.length&&(null==t||t.postMessage({requestId:e.requestId,event:"ack",filters:e.filters}),this.listeners.onFiltersUpdated.forEach((function(t){return t(e.filters)}))),this.handleReply(e.requestId,e.filters,e.error))}},670:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.guardAgainstInvalidFilters=t.isFilterArray=t.isFilter=void 0;var r=a(248);function n(e){return null!==e&&"object"==typeof e&&"string"==typeof e.column&&(e.hasOwnProperty("operator")||e.hasOwnProperty("operand"))&&Array.isArray(e.values)&&e.hasOwnProperty("dataType")&&(Object.values(r.FilterDataTypes).includes(e.dataType)||"string"==typeof e.dataType&&["NUMERIC","DATE","DATETIME","STRING"].includes(e.dataType.toUpperCase()))&&(Object.values(r.FilterOperatorsString).includes(e.operator||e.operand)||Object.values(r.FilterOperatorsNumeric).includes(e.operator||e.operand)||"string"==typeof(e.operator||e.operand)&&["IN","NOT_IN","CONTAINS","NOT_CONTAINS","STARTS_WITH","NOT_STARTS_WITH","ENDS_WITH","NOT_ENDS_WITH","GREATER_THAN","GREAT_THAN_EQUALS_TO","LESS_THAN","LESS_THAN_EQUALS_TO","BETWEEN","EQUALS","NOT_EQUALS"].includes((e.operator||e.operand).toUpperCase()))}function o(e){return Array.isArray(e)&&e.every(n)}t.isFilter=n,t.isFilterArray=o,t.guardAgainstInvalidFilters=function(e){if(null!==e){if(!Array.isArray(e))throw new TypeError('Filters must be provided as a Filter array or null: { "column": string, "operator": string, "values": any[], "dataType": string }[]');if(0===e.length)throw new TypeError("Filters array cannot be empty.");if(!o(e))throw new TypeError('All filters must be valid Filter objects with required properties: { "column": string, "operator": string, "values": any[], "dataType": string }[]')}}},675:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleAppData=t.onAppDataUpdated=t.requestAppDataUpdate=void 0;var r=a(994);t.requestAppDataUpdate=function(e,t,a){var n=(0,r.generateUniqueId)(),o={requestId:n,event:"appData",appData:e};this.requests[n]={request:{payload:o,onAck:t,onReply:a,status:"pending",sentAt:Date.now()}},window.parent.postMessage(JSON.stringify(o),"*")},t.onAppDataUpdated=function(e){var t=this;return this.connect(!0),this.listeners.onAppDataUpdated.push(e),function(){var a=t.listeners.onAppDataUpdated.indexOf(e);a>=0&&t.listeners.onAppDataUpdated.splice(a,1)}},t.handleAppData=function(e,t){e&&(this.listeners.onAppDataUpdated.length&&(null==t||t.postMessage({requestId:e.requestId,event:"ack"}),this.listeners.onAppDataUpdated.forEach((function(t){return t(e.appData)}))),this.handleReply(e.requestId,e.appData,e.error))}},734:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.handleReply=t.handleAck=void 0,t.handleAck=function(e,t){var a,r,n=e.requestId;if(n){var o=this.requests[n];if(!o)return console.warn("No request found for ID: ".concat(n));"pending"!==o.request.status&&console.warn("Request ".concat(n," is not pending, current status: ").concat(o.request.status)),o.request.status="acknowledged",o.request.ackAt=Date.now(),null===(r=(a=o.request).onAck)||void 0===r||r.call(a,o.request.payload)}},t.handleReply=function(e,t,a){var r,n;if(e){var o=this.requests[e];if(!o)return console.warn("No request found for ID: ".concat(e));"acknowledged"!==o.request.status&&console.warn("Request ".concat(e," is not acknowledged, current status: ").concat(o.request.status));var s=a?"rejected":"fulfilled",i=Date.now();o.request.status=s,o.request.repliedAt=i,o.response={payload:t,status:s,error:a,repliedAt:i},null===(n=(r=o.request).onReply)||void 0===n||n.call(r,t,a)}}},748:(e,t)=>{var a;Object.defineProperty(t,"__esModule",{value:!0}),t.RequestMethods=void 0,(a=t.RequestMethods||(t.RequestMethods={})).GET="GET",a.POST="POST",a.PUT="PUT",a.DELETE="DELETE"},797:(e,t)=>{var a;Object.defineProperty(t,"__esModule",{value:!0}),t.DataFormats=void 0,(a=t.DataFormats||(t.DataFormats={})).ARRAY_OF_OBJECTS="application/array-of-objects",a.JSON="application/json",a.CSV="text/csv",a.EXCEL="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",a.PLAIN="text/plain"},928:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.navigate=void 0,t.navigate=function(e,t){var a=JSON.stringify({event:"navigate",url:e,isNewWindow:t});window.parent.postMessage(a,"*")}},992:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.domoFormatToRequestFormat=void 0;var r=a(797);t.domoFormatToRequestFormat=function(e){switch(e){case"array-of-objects":default: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}}},994:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isIOS=t.generateUniqueId=t.setFormatHeaders=t.getQueryParams=t.isVerifiedOrigin=t.isSuccess=void 0;var r=a(797),n=a(992),o=/^(?:[\w-]+\.)*(domo|domotech|domorig)\.(com|io)$/i,s=/domoapps/i;t.isSuccess=function(e){return e>=200&&e<300},t.isVerifiedOrigin=function(e){try{var t=new URL(e);if("https:"!==t.protocol)return!1;var a=t.hostname;return o.test(a)&&!s.test(a)}catch(e){return!1}},t.getQueryParams=function(){var e=location.search.substr(1),t={};return e.split("&").forEach((function(e){var a=e.split("=");t[a[0]]=decodeURIComponent(a[1])})),t},t.setFormatHeaders=function(e,t,a){if(e&&-1!==(null==t?void 0:t.indexOf("data/v"))){var o=void 0!==(null==a?void 0:a.format)?(0,n.domoFormatToRequestFormat)(a.format):r.DataFormats.ARRAY_OF_OBJECTS;e.Accept=o}},t.generateUniqueId=function(){return"undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"xxxxxxxxyxxxxyxxxyxxxxyxxxxyxxxxy".replace(/[xy]/g,(function(e){return(16*Math.random()|0).toString(16)}))},t.isIOS=function(){var e;if(void 0===globalThis.window||void 0===globalThis.navigator)return!1;var t=globalThis.navigator,a=t.userAgent.toLowerCase(),r=/(?:iphone|ipad|ipod)/.test(a),n=/mac os x/.test(a)&&"ontouchend"in document&&t.maxTouchPoints>1,o=void 0!==(null===(e=globalThis.webkit)||void 0===e?void 0:e.messageHandlers),s=!0===t.standalone,i=globalThis.screen&&globalThis.devicePixelRatio&&globalThis.devicePixelRatio>=2&&(globalThis.screen.width<1024||globalThis.screen.height<1024);return!(!r&&!n)||[o,s,i].filter(Boolean).length>=2}}},t={};function a(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,a),o.exports}var r={};return(()=>{var e=r;e.Domo=void 0;var t=a(256),n=a(220),o=a(631),s=a(353),i=a(675),d=a(928),l=a(110),u=a(994),p=a(617),c=a(734),v=function(){function e(){}var t;return e.extend=function(t){for(var a in t)Object.prototype.hasOwnProperty.call(e,a)&&(e[a]=t[a])},t=e,e.requests={},e.connected=!1,e.listeners={onDataUpdated:[],onFiltersUpdated:[],onAppDataUpdated:[],onVariablesUpdated:[]},e.get=l.get,e.getAll=l.getAll,e.post=l.post,e.put=l.put,e.delete=l.delete,e.domoHttp=l.domoHttp,e.onDataUpdated=n.onDataUpdated,e.onFiltersUpdated=o.onFiltersUpdated,e.onAppDataUpdated=i.onAppDataUpdated,e.onVariablesUpdated=s.onVariablesUpdated,e.onFiltersUpdate=t.onFiltersUpdated,e.onDataUpdate=t.onDataUpdated,e.onAppData=t.onAppDataUpdated,e.requestFiltersUpdate=o.requestFiltersUpdate,e.requestVariablesUpdate=s.requestVariablesUpdate,e.requestAppDataUpdate=i.requestAppDataUpdate,e.navigate=d.navigate,e.filterContainer=t.requestFiltersUpdate,e.sendVariables=t.requestVariablesUpdate,e.sendAppData=t.requestAppDataUpdate,e.handleAck=c.handleAck,e.handleReply=c.handleReply,e.getRequests=function(){return t.requests},e.getRequest=function(e){return t.requests[e]},e.env=(0,u.getQueryParams)(),e.__util={isVerifiedOrigin:u.isVerifiedOrigin,getQueryParams:u.getQueryParams,setFormatHeaders:u.setFormatHeaders,isSuccess:u.isSuccess},e.connect=function(e){var a;if(void 0===e&&(e=!1),!t.connected){t.connected=!0,t.channel=new MessageChannel,window.parent.postMessage(JSON.stringify({requestId:(0,u.generateUniqueId)(),event:"subscribe",skipFilters:e}),"*",[t.channel.port2]);var r=((a={})[p.DomoEvent.dataUpdated]=n.handleDataUpdated.bind(t),a[p.DomoEvent.filtersUpdated]=o.handleFiltersUpdated.bind(t),a[p.DomoEvent.appData]=i.handleAppData.bind(t),a[p.DomoEvent.variablesUpdated]=s.handleVariablesUpdated.bind(t),a[p.DomoEvent.ack]=c.handleAck.bind(t),a);t.channel.port1.onmessage=function(e){var t=e.ports[0],a=r[e.data.event];null==a||a(e.data,t)}}},e}();e.Domo=v;var f=new MutationObserver((function(e){for(var a=(0,p.getToken)(),r=0,n=e;r<n.length;r++)n[r].addedNodes.forEach((function(e){e instanceof HTMLElement&&(0,t.handleNode)(e,a)}))}));f.observe(document.documentElement,{childList:!0}),f.observe(document.head,{childList:!0})})(),r.Domo})())); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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IndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9zZXJ2aWNlcy9odHRwLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL3NlcnZpY2VzL2RhdGFzZXQudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvaW50ZXJmYWNlcy9maWx0ZXIudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy91dGlscy9kb21vdXRpbHMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvc2VydmljZXMvdmFyaWFibGVzLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvdXRpbHMvdmFyaWFibGUudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvY29uc3RhbnRzL2dlbmVyYWwudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvc2VydmljZXMvZmlsdGVycy50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL3V0aWxzL2ZpbHRlci50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9zZXJ2aWNlcy9hcHBkYXRhLnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvdXRpbHMvYXNrLXJlcGx5LnRzIiwid2VicGFjazovL2RvbW8vLi9zcmMvbW9kZWxzL2VudW1zL3JlcXVlc3QtbWV0aG9kcy50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL21vZGVscy9lbnVtcy9kYXRhLWZvcm1hdHMudHMiLCJ3ZWJwYWNrOi8vZG9tby8uL3NyYy9tb2RlbHMvc2VydmljZXMvbmF2aWdhdGlvbi50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL3V0aWxzL2RhdGEtaGVscGVycy50cyIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL3V0aWxzL2dlbmVyYWwudHMiLCJ3ZWJwYWNrOi8vZG9tby93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9kb21vLy4vc3JjL2RvbW8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiZG9tb1wiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJkb21vXCJdID0gZmFjdG9yeSgpO1xufSkoc2VsZiwgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7IGdldFRva2VuIH0gZnJvbSBcIi4uL2NvbnN0YW50cy9nZW5lcmFsXCI7XG5pbXBvcnQgeyBzZXRBdXRoVG9rZW5IZWFkZXIsIHNldENvbnRlbnRIZWFkZXJzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2RvbW91dGlsc1wiO1xuaW1wb3J0IHsgc2V0Rm9ybWF0SGVhZGVycyB9IGZyb20gXCIuLi8uLi91dGlscy9nZW5lcmFsXCI7XG5pbXBvcnQgeyBEYXRhRm9ybWF0cyB9IGZyb20gXCIuLi9lbnVtcy9kYXRhLWZvcm1hdHNcIjtcbmltcG9ydCB7IFJlcXVlc3RNZXRob2RzIH0gZnJvbSBcIi4uL2VudW1zL3JlcXVlc3QtbWV0aG9kc1wiO1xuaW1wb3J0IHsgUmVxdWVzdEJvZHksIFJlcXVlc3RPcHRpb25zLCBPYmplY3RSZXNwb25zZUJvZHksIEFycmF5UmVzcG9uc2VCb2R5LCBSZXNwb25zZUJvZHkgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9yZXF1ZXN0XCI7XG5cbmZ1bmN0aW9uIGRvbW9IdHRwKG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsIHVybDogc3RyaW5nLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9uczwnYXJyYXktb2Ytb2JqZWN0cyc+LCBib2R5PzogUmVxdWVzdEJvZHkpOiBQcm9taXNlPE9iamVjdFJlc3BvbnNlQm9keVtdPjtcbmZ1bmN0aW9uIGRvbW9IdHRwKG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsIHVybDogc3RyaW5nLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9uczwnYXJyYXktb2YtYXJyYXlzJz4sIGJvZHk/OiBSZXF1ZXN0Qm9keSk6IFByb21pc2U8QXJyYXlSZXNwb25zZUJvZHk+O1xuZnVuY3Rpb24gZG9tb0h0dHAobWV0aG9kOiBSZXF1ZXN0TWV0aG9kcywgdXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucywgYm9keT86IFJlcXVlc3RCb2R5KTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuZnVuY3Rpb24gZG9tb0h0dHA8VD4obWV0aG9kOiBSZXF1ZXN0TWV0aG9kcywgdXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucywgYm9keT86IFJlcXVlc3RCb2R5KTogUHJvbWlzZTxUPjtcbmFzeW5jIGZ1bmN0aW9uIGRvbW9IdHRwPFQ+KG1ldGhvZDogUmVxdWVzdE1ldGhvZHMsIHVybDogc3RyaW5nLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyA9IHt9LCBib2R5PzogUmVxdWVzdEJvZHkpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBjdXN0b21GZXRjaCA9IChvcHRpb25zIGFzIGFueSkuZmV0Y2ggYXMgdHlwZW9mIGZldGNoIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBzZXRGb3JtYXRIZWFkZXJzKGhlYWRlcnMgYXMgYW55LCB1cmwsIG9wdGlvbnMpO1xuICAgIHNldENvbnRlbnRIZWFkZXJzKGhlYWRlcnMgYXMgYW55LCBvcHRpb25zKTtcbiAgICBzZXRBdXRoVG9rZW5IZWFkZXIoaGVhZGVycyBhcyBhbnksIGdldFRva2VuKCkpO1xuXG4gICAgY29uc3QgZmV0Y2hPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBib2R5OiBzZXJpYWxpemVCb2R5KGJvZHksIG9wdGlvbnMuY29udGVudFR5cGUpLFxuICAgIH07XG5cbiAgICBjb25zdCBmZXRjaEltcGwgPSBjdXN0b21GZXRjaCB8fCBmZXRjaDtcbiAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlO1xuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoSW1wbCh1cmwsIGZldGNoT3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZmV0Y2hFcnI6IGFueSkge1xuICAgICAgdGhyb3cgYnVpbGRFcnJvcih1bmRlZmluZWQsIGZldGNoRXJyLm1lc3NhZ2UsICcnKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBsZXQgZXJyb3JUZXh0ID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgICAgIGxldCBlcnJvckJvZHkgPSAnJztcbiAgICAgIHRyeSB7XG4gICAgICAgIGVycm9yQm9keSA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgZXJyb3JUZXh0ID0gZXJyb3JCb2R5IHx8IGVycm9yVGV4dDtcbiAgICAgIH0gY2F0Y2gge31cbiAgICAgIHRocm93IGJ1aWxkRXJyb3IocmVzcG9uc2UsIGVycm9yVGV4dCwgZXJyb3JCb2R5KTtcbiAgICB9XG4gICAgXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBwYXJzZVJlc3BvbnNlPFQ+KHJlc3BvbnNlLCBvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGVyciAmJiAoZXJyLnN0YXR1cyB8fCBlcnIuc3RhdHVzID09PSAwKSkgdGhyb3cgZXJyO1xuXG4gICAgICBjb25zdCBlcnJvcjogYW55ID0gbmV3IEVycm9yKGBkb21vSHR0cCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIGVycm9yLm9yaWdpbmFsRXJyb3IgPSBlcnI7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldCh1cmw6IHN0cmluZywgb3B0aW9uczogUmVxdWVzdE9wdGlvbnM8J2FycmF5LW9mLW9iamVjdHMnPik6IFByb21pc2U8T2JqZWN0UmVzcG9uc2VCb2R5W10+O1xuZnVuY3Rpb24gZ2V0KHVybDogc3RyaW5nLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9uczwnYXJyYXktb2YtYXJyYXlzJz4pOiBQcm9taXNlPEFycmF5UmVzcG9uc2VCb2R5PjtcbmZ1bmN0aW9uIGdldCh1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuZnVuY3Rpb24gZ2V0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuZnVuY3Rpb24gZ2V0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgaGFuZGxlID0gdGhpcz8uZG9tb0h0dHAgPz8gZG9tb0h0dHA7XG4gIHJldHVybiBoYW5kbGUoUmVxdWVzdE1ldGhvZHMuR0VULCB1cmwsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBnZXRBbGwodXJsczogc3RyaW5nW10sIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zPCdhcnJheS1vZi1vYmplY3RzJz4pOiBQcm9taXNlPE9iamVjdFJlc3BvbnNlQm9keVtdW10+O1xuZnVuY3Rpb24gZ2V0QWxsKHVybHM6IHN0cmluZ1tdLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9uczwnYXJyYXktb2YtYXJyYXlzJz4pOiBQcm9taXNlPEFycmF5UmVzcG9uc2VCb2R5W10+O1xuZnVuY3Rpb24gZ2V0QWxsKHVybHM6IHN0cmluZ1tdLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlQm9keVtdPjtcbmZ1bmN0aW9uIGdldEFsbDxUPih1cmxzOiBzdHJpbmdbXSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUW10+O1xuZnVuY3Rpb24gZ2V0QWxsPFQgPSBSZXNwb25zZUJvZHk+KHVybHM6IHN0cmluZ1tdLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFRbXT4ge1xuICBjb25zdCBoYW5kbGUgPSB0aGlzPy5nZXQgPz8gZ2V0O1xuICByZXR1cm4gUHJvbWlzZS5hbGwodXJscy5tYXAodXJsID0+IGhhbmRsZSh1cmwsIG9wdGlvbnMpKSk7XG59O1xuXG5mdW5jdGlvbiBwb3N0KHVybDogc3RyaW5nLCBib2R5PzogUmVxdWVzdEJvZHksIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VCb2R5PjtcbmZ1bmN0aW9uIHBvc3Q8VD4odXJsOiBzdHJpbmcsIGJvZHk/OiBSZXF1ZXN0Qm9keSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPjtcbmZ1bmN0aW9uIHBvc3Q8VD4odXJsOiBzdHJpbmcsIGJvZHk/OiBSZXF1ZXN0Qm9keSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IGhhbmRsZSA9IHRoaXM/LmRvbW9IdHRwID8/IGRvbW9IdHRwO1xuICByZXR1cm4gaGFuZGxlKFJlcXVlc3RNZXRob2RzLlBPU1QsIHVybCwgb3B0aW9ucywgYm9keSk7XG59XG5cbmZ1bmN0aW9uIHB1dCh1cmw6IHN0cmluZywgYm9keT86IFJlcXVlc3RCb2R5LCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlQm9keT47XG5mdW5jdGlvbiBwdXQ8VD4odXJsOiBzdHJpbmcsIGJvZHk/OiBSZXF1ZXN0Qm9keSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPjtcbmZ1bmN0aW9uIHB1dDxUPih1cmw6IHN0cmluZywgYm9keT86IFJlcXVlc3RCb2R5LCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgaGFuZGxlID0gdGhpcz8uZG9tb0h0dHAgPz8gZG9tb0h0dHA7XG4gIHJldHVybiBoYW5kbGUoUmVxdWVzdE1ldGhvZHMuUFVULCB1cmwsIG9wdGlvbnMsIGJvZHkpO1xufVxuXG5mdW5jdGlvbiB0cmFzaCh1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZUJvZHk+O1xuZnVuY3Rpb24gdHJhc2g8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD47XG5mdW5jdGlvbiB0cmFzaDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IGhhbmRsZSA9IHRoaXM/LmRvbW9IdHRwID8/IGRvbW9IdHRwO1xuICByZXR1cm4gaGFuZGxlKFJlcXVlc3RNZXRob2RzLkRFTEVURSwgdXJsLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplQm9keShib2R5OiBSZXF1ZXN0Qm9keSwgY29udGVudFR5cGU/OiBzdHJpbmcpOiBhbnkge1xuICAgIGlmICghYm9keSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBpZiAoIWNvbnRlbnRUeXBlIHx8IGNvbnRlbnRUeXBlID09PSBEYXRhRm9ybWF0cy5KU09OKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gICAgfVxuICAgIHJldHVybiBib2R5IGFzIGFueTtcbiAgfVxuXG5mdW5jdGlvbiBidWlsZEVycm9yKHJlc3BvbnNlOiBSZXNwb25zZSB8IHVuZGVmaW5lZCwgZXJyb3JUZXh0OiBzdHJpbmcsIGVycm9yQm9keTogc3RyaW5nKTogRXJyb3Ige1xuICBjb25zdCBlcnJvcjogYW55ID0gbmV3IEVycm9yKHJlc3BvbnNlID8gYEhUVFAgZXJyb3IgJHtyZXNwb25zZS5zdGF0dXN9OiAke2Vycm9yVGV4dH1gIDogZXJyb3JUZXh0KTtcbiAgaWYgKHJlc3BvbnNlKSB7XG4gICAgZXJyb3Iuc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzO1xuICAgIGVycm9yLnN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICAgIGVycm9yLmJvZHkgPSBlcnJvckJvZHk7XG4gICAgZXJyb3IuaGVhZGVycyA9IHt9O1xuICAgIGlmIChyZXNwb25zZS5oZWFkZXJzICYmIHR5cGVvZiByZXNwb25zZS5oZWFkZXJzLmZvckVhY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBlcnJvci5oZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZXJyb3I7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUmVzcG9uc2U8VD4ocmVzcG9uc2U6IFJlc3BvbnNlLCBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICBpZiAob3B0aW9ucy5yZXNwb25zZVR5cGUgIT09IFwiYmxvYlwiICYmIFtcImNzdlwiLCBcImV4Y2VsXCJdLmluY2x1ZGVzKG9wdGlvbnMuZm9ybWF0KSlcbiAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpIGFzIGFueSBhcyBQcm9taXNlPFQ+O1xuICBcbiAgaWYgKG9wdGlvbnMucmVzcG9uc2VUeXBlID09PSBcImJsb2JcIilcbiAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpIGFzIGFueSBhcyBQcm9taXNlPFQ+O1xuXG4gIHJldHVybiByZXNwb25zZS50ZXh0KCkudGhlbigodGV4dCkgPT4ge1xuICAgIGlmICghdGV4dCkgcmV0dXJuIFwiXCIgYXMgYW55IGFzIFQ7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHRleHQpIGFzIFQ7XG4gICAgfSBjYXRjaCAoZXg6IGFueSkge1xuICAgICAgY29uc3QgZXJyb3I6IGFueSA9IG5ldyBFcnJvcihcIkludmFsaWQgSlNPTiByZXNwb25zZTogXCIgKyBleC5tZXNzYWdlKTtcbiAgICAgIGVycm9yLnJlc3BvbnNlVGV4dCA9IHRleHQ7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgeyBnZXQsIGdldEFsbCwgcG9zdCwgcHV0LCB0cmFzaCBhcyBkZWxldGUsIGRvbW9IdHRwIH07XG5cbiIsIi8qKlxuICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB3aGVuIGEgZGF0YSB1cGRhdGUgbWVzc2FnZSBpcyByZWNlaXZlZC5cbiAqIFVzZXMgTWVzc2FnZUNoYW5uZWwgZm9yIGV2ZW50IGNvbW11bmljYXRpb24sIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIG9mIG90aGVyIGV2ZW50IGxpc3RlbmVycy5cbiAqIE5PVEU6IHRoaXMgcmVmZXJlbmNlcyB0aGUgRG9tbyBjbGFzcywgc28gaXQgc2hvdWxkIGJlIGNhbGxlZCBpbiB0aGUgY29udGV4dCBvZiB0aGF0IGNsYXNzLlxuICpcbiAqIEBwYXJhbSB7KGFsaWFzOiBzdHJpbmcpID0+IHZvaWR9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdpdGggdGhlIGFsaWFzIHdoZW4gYSBkYXRhIHVwZGF0ZSBldmVudCBvY2N1cnMuXG4gKiBAcmV0dXJucyB7KCkgPT4gdm9pZH0gLSBGdW5jdGlvbiB0byByZW1vdmUgdGhlIHJlZ2lzdGVyZWQgY2FsbGJhY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbkRhdGFVcGRhdGVkKGNhbGxiYWNrOiAoYWxpYXM6IHN0cmluZykgPT4gdm9pZCkge1xuICB0aGlzLmNvbm5lY3QodHJ1ZSk7XG4gIHRoaXMubGlzdGVuZXJzLm9uRGF0YVVwZGF0ZWQucHVzaChjYWxsYmFjayk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMubGlzdGVuZXJzLm9uRGF0YVVwZGF0ZWQuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgaWYgKGluZGV4ID49IDApIHRoaXMubGlzdGVuZXJzLm9uRGF0YVVwZGF0ZWQuc3BsaWNlKGluZGV4LCAxKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIGluY29taW5nIGRhdGEgdXBkYXRlIG1lc3NhZ2VzIGFuZCBpbnZva2VzIHJlZ2lzdGVyZWQgY2FsbGJhY2tzLlxuICogXG4gKiBAdGhpcyB7RG9tb30gLSBUaGUgRG9tbyBpbnN0YW5jZSBjb250ZXh0LlxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgbWVzc2FnZSBjb250YWluaW5nIGRhdGEgdXBkYXRlIGluZm9ybWF0aW9uLlxuICogQHBhcmFtIHJlc3BvbnNlUG9ydCAtIFRoZSBwb3J0IHRvIHNlbmQgdGhlIHJlc3BvbnNlIGJhY2suXG4gKiBAcmV0dXJucyB2b2lkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVEYXRhVXBkYXRlZChtZXNzYWdlOiBhbnksIHJlc3BvbnNlUG9ydDogTWVzc2FnZVBvcnQpIHtcbiAgaWYgKCFtZXNzYWdlIHx8ICFyZXNwb25zZVBvcnQpIHJldHVybjtcblxuICBpZiAodGhpcy5saXN0ZW5lcnMub25EYXRhVXBkYXRlZC5sZW5ndGgpIHtcbiAgICByZXNwb25zZVBvcnQucG9zdE1lc3NhZ2UoeyByZXF1ZXN0SWQ6IG1lc3NhZ2UucmVxdWVzdElkLCBldmVudDogXCJhY2tcIiwgYWxpYXM6IG1lc3NhZ2UuYWxpYXMgfSk7XG4gICAgdGhpcy5saXN0ZW5lcnMub25EYXRhVXBkYXRlZC5mb3JFYWNoKChjYjogRnVuY3Rpb24pID0+IGNiKG1lc3NhZ2UuYWxpYXMpKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBSZWZlcmVuY2VkIGZyb20gY29tL2RvbW8vYXBpL2NvbnRlbnQvY2xpZW50L3ZpZXdzL21vZGVsL09wZXJhdG9yLmphdmFcbiAqL1xuZXhwb3J0IGVudW0gRmlsdGVyT3BlcmF0b3JzU3RyaW5nIHtcbiAgSU4gPSBcIklOXCIsXG4gIE5PVF9JTiA9IFwiTk9UX0lOXCIsXG4gIENPTlRBSU5TID0gXCJDT05UQUlOU1wiLFxuICBOT1RfQ09OVEFJTlMgPSBcIk5PVF9DT05UQUlOU1wiLFxuICBTVEFSVFNfV0lUSCA9IFwiU1RBUlRTX1dJVEhcIixcbiAgTk9UX1NUQVJUU19XSVRIID0gXCJOT1RfU1RBUlRTX1dJVEhcIixcbiAgRU5EU19XSVRIID0gXCJFTkRTX1dJVEhcIixcbiAgTk9UX0VORFNfV0lUSCA9IFwiTk9UX0VORFNfV0lUSFwiLFxufVxuXG5leHBvcnQgZW51bSBGaWx0ZXJPcGVyYXRvcnNOdW1lcmljIHtcbiAgR1JFQVRFUl9USEFOID0gJ0dSRUFURVJfVEhBTicsXG4gIEdSRUFUX1RIQU5fRVFVQUxTX1RPID0gJ0dSRUFUX1RIQU5fRVFVQUxTX1RPJyxcbiAgTEVTU19USEFOID0gJ0xFU1NfVEhBTicsXG4gIExFU1NfVEhBTl9FUVVBTFNfVE8gPSAnTEVTU19USEFOX0VRVUFMU19UTycsXG4gIEJFVFdFRU4gPSAnQkVUV0VFTicsXG4gIEVRVUFMUyA9ICd