UNPKG

aem-core-components-contributions-react-core

Version:
2 lines 37 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.cqCoreComponents=t():e.cqCoreComponents=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},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 n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(n,s,function(t){return e[t]}.bind(null,s));return n},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=26)}({0:function(e,t){e.exports=require("react")},1:function(e,t,r){"use strict";r.d(t,"a",(function(){return o}));var n=r(0),s=r.n(n);class i extends n.Component{render(){const e=(null!=this.props.componentTitle&&this.props.componentTitle.length>0?this.props.componentTitle+" - ":"")+(null!=this.props.emptyTextAppend?this.props.emptyTextAppend:i.DEFAULT_EMPTY_TEXT_LABEL);return this.renderPlaceHolder(e)}renderPlaceHolder(e){return s.a.createElement("div",{className:"cq-placeholder"+(null!=this.props.classAppend?" "+this.props.classAppend:"")},e)}}i.DEFAULT_EMPTY_TEXT_LABEL="Please configure the component";class o extends s.a.Component{constructor(e,t,r){super(e),this.baseCssCls=t,this.emptyPlaceHolderText=r}__hidePlaceHolder(){return this.props.hidePlaceHolder}__renderPlaceHolder(e,t){return s.a.createElement(i,{emptyTextAppend:t,componentTitle:e})}render(){const e=this.isEmpty();return s.a.createElement(s.a.Fragment,null,!e&&this.renderComponent(),e&&this.props.isInEditor&&!this.__hidePlaceHolder()&&this.__renderPlaceHolder(this.emptyPlaceHolderText))}}o.defaultProps={hidePlaceHolder:!1,isInEditor:!1}},2:function(e,t,r){"use strict";r.d(t,"a",(function(){return o}));var n=r(0),s=r.n(n),i=r(4);const o=e=>{const{to:t,isRouted:r,...n}=e;if(void 0===t)return s.a.createElement("a",Object.assign({href:"#"},e));return/^https?:\/\//.test(t)||!r?s.a.createElement("a",Object.assign({href:t},e)):s.a.createElement(i.Link,Object.assign({},n,{to:t}))}},26:function(e,t,r){e.exports=r(7)},3:function(e,t,r){"use strict";function n(e,t){return!0===e.routed&&!1!==t.routed||!0===t.routed}r.d(t,"a",(function(){return n}))},4:function(e,t){e.exports=require("react-router-dom")},7:function(e,t,r){"use strict";r.r(t),r.d(t,"NavigationV1IsEmptyFn",(function(){return l})),r.d(t,"NavigationV1",(function(){return c}));var n=r(0),s=r.n(n),i=r(1),o=r(3),a=r(2);function l(e){return null==e.items||0===e.items.length}class c extends i.a{constructor(e){super(e,"cmp-navigation","NavigationV1")}isEmpty(){return l(this.props)}determineIsActive(e){return e.active}renderComponent(){const e={active:!1,lastModified:0,level:0,path:"",title:"",url:"",children:this.props.items};return s.a.createElement("nav",{className:this.baseCssCls,role:"navigation",itemScope:!0,itemType:"http://schema.org/SiteNavigationElement","aria-label":this.props.accessibilityLabel},this.renderGroup(e))}renderGroup(e){return s.a.createElement(s.a.Fragment,null,!!e.children&&e.children.length>0&&s.a.createElement("ul",{className:this.baseCssCls+"__group"},e.children.map((e,t)=>this.renderNavItem(e,t))))}renderLink(e,t){return s.a.createElement(a.a,{isRouted:Object(o.a)(this.props,e),to:e.url,title:e.title,"aria-current":t&&"page",className:this.baseCssCls+"__item-link"},e.title)}renderNavItem(e,t){const r=this.determineIsActive(e),n=this.baseCssCls+"__item "+this.baseCssCls+"__item--level-"+e.level+" "+this.getExtraNavItemCssClss(e,t)+(r?" "+this.baseCssCls+"__item--active":"");return s.a.createElement("li",{key:this.baseCssCls+"__item-"+t,className:n},this.renderLink(e,r),!!e.children&&e.children.length>0&&this.renderGroup(e))}getExtraNavItemCssClss(e,t){return""}}c.defaultProps={isInEditor:!1,hidePlaceHolder:!1,items:[]}}})})); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgXCJyZWFjdFwiIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tbW9uL3BsYWNlaG9sZGVyLnRzeCIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzLy4vc3JjL0Fic3RyYWN0Q29yZUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vY3FDb3JlQ29tcG9uZW50cy8uL3NyYy9yb3V0aW5nL1JvdXRlZExpbmsudHN4Iiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvLi9zcmMvcm91dGluZy9Sb3V0ZWRDb3JlQ29tcG9uZW50LnRzeCIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL2V4dGVybmFsIFwicmVhY3Qtcm91dGVyLWRvbVwiIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvLi9zcmMvbGF5b3V0L25hdmlnYXRpb24vdjEvTmF2aWdhdGlvblYxLnRzeCJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJyZXF1aXJlIiwiZW1wdHlUZXh0IiwicHJvcHMiLCJjb21wb25lbnRUaXRsZSIsImxlbmd0aCIsImVtcHR5VGV4dEFwcGVuZCIsIkRFRkFVTFRfRU1QVFlfVEVYVF9MQUJFTCIsInJlbmRlclBsYWNlSG9sZGVyIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNsYXNzQXBwZW5kIiwiQ29tcG9uZW50IiwiYmFzZUNzc0NscyIsImVtcHR5UGxhY2VIb2xkZXJUZXh0Iiwic3VwZXIiLCJoaWRlUGxhY2VIb2xkZXIiLCJ0aXRsZSIsImlzRW1wdHkiLCJGcmFnbWVudCIsInJlbmRlckNvbXBvbmVudCIsImlzSW5FZGl0b3IiLCJfX2hpZGVQbGFjZUhvbGRlciIsIl9fcmVuZGVyUGxhY2VIb2xkZXIiLCJkZWZhdWx0UHJvcHMiLCJSb3V0ZWRMaW5rIiwidG8iLCJpc1JvdXRlZCIsIm90aGVyUHJvcHMiLCJ1bmRlZmluZWQiLCJhc3NpZ24iLCJocmVmIiwidGVzdCIsImlzSXRlbVJvdXRlZCIsInNlbGZQcm9wcyIsIml0ZW0iLCJyb3V0ZWQiLCJOYXZpZ2F0aW9uVjFJc0VtcHR5Rm4iLCJpdGVtcyIsIk5hdmlnYXRpb25WMSIsImFjdGl2ZSIsInNlbGZDbG9uZSIsImxhc3RNb2RpZmllZCIsImxldmVsIiwicGF0aCIsInVybCIsImNoaWxkcmVuIiwicm9sZSIsIml0ZW1TY29wZSIsIml0ZW1UeXBlIiwiYWNjZXNzaWJpbGl0eUxhYmVsIiwicmVuZGVyR3JvdXAiLCJtYXAiLCJpbmRleCIsInJlbmRlck5hdkl0ZW0iLCJpc0FjdGl2ZSIsImRldGVybWluZUlzQWN0aXZlIiwiY3NzQ2xhc3MiLCJnZXRFeHRyYU5hdkl0ZW1Dc3NDbHNzIiwicmVuZGVyTGluayJdLCJtYXBwaW5ncyI6IkNBQUEsU0FBMkNBLEVBQU1DLEdBQzFCLGlCQUFaQyxTQUEwQyxpQkFBWEMsT0FDeENBLE9BQU9ELFFBQVVELElBQ1EsbUJBQVhHLFFBQXlCQSxPQUFPQyxJ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akIsSUFBSzNCLEtBQUtnRCxXQUFhLFVBQVl3QyxFQUFPM0MsVUFBVytDLEdBQ3JGNUYsS0FBSzhGLFdBQVd4QixFQUFNb0IsS0FDcEJwQixFQUFLVyxVQUFZWCxFQUFLVyxTQUFTekMsT0FBUyxHQUFLeEMsS0FBS3NGLFlBQVloQixJQUV4RSx1QkFBdUJBLEVBQU1rQixHQUN6QixNQUFPLElBR2ZkLEVBQWFmLGFBQWUsQ0FDeEJILFlBQVksRUFDWkwsaUJBQWlCLEVBQ2pCc0IsTUFBTyIsImZpbGUiOiJOYXZpZ2F0aW9uVjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJjcUNvcmVDb21wb25lbnRzXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImNxQ29yZUNvbXBvbmVudHNcIl0gPSBmYWN0b3J5KCk7XG59KSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDI2KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIi8qXG4gKiAgQ29weXJpZ2h0IDIwMjAgQWRvYmVcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCc7XG5leHBvcnQgY2xhc3MgRWRpdG9yUGxhY2VIb2xkZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgcGFydDEgPSAodGhpcy5wcm9wcy5jb21wb25lbnRUaXRsZSAhPSBudWxsICYmIHRoaXMucHJvcHMuY29tcG9uZW50VGl0bGUubGVuZ3RoID4gMCkgPyB0aGlzLnByb3BzLmNvbXBvbmVudFRpdGxlICsgJyAtICcgOiAnJztcbiAgICAgICAgY29uc3QgcGFydDIgPSAodGhpcy5wcm9wcy5lbXB0eVRleHRBcHBlbmQgIT0gbnVsbCkgPyB0aGlzLnByb3BzLmVtcHR5VGV4dEFwcGVuZCA6IEVkaXRvclBsYWNlSG9sZGVyLkRFRkFVTFRfRU1QVFlfVEVYVF9MQUJFTDtcbiAgICAgICAgY29uc3QgZW1wdHlUZXh0ID0gcGFydDEgKyBwYXJ0MjtcbiAgICAgICAgcmV0dXJuICh0aGlzLnJlbmRlclBsYWNlSG9sZGVyKGVtcHR5VGV4dCkpO1xuICAgIH1cbiAgICByZW5kZXJQbGFjZUhvbGRlcihlbXB0eVRleHQpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdjcS1wbGFjZWhvbGRlcicgKyAodGhpcy5wcm9wcy5jbGFzc0FwcGVuZCAhPSBudWxsID8gJyAnICsgdGhpcy5wcm9wcy5jbGFzc0FwcGVuZCA6ICcnKSB9LCBlbXB0eVRleHQpO1xuICAgIH1cbn1cbkVkaXRvclBsYWNlSG9sZGVyLkRFRkFVTFRfRU1QVFlfVEVYVF9MQUJFTCA9ICdQbGVhc2UgY29uZmlndXJlIHRoZSBjb21wb25lbnQnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY0d4aFkyVm9iMnhrWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp3YkdGalpXaHZiR1JsY2k1MGMzZ2lYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRMEU3T3pzN096czdPenM3T3pzN08wZEJZMGM3UVVGRFNDeFBRVUZQTEV0QlFVc3NSVUZCUlN4RlFVRkRMRk5CUVZNc1JVRkJReXhOUVVGTkxFOUJRVThzUTBGQlF6dEJRVkYyUXl4TlFVRk5MRTlCUVU4c2FVSkJRV3RDTEZOQlFWRXNVMEZCWjBNN1NVRkpia1VzVFVGQlRUdFJRVU5HTEUxQlFVMHNTMEZCU3l4SFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eGpRVUZqTEVsQlFVa3NTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zWTBGQll5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4alFVRmpMRWRCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdVVUZETjBrc1RVRkJUU3hMUVVGTExFZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMR1ZCUVdVc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEdsQ1FVRnBRaXhEUVVGRExIZENRVUYzUWl4RFFVRkRPMUZCUTNSSkxFMUJRVTBzVTBGQlV5eEhRVUZITEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkZhRU1zVDBGQlR5eERRVU5JTEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZEY0VNc1EwRkJRVHRKUVVOTUxFTkJRVU03U1VGSFJDeHBRa0ZCYVVJc1EwRkJReXhUUVVGcFFqdFJRVU12UWl4UFFVRlBMRFpDUVVOSUxGTkJRVk1zUlVGQlJTeG5Ra0ZCWjBJc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4SlFVRkpMRWxCUVVrc1EwRkJRU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZEYUVjc1UwRkJVeXhEUVVOU0xFTkJRVU03U1VGRFdDeERRVUZET3p0QlFXeENUU3d3UTBGQmQwSXNSMEZCVnl4blEwRkJaME1zUTBGQlF5SjkiLCIvKlxuICogIENvcHlyaWdodCAyMDIwIEFkb2JlXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBFZGl0b3JQbGFjZUhvbGRlciB9IGZyb20gXCIuL2NvbW1vbi9wbGFjZWhvbGRlclwiO1xuLyoqXG4gKiBBYnN0cmFjdENvcmVDb21wb25lbnQgLSBwcm92aWRlcyBhYnN0cmFjdGlvbiBhbmQgaGVscGVyIG1ldGhvZHMgdG8gc2hvdyBhIHBsYWNlaG9sZGVyIGlmIHRoZSBjb21wb25lbnQgaXMgZW1wdHkgYW5kIGF1dGhvciBtb2RlIGlzIG9uLlxuICovXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RDb3JlQ29tcG9uZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBCYXNlIENvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHByb3BzIGNvbXBvbmVudCBwcm9wZXJ0aWVzXG4gICAgICogQHBhcmFtIGJhc2VDc3NDbHMgdGhlIGJhc2UgQkVNIGNzcyBjbGFzcyB0byBiZSB1c2VkIGZvciB0aGUgY29tcG9uZW50XG4gICAgICogQHBhcmFtIGVtcHR5UGxhY2VIb2xkZXJUZXh0IGVtcHR5IHBsYWNlaG9sZGVyIGxhYmVsIGZvciB3aGVuIHRoZSBjb21wb25lbnQgbmVlZHMgdG8gYmUgY29uZmlndXJlZCBpbiBhdXRob3IgbW9kZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb3BzLCBiYXNlQ3NzQ2xzLCBlbXB0eVBsYWNlSG9sZGVyVGV4dCkge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIHRoaXMuYmFzZUNzc0NscyA9IGJhc2VDc3NDbHM7XG4gICAgICAgIHRoaXMuZW1wdHlQbGFjZUhvbGRlclRleHQgPSBlbXB0eVBsYWNlSG9sZGVyVGV4dDtcbiAgICB9XG4gICAgX19oaWRlUGxhY2VIb2xkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmhpZGVQbGFjZUhvbGRlcjtcbiAgICB9XG4gICAgX19yZW5kZXJQbGFjZUhvbGRlcih0aXRsZSwgZW1wdHlUZXh0KSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChFZGl0b3JQbGFjZUhvbGRlciwgeyBlbXB0eVRleHRBcHBlbmQ6IGVtcHR5VGV4dCwgY29tcG9uZW50VGl0bGU6IHRpdGxlIH0pKTtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCBpc0VtcHR5ID0gdGhpcy5pc0VtcHR5KCk7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgICFpc0VtcHR5ICYmXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnQoKSxcbiAgICAgICAgICAgIChpc0VtcHR5ICYmIHRoaXMucHJvcHMuaXNJbkVkaXRvciAmJiAhdGhpcy5fX2hpZGVQbGFjZUhvbGRlcigpKSAmJiB0aGlzLl9fcmVuZGVyUGxhY2VIb2xkZXIodGhpcy5lbXB0eVBsYWNlSG9sZGVyVGV4dCkpKTtcbiAgICB9XG59XG5BYnN0cmFjdENvcmVDb21wb25lbnQuZGVmYXVsdFByb3BzID0ge1xuICAgIGhpZGVQbGFjZUhvbGRlcjogZmFsc2UsXG4gICAgaXNJbkVkaXRvcjogZmFsc2Vcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lRV0p6ZEhKaFkzUkRiM0psUTI5dGNHOXVaVzUwTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lRV0p6ZEhKaFkzUkRiM0psUTI5dGNHOXVaVzUwTG5SemVDSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRVHM3T3pzN096czdPenM3T3pzN1IwRmpSenRCUVVWSUxFOUJRVThzUzBGQlN5eE5RVUZOTEU5QlFVOHNRMEZCUXp0QlFVTXhRaXhQUVVGUExFVkJRVU1zYVVKQlFXbENMRVZCUVVNc1RVRkJUU3h6UWtGQmMwSXNRMEZCUXp0QlFWbDJSRHM3UjBGRlJ6dEJRVU5JTEUxQlFVMHNUMEZCWjBJc2NVSkJRVEJHTEZOQlFWRXNTMEZCU3l4RFFVRkRMRk5CUVhOQ08wbEJWV2hLT3pzN096dFBRVXRITzBsQlEwZ3NXVUZCYzBJc1MwRkJWeXhGUVVGRExGVkJRV2xDTEVWQlFVTXNiMEpCUVRKQ08xRkJRek5GTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVOaUxFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NWVUZCVlN4RFFVRkRPMUZCUXpkQ0xFbEJRVWtzUTBGQlF5eHZRa0ZCYjBJc1IwRkJSeXh2UWtGQmIwSXNRMEZCUXp0SlFVTnlSQ3hEUVVGRE8wbEJXVThzYVVKQlFXbENPMUZCUTNKQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4bFFVRmxMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEpRVVZQTEcxQ1FVRnRRaXhEUVVGRExFdEJRV0VzUlVGQlJTeFRRVUZwUWp0UlFVTjRSQ3hQUVVGTkxFTkJRMFlzYjBKQlFVTXNhVUpCUVdsQ0xFbEJRMlFzWlVGQlpTeEZRVUZGTEZOQlFWTXNSVUZETVVJc1kwRkJZeXhGUVVGRkxFdEJRVXNzUjBGRGRrSXNRMEZEVEN4RFFVRkJPMGxCUTB3c1EwRkJRenRKUVVWRUxFMUJRVTA3VVVGRFJpeE5RVUZOTEU5QlFVOHNSMEZCVnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03VVVGRmRrTXNUMEZCVHl4RFFVTklPMWxCUTAwc1EwRkJReXhQUVVGUE8yZENRVU5PTEVsQlFVa3NRMEZCUXl4bFFVRmxMRVZCUVVVN1dVRkhkRUlzUTBGQlF5eFBRVUZQTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhWUVVGVkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUTBGRk0wZ3NRMEZEVGl4RFFVRkJPMGxCUTB3c1EwRkJRenM3UVVGNFJHRXNhME5CUVZrc1IwRkJSenRKUVVONlFpeGxRVUZsTEVWQlFVVXNTMEZCU3p0SlFVTjBRaXhWUVVGVkxFVkJRVVVzUzBGQlN6dERRVU53UWl4RFFVRkRJbjA9IiwiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBBZG9iZVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmsgYXMgUm91dGVyTGluayB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuZXhwb3J0IGNvbnN0IFJvdXRlZExpbmsgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHRvLCBpc1JvdXRlZCwgLi4ub3RoZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgaWYgKHRvID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIE9iamVjdC5hc3NpZ24oeyBocmVmOiAnIycgfSwgcHJvcHMpKTtcbiAgICB9XG4gICAgY29uc3QgaXNFeHRlcm5hbCA9IC9eaHR0cHM/OlxcL1xcLy8udGVzdCh0byk7XG4gICAgcmV0dXJuIGlzRXh0ZXJuYWwgfHwgIWlzUm91dGVkID9cbiAgICAgICAgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIE9iamVjdC5hc3NpZ24oeyBocmVmOiB0byB9LCBwcm9wcykpKVxuICAgICAgICA6XG4gICAgICAgICAgICAoUmVhY3QuY3JlYXRlRWxlbWVudChSb3V0ZXJMaW5rLCBPYmplY3QuYXNzaWduKHt9LCBvdGhlclByb3BzLCB7IHRvOiB0byB9KSkpO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVVtOTFkR1ZrVEdsdWF5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWxKdmRYUmxaRXhwYm1zdWRITjRJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdPenM3T3pzN096dEhRV05ITzBGQlJVZ3NUMEZCVHl4TFFVRkxMRTFCUVUwc1QwRkJUeXhEUVVGRE8wRkJRekZDTEU5QlFVOHNSVUZCUXl4SlFVRkpMRWxCUVVrc1ZVRkJWU3hGUVVGRExFMUJRVTBzYTBKQlFXdENMRU5CUVVNN1FVRlBjRVFzVFVGQlRTeERRVUZETEUxQlFVMHNWVUZCVlN4SFFVRkhMRU5CUVVNc1MwRkJaU3hGUVVGRkxFVkJRVVU3U1VGRE1VTXNUVUZCVFN4RlFVRkRMRVZCUVVVc1JVRkJSU3hSUVVGUkxFVkJRVVVzUjBGQlJ5eFZRVUZWTEVWQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1NVRkZOVU1zU1VGQlJ5eEZRVUZGTEV0QlFVc3NVMEZCVXl4RlFVRkRPMUZCUTJoQ0xFOUJRVThzZVVOQlFVY3NTVUZCU1N4RlFVRkZMRWRCUVVjc1NVRkRXQ3hMUVVGTExFVkJRMWdzUTBGQlF6dExRVU5PTzBsQlEwUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0SlFVVXpReXhQUVVGUExGVkJRVlVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUVN4RFFVRkRPMUZCUXpOQ0xFTkJRVU1zZVVOQlEwY3NTVUZCU1N4RlFVRkZMRVZCUVVVc1NVRkRTaXhMUVVGTExFVkJRMWdzUTBGQlF6dFJRVU5JTEVOQlFVTTdXVUZEUkN4RFFVRkZMRzlDUVVGRExGVkJRVlVzYjBKQlFVc3NWVUZCVlN4SlFVTmtMRVZCUVVVc1JVRkJSU3hGUVVGRkxFbEJRMnhDTEVOQlFVTXNRMEZCUVR0QlFVTllMRU5CUVVNc1EwRkJReUo5IiwiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBBZG9iZVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSXRlbVJvdXRlZChzZWxmUHJvcHMsIGl0ZW0pIHtcbiAgICByZXR1cm4gKChzZWxmUHJvcHMucm91dGVkID09PSB0cnVlICYmIGl0ZW0ucm91dGVkICE9PSBmYWxzZSkgfHwgaXRlbS5yb3V0ZWQgPT09IHRydWUpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVW05MWRHVmtRMjl5WlVOdmJYQnZibVZ1ZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbEp2ZFhSbFpFTnZjbVZEYjIxd2IyNWxiblF1ZEhONElsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPenM3T3pzN096czdPenM3T3p0SFFXTkhPMEZCWVVnc1RVRkJUU3hWUVVGVkxGbEJRVmtzUTBGQlF5eFRRVUZ4UWl4RlFVRkZMRWxCUVdkQ08wbEJRMmhGTEU5QlFVOHNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFdEJRVXNzU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNTMEZCU3l4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVNeFJpeERRVUZESW4wPSIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJvdXRlci1kb21cIik7IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFic3RyYWN0Q29yZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi8uLi9BYnN0cmFjdENvcmVDb21wb25lbnRcIjtcbmltcG9ydCB7IGlzSXRlbVJvdXRlZCB9IGZyb20gXCIuLi8uLi8uLi9yb3V0aW5nL1JvdXRlZENvcmVDb21wb25lbnRcIjtcbmltcG9ydCB7IFJvdXRlZExpbmsgfSBmcm9tIFwiLi4vLi4vLi4vcm91dGluZy9Sb3V0ZWRMaW5rXCI7XG5leHBvcnQgZnVuY3Rpb24gTmF2aWdhdGlvblYxSXNFbXB0eUZuKHByb3BzKSB7XG4gICAgcmV0dXJuIHByb3BzLml0ZW1zID09IG51bGwgfHwgcHJvcHMuaXRlbXMubGVuZ3RoID09PSAwO1xufVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25WMSBleHRlbmRzIEFic3RyYWN0Q29yZUNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMsIFwiY21wLW5hdmlnYXRpb25cIiwgJ05hdmlnYXRpb25WMScpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gTmF2aWdhdGlvblYxSXNFbXB0eUZuKHRoaXMucHJvcHMpO1xuICAgIH1cbiAgICBkZXRlcm1pbmVJc0FjdGl2ZShpdGVtKSB7XG4gICAgICAgIHJldHVybiBpdGVtLmFjdGl2ZTtcbiAgICB9XG4gICAgcmVuZGVyQ29tcG9uZW50KCkge1xuICAgICAgICBjb25zdCBzZWxmQ2xvbmUgPSB7XG4gICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiAwLFxuICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICBwYXRoOiBcIlwiLFxuICAgICAgICAgICAgdGl0bGU6IFwiXCIsXG4gICAgICAgICAgICB1cmw6IFwiXCIsXG4gICAgICAgICAgICBjaGlsZHJlbjogdGhpcy5wcm9wcy5pdGVtc1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJuYXZcIiwgeyBjbGFzc05hbWU6IHRoaXMuYmFzZUNzc0Nscywgcm9sZTogXCJuYXZpZ2F0aW9uXCIsIGl0ZW1TY29wZTogdHJ1ZSwgaXRlbVR5cGU6IFwiaHR0cDovL3NjaGVtYS5vcmcvU2l0ZU5hdmlnYXRpb25FbGVtZW50XCIsIFwiYXJpYS1sYWJlbFwiOiB0aGlzLnByb3BzLmFjY2Vzc2liaWxpdHlMYWJlbCB9LCB0aGlzLnJlbmRlckdyb3VwKHNlbGZDbG9uZSkpKTtcbiAgICB9XG4gICAgcmVuZGVyR3JvdXAoaXRlbSkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsICEhaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IGNsYXNzTmFtZTogdGhpcy5iYXNlQ3NzQ2xzICsgJ19fZ3JvdXAnIH0sIGl0ZW0uY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4geyByZXR1cm4gdGhpcy5yZW5kZXJOYXZJdGVtKGl0ZW0sIGluZGV4KTsgfSkpKSkpO1xuICAgIH1cbiAgICByZW5kZXJMaW5rKGl0ZW0sIGlzQWN0aXZlKSB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSb3V0ZWRMaW5rLCB7IGlzUm91dGVkOiBpc0l0ZW1Sb3V0ZWQodGhpcy5wcm9wcywgaXRlbSksIHRvOiBpdGVtLnVybCwgdGl0bGU6IGl0ZW0udGl0bGUsIFwiYXJpYS1jdXJyZW50XCI6IGlzQWN0aXZlICYmICdwYWdlJywgY2xhc3NOYW1lOiB0aGlzLmJhc2VDc3NDbHMgKyAnX19pdGVtLWxpbmsnIH0sIGl0ZW0udGl0bGUpKTtcbiAgICB9XG4gICAgcmVuZGVyTmF2SXRlbShpdGVtLCBpbmRleCkge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuZGV0ZXJtaW5lSXNBY3RpdmUoaXRlbSk7XG4gICAgICAgIGNvbnN0IGNzc0NsYXNzID0gdGhpcy5iYXNlQ3NzQ2xzICsgJ19faXRlbSAnICtcbiAgICAgICAgICAgIHRoaXMuYmFzZUNzc0NscyArICdfX2l0ZW0tLWxldmVsLScgKyBpdGVtLmxldmVsICsgJyAnXG4gICAgICAgICAgICArICcgJyArIHRoaXMuZ2V0RXh0cmFOYXZJdGVtQ3NzQ2xzcyhpdGVtLCBpbmRleClcbiAgICAgICAgICAgICsgKGlzQWN0aXZlID8gJyAnICsgdGhpcy5iYXNlQ3NzQ2xzICsgJ19faXRlbS0tYWN0aXZlJyA6ICcnKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwibGlcIiwgeyBrZXk6IHRoaXMuYmFzZUNzc0NscyArICdfX2l0ZW0tJyArIGluZGV4LCBjbGFzc05hbWU6IGNzc0NsYXNzIH0sXG4gICAgICAgICAgICB0aGlzLnJlbmRlckxpbmsoaXRlbSwgaXNBY3RpdmUpLFxuICAgICAgICAgICAgISFpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCAmJiB0aGlzLnJlbmRlckdyb3VwKGl0ZW0pKSk7XG4gICAgfVxuICAgIGdldEV4dHJhTmF2SXRlbUNzc0Nsc3MoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxufVxuTmF2aWdhdGlvblYxLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBpc0luRWRpdG9yOiBmYWxzZSxcbiAgICBoaWRlUGxhY2VIb2xkZXI6IGZhbHNlLFxuICAgIGl0ZW1zOiBbXVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVRtRjJhV2RoZEdsdmJsWXhMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVRtRjJhV2RoZEdsdmJsWXhMblJ6ZUNKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeFBRVUZQTEV0QlFVc3NUVUZCVFN4UFFVRlBMRU5CUVVNN1FVRkRNVUlzVDBGQlR5eEZRVUZETEhGQ1FVRnhRaXhGUVVGNVF5eE5RVUZOTEdkRFFVRm5ReXhEUVVGRE8wRkJRemRITEU5QlFVOHNSVUZCUXl4WlFVRlpMRVZCUVhkRExFMUJRVTBzYzBOQlFYTkRMRU5CUVVNN1FVRkRla2NzVDBGQlR5eEZRVUZETEZWQlFWVXNSVUZCUXl4TlFVRk5MRFpDUVVFMlFpeERRVUZETzBGQmIwSjJSQ3hOUVVGTkxGVkJRVlVzY1VKQlFYRkNMRU5CUVVNc1MwRkJkVUk3U1VGRGVrUXNUMEZCVHl4TFFVRkxMRU5CUVVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzU1VGQlNTeExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRE0wUXNRMEZCUXp0QlFVVkVMRTFCUVUwc1QwRkJUeXhaUVVGblJpeFRRVUZSTEhGQ1FVRnRRenRKUVZGd1NTeFpRVUZaTEV0QlFWYzdVVUZEYmtJc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJSU3hqUVVGakxFTkJRVU1zUTBGQlF6dEpRVU51UkN4RFFVRkRPMGxCUlVRc1QwRkJUenRSUVVOSUxFOUJRVThzY1VKQlFYRkNMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlF6ZERMRU5CUVVNN1NVRkZSQ3hwUWtGQmFVSXNRMEZCUXl4SlFVRnhRanRSUVVOdVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRka0lzUTBGQlF6dEpRVVZFTEdWQlFXVTdVVUZGV0N4TlFVRk5MRk5CUVZNc1IwRkJiMEk3V1VGREwwSXNUVUZCVFN4RlFVRkZMRXRCUVVzN1dVRkRZaXhaUVVGWkxFVkJRVVVzUTBGQlF6dFpRVU5tTEV0QlFVc3NSVUZCUlN4RFFVRkRPMWxCUTFJc1NVRkJTU3hGUVVGRkxFVkJRVVU3V1VGRFVpeExRVUZMTEVWQlFVVXNSVUZCUlR0WlFVTlVMRWRCUVVjc1JVRkJSU3hGUVVGRk8xbEJRMUFzVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTenRUUVVNM1FpeERRVUZETzFGQlJVWXNUMEZCVHl4RFFVTklMRFpDUVVGTExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVTXhRaXhKUVVGSkxFVkJRVU1zV1VGQldTeEZRVU5xUWl4VFFVRlRMRkZCUVVNc1VVRkJVU3hGUVVGRExIbERRVUY1UXl4blFrRkRhRVFzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4clFrRkJhMElzU1VGRGVrTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGRE1VSXNRMEZEVkN4RFFVRkJPMGxCUTB3c1EwRkJRenRKUVVWRUxGZEJRVmNzUTBGQlF5eEpRVUZ4UWp0UlFVTTNRaXhQUVVGUExFTkJRMGdzTUVOQlEwc3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGTExFTkJRemRETERSQ1FVRkpMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEZOQlFWTXNTVUZEY2tNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlEyUXNRMEZCUXl4SlFVRkpMRVZCUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzUjBGQlJ5eFBRVUZQTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hGUVVGRExFdEJRVXNzUTBGQlF5eERRVUZCTEVOQlFVRXNRMEZCUXl4RFFVTXpSQ3hEUVVOQkxFTkJRMUlzUTBGRFNDeERRVU5NTEVOQlFVRTdTVUZEVEN4RFFVRkRPMGxCUlVRc1ZVRkJWU3hEUVVGRExFbEJRWEZDTEVWQlFVVXNVVUZCWjBJN1VVRkRPVU1zVDBGQlR5eERRVU5JTEc5Q1FVRkRMRlZCUVZVc1NVRkJReXhSUVVGUkxFVkJRVVVzV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUlVGQlJTeEZRVUZGTEVsQlFVa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEd0Q1FVRm5RaXhSUVVGUkxFbEJRVWtzVFVGQlRTeEZRVU51U0N4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eGhRVUZoTEVsQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJZeXhEUVVNelJTeERRVUZCTzBsQlEwd3NRMEZCUXp0SlFVTkVMR0ZCUVdFc1EwRkJReXhKUVVGelFpeEZRVUZGTEV0QlFXRTdVVUZETDBNc1RVRkJUU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6bERMRTFCUVUwc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NVMEZCVXp0WlFVTXpRaXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEdkQ1FVRm5RaXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NSMEZCUnp0alFVTnVSQ3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTTdZMEZET1VNc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExHZENRVUZuUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU01UlN4UFFVRlBMRU5CUTBnc05FSkJRVWtzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1UwRkJVeXhIUVVGSExFdEJRVXNzUlVGQlJTeFRRVUZUTEVWQlFVVXNVVUZCVVR0WlFVTjJSQ3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NSVUZCUlN4UlFVRlJMRU5CUVVNN1dVRkZOMElzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlJUVkZMRU5CUTFJc1EwRkJRVHRKUVVOTUxFTkJRVU03U1VGRlJDeHpRa0ZCYzBJc1EwRkJReXhKUVVGelFpeEZRVUZGTEV0QlFXRTdVVUZEZUVRc1QwRkJUeXhGUVVGRkxFTkJRVU03U1VGRFpDeERRVUZET3p0QlFUbEZZU3g1UWtGQldTeEhRVUZITzBsQlEzcENMRlZCUVZVc1JVRkJSU3hMUVVGTE8wbEJRMnBDTEdWQlFXVXNSVUZCUlN4TFFVRkxPMGxCUTNSQ0xFdEJRVXNzUlVGQlJTeEZRVUZGTzBOQlExb3NRMEZCUXlKOSJdLCJzb3VyY2VSb290IjoiIn0=