Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fable-log

Package Overview
Dependencies
Maintainers
3
Versions
39
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fable-log - npm Package Compare versions

Comparing version 2.0.6 to 2.0.7

11

dist/fable-log.js

@@ -1,2 +0,2 @@

(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.FableLog = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
/**

@@ -257,2 +257,3 @@ * Random Byte Generator - Browser version

tmpDefaultProviders.console = require('./Fable-Log-Logger-Console.js');
tmpDefaultProviders.default = tmpDefaultProviders.console;

@@ -467,3 +468,3 @@ return tmpDefaultProviders;

{
let tmpStreamDefinition = Object.assign({loggertype:'console',streamtype:'console',level:'info'},this._StreamDefinitions[i]);
let tmpStreamDefinition = Object.assign({loggertype:'default',streamtype:'console',level:'info'},this._StreamDefinitions[i]);

@@ -556,3 +557,5 @@ if (!this._Providers.hasOwnProperty(tmpStreamDefinition.loggertype))

},{"./Fable-Log-DefaultProviders.js":4,"./Fable-Log-DefaultStreams.json":5}]},{},[7])
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZmFibGUtdXVpZC9zb3VyY2UvRmFibGUtVVVJRC1SYW5kb20tQnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9mYWJsZS11dWlkL3NvdXJjZS9GYWJsZS1VVUlELmpzIiwic291cmNlL0ZhYmxlLUxvZy1CYXNlTG9nZ2VyLmpzIiwic291cmNlL0ZhYmxlLUxvZy1EZWZhdWx0UHJvdmlkZXJzLUJyb3dzZXIuanMiLCJzb3VyY2UvRmFibGUtTG9nLURlZmF1bHRTdHJlYW1zLmpzb24iLCJzb3VyY2UvRmFibGUtTG9nLUxvZ2dlci1Db25zb2xlLmpzIiwic291cmNlL0ZhYmxlLUxvZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitpK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpIiwiLyoqXG4qIFJhbmRvbSBCeXRlIEdlbmVyYXRvciAtIEJyb3dzZXIgdmVyc2lvblxuKlxuKiBAbGljZW5zZSBNSVRcbipcbiogQGF1dGhvciBTdGV2ZW4gVmVsb3pvIDxzdGV2ZW5AdmVsb3pvLmNvbT5cbiovXG5cbi8vIEFkYXB0ZWQgZnJvbSBub2RlLXV1aWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9rZWxla3Rpdi9ub2RlLXV1aWQpXG4vLyBVbmlxdWUgSUQgY3JlYXRpb24gcmVxdWlyZXMgYSBoaWdoIHF1YWxpdHkgcmFuZG9tICMgZ2VuZXJhdG9yLiAgSW4gdGhlXG4vLyBicm93c2VyIHRoaXMgaXMgYSBsaXR0bGUgY29tcGxpY2F0ZWQgZHVlIHRvIHVua25vd24gcXVhbGl0eSBvZiBNYXRoLnJhbmRvbSgpXG4vLyBhbmQgaW5jb25zaXN0ZW50IHN1cHBvcnQgZm9yIHRoZSBgY3J5cHRvYCBBUEkuICBXZSBkbyB0aGUgYmVzdCB3ZSBjYW4gdmlhXG4vLyBmZWF0dXJlLWRldGVjdGlvblxuY2xhc3MgUmFuZG9tQnl0ZXNcbntcblx0Y29uc3RydWN0b3IoKVxuXHR7XG5cblx0XHQvLyBnZXRSYW5kb21WYWx1ZXMgbmVlZHMgdG8gYmUgaW52b2tlZCBpbiBhIGNvbnRleHQgd2hlcmUgXCJ0aGlzXCIgaXMgYSBDcnlwdG9cblx0XHQvLyBpbXBsZW1lbnRhdGlvbi4gQWxzbywgZmluZCB0aGUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgY3J5cHRvIG9uIElFMTEuXG5cdFx0dGhpcy5nZXRSYW5kb21WYWx1ZXMgPSAodHlwZW9mKGNyeXB0bykgIT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBcdFx0KHR5cGVvZihtc0NyeXB0bykgIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMgPT0gJ2Z1bmN0aW9uJyAmJiBtc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChtc0NyeXB0bykpO1xuXHR9XG5cblx0Ly8gV0hBVFdHIGNyeXB0byBSTkcgLSBodHRwOi8vd2lraS53aGF0d2cub3JnL3dpa2kvQ3J5cHRvXG5cdGdlbmVyYXRlV2hhdFdHQnl0ZXMoKVxuXHR7XG5cdFx0bGV0IHRtcEJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDE2KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cdFx0dGhpcy5nZXRSYW5kb21WYWx1ZXModG1wQnVmZmVyKTtcblx0XHRyZXR1cm4gdG1wQnVmZmVyO1xuXHR9XG5cblx0Ly8gTWF0aC5yYW5kb20oKS1iYXNlZCAoUk5HKVxuXHRnZW5lcmF0ZVJhbmRvbUJ5dGVzKClcblx0e1xuXHRcdC8vXG5cdFx0Ly8gSWYgYWxsIGVsc2UgZmFpbHMsIHVzZSBNYXRoLnJhbmRvbSgpLiAgSXQncyBmYXN0LCBidXQgaXMgb2YgdW5zcGVjaWZpZWRcblx0XHQvLyBxdWFsaXR5LlxuXHRcdGxldCB0bXBCdWZmZXIgPSBuZXcgVWludDhBcnJheSgxNik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXHRcdGZvciAobGV0IGkgPSAwLCB0bXBWYWx1ZTsgaSA8IDE2OyBpKyspXG5cdFx0e1xuXHRcdFx0aWYgKChpICYgMHgwMykgPT09IDApXG5cdFx0XHR7XG5cdFx0XHRcdHRtcFZhbHVlID0gTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMDAwO1xuXHRcdFx0fVxuXG5cdFx0XHR0bXBCdWZmZXJbaV0gPSB0bXBWYWx1ZSA+Pj4gKChpICYgMHgwMykgPDwgMykgJiAweGZmO1xuXHRcdH1cblxuXHRcdHJldHVybiB0bXBCdWZmZXI7XG5cdH1cblxuXHRnZW5lcmF0ZSgpXG5cdHtcblx0XHRpZiAodGhpcy5nZXRSYW5kb21WYWx1ZXMpXG5cdFx0e1xuXHRcdFx0cmV0dXJuIGdlbmVyYXRlV2hhdFdHQnl0ZXMoKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHJldHVybiBnZW5lcmF0ZVJhbmRvbUJ5dGVzKCk7XG5cdFx0fVxuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmFuZG9tQnl0ZXM7XG4iLCIvKipcbiogRmFibGUgVVVJRCBHZW5lcmF0b3JcbipcbiogQGxpY2Vuc2UgTUlUXG4qXG4qIEBhdXRob3IgU3RldmVuIFZlbG96byA8c3RldmVuQHZlbG96by5jb20+XG4qIEBtb2R1bGUgRmFibGUgVVVJRFxuKi9cblxuLyoqXG4qIEZhYmxlIFNvbHV0aW9uIFVVSUQgR2VuZXJhdGlvbiBNYWluIENsYXNzXG4qXG4qIEBjbGFzcyBGYWJsZVVVSURcbiogQGNvbnN0cnVjdG9yXG4qL1xuXG52YXIgbGliUmFuZG9tQnl0ZUdlbmVyYXRvciA9IHJlcXVpcmUoJy4vRmFibGUtVVVJRC1SYW5kb20uanMnKVxuXG5jbGFzcyBGYWJsZVVVSURcbntcblx0Y29uc3RydWN0b3IocFNldHRpbmdzKVxuXHR7XG5cdFx0Ly8gRGV0ZXJtaW5lIGlmIHRoZSBtb2R1bGUgaXMgaW4gXCJSYW5kb20gVVVJRCBNb2RlXCIgd2hpY2ggbWVhbnMganVzdCB1c2UgdGhlIHJhbmRvbSBjaGFyYWN0ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIHY0IHJhbmRvbSBVVUlEIHNwZWMuXG5cdFx0Ly8gTm90ZSB0aGlzIGFsbG93cyBVVUlEcyBvZiB2YXJpb3VzIGxlbmd0aHMgKGluY2x1ZGluZyB2ZXJ5IHNob3J0IG9uZXMpIGFsdGhvdWdoIGd1YXJhbnRlZWQgdW5pcXVlbmVzcyBnb2VzIGRvd25oaWxsIGZhc3QuXG5cdFx0dGhpcy5fVVVJRE1vZGVSYW5kb20gPSAodHlwZW9mKHBTZXR0aW5ncykgPT09ICdvYmplY3QnKSAmJiAocFNldHRpbmdzLmhhc093blByb3BlcnR5KCdVVUlETW9kZVJhbmRvbScpKSA/IChwU2V0dGluZ3MuVVVJRE1vZGVSYW5kb20gPT0gdHJ1ZSkgOiBmYWxzZTtcblx0XHQvLyBUaGVzZSB0d28gcHJvcGVydGllcyBhcmUgb25seSB1c2VmdWwgaWYgd2UgYXJlIGluIFJhbmRvbSBtb2RlLiAgT3RoZXJ3aXNlIGl0IGdlbmVyYXRlcyBhIHY0IHNwZWNcblx0XHQvLyBMZW5ndGggZm9yIFwiUmFuZG9tIFVVSUQgTW9kZVwiIGlzIHNldCAtLSBpZiBub3Qgc2V0IGl0IHRvIDhcblx0XHR0aGlzLl9VVUlETGVuZ3RoID0gKHR5cGVvZihwU2V0dGluZ3MpID09PSAnb2JqZWN0JykgJiYgKHBTZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgnVVVJRExlbmd0aCcpKSA/IChwU2V0dGluZ3MuVVVJRExlbmd0aCArIDApIDogODtcblx0XHQvLyBEaWN0aW9uYXJ5IGZvciBcIlJhbmRvbSBVVUlEIE1vZGVcIlxuXHRcdHRoaXMuX1VVSURSYW5kb21EaWN0aW9uYXJ5ID0gKHR5cGVvZihwU2V0dGluZ3MpID09PSAnb2JqZWN0JykgJiYgKHBTZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgnVVVJRERpY3Rpb25hcnknKSkgPyAocFNldHRpbmdzLlVVSUREaWN0aW9uYXJ5ICsgMCkgOiAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonO1xuXG5cdFx0dGhpcy5yYW5kb21CeXRlR2VuZXJhdG9yID0gbmV3IGxpYlJhbmRvbUJ5dGVHZW5lcmF0b3IoKTtcblxuXHRcdC8vIExvb2t1cCB0YWJsZSBmb3IgaGV4IGNvZGVzXG5cdFx0dGhpcy5fSGV4TG9va3VwID0gW107XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAyNTY7ICsraSlcblx0XHR7XG5cdFx0XHR0aGlzLl9IZXhMb29rdXBbaV0gPSAoaSArIDB4MTAwKS50b1N0cmluZygxNikuc3Vic3RyKDEpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEFkYXB0ZWQgZnJvbSBub2RlLXV1aWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9rZWxla3Rpdi9ub2RlLXV1aWQpXG5cdGJ5dGVzVG9VVUlEKHBCdWZmZXIpXG5cdHtcblx0XHRsZXQgaSA9IDA7XG5cdFx0Ly8gam9pbiB1c2VkIHRvIGZpeCBtZW1vcnkgaXNzdWUgY2F1c2VkIGJ5IGNvbmNhdGVuYXRpb246IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMxNzUjYzRcblx0XHRyZXR1cm4gKFtcblx0XHRcdFx0XHR0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXSwgdGhpcy5fSGV4TG9va3VwW3BCdWZmZXJbaSsrXV0sIFxuXHRcdFx0XHRcdHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCB0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXSwgJy0nLFxuXHRcdFx0XHRcdHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCB0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXSwgJy0nLFxuXHRcdFx0XHRcdHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCB0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXSwgJy0nLFxuXHRcdFx0XHRcdHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCB0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXSwgJy0nLFxuXHRcdFx0XHRcdHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCB0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXSwgdGhpcy5fSGV4TG9va3VwW3BCdWZmZXJbaSsrXV0sIHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCB0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXSwgdGhpcy5fSGV4TG9va3VwW3BCdWZmZXJbaSsrXV1cblx0XHRcdFx0XSkuam9pbignJyk7XG5cdH1cblxuXHQvLyBBZGFwdGVkIGZyb20gbm9kZS11dWlkIChodHRwczovL2dpdGh1Yi5jb20va2VsZWt0aXYvbm9kZS11dWlkKVxuXHRnZW5lcmF0ZVVVSUR2NCgpXG5cdHtcblx0XHRsZXQgdG1wQnVmZmVyID0gbmV3IEFycmF5KDE2KTtcblx0XHR2YXIgdG1wUmFuZG9tQnl0ZXMgPSB0aGlzLnJhbmRvbUJ5dGVHZW5lcmF0b3IuZ2VuZXJhdGUoKTtcblxuXHRcdC8vIFBlciA0LjQsIHNldCBiaXRzIGZvciB2ZXJzaW9uIGFuZCBgY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZGBcblx0XHR0bXBSYW5kb21CeXRlc1s2XSA9ICh0bXBSYW5kb21CeXRlc1s2XSAmIDB4MGYpIHwgMHg0MDtcblx0XHR0bXBSYW5kb21CeXRlc1s4XSA9ICh0bXBSYW5kb21CeXRlc1s4XSAmIDB4M2YpIHwgMHg4MDtcblxuXHRcdHJldHVybiB0aGlzLmJ5dGVzVG9VVUlEKHRtcFJhbmRvbUJ5dGVzKTtcblx0fVxuXG5cdC8vIFNpbXBsZSByYW5kb20gVVVJRCBnZW5lcmF0aW9uXG5cdGdlbmVyYXRlUmFuZG9tKClcblx0e1xuXHRcdGxldCB0bXBVVUlEID0gJyc7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX1VVSURMZW5ndGg7IGkrKylcblx0XHR7XG5cdFx0XHR0bXBVVUlEICs9IHRoaXMuX1VVSURSYW5kb21EaWN0aW9uYXJ5LmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAodGhpcy5fVVVJRFJhbmRvbURpY3Rpb25hcnkubGVuZ3RoLTEpKSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRtcFVVSUQ7XG5cdH1cblxuXHQvLyBBZGFwdGVkIGZyb20gbm9kZS11dWlkIChodHRwczovL2dpdGh1Yi5jb20va2VsZWt0aXYvbm9kZS11dWlkKVxuXHRnZXRVVUlEKClcblx0e1xuXHRcdGlmICh0aGlzLl9VVUlETW9kZVJhbmRvbSlcblx0XHR7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZW5lcmF0ZVJhbmRvbSgpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0cmV0dXJuIHRoaXMuZ2VuZXJhdGVVVUlEdjQoKTtcblx0XHR9XG5cdH1cbn1cblxuLy8gVGhpcyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbmZ1bmN0aW9uIGF1dG9Db25zdHJ1Y3QocFNldHRpbmdzKVxue1xuXHRyZXR1cm4gbmV3IEZhYmxlVVVJRChwU2V0dGluZ3MpO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0ge25ldzphdXRvQ29uc3RydWN0LCBGYWJsZVVVSUQ6RmFibGVVVUlEfTtcbiIsIi8qKlxuKiBCYXNlIExvZ2dlciBDbGFzc1xuKlxuKiBAbGljZW5zZSBNSVRcbipcbiogQGF1dGhvciBTdGV2ZW4gVmVsb3pvIDxzdGV2ZW5AdmVsb3pvLmNvbT5cbiovXG5jb25zdCBsaWJGYWJsZVVVSUQgPSBuZXcgKHJlcXVpcmUoJ2ZhYmxlLXV1aWQnKS5GYWJsZVVVSUQpKCk7XG5cbmNsYXNzIEJhc2VMb2dnZXJcbntcblx0Y29uc3RydWN0b3IocExvZ1N0cmVhbVNldHRpbmdzLCBwRmFibGVMb2cpXG5cdHtcblx0XHQvLyBUaGlzIHNob3VsZCBub3QgcG9zc2libHkgYmUgYWJsZSB0byBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCBhIHNldHRpbmdzIG9iamVjdFxuXHRcdHRoaXMuX1NldHRpbmdzID0gcExvZ1N0cmVhbVNldHRpbmdzO1xuXHRcdFxuXHRcdC8vIFRoZSBiYXNlIGxvZ2dlciBkb2VzIG5vdGhpbmcgYnV0IGFzc29jaWF0ZSBhIFVVSUQgd2l0aCBpdHNlbGZcblx0XHR0aGlzLmxvZ2dlclVVSUQgPSBsaWJGYWJsZVVVSUQuZ2V0VVVJRCgpO1xuXHR9XG5cblx0aW5pdGlhbGl6ZSgpXG5cdHtcblx0XHQvLyBObyBvcGVyYXRpb24uXG5cdH1cblxuXHR0cmFjZShwTG9nVGV4dCwgcExvZ09iamVjdClcblx0e1xuXHRcdHRoaXMud3JpdGUoXCJ0cmFjZVwiLCBwTG9nVGV4dCwgcExvZ09iamVjdCk7XG5cdH1cblxuXHRkZWJ1ZyhwTG9nVGV4dCwgcExvZ09iamVjdClcblx0e1xuXHRcdHRoaXMud3JpdGUoXCJkZWJ1Z1wiLCBwTG9nVGV4dCwgcExvZ09iamVjdCk7XG5cdH1cblxuXHRpbmZvKHBMb2dUZXh0LCBwTG9nT2JqZWN0KVxuXHR7XG5cdFx0dGhpcy53cml0ZShcImluZm9cIiwgcExvZ1RleHQsIHBMb2dPYmplY3QpO1xuXHR9XG5cblx0d2FybihwTG9nVGV4dCwgcExvZ09iamVjdClcblx0e1xuXHRcdHRoaXMud3JpdGUoXCJ3YXJuXCIsIHBMb2dUZXh0LCBwTG9nT2JqZWN0KTtcblx0fVxuXG5cdGVycm9yKHBMb2dUZXh0LCBwTG9nT2JqZWN0KVxuXHR7XG5cdFx0dGhpcy53cml0ZShcImVycm9yXCIsIHBMb2dUZXh0LCBwTG9nT2JqZWN0KTtcblx0fVxuXG5cdGZhdGFsKHBMb2dUZXh0LCBwTG9nT2JqZWN0KVxuXHR7XG5cdFx0dGhpcy53cml0ZShcImZhdGFsXCIsIHBMb2dUZXh0LCBwTG9nT2JqZWN0KTtcblx0fVxuXG5cdHdyaXRlKHBMb2dMZXZlbCwgcExvZ1RleHQsIHBMb2dPYmplY3QpXG5cdHtcblx0XHQvLyBUaGUgYmFzZSBsb2dnZXIgZG9lcyBub3RoaW5nLlxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZUxvZ2dlcjtcbiIsIi8qKlxuKiBEZWZhdWx0IExvZ2dlciBQcm92aWRlciBGdW5jdGlvbiAtLS0gQnJvd3NlclxuKlxuKiBAbGljZW5zZSBNSVRcbipcbiogQGF1dGhvciBTdGV2ZW4gVmVsb3pvIDxzdGV2ZW5AdmVsb3pvLmNvbT5cbiovXG5cbi8vIFJldHVybiB0aGUgcHJvdmlkZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSB3aXRob3V0IGV4dGVuc2lvbnMgbG9hZGVkXG5nZXREZWZhdWx0UHJvdmlkZXJzID0gKCkgPT5cbntcblx0bGV0IHRtcERlZmF1bHRQcm92aWRlcnMgPSB7fTtcblxuXHR0bXBEZWZhdWx0UHJvdmlkZXJzLmNvbnNvbGUgPSByZXF1aXJlKCcuL0ZhYmxlLUxvZy1Mb2dnZXItQ29uc29sZS5qcycpO1xuXG5cdHJldHVybiB0bXBEZWZhdWx0UHJvdmlkZXJzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldERlZmF1bHRQcm92aWRlcnMoKTsiLCJtb2R1bGUuZXhwb3J0cz1bXG4gICAge1xuICAgICAgICBcImxvZ2dlcnR5cGVcIjogXCJjb25zb2xlXCIsXG4gICAgICAgIFwic3RyZWFtdHlwZVwiOiBcImNvbnNvbGVcIixcbiAgICAgICAgXCJsZXZlbFwiOiBcInRyYWNlXCJcbiAgICB9XG5dIiwibGV0IGxpYkJhc2VMb2dnZXIgPSByZXF1aXJlKCcuL0ZhYmxlLUxvZy1CYXNlTG9nZ2VyLmpzJyk7XG5cbmNsYXNzIENvbnNvbGVMb2dnZXIgZXh0ZW5kcyBsaWJCYXNlTG9nZ2VyXG57XG5cdGNvbnN0cnVjdG9yKHBMb2dTdHJlYW1TZXR0aW5ncywgcEZhYmxlTG9nKVxuXHR7XG5cdFx0c3VwZXIocExvZ1N0cmVhbVNldHRpbmdzKVxuXG5cdFx0dGhpcy5fU2hvd1RpbWVTdGFtcHMgPSBwTG9nU3RyZWFtU2V0dGluZ3MuaGFzT3duUHJvcGVydHkoJ1Nob3dUaW1lU3RhbXBzJykgPyAocExvZ1N0cmVhbVNldHRpbmdzLlNob3dUaW1lU3RhbXBzID09IHRydWUpIDogZmFsc2U7XG5cdFx0dGhpcy5fRm9ybWF0dGVkVGltZVN0YW1wcyA9IHBMb2dTdHJlYW1TZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgnRm9ybWF0dGVkVGltZVN0YW1wcycpID8gKHBMb2dTdHJlYW1TZXR0aW5ncy5Gb3JtYXR0ZWRUaW1lU3RhbXBzID09IHRydWUpIDogZmFsc2U7XG5cblx0XHR0aGlzLl9Db250ZXh0TWVzc2FnZSA9IHBMb2dTdHJlYW1TZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgnQ29udGV4dCcpID8gYCAoJHtwTG9nU3RyZWFtU2V0dGluZ3MuQ29udGV4dH0pYCA6IFxuXHRcdFx0XHRcdFx0XHRcdHBGYWJsZUxvZy5fU2V0dGluZ3MuaGFzT3duUHJvcGVydHkoJ1Byb2R1Y3QnKSA/IGAgKCR7cEZhYmxlTG9nLl9TZXR0aW5ncy5Qcm9kdWN0fSlgIDpcblx0XHRcdFx0XHRcdFx0XHQnJztcblx0fVxuXG5cdHdyaXRlKHBMZXZlbCwgcExvZ1RleHQsIHBPYmplY3QpXG5cdHtcblx0XHRpZiAodGhpcy5fU2hvd1RpbWVTdGFtcHMgJiYgdGhpcy5fRm9ybWF0dGVkVGltZVN0YW1wcylcblx0XHR7XG5cdFx0XHRsZXQgdG1wRGF0ZSA9IChuZXcgRGF0ZSgpKS50b0lTT1N0cmluZygpO1xuXHRcdFx0Y29uc29sZS5sb2coYCR7dG1wRGF0ZX0gWyR7cExldmVsfV0ke3RoaXMuX0NvbnRleHRNZXNzYWdlfSAke3BMb2dUZXh0fWApO1xuXHRcdH1cblx0XHRlbHNlIGlmICh0aGlzLl9TaG93VGltZVN0YW1wcylcblx0XHR7XG5cdFx0XHRsZXQgdG1wRGF0ZSA9ICtuZXcgRGF0ZSgpO1xuXHRcdFx0Y29uc29sZS5sb2coYCR7dG1wRGF0ZX0gWyR7cExldmVsfV0ke3RoaXMuX0NvbnRleHRNZXNzYWdlfSAke3BMb2dUZXh0fWApO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0Y29uc29sZS5sb2coYFske3BMZXZlbH1dJHt0aGlzLl9Db250ZXh0TWVzc2FnZX0gJHtwTG9nVGV4dH1gKTtcblx0XHR9XG5cblx0XHQvLyBXcml0ZSBvdXQgdGhlIG9iamVjdCBvbiBhIHNlcGFyYXRlIGxpbmUgaWYgaXQgaXMgcGFzc2VkIGluXG5cdFx0aWYgKHR5cGVvZihwT2JqZWN0KSAhPT0gJ3VuZGVmaW5lZCcpXG5cdFx0e1xuXHRcdFx0Y29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocE9iamVjdCwgbnVsbCwgNCkpO1xuXHRcdH1cblx0fVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ29uc29sZUxvZ2dlcjsiLCIvKipcbiogRmFibGUgTG9nZ2luZyBBZGQtb25cbipcbiogQGxpY2Vuc2UgTUlUXG4qXG4qIEBhdXRob3IgU3RldmVuIFZlbG96byA8c3RldmVuQHZlbG96by5jb20+XG4qIEBtb2R1bGUgRmFibGUgTG9nZ2VyXG4qL1xuXG4vKipcbiogRmFibGUgU29sdXRpb24gTG9nIFdyYXBwZXIgTWFpbiBDbGFzc1xuKlxuKiBAY2xhc3MgRmFibGVMb2dcbiogQGNvbnN0cnVjdG9yXG4qL1xuY2xhc3MgRmFibGVMb2dcbntcblx0Y29uc3RydWN0b3IocEZhYmxlU2V0dGluZ3MsIHBGYWJsZSlcblx0e1xuXHRcdGxldCB0bXBTZXR0aW5ncyA9ICh0eXBlb2YocEZhYmxlU2V0dGluZ3MpID09PSAnb2JqZWN0JykgPyBwRmFibGVTZXR0aW5ncyA6IHt9XG5cdFx0dGhpcy5fU2V0dGluZ3MgPSB0bXBTZXR0aW5ncztcblxuXHRcdHRoaXMuX1Byb3ZpZGVycyA9IHJlcXVpcmUoJy4vRmFibGUtTG9nLURlZmF1bHRQcm92aWRlcnMuanMnKTtcblxuXHRcdHRoaXMuX1N0cmVhbURlZmluaXRpb25zID0gKHRtcFNldHRpbmdzLmhhc093blByb3BlcnR5KCdMb2dTdHJlYW1zJykpID8gdG1wU2V0dGluZ3MuTG9nU3RyZWFtcyA6IHJlcXVpcmUoJy4vRmFibGUtTG9nLURlZmF1bHRTdHJlYW1zLmpzb24nKTtcblxuXHRcdHRoaXMubG9nU3RyZWFtcyA9IFtdO1xuXG5cdFx0Ly8gVGhpcyBvYmplY3QgZ2V0cyBkZWNvcmF0ZWQgZm9yIG9uZS10aW1lIGluc3RhbnRpYXRlZCBwcm92aWRlcnMgdGhhdFxuXHRcdC8vICBoYXZlIG11bHRpcGxlIG91dHB1dHMsIHN1Y2ggYXMgYnVueWFuLlxuXHRcdHRoaXMubG9nUHJvdmlkZXJzID0ge307XG5cblx0XHQvLyBBIGhhc2ggbGlzdCBvZiB0aGUgR1VJRHMgZm9yIGVhY2ggbG9nIHN0cmVhbSwgc28gdGhleSBjYW4ndCBiZSBhZGRlZCB0byB0aGUgc2V0IG1vcmUgdGhhbiBvbmUgdGltZVxuXHRcdHRoaXMuYWN0aXZlTG9nU3RyZWFtcyA9IHt9O1xuXG5cdFx0dGhpcy5sb2dTdHJlYW1zVHJhY2UgPSBbXTtcblx0XHR0aGlzLmxvZ1N0cmVhbXNEZWJ1ZyA9IFtdO1xuXHRcdHRoaXMubG9nU3RyZWFtc0luZm8gPSBbXTtcblx0XHR0aGlzLmxvZ1N0cmVhbXNXYXJuID0gW107XG5cdFx0dGhpcy5sb2dTdHJlYW1zRXJyb3IgPSBbXTtcblx0XHR0aGlzLmxvZ1N0cmVhbXNGYXRhbCA9IFtdO1xuXG5cdFx0dGhpcy5kYXR1bURlY29yYXRvciA9IChwRGF0dW0pID0+IHBEYXR1bTtcblxuXHRcdHRoaXMudXVpZCA9ICh0eXBlb2YodG1wU2V0dGluZ3MuUHJvZHVjdCkgPT09ICdzdHJpbmcnKSA/IHRtcFNldHRpbmdzLlByb2R1Y3QgOiAnRGVmYXVsdCc7XG5cdH1cblxuXHRhZGRMb2dnZXIocExvZ2dlciwgcExldmVsKVxuXHR7XG5cdFx0Ly8gQmFpbCBvdXQgaWYgd2UndmUgYWxyZWFkeSBjcmVhdGVkIG9uZS5cblx0XHRpZiAodGhpcy5hY3RpdmVMb2dTdHJlYW1zLmhhc093blByb3BlcnR5KHBMb2dnZXIubG9nZ2VyVVVJRCkpXG5cdFx0e1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIEFkZCBpdCB0byB0aGUgc3RyZWFtcyBhbmQgdG8gdGhlIG11dGV4XG5cdFx0dGhpcy5sb2dTdHJlYW1zLnB1c2gocExvZ2dlcik7XG5cdFx0dGhpcy5hY3RpdmVMb2dTdHJlYW1zW3BMb2dnZXIubG9nZ2VyVVVJRF0gPSB0cnVlO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIGEga29zaGVyIGxldmVsIHdhcyBwYXNzZWQgaW5cblx0XHRzd2l0Y2ggKHBMZXZlbClcblx0XHR7XG5cdFx0XHRjYXNlICd0cmFjZSc6XG5cdFx0XHRcdHRoaXMubG9nU3RyZWFtc1RyYWNlLnB1c2gocExvZ2dlcik7XG5cdFx0XHRjYXNlICdkZWJ1Zyc6XG5cdFx0XHRcdHRoaXMubG9nU3RyZWFtc0RlYnVnLnB1c2gocExvZ2dlcik7XG5cdFx0XHRjYXNlICdpbmZvJzpcblx0XHRcdFx0dGhpcy5sb2dTdHJlYW1zSW5mby5wdXNoKHBMb2dnZXIpO1xuXHRcdFx0Y2FzZSAnd2Fybic6XG5cdFx0XHRcdHRoaXMubG9nU3RyZWFtc1dhcm4ucHVzaChwTG9nZ2VyKTtcblx0XHRcdGNhc2UgJ2Vycm9yJzpcblx0XHRcdFx0dGhpcy5sb2dTdHJlYW1zRXJyb3IucHVzaChwTG9nZ2VyKTtcblx0XHRcdGNhc2UgJ2ZhdGFsJzpcblx0XHRcdFx0dGhpcy5sb2dTdHJlYW1zRmF0YWwucHVzaChwTG9nZ2VyKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRzZXREYXR1bURlY29yYXRvcihmRGF0dW1EZWNvcmF0b3IpXG5cdHtcblx0XHRpZiAodHlwZW9mKGZEYXR1bURlY29yYXRvcikgPT09ICdmdW5jdGlvbicpXG5cdFx0e1xuXHRcdFx0dGhpcy5kYXR1bURlY29yYXRvciA9IGZEYXR1bURlY29yYXRvcjtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHRoaXMuZGF0dW1EZWNvcmF0b3IgPSAocERhdHVtKSA9PiBwRGF0dW07XG5cdFx0fVxuXHR9XG5cblx0dHJhY2UocE1lc3NhZ2UsIHBEYXR1bSlcblx0e1xuXHRcdGNvbnN0IHRtcERlY29yYXRlZERhdHVtID0gdGhpcy5kYXR1bURlY29yYXRvcihwRGF0dW0pO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sb2dTdHJlYW1zVHJhY2UubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0dGhpcy5sb2dTdHJlYW1zVHJhY2VbaV0udHJhY2UocE1lc3NhZ2UsIHRtcERlY29yYXRlZERhdHVtKTtcblx0XHR9XG5cdH1cblxuXHRkZWJ1ZyhwTWVzc2FnZSwgcERhdHVtKVxuXHR7XG5cdFx0Y29uc3QgdG1wRGVjb3JhdGVkRGF0dW0gPSB0aGlzLmRhdHVtRGVjb3JhdG9yKHBEYXR1bSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxvZ1N0cmVhbXNEZWJ1Zy5sZW5ndGg7IGkrKylcblx0XHR7XG5cdFx0XHR0aGlzLmxvZ1N0cmVhbXNEZWJ1Z1tpXS5kZWJ1ZyhwTWVzc2FnZSwgdG1wRGVjb3JhdGVkRGF0dW0pO1xuXHRcdH1cblx0fVxuXG5cdGluZm8ocE1lc3NhZ2UsIHBEYXR1bSlcblx0e1xuXHRcdGNvbnN0IHRtcERlY29yYXRlZERhdHVtID0gdGhpcy5kYXR1bURlY29yYXRvcihwRGF0dW0pO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sb2dTdHJlYW1zSW5mby5sZW5ndGg7IGkrKylcblx0XHR7XG5cdFx0XHR0aGlzLmxvZ1N0cmVhbXNJbmZvW2ldLmluZm8ocE1lc3NhZ2UsIHRtcERlY29yYXRlZERhdHVtKTtcblx0XHR9XG5cdH1cblxuXHR3YXJuKHBNZXNzYWdlLCBwRGF0dW0pXG5cdHtcblx0XHRjb25zdCB0bXBEZWNvcmF0ZWREYXR1bSA9IHRoaXMuZGF0dW1EZWNvcmF0b3IocERhdHVtKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubG9nU3RyZWFtc1dhcm4ubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0dGhpcy5sb2dTdHJlYW1zV2FybltpXS53YXJuKHBNZXNzYWdlLCB0bXBEZWNvcmF0ZWREYXR1bSk7XG5cdFx0fVxuXHR9XG5cblx0ZXJyb3IocE1lc3NhZ2UsIHBEYXR1bSlcblx0e1xuXHRcdGNvbnN0IHRtcERlY29yYXRlZERhdHVtID0gdGhpcy5kYXR1bURlY29yYXRvcihwRGF0dW0pO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sb2dTdHJlYW1zRXJyb3IubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0dGhpcy5sb2dTdHJlYW1zRXJyb3JbaV0uZXJyb3IocE1lc3NhZ2UsIHRtcERlY29yYXRlZERhdHVtKTtcblx0XHR9XG5cdH1cblxuXHRmYXRhbChwTWVzc2FnZSwgcERhdHVtKVxuXHR7XG5cdFx0Y29uc3QgdG1wRGVjb3JhdGVkRGF0dW0gPSB0aGlzLmRhdHVtRGVjb3JhdG9yKHBEYXR1bSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxvZ1N0cmVhbXNGYXRhbC5sZW5ndGg7IGkrKylcblx0XHR7XG5cdFx0XHR0aGlzLmxvZ1N0cmVhbXNGYXRhbFtpXS5mYXRhbChwTWVzc2FnZSwgdG1wRGVjb3JhdGVkRGF0dW0pO1xuXHRcdH1cblx0fVxuXG5cdGluaXRpYWxpemUoKVxuXHR7XG5cdFx0Ly8gXCJpbml0aWFsaXplXCIgZWFjaCBsb2dnZXIgYXMgZGVmaW5lZCBpbiB0aGUgbG9nZ2luZyBwYXJhbWV0ZXJzXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9TdHJlYW1EZWZpbml0aW9ucy5sZW5ndGg7IGkrKylcblx0XHR7XG5cdFx0XHRsZXQgdG1wU3RyZWFtRGVmaW5pdGlvbiA9IE9iamVjdC5hc3NpZ24oe2xvZ2dlcnR5cGU6J2NvbnNvbGUnLHN0cmVhbXR5cGU6J2NvbnNvbGUnLGxldmVsOidpbmZvJ30sdGhpcy5fU3RyZWFtRGVmaW5pdGlvbnNbaV0pO1xuXG5cdFx0XHRpZiAoIXRoaXMuX1Byb3ZpZGVycy5oYXNPd25Qcm9wZXJ0eSh0bXBTdHJlYW1EZWZpbml0aW9uLmxvZ2dlcnR5cGUpKVxuXHRcdFx0e1xuXHRcdFx0XHRjb25zb2xlLmxvZyhgRXJyb3IgaW5pdGlhbGl6aW5nIGxvZyBzdHJlYW06IGJhZCBsb2dnZXJ0eXBlIGluIHN0cmVhbSBkZWZpbml0aW9uICR7SlNPTi5zdHJpbmdpZnkodG1wU3RyZWFtRGVmaW5pdGlvbil9YCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHRcdHRoaXMuYWRkTG9nZ2VyKG5ldyB0aGlzLl9Qcm92aWRlcnNbdG1wU3RyZWFtRGVmaW5pdGlvbi5sb2dnZXJ0eXBlXSh0bXBTdHJlYW1EZWZpbml0aW9uLCB0aGlzKSwgdG1wU3RyZWFtRGVmaW5pdGlvbi5sZXZlbCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gTm93IGluaXRpYWxpemUgZWFjaCBvbmUuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxvZ1N0cmVhbXMubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0dGhpcy5sb2dTdHJlYW1zW2ldLmluaXRpYWxpemUoKTtcblx0XHR9XG5cdH1cblxuXHRsb2dUaW1lKHBNZXNzYWdlLCBwRGF0dW0pXG5cdHtcblx0XHRsZXQgdG1wTWVzc2FnZSA9ICh0eXBlb2YocE1lc3NhZ2UpICE9PSAndW5kZWZpbmVkJykgPyBwTWVzc2FnZSA6ICdUaW1lJztcblx0XHRsZXQgdG1wVGltZSA9IG5ldyBEYXRlKCk7XG5cdFx0dGhpcy5pbmZvKGAke3RtcE1lc3NhZ2V9ICR7dG1wVGltZX0gKGVwb2NoICR7K3RtcFRpbWV9KWAsIHBEYXR1bSk7XG5cdH1cblxuXHQvLyBHZXQgYSB0aW1lc3RhbXBcblx0Z2V0VGltZVN0YW1wKClcblx0e1xuXHRcdHJldHVybiArbmV3IERhdGUoKTtcblx0fVxuXG5cdGdldFRpbWVEZWx0YShwVGltZVN0YW1wKVxuXHR7XG5cdFx0bGV0IHRtcEVuZFRpbWUgPSArbmV3IERhdGUoKTtcblx0XHRyZXR1cm4gdG1wRW5kVGltZS1wVGltZVN0YW1wO1xuXHR9XG5cblx0Ly8gTG9nIHRoZSBkZWx0YSBiZXR3ZWVuIGEgdGltZXN0YW1wLCBhbmQgbm93IHdpdGggYSBtZXNzYWdlXG5cdGxvZ1RpbWVEZWx0YShwVGltZURlbHRhLCBwTWVzc2FnZSwgcERhdHVtKVxuXHR7XG5cdFx0bGV0IHRtcE1lc3NhZ2UgPSAodHlwZW9mKHBNZXNzYWdlKSAhPT0gJ3VuZGVmaW5lZCcpID8gcE1lc3NhZ2UgOiAnVGltZSBNZWFzdXJlbWVudCc7XG5cdFx0bGV0IHRtcERhdHVtID0gKHR5cGVvZihwRGF0dW0pID09PSAnb2JqZWN0JykgPyBwRGF0dW0gOiB7fTtcblxuXHRcdGxldCB0bXBFbmRUaW1lID0gK25ldyBEYXRlKCk7XG5cblx0XHR0aGlzLmluZm8oYCR7dG1wTWVzc2FnZX0gbG9nZ2VkIGF0IChlcG9jaCAkeyt0bXBFbmRUaW1lfSkgdG9vayAoJHtwVGltZURlbHRhfW1zKWAsIHBEYXR1bSk7XG5cdH1cblxuXHRsb2dUaW1lRGVsdGFIdW1hbihwVGltZURlbHRhLCBwTWVzc2FnZSwgcERhdHVtKVxuXHR7XG5cdFx0bGV0IHRtcE1lc3NhZ2UgPSAodHlwZW9mKHBNZXNzYWdlKSAhPT0gJ3VuZGVmaW5lZCcpID8gcE1lc3NhZ2UgOiAnVGltZSBNZWFzdXJlbWVudCc7XG5cblx0XHRsZXQgdG1wRW5kVGltZSA9ICtuZXcgRGF0ZSgpO1xuXG5cdFx0bGV0IHRtcE1zID0gcGFyc2VJbnQocFRpbWVEZWx0YSUxMDAwKTtcblx0XHRsZXQgdG1wU2Vjb25kcyA9IHBhcnNlSW50KChwVGltZURlbHRhLzEwMDApJTYwKTtcblx0XHRsZXQgdG1wTWludXRlcyA9IHBhcnNlSW50KChwVGltZURlbHRhLygxMDAwKjYwKSklNjApO1xuXHRcdGxldCB0bXBIb3VycyA9IHBhcnNlSW50KHBUaW1lRGVsdGEvKDEwMDAqNjAqNjApKTtcblxuXHRcdHRtcE1zID0gKHRtcE1zIDwgMTApID8gXCIwMFwiK3RtcE1zIDogKHRtcE1zIDwgMTAwKSA/IFwiMFwiK3RtcE1zIDogdG1wTXM7XG5cdFx0dG1wU2Vjb25kcyA9ICh0bXBTZWNvbmRzIDwgMTApID8gXCIwXCIrdG1wU2Vjb25kcyA6IHRtcFNlY29uZHM7XG5cdFx0dG1wTWludXRlcyA9ICh0bXBNaW51dGVzIDwgMTApID8gXCIwXCIrdG1wTWludXRlcyA6IHRtcE1pbnV0ZXM7XG5cdFx0dG1wSG91cnMgPSAodG1wSG91cnMgPCAxMCkgPyBcIjBcIit0bXBIb3VycyA6IHRtcEhvdXJzO1xuXG5cdFx0dGhpcy5pbmZvKGAke3RtcE1lc3NhZ2V9IGxvZ2dlZCBhdCAoZXBvY2ggJHsrdG1wRW5kVGltZX0pIHRvb2sgKCR7cFRpbWVEZWx0YX1tcykgb3IgKCR7dG1wSG91cnN9OiR7dG1wTWludXRlc306JHt0bXBTZWNvbmRzfS4ke3RtcE1zfSlgLCBwRGF0dW0pO1xuXHR9XG5cblx0bG9nVGltZURlbHRhUmVsYXRpdmUocFN0YXJ0VGltZSwgcE1lc3NhZ2UsIHBEYXR1bSlcblx0e1xuXHRcdHRoaXMubG9nVGltZURlbHRhKHRoaXMuZ2V0VGltZURlbHRhKHBTdGFydFRpbWUpLCBwTWVzc2FnZSwgcERhdHVtKTtcblx0fVxuXG5cdGxvZ1RpbWVEZWx0YVJlbGF0aXZlSHVtYW4ocFN0YXJ0VGltZSwgcE1lc3NhZ2UsIHBEYXR1bSlcblx0e1xuXHRcdHRoaXMubG9nVGltZURlbHRhSHVtYW4odGhpcy5nZXRUaW1lRGVsdGEocFN0YXJ0VGltZSksIHBNZXNzYWdlLCBwRGF0dW0pO1xuXHR9XG59XG5cbi8vIFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5mdW5jdGlvbiBhdXRvQ29uc3RydWN0KHBTZXR0aW5ncylcbntcblx0cmV0dXJuIG5ldyBGYWJsZUxvZyhwU2V0dGluZ3MpO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0ge25ldzphdXRvQ29uc3RydWN0LCBGYWJsZUxvZzpGYWJsZUxvZ307XG4iXX0=
},{"./Fable-Log-DefaultProviders.js":4,"./Fable-Log-DefaultStreams.json":5}]},{},[7])(7)
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJub2RlX21vZHVsZXMvZmFibGUtdXVpZC9zb3VyY2UvRmFibGUtVVVJRC1SYW5kb20tQnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9mYWJsZS11dWlkL3NvdXJjZS9GYWJsZS1VVUlELmpzIiwic291cmNlL0ZhYmxlLUxvZy1CYXNlTG9nZ2VyLmpzIiwic291cmNlL0ZhYmxlLUxvZy1EZWZhdWx0UHJvdmlkZXJzLUJyb3dzZXIuanMiLCJzb3VyY2UvRmFibGUtTG9nLURlZmF1bHRTdHJlYW1zLmpzb24iLCJzb3VyY2UvRmFibGUtTG9nLUxvZ2dlci1Db25zb2xlLmpzIiwic291cmNlL0ZhYmxlLUxvZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCIvKipcbiogUmFuZG9tIEJ5dGUgR2VuZXJhdG9yIC0gQnJvd3NlciB2ZXJzaW9uXG4qXG4qIEBsaWNlbnNlIE1JVFxuKlxuKiBAYXV0aG9yIFN0ZXZlbiBWZWxvem8gPHN0ZXZlbkB2ZWxvem8uY29tPlxuKi9cblxuLy8gQWRhcHRlZCBmcm9tIG5vZGUtdXVpZCAoaHR0cHM6Ly9naXRodWIuY29tL2tlbGVrdGl2L25vZGUtdXVpZClcbi8vIFVuaXF1ZSBJRCBjcmVhdGlvbiByZXF1aXJlcyBhIGhpZ2ggcXVhbGl0eSByYW5kb20gIyBnZW5lcmF0b3IuICBJbiB0aGVcbi8vIGJyb3dzZXIgdGhpcyBpcyBhIGxpdHRsZSBjb21wbGljYXRlZCBkdWUgdG8gdW5rbm93biBxdWFsaXR5IG9mIE1hdGgucmFuZG9tKClcbi8vIGFuZCBpbmNvbnNpc3RlbnQgc3VwcG9ydCBmb3IgdGhlIGBjcnlwdG9gIEFQSS4gIFdlIGRvIHRoZSBiZXN0IHdlIGNhbiB2aWFcbi8vIGZlYXR1cmUtZGV0ZWN0aW9uXG5jbGFzcyBSYW5kb21CeXRlc1xue1xuXHRjb25zdHJ1Y3RvcigpXG5cdHtcblxuXHRcdC8vIGdldFJhbmRvbVZhbHVlcyBuZWVkcyB0byBiZSBpbnZva2VkIGluIGEgY29udGV4dCB3aGVyZSBcInRoaXNcIiBpcyBhIENyeXB0b1xuXHRcdC8vIGltcGxlbWVudGF0aW9uLiBBbHNvLCBmaW5kIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBjcnlwdG8gb24gSUUxMS5cblx0XHR0aGlzLmdldFJhbmRvbVZhbHVlcyA9ICh0eXBlb2YoY3J5cHRvKSAhPSAndW5kZWZpbmVkJyAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzICYmIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChjcnlwdG8pKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIFx0XHQodHlwZW9mKG1zQ3J5cHRvKSAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93Lm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyA9PSAnZnVuY3Rpb24nICYmIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKG1zQ3J5cHRvKSk7XG5cdH1cblxuXHQvLyBXSEFUV0cgY3J5cHRvIFJORyAtIGh0dHA6Ly93aWtpLndoYXR3Zy5vcmcvd2lraS9DcnlwdG9cblx0Z2VuZXJhdGVXaGF0V0dCeXRlcygpXG5cdHtcblx0XHRsZXQgdG1wQnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblx0XHR0aGlzLmdldFJhbmRvbVZhbHVlcyh0bXBCdWZmZXIpO1xuXHRcdHJldHVybiB0bXBCdWZmZXI7XG5cdH1cblxuXHQvLyBNYXRoLnJhbmRvbSgpLWJhc2VkIChSTkcpXG5cdGdlbmVyYXRlUmFuZG9tQnl0ZXMoKVxuXHR7XG5cdFx0Ly9cblx0XHQvLyBJZiBhbGwgZWxzZSBmYWlscywgdXNlIE1hdGgucmFuZG9tKCkuICBJdCdzIGZhc3QsIGJ1dCBpcyBvZiB1bnNwZWNpZmllZFxuXHRcdC8vIHF1YWxpdHkuXG5cdFx0bGV0IHRtcEJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDE2KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIHRtcFZhbHVlOyBpIDwgMTY7IGkrKylcblx0XHR7XG5cdFx0XHRpZiAoKGkgJiAweDAzKSA9PT0gMClcblx0XHRcdHtcblx0XHRcdFx0dG1wVmFsdWUgPSBNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwMDA7XG5cdFx0XHR9XG5cblx0XHRcdHRtcEJ1ZmZlcltpXSA9IHRtcFZhbHVlID4+PiAoKGkgJiAweDAzKSA8PCAzKSAmIDB4ZmY7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRtcEJ1ZmZlcjtcblx0fVxuXG5cdGdlbmVyYXRlKClcblx0e1xuXHRcdGlmICh0aGlzLmdldFJhbmRvbVZhbHVlcylcblx0XHR7XG5cdFx0XHRyZXR1cm4gZ2VuZXJhdGVXaGF0V0dCeXRlcygpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0cmV0dXJuIGdlbmVyYXRlUmFuZG9tQnl0ZXMoKTtcblx0XHR9XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSYW5kb21CeXRlcztcbiIsIi8qKlxuKiBGYWJsZSBVVUlEIEdlbmVyYXRvclxuKlxuKiBAbGljZW5zZSBNSVRcbipcbiogQGF1dGhvciBTdGV2ZW4gVmVsb3pvIDxzdGV2ZW5AdmVsb3pvLmNvbT5cbiogQG1vZHVsZSBGYWJsZSBVVUlEXG4qL1xuXG4vKipcbiogRmFibGUgU29sdXRpb24gVVVJRCBHZW5lcmF0aW9uIE1haW4gQ2xhc3NcbipcbiogQGNsYXNzIEZhYmxlVVVJRFxuKiBAY29uc3RydWN0b3JcbiovXG5cbnZhciBsaWJSYW5kb21CeXRlR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9GYWJsZS1VVUlELVJhbmRvbS5qcycpXG5cbmNsYXNzIEZhYmxlVVVJRFxue1xuXHRjb25zdHJ1Y3RvcihwU2V0dGluZ3MpXG5cdHtcblx0XHQvLyBEZXRlcm1pbmUgaWYgdGhlIG1vZHVsZSBpcyBpbiBcIlJhbmRvbSBVVUlEIE1vZGVcIiB3aGljaCBtZWFucyBqdXN0IHVzZSB0aGUgcmFuZG9tIGNoYXJhY3RlciBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgdjQgcmFuZG9tIFVVSUQgc3BlYy5cblx0XHQvLyBOb3RlIHRoaXMgYWxsb3dzIFVVSURzIG9mIHZhcmlvdXMgbGVuZ3RocyAoaW5jbHVkaW5nIHZlcnkgc2hvcnQgb25lcykgYWx0aG91Z2ggZ3VhcmFudGVlZCB1bmlxdWVuZXNzIGdvZXMgZG93bmhpbGwgZmFzdC5cblx0XHR0aGlzLl9VVUlETW9kZVJhbmRvbSA9ICh0eXBlb2YocFNldHRpbmdzKSA9PT0gJ29iamVjdCcpICYmIChwU2V0dGluZ3MuaGFzT3duUHJvcGVydHkoJ1VVSURNb2RlUmFuZG9tJykpID8gKHBTZXR0aW5ncy5VVUlETW9kZVJhbmRvbSA9PSB0cnVlKSA6IGZhbHNlO1xuXHRcdC8vIFRoZXNlIHR3byBwcm9wZXJ0aWVzIGFyZSBvbmx5IHVzZWZ1bCBpZiB3ZSBhcmUgaW4gUmFuZG9tIG1vZGUuICBPdGhlcndpc2UgaXQgZ2VuZXJhdGVzIGEgdjQgc3BlY1xuXHRcdC8vIExlbmd0aCBmb3IgXCJSYW5kb20gVVVJRCBNb2RlXCIgaXMgc2V0IC0tIGlmIG5vdCBzZXQgaXQgdG8gOFxuXHRcdHRoaXMuX1VVSURMZW5ndGggPSAodHlwZW9mKHBTZXR0aW5ncykgPT09ICdvYmplY3QnKSAmJiAocFNldHRpbmdzLmhhc093blByb3BlcnR5KCdVVUlETGVuZ3RoJykpID8gKHBTZXR0aW5ncy5VVUlETGVuZ3RoICsgMCkgOiA4O1xuXHRcdC8vIERpY3Rpb25hcnkgZm9yIFwiUmFuZG9tIFVVSUQgTW9kZVwiXG5cdFx0dGhpcy5fVVVJRFJhbmRvbURpY3Rpb25hcnkgPSAodHlwZW9mKHBTZXR0aW5ncykgPT09ICdvYmplY3QnKSAmJiAocFNldHRpbmdzLmhhc093blByb3BlcnR5KCdVVUlERGljdGlvbmFyeScpKSA/IChwU2V0dGluZ3MuVVVJRERpY3Rpb25hcnkgKyAwKSA6ICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic7XG5cblx0XHR0aGlzLnJhbmRvbUJ5dGVHZW5lcmF0b3IgPSBuZXcgbGliUmFuZG9tQnl0ZUdlbmVyYXRvcigpO1xuXG5cdFx0Ly8gTG9va3VwIHRhYmxlIGZvciBoZXggY29kZXNcblx0XHR0aGlzLl9IZXhMb29rdXAgPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IDI1NjsgKytpKVxuXHRcdHtcblx0XHRcdHRoaXMuX0hleExvb2t1cFtpXSA9IChpICsgMHgxMDApLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWRhcHRlZCBmcm9tIG5vZGUtdXVpZCAoaHR0cHM6Ly9naXRodWIuY29tL2tlbGVrdGl2L25vZGUtdXVpZClcblx0Ynl0ZXNUb1VVSUQocEJ1ZmZlcilcblx0e1xuXHRcdGxldCBpID0gMDtcblx0XHQvLyBqb2luIHVzZWQgdG8gZml4IG1lbW9yeSBpc3N1ZSBjYXVzZWQgYnkgY29uY2F0ZW5hdGlvbjogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzE3NSNjNFxuXHRcdHJldHVybiAoW1xuXHRcdFx0XHRcdHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCB0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXSwgXG5cdFx0XHRcdFx0dGhpcy5fSGV4TG9va3VwW3BCdWZmZXJbaSsrXV0sIHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCAnLScsXG5cdFx0XHRcdFx0dGhpcy5fSGV4TG9va3VwW3BCdWZmZXJbaSsrXV0sIHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCAnLScsXG5cdFx0XHRcdFx0dGhpcy5fSGV4TG9va3VwW3BCdWZmZXJbaSsrXV0sIHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCAnLScsXG5cdFx0XHRcdFx0dGhpcy5fSGV4TG9va3VwW3BCdWZmZXJbaSsrXV0sIHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCAnLScsXG5cdFx0XHRcdFx0dGhpcy5fSGV4TG9va3VwW3BCdWZmZXJbaSsrXV0sIHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCB0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXSwgdGhpcy5fSGV4TG9va3VwW3BCdWZmZXJbaSsrXV0sIHRoaXMuX0hleExvb2t1cFtwQnVmZmVyW2krK11dLCB0aGlzLl9IZXhMb29rdXBbcEJ1ZmZlcltpKytdXVxuXHRcdFx0XHRdKS5qb2luKCcnKTtcblx0fVxuXG5cdC8vIEFkYXB0ZWQgZnJvbSBub2RlLXV1aWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9rZWxla3Rpdi9ub2RlLXV1aWQpXG5cdGdlbmVyYXRlVVVJRHY0KClcblx0e1xuXHRcdGxldCB0bXBCdWZmZXIgPSBuZXcgQXJyYXkoMTYpO1xuXHRcdHZhciB0bXBSYW5kb21CeXRlcyA9IHRoaXMucmFuZG9tQnl0ZUdlbmVyYXRvci5nZW5lcmF0ZSgpO1xuXG5cdFx0Ly8gUGVyIDQuNCwgc2V0IGJpdHMgZm9yIHZlcnNpb24gYW5kIGBjbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkYFxuXHRcdHRtcFJhbmRvbUJ5dGVzWzZdID0gKHRtcFJhbmRvbUJ5dGVzWzZdICYgMHgwZikgfCAweDQwO1xuXHRcdHRtcFJhbmRvbUJ5dGVzWzhdID0gKHRtcFJhbmRvbUJ5dGVzWzhdICYgMHgzZikgfCAweDgwO1xuXG5cdFx0cmV0dXJuIHRoaXMuYnl0ZXNUb1VVSUQodG1wUmFuZG9tQnl0ZXMpO1xuXHR9XG5cblx0Ly8gU2ltcGxlIHJhbmRvbSBVVUlEIGdlbmVyYXRpb25cblx0Z2VuZXJhdGVSYW5kb20oKVxuXHR7XG5cdFx0bGV0IHRtcFVVSUQgPSAnJztcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fVVVJRExlbmd0aDsgaSsrKVxuXHRcdHtcblx0XHRcdHRtcFVVSUQgKz0gdGhpcy5fVVVJRFJhbmRvbURpY3Rpb25hcnkuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICh0aGlzLl9VVUlEUmFuZG9tRGljdGlvbmFyeS5sZW5ndGgtMSkpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdG1wVVVJRDtcblx0fVxuXG5cdC8vIEFkYXB0ZWQgZnJvbSBub2RlLXV1aWQgKGh0dHBzOi8vZ2l0aHViLmNvbS9rZWxla3Rpdi9ub2RlLXV1aWQpXG5cdGdldFVVSUQoKVxuXHR7XG5cdFx0aWYgKHRoaXMuX1VVSURNb2RlUmFuZG9tKVxuXHRcdHtcblx0XHRcdHJldHVybiB0aGlzLmdlbmVyYXRlUmFuZG9tKCk7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZW5lcmF0ZVVVSUR2NCgpO1xuXHRcdH1cblx0fVxufVxuXG4vLyBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuZnVuY3Rpb24gYXV0b0NvbnN0cnVjdChwU2V0dGluZ3MpXG57XG5cdHJldHVybiBuZXcgRmFibGVVVUlEKHBTZXR0aW5ncyk7XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7bmV3OmF1dG9Db25zdHJ1Y3QsIEZhYmxlVVVJRDpGYWJsZVVVSUR9O1xuIiwiLyoqXG4qIEJhc2UgTG9nZ2VyIENsYXNzXG4qXG4qIEBsaWNlbnNlIE1JVFxuKlxuKiBAYXV0aG9yIFN0ZXZlbiBWZWxvem8gPHN0ZXZlbkB2ZWxvem8uY29tPlxuKi9cbmNvbnN0IGxpYkZhYmxlVVVJRCA9IG5ldyAocmVxdWlyZSgnZmFibGUtdXVpZCcpLkZhYmxlVVVJRCkoKTtcblxuY2xhc3MgQmFzZUxvZ2dlclxue1xuXHRjb25zdHJ1Y3RvcihwTG9nU3RyZWFtU2V0dGluZ3MsIHBGYWJsZUxvZylcblx0e1xuXHRcdC8vIFRoaXMgc2hvdWxkIG5vdCBwb3NzaWJseSBiZSBhYmxlIHRvIGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IGEgc2V0dGluZ3Mgb2JqZWN0XG5cdFx0dGhpcy5fU2V0dGluZ3MgPSBwTG9nU3RyZWFtU2V0dGluZ3M7XG5cdFx0XG5cdFx0Ly8gVGhlIGJhc2UgbG9nZ2VyIGRvZXMgbm90aGluZyBidXQgYXNzb2NpYXRlIGEgVVVJRCB3aXRoIGl0c2VsZlxuXHRcdHRoaXMubG9nZ2VyVVVJRCA9IGxpYkZhYmxlVVVJRC5nZXRVVUlEKCk7XG5cdH1cblxuXHRpbml0aWFsaXplKClcblx0e1xuXHRcdC8vIE5vIG9wZXJhdGlvbi5cblx0fVxuXG5cdHRyYWNlKHBMb2dUZXh0LCBwTG9nT2JqZWN0KVxuXHR7XG5cdFx0dGhpcy53cml0ZShcInRyYWNlXCIsIHBMb2dUZXh0LCBwTG9nT2JqZWN0KTtcblx0fVxuXG5cdGRlYnVnKHBMb2dUZXh0LCBwTG9nT2JqZWN0KVxuXHR7XG5cdFx0dGhpcy53cml0ZShcImRlYnVnXCIsIHBMb2dUZXh0LCBwTG9nT2JqZWN0KTtcblx0fVxuXG5cdGluZm8ocExvZ1RleHQsIHBMb2dPYmplY3QpXG5cdHtcblx0XHR0aGlzLndyaXRlKFwiaW5mb1wiLCBwTG9nVGV4dCwgcExvZ09iamVjdCk7XG5cdH1cblxuXHR3YXJuKHBMb2dUZXh0LCBwTG9nT2JqZWN0KVxuXHR7XG5cdFx0dGhpcy53cml0ZShcIndhcm5cIiwgcExvZ1RleHQsIHBMb2dPYmplY3QpO1xuXHR9XG5cblx0ZXJyb3IocExvZ1RleHQsIHBMb2dPYmplY3QpXG5cdHtcblx0XHR0aGlzLndyaXRlKFwiZXJyb3JcIiwgcExvZ1RleHQsIHBMb2dPYmplY3QpO1xuXHR9XG5cblx0ZmF0YWwocExvZ1RleHQsIHBMb2dPYmplY3QpXG5cdHtcblx0XHR0aGlzLndyaXRlKFwiZmF0YWxcIiwgcExvZ1RleHQsIHBMb2dPYmplY3QpO1xuXHR9XG5cblx0d3JpdGUocExvZ0xldmVsLCBwTG9nVGV4dCwgcExvZ09iamVjdClcblx0e1xuXHRcdC8vIFRoZSBiYXNlIGxvZ2dlciBkb2VzIG5vdGhpbmcuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBCYXNlTG9nZ2VyO1xuIiwiLyoqXG4qIERlZmF1bHQgTG9nZ2VyIFByb3ZpZGVyIEZ1bmN0aW9uIC0tLSBCcm93c2VyXG4qXG4qIEBsaWNlbnNlIE1JVFxuKlxuKiBAYXV0aG9yIFN0ZXZlbiBWZWxvem8gPHN0ZXZlbkB2ZWxvem8uY29tPlxuKi9cblxuLy8gUmV0dXJuIHRoZSBwcm92aWRlcnMgdGhhdCBhcmUgYXZhaWxhYmxlIHdpdGhvdXQgZXh0ZW5zaW9ucyBsb2FkZWRcbmdldERlZmF1bHRQcm92aWRlcnMgPSAoKSA9Plxue1xuXHRsZXQgdG1wRGVmYXVsdFByb3ZpZGVycyA9IHt9O1xuXG5cdHRtcERlZmF1bHRQcm92aWRlcnMuY29uc29sZSA9IHJlcXVpcmUoJy4vRmFibGUtTG9nLUxvZ2dlci1Db25zb2xlLmpzJyk7XG5cdHRtcERlZmF1bHRQcm92aWRlcnMuZGVmYXVsdCA9IHRtcERlZmF1bHRQcm92aWRlcnMuY29uc29sZTtcblxuXHRyZXR1cm4gdG1wRGVmYXVsdFByb3ZpZGVycztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXREZWZhdWx0UHJvdmlkZXJzKCk7IiwibW9kdWxlLmV4cG9ydHM9W1xuICAgIHtcbiAgICAgICAgXCJsb2dnZXJ0eXBlXCI6IFwiY29uc29sZVwiLFxuICAgICAgICBcInN0cmVhbXR5cGVcIjogXCJjb25zb2xlXCIsXG4gICAgICAgIFwibGV2ZWxcIjogXCJ0cmFjZVwiXG4gICAgfVxuXSIsImxldCBsaWJCYXNlTG9nZ2VyID0gcmVxdWlyZSgnLi9GYWJsZS1Mb2ctQmFzZUxvZ2dlci5qcycpO1xuXG5jbGFzcyBDb25zb2xlTG9nZ2VyIGV4dGVuZHMgbGliQmFzZUxvZ2dlclxue1xuXHRjb25zdHJ1Y3RvcihwTG9nU3RyZWFtU2V0dGluZ3MsIHBGYWJsZUxvZylcblx0e1xuXHRcdHN1cGVyKHBMb2dTdHJlYW1TZXR0aW5ncylcblxuXHRcdHRoaXMuX1Nob3dUaW1lU3RhbXBzID0gcExvZ1N0cmVhbVNldHRpbmdzLmhhc093blByb3BlcnR5KCdTaG93VGltZVN0YW1wcycpID8gKHBMb2dTdHJlYW1TZXR0aW5ncy5TaG93VGltZVN0YW1wcyA9PSB0cnVlKSA6IGZhbHNlO1xuXHRcdHRoaXMuX0Zvcm1hdHRlZFRpbWVTdGFtcHMgPSBwTG9nU3RyZWFtU2V0dGluZ3MuaGFzT3duUHJvcGVydHkoJ0Zvcm1hdHRlZFRpbWVTdGFtcHMnKSA/IChwTG9nU3RyZWFtU2V0dGluZ3MuRm9ybWF0dGVkVGltZVN0YW1wcyA9PSB0cnVlKSA6IGZhbHNlO1xuXG5cdFx0dGhpcy5fQ29udGV4dE1lc3NhZ2UgPSBwTG9nU3RyZWFtU2V0dGluZ3MuaGFzT3duUHJvcGVydHkoJ0NvbnRleHQnKSA/IGAgKCR7cExvZ1N0cmVhbVNldHRpbmdzLkNvbnRleHR9KWAgOiBcblx0XHRcdFx0XHRcdFx0XHRwRmFibGVMb2cuX1NldHRpbmdzLmhhc093blByb3BlcnR5KCdQcm9kdWN0JykgPyBgICgke3BGYWJsZUxvZy5fU2V0dGluZ3MuUHJvZHVjdH0pYCA6XG5cdFx0XHRcdFx0XHRcdFx0Jyc7XG5cdH1cblxuXHR3cml0ZShwTGV2ZWwsIHBMb2dUZXh0LCBwT2JqZWN0KVxuXHR7XG5cdFx0aWYgKHRoaXMuX1Nob3dUaW1lU3RhbXBzICYmIHRoaXMuX0Zvcm1hdHRlZFRpbWVTdGFtcHMpXG5cdFx0e1xuXHRcdFx0bGV0IHRtcERhdGUgPSAobmV3IERhdGUoKSkudG9JU09TdHJpbmcoKTtcblx0XHRcdGNvbnNvbGUubG9nKGAke3RtcERhdGV9IFske3BMZXZlbH1dJHt0aGlzLl9Db250ZXh0TWVzc2FnZX0gJHtwTG9nVGV4dH1gKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAodGhpcy5fU2hvd1RpbWVTdGFtcHMpXG5cdFx0e1xuXHRcdFx0bGV0IHRtcERhdGUgPSArbmV3IERhdGUoKTtcblx0XHRcdGNvbnNvbGUubG9nKGAke3RtcERhdGV9IFske3BMZXZlbH1dJHt0aGlzLl9Db250ZXh0TWVzc2FnZX0gJHtwTG9nVGV4dH1gKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdGNvbnNvbGUubG9nKGBbJHtwTGV2ZWx9XSR7dGhpcy5fQ29udGV4dE1lc3NhZ2V9ICR7cExvZ1RleHR9YCk7XG5cdFx0fVxuXG5cdFx0Ly8gV3JpdGUgb3V0IHRoZSBvYmplY3Qgb24gYSBzZXBhcmF0ZSBsaW5lIGlmIGl0IGlzIHBhc3NlZCBpblxuXHRcdGlmICh0eXBlb2YocE9iamVjdCkgIT09ICd1bmRlZmluZWQnKVxuXHRcdHtcblx0XHRcdGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHBPYmplY3QsIG51bGwsIDQpKTtcblx0XHR9XG5cdH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbnNvbGVMb2dnZXI7IiwiLyoqXG4qIEZhYmxlIExvZ2dpbmcgQWRkLW9uXG4qXG4qIEBsaWNlbnNlIE1JVFxuKlxuKiBAYXV0aG9yIFN0ZXZlbiBWZWxvem8gPHN0ZXZlbkB2ZWxvem8uY29tPlxuKiBAbW9kdWxlIEZhYmxlIExvZ2dlclxuKi9cblxuLyoqXG4qIEZhYmxlIFNvbHV0aW9uIExvZyBXcmFwcGVyIE1haW4gQ2xhc3NcbipcbiogQGNsYXNzIEZhYmxlTG9nXG4qIEBjb25zdHJ1Y3RvclxuKi9cbmNsYXNzIEZhYmxlTG9nXG57XG5cdGNvbnN0cnVjdG9yKHBGYWJsZVNldHRpbmdzLCBwRmFibGUpXG5cdHtcblx0XHRsZXQgdG1wU2V0dGluZ3MgPSAodHlwZW9mKHBGYWJsZVNldHRpbmdzKSA9PT0gJ29iamVjdCcpID8gcEZhYmxlU2V0dGluZ3MgOiB7fVxuXHRcdHRoaXMuX1NldHRpbmdzID0gdG1wU2V0dGluZ3M7XG5cblx0XHR0aGlzLl9Qcm92aWRlcnMgPSByZXF1aXJlKCcuL0ZhYmxlLUxvZy1EZWZhdWx0UHJvdmlkZXJzLmpzJyk7XG5cblx0XHR0aGlzLl9TdHJlYW1EZWZpbml0aW9ucyA9ICh0bXBTZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eSgnTG9nU3RyZWFtcycpKSA/IHRtcFNldHRpbmdzLkxvZ1N0cmVhbXMgOiByZXF1aXJlKCcuL0ZhYmxlLUxvZy1EZWZhdWx0U3RyZWFtcy5qc29uJyk7XG5cblx0XHR0aGlzLmxvZ1N0cmVhbXMgPSBbXTtcblxuXHRcdC8vIFRoaXMgb2JqZWN0IGdldHMgZGVjb3JhdGVkIGZvciBvbmUtdGltZSBpbnN0YW50aWF0ZWQgcHJvdmlkZXJzIHRoYXRcblx0XHQvLyAgaGF2ZSBtdWx0aXBsZSBvdXRwdXRzLCBzdWNoIGFzIGJ1bnlhbi5cblx0XHR0aGlzLmxvZ1Byb3ZpZGVycyA9IHt9O1xuXG5cdFx0Ly8gQSBoYXNoIGxpc3Qgb2YgdGhlIEdVSURzIGZvciBlYWNoIGxvZyBzdHJlYW0sIHNvIHRoZXkgY2FuJ3QgYmUgYWRkZWQgdG8gdGhlIHNldCBtb3JlIHRoYW4gb25lIHRpbWVcblx0XHR0aGlzLmFjdGl2ZUxvZ1N0cmVhbXMgPSB7fTtcblxuXHRcdHRoaXMubG9nU3RyZWFtc1RyYWNlID0gW107XG5cdFx0dGhpcy5sb2dTdHJlYW1zRGVidWcgPSBbXTtcblx0XHR0aGlzLmxvZ1N0cmVhbXNJbmZvID0gW107XG5cdFx0dGhpcy5sb2dTdHJlYW1zV2FybiA9IFtdO1xuXHRcdHRoaXMubG9nU3RyZWFtc0Vycm9yID0gW107XG5cdFx0dGhpcy5sb2dTdHJlYW1zRmF0YWwgPSBbXTtcblxuXHRcdHRoaXMuZGF0dW1EZWNvcmF0b3IgPSAocERhdHVtKSA9PiBwRGF0dW07XG5cblx0XHR0aGlzLnV1aWQgPSAodHlwZW9mKHRtcFNldHRpbmdzLlByb2R1Y3QpID09PSAnc3RyaW5nJykgPyB0bXBTZXR0aW5ncy5Qcm9kdWN0IDogJ0RlZmF1bHQnO1xuXHR9XG5cblx0YWRkTG9nZ2VyKHBMb2dnZXIsIHBMZXZlbClcblx0e1xuXHRcdC8vIEJhaWwgb3V0IGlmIHdlJ3ZlIGFscmVhZHkgY3JlYXRlZCBvbmUuXG5cdFx0aWYgKHRoaXMuYWN0aXZlTG9nU3RyZWFtcy5oYXNPd25Qcm9wZXJ0eShwTG9nZ2VyLmxvZ2dlclVVSUQpKVxuXHRcdHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBBZGQgaXQgdG8gdGhlIHN0cmVhbXMgYW5kIHRvIHRoZSBtdXRleFxuXHRcdHRoaXMubG9nU3RyZWFtcy5wdXNoKHBMb2dnZXIpO1xuXHRcdHRoaXMuYWN0aXZlTG9nU3RyZWFtc1twTG9nZ2VyLmxvZ2dlclVVSURdID0gdHJ1ZTtcblxuXHRcdC8vIE1ha2Ugc3VyZSBhIGtvc2hlciBsZXZlbCB3YXMgcGFzc2VkIGluXG5cdFx0c3dpdGNoIChwTGV2ZWwpXG5cdFx0e1xuXHRcdFx0Y2FzZSAndHJhY2UnOlxuXHRcdFx0XHR0aGlzLmxvZ1N0cmVhbXNUcmFjZS5wdXNoKHBMb2dnZXIpO1xuXHRcdFx0Y2FzZSAnZGVidWcnOlxuXHRcdFx0XHR0aGlzLmxvZ1N0cmVhbXNEZWJ1Zy5wdXNoKHBMb2dnZXIpO1xuXHRcdFx0Y2FzZSAnaW5mbyc6XG5cdFx0XHRcdHRoaXMubG9nU3RyZWFtc0luZm8ucHVzaChwTG9nZ2VyKTtcblx0XHRcdGNhc2UgJ3dhcm4nOlxuXHRcdFx0XHR0aGlzLmxvZ1N0cmVhbXNXYXJuLnB1c2gocExvZ2dlcik7XG5cdFx0XHRjYXNlICdlcnJvcic6XG5cdFx0XHRcdHRoaXMubG9nU3RyZWFtc0Vycm9yLnB1c2gocExvZ2dlcik7XG5cdFx0XHRjYXNlICdmYXRhbCc6XG5cdFx0XHRcdHRoaXMubG9nU3RyZWFtc0ZhdGFsLnB1c2gocExvZ2dlcik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0c2V0RGF0dW1EZWNvcmF0b3IoZkRhdHVtRGVjb3JhdG9yKVxuXHR7XG5cdFx0aWYgKHR5cGVvZihmRGF0dW1EZWNvcmF0b3IpID09PSAnZnVuY3Rpb24nKVxuXHRcdHtcblx0XHRcdHRoaXMuZGF0dW1EZWNvcmF0b3IgPSBmRGF0dW1EZWNvcmF0b3I7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHR0aGlzLmRhdHVtRGVjb3JhdG9yID0gKHBEYXR1bSkgPT4gcERhdHVtO1xuXHRcdH1cblx0fVxuXG5cdHRyYWNlKHBNZXNzYWdlLCBwRGF0dW0pXG5cdHtcblx0XHRjb25zdCB0bXBEZWNvcmF0ZWREYXR1bSA9IHRoaXMuZGF0dW1EZWNvcmF0b3IocERhdHVtKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubG9nU3RyZWFtc1RyYWNlLmxlbmd0aDsgaSsrKVxuXHRcdHtcblx0XHRcdHRoaXMubG9nU3RyZWFtc1RyYWNlW2ldLnRyYWNlKHBNZXNzYWdlLCB0bXBEZWNvcmF0ZWREYXR1bSk7XG5cdFx0fVxuXHR9XG5cblx0ZGVidWcocE1lc3NhZ2UsIHBEYXR1bSlcblx0e1xuXHRcdGNvbnN0IHRtcERlY29yYXRlZERhdHVtID0gdGhpcy5kYXR1bURlY29yYXRvcihwRGF0dW0pO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sb2dTdHJlYW1zRGVidWcubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0dGhpcy5sb2dTdHJlYW1zRGVidWdbaV0uZGVidWcocE1lc3NhZ2UsIHRtcERlY29yYXRlZERhdHVtKTtcblx0XHR9XG5cdH1cblxuXHRpbmZvKHBNZXNzYWdlLCBwRGF0dW0pXG5cdHtcblx0XHRjb25zdCB0bXBEZWNvcmF0ZWREYXR1bSA9IHRoaXMuZGF0dW1EZWNvcmF0b3IocERhdHVtKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubG9nU3RyZWFtc0luZm8ubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0dGhpcy5sb2dTdHJlYW1zSW5mb1tpXS5pbmZvKHBNZXNzYWdlLCB0bXBEZWNvcmF0ZWREYXR1bSk7XG5cdFx0fVxuXHR9XG5cblx0d2FybihwTWVzc2FnZSwgcERhdHVtKVxuXHR7XG5cdFx0Y29uc3QgdG1wRGVjb3JhdGVkRGF0dW0gPSB0aGlzLmRhdHVtRGVjb3JhdG9yKHBEYXR1bSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxvZ1N0cmVhbXNXYXJuLmxlbmd0aDsgaSsrKVxuXHRcdHtcblx0XHRcdHRoaXMubG9nU3RyZWFtc1dhcm5baV0ud2FybihwTWVzc2FnZSwgdG1wRGVjb3JhdGVkRGF0dW0pO1xuXHRcdH1cblx0fVxuXG5cdGVycm9yKHBNZXNzYWdlLCBwRGF0dW0pXG5cdHtcblx0XHRjb25zdCB0bXBEZWNvcmF0ZWREYXR1bSA9IHRoaXMuZGF0dW1EZWNvcmF0b3IocERhdHVtKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubG9nU3RyZWFtc0Vycm9yLmxlbmd0aDsgaSsrKVxuXHRcdHtcblx0XHRcdHRoaXMubG9nU3RyZWFtc0Vycm9yW2ldLmVycm9yKHBNZXNzYWdlLCB0bXBEZWNvcmF0ZWREYXR1bSk7XG5cdFx0fVxuXHR9XG5cblx0ZmF0YWwocE1lc3NhZ2UsIHBEYXR1bSlcblx0e1xuXHRcdGNvbnN0IHRtcERlY29yYXRlZERhdHVtID0gdGhpcy5kYXR1bURlY29yYXRvcihwRGF0dW0pO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sb2dTdHJlYW1zRmF0YWwubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0dGhpcy5sb2dTdHJlYW1zRmF0YWxbaV0uZmF0YWwocE1lc3NhZ2UsIHRtcERlY29yYXRlZERhdHVtKTtcblx0XHR9XG5cdH1cblxuXHRpbml0aWFsaXplKClcblx0e1xuXHRcdC8vIFwiaW5pdGlhbGl6ZVwiIGVhY2ggbG9nZ2VyIGFzIGRlZmluZWQgaW4gdGhlIGxvZ2dpbmcgcGFyYW1ldGVyc1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fU3RyZWFtRGVmaW5pdGlvbnMubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0bGV0IHRtcFN0cmVhbURlZmluaXRpb24gPSBPYmplY3QuYXNzaWduKHtsb2dnZXJ0eXBlOidkZWZhdWx0JyxzdHJlYW10eXBlOidjb25zb2xlJyxsZXZlbDonaW5mbyd9LHRoaXMuX1N0cmVhbURlZmluaXRpb25zW2ldKTtcblxuXHRcdFx0aWYgKCF0aGlzLl9Qcm92aWRlcnMuaGFzT3duUHJvcGVydHkodG1wU3RyZWFtRGVmaW5pdGlvbi5sb2dnZXJ0eXBlKSlcblx0XHRcdHtcblx0XHRcdFx0Y29uc29sZS5sb2coYEVycm9yIGluaXRpYWxpemluZyBsb2cgc3RyZWFtOiBiYWQgbG9nZ2VydHlwZSBpbiBzdHJlYW0gZGVmaW5pdGlvbiAke0pTT04uc3RyaW5naWZ5KHRtcFN0cmVhbURlZmluaXRpb24pfWApO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZVxuXHRcdFx0e1xuXHRcdFx0XHR0aGlzLmFkZExvZ2dlcihuZXcgdGhpcy5fUHJvdmlkZXJzW3RtcFN0cmVhbURlZmluaXRpb24ubG9nZ2VydHlwZV0odG1wU3RyZWFtRGVmaW5pdGlvbiwgdGhpcyksIHRtcFN0cmVhbURlZmluaXRpb24ubGV2ZWwpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIE5vdyBpbml0aWFsaXplIGVhY2ggb25lLlxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sb2dTdHJlYW1zLmxlbmd0aDsgaSsrKVxuXHRcdHtcblx0XHRcdHRoaXMubG9nU3RyZWFtc1tpXS5pbml0aWFsaXplKCk7XG5cdFx0fVxuXHR9XG5cblx0bG9nVGltZShwTWVzc2FnZSwgcERhdHVtKVxuXHR7XG5cdFx0bGV0IHRtcE1lc3NhZ2UgPSAodHlwZW9mKHBNZXNzYWdlKSAhPT0gJ3VuZGVmaW5lZCcpID8gcE1lc3NhZ2UgOiAnVGltZSc7XG5cdFx0bGV0IHRtcFRpbWUgPSBuZXcgRGF0ZSgpO1xuXHRcdHRoaXMuaW5mbyhgJHt0bXBNZXNzYWdlfSAke3RtcFRpbWV9IChlcG9jaCAkeyt0bXBUaW1lfSlgLCBwRGF0dW0pO1xuXHR9XG5cblx0Ly8gR2V0IGEgdGltZXN0YW1wXG5cdGdldFRpbWVTdGFtcCgpXG5cdHtcblx0XHRyZXR1cm4gK25ldyBEYXRlKCk7XG5cdH1cblxuXHRnZXRUaW1lRGVsdGEocFRpbWVTdGFtcClcblx0e1xuXHRcdGxldCB0bXBFbmRUaW1lID0gK25ldyBEYXRlKCk7XG5cdFx0cmV0dXJuIHRtcEVuZFRpbWUtcFRpbWVTdGFtcDtcblx0fVxuXG5cdC8vIExvZyB0aGUgZGVsdGEgYmV0d2VlbiBhIHRpbWVzdGFtcCwgYW5kIG5vdyB3aXRoIGEgbWVzc2FnZVxuXHRsb2dUaW1lRGVsdGEocFRpbWVEZWx0YSwgcE1lc3NhZ2UsIHBEYXR1bSlcblx0e1xuXHRcdGxldCB0bXBNZXNzYWdlID0gKHR5cGVvZihwTWVzc2FnZSkgIT09ICd1bmRlZmluZWQnKSA/IHBNZXNzYWdlIDogJ1RpbWUgTWVhc3VyZW1lbnQnO1xuXHRcdGxldCB0bXBEYXR1bSA9ICh0eXBlb2YocERhdHVtKSA9PT0gJ29iamVjdCcpID8gcERhdHVtIDoge307XG5cblx0XHRsZXQgdG1wRW5kVGltZSA9ICtuZXcgRGF0ZSgpO1xuXG5cdFx0dGhpcy5pbmZvKGAke3RtcE1lc3NhZ2V9IGxvZ2dlZCBhdCAoZXBvY2ggJHsrdG1wRW5kVGltZX0pIHRvb2sgKCR7cFRpbWVEZWx0YX1tcylgLCBwRGF0dW0pO1xuXHR9XG5cblx0bG9nVGltZURlbHRhSHVtYW4ocFRpbWVEZWx0YSwgcE1lc3NhZ2UsIHBEYXR1bSlcblx0e1xuXHRcdGxldCB0bXBNZXNzYWdlID0gKHR5cGVvZihwTWVzc2FnZSkgIT09ICd1bmRlZmluZWQnKSA/IHBNZXNzYWdlIDogJ1RpbWUgTWVhc3VyZW1lbnQnO1xuXG5cdFx0bGV0IHRtcEVuZFRpbWUgPSArbmV3IERhdGUoKTtcblxuXHRcdGxldCB0bXBNcyA9IHBhcnNlSW50KHBUaW1lRGVsdGElMTAwMCk7XG5cdFx0bGV0IHRtcFNlY29uZHMgPSBwYXJzZUludCgocFRpbWVEZWx0YS8xMDAwKSU2MCk7XG5cdFx0bGV0IHRtcE1pbnV0ZXMgPSBwYXJzZUludCgocFRpbWVEZWx0YS8oMTAwMCo2MCkpJTYwKTtcblx0XHRsZXQgdG1wSG91cnMgPSBwYXJzZUludChwVGltZURlbHRhLygxMDAwKjYwKjYwKSk7XG5cblx0XHR0bXBNcyA9ICh0bXBNcyA8IDEwKSA/IFwiMDBcIit0bXBNcyA6ICh0bXBNcyA8IDEwMCkgPyBcIjBcIit0bXBNcyA6IHRtcE1zO1xuXHRcdHRtcFNlY29uZHMgPSAodG1wU2Vjb25kcyA8IDEwKSA/IFwiMFwiK3RtcFNlY29uZHMgOiB0bXBTZWNvbmRzO1xuXHRcdHRtcE1pbnV0ZXMgPSAodG1wTWludXRlcyA8IDEwKSA/IFwiMFwiK3RtcE1pbnV0ZXMgOiB0bXBNaW51dGVzO1xuXHRcdHRtcEhvdXJzID0gKHRtcEhvdXJzIDwgMTApID8gXCIwXCIrdG1wSG91cnMgOiB0bXBIb3VycztcblxuXHRcdHRoaXMuaW5mbyhgJHt0bXBNZXNzYWdlfSBsb2dnZWQgYXQgKGVwb2NoICR7K3RtcEVuZFRpbWV9KSB0b29rICgke3BUaW1lRGVsdGF9bXMpIG9yICgke3RtcEhvdXJzfToke3RtcE1pbnV0ZXN9OiR7dG1wU2Vjb25kc30uJHt0bXBNc30pYCwgcERhdHVtKTtcblx0fVxuXG5cdGxvZ1RpbWVEZWx0YVJlbGF0aXZlKHBTdGFydFRpbWUsIHBNZXNzYWdlLCBwRGF0dW0pXG5cdHtcblx0XHR0aGlzLmxvZ1RpbWVEZWx0YSh0aGlzLmdldFRpbWVEZWx0YShwU3RhcnRUaW1lKSwgcE1lc3NhZ2UsIHBEYXR1bSk7XG5cdH1cblxuXHRsb2dUaW1lRGVsdGFSZWxhdGl2ZUh1bWFuKHBTdGFydFRpbWUsIHBNZXNzYWdlLCBwRGF0dW0pXG5cdHtcblx0XHR0aGlzLmxvZ1RpbWVEZWx0YUh1bWFuKHRoaXMuZ2V0VGltZURlbHRhKHBTdGFydFRpbWUpLCBwTWVzc2FnZSwgcERhdHVtKTtcblx0fVxufVxuXG4vLyBUaGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuZnVuY3Rpb24gYXV0b0NvbnN0cnVjdChwU2V0dGluZ3MpXG57XG5cdHJldHVybiBuZXcgRmFibGVMb2cocFNldHRpbmdzKTtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IHtuZXc6YXV0b0NvbnN0cnVjdCwgRmFibGVMb2c6RmFibGVMb2d9O1xuIl19

@@ -1,2 +0,2 @@

!function t(e,o,r){function s(i,n){if(!o[i]){if(!e[i]){var l="function"==typeof require&&require;if(!n&&l)return l(i,!0);if(a)return a(i,!0);var h=new Error("Cannot find module '"+i+"'");throw h.code="MODULE_NOT_FOUND",h}var g=o[i]={exports:{}};e[i][0].call(g.exports,(function(t){return s(e[i][1][t]||t)}),g,g.exports,t,e,o,r)}return o[i].exports}for(var a="function"==typeof require&&require,i=0;i<r.length;i++)s(r[i]);return s}({1:[function(t,e,o){e.exports=
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).FableLog=e()}}((function(){return function e(t,o,r){function s(i,n){if(!o[i]){if(!t[i]){var l="function"==typeof require&&require;if(!n&&l)return l(i,!0);if(a)return a(i,!0);var h=new Error("Cannot find module '"+i+"'");throw h.code="MODULE_NOT_FOUND",h}var g=o[i]={exports:{}};t[i][0].call(g.exports,(function(e){return s(t[i][1][e]||e)}),g,g.exports,e,t,o,r)}return o[i].exports}for(var a="function"==typeof require&&require,i=0;i<r.length;i++)s(r[i]);return s}({1:[function(e,t,o){t.exports=
/**

@@ -9,3 +9,3 @@ * Random Byte Generator - Browser version

*/
class{constructor(){this.getRandomValues="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)}generateWhatWGBytes(){let t=new Uint8Array(16);return this.getRandomValues(t),t}generateRandomBytes(){let t=new Uint8Array(16);for(let e,o=0;o<16;o++)0==(3&o)&&(e=4294967296*Math.random()),t[o]=e>>>((3&o)<<3)&255;return t}generate(){return this.getRandomValues?generateWhatWGBytes():generateRandomBytes()}}},{}],2:[function(t,e,o){
class{constructor(){this.getRandomValues="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)}generateWhatWGBytes(){let e=new Uint8Array(16);return this.getRandomValues(e),e}generateRandomBytes(){let e=new Uint8Array(16);for(let t,o=0;o<16;o++)0==(3&o)&&(t=4294967296*Math.random()),e[o]=t>>>((3&o)<<3)&255;return e}generate(){return this.getRandomValues?generateWhatWGBytes():generateRandomBytes()}}},{}],2:[function(e,t,o){
/**

@@ -19,3 +19,3 @@ * Fable UUID Generator

*/
var r=t("./Fable-UUID-Random.js");class s{constructor(t){this._UUIDModeRandom=!("object"!=typeof t||!t.hasOwnProperty("UUIDModeRandom"))&&1==t.UUIDModeRandom,this._UUIDLength="object"==typeof t&&t.hasOwnProperty("UUIDLength")?t.UUIDLength+0:8,this._UUIDRandomDictionary="object"==typeof t&&t.hasOwnProperty("UUIDDictionary")?t.UUIDDictionary+0:"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",this.randomByteGenerator=new r,this._HexLookup=[];for(let t=0;t<256;++t)this._HexLookup[t]=(t+256).toString(16).substr(1)}bytesToUUID(t){let e=0;return[this._HexLookup[t[e++]],this._HexLookup[t[e++]],this._HexLookup[t[e++]],this._HexLookup[t[e++]],"-",this._HexLookup[t[e++]],this._HexLookup[t[e++]],"-",this._HexLookup[t[e++]],this._HexLookup[t[e++]],"-",this._HexLookup[t[e++]],this._HexLookup[t[e++]],"-",this._HexLookup[t[e++]],this._HexLookup[t[e++]],this._HexLookup[t[e++]],this._HexLookup[t[e++]],this._HexLookup[t[e++]],this._HexLookup[t[e++]]].join("")}generateUUIDv4(){new Array(16);var t=this.randomByteGenerator.generate();return t[6]=15&t[6]|64,t[8]=63&t[8]|128,this.bytesToUUID(t)}generateRandom(){let t="";for(let e=0;e<this._UUIDLength;e++)t+=this._UUIDRandomDictionary.charAt(Math.floor(Math.random()*(this._UUIDRandomDictionary.length-1)));return t}getUUID(){return this._UUIDModeRandom?this.generateRandom():this.generateUUIDv4()}}e.exports={new:function(t){return new s(t)},FableUUID:s}},{"./Fable-UUID-Random.js":1}],3:[function(t,e,o){
var r=e("./Fable-UUID-Random.js");class s{constructor(e){this._UUIDModeRandom=!("object"!=typeof e||!e.hasOwnProperty("UUIDModeRandom"))&&1==e.UUIDModeRandom,this._UUIDLength="object"==typeof e&&e.hasOwnProperty("UUIDLength")?e.UUIDLength+0:8,this._UUIDRandomDictionary="object"==typeof e&&e.hasOwnProperty("UUIDDictionary")?e.UUIDDictionary+0:"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",this.randomByteGenerator=new r,this._HexLookup=[];for(let e=0;e<256;++e)this._HexLookup[e]=(e+256).toString(16).substr(1)}bytesToUUID(e){let t=0;return[this._HexLookup[e[t++]],this._HexLookup[e[t++]],this._HexLookup[e[t++]],this._HexLookup[e[t++]],"-",this._HexLookup[e[t++]],this._HexLookup[e[t++]],"-",this._HexLookup[e[t++]],this._HexLookup[e[t++]],"-",this._HexLookup[e[t++]],this._HexLookup[e[t++]],"-",this._HexLookup[e[t++]],this._HexLookup[e[t++]],this._HexLookup[e[t++]],this._HexLookup[e[t++]],this._HexLookup[e[t++]],this._HexLookup[e[t++]]].join("")}generateUUIDv4(){new Array(16);var e=this.randomByteGenerator.generate();return e[6]=15&e[6]|64,e[8]=63&e[8]|128,this.bytesToUUID(e)}generateRandom(){let e="";for(let t=0;t<this._UUIDLength;t++)e+=this._UUIDRandomDictionary.charAt(Math.floor(Math.random()*(this._UUIDRandomDictionary.length-1)));return e}getUUID(){return this._UUIDModeRandom?this.generateRandom():this.generateUUIDv4()}}t.exports={new:function(e){return new s(e)},FableUUID:s}},{"./Fable-UUID-Random.js":1}],3:[function(e,t,o){
/**

@@ -28,3 +28,3 @@ * Base Logger Class

*/
const r=new(t("fable-uuid").FableUUID);e.exports=class{constructor(t,e){this._Settings=t,this.loggerUUID=r.getUUID()}initialize(){}trace(t,e){this.write("trace",t,e)}debug(t,e){this.write("debug",t,e)}info(t,e){this.write("info",t,e)}warn(t,e){this.write("warn",t,e)}error(t,e){this.write("error",t,e)}fatal(t,e){this.write("fatal",t,e)}write(t,e,o){return!0}}},{"fable-uuid":2}],4:[function(t,e,o){
const r=new(e("fable-uuid").FableUUID);t.exports=class{constructor(e,t){this._Settings=e,this.loggerUUID=r.getUUID()}initialize(){}trace(e,t){this.write("trace",e,t)}debug(e,t){this.write("debug",e,t)}info(e,t){this.write("info",e,t)}warn(e,t){this.write("warn",e,t)}error(e,t){this.write("error",e,t)}fatal(e,t){this.write("fatal",e,t)}write(e,t,o){return!0}}},{"fable-uuid":2}],4:[function(e,t,o){
/**

@@ -37,3 +37,3 @@ * Default Logger Provider Function --- Browser

*/
getDefaultProviders=()=>{let e={};return e.console=t("./Fable-Log-Logger-Console.js"),e},e.exports=getDefaultProviders()},{"./Fable-Log-Logger-Console.js":6}],5:[function(t,e,o){e.exports=[{loggertype:"console",streamtype:"console",level:"trace"}]},{}],6:[function(t,e,o){let r=t("./Fable-Log-BaseLogger.js");e.exports=class extends r{constructor(t,e){super(t),this._ShowTimeStamps=!!t.hasOwnProperty("ShowTimeStamps")&&1==t.ShowTimeStamps,this._FormattedTimeStamps=!!t.hasOwnProperty("FormattedTimeStamps")&&1==t.FormattedTimeStamps,this._ContextMessage=t.hasOwnProperty("Context")?` (${t.Context})`:e._Settings.hasOwnProperty("Product")?` (${e._Settings.Product})`:""}write(t,e,o){if(this._ShowTimeStamps&&this._FormattedTimeStamps){let o=(new Date).toISOString();console.log(`${o} [${t}]${this._ContextMessage} ${e}`)}else if(this._ShowTimeStamps){let o=+new Date;console.log(`${o} [${t}]${this._ContextMessage} ${e}`)}else console.log(`[${t}]${this._ContextMessage} ${e}`);void 0!==o&&console.log(JSON.stringify(o,null,4))}}},{"./Fable-Log-BaseLogger.js":3}],7:[function(t,e,o){
getDefaultProviders=()=>{let t={};return t.console=e("./Fable-Log-Logger-Console.js"),t.default=t.console,t},t.exports=getDefaultProviders()},{"./Fable-Log-Logger-Console.js":6}],5:[function(e,t,o){t.exports=[{loggertype:"console",streamtype:"console",level:"trace"}]},{}],6:[function(e,t,o){let r=e("./Fable-Log-BaseLogger.js");t.exports=class extends r{constructor(e,t){super(e),this._ShowTimeStamps=!!e.hasOwnProperty("ShowTimeStamps")&&1==e.ShowTimeStamps,this._FormattedTimeStamps=!!e.hasOwnProperty("FormattedTimeStamps")&&1==e.FormattedTimeStamps,this._ContextMessage=e.hasOwnProperty("Context")?` (${e.Context})`:t._Settings.hasOwnProperty("Product")?` (${t._Settings.Product})`:""}write(e,t,o){if(this._ShowTimeStamps&&this._FormattedTimeStamps){let o=(new Date).toISOString();console.log(`${o} [${e}]${this._ContextMessage} ${t}`)}else if(this._ShowTimeStamps){let o=+new Date;console.log(`${o} [${e}]${this._ContextMessage} ${t}`)}else console.log(`[${e}]${this._ContextMessage} ${t}`);void 0!==o&&console.log(JSON.stringify(o,null,4))}}},{"./Fable-Log-BaseLogger.js":3}],7:[function(e,t,o){
/**

@@ -47,3 +47,3 @@ * Fable Logging Add-on

*/
class r{constructor(e,o){let r="object"==typeof e?e:{};this._Settings=r,this._Providers=t("./Fable-Log-DefaultProviders.js"),this._StreamDefinitions=r.hasOwnProperty("LogStreams")?r.LogStreams:t("./Fable-Log-DefaultStreams.json"),this.logStreams=[],this.logProviders={},this.activeLogStreams={},this.logStreamsTrace=[],this.logStreamsDebug=[],this.logStreamsInfo=[],this.logStreamsWarn=[],this.logStreamsError=[],this.logStreamsFatal=[],this.datumDecorator=t=>t,this.uuid="string"==typeof r.Product?r.Product:"Default"}addLogger(t,e){if(this.activeLogStreams.hasOwnProperty(t.loggerUUID))return!1;switch(this.logStreams.push(t),this.activeLogStreams[t.loggerUUID]=!0,e){case"trace":this.logStreamsTrace.push(t);case"debug":this.logStreamsDebug.push(t);case"info":this.logStreamsInfo.push(t);case"warn":this.logStreamsWarn.push(t);case"error":this.logStreamsError.push(t);case"fatal":this.logStreamsFatal.push(t)}return!0}setDatumDecorator(t){this.datumDecorator="function"==typeof t?t:t=>t}trace(t,e){const o=this.datumDecorator(e);for(let e=0;e<this.logStreamsTrace.length;e++)this.logStreamsTrace[e].trace(t,o)}debug(t,e){const o=this.datumDecorator(e);for(let e=0;e<this.logStreamsDebug.length;e++)this.logStreamsDebug[e].debug(t,o)}info(t,e){const o=this.datumDecorator(e);for(let e=0;e<this.logStreamsInfo.length;e++)this.logStreamsInfo[e].info(t,o)}warn(t,e){const o=this.datumDecorator(e);for(let e=0;e<this.logStreamsWarn.length;e++)this.logStreamsWarn[e].warn(t,o)}error(t,e){const o=this.datumDecorator(e);for(let e=0;e<this.logStreamsError.length;e++)this.logStreamsError[e].error(t,o)}fatal(t,e){const o=this.datumDecorator(e);for(let e=0;e<this.logStreamsFatal.length;e++)this.logStreamsFatal[e].fatal(t,o)}initialize(){for(let t=0;t<this._StreamDefinitions.length;t++){let e=Object.assign({loggertype:"console",streamtype:"console",level:"info"},this._StreamDefinitions[t]);this._Providers.hasOwnProperty(e.loggertype)?this.addLogger(new this._Providers[e.loggertype](e,this),e.level):console.log(`Error initializing log stream: bad loggertype in stream definition ${JSON.stringify(e)}`)}for(let t=0;t<this.logStreams.length;t++)this.logStreams[t].initialize()}logTime(t,e){let o=void 0!==t?t:"Time",r=new Date;this.info(`${o} ${r} (epoch ${+r})`,e)}getTimeStamp(){return+new Date}getTimeDelta(t){return+new Date-t}logTimeDelta(t,e,o){let r=void 0!==e?e:"Time Measurement",s=+new Date;this.info(`${r} logged at (epoch ${+s}) took (${t}ms)`,o)}logTimeDeltaHuman(t,e,o){let r=void 0!==e?e:"Time Measurement",s=+new Date,a=parseInt(t%1e3),i=parseInt(t/1e3%60),n=parseInt(t/6e4%60),l=parseInt(t/36e5);a=a<10?"00"+a:a<100?"0"+a:a,i=i<10?"0"+i:i,n=n<10?"0"+n:n,l=l<10?"0"+l:l,this.info(`${r} logged at (epoch ${+s}) took (${t}ms) or (${l}:${n}:${i}.${a})`,o)}logTimeDeltaRelative(t,e,o){this.logTimeDelta(this.getTimeDelta(t),e,o)}logTimeDeltaRelativeHuman(t,e,o){this.logTimeDeltaHuman(this.getTimeDelta(t),e,o)}}e.exports={new:function(t){return new r(t)},FableLog:r}},{"./Fable-Log-DefaultProviders.js":4,"./Fable-Log-DefaultStreams.json":5}]},{},[7]);
class r{constructor(t,o){let r="object"==typeof t?t:{};this._Settings=r,this._Providers=e("./Fable-Log-DefaultProviders.js"),this._StreamDefinitions=r.hasOwnProperty("LogStreams")?r.LogStreams:e("./Fable-Log-DefaultStreams.json"),this.logStreams=[],this.logProviders={},this.activeLogStreams={},this.logStreamsTrace=[],this.logStreamsDebug=[],this.logStreamsInfo=[],this.logStreamsWarn=[],this.logStreamsError=[],this.logStreamsFatal=[],this.datumDecorator=e=>e,this.uuid="string"==typeof r.Product?r.Product:"Default"}addLogger(e,t){if(this.activeLogStreams.hasOwnProperty(e.loggerUUID))return!1;switch(this.logStreams.push(e),this.activeLogStreams[e.loggerUUID]=!0,t){case"trace":this.logStreamsTrace.push(e);case"debug":this.logStreamsDebug.push(e);case"info":this.logStreamsInfo.push(e);case"warn":this.logStreamsWarn.push(e);case"error":this.logStreamsError.push(e);case"fatal":this.logStreamsFatal.push(e)}return!0}setDatumDecorator(e){this.datumDecorator="function"==typeof e?e:e=>e}trace(e,t){const o=this.datumDecorator(t);for(let t=0;t<this.logStreamsTrace.length;t++)this.logStreamsTrace[t].trace(e,o)}debug(e,t){const o=this.datumDecorator(t);for(let t=0;t<this.logStreamsDebug.length;t++)this.logStreamsDebug[t].debug(e,o)}info(e,t){const o=this.datumDecorator(t);for(let t=0;t<this.logStreamsInfo.length;t++)this.logStreamsInfo[t].info(e,o)}warn(e,t){const o=this.datumDecorator(t);for(let t=0;t<this.logStreamsWarn.length;t++)this.logStreamsWarn[t].warn(e,o)}error(e,t){const o=this.datumDecorator(t);for(let t=0;t<this.logStreamsError.length;t++)this.logStreamsError[t].error(e,o)}fatal(e,t){const o=this.datumDecorator(t);for(let t=0;t<this.logStreamsFatal.length;t++)this.logStreamsFatal[t].fatal(e,o)}initialize(){for(let e=0;e<this._StreamDefinitions.length;e++){let t=Object.assign({loggertype:"default",streamtype:"console",level:"info"},this._StreamDefinitions[e]);this._Providers.hasOwnProperty(t.loggertype)?this.addLogger(new this._Providers[t.loggertype](t,this),t.level):console.log(`Error initializing log stream: bad loggertype in stream definition ${JSON.stringify(t)}`)}for(let e=0;e<this.logStreams.length;e++)this.logStreams[e].initialize()}logTime(e,t){let o=void 0!==e?e:"Time",r=new Date;this.info(`${o} ${r} (epoch ${+r})`,t)}getTimeStamp(){return+new Date}getTimeDelta(e){return+new Date-e}logTimeDelta(e,t,o){let r=void 0!==t?t:"Time Measurement",s=+new Date;this.info(`${r} logged at (epoch ${+s}) took (${e}ms)`,o)}logTimeDeltaHuman(e,t,o){let r=void 0!==t?t:"Time Measurement",s=+new Date,a=parseInt(e%1e3),i=parseInt(e/1e3%60),n=parseInt(e/6e4%60),l=parseInt(e/36e5);a=a<10?"00"+a:a<100?"0"+a:a,i=i<10?"0"+i:i,n=n<10?"0"+n:n,l=l<10?"0"+l:l,this.info(`${r} logged at (epoch ${+s}) took (${e}ms) or (${l}:${n}:${i}.${a})`,o)}logTimeDeltaRelative(e,t,o){this.logTimeDelta(this.getTimeDelta(e),t,o)}logTimeDeltaRelativeHuman(e,t,o){this.logTimeDeltaHuman(this.getTimeDelta(e),t,o)}}t.exports={new:function(e){return new r(e)},FableLog:r}},{"./Fable-Log-DefaultProviders.js":4,"./Fable-Log-DefaultStreams.json":5}]},{},[7])(7)}));
//# sourceMappingURL=fable-log.min.js.map

@@ -23,2 +23,3 @@ 'use strict';

entries: './source/Fable-Log.js',
standalone: 'FableLog',
debug: true

@@ -48,2 +49,3 @@ });

entries: './source/Fable-Log.js',
standalone: 'FableLog',
debug: true

@@ -50,0 +52,0 @@ });

{
"name": "fable-log",
"version": "2.0.6",
"version": "2.0.7",
"description": "A simple logging wrapper.",

@@ -21,2 +21,5 @@ "main": "source/Fable-Log.js",

"license": "MIT",
"browser": {
"./source/Fable-Log-DefaultProviders.js": "./source/Fable-Log-DefaultProviders-Browser.js"
},
"bugs": {

@@ -48,2 +51,2 @@ "url": "https://github.com/stevenvelozo/fable-log/issues"

}
}
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc