clientnode 4.0.1427 → 4.0.1429

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/Lock.js +100 -1
  2. package/dist/Logger.js +185 -1
  3. package/dist/Semaphore.js +65 -1
  4. package/dist/array.js +452 -1
  5. package/dist/cli.js +51 -1
  6. package/dist/constants.js +126 -1
  7. package/dist/context.js +40 -1
  8. package/dist/cookie.js +84 -1
  9. package/dist/data-transfer.js +216 -1
  10. package/dist/datetime.js +282 -1
  11. package/dist/domNode.js +331 -1
  12. package/dist/expression/evaluators.js +273 -1
  13. package/dist/expression/helper.js +97 -1
  14. package/dist/expression/index.js +26 -1
  15. package/dist/expression/indicator-functions.js +37 -1
  16. package/dist/expression/type.js +20 -0
  17. package/dist/filesystem.js +410 -1
  18. package/dist/function.js +75 -1
  19. package/dist/index.js +43 -1
  20. package/dist/indicators.js +121 -1
  21. package/dist/number.js +61 -1
  22. package/dist/object.js +934 -1
  23. package/dist/process.js +69 -1
  24. package/dist/property-types.js +115 -1
  25. package/dist/require.js +82 -1
  26. package/dist/scope.js +85 -1
  27. package/dist/string.js +806 -1
  28. package/dist/test-helper.js +341 -1
  29. package/dist/type.js +21 -1
  30. package/dist/utility.js +139 -1
  31. package/package.json +23 -21
  32. package/dist/Lock.d.ts +0 -39
  33. package/dist/Logger.d.ts +0 -102
  34. package/dist/Semaphore.d.ts +0 -29
  35. package/dist/array.d.ts +0 -150
  36. package/dist/bundle/Lock.js +0 -1
  37. package/dist/bundle/Logger.js +0 -1
  38. package/dist/bundle/Semaphore.js +0 -1
  39. package/dist/bundle/array.js +0 -1
  40. package/dist/bundle/cli.js +0 -1
  41. package/dist/bundle/constants.js +0 -1
  42. package/dist/bundle/context.js +0 -1
  43. package/dist/bundle/cookie.js +0 -1
  44. package/dist/bundle/data-transfer.js +0 -1
  45. package/dist/bundle/datetime.js +0 -1
  46. package/dist/bundle/domNode.js +0 -1
  47. package/dist/bundle/expression/evaluators.js +0 -1
  48. package/dist/bundle/expression/helper.js +0 -1
  49. package/dist/bundle/expression/index.js +0 -1
  50. package/dist/bundle/expression/indicator-functions.js +0 -1
  51. package/dist/bundle/expression/types.js +0 -1
  52. package/dist/bundle/filesystem.js +0 -1
  53. package/dist/bundle/function.js +0 -1
  54. package/dist/bundle/index.js +0 -1
  55. package/dist/bundle/indicators.js +0 -1
  56. package/dist/bundle/number.js +0 -1
  57. package/dist/bundle/object.js +0 -1
  58. package/dist/bundle/process.js +0 -1
  59. package/dist/bundle/property-types.js +0 -1
  60. package/dist/bundle/require.js +0 -1
  61. package/dist/bundle/scope.js +0 -1
  62. package/dist/bundle/string.js +0 -1
  63. package/dist/bundle/test-helper.js +0 -1
  64. package/dist/bundle/type.js +0 -1
  65. package/dist/bundle/utility.js +0 -1
  66. package/dist/cli.d.ts +0 -31
  67. package/dist/compatible/Lock.js +0 -1
  68. package/dist/compatible/Logger.js +0 -1
  69. package/dist/compatible/Semaphore.js +0 -1
  70. package/dist/compatible/array.js +0 -1
  71. package/dist/compatible/cli.js +0 -1
  72. package/dist/compatible/constants.js +0 -1
  73. package/dist/compatible/context.js +0 -1
  74. package/dist/compatible/cookie.js +0 -1
  75. package/dist/compatible/data-transfer.js +0 -1
  76. package/dist/compatible/datetime.js +0 -1
  77. package/dist/compatible/domNode.js +0 -1
  78. package/dist/compatible/expression/evaluators.js +0 -1
  79. package/dist/compatible/expression/helper.js +0 -1
  80. package/dist/compatible/expression/index.js +0 -1
  81. package/dist/compatible/expression/indicator-functions.js +0 -1
  82. package/dist/compatible/expression/types.js +0 -1
  83. package/dist/compatible/filesystem.js +0 -1
  84. package/dist/compatible/function.js +0 -1
  85. package/dist/compatible/index.js +0 -1
  86. package/dist/compatible/indicators.js +0 -1
  87. package/dist/compatible/number.js +0 -1
  88. package/dist/compatible/object.js +0 -1
  89. package/dist/compatible/process.js +0 -1
  90. package/dist/compatible/property-types.js +0 -1
  91. package/dist/compatible/require.js +0 -1
  92. package/dist/compatible/scope.js +0 -1
  93. package/dist/compatible/string.js +0 -1
  94. package/dist/compatible/test-helper.js +0 -1
  95. package/dist/compatible/type.js +0 -1
  96. package/dist/compatible/utility.js +0 -1
  97. package/dist/constants.d.ts +0 -99
  98. package/dist/context.d.ts +0 -9
  99. package/dist/cookie.d.ts +0 -31
  100. package/dist/data-transfer.d.ts +0 -45
  101. package/dist/datetime.d.ts +0 -37
  102. package/dist/domNode.d.ts +0 -82
  103. package/dist/expression/evaluators.d.ts +0 -55
  104. package/dist/expression/helper.d.ts +0 -4
  105. package/dist/expression/index.d.ts +0 -7
  106. package/dist/expression/indicator-functions.d.ts +0 -14
  107. package/dist/expression/types.d.ts +0 -70
  108. package/dist/expression/types.js +0 -1
  109. package/dist/filesystem.d.ts +0 -138
  110. package/dist/function.d.ts +0 -20
  111. package/dist/index.d.ts +0 -23
  112. package/dist/indicators.d.ts +0 -68
  113. package/dist/number.d.ts +0 -35
  114. package/dist/object.d.ts +0 -213
  115. package/dist/process.d.ts +0 -22
  116. package/dist/property-types.d.ts +0 -460
  117. package/dist/require.d.ts +0 -6
  118. package/dist/scope.d.ts +0 -44
  119. package/dist/string.d.ts +0 -299
  120. package/dist/test/Lock.d.ts +0 -1
  121. package/dist/test/Logger.d.ts +0 -1
  122. package/dist/test/Semaphore.d.ts +0 -1
  123. package/dist/test/array.d.ts +0 -1
  124. package/dist/test/cookie.d.ts +0 -1
  125. package/dist/test/data-transfer.d.ts +0 -1
  126. package/dist/test/datetime.d.ts +0 -1
  127. package/dist/test/domNode.d.ts +0 -1
  128. package/dist/test/expression/evaluators.d.ts +0 -1
  129. package/dist/test/expression/helper.d.ts +0 -1
  130. package/dist/test/expression/indicator-functions.d.ts +0 -1
  131. package/dist/test/filesystem.d.ts +0 -1
  132. package/dist/test/function.d.ts +0 -1
  133. package/dist/test/indicators.d.ts +0 -1
  134. package/dist/test/number.d.ts +0 -1
  135. package/dist/test/object.d.ts +0 -1
  136. package/dist/test/process.d.ts +0 -1
  137. package/dist/test/property-types.d.ts +0 -1
  138. package/dist/test/scope.d.ts +0 -1
  139. package/dist/test/string.d.ts +0 -1
  140. package/dist/test/utility.d.ts +0 -1
  141. package/dist/test-helper.d.ts +0 -143
  142. package/dist/type.d.ts +0 -211
  143. package/dist/utility.d.ts +0 -44
package/dist/datetime.js CHANGED
@@ -1 +1,282 @@
1
- "use strict";if("undefined"!=typeof module&&null!==module&&"undefined"!==eval("typeof require")&&null!==eval("require")&&"main"in eval("require")&&"undefined"!==eval("typeof require.main")&&null!==eval("require.main")){var ORIGINAL_MAIN_MODULE=module;module!==eval("require.main")&&"paths"in module&&"paths"in eval("require.main")&&"undefined"!=typeof __dirname&&null!==__dirname&&(module.paths=eval("require.main.paths").concat(module.paths.filter(function(path){return eval("require.main.paths").includes(path)})))}if(null==window)var window="undefined"==typeof global||null===global?{}:global;!function(e,r){if("object"==typeof exports&&"object"==typeof module)module.exports=r(require("@babel/runtime/helpers/construct"),require("@babel/runtime/helpers/extends"));else if("function"==typeof define&&define.amd)define(["@babel/runtime/helpers/construct","@babel/runtime/helpers/extends"],r);else{var t="object"==typeof exports?r(require("@babel/runtime/helpers/construct"),require("@babel/runtime/helpers/extends")):r(e["@babel/runtime/helpers/construct"],e["@babel/runtime/helpers/extends"]);for(var n in t)("object"==typeof exports?exports:e)[n]=t[n]}}(this,function(__WEBPACK_EXTERNAL_MODULE__13__,__WEBPACK_EXTERNAL_MODULE__3__){return function(){var __webpack_modules__=[function(e,r,t){t.d(r,{CLASS_TO_TYPE_MAPPING:function(){return n},LOCALES:function(){return o}});Symbol.for("clientnodeValue"),Symbol.for("clientnodeIgnoreNullAndUndefined");var n={"[object Array]":"array","[object Boolean]":"boolean","[object Date]":"date","[object Error]":"error","[object Function]":"function","[object Map]":"map","[object Number]":"number","[object Object]":"object","[object RegExp]":"regexp","[object Set]":"set","[object String]":"string"},o=[];Object.prototype},function(e,r,t){t.d(r,{globalContext:function(){return i}});var n,o,a=t(5);e=t.hmd(e);var i="undefined"==typeof globalThis?void 0===window?void 0===t.g?e:Object.prototype.hasOwnProperty.call(t.g,"window")?t.g.window:t.g:window:globalThis;i.fetch=i.fetch?i.fetch.bind(i):null!==(n=null==(o=(0,a.optionalRequire)("node-fetch"))?void 0:o.default)&&void 0!==n?n:function(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];return a.currentImport?(0,a.currentImport)("node-fetch").then(function(e){var t;return(t=e).default.apply(t,r)}):null}},function(__unused_webpack_module,__webpack_exports__,__webpack_require__){var _extends,VALUE_COPY_SYMBOL,IGNORE_NULL_AND_UNDEFINED_SYMBOL,isMap,isSet,isObject,isPlainObject,isFunction,isProxy,isNotANumber,evaluate,escapeRegularExpressions;__webpack_require__.d(__webpack_exports__,{determineType:function(){return determineType},represent:function(){return _represent}});var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(3),_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__),_constants__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(0),_indicators__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4);function _createForOfIteratorHelperLoose(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=_unsupportedIterableToArray(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,r){if(e){if("string"==typeof e)return _arrayLikeToArray(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,r):void 0}}function _arrayLikeToArray(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var _addDynamicGetterAndSetter=function(e,r,t,n,o,a){if(void 0===r&&(r=null),void 0===t&&(t=null),void 0===n&&(n={}),void 0===o&&(o=!0),void 0===a&&(a=[Object]),o&&"object"==typeof e)if(Array.isArray(e))for(var i,l=0,u=_createForOfIteratorHelperLoose(e);!(i=u()).done;){var s=i.value;e[l]=_addDynamicGetterAndSetter(s,r,t,n,o),l+=1}else if(isMap(e))for(var c,_=_createForOfIteratorHelperLoose(e);!(c=_()).done;){var f=c.value,p=f[0],d=f[1];e.set(p,_addDynamicGetterAndSetter(d,r,t,n,o))}else if(isSet(e)){for(var v,b=[],g=_createForOfIteratorHelperLoose(e);!(v=g()).done;){var m=v.value;e.delete(m),b.push(_addDynamicGetterAndSetter(m,r,t,n,o))}for(var y=0,h=b;y<h.length;y++){var O=h[y];e.add(O)}}else if(null!==e)for(var E=0,A=Object.entries(e);E<A.length;E++){var I=A[E],w=I[0],j=I[1];e[w]=_addDynamicGetterAndSetter(j,r,t,n,o)}if(r||t)for(var x,P,L=function(){var o=P.value;if(isObject(e)&&e instanceof o){var a=getProxyHandler(e,n),i=getProxyHandler(e,n);r&&(i.get=function(t,n){return"__target__"===n?e:"__revoke__"===n?function(){return s(),e}:"function"==typeof e[n]?e[n]:r(a.get(u,n),n,e)}),t&&(i.set=function(r,n,o){return a.set(u,n,t(n,o,e))});var l=Proxy.revocable({},i),u=l.proxy,s=l.revoke;return{v:u}}},S=_createForOfIteratorHelperLoose(a);!(P=S()).done;)if(x=L())return x.v;return e},convertCircularObjectToJSON=function(e,r,t){void 0===r&&(r=function(e){return null!=e?e:"__circularReference__"}),void 0===t&&(t=0);var n=new Map;return function(e){var o=function(e,t){if(isObject(t)){var a,i;if(n.has(t))return r(null!==(a=n.get(t))&&void 0!==a?a:null,e,t,n);if(n.set(t,null),Array.isArray(t)){i=[];for(var l,u=_createForOfIteratorHelperLoose(t);!(l=u()).done;){var s=l.value;i.push(o(null,s))}}else{i={};for(var c=0,_=Object.entries(t);c<_.length;c++){var f=_[c],p=f[0],d=f[1];i[p]=o(p,d)}}return n.set(t,i),i}return t};return JSON.stringify(e,o,t)}(e)},_convertMapToPlainObject=function(e,r){if(void 0===r&&(r=!0),"object"==typeof e){if(isMap(e)){for(var t,n={},o=_createForOfIteratorHelperLoose(e);!(t=o()).done;){var a=t.value,i=a[0],l=a[1];r&&(l=_convertMapToPlainObject(l,r)),["number","string"].includes(typeof i)&&(n[String(i)]=l)}return n}if(r)if(isPlainObject(e))for(var u=0,s=Object.entries(e);u<s.length;u++){var c=s[u],_=c[0],f=c[1];e[_]=_convertMapToPlainObject(f,r)}else if(Array.isArray(e))for(var p=0,d=0,v=e;d<v.length;d++){var b=v[d];e[p]=_convertMapToPlainObject(b,r),p+=1}else if(isSet(e)){for(var g,m=[],y=_createForOfIteratorHelperLoose(e);!(g=y()).done;){var h=g.value;e.delete(h),m.push(_convertMapToPlainObject(h,r))}for(var O=0,E=m;O<E.length;O++){var A=E[O];e.add(A)}}}return e},_convertPlainObjectToMap=function(e,r){if(void 0===r&&(r=!0),"object"==typeof e){if(isPlainObject(e)){for(var t=new Map,n=0,o=Object.entries(e);n<o.length;n++){var a=o[n],i=a[0],l=a[1];r&&(e[i]=_convertPlainObjectToMap(l,r)),t.set(i,e[i])}return t}if(r)if(Array.isArray(e))for(var u=0,s=0,c=e;s<c.length;s++){var _=c[s];e[u]=_convertPlainObjectToMap(_,r),u+=1}else if(isMap(e))for(var f,p=_createForOfIteratorHelperLoose(e);!(f=p()).done;){var d=f.value,v=d[0],b=d[1];e.set(v,_convertPlainObjectToMap(b,r))}else if(isSet(e)){for(var g,m=[],y=_createForOfIteratorHelperLoose(e);!(g=y()).done;){var h=g.value;e.delete(h),m.push(_convertPlainObjectToMap(h,r))}for(var O=0,E=m;O<E.length;O++){var A=E[O];e.add(A)}}}return e},_convertSubstringInPlainObject=function(e,r,t){for(var n=0,o=Object.entries(e);n<o.length;n++){var a=o[n],i=a[0],l=a[1];isPlainObject(l)?e[i]=_convertSubstringInPlainObject(l,r,t):"string"==typeof l&&(e[i]=l.replace(r,t))}return e},_copy=function(e,r,t,n,o,a,i,l){if(void 0===r&&(r=!1),void 0===t&&(t=-1),void 0===n&&(n=VALUE_COPY_SYMBOL),void 0===o&&(o=null),void 0===a&&(a=!1),void 0===i&&(i=[]),void 0===l&&(l=0),isObject(e)){if(!o){if(Array.isArray(e))return _copy(e,r,t,n,[],a,i,l);if(e instanceof Map)return _copy(e,r,t,n,new Map,a,i,l);if(e instanceof Set)return _copy(e,r,t,n,new Set,a,i,l);if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){var u=/[^/]*$/.exec(e.toString());return(o=new RegExp(e.source,u?u[0]:void 0)).lastIndex=e.lastIndex,o}return"undefined"!=typeof Blob&&e instanceof Blob?r?e.slice(0,e.size,e.type):e:_copy(e,r,t,n,{},a,i,l)}if(e===o)throw new Error("Can't copy because source and destination are identical.");if(!a&&![void 0,null].includes(e)){var s=i.indexOf(e);if(-1!==s)return i[s];i.push(e)}var c=function(e){if(-1!==t&&t<l+1)return n===VALUE_COPY_SYMBOL?e:n;var o=_copy(e,r,t,n,null,a,i,l+1);return a||[void 0,null].includes(e)||"object"!=typeof e||i.push(e),o};if(Array.isArray(e))for(var _,f=_createForOfIteratorHelperLoose(e);!(_=f()).done;){var p=_.value;o.push(c(p))}else if(e instanceof Map)for(var d,v=_createForOfIteratorHelperLoose(e);!(d=v()).done;){var b=d.value,g=b[0],m=b[1];o.set(g,c(m))}else if(e instanceof Set)for(var y,h=_createForOfIteratorHelperLoose(e);!(y=h()).done;){var O=y.value;o.add(c(O))}else for(var E=0,A=Object.entries(e);E<A.length;E++){var I=A[E],w=I[0],j=I[1];try{o[w]=c(j)}catch(e){throw new Error('Failed to copy property value object "'+w+'": '+_represent(e),{cause:e})}}}return o||e},determineType=function(e){if([null,void 0].includes(e))return String(e);var r=typeof e;if(["function","object"].includes(r)&&"toString"in e){var t=Object.prototype.toString.call(e);if(Object.prototype.hasOwnProperty.call(_constants__WEBPACK_IMPORTED_MODULE_1__.CLASS_TO_TYPE_MAPPING,t))return _constants__WEBPACK_IMPORTED_MODULE_1__.CLASS_TO_TYPE_MAPPING[t]}return r},_equals=function equals(firstValue,secondValue,givenOptions){void 0===givenOptions&&(givenOptions={});var options=_extends({compareBlobs:!1,deep:-1,exceptionPrefixes:[],ignoreFunctions:!0,properties:null,returnReasonIfNotEqual:!1},givenOptions);if(options.ignoreFunctions&&isFunction(firstValue)&&isFunction(secondValue)||firstValue===secondValue||isNotANumber(firstValue)&&isNotANumber(secondValue)||firstValue instanceof RegExp&&secondValue instanceof RegExp&&firstValue.toString()===secondValue.toString()&&firstValue.flags.split("").sort().join("")===secondValue.flags.split("").sort().join("")||firstValue instanceof Date&&secondValue instanceof Date&&(isNaN(firstValue.getTime())&&isNaN(secondValue.getTime())||!isNaN(firstValue.getTime())&&!isNaN(secondValue.getTime())&&firstValue.getTime()===secondValue.getTime())||options.compareBlobs&&"undefined"!==eval("typeof Buffer")&&Object.prototype.hasOwnProperty.call(eval("Buffer"),"isBuffer")&&firstValue instanceof eval("Buffer")&&secondValue instanceof eval("Buffer")&&firstValue.toString("base64")===secondValue.toString("base64"))return!0;if(options.compareBlobs&&"undefined"!=typeof Blob&&firstValue instanceof Blob&&secondValue instanceof Blob)return new Promise(function(e){for(var r=[],t=0,n=[firstValue,secondValue];t<n.length;t++){var o=n[t],a=new FileReader;a.onload=function(t){null===t.target?r.push(null):r.push(t.target.result),2===r.length&&(r[0]===r[1]?e(!0):e(!!options.returnReasonIfNotEqual&&">>> Blob("+_represent(r[0])+") !== Blob("+_represent(r[1])+")"))},a.readAsDataURL(o)}});if(isPlainObject(firstValue)&&isPlainObject(secondValue)&&!(firstValue instanceof RegExp||secondValue instanceof RegExp)||Array.isArray(firstValue)&&Array.isArray(secondValue)&&firstValue.length===secondValue.length||determineType(firstValue)===determineType(secondValue)&&["map","set"].includes(determineType(firstValue))&&firstValue.size===secondValue.size){for(var promises=[],_i11=0,_arr4=[[firstValue,secondValue],[secondValue,firstValue]];_i11<_arr4.length;_i11++){var _arr4$_i=_arr4[_i11],first=_arr4$_i[0],second=_arr4$_i[1],firstIsArray=Array.isArray(first);if(firstIsArray&&(!Array.isArray(second)||first.length!==second.length))return!!options.returnReasonIfNotEqual&&".length";var firstIsMap=isMap(first);if(firstIsMap&&(!isMap(second)||first.size!==second.size))return!!options.returnReasonIfNotEqual&&".size";var firstIsSet=isSet(first);if(firstIsSet&&(!isSet(second)||first.size!==second.size))return!!options.returnReasonIfNotEqual&&".size";if(firstIsArray){for(var index=0,_loop2=function(){var e=_arr5[_i12];if(0!==options.deep){var r=_equals(e,second[index],_extends({},options,{deep:options.deep-1}));if(!r)return{v:!1};var t=index,n=function(e){var r;return"string"==typeof e?"["+String(t)+"]"+(null!==(r={"[":"",">":" "}[e[0]])&&void 0!==r?r:".")+e:e};if(Object.prototype.hasOwnProperty.call(r,"then")&&promises.push(r.then(n)),"string"==typeof r)return{v:n(r)}}index+=1},_ret2,_i12=0,_arr5=first;_i12<_arr5.length;_i12++)if(_ret2=_loop2(),_ret2)return _ret2.v}else if(firstIsMap){for(var _loop3=function(){var e=_step11.value,r=e[0],t=e[1];if(0!==options.deep){var n=_equals(t,second.get(r),_extends({},options,{deep:options.deep-1}));if(!n)return{v:!1};var o=function(e){var t;return"string"==typeof e?"get("+_represent(r)+")"+(null!==(t={"[":"",">":" "}[e[0]])&&void 0!==t?t:".")+e:e};if(Object.prototype.hasOwnProperty.call(n,"then")&&promises.push(n.then(o)),"string"==typeof n)return{v:o(n)}}},_ret3,_iterator11=_createForOfIteratorHelperLoose(first),_step11;!(_step11=_iterator11()).done;)if(_ret3=_loop3(),_ret3)return _ret3.v}else if(firstIsSet){for(var _loop4=function(){var e=_step12.value;if(0!==options.deep){for(var r,t=!1,n=[],o=_createForOfIteratorHelperLoose(second);!(r=o()).done;){var a=r.value,i=_equals(e,a,_extends({},options,{deep:options.deep-1}));if("boolean"==typeof i){if(i){t=!0;break}}else n.push(i)}var l=function(r){return!!r||!!options.returnReasonIfNotEqual&&">>> {-> "+_represent(e)+" not found}"};return t?0:(n.length&&promises.push(new Promise(function(e){Promise.all(n).then(function(r){e(l(r.some(function(e){return e})))},function(){})})),{v:l(!1)})}},_ret4,_iterator12=_createForOfIteratorHelperLoose(first),_step12;!(_step12=_iterator12()).done;)if(_ret4=_loop4(),0!==_ret4&&_ret4)return _ret4.v}else for(var _loop5=function(){var e=_Object$entries7[_i13],r=e[0],t=e[1];if(options.properties&&!options.properties.includes(r))return 0;for(var n,o=!1,a=_createForOfIteratorHelperLoose(options.exceptionPrefixes);!(n=a()).done;){var i=n.value;if(r.startsWith(i)){o=!0;break}}if(o)return 0;if(0!==options.deep){var l=_equals(t,second[r],_extends({},options,{deep:options.deep-1}));if(!l)return{v:!1};var u=function(e){var t;return"string"==typeof e?r+(null!==(t={"[":"",">":" "}[e[0]])&&void 0!==t?t:".")+e:e};if(Object.prototype.hasOwnProperty.call(l,"then")&&promises.push(l.then(u)),"string"==typeof l)return{v:u(l)}}},_ret5,_i13=0,_Object$entries7=Object.entries(first);_i13<_Object$entries7.length&&(_ret5=_loop5(),0!==_ret5);_i13++)if(_ret5)return _ret5.v}return!promises.length||new Promise(function(e){Promise.all(promises).then(function(r){for(var t,n=_createForOfIteratorHelperLoose(r);!(t=n()).done;){var o=t.value;if(!o||"string"==typeof o){e(o);break}}e(!0)},function(){})})}return!!options.returnReasonIfNotEqual&&">>> "+_represent(firstValue)+" !== "+_represent(secondValue)},evaluateDynamicData=function(e,r,t,n,o){if(void 0===r&&(r={}),void 0===t&&(t="self"),void 0===n&&(n="__evaluate__"),void 0===o&&(o="__execute__"),"object"!=typeof e||null===e)return e;t in r||(r[t]=e);var a=function(e,t){void 0===t&&(t=n);var a=evaluate(e,r,t===o);if(a.error)throw new Error(a.error);return a.result},i=function(e){if("object"!=typeof e||null===e||"undefined"==typeof Proxy)return e;for(var r=0,t=Object.entries(e);r<t.length;r++){var u=t[r],s=u[0],c=u[1];if("__target__"!==s&&isObject(c)){var _=c;if(i(_),Object.prototype.hasOwnProperty.call(_,n)||Object.prototype.hasOwnProperty.call(_,o)){var f=_;e[s]=new Proxy(_,{get:function(e,r){if("__target__"===r)return e;if("hasOwnProperty"===r)return e[r];for(var t=0,i=[n,o];t<i.length;t++){var u=i[t];if(r===u&&"string"==typeof e[r])return l(a(e[r],u))}var s=l(e);if("toString"===r){var c=a(s);return c[r].bind(c)}if("string"!=typeof r){var _,f=a(s);return null!=(_=f[r])&&_.bind?f[r].bind(f):f[r]}for(var p=0,d=[n,o];p<d.length;p++){var v=d[p];if(Object.prototype.hasOwnProperty.call(e,v))return a(s,v)[r]}return s[r]},ownKeys:function(e){for(var r=0,t=[n,o];r<t.length;r++){var i=t[r];if(Object.prototype.hasOwnProperty.call(e,i))return Object.getOwnPropertyNames(l(a(e[i],i)))}return Object.getOwnPropertyNames(e)}}),e[s].__target__||(e[s].__target__=f)}}}return e},l=function(e){if(isObject(e)){if(isProxy(e)){for(var r=0,t=[n,o];r<t.length;r++){var i=t[r];if(Object.prototype.hasOwnProperty.call(e,i))return e[i]}e=e.__target__}for(var u=0,s=Object.entries(e);u<s.length;u++){var c=s[u],_=c[0],f=c[1];if([n,o].includes(_))return"undefined"==typeof Proxy?l(a(f)):f;e[_]=l(f)}}return e};r.resolve=l;var u=function(e){if(isObject(e))for(var r=0,t=Object.entries(e);r<t.length;r++){var n=t[r],o=n[0],a=n[1];if("__target__"!==o&&null!==a&&["function","undefined"].includes(typeof a)){var i=a.__target__;void 0!==i&&(e[o]=i),u(a)}}return e};return Object.prototype.hasOwnProperty.call(e,n)?a(e[n]):Object.prototype.hasOwnProperty.call(e,o)?a(e[o],o):u(l(i(e)))},_removeKeysInEvaluation=function(e,r){void 0===r&&(r=["__evaluate__","__execute__"]);for(var t=0,n=Object.entries(e);t<n.length;t++){var o=n[t],a=o[0],i=o[1];!r.includes(a)&&r.some(function(r){return Object.prototype.hasOwnProperty.call(e,r)})?delete e[a]:isPlainObject(i)&&_removeKeysInEvaluation(i,r)}return e},_extend=function(e,r){for(var t=!1,n=arguments.length,o=new Array(n>2?n-2:0),a=2;a<n;a++)o[a-2]=arguments[a];var i,l=o;e===IGNORE_NULL_AND_UNDEFINED_SYMBOL||"boolean"==typeof e?(t=e,i=r):(i=e,isObject(r)?l=[r].concat(l):void 0!==r&&(i=r));for(var u,s=function(e,r){return r===e?e:t&&r&&(isPlainObject(r)||isMap(r))?(n=isMap(r)?e&&isMap(e)?e:new Map:e&&isPlainObject(e)?e:{},_extend(t,n,r)):r;var n},c=_createForOfIteratorHelperLoose(l);!(u=c()).done;){var _=u.value,f=typeof i,p=typeof _;if(isMap(i)&&(f+=" Map"),isMap(_)&&(p+=" Map"),f===p&&i!==_)if(isMap(i)&&isMap(_))for(var d,v=_createForOfIteratorHelperLoose(_);!(d=v()).done;){var b=d.value,g=b[0],m=b[1];i.set(g,s(i.get(g),m))}else if(!isObject(i)||Array.isArray(i)||"undefined"!=typeof Blob&&i instanceof Blob||!isObject(_)||Array.isArray(_)||"undefined"!=typeof Blob&&_ instanceof Blob)i=_;else for(var y=0,h=Object.entries(_);y<h.length;y++){var O=h[y],E=O[0],A=O[1];t===IGNORE_NULL_AND_UNDEFINED_SYMBOL&&[null,void 0].includes(A)||(i[E]=s(i[E],A))}else i=_}return i},getProxyHandler=function(e,r){return void 0===r&&(r={}),r=_extends({delete:"[]",get:"[]",has:"[]",set:"[]"},r),{deleteProperty:function(t,n){return"[]"!==r.delete||"string"!=typeof n?e[r.delete](n):(delete e[n],!0)},get:function(t,n){return"[]"===r.get&&"string"==typeof n?e[n]:e[r.get](n)},has:function(t,n){return"[]"===r.has?n in e:e[r.has](n)},set:function(t,n,o){return"[]"!==r.set||"string"!=typeof n?e[r.set](n,o):(e[n]=o,!0)}}},_mask=function(e,r){if(!0===(r=_extends({exclude:!1,include:!0},r)).exclude||Array.isArray(r.exclude)&&0===r.exclude.length||!1===r.include||"object"!=typeof e)return{};var t=Array.isArray(r.exclude)?r.exclude.reduce(function(e,r){var t;return _extends({},e,((t={})[r]=!0,t))},{}):r.exclude,n=Array.isArray(r.include)?r.include.reduce(function(e,r){var t;return _extends({},e,((t={})[r]=!0,t))},{}):r.include,o={};if(isPlainObject(n))for(var a=0,i=Object.entries(n);a<i.length;a++){var l=i[a],u=l[0],s=l[1];Object.prototype.hasOwnProperty.call(e,u)&&(!0===s?o[u]=e[u]:(isPlainObject(s)||Array.isArray(s)&&s.length)&&"object"==typeof e[u]&&(o[u]=_mask(e[u],{include:s})))}else o=e;if(isPlainObject(t)){for(var c=!1,_=_extends({},o),f=0,p=Object.entries(t);f<p.length;f++){var d=p[f],v=d[0],b=d[1];if(Object.prototype.hasOwnProperty.call(_,v))if(!0===b)c=!0,delete _[v];else if((isPlainObject(b)||Array.isArray(b)&&b.length)&&"object"==typeof _[v]){var g=_[v];_[v]=_mask(_[v],{exclude:b}),_[v]!==g&&(c=!0)}}c&&(o=_)}return o},_modifyObject=function(e,r,t,n,o,a,i,l,u){if(void 0===t&&(t="__remove__"),void 0===n&&(n="__prepend__"),void 0===o&&(o="__append__"),void 0===a&&(a="__"),void 0===i&&(i="__"),void 0===l&&(l=null),void 0===u&&(u=null),isMap(r)&&isMap(e))for(var s,c=_createForOfIteratorHelperLoose(r);!(s=c()).done;){var _=s.value,f=_[0],p=_[1];e.has(f)&&_modifyObject(e.get(f),p,t,n,o,a,i,r,f)}else if(isObject(r)&&isObject(e))for(var d=0,v=Object.entries(r);d<v.length;d++){var b=v[d],g=b[0],m=b[1],y=NaN;if(Array.isArray(e)&&g.startsWith(a)&&g.endsWith(i)&&((y=parseInt(g.substring(a.length,g.length-i.length),10))<0||y>=e.length)&&(y=NaN),[t,n,o].includes(g)||!isNaN(y)){if(Array.isArray(e))if(g===t)for(var h,O=_createForOfIteratorHelperLoose([].concat(m));!(h=O()).done;){var E=h.value;"string"==typeof E&&E.startsWith(a)&&E.endsWith(i)?e.splice(parseInt(E.substring(a.length,E.length-i.length),10),1):e.includes(E)?e.splice(e.indexOf(E),1):"number"==typeof E&&E<e.length&&e.splice(E,1)}else g===o?e=e.concat(m):g===n?e=[].concat(m).concat(e):isObject(e[y])&&isObject(m)?_extend(!0,_modifyObject(e[y],m,t,n,o,a,i),e[y],m):e[y]=m;else if(g===t)for(var A,I=_createForOfIteratorHelperLoose([].concat(m));!(A=I()).done;){var w=A.value;"string"==typeof w&&Object.prototype.hasOwnProperty.call(e,w)&&delete e[w]}delete r[g],l&&"string"==typeof u&&delete l[u]}else null!==e&&Object.prototype.hasOwnProperty.call(e,g)&&(e[g]=_modifyObject(e[g],m,t,n,o,a,i,r,g))}return e},_removeKeyPrefixes=function(e,r){void 0===r&&(r="#");var t=[].concat(r);if(Array.isArray(e))for(var n,o=0,a=_createForOfIteratorHelperLoose(e.slice());!(n=a()).done;){var i=n.value,l=!1;if("string"==typeof i){for(var u,s=_createForOfIteratorHelperLoose(t);!(u=s()).done;){var c=u.value;if(i.startsWith(c+":")){e.splice(o,1),l=!0;break}}if(l)continue}e[o]=_removeKeyPrefixes(i,t),o+=1}else if(isSet(e))for(var _,f=_createForOfIteratorHelperLoose(new Set(e));!(_=f()).done;){var p=_.value,d=!1;if("string"==typeof p){for(var v,b=_createForOfIteratorHelperLoose(t);!(v=b()).done;){var g=v.value;if(p.startsWith(g+":")){e.delete(p),d=!0;break}}if(d)continue}_removeKeyPrefixes(p,t)}else if(isMap(e))for(var m,y=_createForOfIteratorHelperLoose(new Map(e));!(m=y()).done;){var h=m.value,O=h[0],E=h[1],A=!1;if("string"==typeof O){for(var I,w=_createForOfIteratorHelperLoose(t);!(I=w()).done;){var j=I.value,x=escapeRegularExpressions(j);if(new RegExp("^"+x+"[0-9]*$").test(O)){e.delete(O),A=!0;break}}if(A)continue}e.set(O,_removeKeyPrefixes(E,t))}else if(isObject(e))for(var P=0,L=Object.entries(Object.assign({},e));P<L.length;P++){for(var S,T=L[P],M=T[0],N=T[1],R=!1,D=_createForOfIteratorHelperLoose(t);!(S=D()).done;){var $=S.value,C=escapeRegularExpressions($);if(new RegExp("^"+C+"[0-9]*$").test(M)){delete e[M],R=!0;break}}R||(e[M]=_removeKeyPrefixes(N,t))}return e},_represent=function(e,r,t,n,o,a){if(void 0===r&&(r=30),void 0===t&&(t=" "),void 0===n&&(n=""),void 0===o&&(o="__maximum_number_of_levels_reached__"),void 0===a&&(a=8),0===a)return String(o);if(null===e)return"null";if(void 0===e)return"undefined";if("string"==typeof e)return'"'+e.replace(/\n/g,"\n"+n)+'"';if((0,_indicators__WEBPACK_IMPORTED_MODULE_2__.isNumeric)(e)||"boolean"==typeof e)return String(e);if(e instanceof Date)return e.toISOString();if(Array.isArray(e)){for(var i,l="[",u=!1,s=1,c=_createForOfIteratorHelperLoose(e);!(i=c()).done;){var _=i.value;if(s>r){l+="\n"+n+"...";break}u&&(l+=","),l+="\n"+n+t+_represent(_,r,t,""+n+t,o,a-1),u=!0,s+=1}return u&&(l+="\n"+n),l+="]"}if((0,_indicators__WEBPACK_IMPORTED_MODULE_2__.isMap)(e)){for(var f,p="",d=!1,v=1,b=_createForOfIteratorHelperLoose(e);!(f=b()).done;){var g=f.value,m=g[0],y=g[1];if(v>r){p+=",\n"+n+"...";break}d&&(p+=",\n"+n+t),p+=_represent(m,r,t,""+n+t,o,a-1)+" -> "+_represent(y,r,t,""+n+t,o,a-1),d=!0,v+=1}return d||(p="EmptyMap"),p}if((0,_indicators__WEBPACK_IMPORTED_MODULE_2__.isSet)(e)){for(var h,O="{",E=!1,A=1,I=_createForOfIteratorHelperLoose(e);!(h=I()).done;){var w=h.value;if(A>r){O+=",\n"+n+"...";break}E&&(O+=","),O+="\n"+n+t+_represent(w,r,t,""+n+t,o,a-1),E=!0,A+=1}return E?O+="\n"+n+"}":O="EmptySet",O}if((0,_indicators__WEBPACK_IMPORTED_MODULE_2__.isFunction)(e))return"__function__";for(var j,x="{",P=!1,L=1,S=_createForOfIteratorHelperLoose(Object.getOwnPropertyNames(e).sort());!(j=S()).done;){var T=j.value;if(L>r){x+=",\n"+n+"...";break}P&&(x+=","),x+="\n"+n+t+T+": "+_represent(e[T],r,t,""+n+t,o,a-1),P=!0,L+=1}return P&&(x+="\n"+n),x+="}"},sort=function(e){var r=[];if(Array.isArray(e))for(var t=0;t<e.length;t++)r.push(t);else if("object"==typeof e)if(isMap(e))for(var n,o=_createForOfIteratorHelperLoose(e);!(n=o()).done;){var a=n.value;r.push(a[0])}else if(null!==e)for(var i=0,l=Object.keys(e);i<l.length;i++){var u=l[i];r.push(u)}return r.sort()},_unwrapProxy=function(e,r){if(void 0===r&&(r=new Set),isObject(e)){if(r.has(e))return e;try{isFunction(e.__revoke__)&&(isProxy(e)&&(e=e.__target__),e.__revoke__())}catch(r){return e}finally{r.add(e)}if(Array.isArray(e))for(var t,n=0,o=_createForOfIteratorHelperLoose(e);!(t=o()).done;){var a=t.value;e[n]=_unwrapProxy(a,r),n+=1}else if(isMap(e))for(var i,l=_createForOfIteratorHelperLoose(e);!(i=l()).done;){var u=i.value,s=u[0],c=u[1];e.set(s,_unwrapProxy(c,r))}else if(isSet(e)){for(var _,f=[],p=_createForOfIteratorHelperLoose(e);!(_=p()).done;){var d=_.value;e.delete(d),f.push(_unwrapProxy(d,r))}for(var v=0,b=f;v<b.length;v++){var g=b[v];e.add(g)}}else for(var m=0,y=Object.entries(e);m<y.length;m++){var h=y[m],O=h[0],E=h[1];e[O]=_unwrapProxy(E,r)}}return e}},function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__3__},function(e,r,t){t.d(r,{isFunction:function(){return l},isMap:function(){return i},isNumeric:function(){return o},isSet:function(){return a}});var n=t(2);var o=function(e){var r=(0,n.determineType)(e);return["number","string"].includes(r)&&!isNaN(e-parseFloat(e))},a=function(e){return"set"===(0,n.determineType)(e)},i=function(e){return"map"===(0,n.determineType)(e)},l=function(e){return Boolean(e)&&["[object AsyncFunction]","[object Function]"].includes({}.toString.call(e))}},function(module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{currentImport:function(){return currentImport},optionalRequire:function(){return optionalRequire}});var currentRequire=eval("typeof require === 'undefined' ? null : require"),currentOptionalImport=null;try{currentOptionalImport=eval("typeof import === 'undefined' ? null : import")}catch(e){}var currentImport=currentOptionalImport,optionalRequire=function(e){try{return currentRequire?currentRequire(e):null}catch(e){return null}},clearRequireCache=function(e){void 0===e&&(e=(null==currentRequire?void 0:currentRequire.cache)||__webpack_require__.c);for(var r={},t=0,n=Object.entries(e);t<n.length;t++){var o=n[t],a=o[0],i=o[1];r[a]=i,delete e[a]}return r},restoreRequireCache=function(e,r){void 0===e&&(e=(null==currentRequire?void 0:currentRequire.cache)||__webpack_require__.c),clearRequireCache();for(var t=0,n=Object.entries(r);t<n.length;t++){var o=n[t],a=o[0],i=o[1];e[a]=i}},isolatedRequire=function(e,r){void 0===r&&(r=currentRequire||__webpack_require__(6));var t=clearRequireCache(r.cache);try{return r(e)}catch(e){throw e}finally{restoreRequireCache(r.cache,t)}}},function(e){function r(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}r.keys=function(){return[]},r.resolve=r,r.id=6,e.exports=r},function(__unused_webpack_module,__webpack_exports__,__webpack_require__){var _extends,SPECIAL_REGEX_SEQUENCES,ABBREVIATIONS,DEFAULT_ENCODING,globalContext,MAXIMAL_NUMBER_OF_ITERATIONS,readFileSync,isFileSync,determineType;__webpack_require__.d(__webpack_exports__,{capitalize:function(){return capitalize},evaluate:function(){return evaluate}});var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(3),_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__),_babel_runtime_helpers_construct__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(13),_babel_runtime_helpers_construct__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(_babel_runtime_helpers_construct__WEBPACK_IMPORTED_MODULE_1__),_context__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(1),_object__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(2);function _createForOfIteratorHelperLoose(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=_unsupportedIterableToArray(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,r){if(e){if("string"==typeof e)return _arrayLikeToArray(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,r):void 0}}function _arrayLikeToArray(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var POLYFILL_TEMPLATE_STRINGS={value:!1},ALLOWED_VARIABLE_SYMBOLS="0-9a-zA-Z_$",ALLOWED_STARTING_VARIABLE_SYMBOLS="a-zA-Z_$",FIX_ENCODING_ERROR_MAPPING=null,escapeRegularExpressions=function(e,r){if(void 0===r&&(r=[]),1===e.length&&!SPECIAL_REGEX_SEQUENCES.includes(e))return e;r.includes("\\")||e.replace(/\\/g,"\\\\");for(var t,n=_createForOfIteratorHelperLoose(SPECIAL_REGEX_SEQUENCES);!(t=n()).done;){var o=t.value;r.includes(o)||(e=e.replace(new RegExp("\\"+o,"g"),"\\"+o))}return e},convertToValidVariableName=function(e){return["class","default"].includes(e)?"_"+e:e.replace(new RegExp("^[^"+ALLOWED_STARTING_VARIABLE_SYMBOLS+"]+"),"").replace(new RegExp("[^"+ALLOWED_VARIABLE_SYMBOLS+"]+([a-zA-Z])","g"),function(e,r){return r.toUpperCase()})},encodeURIComponentExtended=function(e,r){return void 0===r&&(r=!1),encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,r?"%20":"+")},addSeparatorToPath=function(e,r){return void 0===r&&(r="/"),(e=e.trim()).substring(e.length-1)!==r&&e.length?e+r:e},hasPathPrefix=function(e,r,t){var n;(void 0===e&&(e="/admin"),void 0===r)&&(r=(null==(n=globalContext.location)?void 0:n.pathname)||"");return void 0===t&&(t="/"),"string"==typeof e&&(e.endsWith(t)||(e+=t),r===e.substring(0,e.length-t.length)||r.startsWith(e))},getDomainName=function(e,r){var t,n;void 0===e&&(e=(null==(t=globalContext.location)?void 0:t.href)||"");void 0===r&&(r=(null==(n=globalContext.location)?void 0:n.hostname)||"");var o=/^([a-z]*:?\/\/)?([^/]+?)(?::[0-9]+)?(?:\/.*|$)/i.exec(e);return o&&o.length>2&&o[1]&&o[2]?o[2]:r},getPortNumber=function(e,r){var t,n,o;void 0===e&&(e=(null==(n=globalContext.location)?void 0:n.href)||"");void 0===r&&(r=null!=(o=globalContext.location)&&o.port?parseInt(globalContext.location.port):null);var a=/^(?:[a-z]*:?\/\/[^/]+?)?[^/]+?:([0-9]+)/i.exec(e);return a&&a.length>1?parseInt(a[1],10):null!==r?r:null!=(t=globalContext.location)&&t.port&&parseInt(globalContext.location.port,10)?parseInt(globalContext.location.port,10):"https"===getProtocolName(e)?443:80},getProtocolName=function(e,r){var t,n;void 0===e&&(e=(null==(t=globalContext.location)?void 0:t.href)||"");void 0===r&&(r=(null==(n=globalContext.location)?void 0:n.protocol)&&globalContext.location.protocol.substring(0,globalContext.location.protocol.length-1)||"");var o=/^([a-z]+):\/\//i.exec(e);return o&&o.length>1&&o[1]?o[1]:r},getURLParameter=function(e,r,t,n,o,a,i){var l,u,s;(void 0===e&&(e=null),void 0===r&&(r=!1),void 0===t&&(t=null),void 0===n&&(n="$"),void 0===o&&(o="!"),void 0===a&&(a=null),void 0===i)&&(i=null!==(u=null==(s=globalContext.location)?void 0:s.hash)&&void 0!==u?u:"");var c=null!==(l=i)&&void 0!==l?l:"#",_="";if(a)_=a;else if(o&&c.startsWith(o)){var f,p=c.indexOf("#");-1===p?(f=c.substring(o.length),c=""):(f=c.substring(o.length,p),c=c.substring(p));var d=f.indexOf("?");-1!==d&&(_=f.substring(d))}else globalContext.location&&(_=globalContext.location.search||"");var v=t||_,b="&"===v;if(b||"#"===v){var g="";try{g=decodeURIComponent(c)}catch(e){}var m=g.indexOf(n);-1===m?v="":(v=g.substring(m)).startsWith(n)&&(v=v.substring(n.length))}else v.startsWith("?")&&(v=v.substring(1));var y=v?v.split("&"):[];_=_.substring(1),b&&_&&(y=y.concat(_.split("&")));for(var h,O=[],E=_createForOfIteratorHelperLoose(y);!(h=E()).done;){var A=h.value,I=A.split("="),w=void 0;try{w=decodeURIComponent(I[0])}catch(e){w=""}try{A=decodeURIComponent(I[1])}catch(e){A=""}O.push(w),r?Object.prototype.hasOwnProperty.call(O,w)&&Array.isArray(O[w])?O[w].push(A):O[w]=[A]:O[w]=A}return e?Object.prototype.hasOwnProperty.call(O,e)?O[e]:null:O},serviceURLEquals=function(e,r){var t;void 0===r&&(r=(null==(t=globalContext.location)?void 0:t.href)||"");var n=getDomainName(e,""),o=getProtocolName(e,""),a=getPortNumber(e);return!(""!==n&&n!==getDomainName(r)||""!==o&&o!==getProtocolName(r)||null!==a&&a!==getPortNumber(r))},normalizeURL=function(e){if("string"==typeof e){var r=e.replace(/^:?\/+/,"").replace(/\/+$/,"").trim();return r.startsWith("http")?r:"http://"+r}return""},representURL=function(e){return"string"==typeof e?e.replace(/^(https?)?:?\/+/,"").replace(/\/+$/,"").trim():""},camelCaseToDelimited=function(e,r,t){void 0===r&&(r="-"),void 0===t&&(t=null),t||(t=ABBREVIATIONS);var n=maskForRegularExpression(r);if(t.length){for(var o,a="",i=_createForOfIteratorHelperLoose(t);!(o=i()).done;){a&&(a+="|"),a+=o.value.toUpperCase()}e=e.replace(new RegExp("("+a+")("+a+")","g"),"$1"+r+"$2")}return(e=e.replace(new RegExp("([^"+n+"])([A-Z][a-z]+)","g"),"$1"+r+"$2")).replace(/([a-z0-9])([A-Z])/g,"$1"+r+"$2").toLowerCase()},capitalize=function(e){return e.charAt(0).toUpperCase()+e.substring(1)},compressStyleValue=function(e){return e.replace(/ *([:;]) */g,"$1").replace(/ +/g," ").replace(/^;+/,"").replace(/;+$/,"").trim()},decodeHTMLEntities=function(e){if(globalContext.document){var r=globalContext.document.createElement("textarea");return r.innerHTML=e,r.value}return null},delimitedToCamelCase=function(e,r,t,n,o){void 0===r&&(r="-"),void 0===t&&(t=null),void 0===n&&(n=!1),void 0===o&&(o=!1);var a,i=maskForRegularExpression(r);if(t||(t=ABBREVIATIONS),n)a=ABBREVIATIONS.join("|");else{a="";for(var l,u=_createForOfIteratorHelperLoose(t);!(l=u()).done;){var s=l.value;a&&(a+="|"),a+=capitalize(s)+"|"+s}}var c=e.startsWith(r);return c&&(e=e.substring(r.length)),e=e.replace(new RegExp("("+i+")("+a+")("+i+"|$)","g"),function(e,r,t,n){return r+t.toUpperCase()+n}),o&&(i="(?:"+i+")+"),e=e.replace(new RegExp(i+"([a-zA-Z0-9])","g"),function(e,r){return r.toUpperCase()}),c&&(e=r+e),e},compile=function(e,r,t,n,o){var a;void 0===r&&(r=[]),void 0===t&&(t=!1),void 0===n&&(n=!0),void 0===o&&(o={});for(var i,l,u=Object.keys(globalThis).concat("globalThis").filter(function(e){return new RegExp("^["+ALLOWED_STARTING_VARIABLE_SYMBOLS+"]["+ALLOWED_VARIABLE_SYMBOLS+"]*$").test(e)}),s={error:null,globalNames:u,globalNamesUndefinedList:u.map(function(){}),originalScopeNames:Array.isArray(r)?r:"string"==typeof r?[r]:Object.keys(r),scopeNameMapping:{},scopeNames:[],templateFunction:function(){}},c=_createForOfIteratorHelperLoose(s.originalScopeNames);!(i=c()).done;){var _=i.value,f=convertToValidVariableName(_);s.scopeNameMapping[_]=f,s.scopeNames.push(f)}if(POLYFILL_TEMPLATE_STRINGS.value)if(null!=(a=_context__WEBPACK_IMPORTED_MODULE_3__.globalContext.Babel)&&a.transform)e=_context__WEBPACK_IMPORTED_MODULE_3__.globalContext.Babel.transform("("+e+")",{plugins:["transform-template-literals"]}).code;else if(e.startsWith("`")&&e.endsWith("`")){var p="####",d="`"===(e=e.replace(/\\\$/g,p).replace(/^`\$\{([\s\S]+)}`$/,"String($1)").replace(/^`([^']+)`$/,"'$1'").replace(/^`([^"]+)`$/,'"$1"')).charAt(0)?"'":e.charAt(0);e=e.replace(/\$\{((([^{]*{[^}]*}[^}]*})|[^{}]+)+)}/g,d+"+($1)+"+d).replace(/^`([\s\S]+)`$/,d+"$1"+d).replace(/\n+/g,"").replace(new RegExp(p,"g"),"\\$")}try{l=_babel_runtime_helpers_construct__WEBPACK_IMPORTED_MODULE_1___default()(Function,(n?s.globalNames:[]).concat(s.scopeNames,[(t?"":"return ")+e]))}catch(r){s.error='Given expression "'+e+'" could not be compiled width given scope names "'+s.scopeNames.join('", "')+'": '+(0,_object__WEBPACK_IMPORTED_MODULE_4__.represent)(r)}if(l){var v=l.bind(o);s.templateFunction=n?function(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];return v.apply(void 0,s.globalNamesUndefinedList.concat(r))}:v}return s},evaluate=function(e,r,t,n,o){void 0===r&&(r={}),void 0===t&&(t=!1),void 0===n&&(n=!0),void 0===o&&(o={});var a=compile(e,r,t,n,o),i=a.error,l=a.originalScopeNames,u=a.scopeNames,s=a.templateFunction,c={compileError:null,runtimeError:null,error:"Not yet evaluated.",result:void 0};if(i)return c.compileError=c.error=i,c;try{c={compileError:null,runtimeError:null,error:null,result:s.apply(void 0,l.map(function(e){return r[e]}))}}catch(i){c.error=c.runtimeError='Given expression "'+e+'" could not be evaluated with given scope names "'+u.join('", "')+'": '+(0,_object__WEBPACK_IMPORTED_MODULE_4__.represent)(i)}return c},findNormalizedMatchRange=function(e,r,t,n){void 0===t&&(t=function(e){return String(e).toLowerCase()}),void 0===n&&(n=["<",">"]);var o=t(r),a=t(e),i="string"==typeof e?e:a;if(a&&o)for(var l=!1,u=0;u<i.length;u+=1)if(l)Array.isArray(n)&&i.charAt(u)===n[1]&&(l=!1);else if(Array.isArray(n)&&i.charAt(u)===n[0])l=!0;else if(t(i.substring(u)).startsWith(o)){if(1===o.length)return[u,u+1];for(var s=i.length;s>u;s-=1)if(!t(i.substring(u,s)).startsWith(o))return[u,s+1]}return null},fixKnownEncodingErrors=function(e){for(var r=0,t=FIX_ENCODING_ERROR_MAPPING;r<t.length;r++){var n=t[r],o=n[0],a=n[1];e=e.replace(new RegExp(o,"g"),a)}return e},format=function(e){for(var r=arguments.length,t=new Array(r>1?r-1:0),n=1;n<r;n++)t[n-1]=arguments[n];t.unshift(e);for(var o=0,a=0,i=t;a<i.length;a++){var l=i[a];e=e.replace(new RegExp("\\{"+String(o)+"\\}","gm"),String(l)),o+=1}return e},getEditDistance=function(e,r){for(var t=Array(r.length+1).fill(null).map(function(){return Array(e.length+1).fill(null)}),n=0;n<=e.length;n++)t[0][n]=n;for(var o=0;o<=r.length;o++)t[o][0]=o;for(var a=1;a<=r.length;a++)for(var i=1;i<=e.length;i++){var l=e[i-1]===r[a-1]?0:1;t[a][i]=Math.min(t[a][i-1]+1,t[a-1][i]+1,t[a-1][i-1]+l)}return t[r.length][e.length]},maskForRegularExpression=function(e){return e.replace(/([\\|.*$^+[\]()?\-{}])/g,"\\$1")},lowerCase=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},mark=function(e,r,t){if(void 0===t&&(t={}),"string"==typeof e&&null!=r&&r.length){var n=_extends({marker:'<span class="tools-mark">{1}</span>',normalizer:function(e){return String(e).toLowerCase()},skipTagDelimitedParts:["<",">"]},t);e=e.trim();for(var o,a=[],i=[].concat(r),l=0,u=_createForOfIteratorHelperLoose(i);!(o=u()).done;){var s=o.value;i[l]=n.normalizer(s).trim(),l+=1}for(var c=e,_=0,f=0;f<MAXIMAL_NUMBER_OF_ITERATIONS.value;f++){for(var p,d=null,v=void 0,b=_createForOfIteratorHelperLoose(i);!(p=b()).done;){var g=p.value;(v=findNormalizedMatchRange(c,g,n.normalizer,n.skipTagDelimitedParts))&&(!d||v[0]<d[0])&&(d=v)}if(!d){c.length&&a.push(c);break}d[0]>0&&a.push(e.substring(_,_+d[0])),a.push("string"==typeof n.marker?format(n.marker,e.substring(_+d[0],_+d[1])):n.marker(e.substring(_+d[0],_+d[1]),a)),_+=d[1],c=e.substring(_)}return"string"==typeof n.marker?a.join(""):a}return e},normalizePhoneNumber=function(e,r){if(void 0===r&&(r=!0),"string"==typeof e||"number"==typeof e){var t=String(e).trim();if(t=(t=t.replace(/^[^0-9]*\+/,"00")).replace(/([0-9].*?) *(,|o[rd]?)\.? ?-?[0-9]+$/,"$1"),r)return t.replace(/[^0-9]+/g,"");var n="(?:[ /\\-]+)";t=(t=t.replace(new RegExp("^(.+?)"+n+"?\\(0\\)"+n+"?(.+)$"),"$1-$2")).replace(new RegExp("^(.+?)"+n+"?\\((.+)\\)"+n+"?(.+)$"),"$1-$2-$3");var o=new RegExp("^(00[0-9]+)"+n+"([0-9]+)"+n+"(.+)$");if(o.test(t))t=t.replace(o,function(e,r,t,n){return r+"-"+t+"-"+sliceAllExceptNumberAndLastSeparator(n)});else{var a=function(e,r,t){return r.replace(/ +/,"")+"-"+sliceAllExceptNumberAndLastSeparator(t)};t=(o=/^([0-9 ]+)[/-](.+)$/).test(t)?t.replace(o,a):t.replace(new RegExp("^([0-9]+)"+n+"(.+)$"),a)}return t.replace(/[^0-9-]+/g,"").replace(/^-+$/,"")}return""},normalizeZipCode=function(e){return"string"==typeof e||"number"==typeof e?String(e).trim().replace(/^([^0-9]*[a-zA-Z]-)?(.+)$/,function(e,r,t){var n;return r&&(r=r.substring(r.length-2).charAt(0).toUpperCase()+"-"),(null!==(n=r)&&void 0!==n?n:"")+(null!=t?t:"").trim().replace(/[^0-9]+/g,"")}):""},parseEncodedObject=function parseEncodedObject(serializedObject,scope,name){var _evaluate;if(void 0===scope&&(scope={}),void 0===name&&(name="scope"),!readFileSync)throw new Error("File system api could not be loaded.");serializedObject.endsWith(".json")&&isFileSync(serializedObject)&&(serializedObject=readFileSync(serializedObject,{encoding:DEFAULT_ENCODING})),serializedObject=serializedObject.trim(),serializedObject.startsWith("{")||(serializedObject=eval("Buffer").from(serializedObject,"base64").toString(DEFAULT_ENCODING));var result=evaluate(serializedObject,(_evaluate={},_evaluate[name]=scope,_evaluate));return"object"==typeof result.result?result.result:null},representPhoneNumber=function(e){if(["number","string"].includes(determineType(e))&&e){var r=String(e).replace(/^(00|\+)([0-9]+)-([0-9-]+)$/,"+$2 (0) $3");return(r=(r=r.replace(/^0([1-9][0-9-]+)$/,"+49 (0) $1")).replace(/^([^-]+)-([0-9-]+)$/,"$1 / $2")).replace(/^(.*?)([0-9]+)(-?[0-9]*)$/,function(e,r,t,n){return r+(t.length%2==0?t.replace(/([0-9]{2})/g,"$1 "):t.replace(/^([0-9]{3})([0-9]+)$/,function(e,r,t){return r+" "+t.replace(/([0-9]{2})/g,"$1 ").trim()})+n).trim()}).trim()}return""},sliceAllExceptNumberAndLastSeparator=function(e){var r=/^(.*[0-9].*)-([0-9]+)$/;return r.test(e)?e.replace(r,function(e,r,t){return r.replace(/[^0-9]+/g,"")+"-"+t}):e.replace(/[^0-9]+/g,"")},normalizeDomNodeSelector=function(e,r){void 0===r&&(r="");var t="";return r&&(t=r+" "),e.startsWith(t)||e.trim().startsWith("<")||(e=t+e),e.trim()},limit=function(e,r){if(void 0===r&&(r=100),e.length<=r)return e;return e.substring(0,r-3)+"..."}},,,,,,function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__13__},,,,,,,function(e,r,t){t.r(r),t.d(r,{DATE_TIME_PATTERN_CACHE:function(){return _},dateTimeFormat:function(){return f},interpretDateTime:function(){return p},normalizeDateTime:function(){return d},sliceWeekday:function(){return v}});var n=t(13),o=t.n(n),a=t(3),i=t.n(a),l=t(0),u=t(7);function s(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(t)return(t=t.call(e)).next.bind(t);if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return c(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?c(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t<r;t++)n[t]=e[t];return n}var _=[],f=function(e,r,t,n){void 0===e&&(e="full"),void 0===r&&(r=new Date),void 0===t&&(t={}),void 0===n&&(n=l.LOCALES),"number"==typeof r&&(r*=1e3);var o=new Date(r);if(["full","long","medium","short"].includes(e))return new Intl.DateTimeFormat([].concat(n,"en-US"),i()({dateStyle:e,timeStyle:e},t)).format(o);for(var a,c={},_=s(["full","long","medium","short"]);!(a=_()).done;){var f=a.value;c[f+"Literals"]=[];var p=new Intl.DateTimeFormat([].concat(n,"en-US"),i()({dateStyle:f,timeStyle:f},t));c[f]=p.format(o);for(var d,v=s(p.formatToParts(o));!(d=v()).done;){var b=d.value;"literal"===b.type?c[f+"Literals"].push(b.value):c[""+f+(0,u.capitalize)(b.type)]=b.value}}var g=(0,u.evaluate)("`"+e+"`",c);if(g.error)throw new Error(g.error);return g.result.replace(/\s/g," ")},p=function(e,r){var t=Boolean(r),n="[0-2][0-9]:[0-6][0-9]",a="^[0-9]{4}-[01][0-9]-[0-3][0-9](?<time>(?:T"+n+"(?::[0-6][0-9](?:\\.[0-9]+)?)?(?<dateTimeTimezone>Z|(?:[+-]"+n+"))?)|(?<dateTimezone>Z|(?:[+-]"+n+")))?$",i=e.match(new RegExp(a,"i"));if(i){var l,c,f,d,b,g=new Date(e);return isNaN(g.getDate())?null:(null!==(l=null==(c=i.groups)?void 0:c.dateTimeTimezone)&&void 0!==l?l:null==(f=i.groups)?void 0:f.dateTimezone)?g:([null,void 0].includes(r)&&(t=!1),t?null!=(b=i.groups)&&b.time?new Date(g.getTime()-60*g.getTimezoneOffset()*1e3):g:null!=(d=i.groups)&&d.time?g:new Date(g.getTime()+60*g.getTimezoneOffset()*1e3))}if(e=e.replace(/^(-?)-*0*([1-9][0-9]*)$/,"$1$2"),String(parseInt(e))===e){[null,void 0].includes(r)&&(t=!0);var m=new Date(1e3*parseInt(e));return new Date(1e3*(parseInt(e)+(t?0:60*m.getTimezoneOffset())))}if(!_.length)for(var y,h="(?:0?[0-9])|(?:[1-5][0-9])|(?:60)",O="(?<second>"+h+")",E="(?<minute>"+h+")",A="(?<hour>(?:0?[0-9])|(?:1[0-9])|(?:2[0-4]))",I="(?<noonIndicator> *(?:(?:a\\.?m\\.?)|(?:p\\.?m\\.?)))?",w="(?<day>(?:0?[1-9])|(?:[1-2][0-9])|(?:3[01]))",j="(?<month>(?:0?[1-9])|(?:1[0-2]))",x="(?<year>(?:0?[1-9])|(?:[1-9][0-9]+))",P={},L=s(["t"," "]);!(y=L()).done;)for(var S,T=y.value,M=s([":","/","-"," "]);!(S=M()).done;)for(var N=S.value,R=0,D=[A+(N+"+")+E+I,A+(N+"+")+E+N+"+"+O+I,A+(N+"+")+E+N+"+"+O+N+"+(?<millisecond>(?:0{0,3}[0-9])|(?:0{0,2}[1-9]{2})|(?:0?[1-9]{3})|(?:1[1-9]{3}))"+I,A+I];R<D.length;R++)for(var $=D[R],C=0,k=[{delimiter:["/","-"," "],pattern:[j+"${delimiter}"+w+"${delimiter}"+x,j+"${delimiter}"+w+" +"+x,x+"${delimiter}"+j+"${delimiter}"+w,x+" +"+j+"${delimiter}"+w,j+"${delimiter}"+w+"${delimiter}"+x+T+"+"+$,j+"${delimiter}"+w+" +"+x+T+"+"+$,$+(T+"+")+j+"${delimiter}"+w+"${delimiter}"+x,$+(T+"+")+j+"${delimiter}"+w+" +"+x,x+"${delimiter}"+j+"${delimiter}"+w+T+"+"+$,x+" +"+j+"${delimiter}"+w+T+"+"+$,$+(T+"+")+x+"${delimiter}"+j+"${delimiter}"+w,$+(T+"+")+x+" +"+j+"${delimiter}"+w]},{delimiter:"\\.",pattern:[w+"${delimiter}"+j+"${delimiter}"+x,w+"${delimiter}"+j+" +"+x,x+"${delimiter}"+w+"${delimiter}"+j,x+" +"+w+"${delimiter}"+j,w+"${delimiter}"+j+"${delimiter}"+x+T+"+"+$,w+"${delimiter}"+j+" +"+x+T+"+"+$,$+(T+"+")+w+"${delimiter}"+j+"${delimiter}"+x,$+(T+"+")+w+"${delimiter}"+j+" +"+x,x+"${delimiter}"+w+"${delimiter}"+j+T+"+"+$,x+" +"+w+"${delimiter}"+j+T+"+"+$,$+(T+"+")+x+"${delimiter}"+w+"${delimiter}"+j,$+(T+"+")+x+" +"+w+"${delimiter}"+j]},{pattern:$}];C<k.length;C++)for(var F,B=k[C],q=s([].concat(Object.prototype.hasOwnProperty.call(B,"delimiter")?B.delimiter:"-"));!(F=q()).done;)for(var U,V=F.value,z=s([].concat(B.pattern));!(U=z()).done;){var W=U.value,H=(0,u.evaluate)("`^"+W+"$`",{delimiter:V+"+"}).result;H&&!Object.prototype.hasOwnProperty.call(P,H)&&(P[H]=!0,_.push(new RegExp(H)))}e=(e=e.toLowerCase()).replace(/([^0-9a-z])[^0-9a-z]+/g,"$1");for(var K=1,G=0,Y=[["jan","january?","janvier"],["feb","february?","février"],["m(?:a|ae|ä)r","m(?:a|ae|ä)r(?:ch|s|z)"],["ap[rv]","a[pv]ril"],["ma[iy]"],["ju[ein]","jui?n[ei]?"],["jul","jul[iy]","juillet"],["aug","august","août"],["sep","septemb(?:er|re)"],["o[ck]t","o[ck]tob(?:er|re)"],["nov","novemb(?:er|re)"],["de[cz]","d[eé][cz]emb(?:er|re)"]];G<Y.length;G++){for(var X,Z=!1,Q=s(Y[G]);!(X=Q()).done;){var J=X.value,ee=new RegExp("(^|[^a-z])"+J+"([^a-z]|$)");if(ee.test(e)){e=e.replace(ee,"$1"+String(K)+"$2"),Z=!0;break}}if(Z)break;K+=1}e=v(e);var re=/(.+)\+(.+)$/,te=re.exec(e);te&&(e=e.replace(re,"$1"));for(var ne,oe=s(["","Uhr","o'clock"]);!(ne=oe()).done;){var ae=ne.value;e=e.replace(ae,"")}e=e.trim();for(var ie,le=function(){var r=se[ue],n=null;try{n=e.match(r)}catch(e){}if(n){var a,i=function(e,r){return void 0===r&&(r=0),n.groups&&e in n.groups?parseInt(n.groups[e],10):r},l=[i("year",1970),i("month",1)-1,i("day",1),i("hour"),i("minute"),i("second"),i("millisecond")];null!=(a=n.groups)&&a.noonIndicator&&"pm"===n.groups.noonIndicator.trim().replace(/\./g,"")&&l[3]<=12&&(l[3]+=12);var u=null;if(te){var s=p(te[2],!0);s&&(u=new Date(Date.UTC.apply(Date,l)-s.getTime()))}return u||(u=t?new Date(Date.UTC.apply(Date,l)):o()(Date,l)),isNaN(u.getDate())?{v:null}:{v:u}}},ue=0,se=_;ue<se.length;ue++)if(ie=le())return ie.v;return null},d=function(e,r){void 0===e&&(e=null);var t=Boolean(r);if(null===e)return new Date;if("string"==typeof e){if(/^.*(?:(?:[0-9]{1,4}[^0-9]){2}|[0-9]{1,4}[^0-9.]).*$/.test(e))return e=p(e,t);var n=parseFloat(e);String(n)===e&&(e=n)}if("number"==typeof e){[null,void 0].includes(r)&&(t=!0);var o=new Date(1e3*e);return new Date(1e3*(e+(t?0:60*o.getTimezoneOffset())))}var a=new Date(e);return isNaN(a.getDate())?null:a},v=function(e){var r=/[a-z]{2}\.+ *([^ ].*)$/i;return r.exec(e)?e.replace(r,"$1"):e}}],__webpack_module_cache__={};function __webpack_require__(e){var r=__webpack_module_cache__[e];if(void 0!==r)return r.exports;var t=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e](t,t.exports,__webpack_require__),t.loaded=!0,t.exports}__webpack_require__.c=__webpack_module_cache__,__webpack_require__.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=function(e,r){for(var t in r)__webpack_require__.o(r,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},__webpack_require__.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__(20);return __webpack_exports__}()});
1
+ // #!/usr/bin/env babel-node
2
+ // -*- coding: utf-8 -*-
3
+ /** @module dateTime */
4
+ 'use strict';
5
+
6
+ /* !
7
+ region header
8
+ [Project page](https://torben.website/clientnode)
9
+
10
+ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
11
+
12
+ License
13
+ -------
14
+
15
+ This library written by Torben Sickert stands under a creative commons
16
+ naming 3.0 unported license.
17
+ See https://creativecommons.org/licenses/by/3.0/deed.de
18
+ endregion
19
+ */
20
+ import "core-js/modules/es.array.includes.js";
21
+ import "core-js/modules/es.array.push.js";
22
+ import { LOCALES } from "./constants.js";
23
+ import { capitalize, evaluate } from "./string.js";
24
+
25
+ // Caches compiled date tine pattern regular expressions.
26
+ export const DATE_TIME_PATTERN_CACHE = [];
27
+
28
+ /**
29
+ * Formats given date or current via given format specification.
30
+ * @param format - Format specification.
31
+ * @param dateTime - Date time to format.
32
+ * @param options - Additional configuration options for "Intl.DateTimeFormat".
33
+ * @param locales - Locale or list of locales to use for formatting. First one
34
+ * take precedence of latter ones.
35
+ * @returns Formatted date time string.
36
+ */
37
+ export const dateTimeFormat = (format = 'full', dateTime = new Date(), options = {}, locales = LOCALES) => {
38
+ if (typeof dateTime === 'number')
39
+ /*
40
+ NOTE: "Date" constructor expects milliseconds as unit instead
41
+ of more common used seconds.
42
+ */
43
+ dateTime *= 1000;
44
+ const normalizedDateTime = new Date(dateTime);
45
+ if (['full', 'long', 'medium', 'short'].includes(format)) return new Intl.DateTimeFormat([].concat(locales, 'en-US'), {
46
+ dateStyle: format,
47
+ timeStyle: format,
48
+ ...options
49
+ }).format(normalizedDateTime);
50
+ const scope = {};
51
+ for (const style of ['full', 'long', 'medium', 'short']) {
52
+ scope[`${style}Literals`] = [];
53
+ const dateTimeFormat = new Intl.DateTimeFormat([].concat(locales, 'en-US'), {
54
+ dateStyle: style,
55
+ timeStyle: style,
56
+ ...options
57
+ });
58
+ scope[style] = dateTimeFormat.format(normalizedDateTime);
59
+ for (const item of dateTimeFormat.formatToParts(normalizedDateTime)) if (item.type === 'literal') scope[`${style}Literals`].push(item.value);else scope[`${style}${capitalize(item.type)}`] = item.value;
60
+ }
61
+ const evaluated = evaluate(`\`${format}\``, scope);
62
+ if (evaluated.error) throw new Error(evaluated.error);
63
+
64
+ /*
65
+ NOTE: For some reason hidden symbols are injected differently on
66
+ different platforms, so we have to normalize for predictable
67
+ testing.
68
+ */
69
+ return evaluated.result.replace(/\s/g, ' ');
70
+ };
71
+ /**
72
+ * Interprets given content string as date time.
73
+ * @param value - Date time string to interpret.
74
+ * @param interpretAsUTC - Identifies if given date should be interpreted as
75
+ * utc. If not set given strings will be interpreted as it is depended on
76
+ * given format and number like string as utc.
77
+ * @returns Interpret date time object.
78
+ */
79
+ export const interpretDateTime = (value, interpretAsUTC) => {
80
+ let resolvedInterpretAsUTC = Boolean(interpretAsUTC);
81
+ // region iso format
82
+ /*
83
+ Let's first check if we have a simplified iso 8602 date time
84
+ representation like:
85
+ "YYYY-MM-DDTHH:mm:ss.sssZ" or "YYYY-MM-DDTHH:mm:ss.sss+HH:mm".
86
+ Please note for the native "Date" implementation:
87
+ When the time zone offset is absent, date-only forms are interpreted as
88
+ a UTC time and date-time forms are interpreted as local time. This is
89
+ due to a historical spec error that was not consistent with ISO 8601
90
+ but could not be changed due to web compatibility.
91
+ */
92
+ const hourAndMinutesPattern = '[0-2][0-9]:[0-6][0-9]';
93
+ const pattern = '^' + (
94
+ // Year, month and day:
95
+ '[0-9]{4}-[01][0-9]-[0-3][0-9]' + '(?<time>' + ('(?:T' + (hourAndMinutesPattern + '(?:' + (
96
+ // Seconds:
97
+ ':[0-6][0-9]' +
98
+ // Milliseconds:
99
+ '(?:\\.[0-9]+)?') + ')?' +
100
+ // Timezone definition:
101
+ `(?<dateTimeTimezone>Z|(?:[+-]${hourAndMinutesPattern}))?`) + ')' + '|' +
102
+ // Timezone definition:
103
+ `(?<dateTimezone>Z|(?:[+-]${hourAndMinutesPattern}))`) + ')?') + '$';
104
+ const match = value.match(new RegExp(pattern, 'i'));
105
+ if (match) {
106
+ const result = new Date(value);
107
+ if (isNaN(result.getDate())) return null;
108
+ const timezone = match.groups?.dateTimeTimezone ?? match.groups?.dateTimezone;
109
+ if (!timezone) {
110
+ if ([null, undefined].includes(interpretAsUTC)) resolvedInterpretAsUTC = false;
111
+ if (resolvedInterpretAsUTC) {
112
+ if (!match.groups?.time)
113
+ /*
114
+ NOTE: Date only strings will be interpreted as UTC
115
+ already.
116
+ */
117
+ return result;
118
+
119
+ // local to utc
120
+ return new Date(result.getTime() - result.getTimezoneOffset() * 60 * 1000);
121
+ }
122
+ if (match.groups?.time)
123
+ /*
124
+ NOTE: Date time strings will be interpreted as local
125
+ already.
126
+ */
127
+ return result;
128
+
129
+ // utc to local
130
+ return new Date(result.getTime() + result.getTimezoneOffset() * 60 * 1000);
131
+ }
132
+ return result;
133
+ }
134
+ // endregion
135
+ value = value.replace(/^(-?)-*0*([1-9][0-9]*)$/, '$1$2');
136
+ // region interpret integer number
137
+ /*
138
+ NOTE: Do not use "parseFloat" since we want to interpret delimiter as
139
+ date delimiters.
140
+ */
141
+ if (String(parseInt(value)) === value) {
142
+ if ([null, undefined].includes(interpretAsUTC)) resolvedInterpretAsUTC = true;
143
+ const roughDateForTimeZoneDetermining = new Date(parseInt(value) * 1000);
144
+ return new Date((parseInt(value) + (resolvedInterpretAsUTC ? 0 : roughDateForTimeZoneDetermining.getTimezoneOffset() * 60)) * 1000);
145
+ }
146
+ // endregion
147
+ if (!DATE_TIME_PATTERN_CACHE.length) {
148
+ // region pre-compile regular expressions
149
+ /// region pattern
150
+ const millisecondPattern = '(?<millisecond>(?:0{0,3}[0-9])|(?:0{0,2}[1-9]{2})|' + '(?:0?[1-9]{3})|(?:1[1-9]{3}))';
151
+ const minuteAndSecondPattern = '(?:0?[0-9])|(?:[1-5][0-9])|(?:60)';
152
+ const secondPattern = `(?<second>${minuteAndSecondPattern})`;
153
+ const minutePattern = `(?<minute>${minuteAndSecondPattern})`;
154
+ const hourPattern = '(?<hour>(?:0?[0-9])|(?:1[0-9])|(?:2[0-4]))';
155
+ const noonIndicatorPattern = '(?<noonIndicator> *(?:(?:a\\.?m\\.?)|(?:p\\.?m\\.?)))?';
156
+ const dayPattern = '(?<day>(?:0?[1-9])|(?:[1-2][0-9])|(?:3[01]))';
157
+ const monthPattern = '(?<month>(?:0?[1-9])|(?:1[0-2]))';
158
+ const yearPattern = '(?<year>(?:0?[1-9])|(?:[1-9][0-9]+))';
159
+ /// endregion
160
+ const patternPresenceCache = {};
161
+ for (const timeDelimiter of ['t', ' ']) for (const timeComponentDelimiter of [':', '/', '-', ' ']) for (const timeFormat of [hourPattern + `${timeComponentDelimiter}+` + minutePattern + noonIndicatorPattern, hourPattern + `${timeComponentDelimiter}+` + minutePattern + `${timeComponentDelimiter}+` + secondPattern + noonIndicatorPattern, hourPattern + `${timeComponentDelimiter}+` + minutePattern + `${timeComponentDelimiter}+` + secondPattern + `${timeComponentDelimiter}+` + millisecondPattern + noonIndicatorPattern, hourPattern + noonIndicatorPattern]) for (const dateTimeFormat of [{
162
+ delimiter: ['/', '-', ' '],
163
+ pattern: [monthPattern + '${delimiter}' + dayPattern + '${delimiter}' + yearPattern, monthPattern + '${delimiter}' + dayPattern + ' +' + yearPattern, yearPattern + '${delimiter}' + monthPattern + '${delimiter}' + dayPattern, yearPattern + ' +' + monthPattern + '${delimiter}' + dayPattern, monthPattern + '${delimiter}' + dayPattern + '${delimiter}' + yearPattern + `${timeDelimiter}+` + timeFormat, monthPattern + '${delimiter}' + dayPattern + ' +' + yearPattern + `${timeDelimiter}+` + timeFormat, timeFormat + `${timeDelimiter}+` + monthPattern + '${delimiter}' + dayPattern + '${delimiter}' + yearPattern, timeFormat + `${timeDelimiter}+` + monthPattern + '${delimiter}' + dayPattern + ' +' + yearPattern, yearPattern + '${delimiter}' + monthPattern + '${delimiter}' + dayPattern + `${timeDelimiter}+` + timeFormat, yearPattern + ' +' + monthPattern + '${delimiter}' + dayPattern + `${timeDelimiter}+` + timeFormat, timeFormat + `${timeDelimiter}+` + yearPattern + '${delimiter}' + monthPattern + '${delimiter}' + dayPattern, timeFormat + `${timeDelimiter}+` + yearPattern + ' +' + monthPattern + '${delimiter}' + dayPattern]
164
+ }, {
165
+ delimiter: '\\.',
166
+ pattern: [dayPattern + '${delimiter}' + monthPattern + '${delimiter}' + yearPattern, dayPattern + '${delimiter}' + monthPattern + ' +' + yearPattern, yearPattern + '${delimiter}' + dayPattern + '${delimiter}' + monthPattern, yearPattern + ' +' + dayPattern + '${delimiter}' + monthPattern, dayPattern + '${delimiter}' + monthPattern + '${delimiter}' + yearPattern + `${timeDelimiter}+` + timeFormat, dayPattern + '${delimiter}' + monthPattern + ' +' + yearPattern + `${timeDelimiter}+` + timeFormat, timeFormat + `${timeDelimiter}+` + dayPattern + '${delimiter}' + monthPattern + '${delimiter}' + yearPattern, timeFormat + `${timeDelimiter}+` + dayPattern + '${delimiter}' + monthPattern + ' +' + yearPattern, yearPattern + '${delimiter}' + dayPattern + '${delimiter}' + monthPattern + `${timeDelimiter}+` + timeFormat, yearPattern + ' +' + dayPattern + '${delimiter}' + monthPattern + `${timeDelimiter}+` + timeFormat, timeFormat + `${timeDelimiter}+` + yearPattern + '${delimiter}' + dayPattern + '${delimiter}' + monthPattern, timeFormat + `${timeDelimiter}+` + yearPattern + ' +' + dayPattern + '${delimiter}' + monthPattern]
167
+ }, {
168
+ pattern: timeFormat
169
+ }]) for (const delimiter of [].concat(Object.prototype.hasOwnProperty.call(dateTimeFormat, 'delimiter') ? dateTimeFormat.delimiter : '-')) for (const pattern of [].concat(dateTimeFormat.pattern)) {
170
+ const evaluatedPattern = evaluate(`\`^${pattern}$\``, {
171
+ delimiter: `${delimiter}+`
172
+ }).result;
173
+ if (evaluatedPattern && !Object.prototype.hasOwnProperty.call(patternPresenceCache, evaluatedPattern)) {
174
+ patternPresenceCache[evaluatedPattern] = true;
175
+ DATE_TIME_PATTERN_CACHE.push(new RegExp(evaluatedPattern));
176
+ }
177
+ }
178
+ // endregion
179
+ }
180
+ // region pre-process
181
+ // NOTE: All patterns can assume lower cased strings.
182
+ value = value.toLowerCase();
183
+ /*
184
+ Reduce each sequence on none alphanumeric symbols to the first
185
+ symbol (consolidate delimiters).
186
+ */
187
+ value = value.replace(/([^0-9a-z])[^0-9a-z]+/g, '$1');
188
+ let monthNumber = 1;
189
+ for (const monthVariation of [['jan', 'january?', 'janvier'], ['feb', 'february?', 'février'], ['m(?:a|ae|ä)r', 'm(?:a|ae|ä)r(?:ch|s|z)'], ['ap[rv]', 'a[pv]ril'], ['ma[iy]'], ['ju[ein]', 'jui?n[ei]?'], ['jul', 'jul[iy]', 'juillet'], ['aug', 'august', 'août'], ['sep', 'septemb(?:er|re)'], ['o[ck]t', 'o[ck]tob(?:er|re)'], ['nov', 'novemb(?:er|re)'], ['de[cz]', 'd[eé][cz]emb(?:er|re)']]) {
190
+ let matched = false;
191
+ for (const name of monthVariation) {
192
+ const pattern = new RegExp(`(^|[^a-z])${name}([^a-z]|$)`);
193
+ if (pattern.test(value)) {
194
+ value = value.replace(pattern, `$1${String(monthNumber)}$2`);
195
+ matched = true;
196
+ break;
197
+ }
198
+ }
199
+ if (matched) break;
200
+ monthNumber += 1;
201
+ }
202
+ value = sliceWeekday(value);
203
+ const timezonePattern = /(.+)\+(.+)$/;
204
+ const timezoneMatch = timezonePattern.exec(value);
205
+ if (timezoneMatch) value = value.replace(timezonePattern, '$1');
206
+ for (const wordToSlice of ['', 'Uhr', `o'clock`]) value = value.replace(wordToSlice, '');
207
+ value = value.trim();
208
+ // endregion
209
+ // region try to match a pattern
210
+ for (const dateTimePattern of DATE_TIME_PATTERN_CACHE) {
211
+ let match = null;
212
+ try {
213
+ match = value.match(dateTimePattern);
214
+ } catch {
215
+ // Continue regardless of an error.
216
+ }
217
+ if (match) {
218
+ const get = (name, fallback = 0) => match.groups && name in match.groups ? parseInt(match.groups[name], 10) : fallback;
219
+ const parameter = [get('year', 1970), get('month', 1) - 1, get('day', 1), get('hour'), get('minute'), get('second'), get('millisecond')];
220
+ if (match.groups?.noonIndicator && match.groups.noonIndicator.trim().replace(/\./g, '') === 'pm' && parameter[3] <= 12) parameter[3] += 12;
221
+ let result = null;
222
+ if (timezoneMatch) {
223
+ const timeShift = interpretDateTime(timezoneMatch[2], true);
224
+ if (timeShift) result = new Date(Date.UTC(...parameter) - timeShift.getTime());
225
+ }
226
+ if (!result) if (resolvedInterpretAsUTC) result = new Date(Date.UTC(...parameter));else result = new Date(...parameter);
227
+ if (isNaN(result.getDate())) return null;
228
+ return result;
229
+ }
230
+ }
231
+ // endregion
232
+ return null;
233
+ };
234
+ /**
235
+ * Interprets a date object from given artefact.
236
+ * @param value - To interpret.
237
+ * @param interpretAsUTC - Identifies if given date should be interpreted as
238
+ * utc. If not set given strings will be interpreted as it is dependent on
239
+ * given format and numbers as utc.
240
+ * @returns Interpreted date object or "null" if given value couldn't be
241
+ * interpreted.
242
+ */
243
+ export const normalizeDateTime = (value = null, interpretAsUTC) => {
244
+ let resolvedInterpretAsUTC = Boolean(interpretAsUTC);
245
+ if (value === null) return new Date();
246
+ if (typeof value === 'string') {
247
+ /*
248
+ We make a simple pre-check to determine if it could be a date like
249
+ representation. Idea: There should be at least some numbers and
250
+ separators.
251
+ */
252
+ if (/^.*(?:(?:[0-9]{1,4}[^0-9]){2}|[0-9]{1,4}[^0-9.]).*$/.test(value)) {
253
+ value = interpretDateTime(value, resolvedInterpretAsUTC);
254
+ if (value === null) return value;
255
+ return value;
256
+ }
257
+ const floatRepresentation = parseFloat(value);
258
+ if (String(floatRepresentation) === value) value = floatRepresentation;
259
+ }
260
+ if (typeof value === 'number') {
261
+ if ([null, undefined].includes(interpretAsUTC)) resolvedInterpretAsUTC = true;
262
+ const roughDateForTimeZoneDetermining = new Date(value * 1000);
263
+ return new Date((value + (resolvedInterpretAsUTC ? 0 : roughDateForTimeZoneDetermining.getTimezoneOffset() * 60)) * 1000);
264
+ }
265
+
266
+ // Try to deal with types which are either numbers or strings.
267
+ const result = new Date(value);
268
+ if (isNaN(result.getDate())) return null;
269
+ return result;
270
+ };
271
+ /**
272
+ * Slice weekday from given date representation.
273
+ * @param value - String to process.
274
+ * @returns Sliced given string.
275
+ */
276
+ export const sliceWeekday = value => {
277
+ const weekdayPattern = /[a-z]{2}\.+ *([^ ].*)$/i;
278
+ const weekdayMatch = weekdayPattern.exec(value);
279
+ if (weekdayMatch) return value.replace(weekdayPattern, '$1');
280
+ return value;
281
+ };
282
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2RhdGV0aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vICMhL3Vzci9iaW4vZW52IGJhYmVsLW5vZGVcbi8vIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLVxuLyoqIEBtb2R1bGUgZGF0ZVRpbWUgKi9cbid1c2Ugc3RyaWN0J1xuLyogIVxuICAgIHJlZ2lvbiBoZWFkZXJcbiAgICBbUHJvamVjdCBwYWdlXShodHRwczovL3RvcmJlbi53ZWJzaXRlL2NsaWVudG5vZGUpXG5cbiAgICBDb3B5cmlnaHQgVG9yYmVuIFNpY2tlcnQgKGluZm9bXCJ+YXR+XCJddG9yYmVuLndlYnNpdGUpIDE2LjEyLjIwMTJcblxuICAgIExpY2Vuc2VcbiAgICAtLS0tLS0tXG5cbiAgICBUaGlzIGxpYnJhcnkgd3JpdHRlbiBieSBUb3JiZW4gU2lja2VydCBzdGFuZHMgdW5kZXIgYSBjcmVhdGl2ZSBjb21tb25zXG4gICAgbmFtaW5nIDMuMCB1bnBvcnRlZCBsaWNlbnNlLlxuICAgIFNlZSBodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMy4wL2RlZWQuZGVcbiAgICBlbmRyZWdpb25cbiovXG5pbXBvcnQgdHlwZSB7XG4gICAgRXZhbHVhdGlvblJlc3VsdCxcbiAgICBNYXBwaW5nLFxuICAgIFBvc2l0aXZlRXZhbHVhdGlvblJlc3VsdCxcbiAgICBTZWNvbmRQYXJhbWV0ZXJcbn0gZnJvbSAnLi90eXBlJ1xuXG5pbXBvcnQge0xPQ0FMRVN9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHtjYXBpdGFsaXplLCBldmFsdWF0ZX0gZnJvbSAnLi9zdHJpbmcnXG5cbi8vIENhY2hlcyBjb21waWxlZCBkYXRlIHRpbmUgcGF0dGVybiByZWd1bGFyIGV4cHJlc3Npb25zLlxuZXhwb3J0IGNvbnN0IERBVEVfVElNRV9QQVRURVJOX0NBQ0hFOiBBcnJheTxSZWdFeHA+ID0gW11cblxuLyoqXG4gKiBGb3JtYXRzIGdpdmVuIGRhdGUgb3IgY3VycmVudCB2aWEgZ2l2ZW4gZm9ybWF0IHNwZWNpZmljYXRpb24uXG4gKiBAcGFyYW0gZm9ybWF0IC0gRm9ybWF0IHNwZWNpZmljYXRpb24uXG4gKiBAcGFyYW0gZGF0ZVRpbWUgLSBEYXRlIHRpbWUgdG8gZm9ybWF0LlxuICogQHBhcmFtIG9wdGlvbnMgLSBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgXCJJbnRsLkRhdGVUaW1lRm9ybWF0XCIuXG4gKiBAcGFyYW0gbG9jYWxlcyAtIExvY2FsZSBvciBsaXN0IG9mIGxvY2FsZXMgdG8gdXNlIGZvciBmb3JtYXR0aW5nLiBGaXJzdCBvbmVcbiAqIHRha2UgcHJlY2VkZW5jZSBvZiBsYXR0ZXIgb25lcy5cbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBkYXRlIHRpbWUgc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgZGF0ZVRpbWVGb3JtYXQgPSAoXG4gICAgZm9ybWF0ID0gJ2Z1bGwnLFxuICAgIGRhdGVUaW1lOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nID0gbmV3IERhdGUoKSxcbiAgICBvcHRpb25zOiBTZWNvbmRQYXJhbWV0ZXI8dHlwZW9mIEludGwuRGF0ZVRpbWVGb3JtYXQ+ID0ge30sXG4gICAgbG9jYWxlczogQXJyYXk8c3RyaW5nPiB8IHN0cmluZyA9IExPQ0FMRVNcbik6IHN0cmluZyA9PiB7XG4gICAgaWYgKHR5cGVvZiBkYXRlVGltZSA9PT0gJ251bWJlcicpXG4gICAgICAgIC8qXG4gICAgICAgICAgICBOT1RFOiBcIkRhdGVcIiBjb25zdHJ1Y3RvciBleHBlY3RzIG1pbGxpc2Vjb25kcyBhcyB1bml0IGluc3RlYWRcbiAgICAgICAgICAgIG9mIG1vcmUgY29tbW9uIHVzZWQgc2Vjb25kcy5cbiAgICAgICAgKi9cbiAgICAgICAgZGF0ZVRpbWUgKj0gMTAwMFxuXG4gICAgY29uc3Qgbm9ybWFsaXplZERhdGVUaW1lOiBEYXRlID0gbmV3IERhdGUoZGF0ZVRpbWUpXG5cbiAgICBpZiAoWydmdWxsJywgJ2xvbmcnLCAnbWVkaXVtJywgJ3Nob3J0J10uaW5jbHVkZXMoZm9ybWF0KSlcbiAgICAgICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFxuICAgICAgICAgICAgKFtdIGFzIEFycmF5PHN0cmluZz4pLmNvbmNhdChsb2NhbGVzLCAnZW4tVVMnKSxcbiAgICAgICAgICAgIHtkYXRlU3R5bGU6IGZvcm1hdCwgdGltZVN0eWxlOiBmb3JtYXQsIC4uLm9wdGlvbnN9IGFzXG4gICAgICAgICAgICAgICAgU2Vjb25kUGFyYW1ldGVyPHR5cGVvZiBJbnRsLkRhdGVUaW1lRm9ybWF0PlxuICAgICAgICApXG4gICAgICAgICAgICAuZm9ybWF0KG5vcm1hbGl6ZWREYXRlVGltZSlcblxuICAgIGNvbnN0IHNjb3BlOiBNYXBwaW5nPEFycmF5PHN0cmluZz4gfCBzdHJpbmc+ID0ge31cbiAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIFsnZnVsbCcsICdsb25nJywgJ21lZGl1bScsICdzaG9ydCddIGFzIGNvbnN0KSB7XG4gICAgICAgIHNjb3BlW2Ake3N0eWxlfUxpdGVyYWxzYF0gPSBbXVxuXG4gICAgICAgIGNvbnN0IGRhdGVUaW1lRm9ybWF0OiBJbnRsLkRhdGVUaW1lRm9ybWF0ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoXG4gICAgICAgICAgICAoW10gYXMgQXJyYXk8c3RyaW5nPikuY29uY2F0KGxvY2FsZXMsICdlbi1VUycpLFxuICAgICAgICAgICAge2RhdGVTdHlsZTogc3R5bGUsIHRpbWVTdHlsZTogc3R5bGUsIC4uLm9wdGlvbnN9XG4gICAgICAgIClcblxuICAgICAgICBzY29wZVtzdHlsZV0gPSBkYXRlVGltZUZvcm1hdC5mb3JtYXQobm9ybWFsaXplZERhdGVUaW1lKVxuXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRlVGltZUZvcm1hdC5mb3JtYXRUb1BhcnRzKFxuICAgICAgICAgICAgbm9ybWFsaXplZERhdGVUaW1lXG4gICAgICAgICkpXG4gICAgICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnbGl0ZXJhbCcpXG4gICAgICAgICAgICAgICAgKHNjb3BlW2Ake3N0eWxlfUxpdGVyYWxzYF0gYXMgQXJyYXk8c3RyaW5nPilcbiAgICAgICAgICAgICAgICAgICAgLnB1c2goaXRlbS52YWx1ZSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBzY29wZVtgJHtzdHlsZX0ke2NhcGl0YWxpemUoaXRlbS50eXBlKX1gXSA9IGl0ZW0udmFsdWVcbiAgICB9XG5cbiAgICBjb25zdCBldmFsdWF0ZWQ6IEV2YWx1YXRpb25SZXN1bHQgPSBldmFsdWF0ZShgXFxgJHtmb3JtYXR9XFxgYCwgc2NvcGUpXG4gICAgaWYgKGV2YWx1YXRlZC5lcnJvcilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGV2YWx1YXRlZC5lcnJvcilcblxuICAgIC8qXG4gICAgICAgIE5PVEU6IEZvciBzb21lIHJlYXNvbiBoaWRkZW4gc3ltYm9scyBhcmUgaW5qZWN0ZWQgZGlmZmVyZW50bHkgb25cbiAgICAgICAgZGlmZmVyZW50IHBsYXRmb3Jtcywgc28gd2UgaGF2ZSB0byBub3JtYWxpemUgZm9yIHByZWRpY3RhYmxlXG4gICAgICAgIHRlc3RpbmcuXG4gICAgKi9cbiAgICByZXR1cm4gKGV2YWx1YXRlZCBhcyBQb3NpdGl2ZUV2YWx1YXRpb25SZXN1bHQpXG4gICAgICAgIC5yZXN1bHQucmVwbGFjZSgvXFxzL2csICcgJylcbn1cbi8qKlxuICogSW50ZXJwcmV0cyBnaXZlbiBjb250ZW50IHN0cmluZyBhcyBkYXRlIHRpbWUuXG4gKiBAcGFyYW0gdmFsdWUgLSBEYXRlIHRpbWUgc3RyaW5nIHRvIGludGVycHJldC5cbiAqIEBwYXJhbSBpbnRlcnByZXRBc1VUQyAtIElkZW50aWZpZXMgaWYgZ2l2ZW4gZGF0ZSBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXNcbiAqIHV0Yy4gSWYgbm90IHNldCBnaXZlbiBzdHJpbmdzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgaXQgaXMgZGVwZW5kZWQgb25cbiAqIGdpdmVuIGZvcm1hdCBhbmQgbnVtYmVyIGxpa2Ugc3RyaW5nIGFzIHV0Yy5cbiAqIEByZXR1cm5zIEludGVycHJldCBkYXRlIHRpbWUgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgaW50ZXJwcmV0RGF0ZVRpbWUgPSAoXG4gICAgdmFsdWU6IHN0cmluZywgaW50ZXJwcmV0QXNVVEM/OiBib29sZWFuIHwgbnVsbFxuKTogRGF0ZSB8IG51bGwgPT4ge1xuICAgIGxldCByZXNvbHZlZEludGVycHJldEFzVVRDID0gQm9vbGVhbihpbnRlcnByZXRBc1VUQylcbiAgICAvLyByZWdpb24gaXNvIGZvcm1hdFxuICAgIC8qXG4gICAgICAgIExldCdzIGZpcnN0IGNoZWNrIGlmIHdlIGhhdmUgYSBzaW1wbGlmaWVkIGlzbyA4NjAyIGRhdGUgdGltZVxuICAgICAgICByZXByZXNlbnRhdGlvbiBsaWtlOlxuXG4gICAgICAgIFwiWVlZWS1NTS1ERFRISDptbTpzcy5zc3NaXCIgb3IgXCJZWVlZLU1NLUREVEhIOm1tOnNzLnNzcytISDptbVwiLlxuXG4gICAgICAgIFBsZWFzZSBub3RlIGZvciB0aGUgbmF0aXZlIFwiRGF0ZVwiIGltcGxlbWVudGF0aW9uOlxuXG4gICAgICAgIFdoZW4gdGhlIHRpbWUgem9uZSBvZmZzZXQgaXMgYWJzZW50LCBkYXRlLW9ubHkgZm9ybXMgYXJlIGludGVycHJldGVkIGFzXG4gICAgICAgIGEgVVRDIHRpbWUgYW5kIGRhdGUtdGltZSBmb3JtcyBhcmUgaW50ZXJwcmV0ZWQgYXMgbG9jYWwgdGltZS4gVGhpcyBpc1xuICAgICAgICBkdWUgdG8gYSBoaXN0b3JpY2FsIHNwZWMgZXJyb3IgdGhhdCB3YXMgbm90IGNvbnNpc3RlbnQgd2l0aCBJU08gODYwMVxuICAgICAgICBidXQgY291bGQgbm90IGJlIGNoYW5nZWQgZHVlIHRvIHdlYiBjb21wYXRpYmlsaXR5LlxuICAgICovXG4gICAgY29uc3QgaG91ckFuZE1pbnV0ZXNQYXR0ZXJuID0gJ1swLTJdWzAtOV06WzAtNl1bMC05XSdcbiAgICBjb25zdCBwYXR0ZXJuID0gJ14nICsgKFxuICAgICAgICAvLyBZZWFyLCBtb250aCBhbmQgZGF5OlxuICAgICAgICAnWzAtOV17NH0tWzAxXVswLTldLVswLTNdWzAtOV0nICtcbiAgICAgICAgJyg/PHRpbWU+JyArIChcbiAgICAgICAgICAgICcoPzpUJyArIChcbiAgICAgICAgICAgICAgICBob3VyQW5kTWludXRlc1BhdHRlcm4gK1xuICAgICAgICAgICAgICAgICcoPzonICsgKFxuICAgICAgICAgICAgICAgICAgICAvLyBTZWNvbmRzOlxuICAgICAgICAgICAgICAgICAgICAnOlswLTZdWzAtOV0nICtcbiAgICAgICAgICAgICAgICAgICAgLy8gTWlsbGlzZWNvbmRzOlxuICAgICAgICAgICAgICAgICAgICAnKD86XFxcXC5bMC05XSspPydcbiAgICAgICAgICAgICAgICApICsgJyk/JyArXG4gICAgICAgICAgICAgICAgLy8gVGltZXpvbmUgZGVmaW5pdGlvbjpcbiAgICAgICAgICAgICAgICBgKD88ZGF0ZVRpbWVUaW1lem9uZT5afCg/OlsrLV0ke2hvdXJBbmRNaW51dGVzUGF0dGVybn0pKT9gXG4gICAgICAgICAgICApICsgJyknICtcbiAgICAgICAgICAgICd8JyArXG4gICAgICAgICAgICAvLyBUaW1lem9uZSBkZWZpbml0aW9uOlxuICAgICAgICAgICAgYCg/PGRhdGVUaW1lem9uZT5afCg/OlsrLV0ke2hvdXJBbmRNaW51dGVzUGF0dGVybn0pKWBcbiAgICAgICAgKSArICcpPydcbiAgICApICsgJyQnXG4gICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChuZXcgUmVnRXhwKHBhdHRlcm4sICdpJykpXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKHZhbHVlKVxuXG4gICAgICAgIGlmIChpc05hTihyZXN1bHQuZ2V0RGF0ZSgpKSlcbiAgICAgICAgICAgIHJldHVybiBudWxsXG5cbiAgICAgICAgY29uc3QgdGltZXpvbmUgPVxuICAgICAgICAgICAgbWF0Y2guZ3JvdXBzPy5kYXRlVGltZVRpbWV6b25lID8/IG1hdGNoLmdyb3Vwcz8uZGF0ZVRpbWV6b25lXG4gICAgICAgIGlmICghdGltZXpvbmUpIHtcbiAgICAgICAgICAgIGlmIChbbnVsbCwgdW5kZWZpbmVkXS5pbmNsdWRlcyhpbnRlcnByZXRBc1VUQyBhcyBudWxsKSlcbiAgICAgICAgICAgICAgICByZXNvbHZlZEludGVycHJldEFzVVRDID0gZmFsc2VcblxuICAgICAgICAgICAgaWYgKHJlc29sdmVkSW50ZXJwcmV0QXNVVEMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoLmdyb3Vwcz8udGltZSlcbiAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgIE5PVEU6IERhdGUgb25seSBzdHJpbmdzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgVVRDXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5LlxuICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgICAgICAgICAgICAgICAvLyBsb2NhbCB0byB1dGNcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5nZXRUaW1lKCkgLVxuICAgICAgICAgICAgICAgICAgICAocmVzdWx0LmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MCkgKiAxMDAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobWF0Y2guZ3JvdXBzPy50aW1lKVxuICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgIE5PVEU6IERhdGUgdGltZSBzdHJpbmdzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgbG9jYWxcbiAgICAgICAgICAgICAgICAgICAgYWxyZWFkeS5cbiAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgICAgICAgICAgLy8gdXRjIHRvIGxvY2FsXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgcmVzdWx0LmdldFRpbWUoKSArXG4gICAgICAgICAgICAgICAgKHJlc3VsdC5nZXRUaW1lem9uZU9mZnNldCgpICogNjApICogMTAwMFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cbiAgICAvLyBlbmRyZWdpb25cbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL14oLT8pLSowKihbMS05XVswLTldKikkLywgJyQxJDInKVxuICAgIC8vIHJlZ2lvbiBpbnRlcnByZXQgaW50ZWdlciBudW1iZXJcbiAgICAvKlxuICAgICAgICBOT1RFOiBEbyBub3QgdXNlIFwicGFyc2VGbG9hdFwiIHNpbmNlIHdlIHdhbnQgdG8gaW50ZXJwcmV0IGRlbGltaXRlciBhc1xuICAgICAgICBkYXRlIGRlbGltaXRlcnMuXG4gICAgKi9cbiAgICBpZiAoU3RyaW5nKHBhcnNlSW50KHZhbHVlKSkgPT09IHZhbHVlKSB7XG4gICAgICAgIGlmIChbbnVsbCwgdW5kZWZpbmVkXS5pbmNsdWRlcyhpbnRlcnByZXRBc1VUQyBhcyBudWxsKSlcbiAgICAgICAgICAgIHJlc29sdmVkSW50ZXJwcmV0QXNVVEMgPSB0cnVlXG5cbiAgICAgICAgY29uc3Qgcm91Z2hEYXRlRm9yVGltZVpvbmVEZXRlcm1pbmluZyA9XG4gICAgICAgICAgICBuZXcgRGF0ZShwYXJzZUludCh2YWx1ZSkgKiAxMDAwKVxuICAgICAgICByZXR1cm4gbmV3IERhdGUoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgcGFyc2VJbnQodmFsdWUpICtcbiAgICAgICAgICAgICAgICAocmVzb2x2ZWRJbnRlcnByZXRBc1VUQyA/XG4gICAgICAgICAgICAgICAgICAgIDAgOlxuICAgICAgICAgICAgICAgICAgICAocm91Z2hEYXRlRm9yVGltZVpvbmVEZXRlcm1pbmluZy5nZXRUaW1lem9uZU9mZnNldCgpICogNjApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSAqXG4gICAgICAgICAgICAxMDAwXG4gICAgICAgIClcbiAgICB9XG4gICAgLy8gZW5kcmVnaW9uXG4gICAgaWYgKCFEQVRFX1RJTUVfUEFUVEVSTl9DQUNIRS5sZW5ndGgpIHtcbiAgICAgICAgLy8gcmVnaW9uIHByZS1jb21waWxlIHJlZ3VsYXIgZXhwcmVzc2lvbnNcbiAgICAgICAgLy8vIHJlZ2lvbiBwYXR0ZXJuXG4gICAgICAgIGNvbnN0IG1pbGxpc2Vjb25kUGF0dGVybiA9XG4gICAgICAgICAgICAnKD88bWlsbGlzZWNvbmQ+KD86MHswLDN9WzAtOV0pfCg/OjB7MCwyfVsxLTldezJ9KXwnICtcbiAgICAgICAgICAgICcoPzowP1sxLTldezN9KXwoPzoxWzEtOV17M30pKSdcbiAgICAgICAgY29uc3QgbWludXRlQW5kU2Vjb25kUGF0dGVybiA9ICcoPzowP1swLTldKXwoPzpbMS01XVswLTldKXwoPzo2MCknXG4gICAgICAgIGNvbnN0IHNlY29uZFBhdHRlcm4gPSBgKD88c2Vjb25kPiR7bWludXRlQW5kU2Vjb25kUGF0dGVybn0pYFxuICAgICAgICBjb25zdCBtaW51dGVQYXR0ZXJuID0gYCg/PG1pbnV0ZT4ke21pbnV0ZUFuZFNlY29uZFBhdHRlcm59KWBcbiAgICAgICAgY29uc3QgaG91clBhdHRlcm4gPSAnKD88aG91cj4oPzowP1swLTldKXwoPzoxWzAtOV0pfCg/OjJbMC00XSkpJ1xuICAgICAgICBjb25zdCBub29uSW5kaWNhdG9yUGF0dGVybiA9XG4gICAgICAgICAgICAnKD88bm9vbkluZGljYXRvcj4gKig/Oig/OmFcXFxcLj9tXFxcXC4/KXwoPzpwXFxcXC4/bVxcXFwuPykpKT8nXG4gICAgICAgIGNvbnN0IGRheVBhdHRlcm4gPSAnKD88ZGF5Pig/OjA/WzEtOV0pfCg/OlsxLTJdWzAtOV0pfCg/OjNbMDFdKSknXG4gICAgICAgIGNvbnN0IG1vbnRoUGF0dGVybiA9ICcoPzxtb250aD4oPzowP1sxLTldKXwoPzoxWzAtMl0pKSdcbiAgICAgICAgY29uc3QgeWVhclBhdHRlcm4gPSAnKD88eWVhcj4oPzowP1sxLTldKXwoPzpbMS05XVswLTldKykpJ1xuICAgICAgICAvLy8gZW5kcmVnaW9uXG4gICAgICAgIGNvbnN0IHBhdHRlcm5QcmVzZW5jZUNhY2hlOiBNYXBwaW5nPHRydWU+ID0ge31cbiAgICAgICAgZm9yIChjb25zdCB0aW1lRGVsaW1pdGVyIG9mIFsndCcsICcgJ10gYXMgY29uc3QpXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRpbWVDb21wb25lbnREZWxpbWl0ZXIgb2YgW1xuICAgICAgICAgICAgICAgICc6JywgJy8nLCAnLScsICcgJ1xuICAgICAgICAgICAgXSBhcyBjb25zdClcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHRpbWVGb3JtYXQgb2YgW1xuICAgICAgICAgICAgICAgICAgICBob3VyUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgIGAke3RpbWVDb21wb25lbnREZWxpbWl0ZXJ9K2AgK1xuICAgICAgICAgICAgICAgICAgICBtaW51dGVQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgbm9vbkluZGljYXRvclBhdHRlcm4sXG5cbiAgICAgICAgICAgICAgICAgICAgaG91clBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICBgJHt0aW1lQ29tcG9uZW50RGVsaW1pdGVyfStgICtcbiAgICAgICAgICAgICAgICAgICAgbWludXRlUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgIGAke3RpbWVDb21wb25lbnREZWxpbWl0ZXJ9K2AgK1xuICAgICAgICAgICAgICAgICAgICBzZWNvbmRQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgbm9vbkluZGljYXRvclBhdHRlcm4sXG5cbiAgICAgICAgICAgICAgICAgICAgaG91clBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICBgJHt0aW1lQ29tcG9uZW50RGVsaW1pdGVyfStgICtcbiAgICAgICAgICAgICAgICAgICAgbWludXRlUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgIGAke3RpbWVDb21wb25lbnREZWxpbWl0ZXJ9K2AgK1xuICAgICAgICAgICAgICAgICAgICBzZWNvbmRQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgYCR7dGltZUNvbXBvbmVudERlbGltaXRlcn0rYCArXG4gICAgICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgIG5vb25JbmRpY2F0b3JQYXR0ZXJuLFxuXG4gICAgICAgICAgICAgICAgICAgIGhvdXJQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgbm9vbkluZGljYXRvclBhdHRlcm5cbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRhdGVUaW1lRm9ybWF0IG9mIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbWl0ZXI6IFsnLycsICctJywgJyAnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7ZGVsaW1pdGVyfScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyArJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXJQYXR0ZXJuLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXJQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7ZGVsaW1pdGVyfScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aFBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkZWxpbWl0ZXJ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheVBhdHRlcm4sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7ZGVsaW1pdGVyfScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlQYXR0ZXJuLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aW1lRGVsaW1pdGVyfStgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aFBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkZWxpbWl0ZXJ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheVBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aW1lRGVsaW1pdGVyfStgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dGltZURlbGltaXRlcn0rYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RpbWVEZWxpbWl0ZXJ9K2AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aFBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkZWxpbWl0ZXJ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheVBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkZWxpbWl0ZXJ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RpbWVEZWxpbWl0ZXJ9K2AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXJQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyArJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RpbWVEZWxpbWl0ZXJ9K2AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aW1lRGVsaW1pdGVyfStgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkZWxpbWl0ZXJ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybixcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dGltZURlbGltaXRlcn0rYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllYXJQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyArJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW1pdGVyOiAnXFxcXC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7ZGVsaW1pdGVyfScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyUGF0dGVybixcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7ZGVsaW1pdGVyfScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aFBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkZWxpbWl0ZXJ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheVBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkZWxpbWl0ZXJ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybixcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7ZGVsaW1pdGVyfScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aFBhdHRlcm4sXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7ZGVsaW1pdGVyfScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RpbWVEZWxpbWl0ZXJ9K2AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheVBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkZWxpbWl0ZXJ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RpbWVEZWxpbWl0ZXJ9K2AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aW1lRGVsaW1pdGVyfStgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7ZGVsaW1pdGVyfScgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyUGF0dGVybixcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lRm9ybWF0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dGltZURlbGltaXRlcn0rYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheVBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkZWxpbWl0ZXJ9JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyUGF0dGVybixcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dGltZURlbGltaXRlcn0rYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhQYXR0ZXJuICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7dGltZURlbGltaXRlcn0rYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RpbWVEZWxpbWl0ZXJ9K2AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyUGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhQYXR0ZXJuLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGb3JtYXQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aW1lRGVsaW1pdGVyfStgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVhclBhdHRlcm4gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5UGF0dGVybiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RlbGltaXRlcn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGhQYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtwYXR0ZXJuOiB0aW1lRm9ybWF0fVxuICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWxpbWl0ZXIgb2YgKFtdIGFzIEFycmF5PHN0cmluZz4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVRpbWVGb3JtYXQsICdkZWxpbWl0ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZVRpbWVGb3JtYXQuZGVsaW1pdGVyIGFzIHN0cmluZykgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0dGVybiBvZiAoW10gYXMgQXJyYXk8c3RyaW5nPilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoZGF0ZVRpbWVGb3JtYXQucGF0dGVybilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZhbHVhdGVkUGF0dGVybiA9IGV2YWx1YXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFxcYF4ke3BhdHRlcm59JFxcYGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGVsaW1pdGVyOiBgJHtkZWxpbWl0ZXJ9K2B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkucmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRlZFBhdHRlcm4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVyblByZXNlbmNlQ2FjaGUsIGV2YWx1YXRlZFBhdHRlcm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuUHJlc2VuY2VDYWNoZVtldmFsdWF0ZWRQYXR0ZXJuXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9USU1FX1BBVFRFUk5fQ0FDSEUucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmVnRXhwKGV2YWx1YXRlZFBhdHRlcm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgIC8vIGVuZHJlZ2lvblxuICAgIH1cbiAgICAvLyByZWdpb24gcHJlLXByb2Nlc3NcbiAgICAvLyBOT1RFOiBBbGwgcGF0dGVybnMgY2FuIGFzc3VtZSBsb3dlciBjYXNlZCBzdHJpbmdzLlxuICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKVxuICAgIC8qXG4gICAgICAgIFJlZHVjZSBlYWNoIHNlcXVlbmNlIG9uIG5vbmUgYWxwaGFudW1lcmljIHN5bWJvbHMgdG8gdGhlIGZpcnN0XG4gICAgICAgIHN5bWJvbCAoY29uc29saWRhdGUgZGVsaW1pdGVycykuXG4gICAgKi9cbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLyhbXjAtOWEtel0pW14wLTlhLXpdKy9nLCAnJDEnKVxuXG4gICAgbGV0IG1vbnRoTnVtYmVyID0gMVxuICAgIGZvciAoY29uc3QgbW9udGhWYXJpYXRpb24gb2YgW1xuICAgICAgICBbJ2phbicsICdqYW51YXJ5PycsICdqYW52aWVyJ10sXG4gICAgICAgIFsnZmViJywgJ2ZlYnJ1YXJ5PycsICdmw6l2cmllciddLFxuICAgICAgICBbJ20oPzphfGFlfMOkKXInLCAnbSg/OmF8YWV8w6Qpcig/OmNofHN8eiknXSxcbiAgICAgICAgWydhcFtydl0nLCAnYVtwdl1yaWwnXSxcbiAgICAgICAgWydtYVtpeV0nXSxcbiAgICAgICAgWydqdVtlaW5dJywgJ2p1aT9uW2VpXT8nXSxcbiAgICAgICAgWydqdWwnLCAnanVsW2l5XScsICdqdWlsbGV0J10sXG4gICAgICAgIFsnYXVnJywgJ2F1Z3VzdCcsICdhb8O7dCddLFxuICAgICAgICBbJ3NlcCcsICdzZXB0ZW1iKD86ZXJ8cmUpJ10sXG4gICAgICAgIFsnb1tja110JywgJ29bY2tddG9iKD86ZXJ8cmUpJ10sXG4gICAgICAgIFsnbm92JywgJ25vdmVtYig/OmVyfHJlKSddLFxuICAgICAgICBbJ2RlW2N6XScsICdkW2XDqV1bY3pdZW1iKD86ZXJ8cmUpJ11cbiAgICBdKSB7XG4gICAgICAgIGxldCBtYXRjaGVkID0gZmFsc2VcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIG1vbnRoVmFyaWF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChgKF58W15hLXpdKSR7bmFtZX0oW15hLXpdfCQpYClcbiAgICAgICAgICAgIGlmIChwYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIGAkMSR7U3RyaW5nKG1vbnRoTnVtYmVyKX0kMmApXG4gICAgICAgICAgICAgICAgbWF0Y2hlZCA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hdGNoZWQpXG4gICAgICAgICAgICBicmVha1xuXG4gICAgICAgIG1vbnRoTnVtYmVyICs9IDFcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHNsaWNlV2Vla2RheSh2YWx1ZSlcblxuICAgIGNvbnN0IHRpbWV6b25lUGF0dGVybiA9IC8oLispXFwrKC4rKSQvXG4gICAgY29uc3QgdGltZXpvbmVNYXRjaDogQXJyYXk8c3RyaW5nPiB8IG51bGwgPSB0aW1lem9uZVBhdHRlcm4uZXhlYyh2YWx1ZSlcbiAgICBpZiAodGltZXpvbmVNYXRjaClcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHRpbWV6b25lUGF0dGVybiwgJyQxJylcblxuICAgIGZvciAoY29uc3Qgd29yZFRvU2xpY2Ugb2YgWycnLCAnVWhyJywgYG8nY2xvY2tgXSBhcyBjb25zdClcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHdvcmRUb1NsaWNlLCAnJylcblxuICAgIHZhbHVlID0gdmFsdWUudHJpbSgpXG4gICAgLy8gZW5kcmVnaW9uXG4gICAgLy8gcmVnaW9uIHRyeSB0byBtYXRjaCBhIHBhdHRlcm5cbiAgICBmb3IgKGNvbnN0IGRhdGVUaW1lUGF0dGVybiBvZiBEQVRFX1RJTUVfUEFUVEVSTl9DQUNIRSkge1xuICAgICAgICBsZXQgbWF0Y2g6IFJldHVyblR5cGU8c3RyaW5nWydtYXRjaCddPiA9IG51bGxcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbWF0Y2ggPSB2YWx1ZS5tYXRjaChkYXRlVGltZVBhdHRlcm4pXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gQ29udGludWUgcmVnYXJkbGVzcyBvZiBhbiBlcnJvci5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgY29uc3QgZ2V0ID0gKG5hbWU6IHN0cmluZywgZmFsbGJhY2sgPSAwKTogbnVtYmVyID0+XG4gICAgICAgICAgICAgICAgbWF0Y2guZ3JvdXBzICYmIG5hbWUgaW4gbWF0Y2guZ3JvdXBzID9cbiAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQobWF0Y2guZ3JvdXBzW25hbWVdLCAxMCkgOlxuICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1xuXG4gICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXI6IFtcbiAgICAgICAgICAgICAgICBudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJcbiAgICAgICAgICAgIF0gPSBbXG4gICAgICAgICAgICAgICAgZ2V0KCd5ZWFyJywgMTk3MCksIGdldCgnbW9udGgnLCAxKSAtIDEsIGdldCgnZGF5JywgMSksXG4gICAgICAgICAgICAgICAgZ2V0KCdob3VyJyksIGdldCgnbWludXRlJyksIGdldCgnc2Vjb25kJyksXG4gICAgICAgICAgICAgICAgZ2V0KCdtaWxsaXNlY29uZCcpXG4gICAgICAgICAgICBdXG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBtYXRjaC5ncm91cHM/Lm5vb25JbmRpY2F0b3IgJiZcbiAgICAgICAgICAgICAgICBtYXRjaC5ncm91cHMubm9vbkluZGljYXRvclxuICAgICAgICAgICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC4vZywgJycpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgJ3BtJyAmJlxuICAgICAgICAgICAgICAgIHBhcmFtZXRlclszXSA8PSAxMlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHBhcmFtZXRlclszXSArPSAxMlxuXG4gICAgICAgICAgICBsZXQgcmVzdWx0OiBEYXRlIHwgbnVsbCA9IG51bGxcbiAgICAgICAgICAgIGlmICh0aW1lem9uZU1hdGNoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZVNoaWZ0OiBEYXRlIHwgbnVsbCA9XG4gICAgICAgICAgICAgICAgICAgIGludGVycHJldERhdGVUaW1lKHRpbWV6b25lTWF0Y2hbMl0sIHRydWUpXG4gICAgICAgICAgICAgICAgaWYgKHRpbWVTaGlmdClcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBEYXRlLlVUQyguLi5wYXJhbWV0ZXIpIC0gdGltZVNoaWZ0LmdldFRpbWUoKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcmVzdWx0KVxuICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlZEludGVycHJldEFzVVRDKVxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgRGF0ZShEYXRlLlVUQyguLi5wYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUoLi4ucGFyYW1ldGVyKVxuXG4gICAgICAgICAgICBpZiAoaXNOYU4ocmVzdWx0LmdldERhdGUoKSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGVuZHJlZ2lvblxuICAgIHJldHVybiBudWxsXG59XG4vKipcbiAqIEludGVycHJldHMgYSBkYXRlIG9iamVjdCBmcm9tIGdpdmVuIGFydGVmYWN0LlxuICogQHBhcmFtIHZhbHVlIC0gVG8gaW50ZXJwcmV0LlxuICogQHBhcmFtIGludGVycHJldEFzVVRDIC0gSWRlbnRpZmllcyBpZiBnaXZlbiBkYXRlIHNob3VsZCBiZSBpbnRlcnByZXRlZCBhc1xuICogdXRjLiBJZiBub3Qgc2V0IGdpdmVuIHN0cmluZ3Mgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBpdCBpcyBkZXBlbmRlbnQgb25cbiAqIGdpdmVuIGZvcm1hdCBhbmQgbnVtYmVycyBhcyB1dGMuXG4gKiBAcmV0dXJucyBJbnRlcnByZXRlZCBkYXRlIG9iamVjdCBvciBcIm51bGxcIiBpZiBnaXZlbiB2YWx1ZSBjb3VsZG4ndCBiZVxuICogaW50ZXJwcmV0ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVEYXRlVGltZSA9IChcbiAgICB2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IG51bWJlciB8IERhdGUgPSBudWxsLFxuICAgIGludGVycHJldEFzVVRDPzogYm9vbGVhbiB8IG51bGxcbik6IERhdGUgfCBudWxsID0+IHtcbiAgICBsZXQgcmVzb2x2ZWRJbnRlcnByZXRBc1VUQyA9IEJvb2xlYW4oaW50ZXJwcmV0QXNVVEMpXG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwpXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpXG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAvKlxuICAgICAgICAgICAgV2UgbWFrZSBhIHNpbXBsZSBwcmUtY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGl0IGNvdWxkIGJlIGEgZGF0ZSBsaWtlXG4gICAgICAgICAgICByZXByZXNlbnRhdGlvbi4gSWRlYTogVGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IHNvbWUgbnVtYmVycyBhbmRcbiAgICAgICAgICAgIHNlcGFyYXRvcnMuXG4gICAgICAgICovXG4gICAgICAgIGlmICgvXi4qKD86KD86WzAtOV17MSw0fVteMC05XSl7Mn18WzAtOV17MSw0fVteMC05Ll0pLiokLy50ZXN0KFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBpbnRlcnByZXREYXRlVGltZSh2YWx1ZSwgcmVzb2x2ZWRJbnRlcnByZXRBc1VUQylcblxuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZsb2F0UmVwcmVzZW50YXRpb246IG51bWJlciA9IHBhcnNlRmxvYXQodmFsdWUpXG4gICAgICAgIGlmIChTdHJpbmcoZmxvYXRSZXByZXNlbnRhdGlvbikgPT09IHZhbHVlKVxuICAgICAgICAgICAgdmFsdWUgPSBmbG9hdFJlcHJlc2VudGF0aW9uXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKFtudWxsLCB1bmRlZmluZWRdLmluY2x1ZGVzKGludGVycHJldEFzVVRDIGFzIG51bGwpKVxuICAgICAgICAgICAgcmVzb2x2ZWRJbnRlcnByZXRBc1VUQyA9IHRydWVcblxuICAgICAgICBjb25zdCByb3VnaERhdGVGb3JUaW1lWm9uZURldGVybWluaW5nID0gbmV3IERhdGUodmFsdWUgKiAxMDAwKVxuICAgICAgICByZXR1cm4gbmV3IERhdGUoXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgdmFsdWUgK1xuICAgICAgICAgICAgICAgIChyZXNvbHZlZEludGVycHJldEFzVVRDID9cbiAgICAgICAgICAgICAgICAgICAgMCA6XG4gICAgICAgICAgICAgICAgICAgIChyb3VnaERhdGVGb3JUaW1lWm9uZURldGVybWluaW5nLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApICpcbiAgICAgICAgICAgIDEwMDBcbiAgICAgICAgKVxuICAgIH1cblxuICAgIC8vIFRyeSB0byBkZWFsIHdpdGggdHlwZXMgd2hpY2ggYXJlIGVpdGhlciBudW1iZXJzIG9yIHN0cmluZ3MuXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGUodmFsdWUpXG5cbiAgICBpZiAoaXNOYU4ocmVzdWx0LmdldERhdGUoKSkpXG4gICAgICAgIHJldHVybiBudWxsXG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG4vKipcbiAqIFNsaWNlIHdlZWtkYXkgZnJvbSBnaXZlbiBkYXRlIHJlcHJlc2VudGF0aW9uLlxuICogQHBhcmFtIHZhbHVlIC0gU3RyaW5nIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBTbGljZWQgZ2l2ZW4gc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3Qgc2xpY2VXZWVrZGF5ID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHdlZWtkYXlQYXR0ZXJuID0gL1thLXpdezJ9XFwuKyAqKFteIF0uKikkL2lcbiAgICBjb25zdCB3ZWVrZGF5TWF0Y2ggPSB3ZWVrZGF5UGF0dGVybi5leGVjKHZhbHVlKVxuXG4gICAgaWYgKHdlZWtkYXlNYXRjaClcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2Uod2Vla2RheVBhdHRlcm4sICckMScpXG5cbiAgICByZXR1cm4gdmFsdWVcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTs7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFBQTtBQXFCQSxTQUFRLE9BQU87QUFDZixTQUFRLFVBQVUsRUFBRSxRQUFROztBQUU1QjtBQUNBLE9BQU8sTUFBTSx1QkFBc0MsR0FBRyxFQUFFOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLE1BQU0sY0FBYyxHQUFHLENBQzFCLE1BQU0sR0FBRyxNQUFNLEVBQ2YsUUFBZ0MsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQzdDLE9BQW9ELEdBQUcsQ0FBQyxDQUFDLEVBQ3pELE9BQStCLEdBQUcsT0FBTyxLQUNoQztFQUNULElBQUksT0FBTyxRQUFRLEtBQUssUUFBUTtJQUM1QjtBQUNSO0FBQ0E7QUFDQTtJQUNRLFFBQVEsSUFBSSxJQUFJO0VBRXBCLE1BQU0sa0JBQXdCLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0VBRW5ELElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQ3BELE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUN6QixFQUFFLENBQW1CLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQzlDO0lBQUMsU0FBUyxFQUFFLE1BQU07SUFBRSxTQUFTLEVBQUUsTUFBTTtJQUFFLEdBQUc7RUFBTyxDQUVyRCxDQUFDLENBQ0ksTUFBTSxDQUFDLGtCQUFrQixDQUFDO0VBRW5DLE1BQU0sS0FBc0MsR0FBRyxDQUFDLENBQUM7RUFDakQsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFXO0lBQzlELEtBQUssQ0FBQyxHQUFHLEtBQUssVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUU5QixNQUFNLGNBQW1DLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUM5RCxFQUFFLENBQW1CLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQzlDO01BQUMsU0FBUyxFQUFFLEtBQUs7TUFBRSxTQUFTLEVBQUUsS0FBSztNQUFFLEdBQUc7SUFBTyxDQUNuRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7SUFFeEQsS0FBSyxNQUFNLElBQUksSUFBSSxjQUFjLENBQUMsYUFBYSxDQUMzQyxrQkFDSixDQUFDLEVBQ0csSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFDdEIsS0FBSyxDQUFDLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFFckIsS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLO0VBQ2xFO0VBRUEsTUFBTSxTQUEyQixHQUFHLFFBQVEsQ0FBQyxLQUFLLE1BQU0sSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNwRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDOztFQUVwQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0VBQ0ksT0FBUSxTQUFTLENBQ1osTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ25DLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxNQUFNLGlCQUFpQixHQUFHLENBQzdCLEtBQWEsRUFBRSxjQUErQixLQUNoQztFQUNkLElBQUksc0JBQXNCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztFQUNwRDtFQUNBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBSUksTUFBTSxxQkFBcUIsR0FBRyx1QkFBdUI7RUFDckQsTUFBTSxPQUFPLEdBQUcsR0FBRztFQUNmO0VBQ0EsK0JBQStCLEdBQy9CLFVBQVUsSUFDTixNQUFNLElBQ0YscUJBQXFCLEdBQ3JCLEtBQUs7RUFDRDtFQUNBLGFBQWE7RUFDYjtFQUNBLGdCQUFnQixDQUNuQixHQUFHLElBQUk7RUFDUjtFQUNBLGdDQUFnQyxxQkFBcUIsS0FBSyxDQUM3RCxHQUFHLEdBQUcsR0FDUCxHQUFHO0VBQ0g7RUFDQSw0QkFBNEIscUJBQXFCLElBQUksQ0FDeEQsR0FBRyxJQUFJLENBQ1gsR0FBRyxHQUFHO0VBQ1AsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7RUFDbkQsSUFBSSxLQUFLLEVBQUU7SUFDUCxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7SUFFOUIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFDdkIsT0FBTyxJQUFJO0lBRWYsTUFBTSxRQUFRLEdBQ1YsS0FBSyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLFlBQVk7SUFDaEUsSUFBSSxDQUFDLFFBQVEsRUFBRTtNQUNYLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQXNCLENBQUMsRUFDbEQsc0JBQXNCLEdBQUcsS0FBSztNQUVsQyxJQUFJLHNCQUFzQixFQUFFO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUk7VUFDbkI7QUFDcEI7QUFDQTtBQUNBO1VBQ29CLE9BQU8sTUFBTTs7UUFFakI7UUFDQSxPQUFPLElBQUksSUFBSSxDQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUNmLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFJLElBQ3hDLENBQUM7TUFDTDtNQUVBLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJO1FBQ2xCO0FBQ2hCO0FBQ0E7QUFDQTtRQUNnQixPQUFPLE1BQU07O01BRWpCO01BQ0EsT0FBTyxJQUFJLElBQUksQ0FDWCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FDZixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBSSxJQUN4QyxDQUFDO0lBQ0w7SUFFQSxPQUFPLE1BQU07RUFDakI7RUFDQTtFQUNBLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQztFQUN4RDtFQUNBO0FBQ0o7QUFDQTtBQUNBO0VBQ0ksSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO0lBQ25DLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQXNCLENBQUMsRUFDbEQsc0JBQXNCLEdBQUcsSUFBSTtJQUVqQyxNQUFNLCtCQUErQixHQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLE9BQU8sSUFBSSxJQUFJLENBQ1gsQ0FDSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQ2Qsc0JBQXNCLEdBQ25CLENBQUMsR0FDQSwrQkFBK0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsRUFBRyxDQUM3RCxJQUVMLElBQ0osQ0FBQztFQUNMO0VBQ0E7RUFDQSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFO0lBQ2pDO0lBQ0E7SUFDQSxNQUFNLGtCQUFrQixHQUNwQixvREFBb0QsR0FDcEQsK0JBQStCO0lBQ25DLE1BQU0sc0JBQXNCLEdBQUcsbUNBQW1DO0lBQ2xFLE1BQU0sYUFBYSxHQUFHLGFBQWEsc0JBQXNCLEdBQUc7SUFDNUQsTUFBTSxhQUFhLEdBQUcsYUFBYSxzQkFBc0IsR0FBRztJQUM1RCxNQUFNLFdBQVcsR0FBRyw0Q0FBNEM7SUFDaEUsTUFBTSxvQkFBb0IsR0FDdEIsd0RBQXdEO0lBQzVELE1BQU0sVUFBVSxHQUFHLDhDQUE4QztJQUNqRSxNQUFNLFlBQVksR0FBRyxrQ0FBa0M7SUFDdkQsTUFBTSxXQUFXLEdBQUcsc0NBQXNDO0lBQzFEO0lBQ0EsTUFBTSxvQkFBbUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsS0FBSyxNQUFNLGFBQWEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFDbEMsS0FBSyxNQUFNLHNCQUFzQixJQUFJLENBQ2pDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FDckIsRUFDRyxLQUFLLE1BQU0sVUFBVSxJQUFJLENBQ3JCLFdBQVcsR0FDWCxHQUFHLHNCQUFzQixHQUFHLEdBQzVCLGFBQWEsR0FDYixvQkFBb0IsRUFFcEIsV0FBVyxHQUNYLEdBQUcsc0JBQXNCLEdBQUcsR0FDNUIsYUFBYSxHQUNiLEdBQUcsc0JBQXNCLEdBQUcsR0FDNUIsYUFBYSxHQUNiLG9CQUFvQixFQUVwQixXQUFXLEdBQ1gsR0FBRyxzQkFBc0IsR0FBRyxHQUM1QixhQUFhLEdBQ2IsR0FBRyxzQkFBc0IsR0FBRyxHQUM1QixhQUFhLEdBQ2IsR0FBRyxzQkFBc0IsR0FBRyxHQUM1QixrQkFBa0IsR0FDbEIsb0JBQW9CLEVBRXBCLFdBQVcsR0FDWCxvQkFBb0IsQ0FDdkIsRUFDRyxLQUFLLE1BQU0sY0FBYyxJQUFJLENBQ3pCO01BQ0ksU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7TUFDMUIsT0FBTyxFQUFFLENBQ0wsWUFBWSxHQUNaLGNBQWMsR0FDZCxVQUFVLEdBQ1YsY0FBYyxHQUNkLFdBQVcsRUFFWCxZQUFZLEdBQ1osY0FBYyxHQUNkLFVBQVUsR0FDVixJQUFJLEdBQ0osV0FBVyxFQUVYLFdBQVcsR0FDWCxjQUFjLEdBQ2QsWUFBWSxHQUNaLGNBQWMsR0FDZCxVQUFVLEVBRVYsV0FBVyxHQUNYLElBQUksR0FDSixZQUFZLEdBQ1osY0FBYyxHQUNkLFVBQVUsRUFFVixZQUFZLEdBQ1osY0FBYyxHQUNkLFVBQVUsR0FDVixjQUFjLEdBQ2QsV0FBVyxHQUNYLEdBQUcsYUFBYSxHQUFHLEdBQ25CLFVBQVUsRUFFVixZQUFZLEdBQ1osY0FBYyxHQUNkLFVBQVUsR0FDVixJQUFJLEdBQ0osV0FBVyxHQUNYLEdBQUcsYUFBYSxHQUFHLEdBQ25CLFVBQVUsRUFFVixVQUFVLEdBQ1YsR0FBRyxhQUFhLEdBQUcsR0FDbkIsWUFBWSxHQUNaLGNBQWMsR0FDZCxVQUFVLEdBQ1YsY0FBYyxHQUNkLFdBQVcsRUFFWCxVQUFVLEdBQ1YsR0FBRyxhQUFhLEdBQUcsR0FDbkIsWUFBWSxHQUNaLGNBQWMsR0FDZCxVQUFVLEdBQ1YsSUFBSSxHQUNKLFdBQVcsRUFFWCxXQUFXLEdBQ1gsY0FBYyxHQUNkLFlBQVksR0FDWixjQUFjLEdBQ2QsVUFBVSxHQUNWLEdBQUcsYUFBYSxHQUFHLEdBQ25CLFVBQVUsRUFFVixXQUFXLEdBQ1gsSUFBSSxHQUNKLFlBQVksR0FDWixjQUFjLEdBQ2QsVUFBVSxHQUNWLEdBQUcsYUFBYSxHQUFHLEdBQ25CLFVBQVUsRUFFVixVQUFVLEdBQ1YsR0FBRyxhQUFhLEdBQUcsR0FDbkIsV0FBVyxHQUNYLGNBQWMsR0FDZCxZQUFZLEdBQ1osY0FBYyxHQUNkLFVBQVUsRUFFVixVQUFVLEdBQ1YsR0FBRyxhQUFhLEdBQUcsR0FDbkIsV0FBVyxHQUNYLElBQUksR0FDSixZQUFZLEdBQ1osY0FBYyxHQUNkLFVBQVU7SUFFbEIsQ0FBQyxFQUNEO01BQ0ksU0FBUyxFQUFFLEtBQUs7TUFDaEIsT0FBTyxFQUFFLENBQ0wsVUFBVSxHQUNWLGNBQWMsR0FDZCxZQUFZLEdBQ1osY0FBYyxHQUNkLFdBQVcsRUFFWCxVQUFVLEdBQ1YsY0FBYyxHQUNkLFlBQVksR0FDWixJQUFJLEdBQ0osV0FBVyxFQUVYLFdBQVcsR0FDWCxjQUFjLEdBQ2QsVUFBVSxHQUNWLGNBQWMsR0FDZCxZQUFZLEVBRVosV0FBVyxHQUNYLElBQUksR0FDSixVQUFVLEdBQ1YsY0FBYyxHQUNkLFlBQVksRUFFWixVQUFVLEdBQ1YsY0FBYyxHQUNkLFlBQVksR0FDWixjQUFjLEdBQ2QsV0FBVyxHQUNYLEdBQUcsYUFBYSxHQUFHLEdBQ25CLFVBQVUsRUFFVixVQUFVLEdBQ1YsY0FBYyxHQUNkLFlBQVksR0FDWixJQUFJLEdBQ0osV0FBVyxHQUNYLEdBQUcsYUFBYSxHQUFHLEdBQ25CLFVBQVUsRUFFVixVQUFVLEdBQ1YsR0FBRyxhQUFhLEdBQUcsR0FDbkIsVUFBVSxHQUNWLGNBQWMsR0FDZCxZQUFZLEdBQ1osY0FBYyxHQUNkLFdBQVcsRUFFWCxVQUFVLEdBQ1YsR0FBRyxhQUFhLEdBQUcsR0FDbkIsVUFBVSxHQUNWLGNBQWMsR0FDZCxZQUFZLEdBQ1osSUFBSSxHQUNKLFdBQVcsRUFFWCxXQUFXLEdBQ1gsY0FBYyxHQUNkLFVBQVUsR0FDVixjQUFjLEdBQ2QsWUFBWSxHQUNaLEdBQUcsYUFBYSxHQUFHLEdBQ25CLFVBQVUsRUFFVixXQUFXLEdBQ1gsSUFBSSxHQUNKLFVBQVUsR0FDVixjQUFjLEdBQ2QsWUFBWSxHQUNaLEdBQUcsYUFBYSxHQUFHLEdBQ25CLFVBQVUsRUFFVixVQUFVLEdBQ1YsR0FBRyxhQUFhLEdBQUcsR0FDbkIsV0FBVyxHQUNYLGNBQWMsR0FDZCxVQUFVLEdBQ1YsY0FBYyxHQUNkLFlBQVksRUFFWixVQUFVLEdBQ1YsR0FBRyxhQUFhLEdBQUcsR0FDbkIsV0FBVyxHQUNYLElBQUksR0FDSixVQUFVLEdBQ1YsY0FBYyxHQUNkLFlBQVk7SUFFcEIsQ0FBQyxFQUNEO01BQUMsT0FBTyxFQUFFO0lBQVUsQ0FBQyxDQUN4QixFQUNHLEtBQ0ksTUFBTSxTQUFTLElBQUssRUFBRSxDQUNqQixNQUFNLENBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNoQyxjQUFjLEVBQUUsV0FDcEIsQ0FBQyxHQUNJLGNBQWMsQ0FBQyxTQUFTLEdBQ3pCLEdBQ1IsQ0FBQyxFQUVMLEtBQ0ksTUFBTSxPQUFPLElBQUssRUFBRSxDQUNmLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQ3JDO01BQ0UsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQzdCLE1BQU0sT0FBTyxLQUFLLEVBQ2xCO1FBQUMsU0FBUyxFQUFFLEdBQUcsU0FBUztNQUFHLENBQy9CLENBQUMsQ0FBQyxNQUFNO01BQ1IsSUFDSSxnQkFBZ0IsSUFDaEIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2pDLG9CQUFvQixFQUFFLGdCQUMxQixDQUFDLEVBQ0g7UUFDRSxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUNsQyxJQUFJO1FBQ1IsdUJBQXVCLENBQUMsSUFBSSxDQUN4QixJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDL0IsQ0FBQztNQUNMO0lBQ0o7SUFDcEI7RUFDSjtFQUNBO0VBQ0E7RUFDQSxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0VBQzNCO0FBQ0o7QUFDQTtBQUNBO0VBQ0ksS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDO0VBRXJELElBQUksV0FBVyxHQUFHLENBQUM7RUFDbkIsS0FBSyxNQUFNLGNBQWMsSUFBSSxDQUN6QixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQzlCLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsRUFDL0IsQ0FBQyxjQUFjLEVBQUUsd0JBQXdCLENBQUMsRUFDMUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQ3RCLENBQUMsUUFBUSxDQUFDLEVBQ1YsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLEVBQ3pCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFDN0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUN6QixDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxFQUMzQixDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxFQUMvQixDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxFQUMxQixDQUFDLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxDQUN0QyxFQUFFO0lBQ0MsSUFBSSxPQUFPLEdBQUcsS0FBSztJQUNuQixLQUFLLE1BQU0sSUFBSSxJQUFJLGNBQWMsRUFBRTtNQUMvQixNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLElBQUksWUFBWSxDQUFDO01BQ3pELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNyQixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUM1RCxPQUFPLEdBQUcsSUFBSTtRQUNkO01BQ0o7SUFDSjtJQUVBLElBQUksT0FBTyxFQUNQO0lBRUosV0FBVyxJQUFJLENBQUM7RUFDcEI7RUFFQSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztFQUUzQixNQUFNLGVBQWUsR0FBRyxhQUFhO0VBQ3JDLE1BQU0sYUFBbUMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztFQUN2RSxJQUFJLGFBQWEsRUFDYixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDO0VBRWhELEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUM1QyxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0VBRTFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDcEI7RUFDQTtFQUNBLEtBQUssTUFBTSxlQUFlLElBQUksdUJBQXVCLEVBQUU7SUFDbkQsSUFBSSxLQUFrQyxHQUFHLElBQUk7SUFFN0MsSUFBSTtNQUNBLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztJQUN4QyxDQUFDLENBQUMsTUFBTTtNQUNKO0lBQUE7SUFHSixJQUFJLEtBQUssRUFBRTtNQUNQLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBWSxFQUFFLFFBQVEsR0FBRyxDQUFDLEtBQ25DLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQ2hDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUNoQyxRQUFRO01BRWhCLE1BQU0sU0FFTCxHQUFHLENBQ0EsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUNyRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFDekMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUNyQjtNQUVELElBQ0ksS0FBSyxDQUFDLE1BQU0sRUFBRSxhQUFhLElBQzNCLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUNyQixJQUFJLENBQUMsQ0FBQyxDQUNOLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQ2YsSUFBSSxJQUNaLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBRWxCLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO01BRXRCLElBQUksTUFBbUIsR0FBRyxJQUFJO01BQzlCLElBQUksYUFBYSxFQUFFO1FBQ2YsTUFBTSxTQUFzQixHQUN4QixpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQzdDLElBQUksU0FBUyxFQUNULE1BQU0sR0FBRyxJQUFJLElBQUksQ0FDYixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUMvQyxDQUFDO01BQ1Q7TUFFQSxJQUFJLENBQUMsTUFBTSxFQUNQLElBQUksc0JBQXNCLEVBQ3RCLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsTUFFekMsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO01BRXZDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQ3ZCLE9BQU8sSUFBSTtNQUVmLE9BQU8sTUFBTTtJQUNqQjtFQUNKO0VBQ0E7RUFDQSxPQUFPLElBQUk7QUFDZixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxNQUFNLGlCQUFpQixHQUFHLENBQzdCLEtBQW9DLEdBQUcsSUFBSSxFQUMzQyxjQUErQixLQUNqQjtFQUNkLElBQUksc0JBQXNCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztFQUVwRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQ2QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDO0VBRXJCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO0lBQzNCO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7SUFDUSxJQUFJLHFEQUFxRCxDQUFDLElBQUksQ0FDMUQsS0FDSixDQUFDLEVBQUU7TUFDQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLHNCQUFzQixDQUFDO01BRXhELElBQUksS0FBSyxLQUFLLElBQUksRUFDZCxPQUFPLEtBQUs7TUFFaEIsT0FBTyxLQUFLO0lBQ2hCO0lBRUEsTUFBTSxtQkFBMkIsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQ3JELElBQUksTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQUssS0FBSyxFQUNyQyxLQUFLLEdBQUcsbUJBQW1CO0VBQ25DO0VBRUEsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDM0IsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBc0IsQ0FBQyxFQUNsRCxzQkFBc0IsR0FBRyxJQUFJO0lBRWpDLE1BQU0sK0JBQStCLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUM5RCxPQUFPLElBQUksSUFBSSxDQUNYLENBQ0ksS0FBSyxJQUNKLHNCQUFzQixHQUNuQixDQUFDLEdBQ0EsK0JBQStCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLEVBQUcsQ0FDN0QsSUFFTCxJQUNKLENBQUM7RUFDTDs7RUFFQTtFQUNBLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztFQUU5QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUN2QixPQUFPLElBQUk7RUFFZixPQUFPLE1BQU07QUFDakIsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLE1BQU0sWUFBWSxHQUFJLEtBQWEsSUFBYTtFQUNuRCxNQUFNLGNBQWMsR0FBRyx5QkFBeUI7RUFDaEQsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7RUFFL0MsSUFBSSxZQUFZLEVBQ1osT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUM7RUFFOUMsT0FBTyxLQUFLO0FBQ2hCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=