diff --git a/CHANGES.md b/CHANGES.md index fed1de9..d57e2ae 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,25 @@ +**0.8.0** + - Fixed bug where dynamic form elements gave "not mounted" error (Thanks @sdemjanenko) + - React is now a peer dependency (Thanks @snario) + - Dynamically updated values should now work with initial "undefined" value (Thanks @sdemjanenko) + - Validations are now dynamic. Change the prop and existing values are re-validated (thanks @bryannaegele) + - You can now set a "disabled" prop on the form and check "isFormDisabled()" in form elements + - Refactored some code and written a couple of tests + +**0.7.2**: + - isNumber validation now supports float (Thanks @hahahana) + - Form XHR calls now includes CSRF headers, if exists (Thanks @hahahana) + +**0.7.1** + - Fixed bug where external update of value on pristine form element did not update the form model (Thanks @sdemjanenko) + - Fixed bug where children are null/undefined (Thanks @sdemjanenko) + +**0.7.0** + - Dynamic form elements. Add them at any point and they will be registered with the form + - **onChange()** handler is called whenever an form element has changed its value or a new form element is added to the form + - isNumeric validator now also handles actual numbers, not only strings + - Some more tests + **0.6.0** - **onSubmit()** now has the same signature regardless of passing url attribute or not - **isPristine()** is a new method to handle "touched" form elements (thanks @FoxxMD) diff --git a/README.md b/README.md index 1890b87..dee008a 100644 --- a/README.md +++ b/README.md @@ -69,27 +69,7 @@ The main concept is that forms, inputs and validation is done very differently a ## Changes -**0.8.0** - - Fixed bug where dynamic form elements gave "not mounted" error (Thanks @sdemjanenko) - - React is now a peer dependency (Thanks @snario) - - Dynamically updated values should now work with initial "undefined" value (Thanks @sdemjanenko) - - Validations are now dynamic. Change the prop and existing values are re-validated (thanks @bryannaegele) - - You can now set a "disabled" prop on the form and check "isFormDisabled()" in form elements - - Refactored some code and written a couple of tests - -**0.7.2**: - - isNumber validation now supports float (Thanks @hahahana) - - Form XHR calls now includes CSRF headers, if exists (Thanks @hahahana) - -**0.7.1** - - Fixed bug where external update of value on pristine form element did not update the form model (Thanks @sdemjanenko) - - Fixed bug where children are null/undefined (Thanks @sdemjanenko) - -**0.7.0** - - Dynamic form elements. Add them at any point and they will be registered with the form - - **onChange()** handler is called whenever an form element has changed its value or a new form element is added to the form - - isNumeric validator now also handles actual numbers, not only strings - - Some more tests +[Check out releases](releases) [Older changes](CHANGES.md) diff --git a/bower.json b/bower.json index 1af1d0f..b798c5e 100644 --- a/bower.json +++ b/bower.json @@ -1,8 +1,8 @@ { "name": "formsy-react", - "version": "0.8.0", + "version": "0.8.1", "main": "src/main.js", "dependencies": { - "react": "^0.11.2" + "react": "^0.11.2 || ^0.13.1" } } diff --git a/build/formsy-react.js b/build/formsy-react.js index 391cee1..4ede00d 100755 --- a/build/formsy-react.js +++ b/build/formsy-react.js @@ -339,6 +339,8 @@ if (!global.exports && !global.module && (!global.define || !global.define.amd)) module.exports = Formsy; + + }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./Mixin.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/Mixin.js","./utils.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/utils.js","./validationRules.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/validationRules.js","react":"react"}],"/Users/christianalfoni/Documents/dev/formsy-react/src/Mixin.js":[function(require,module,exports){ @@ -470,8 +472,10 @@ module.exports = { } }; + + },{}],"/Users/christianalfoni/Documents/dev/formsy-react/src/utils.js":[function(require,module,exports){ -var csrfTokenSelector = document.querySelector('meta[name="csrf-token"]'); +var csrfTokenSelector = typeof document != 'undefined' ? document.querySelector('meta[name="csrf-token"]') : null; var toURLEncoded = function (element, key, list) { var list = list || []; @@ -548,6 +552,8 @@ module.exports = { } }; + + },{}],"/Users/christianalfoni/Documents/dev/formsy-react/src/validationRules.js":[function(require,module,exports){ module.exports = { 'isValue': function (value) { @@ -563,7 +569,7 @@ module.exports = { if (typeof value === 'number') { return true; } else { - matchResults = value.match(/[-+]?(\d*[.])?\d+/); + var matchResults = value.match(/[-+]?(\d*[.])?\d+/); if (!! matchResults) { return matchResults[0] == value; } else { @@ -594,5 +600,7 @@ module.exports = { } }; + + },{}]},{},["./src/main.js"]) -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvbWFpbi5qcyIsInNyYy9NaXhpbi5qcyIsInNyYy91dGlscy5qcyIsInNyYy92YWxpZGF0aW9uUnVsZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbFZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJ2YXIgUmVhY3QgPSBnbG9iYWwuUmVhY3QgfHwgcmVxdWlyZSgncmVhY3QnKTtcbnZhciBGb3Jtc3kgPSB7fTtcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuL3ZhbGlkYXRpb25SdWxlcy5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscy5qcycpO1xudmFyIE1peGluID0gcmVxdWlyZSgnLi9NaXhpbi5qcycpO1xudmFyIG9wdGlvbnMgPSB7fTtcblxuRm9ybXN5Lk1peGluID0gTWl4aW47XG5cbkZvcm1zeS5kZWZhdWx0cyA9IGZ1bmN0aW9uIChwYXNzZWRPcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBwYXNzZWRPcHRpb25zO1xufTtcblxuRm9ybXN5LmFkZFZhbGlkYXRpb25SdWxlID0gZnVuY3Rpb24gKG5hbWUsIGZ1bmMpIHtcbiAgdmFsaWRhdGlvblJ1bGVzW25hbWVdID0gZnVuYztcbn07XG5cbkZvcm1zeS5Gb3JtID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIkZvcm1cIixcbiAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVmFsaWQ6IHRydWUsXG4gICAgICBpc1N1Ym1pdHRpbmc6IGZhbHNlLFxuICAgICAgY2FuQ2hhbmdlOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gKCkge30sXG4gICAgICBvbkVycm9yOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uU3VibWl0OiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uVmFsaWQ6IGZ1bmN0aW9uICgpIHt9LFxuICAgICAgb25JbnZhbGlkOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiAoKSB7fVxuICAgIH07XG4gIH0sXG5cbiAgLy8gQWRkIGEgbWFwIHRvIHN0b3JlIHRoZSBpbnB1dHMgb2YgdGhlIGZvcm0sIGEgbW9kZWwgdG8gc3RvcmVcbiAgLy8gdGhlIHZhbHVlcyBvZiB0aGUgZm9ybSBhbmQgcmVnaXN0ZXIgY2hpbGQgaW5wdXRzXG4gIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5wdXRzID0ge307XG4gICAgdGhpcy5tb2RlbCA9IHt9O1xuICAgIHRoaXMucmVnaXN0ZXJJbnB1dHModGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gIH0sXG5cbiAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZhbGlkYXRlRm9ybSgpO1xuICB9LFxuXG4gIGNvbXBvbmVudFdpbGxVcGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5wdXRLZXlzID0gT2JqZWN0LmtleXModGhpcy5pbnB1dHMpO1xuXG4gICAgLy8gVGhlIHVwZGF0ZWQgY2hpbGRyZW4gYXJyYXkgaXMgbm90IGF2YWlsYWJsZSBoZXJlIGZvciBzb21lIHJlYXNvbixcbiAgICAvLyB3ZSBuZWVkIHRvIHdhaXQgZm9yIG5leHQgZXZlbnQgbG9vcFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAvLyBUaGUgY29tcG9uZW50IG1pZ2h0IGhhdmUgYmVlbiB1bm1vdW50ZWQgb24gYW5cbiAgICAgIC8vIHVwZGF0ZVxuICAgICAgaWYgKHRoaXMuaXNNb3VudGVkKCkpIHtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVySW5wdXRzKHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuXG4gICAgICAgIHZhciBuZXdJbnB1dEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmlucHV0cyk7XG4gICAgICAgIGlmICh1dGlscy5hcnJheXNEaWZmZXIoaW5wdXRLZXlzLCBuZXdJbnB1dEtleXMpKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUZvcm0oKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9LmJpbmQodGhpcyksIDApO1xuICB9LFxuXG4gIC8vIFVwZGF0ZSBtb2RlbCwgc3VibWl0IHRvIHVybCBwcm9wIGFuZCBzZW5kIHRoZSBtb2RlbFxuICBzdWJtaXQ6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyBUcmlnZ2VyIGZvcm0gYXMgbm90IHByaXN0aW5lLlxuICAgIC8vIElmIGFueSBpbnB1dHMgaGF2ZSBub3QgYmVlbiB0b3VjaGVkIHlldCB0aGlzIHdpbGwgbWFrZSB0aGVtIGRpcnR5XG4gICAgLy8gc28gdmFsaWRhdGlvbiBiZWNvbWVzIHZpc2libGUgKGlmIGJhc2VkIG9uIGlzUHJpc3RpbmUpXG4gICAgdGhpcy5zZXRGb3JtUHJpc3RpbmUoZmFsc2UpO1xuXG4gICAgLy8gVG8gc3VwcG9ydCB1c2UgY2FzZXMgd2hlcmUgbm8gYXN5bmMgb3IgcmVxdWVzdCBvcGVyYXRpb24gaXMgbmVlZGVkLlxuICAgIC8vIFRoZSBcIm9uU3VibWl0XCIgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggdGhlIG1vZGVsIGUuZy4ge2ZpZWxkTmFtZTogXCJteVZhbHVlXCJ9LFxuICAgIC8vIGlmIHdhbnRpbmcgdG8gcmVzZXQgdGhlIGVudGlyZSBmb3JtIHRvIG9yaWdpbmFsIHN0YXRlLCB0aGUgc2Vjb25kIHBhcmFtIGlzIGEgY2FsbGJhY2sgZm9yIHRoaXMuXG4gICAgaWYgKCF0aGlzLnByb3BzLnVybCkge1xuICAgICAgdGhpcy51cGRhdGVNb2RlbCgpO1xuICAgICAgdGhpcy5wcm9wcy5vblN1Ym1pdCh0aGlzLm1hcE1vZGVsKCksIHRoaXMucmVzZXRNb2RlbCwgdGhpcy51cGRhdGVJbnB1dHNXaXRoRXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzU3VibWl0dGluZzogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wcy5vblN1Ym1pdCh0aGlzLm1hcE1vZGVsKCksIHRoaXMucmVzZXRNb2RlbCwgdGhpcy51cGRhdGVJbnB1dHNXaXRoRXJyb3IpO1xuXG4gICAgdmFyIGhlYWRlcnMgPSAoT2JqZWN0LmtleXModGhpcy5wcm9wcy5oZWFkZXJzKS5sZW5ndGggJiYgdGhpcy5wcm9wcy5oZWFkZXJzKSB8fCBvcHRpb25zLmhlYWRlcnMgfHwge307XG5cbiAgICB2YXIgbWV0aG9kID0gdGhpcy5wcm9wcy5tZXRob2QgJiYgdXRpbHMuYWpheFt0aGlzLnByb3BzLm1ldGhvZC50b0xvd2VyQ2FzZSgpXSA/IHRoaXMucHJvcHMubWV0aG9kLnRvTG93ZXJDYXNlKCkgOiAncG9zdCc7XG4gICAgdXRpbHMuYWpheFttZXRob2RdKHRoaXMucHJvcHMudXJsLCB0aGlzLm1hcE1vZGVsKCksIHRoaXMucHJvcHMuY29udGVudFR5cGUgfHwgb3B0aW9ucy5jb250ZW50VHlwZSB8fCAnanNvbicsIGhlYWRlcnMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblN1Y2Nlc3MocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLnByb3BzLm9uU3VibWl0dGVkKCk7XG4gICAgICB9LmJpbmQodGhpcykpXG4gICAgICAuY2F0Y2godGhpcy5mYWlsU3VibWl0KTtcbiAgfSxcblxuICBtYXBNb2RlbDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLm1hcHBpbmcgPyB0aGlzLnByb3BzLm1hcHBpbmcodGhpcy5tb2RlbCkgOiB0aGlzLm1vZGVsO1xuICB9LFxuXG4gIC8vIEdvZXMgdGhyb3VnaCBhbGwgcmVnaXN0ZXJlZCBjb21wb25lbnRzIGFuZFxuICAvLyB1cGRhdGVzIHRoZSBtb2RlbCB2YWx1ZXNcbiAgdXBkYXRlTW9kZWw6IGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmlucHV0cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuaW5wdXRzW25hbWVdO1xuICAgICAgdGhpcy5tb2RlbFtuYW1lXSA9IGNvbXBvbmVudC5zdGF0ZS5fdmFsdWU7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfSxcblxuICAvLyBSZXNldCBlYWNoIGtleSBpbiB0aGUgbW9kZWwgdG8gdGhlIG9yaWdpbmFsIC8gaW5pdGlhbCB2YWx1ZVxuICByZXNldE1vZGVsOiBmdW5jdGlvbiAoKSB7XG4gICAgT2JqZWN0LmtleXModGhpcy5pbnB1dHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHRoaXMuaW5wdXRzW25hbWVdLnJlc2V0VmFsdWUoKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmFsaWRhdGVGb3JtKCk7XG4gIH0sXG5cbiAgLy8gR28gdGhyb3VnaCBlcnJvcnMgZnJvbSBzZXJ2ZXIgYW5kIGdyYWIgdGhlIGNvbXBvbmVudHNcbiAgLy8gc3RvcmVkIGluIHRoZSBpbnB1dHMgbWFwLiBDaGFuZ2UgdGhlaXIgc3RhdGUgdG8gaW52YWxpZFxuICAvLyBhbmQgc2V0IHRoZSBzZXJ2ZXJFcnJvciBtZXNzYWdlXG4gIHVwZGF0ZUlucHV0c1dpdGhFcnJvcjogZnVuY3Rpb24gKGVycm9ycykge1xuICAgIE9iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmlucHV0c1tuYW1lXTtcblxuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgYXJlIHRyeWluZyB0byB1cGRhdGUgYW4gaW5wdXQgdGhhdCBkb2VzIG5vdCBleGlzdHMuIFZlcmlmeSBlcnJvcnMgb2JqZWN0IHdpdGggaW5wdXQgbmFtZXMuICcgKyBKU09OLnN0cmluZ2lmeShlcnJvcnMpKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGFyZ3MgPSBbe1xuICAgICAgICBfaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIF9zZXJ2ZXJFcnJvcjogZXJyb3JzW25hbWVdXG4gICAgICB9XTtcbiAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZS5hcHBseShjb21wb25lbnQsIGFyZ3MpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0sXG5cbiAgZmFpbFN1Ym1pdDogZnVuY3Rpb24gKGVycm9ycykge1xuICAgIHRoaXMudXBkYXRlSW5wdXRzV2l0aEVycm9yKGVycm9ycyk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc1N1Ym1pdHRpbmc6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5wcm9wcy5vbkVycm9yKGVycm9ycyk7XG4gICAgdGhpcy5wcm9wcy5vblN1Ym1pdHRlZCgpO1xuICB9LFxuXG4gIC8vIFRyYXZlcnNlIHRoZSBjaGlsZHJlbiBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4gdG8gZmluZFxuICAvLyBhbGwgaW5wdXRzIGJ5IGNoZWNraW5nIHRoZSBuYW1lIHByb3AuIE1heWJlIGRvIGEgYmV0dGVyXG4gIC8vIGNoZWNrIGhlcmVcbiAgcmVnaXN0ZXJJbnB1dHM6IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuXG4gICAgICBpZiAoY2hpbGQgJiYgY2hpbGQucHJvcHMgJiYgY2hpbGQucHJvcHMubmFtZSkge1xuICAgICAgICBjaGlsZC5wcm9wcy5fYXR0YWNoVG9Gb3JtID0gdGhpcy5hdHRhY2hUb0Zvcm07XG4gICAgICAgIGNoaWxkLnByb3BzLl9kZXRhY2hGcm9tRm9ybSA9IHRoaXMuZGV0YWNoRnJvbUZvcm07XG4gICAgICAgIGNoaWxkLnByb3BzLl92YWxpZGF0ZSA9IHRoaXMudmFsaWRhdGU7XG4gICAgICAgIGNoaWxkLnByb3BzLl9pc0Zvcm1EaXNhYmxlZCA9IHRoaXMuaXNGb3JtRGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5wcm9wcyAmJiBjaGlsZC5wcm9wcy5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLnJlZ2lzdGVySW5wdXRzKGNoaWxkLnByb3BzLmNoaWxkcmVuKTtcbiAgICAgIH1cblxuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0sXG5cbiAgaXNGb3JtRGlzYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kaXNhYmxlZDtcbiAgfSxcblxuICBnZXRDdXJyZW50VmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaW5wdXRzKS5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEsIG5hbWUpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmlucHV0c1tuYW1lXTtcbiAgICAgIGRhdGFbbmFtZV0gPSBjb21wb25lbnQuc3RhdGUuX3ZhbHVlO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfS5iaW5kKHRoaXMpLCB7fSk7XG4gIH0sXG5cbiAgc2V0Rm9ybVByaXN0aW5lOiBmdW5jdGlvbiAoaXNQcmlzdGluZSkge1xuICAgIHZhciBpbnB1dHMgPSB0aGlzLmlucHV0cztcbiAgICB2YXIgaW5wdXRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGNvbXBvbmVudCBhbmQgc2V0IGl0IGFzIHByaXN0aW5lXG4gICAgLy8gb3IgXCJkaXJ0eVwiLlxuICAgIGlucHV0S2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IGlucHV0c1tuYW1lXTtcbiAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZSh7XG4gICAgICAgIF9pc1ByaXN0aW5lOiBpc1ByaXN0aW5lXG4gICAgICB9KTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9LFxuXG4gIC8vIFVzZSB0aGUgYmluZGVkIHZhbHVlcyBhbmQgdGhlIGFjdHVhbCBpbnB1dCB2YWx1ZSB0b1xuICAvLyB2YWxpZGF0ZSB0aGUgaW5wdXQgYW5kIHNldCBpdHMgc3RhdGUuIFRoZW4gY2hlY2sgdGhlXG4gIC8vIHN0YXRlIG9mIHRoZSBmb3JtIGl0c2VsZlxuICB2YWxpZGF0ZTogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuXG4gICAgLy8gVHJpZ2dlciBvbkNoYW5nZVxuICAgIGlmICh0aGlzLnN0YXRlLmNhbkNoYW5nZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLmdldEN1cnJlbnRWYWx1ZXMoKSk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21wb25lbnQucHJvcHMucmVxdWlyZWQgJiYgIWNvbXBvbmVudC5fdmFsaWRhdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSdW4gdGhyb3VnaCB0aGUgdmFsaWRhdGlvbnMsIHNwbGl0IHRoZW0gdXAgYW5kIGNhbGxcbiAgICAvLyB0aGUgdmFsaWRhdG9yIElGIHRoZXJlIGlzIGEgdmFsdWUgb3IgaXQgaXMgcmVxdWlyZWRcbiAgICB2YXIgaXNWYWxpZCA9IHRoaXMucnVuVmFsaWRhdGlvbihjb21wb25lbnQpO1xuXG4gICAgY29tcG9uZW50LnNldFN0YXRlKHtcbiAgICAgIF9pc1ZhbGlkOiBpc1ZhbGlkLFxuICAgICAgX3NlcnZlckVycm9yOiBudWxsXG4gICAgfSwgdGhpcy52YWxpZGF0ZUZvcm0pO1xuXG4gIH0sXG5cbiAgcnVuVmFsaWRhdGlvbjogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIHZhciBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBpZiAoY29tcG9uZW50Ll92YWxpZGF0aW9ucy5sZW5ndGggJiYgKGNvbXBvbmVudC5wcm9wcy5yZXF1aXJlZCB8fCBjb21wb25lbnQuc3RhdGUuX3ZhbHVlICE9PSAnJykpIHtcbiAgICAgIGNvbXBvbmVudC5fdmFsaWRhdGlvbnMuc3BsaXQoJywnKS5mb3JFYWNoKGZ1bmN0aW9uICh2YWxpZGF0aW9uKSB7XG4gICAgICAgIHZhciBhcmdzID0gdmFsaWRhdGlvbi5zcGxpdCgnOicpO1xuICAgICAgICB2YXIgdmFsaWRhdGVNZXRob2QgPSBhcmdzLnNoaWZ0KCk7XG4gICAgICAgIGFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGFyZyk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZzsgLy8gSXQgaXMgYSBzdHJpbmcgaWYgaXQgY2FuIG5vdCBwYXJzZSBpdFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGFyZ3MgPSBbY29tcG9uZW50LnN0YXRlLl92YWx1ZV0uY29uY2F0KGFyZ3MpO1xuICAgICAgICBpZiAoIXZhbGlkYXRpb25SdWxlc1t2YWxpZGF0ZU1ldGhvZF0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Zvcm1zeSBkb2VzIG5vdCBoYXZlIHRoZSB2YWxpZGF0aW9uIHJ1bGU6ICcgKyB2YWxpZGF0ZU1ldGhvZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uUnVsZXNbdmFsaWRhdGVNZXRob2RdLmFwcGx5KHRoaXMuZ2V0Q3VycmVudFZhbHVlcygpLCBhcmdzKSkge1xuICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH0sXG5cbiAgLy8gVmFsaWRhdGUgdGhlIGZvcm0gYnkgZ29pbmcgdGhyb3VnaCBhbGwgY2hpbGQgaW5wdXQgY29tcG9uZW50c1xuICAvLyBhbmQgY2hlY2sgdGhlaXIgc3RhdGVcbiAgdmFsaWRhdGVGb3JtOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFsbElzVmFsaWQgPSB0cnVlO1xuICAgIHZhciBpbnB1dHMgPSB0aGlzLmlucHV0cztcbiAgICB2YXIgaW5wdXRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcblxuICAgIC8vIFdlIG5lZWQgYSBjYWxsYmFjayBhcyB3ZSBhcmUgdmFsaWRhdGluZyBhbGwgaW5wdXRzIGFnYWluLiBUaGlzIHdpbGxcbiAgICAvLyBydW4gd2hlbiB0aGUgbGFzdCBjb21wb25lbnQgaGFzIHNldCBpdHMgc3RhdGVcbiAgICB2YXIgb25WYWxpZGF0aW9uQ29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpbnB1dEtleXMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICBpZiAoIWlucHV0c1tuYW1lXS5zdGF0ZS5faXNWYWxpZCkge1xuICAgICAgICAgIGFsbElzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfS5iaW5kKHRoaXMpKTtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzVmFsaWQ6IGFsbElzVmFsaWRcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYWxsSXNWYWxpZCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uVmFsaWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvcHMub25JbnZhbGlkKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRlbGwgdGhlIGZvcm0gdGhhdCBpdCBjYW4gc3RhcnQgdG8gdHJpZ2dlciBjaGFuZ2UgZXZlbnRzXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2FuQ2hhbmdlOiB0cnVlXG4gICAgICB9KTtcblxuICAgIH0uYmluZCh0aGlzKTtcblxuICAgIC8vIFJ1biB2YWxpZGF0aW9uIGFnYWluIGluIGNhc2UgYWZmZWN0ZWQgYnkgb3RoZXIgaW5wdXRzLiBUaGVcbiAgICAvLyBsYXN0IGNvbXBvbmVudCB2YWxpZGF0ZWQgd2lsbCBydW4gdGhlIG9uVmFsaWRhdGlvbkNvbXBsZXRlIGNhbGxiYWNrXG4gICAgaW5wdXRLZXlzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gaW5wdXRzW25hbWVdO1xuICAgICAgdmFyIGlzVmFsaWQgPSB0aGlzLnJ1blZhbGlkYXRpb24oY29tcG9uZW50KTtcbiAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZSh7XG4gICAgICAgIF9pc1ZhbGlkOiBpc1ZhbGlkLFxuICAgICAgICBfc2VydmVyRXJyb3I6IG51bGxcbiAgICAgIH0sIGluZGV4ID09PSBpbnB1dEtleXMubGVuZ3RoIC0gMSA/IG9uVmFsaWRhdGlvbkNvbXBsZXRlIDogbnVsbCk7XG4gICAgfS5iaW5kKHRoaXMpKTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyBpbnB1dHMsIHNldCBzdGF0ZSB3aGVyZSBmb3JtIGlzIHJlYWR5IHRvIHRyaWdnZXJcbiAgICAvLyBjaGFuZ2UgZXZlbnQuIE5ldyBpbnB1dHMgbWlnaHQgYmUgYWRkZWQgbGF0ZXJcbiAgICBpZiAoIWlucHV0S2V5cy5sZW5ndGggJiYgdGhpcy5pc01vdW50ZWQoKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNhbkNoYW5nZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8vIE1ldGhvZCBwdXQgb24gZWFjaCBpbnB1dCBjb21wb25lbnQgdG8gcmVnaXN0ZXJcbiAgLy8gaXRzZWxmIHRvIHRoZSBmb3JtXG4gIGF0dGFjaFRvRm9ybTogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIHRoaXMuaW5wdXRzW2NvbXBvbmVudC5wcm9wcy5uYW1lXSA9IGNvbXBvbmVudDtcbiAgICB0aGlzLm1vZGVsW2NvbXBvbmVudC5wcm9wcy5uYW1lXSA9IGNvbXBvbmVudC5zdGF0ZS5fdmFsdWU7XG4gICAgdGhpcy52YWxpZGF0ZShjb21wb25lbnQpO1xuICB9LFxuXG4gIC8vIE1ldGhvZCBwdXQgb24gZWFjaCBpbnB1dCBjb21wb25lbnQgdG8gdW5yZWdpc3RlclxuICAvLyBpdHNlbGYgZnJvbSB0aGUgZm9ybVxuICBkZXRhY2hGcm9tRm9ybTogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIGRlbGV0ZSB0aGlzLmlucHV0c1tjb21wb25lbnQucHJvcHMubmFtZV07XG4gICAgZGVsZXRlIHRoaXMubW9kZWxbY29tcG9uZW50LnByb3BzLm5hbWVdO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcblxuICAgIHJldHVybiBSZWFjdC5ET00uZm9ybSh7XG4gICAgICAgIG9uU3VibWl0OiB0aGlzLnN1Ym1pdCxcbiAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnByb3BzLmNsYXNzTmFtZVxuICAgICAgfSxcbiAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICApO1xuXG4gIH1cbn0pO1xuXG5pZiAoIWdsb2JhbC5leHBvcnRzICYmICFnbG9iYWwubW9kdWxlICYmICghZ2xvYmFsLmRlZmluZSB8fCAhZ2xvYmFsLmRlZmluZS5hbWQpKSB7XG4gIGdsb2JhbC5Gb3Jtc3kgPSBGb3Jtc3k7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRm9ybXN5O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBfdmFsdWU6IHRoaXMucHJvcHMudmFsdWUgPyB0aGlzLnByb3BzLnZhbHVlIDogJycsXG4gICAgICBfaXNWYWxpZDogdHJ1ZSxcbiAgICAgIF9pc1ByaXN0aW5lOiB0cnVlXG4gICAgfTtcbiAgfSxcbiAgY29tcG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7XG5cbiAgICB2YXIgY29uZmlndXJlID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5zZXRWYWxpZGF0aW9ucyh0aGlzLnByb3BzLnZhbGlkYXRpb25zLCB0aGlzLnByb3BzLnJlcXVpcmVkKTtcbiAgICAgIHRoaXMucHJvcHMuX2F0dGFjaFRvRm9ybSh0aGlzKTtcbiAgICB9LmJpbmQodGhpcyk7XG5cbiAgICBpZiAoIXRoaXMucHJvcHMubmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3JtIElucHV0IHJlcXVpcmVzIGEgbmFtZSBwcm9wZXJ0eSB3aGVuIHVzZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucHJvcHMuX2F0dGFjaFRvRm9ybSkge1xuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNNb3VudGVkKCkpIHJldHVybjtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLl9hdHRhY2hUb0Zvcm0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Zvcm0gTWl4aW4gcmVxdWlyZXMgY29tcG9uZW50IHRvIGJlIG5lc3RlZCBpbiBhIEZvcm0nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25maWd1cmUoKTtcbiAgICAgIH0uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICAgIGNvbmZpZ3VyZSgpO1xuXG4gIH0sXG5cbiAgLy8gV2UgaGF2ZSB0byBtYWtlIHRoZSB2YWxpZGF0ZSBtZXRob2QgaXMga2VwdCB3aGVuIG5ldyBwcm9wcyBhcmUgYWRkZWRcbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczogZnVuY3Rpb24gKG5leHRQcm9wcykge1xuICAgIG5leHRQcm9wcy5fYXR0YWNoVG9Gb3JtID0gdGhpcy5wcm9wcy5fYXR0YWNoVG9Gb3JtO1xuICAgIG5leHRQcm9wcy5fZGV0YWNoRnJvbUZvcm0gPSB0aGlzLnByb3BzLl9kZXRhY2hGcm9tRm9ybTtcbiAgICBuZXh0UHJvcHMuX3ZhbGlkYXRlID0gdGhpcy5wcm9wcy5fdmFsaWRhdGU7XG4gICAgdGhpcy5zZXRWYWxpZGF0aW9ucyhuZXh0UHJvcHMudmFsaWRhdGlvbnMsIG5leHRQcm9wcy5yZXF1aXJlZCk7XG4gIH0sXG5cbiAgY29tcG9uZW50RGlkVXBkYXRlOiBmdW5jdGlvbiAocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcblxuICAgIHZhciBpc1ZhbHVlQ2hhbmdlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIFxuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5wcm9wcy52YWx1ZSAhPT0gcHJldlByb3BzLnZhbHVlICYmIChcbiAgICAgICAgICB0aGlzLnN0YXRlLl92YWx1ZSA9PT0gcHJldlByb3BzLnZhbHVlIHx8XG5cbiAgICAgICAgICAvLyBTaW5jZSB1bmRlZmluZWQgaXMgY29udmVydGVkIHRvIGVtcHR5IHN0cmluZyB3ZSBoYXZlIHRvXG4gICAgICAgICAgLy8gY2hlY2sgdGhhdCBzcGVjaWZpY2FsbHlcbiAgICAgICAgICAodGhpcy5zdGF0ZS5fdmFsdWUgPT09ICcnICYmIHByZXZQcm9wcy52YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgfS5iaW5kKHRoaXMpO1xuXG5cbiAgICAvLyBJZiB2YWxpZGF0aW9ucyBoYXMgY2hhbmdlZCBvciBzb21ldGhpbmcgb3V0c2lkZSBjaGFuZ2VzIFxuICAgIC8vIHRoZSB2YWx1ZSwgc2V0IHRoZSB2YWx1ZSBhZ2FpbiBydW5uaW5nIGEgdmFsaWRhdGlvblxuXG4gICAgaWYgKHByZXZQcm9wcy52YWxpZGF0aW9ucyAhPT0gdGhpcy5wcm9wcy52YWxpZGF0aW9ucyB8fCBpc1ZhbHVlQ2hhbmdlZCgpKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKHRoaXMucHJvcHMudmFsdWUgfHwgJycpO1xuICAgIH1cbiAgfSxcblxuICAvLyBEZXRhY2ggaXQgd2hlbiBjb21wb25lbnQgdW5tb3VudHNcbiAgY29tcG9uZW50V2lsbFVubW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnByb3BzLl9kZXRhY2hGcm9tRm9ybSh0aGlzKTtcbiAgfSxcblxuICBzZXRWYWxpZGF0aW9uczogZnVuY3Rpb24gKHZhbGlkYXRpb25zLCByZXF1aXJlZCkge1xuXG4gICAgLy8gQWRkIHZhbGlkYXRpb25zIHRvIHRoZSBzdG9yZSBpdHNlbGYgYXMgdGhlIHByb3BzIG9iamVjdCBjYW4gbm90IGJlIG1vZGlmaWVkXG4gICAgdGhpcy5fdmFsaWRhdGlvbnMgPSB2YWxpZGF0aW9ucyB8fCAnJztcblxuICAgIGlmIChyZXF1aXJlZCkge1xuICAgICAgdGhpcy5fdmFsaWRhdGlvbnMgPSB2YWxpZGF0aW9ucyA/IHZhbGlkYXRpb25zICsgJywnIDogJyc7XG4gICAgICB0aGlzLl92YWxpZGF0aW9ucyArPSAnaXNWYWx1ZSc7XG4gICAgfVxuXG4gIH0sXG5cbiAgLy8gV2UgdmFsaWRhdGUgYWZ0ZXIgdGhlIHZhbHVlIGhhcyBiZWVuIHNldFxuICBzZXRWYWx1ZTogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBfdmFsdWU6IHZhbHVlLFxuICAgICAgX2lzUHJpc3RpbmU6IGZhbHNlXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5wcm9wcy5fdmFsaWRhdGUodGhpcyk7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfSxcbiAgcmVzZXRWYWx1ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgX3ZhbHVlOiAnJyxcbiAgICAgIF9pc1ByaXN0aW5lOiB0cnVlXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5wcm9wcy5fdmFsaWRhdGUodGhpcyk7XG4gICAgfSk7XG4gIH0sXG4gIGdldFZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuX3ZhbHVlO1xuICB9LFxuICBoYXNWYWx1ZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLl92YWx1ZSAhPT0gJyc7XG4gIH0sXG4gIGdldEVycm9yTWVzc2FnZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSB8fCB0aGlzLnNob3dSZXF1aXJlZCgpID8gbnVsbCA6IHRoaXMuc3RhdGUuX3NlcnZlckVycm9yIHx8IHRoaXMucHJvcHMudmFsaWRhdGlvbkVycm9yO1xuICB9LFxuICBpc0Zvcm1EaXNhYmxlZDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLl9pc0Zvcm1EaXNhYmxlZCgpO1xuICB9LFxuICBpc1ZhbGlkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuX2lzVmFsaWQ7XG4gIH0sXG4gIGlzUHJpc3RpbmU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5faXNQcmlzdGluZTtcbiAgfSxcbiAgaXNSZXF1aXJlZDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhIXRoaXMucHJvcHMucmVxdWlyZWQ7XG4gIH0sXG4gIHNob3dSZXF1aXJlZDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmlzUmVxdWlyZWQoKSAmJiB0aGlzLnN0YXRlLl92YWx1ZSA9PT0gJyc7XG4gIH0sXG4gIHNob3dFcnJvcjogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhdGhpcy5zaG93UmVxdWlyZWQoKSAmJiAhdGhpcy5zdGF0ZS5faXNWYWxpZDtcbiAgfVxufTtcbiIsInZhciBjc3JmVG9rZW5TZWxlY3RvciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKTtcblxudmFyIHRvVVJMRW5jb2RlZCA9IGZ1bmN0aW9uIChlbGVtZW50LCBrZXksIGxpc3QpIHtcbiAgdmFyIGxpc3QgPSBsaXN0IHx8IFtdO1xuICBpZiAodHlwZW9mIChlbGVtZW50KSA9PSAnb2JqZWN0Jykge1xuICAgIGZvciAodmFyIGlkeCBpbiBlbGVtZW50KVxuICAgICAgdG9VUkxFbmNvZGVkKGVsZW1lbnRbaWR4XSwga2V5ID8ga2V5ICsgJ1snICsgaWR4ICsgJ10nIDogaWR4LCBsaXN0KTtcbiAgfSBlbHNlIHtcbiAgICBsaXN0LnB1c2goa2V5ICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGVsZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gbGlzdC5qb2luKCcmJyk7XG59O1xuXG52YXIgcmVxdWVzdCA9IGZ1bmN0aW9uIChtZXRob2QsIHVybCwgZGF0YSwgY29udGVudFR5cGUsIGhlYWRlcnMpIHtcblxuICB2YXIgY29udGVudFR5cGUgPSBjb250ZW50VHlwZSA9PT0gJ3VybGVuY29kZWQnID8gJ2FwcGxpY2F0aW9uLycgKyBjb250ZW50VHlwZS5yZXBsYWNlKCd1cmxlbmNvZGVkJywgJ3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIDogJ2FwcGxpY2F0aW9uL2pzb24nO1xuICBkYXRhID0gY29udGVudFR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJyA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogdG9VUkxFbmNvZGVkKGRhdGEpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsLCB0cnVlKTtcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGNvbnRlbnRUeXBlKTtcblxuICAgICAgaWYgKCEhY3NyZlRva2VuU2VsZWN0b3IgJiYgISFjc3JmVG9rZW5TZWxlY3Rvci5jb250ZW50KSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLUNTUkYtVG9rZW4nLCBjc3JmVG9rZW5TZWxlY3Rvci5jb250ZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHBhc3NlZCBoZWFkZXJzXG4gICAgICBPYmplY3Qua2V5cyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChoZWFkZXIpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyLCBoZWFkZXJzW2hlYWRlcl0pO1xuICAgICAgfSk7XG5cbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHhoci5yZXNwb25zZVRleHQgPyBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB4aHIuc2VuZChkYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhcnJheXNEaWZmZXI6IGZ1bmN0aW9uIChhcnJheUEsIGFycmF5Qikge1xuICAgIHZhciBpc0RpZmZlcmVudCA9IGZhbHNlO1xuICAgIGlmIChhcnJheUEubGVuZ3RoICE9PSBhcnJheUIubGVuZ3RoKSB7XG4gICAgICBpc0RpZmZlcmVudCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFycmF5QS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICBpZiAoaXRlbSAhPT0gYXJyYXlCW2luZGV4XSkge1xuICAgICAgICAgIGlzRGlmZmVyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpc0RpZmZlcmVudDtcbiAgfSxcbiAgYWpheDoge1xuICAgIHBvc3Q6IHJlcXVlc3QuYmluZChudWxsLCAnUE9TVCcpLFxuICAgIHB1dDogcmVxdWVzdC5iaW5kKG51bGwsICdQVVQnKVxuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gICdpc1ZhbHVlJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSAnJztcbiAgfSxcbiAgJ2lzRW1haWwnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUubWF0Y2goL14oKChbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKFxcLihbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKSopfCgoXFx4MjIpKCgoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oKFtcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDdmXXxcXHgyMXxbXFx4MjMtXFx4NWJdfFtcXHg1ZC1cXHg3ZV18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfChcXFxcKFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZC1cXHg3Zl18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSkpKigoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oXFx4MjIpKSlAKCgoW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKVxcLikrKChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpJC9pKTtcbiAgfSxcbiAgJ2lzVHJ1ZSc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZTtcbiAgfSxcbiAgJ2lzTnVtZXJpYyc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWF0Y2hSZXN1bHRzID0gdmFsdWUubWF0Y2goL1stK10/KFxcZCpbLl0pP1xcZCsvKTtcbiAgICAgIGlmICghISBtYXRjaFJlc3VsdHMpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoUmVzdWx0c1swXSA9PSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gICdpc0FscGhhJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hdGNoKC9eW2EtekEtWl0rJC8pO1xuICB9LFxuICAnaXNXb3Jkcyc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXRjaCgvXlthLXpBLVpcXHNdKyQvKTtcbiAgfSxcbiAgJ2lzU3BlY2lhbFdvcmRzJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hdGNoKC9eW2EtekEtWlxcc1xcdTAwQzAtXFx1MDE3Rl0rJC8pO1xuICB9LFxuICBpc0xlbmd0aDogZnVuY3Rpb24gKHZhbHVlLCBtaW4sIG1heCkge1xuICAgIGlmIChtYXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+PSBtaW4gJiYgdmFsdWUubGVuZ3RoIDw9IG1heDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+PSBtaW47XG4gIH0sXG4gIGVxdWFsczogZnVuY3Rpb24gKHZhbHVlLCBlcWwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gZXFsO1xuICB9LFxuICBlcXVhbHNGaWVsZDogZnVuY3Rpb24gKHZhbHVlLCBmaWVsZCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdGhpc1tmaWVsZF07XG4gIH1cbn07XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvY2hyaXN0aWFuYWxmb25pL0RvY3VtZW50cy9kZXYvZm9ybXN5LXJlYWN0L3NyYy9tYWluLmpzIiwiL1VzZXJzL2NocmlzdGlhbmFsZm9uaS9Eb2N1bWVudHMvZGV2L2Zvcm1zeS1yZWFjdC9zcmMvTWl4aW4uanMiLCIvVXNlcnMvY2hyaXN0aWFuYWxmb25pL0RvY3VtZW50cy9kZXYvZm9ybXN5LXJlYWN0L3NyYy91dGlscy5qcyIsIi9Vc2Vycy9jaHJpc3RpYW5hbGZvbmkvRG9jdW1lbnRzL2Rldi9mb3Jtc3ktcmVhY3Qvc3JjL3ZhbGlkYXRpb25SdWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUNBQSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDaEIsSUFBSSxlQUFlLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDdEQsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2xDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNsQyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7O0FBRWpCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDOztBQUVyQixNQUFNLENBQUMsUUFBUSxHQUFHLFVBQVUsYUFBYSxFQUFFO0VBQ3pDLE9BQU8sR0FBRyxhQUFhLENBQUM7QUFDMUIsQ0FBQyxDQUFDOztBQUVGLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLElBQUksRUFBRSxJQUFJLEVBQUU7RUFDL0MsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMvQixDQUFDLENBQUM7O0FBRUYsTUFBTSxDQUFD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RUFBRSxHQUFHLEVBQUU7SUFDNUIsT0FBTyxLQUFLLElBQUksR0FBRyxDQUFDO0dBQ3JCO0VBQ0QsV0FBVyxFQUFFLFVBQVUsS0FBSyxFQUFFLEtBQUssRUFBRTtJQUNuQyxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7R0FDOUI7QUFDSCxDQUFDLENBQUM7O0FBRUYiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pIiwidmFyIFJlYWN0ID0gZ2xvYmFsLlJlYWN0IHx8IHJlcXVpcmUoJ3JlYWN0Jyk7XG52YXIgRm9ybXN5ID0ge307XG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi92YWxpZGF0aW9uUnVsZXMuanMnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMuanMnKTtcbnZhciBNaXhpbiA9IHJlcXVpcmUoJy4vTWl4aW4uanMnKTtcbnZhciBvcHRpb25zID0ge307XG5cbkZvcm1zeS5NaXhpbiA9IE1peGluO1xuXG5Gb3Jtc3kuZGVmYXVsdHMgPSBmdW5jdGlvbiAocGFzc2VkT3B0aW9ucykge1xuICBvcHRpb25zID0gcGFzc2VkT3B0aW9ucztcbn07XG5cbkZvcm1zeS5hZGRWYWxpZGF0aW9uUnVsZSA9IGZ1bmN0aW9uIChuYW1lLCBmdW5jKSB7XG4gIHZhbGlkYXRpb25SdWxlc1tuYW1lXSA9IGZ1bmM7XG59O1xuXG5Gb3Jtc3kuRm9ybSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJGb3JtXCIsXG4gIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpc1ZhbGlkOiB0cnVlLFxuICAgICAgaXNTdWJtaXR0aW5nOiBmYWxzZSxcbiAgICAgIGNhbkNoYW5nZTogZmFsc2VcbiAgICB9O1xuICB9LFxuICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVhZGVyczoge30sXG4gICAgICBvblN1Y2Nlc3M6IGZ1bmN0aW9uICgpIHt9LFxuICAgICAgb25FcnJvcjogZnVuY3Rpb24gKCkge30sXG4gICAgICBvblN1Ym1pdDogZnVuY3Rpb24gKCkge30sXG4gICAgICBvblN1Ym1pdHRlZDogZnVuY3Rpb24gKCkge30sXG4gICAgICBvblZhbGlkOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uSW52YWxpZDogZnVuY3Rpb24gKCkge30sXG4gICAgICBvbkNoYW5nZTogZnVuY3Rpb24gKCkge31cbiAgICB9O1xuICB9LFxuXG4gIC8vIEFkZCBhIG1hcCB0byBzdG9yZSB0aGUgaW5wdXRzIG9mIHRoZSBmb3JtLCBhIG1vZGVsIHRvIHN0b3JlXG4gIC8vIHRoZSB2YWx1ZXMgb2YgdGhlIGZvcm0gYW5kIHJlZ2lzdGVyIGNoaWxkIGlucHV0c1xuICBjb21wb25lbnRXaWxsTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmlucHV0cyA9IHt9O1xuICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICB0aGlzLnJlZ2lzdGVySW5wdXRzKHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuICB9LFxuXG4gIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy52YWxpZGF0ZUZvcm0oKTtcbiAgfSxcblxuICBjb21wb25lbnRXaWxsVXBkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGlucHV0S2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuaW5wdXRzKTtcblxuICAgIC8vIFRoZSB1cGRhdGVkIGNoaWxkcmVuIGFycmF5IGlzIG5vdCBhdmFpbGFibGUgaGVyZSBmb3Igc29tZSByZWFzb24sXG4gICAgLy8gd2UgbmVlZCB0byB3YWl0IGZvciBuZXh0IGV2ZW50IGxvb3BcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblxuICAgICAgLy8gVGhlIGNvbXBvbmVudCBtaWdodCBoYXZlIGJlZW4gdW5tb3VudGVkIG9uIGFuXG4gICAgICAvLyB1cGRhdGVcbiAgICAgIGlmICh0aGlzLmlzTW91bnRlZCgpKSB7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlcklucHV0cyh0aGlzLnByb3BzLmNoaWxkcmVuKTtcblxuICAgICAgICB2YXIgbmV3SW5wdXRLZXlzID0gT2JqZWN0LmtleXModGhpcy5pbnB1dHMpO1xuICAgICAgICBpZiAodXRpbHMuYXJyYXlzRGlmZmVyKGlucHV0S2V5cywgbmV3SW5wdXRLZXlzKSkge1xuICAgICAgICAgIHRoaXMudmFsaWRhdGVGb3JtKCk7XG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgfS5iaW5kKHRoaXMpLCAwKTtcbiAgfSxcblxuICAvLyBVcGRhdGUgbW9kZWwsIHN1Ym1pdCB0byB1cmwgcHJvcCBhbmQgc2VuZCB0aGUgbW9kZWxcbiAgc3VibWl0OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gVHJpZ2dlciBmb3JtIGFzIG5vdCBwcmlzdGluZS5cbiAgICAvLyBJZiBhbnkgaW5wdXRzIGhhdmUgbm90IGJlZW4gdG91Y2hlZCB5ZXQgdGhpcyB3aWxsIG1ha2UgdGhlbSBkaXJ0eVxuICAgIC8vIHNvIHZhbGlkYXRpb24gYmVjb21lcyB2aXNpYmxlIChpZiBiYXNlZCBvbiBpc1ByaXN0aW5lKVxuICAgIHRoaXMuc2V0Rm9ybVByaXN0aW5lKGZhbHNlKTtcblxuICAgIC8vIFRvIHN1cHBvcnQgdXNlIGNhc2VzIHdoZXJlIG5vIGFzeW5jIG9yIHJlcXVlc3Qgb3BlcmF0aW9uIGlzIG5lZWRlZC5cbiAgICAvLyBUaGUgXCJvblN1Ym1pdFwiIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIHRoZSBtb2RlbCBlLmcuIHtmaWVsZE5hbWU6IFwibXlWYWx1ZVwifSxcbiAgICAvLyBpZiB3YW50aW5nIHRvIHJlc2V0IHRoZSBlbnRpcmUgZm9ybSB0byBvcmlnaW5hbCBzdGF0ZSwgdGhlIHNlY29uZCBwYXJhbSBpcyBhIGNhbGxiYWNrIGZvciB0aGlzLlxuICAgIGlmICghdGhpcy5wcm9wcy51cmwpIHtcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcbiAgICAgIHRoaXMucHJvcHMub25TdWJtaXQodGhpcy5tYXBNb2RlbCgpLCB0aGlzLnJlc2V0TW9kZWwsIHRoaXMudXBkYXRlSW5wdXRzV2l0aEVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZU1vZGVsKCk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc1N1Ym1pdHRpbmc6IHRydWVcbiAgICB9KTtcblxuICAgIHRoaXMucHJvcHMub25TdWJtaXQodGhpcy5tYXBNb2RlbCgpLCB0aGlzLnJlc2V0TW9kZWwsIHRoaXMudXBkYXRlSW5wdXRzV2l0aEVycm9yKTtcblxuICAgIHZhciBoZWFkZXJzID0gKE9iamVjdC5rZXlzKHRoaXMucHJvcHMuaGVhZGVycykubGVuZ3RoICYmIHRoaXMucHJvcHMuaGVhZGVycykgfHwgb3B0aW9ucy5oZWFkZXJzIHx8IHt9O1xuXG4gICAgdmFyIG1ldGhvZCA9IHRoaXMucHJvcHMubWV0aG9kICYmIHV0aWxzLmFqYXhbdGhpcy5wcm9wcy5tZXRob2QudG9Mb3dlckNhc2UoKV0gPyB0aGlzLnByb3BzLm1ldGhvZC50b0xvd2VyQ2FzZSgpIDogJ3Bvc3QnO1xuICAgIHV0aWxzLmFqYXhbbWV0aG9kXSh0aGlzLnByb3BzLnVybCwgdGhpcy5tYXBNb2RlbCgpLCB0aGlzLnByb3BzLmNvbnRlbnRUeXBlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgfHwgJ2pzb24nLCBoZWFkZXJzKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25TdWNjZXNzKHJlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5wcm9wcy5vblN1Ym1pdHRlZCgpO1xuICAgICAgfS5iaW5kKHRoaXMpKVxuICAgICAgLmNhdGNoKHRoaXMuZmFpbFN1Ym1pdCk7XG4gIH0sXG5cbiAgbWFwTW9kZWw6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5tYXBwaW5nID8gdGhpcy5wcm9wcy5tYXBwaW5nKHRoaXMubW9kZWwpIDogdGhpcy5tb2RlbDtcbiAgfSxcblxuICAvLyBHb2VzIHRocm91Z2ggYWxsIHJlZ2lzdGVyZWQgY29tcG9uZW50cyBhbmRcbiAgLy8gdXBkYXRlcyB0aGUgbW9kZWwgdmFsdWVzXG4gIHVwZGF0ZU1vZGVsOiBmdW5jdGlvbiAoKSB7XG4gICAgT2JqZWN0LmtleXModGhpcy5pbnB1dHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmlucHV0c1tuYW1lXTtcbiAgICAgIHRoaXMubW9kZWxbbmFtZV0gPSBjb21wb25lbnQuc3RhdGUuX3ZhbHVlO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0sXG5cbiAgLy8gUmVzZXQgZWFjaCBrZXkgaW4gdGhlIG1vZGVsIHRvIHRoZSBvcmlnaW5hbCAvIGluaXRpYWwgdmFsdWVcbiAgcmVzZXRNb2RlbDogZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5rZXlzKHRoaXMuaW5wdXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB0aGlzLmlucHV0c1tuYW1lXS5yZXNldFZhbHVlKCk7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnZhbGlkYXRlRm9ybSgpO1xuICB9LFxuXG4gIC8vIEdvIHRocm91Z2ggZXJyb3JzIGZyb20gc2VydmVyIGFuZCBncmFiIHRoZSBjb21wb25lbnRzXG4gIC8vIHN0b3JlZCBpbiB0aGUgaW5wdXRzIG1hcC4gQ2hhbmdlIHRoZWlyIHN0YXRlIHRvIGludmFsaWRcbiAgLy8gYW5kIHNldCB0aGUgc2VydmVyRXJyb3IgbWVzc2FnZVxuICB1cGRhdGVJbnB1dHNXaXRoRXJyb3I6IGZ1bmN0aW9uIChlcnJvcnMpIHtcbiAgICBPYmplY3Qua2V5cyhlcnJvcnMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5pbnB1dHNbbmFtZV07XG5cbiAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGFyZSB0cnlpbmcgdG8gdXBkYXRlIGFuIGlucHV0IHRoYXQgZG9lcyBub3QgZXhpc3RzLiBWZXJpZnkgZXJyb3JzIG9iamVjdCB3aXRoIGlucHV0IG5hbWVzLiAnICsgSlNPTi5zdHJpbmdpZnkoZXJyb3JzKSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBhcmdzID0gW3tcbiAgICAgICAgX2lzVmFsaWQ6IGZhbHNlLFxuICAgICAgICBfc2VydmVyRXJyb3I6IGVycm9yc1tuYW1lXVxuICAgICAgfV07XG4gICAgICBjb21wb25lbnQuc2V0U3RhdGUuYXBwbHkoY29tcG9uZW50LCBhcmdzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9LFxuXG4gIGZhaWxTdWJtaXQ6IGZ1bmN0aW9uIChlcnJvcnMpIHtcbiAgICB0aGlzLnVwZGF0ZUlucHV0c1dpdGhFcnJvcihlcnJvcnMpO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaXNTdWJtaXR0aW5nOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMucHJvcHMub25FcnJvcihlcnJvcnMpO1xuICAgIHRoaXMucHJvcHMub25TdWJtaXR0ZWQoKTtcbiAgfSxcblxuICAvLyBUcmF2ZXJzZSB0aGUgY2hpbGRyZW4gYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuIHRvIGZpbmRcbiAgLy8gYWxsIGlucHV0cyBieSBjaGVja2luZyB0aGUgbmFtZSBwcm9wLiBNYXliZSBkbyBhIGJldHRlclxuICAvLyBjaGVjayBoZXJlXG4gIHJlZ2lzdGVySW5wdXRzOiBmdW5jdGlvbiAoY2hpbGRyZW4pIHtcbiAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcblxuICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLnByb3BzICYmIGNoaWxkLnByb3BzLm5hbWUpIHtcbiAgICAgICAgY2hpbGQucHJvcHMuX2F0dGFjaFRvRm9ybSA9IHRoaXMuYXR0YWNoVG9Gb3JtO1xuICAgICAgICBjaGlsZC5wcm9wcy5fZGV0YWNoRnJvbUZvcm0gPSB0aGlzLmRldGFjaEZyb21Gb3JtO1xuICAgICAgICBjaGlsZC5wcm9wcy5fdmFsaWRhdGUgPSB0aGlzLnZhbGlkYXRlO1xuICAgICAgICBjaGlsZC5wcm9wcy5faXNGb3JtRGlzYWJsZWQgPSB0aGlzLmlzRm9ybURpc2FibGVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hpbGQgJiYgY2hpbGQucHJvcHMgJiYgY2hpbGQucHJvcHMuY2hpbGRyZW4pIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlcklucHV0cyhjaGlsZC5wcm9wcy5jaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICB9LmJpbmQodGhpcykpO1xuICB9LFxuXG4gIGlzRm9ybURpc2FibGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGlzYWJsZWQ7XG4gIH0sXG5cbiAgZ2V0Q3VycmVudFZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmlucHV0cykucmVkdWNlKGZ1bmN0aW9uIChkYXRhLCBuYW1lKSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gdGhpcy5pbnB1dHNbbmFtZV07XG4gICAgICBkYXRhW25hbWVdID0gY29tcG9uZW50LnN0YXRlLl92YWx1ZTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0uYmluZCh0aGlzKSwge30pO1xuICB9LFxuXG4gIHNldEZvcm1QcmlzdGluZTogZnVuY3Rpb24gKGlzUHJpc3RpbmUpIHtcbiAgICB2YXIgaW5wdXRzID0gdGhpcy5pbnB1dHM7XG4gICAgdmFyIGlucHV0S2V5cyA9IE9iamVjdC5rZXlzKGlucHV0cyk7XG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggZWFjaCBjb21wb25lbnQgYW5kIHNldCBpdCBhcyBwcmlzdGluZVxuICAgIC8vIG9yIFwiZGlydHlcIi5cbiAgICBpbnB1dEtleXMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSBpbnB1dHNbbmFtZV07XG4gICAgICBjb21wb25lbnQuc2V0U3RhdGUoe1xuICAgICAgICBfaXNQcmlzdGluZTogaXNQcmlzdGluZVxuICAgICAgfSk7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfSxcblxuICAvLyBVc2UgdGhlIGJpbmRlZCB2YWx1ZXMgYW5kIHRoZSBhY3R1YWwgaW5wdXQgdmFsdWUgdG9cbiAgLy8gdmFsaWRhdGUgdGhlIGlucHV0IGFuZCBzZXQgaXRzIHN0YXRlLiBUaGVuIGNoZWNrIHRoZVxuICAvLyBzdGF0ZSBvZiB0aGUgZm9ybSBpdHNlbGZcbiAgdmFsaWRhdGU6IGZ1bmN0aW9uIChjb21wb25lbnQpIHtcblxuICAgIC8vIFRyaWdnZXIgb25DaGFuZ2VcbiAgICBpZiAodGhpcy5zdGF0ZS5jYW5DaGFuZ2UpIHtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5nZXRDdXJyZW50VmFsdWVzKCkpO1xuICAgIH1cblxuICAgIGlmICghY29tcG9uZW50LnByb3BzLnJlcXVpcmVkICYmICFjb21wb25lbnQuX3ZhbGlkYXRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUnVuIHRocm91Z2ggdGhlIHZhbGlkYXRpb25zLCBzcGxpdCB0aGVtIHVwIGFuZCBjYWxsXG4gICAgLy8gdGhlIHZhbGlkYXRvciBJRiB0aGVyZSBpcyBhIHZhbHVlIG9yIGl0IGlzIHJlcXVpcmVkXG4gICAgdmFyIGlzVmFsaWQgPSB0aGlzLnJ1blZhbGlkYXRpb24oY29tcG9uZW50KTtcblxuICAgIGNvbXBvbmVudC5zZXRTdGF0ZSh7XG4gICAgICBfaXNWYWxpZDogaXNWYWxpZCxcbiAgICAgIF9zZXJ2ZXJFcnJvcjogbnVsbFxuICAgIH0sIHRoaXMudmFsaWRhdGVGb3JtKTtcblxuICB9LFxuXG4gIHJ1blZhbGlkYXRpb246IGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICB2YXIgaXNWYWxpZCA9IHRydWU7XG4gICAgaWYgKGNvbXBvbmVudC5fdmFsaWRhdGlvbnMubGVuZ3RoICYmIChjb21wb25lbnQucHJvcHMucmVxdWlyZWQgfHwgY29tcG9uZW50LnN0YXRlLl92YWx1ZSAhPT0gJycpKSB7XG4gICAgICBjb21wb25lbnQuX3ZhbGlkYXRpb25zLnNwbGl0KCcsJykuZm9yRWFjaChmdW5jdGlvbiAodmFsaWRhdGlvbikge1xuICAgICAgICB2YXIgYXJncyA9IHZhbGlkYXRpb24uc3BsaXQoJzonKTtcbiAgICAgICAgdmFyIHZhbGlkYXRlTWV0aG9kID0gYXJncy5zaGlmdCgpO1xuICAgICAgICBhcmdzID0gYXJncy5tYXAoZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShhcmcpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmc7IC8vIEl0IGlzIGEgc3RyaW5nIGlmIGl0IGNhbiBub3QgcGFyc2UgaXRcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBhcmdzID0gW2NvbXBvbmVudC5zdGF0ZS5fdmFsdWVdLmNvbmNhdChhcmdzKTtcbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uUnVsZXNbdmFsaWRhdGVNZXRob2RdKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3Jtc3kgZG9lcyBub3QgaGF2ZSB0aGUgdmFsaWRhdGlvbiBydWxlOiAnICsgdmFsaWRhdGVNZXRob2QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsaWRhdGlvblJ1bGVzW3ZhbGlkYXRlTWV0aG9kXS5hcHBseSh0aGlzLmdldEN1cnJlbnRWYWx1ZXMoKSwgYXJncykpIHtcbiAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgfVxuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9LFxuXG4gIC8vIFZhbGlkYXRlIHRoZSBmb3JtIGJ5IGdvaW5nIHRocm91Z2ggYWxsIGNoaWxkIGlucHV0IGNvbXBvbmVudHNcbiAgLy8gYW5kIGNoZWNrIHRoZWlyIHN0YXRlXG4gIHZhbGlkYXRlRm9ybTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBhbGxJc1ZhbGlkID0gdHJ1ZTtcbiAgICB2YXIgaW5wdXRzID0gdGhpcy5pbnB1dHM7XG4gICAgdmFyIGlucHV0S2V5cyA9IE9iamVjdC5rZXlzKGlucHV0cyk7XG5cbiAgICAvLyBXZSBuZWVkIGEgY2FsbGJhY2sgYXMgd2UgYXJlIHZhbGlkYXRpbmcgYWxsIGlucHV0cyBhZ2Fpbi4gVGhpcyB3aWxsXG4gICAgLy8gcnVuIHdoZW4gdGhlIGxhc3QgY29tcG9uZW50IGhhcyBzZXQgaXRzIHN0YXRlXG4gICAgdmFyIG9uVmFsaWRhdGlvbkNvbXBsZXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgaW5wdXRLZXlzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgaWYgKCFpbnB1dHNbbmFtZV0uc3RhdGUuX2lzVmFsaWQpIHtcbiAgICAgICAgICBhbGxJc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0uYmluZCh0aGlzKSk7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc1ZhbGlkOiBhbGxJc1ZhbGlkXG4gICAgICB9KTtcblxuICAgICAgaWYgKGFsbElzVmFsaWQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblZhbGlkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByb3BzLm9uSW52YWxpZCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBUZWxsIHRoZSBmb3JtIHRoYXQgaXQgY2FuIHN0YXJ0IHRvIHRyaWdnZXIgY2hhbmdlIGV2ZW50c1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNhbkNoYW5nZTogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICB9LmJpbmQodGhpcyk7XG5cbiAgICAvLyBSdW4gdmFsaWRhdGlvbiBhZ2FpbiBpbiBjYXNlIGFmZmVjdGVkIGJ5IG90aGVyIGlucHV0cy4gVGhlXG4gICAgLy8gbGFzdCBjb21wb25lbnQgdmFsaWRhdGVkIHdpbGwgcnVuIHRoZSBvblZhbGlkYXRpb25Db21wbGV0ZSBjYWxsYmFja1xuICAgIGlucHV0S2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IGlucHV0c1tuYW1lXTtcbiAgICAgIHZhciBpc1ZhbGlkID0gdGhpcy5ydW5WYWxpZGF0aW9uKGNvbXBvbmVudCk7XG4gICAgICBjb21wb25lbnQuc2V0U3RhdGUoe1xuICAgICAgICBfaXNWYWxpZDogaXNWYWxpZCxcbiAgICAgICAgX3NlcnZlckVycm9yOiBudWxsXG4gICAgICB9LCBpbmRleCA9PT0gaW5wdXRLZXlzLmxlbmd0aCAtIDEgPyBvblZhbGlkYXRpb25Db21wbGV0ZSA6IG51bGwpO1xuICAgIH0uYmluZCh0aGlzKSk7XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gaW5wdXRzLCBzZXQgc3RhdGUgd2hlcmUgZm9ybSBpcyByZWFkeSB0byB0cmlnZ2VyXG4gICAgLy8gY2hhbmdlIGV2ZW50LiBOZXcgaW5wdXRzIG1pZ2h0IGJlIGFkZGVkIGxhdGVyXG4gICAgaWYgKCFpbnB1dEtleXMubGVuZ3RoICYmIHRoaXMuaXNNb3VudGVkKCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjYW5DaGFuZ2U6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvLyBNZXRob2QgcHV0IG9uIGVhY2ggaW5wdXQgY29tcG9uZW50IHRvIHJlZ2lzdGVyXG4gIC8vIGl0c2VsZiB0byB0aGUgZm9ybVxuICBhdHRhY2hUb0Zvcm06IGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICB0aGlzLmlucHV0c1tjb21wb25lbnQucHJvcHMubmFtZV0gPSBjb21wb25lbnQ7XG4gICAgdGhpcy5tb2RlbFtjb21wb25lbnQucHJvcHMubmFtZV0gPSBjb21wb25lbnQuc3RhdGUuX3ZhbHVlO1xuICAgIHRoaXMudmFsaWRhdGUoY29tcG9uZW50KTtcbiAgfSxcblxuICAvLyBNZXRob2QgcHV0IG9uIGVhY2ggaW5wdXQgY29tcG9uZW50IHRvIHVucmVnaXN0ZXJcbiAgLy8gaXRzZWxmIGZyb20gdGhlIGZvcm1cbiAgZGV0YWNoRnJvbUZvcm06IGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICBkZWxldGUgdGhpcy5pbnB1dHNbY29tcG9uZW50LnByb3BzLm5hbWVdO1xuICAgIGRlbGV0ZSB0aGlzLm1vZGVsW2NvbXBvbmVudC5wcm9wcy5uYW1lXTtcbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG5cbiAgICByZXR1cm4gUmVhY3QuRE9NLmZvcm0oe1xuICAgICAgICBvblN1Ym1pdDogdGhpcy5zdWJtaXQsXG4gICAgICAgIGNsYXNzTmFtZTogdGhpcy5wcm9wcy5jbGFzc05hbWVcbiAgICAgIH0sXG4gICAgICB0aGlzLnByb3BzLmNoaWxkcmVuXG4gICAgKTtcblxuICB9XG59KTtcblxuaWYgKCFnbG9iYWwuZXhwb3J0cyAmJiAhZ2xvYmFsLm1vZHVsZSAmJiAoIWdsb2JhbC5kZWZpbmUgfHwgIWdsb2JhbC5kZWZpbmUuYW1kKSkge1xuICBnbG9iYWwuRm9ybXN5ID0gRm9ybXN5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEZvcm1zeTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTDFWelpYSnpMMk5vY21semRHbGhibUZzWm05dWFTOUViMk4xYldWdWRITXZaR1YyTDJadmNtMXplUzF5WldGamRDOXpjbU12YldGcGJpNXFjeUlzSW5OdmRYSmpaWE1pT2xzaUwxVnpaWEp6TDJOb2NtbHpkR2xoYm1Gc1ptOXVhUzlFYjJOMWJXVnVkSE12WkdWMkwyWnZjbTF6ZVMxeVpXRmpkQzl6Y21NdmJXRnBiaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeEpRVUZKTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1MwRkJTeXhKUVVGSkxFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTTNReXhKUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdRVUZEYUVJc1NVRkJTU3hsUVVGbExFZEJRVWNzVDBGQlR5eERRVUZETEhOQ1FVRnpRaXhEUVVGRExFTkJRVU03UVVGRGRFUXNTVUZCU1N4TFFVRkxMRWRCUVVjc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzBGQlEyeERMRWxCUVVrc1MwRkJTeXhIUVVGSExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0QlFVTnNReXhKUVVGSkxFOUJRVThzUjBGQlJ5eEZRVUZGTEVOQlFVTTdPMEZCUldwQ0xFMUJRVTBzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPenRCUVVWeVFpeE5RVUZOTEVOQlFVTXNVVUZCVVN4SFFVRkhMRlZCUVZVc1lVRkJZU3hGUVVGRk8wVkJRM3BETEU5QlFVOHNSMEZCUnl4aFFVRmhMRU5CUVVNN1FVRkRNVUlzUTBGQlF5eERRVUZET3p0QlFVVkdMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4VlFVRlZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVU3UlVGREwwTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU12UWl4RFFVRkRMRU5CUVVNN08wRkJSVVlzYVVOQlFXbERMRzlDUVVGQk8wVkJReTlDTEdWQlFXVXNSVUZCUlN4WlFVRlpPMGxCUXpOQ0xFOUJRVTg3VFVGRFRDeFBRVUZQTEVWQlFVVXNTVUZCU1R0TlFVTmlMRmxCUVZrc1JVRkJSU3hMUVVGTE8wMUJRMjVDTEZOQlFWTXNSVUZCUlN4TFFVRkxPMHRCUTJwQ0xFTkJRVU03UjBGRFNEdEZRVU5FTEdWQlFXVXNSVUZCUlN4WlFVRlpPMGxCUXpOQ0xFOUJRVTg3VFVGRFRDeFBRVUZQTEVWQlFVVXNSVUZCUlR0TlFVTllMRk5CUVZNc1JVRkJSU3haUVVGWkxFVkJRVVU3VFVGRGVrSXNUMEZCVHl4RlFVRkZMRmxCUVZrc1JVRkJSVHROUVVOMlFpeFJRVUZSTEVWQlFVVXNXVUZCV1N4RlFVRkZPMDFCUTNoQ0xGZEJRVmNzUlVGQlJTeFpRVUZaTEVWQlFVVTdUVUZETTBJc1QwRkJUeXhGUVVGRkxGbEJRVmtzUlVGQlJUdE5RVU4yUWl4VFFVRlRMRVZCUVVVc1dVRkJXU3hGUVVGRk8wMUJRM3BDTEZGQlFWRXNSVUZCUlN4WlFVRlpMRVZCUVVVN1MwRkRla0lzUTBGQlF6dEJRVU5PTEVkQlFVYzdRVUZEU0R0QlFVTkJPenRGUVVWRkxHdENRVUZyUWl4RlFVRkZMRmxCUVZrN1NVRkRPVUlzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRha0lzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRhRUlzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlF6ZERMRWRCUVVjN08wVkJSVVFzYVVKQlFXbENMRVZCUVVVc1dVRkJXVHRKUVVNM1FpeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1FVRkRlRUlzUjBGQlJ6czdSVUZGUkN4dFFrRkJiVUlzUlVGQlJTeFpRVUZaTzBGQlEyNURMRWxCUVVrc1NVRkJTU3hUUVVGVExFZEJRVWNzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRE4wTTdRVUZEUVRzN1FVRkZRU3hKUVVGSkxGVkJRVlVzUTBGQlF5eFpRVUZaTzBGQlF6TkNPMEZCUTBFN08wRkJSVUVzVFVGQlRTeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1JVRkJSVHM3UVVGRk5VSXNVVUZCVVN4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN08xRkJSWHBETEVsQlFVa3NXVUZCV1N4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUXpWRExFbEJRVWtzUzBGQlN5eERRVUZETEZsQlFWa3NRMEZCUXl4VFFVRlRMRVZCUVVVc1dVRkJXU3hEUVVGRExFVkJRVVU3VlVGREwwTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8wRkJRemxDTEZOQlFWTTdPMEZCUlZRc1QwRkJUenM3UzBGRlJpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU55UWl4SFFVRkhPMEZCUTBnN08wVkJSVVVzVFVGQlRTeEZRVUZGTEZWQlFWVXNTMEZCU3l4RlFVRkZPMEZCUXpOQ0xFbEJRVWtzUzBGQlN5eERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRPMEZCUXpOQ08wRkJRMEU3UVVGRFFUczdRVUZGUVN4SlFVRkpMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdRVUZEYUVNN1FVRkRRVHRCUVVOQk96dEpRVVZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUlVGQlJUdE5RVU51UWl4SlFVRkpMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03VFVGRGJrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU03VFVGRGJFWXNUMEZCVHp0QlFVTmlMRXRCUVVzN08wbEJSVVFzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMGxCUTI1Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdUVUZEV2l4WlFVRlpMRVZCUVVVc1NVRkJTVHRCUVVONFFpeExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZVQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRPenRCUVVWMFJpeEpRVUZKTEVsQlFVa3NUMEZCVHl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1MwRkJTeXhQUVVGUExFTkJRVU1zVDBGQlR5eEpRVUZKTEVWQlFVVXNRMEZCUXpzN1NVRkZkRWNzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NSVUZCUlN4SFFVRkhMRTFCUVUwc1EwRkJRenRKUVVONlNDeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQlJTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1NVRkJTU3hQUVVGUExFTkJRVU1zVjBGQlZ5eEpRVUZKTEUxQlFVMHNSVUZCUlN4UFFVRlBMRU5CUVVNN1QwRkRiRWdzU1VGQlNTeERRVUZETEZWQlFWVXNVVUZCVVN4RlFVRkZPMUZCUTNoQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8xRkJReTlDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03VDBGRE1VSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRFdpeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJRemxDTEVkQlFVYzdPMFZCUlVRc1VVRkJVU3hGUVVGRkxGbEJRVms3U1VGRGNFSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenRCUVVNMVJTeEhRVUZITzBGQlEwZzdRVUZEUVRzN1JVRkZSU3hYUVVGWExFVkJRVVVzV1VGQldUdEpRVU4yUWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFVkJRVVU3VFVGREwwTXNTVUZCU1N4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TlFVTnNReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETzB0QlF6TkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYkVJc1IwRkJSenRCUVVOSU96dEZRVVZGTEZWQlFWVXNSVUZCUlN4WlFVRlpPMGxCUTNSQ0xFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVa3NSVUZCUlR0TlFVTXZReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wdEJRMmhETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFpDeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1FVRkRlRUlzUjBGQlJ6dEJRVU5JTzBGQlEwRTdRVUZEUVRzN1JVRkZSU3h4UWtGQmNVSXNSVUZCUlN4VlFVRlZMRTFCUVUwc1JVRkJSVHRKUVVOMlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVa3NSVUZCUlN4TFFVRkxMRVZCUVVVN1FVRkRka1FzVFVGQlRTeEpRVUZKTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3p0TlFVVnNReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTzFGQlEyUXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhwUjBGQmFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEY0Vvc1QwRkJUenM3VFVGRlJDeEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRPMUZCUTFZc1VVRkJVU3hGUVVGRkxFdEJRVXM3VVVGRFppeFpRVUZaTEVWQlFVVXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJRenRQUVVNelFpeERRVUZETEVOQlFVTTdUVUZEU0N4VFFVRlRMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFRRVUZUTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRNME1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOc1FpeEhRVUZIT3p0RlFVVkVMRlZCUVZVc1JVRkJSU3hWUVVGVkxFMUJRVTBzUlVGQlJUdEpRVU0xUWl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkRia01zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0TlFVTmFMRmxCUVZrc1JVRkJSU3hMUVVGTE8wdEJRM0JDTEVOQlFVTXNRMEZCUXp0SlFVTklMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUXpOQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN1FVRkROMElzUjBGQlJ6dEJRVU5JTzBGQlEwRTdRVUZEUVRzN1JVRkZSU3hqUVVGakxFVkJRVVVzVlVGQlZTeFJRVUZSTEVWQlFVVTdRVUZEZEVNc1NVRkJTU3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVU3TzAxQlJXaEVMRWxCUVVrc1MwRkJTeXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFVkJRVVU3VVVGRE5VTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXp0UlFVTTVReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRE8xRkJRMnhFTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdVVUZEZEVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJRenRCUVVNeFJDeFBRVUZQT3p0TlFVVkVMRWxCUVVrc1MwRkJTeXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFVkJRVVU3VVVGRGFFUXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTJ4RUxFOUJRVTg3TzB0QlJVWXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5zUWl4SFFVRkhPenRGUVVWRUxHTkJRV01zUlVGQlJTeFpRVUZaTzBsQlF6RkNMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZETDBJc1IwRkJSenM3UlVGRlJDeG5Ra0ZCWjBJc1JVRkJSU3haUVVGWk8wbEJRelZDTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJUdE5RVU16UkN4SlFVRkpMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMDFCUTJ4RExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF6dE5RVU53UXl4UFFVRlBMRWxCUVVrc1EwRkJRenRMUVVOaUxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM1JDTEVkQlFVYzdPMFZCUlVRc1pVRkJaU3hGUVVGRkxGVkJRVlVzVlVGQlZTeEZRVUZGTzBsQlEzSkRMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZETjBJc1NVRkJTU3hKUVVGSkxGTkJRVk1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRM2hETzBGQlEwRTdPMGxCUlVrc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVa3NSVUZCUlN4TFFVRkxMRVZCUVVVN1RVRkRka01zU1VGQlNTeFRRVUZUTEVkQlFVY3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wMUJRemRDTEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkRha0lzVjBGQlZ5eEZRVUZGTEZWQlFWVTdUMEZEZUVJc1EwRkJReXhEUVVGRE8wdEJRMG9zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOc1FpeEhRVUZITzBGQlEwZzdRVUZEUVR0QlFVTkJPenRCUVVWQkxFVkJRVVVzVVVGQlVTeEZRVUZGTEZWQlFWVXNVMEZCVXl4RlFVRkZPMEZCUTJwRE96dEpRVVZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhUUVVGVExFVkJRVVU3VFVGRGVFSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU51UkN4TFFVRkxPenRKUVVWRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eFpRVUZaTEVWQlFVVTdUVUZEZUVRc1QwRkJUenRCUVVOaUxFdEJRVXM3UVVGRFREdEJRVU5CT3p0QlFVVkJMRWxCUVVrc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenM3U1VGRk5VTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJRenROUVVOcVFpeFJRVUZSTEVWQlFVVXNUMEZCVHp0TlFVTnFRaXhaUVVGWkxFVkJRVVVzU1VGQlNUdEJRVU40UWl4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZET3p0QlFVVXhRaXhIUVVGSE96dEZRVVZFTEdGQlFXRXNSVUZCUlN4VlFVRlZMRk5CUVZNc1JVRkJSVHRKUVVOc1F5eEpRVUZKTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNN1NVRkRia0lzU1VGQlNTeFRRVUZUTEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVUwc1MwRkJTeXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNTVUZCU1N4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlR0TlFVTm9SeXhUUVVGVExFTkJRVU1zV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeFZRVUZWTEVWQlFVVTdVVUZET1VRc1NVRkJTU3hKUVVGSkxFZEJRVWNzVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOcVF5eEpRVUZKTEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03VVVGRGJFTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zVlVGQlZTeEhRVUZITEVWQlFVVTdWVUZETjBJc1NVRkJTVHRaUVVOR0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRYUVVONFFpeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZPMWxCUTFZc1QwRkJUeXhIUVVGSExFTkJRVU03VjBGRFdqdFRRVU5HTEVOQlFVTXNRMEZCUXp0UlFVTklMRWxCUVVrc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6ZERMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zWTBGQll5eERRVUZETEVWQlFVVTdWVUZEY0VNc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5dzBRMEZCTkVNc1IwRkJSeXhqUVVGakxFTkJRVU1zUTBGQlF6dFRRVU5vUmp0UlFVTkVMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNSVUZCUlN4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRk8xVkJRM3BGTEU5QlFVOHNSMEZCUnl4TFFVRkxMRU5CUVVNN1UwRkRha0k3VDBGRFJpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRMlk3U1VGRFJDeFBRVUZQTEU5QlFVOHNRMEZCUXp0QlFVTnVRaXhIUVVGSE8wRkJRMGc3UVVGRFFUczdSVUZGUlN4WlFVRlpMRVZCUVVVc1dVRkJXVHRKUVVONFFpeEpRVUZKTEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1NVRkRkRUlzU1VGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNM1FpeEpRVUZKTEVsQlFVa3NVMEZCVXl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEZUVNN1FVRkRRVHM3U1VGRlNTeEpRVUZKTEc5Q1FVRnZRaXhIUVVGSExGbEJRVms3VFVGRGNrTXNVMEZCVXl4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFbEJRVWtzUlVGQlJUdFJRVU5vUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRVZCUVVVN1ZVRkRhRU1zVlVGQlZTeEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTndRanRCUVVOVUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenM3VFVGRlpDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUTFvc1QwRkJUeXhGUVVGRkxGVkJRVlU3UVVGRE0wSXNUMEZCVHl4RFFVRkRMRU5CUVVNN08wMUJSVWdzU1VGQlNTeFZRVUZWTEVWQlFVVTdVVUZEWkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzA5QlEzUkNMRTFCUVUwN1VVRkRUQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMEZCUXk5Q0xFOUJRVTg3UVVGRFVEczdUVUZGVFN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8xRkJRMW9zVTBGQlV5eEZRVUZGTEVsQlFVazdRVUZEZGtJc1QwRkJUeXhEUVVGRExFTkJRVU03TzBGQlJWUXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU5xUWp0QlFVTkJPenRKUVVWSkxGTkJRVk1zUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRk8wMUJRM1pETEVsQlFVa3NVMEZCVXl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dE5RVU0zUWl4SlFVRkpMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMDFCUXpWRExGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTTdVVUZEYWtJc1VVRkJVU3hGUVVGRkxFOUJRVTg3VVVGRGFrSXNXVUZCV1N4RlFVRkZMRWxCUVVrN1QwRkRia0lzUlVGQlJTeExRVUZMTEV0QlFVc3NVMEZCVXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFZEJRVWNzYjBKQlFXOUNMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGRrVXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEyeENPMEZCUTBFN08wbEJSVWtzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeEZRVUZGTzAxQlEzcERMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VVVGRFdpeFRRVUZUTEVWQlFVVXNTVUZCU1R0UFFVTm9RaXhEUVVGRExFTkJRVU03UzBGRFNqdEJRVU5NTEVkQlFVYzdRVUZEU0R0QlFVTkJPenRGUVVWRkxGbEJRVmtzUlVGQlJTeFZRVUZWTEZOQlFWTXNSVUZCUlR0SlFVTnFReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETzBsQlF6bERMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0SlFVTXhSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUXpkQ0xFZEJRVWM3UVVGRFNEdEJRVU5CT3p0RlFVVkZMR05CUVdNc1JVRkJSU3hWUVVGVkxGTkJRVk1zUlVGQlJUdEpRVU51UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVONlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SFFVTjZRenRCUVVOSUxFVkJRVVVzVFVGQlRTeEZRVUZGTEZsQlFWazdPMGxCUld4Q0xFOUJRVThzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNN1VVRkRiRUlzVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5PMUZCUTNKQ0xGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNN1QwRkRhRU03VFVGRFJDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFN1FVRkRla0lzUzBGQlN5eERRVUZET3p0SFFVVklPMEZCUTBnc1EwRkJReXhEUVVGRExFTkJRVU03TzBGQlJVZ3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3UlVGREwwVXNUVUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03UVVGRGVrSXNRMEZCUXpzN1FVRkZSQ3hOUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEUxQlFVMHNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkluWmhjaUJTWldGamRDQTlJR2RzYjJKaGJDNVNaV0ZqZENCOGZDQnlaWEYxYVhKbEtDZHlaV0ZqZENjcE8xeHVkbUZ5SUVadmNtMXplU0E5SUh0OU8xeHVkbUZ5SUhaaGJHbGtZWFJwYjI1U2RXeGxjeUE5SUhKbGNYVnBjbVVvSnk0dmRtRnNhV1JoZEdsdmJsSjFiR1Z6TG1wekp5azdYRzUyWVhJZ2RYUnBiSE1nUFNCeVpYRjFhWEpsS0NjdUwzVjBhV3h6TG1wekp5azdYRzUyWVhJZ1RXbDRhVzRnUFNCeVpYRjFhWEpsS0NjdUwwMXBlR2x1TG1wekp5azdYRzUyWVhJZ2IzQjBhVzl1Y3lBOUlIdDlPMXh1WEc1R2IzSnRjM2t1VFdsNGFXNGdQU0JOYVhocGJqdGNibHh1Um05eWJYTjVMbVJsWm1GMWJIUnpJRDBnWm5WdVkzUnBiMjRnS0hCaGMzTmxaRTl3ZEdsdmJuTXBJSHRjYmlBZ2IzQjBhVzl1Y3lBOUlIQmhjM05sWkU5d2RHbHZibk03WEc1OU8xeHVYRzVHYjNKdGMza3VZV1JrVm1Gc2FXUmhkR2x2YmxKMWJHVWdQU0JtZFc1amRHbHZiaUFvYm1GdFpTd2dablZ1WXlrZ2UxeHVJQ0IyWVd4cFpHRjBhVzl1VW5Wc1pYTmJibUZ0WlYwZ1BTQm1kVzVqTzF4dWZUdGNibHh1Um05eWJYTjVMa1p2Y20wZ1BTQlNaV0ZqZEM1amNtVmhkR1ZEYkdGemN5aDdYRzRnSUdkbGRFbHVhWFJwWVd4VGRHRjBaVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0JwYzFaaGJHbGtPaUIwY25WbExGeHVJQ0FnSUNBZ2FYTlRkV0p0YVhSMGFXNW5PaUJtWVd4elpTeGNiaUFnSUNBZ0lHTmhia05vWVc1blpUb2dabUZzYzJWY2JpQWdJQ0I5TzF4dUlDQjlMRnh1SUNCblpYUkVaV1poZFd4MFVISnZjSE02SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCeVpYUjFjbTRnZTF4dUlDQWdJQ0FnYUdWaFpHVnljem9nZTMwc1hHNGdJQ0FnSUNCdmJsTjFZMk5sYzNNNklHWjFibU4wYVc5dUlDZ3BJSHQ5TEZ4dUlDQWdJQ0FnYjI1RmNuSnZjam9nWm5WdVkzUnBiMjRnS0NrZ2UzMHNYRzRnSUNBZ0lDQnZibE4xWW0xcGREb2dablZ1WTNScGIyNGdLQ2tnZTMwc1hHNGdJQ0FnSUNCdmJsTjFZbTFwZEhSbFpEb2dablZ1WTNScGIyNGdLQ2tnZTMwc1hHNGdJQ0FnSUNCdmJsWmhiR2xrT2lCbWRXNWpkR2x2YmlBb0tTQjdmU3hjYmlBZ0lDQWdJRzl1U1c1MllXeHBaRG9nWm5WdVkzUnBiMjRnS0NrZ2UzMHNYRzRnSUNBZ0lDQnZia05vWVc1blpUb2dablZ1WTNScGIyNGdLQ2tnZTMxY2JpQWdJQ0I5TzF4dUlDQjlMRnh1WEc0Z0lDOHZJRUZrWkNCaElHMWhjQ0IwYnlCemRHOXlaU0IwYUdVZ2FXNXdkWFJ6SUc5bUlIUm9aU0JtYjNKdExDQmhJRzF2WkdWc0lIUnZJSE4wYjNKbFhHNGdJQzh2SUhSb1pTQjJZV3gxWlhNZ2IyWWdkR2hsSUdadmNtMGdZVzVrSUhKbFoybHpkR1Z5SUdOb2FXeGtJR2x1Y0hWMGMxeHVJQ0JqYjIxd2IyNWxiblJYYVd4c1RXOTFiblE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMGFHbHpMbWx1Y0hWMGN5QTlJSHQ5TzF4dUlDQWdJSFJvYVhNdWJXOWtaV3dnUFNCN2ZUdGNiaUFnSUNCMGFHbHpMbkpsWjJsemRHVnlTVzV3ZFhSektIUm9hWE11Y0hKdmNITXVZMmhwYkdSeVpXNHBPMXh1SUNCOUxGeHVYRzRnSUdOdmJYQnZibVZ1ZEVScFpFMXZkVzUwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RHaHBjeTUyWVd4cFpHRjBaVVp2Y20wb0tUdGNiaUFnZlN4Y2JseHVJQ0JqYjIxd2IyNWxiblJYYVd4c1ZYQmtZWFJsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2RtRnlJR2x1Y0hWMFMyVjVjeUE5SUU5aWFtVmpkQzVyWlhsektIUm9hWE11YVc1d2RYUnpLVHRjYmx4dUlDQWdJQzh2SUZSb1pTQjFjR1JoZEdWa0lHTm9hV3hrY21WdUlHRnljbUY1SUdseklHNXZkQ0JoZG1GcGJHRmliR1VnYUdWeVpTQm1iM0lnYzI5dFpTQnlaV0Z6YjI0c1hHNGdJQ0FnTHk4Z2QyVWdibVZsWkNCMGJ5QjNZV2wwSUdadmNpQnVaWGgwSUdWMlpXNTBJR3h2YjNCY2JpQWdJQ0J6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1SUNncElIdGNibHh1SUNBZ0lDQWdMeThnVkdobElHTnZiWEJ2Ym1WdWRDQnRhV2RvZENCb1lYWmxJR0psWlc0Z2RXNXRiM1Z1ZEdWa0lHOXVJR0Z1WEc0Z0lDQWdJQ0F2THlCMWNHUmhkR1ZjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbWx6VFc5MWJuUmxaQ2dwS1NCN1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1eVpXZHBjM1JsY2tsdWNIVjBjeWgwYUdsekxuQnliM0J6TG1Ob2FXeGtjbVZ1S1R0Y2JseHVJQ0FnSUNBZ0lDQjJZWElnYm1WM1NXNXdkWFJMWlhseklEMGdUMkpxWldOMExtdGxlWE1vZEdocGN5NXBibkIxZEhNcE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZFhScGJITXVZWEp5WVhselJHbG1abVZ5S0dsdWNIVjBTMlY1Y3l3Z2JtVjNTVzV3ZFhSTFpYbHpLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11ZG1Gc2FXUmhkR1ZHYjNKdEtDazdYRzRnSUNBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnZlM1aWFXNWtLSFJvYVhNcExDQXdLVHRjYmlBZ2ZTeGNibHh1SUNBdkx5QlZjR1JoZEdVZ2JXOWtaV3dzSUhOMVltMXBkQ0IwYnlCMWNtd2djSEp2Y0NCaGJtUWdjMlZ1WkNCMGFHVWdiVzlrWld4Y2JpQWdjM1ZpYldsME9pQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNCbGRtVnVkQzV3Y21WMlpXNTBSR1ZtWVhWc2RDZ3BPMXh1WEc0Z0lDQWdMeThnVkhKcFoyZGxjaUJtYjNKdElHRnpJRzV2ZENCd2NtbHpkR2x1WlM1Y2JpQWdJQ0F2THlCSlppQmhibmtnYVc1d2RYUnpJR2hoZG1VZ2JtOTBJR0psWlc0Z2RHOTFZMmhsWkNCNVpYUWdkR2hwY3lCM2FXeHNJRzFoYTJVZ2RHaGxiU0JrYVhKMGVWeHVJQ0FnSUM4dklITnZJSFpoYkdsa1lYUnBiMjRnWW1WamIyMWxjeUIyYVhOcFlteGxJQ2hwWmlCaVlYTmxaQ0J2YmlCcGMxQnlhWE4wYVc1bEtWeHVJQ0FnSUhSb2FYTXVjMlYwUm05eWJWQnlhWE4wYVc1bEtHWmhiSE5sS1R0Y2JseHVJQ0FnSUM4dklGUnZJSE4xY0hCdmNuUWdkWE5sSUdOaGMyVnpJSGRvWlhKbElHNXZJR0Z6ZVc1aklHOXlJSEpsY1hWbGMzUWdiM0JsY21GMGFXOXVJR2x6SUc1bFpXUmxaQzVjYmlBZ0lDQXZMeUJVYUdVZ1hDSnZibE4xWW0xcGRGd2lJR05oYkd4aVlXTnJJR2x6SUdOaGJHeGxaQ0IzYVhSb0lIUm9aU0J0YjJSbGJDQmxMbWN1SUh0bWFXVnNaRTVoYldVNklGd2liWGxXWVd4MVpWd2lmU3hjYmlBZ0lDQXZMeUJwWmlCM1lXNTBhVzVuSUhSdklISmxjMlYwSUhSb1pTQmxiblJwY21VZ1ptOXliU0IwYnlCdmNtbG5hVzVoYkNCemRHRjBaU3dnZEdobElITmxZMjl1WkNCd1lYSmhiU0JwY3lCaElHTmhiR3hpWVdOcklHWnZjaUIwYUdsekxseHVJQ0FnSUdsbUlDZ2hkR2hwY3k1d2NtOXdjeTUxY213cElIdGNiaUFnSUNBZ0lIUm9hWE11ZFhCa1lYUmxUVzlrWld3b0tUdGNiaUFnSUNBZ0lIUm9hWE11Y0hKdmNITXViMjVUZFdKdGFYUW9kR2hwY3k1dFlYQk5iMlJsYkNncExDQjBhR2x6TG5KbGMyVjBUVzlrWld3c0lIUm9hWE11ZFhCa1lYUmxTVzV3ZFhSelYybDBhRVZ5Y205eUtUdGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxuVndaR0YwWlUxdlpHVnNLQ2s3WEc0Z0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN1hHNGdJQ0FnSUNCcGMxTjFZbTFwZEhScGJtYzZJSFJ5ZFdWY2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUhSb2FYTXVjSEp2Y0hNdWIyNVRkV0p0YVhRb2RHaHBjeTV0WVhCTmIyUmxiQ2dwTENCMGFHbHpMbkpsYzJWMFRXOWtaV3dzSUhSb2FYTXVkWEJrWVhSbFNXNXdkWFJ6VjJsMGFFVnljbTl5S1R0Y2JseHVJQ0FnSUhaaGNpQm9aV0ZrWlhKeklEMGdLRTlpYW1WamRDNXJaWGx6S0hSb2FYTXVjSEp2Y0hNdWFHVmhaR1Z5Y3lrdWJHVnVaM1JvSUNZbUlIUm9hWE11Y0hKdmNITXVhR1ZoWkdWeWN5a2dmSHdnYjNCMGFXOXVjeTVvWldGa1pYSnpJSHg4SUh0OU8xeHVYRzRnSUNBZ2RtRnlJRzFsZEdodlpDQTlJSFJvYVhNdWNISnZjSE11YldWMGFHOWtJQ1ltSUhWMGFXeHpMbUZxWVhoYmRHaHBjeTV3Y205d2N5NXRaWFJvYjJRdWRHOU1iM2RsY2tOaGMyVW9LVjBnUHlCMGFHbHpMbkJ5YjNCekxtMWxkR2h2WkM1MGIweHZkMlZ5UTJGelpTZ3BJRG9nSjNCdmMzUW5PMXh1SUNBZ0lIVjBhV3h6TG1GcVlYaGJiV1YwYUc5a1hTaDBhR2x6TG5CeWIzQnpMblZ5YkN3Z2RHaHBjeTV0WVhCTmIyUmxiQ2dwTENCMGFHbHpMbkJ5YjNCekxtTnZiblJsYm5SVWVYQmxJSHg4SUc5d2RHbHZibk11WTI5dWRHVnVkRlI1Y0dVZ2ZId2dKMnB6YjI0bkxDQm9aV0ZrWlhKektWeHVJQ0FnSUNBZ0xuUm9aVzRvWm5WdVkzUnBiMjRnS0hKbGMzQnZibk5sS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11Y0hKdmNITXViMjVUZFdOalpYTnpLSEpsYzNCdmJuTmxLVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXdjbTl3Y3k1dmJsTjFZbTFwZEhSbFpDZ3BPMXh1SUNBZ0lDQWdmUzVpYVc1a0tIUm9hWE1wS1Z4dUlDQWdJQ0FnTG1OaGRHTm9LSFJvYVhNdVptRnBiRk4xWW0xcGRDazdYRzRnSUgwc1hHNWNiaUFnYldGd1RXOWtaV3c2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXdjbTl3Y3k1dFlYQndhVzVuSUQ4Z2RHaHBjeTV3Y205d2N5NXRZWEJ3YVc1bktIUm9hWE11Ylc5a1pXd3BJRG9nZEdocGN5NXRiMlJsYkR0Y2JpQWdmU3hjYmx4dUlDQXZMeUJIYjJWeklIUm9jbTkxWjJnZ1lXeHNJSEpsWjJsemRHVnlaV1FnWTI5dGNHOXVaVzUwY3lCaGJtUmNiaUFnTHk4Z2RYQmtZWFJsY3lCMGFHVWdiVzlrWld3Z2RtRnNkV1Z6WEc0Z0lIVndaR0YwWlUxdlpHVnNPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnVDJKcVpXTjBMbXRsZVhNb2RHaHBjeTVwYm5CMWRITXBMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNGdLRzVoYldVcElIdGNiaUFnSUNBZ0lIWmhjaUJqYjIxd2IyNWxiblFnUFNCMGFHbHpMbWx1Y0hWMGMxdHVZVzFsWFR0Y2JpQWdJQ0FnSUhSb2FYTXViVzlrWld4YmJtRnRaVjBnUFNCamIyMXdiMjVsYm5RdWMzUmhkR1V1WDNaaGJIVmxPMXh1SUNBZ0lIMHVZbWx1WkNoMGFHbHpLU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdVbVZ6WlhRZ1pXRmphQ0JyWlhrZ2FXNGdkR2hsSUcxdlpHVnNJSFJ2SUhSb1pTQnZjbWxuYVc1aGJDQXZJR2x1YVhScFlXd2dkbUZzZFdWY2JpQWdjbVZ6WlhSTmIyUmxiRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUU5aWFtVmpkQzVyWlhsektIUm9hWE11YVc1d2RYUnpLUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVJQ2h1WVcxbEtTQjdYRzRnSUNBZ0lDQjBhR2x6TG1sdWNIVjBjMXR1WVcxbFhTNXlaWE5sZEZaaGJIVmxLQ2s3WEc0Z0lDQWdmUzVpYVc1a0tIUm9hWE1wS1R0Y2JpQWdJQ0IwYUdsekxuWmhiR2xrWVhSbFJtOXliU2dwTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRWR2SUhSb2NtOTFaMmdnWlhKeWIzSnpJR1p5YjIwZ2MyVnlkbVZ5SUdGdVpDQm5jbUZpSUhSb1pTQmpiMjF3YjI1bGJuUnpYRzRnSUM4dklITjBiM0psWkNCcGJpQjBhR1VnYVc1d2RYUnpJRzFoY0M0Z1EyaGhibWRsSUhSb1pXbHlJSE4wWVhSbElIUnZJR2x1ZG1Gc2FXUmNiaUFnTHk4Z1lXNWtJSE5sZENCMGFHVWdjMlZ5ZG1WeVJYSnliM0lnYldWemMyRm5aVnh1SUNCMWNHUmhkR1ZKYm5CMWRITlhhWFJvUlhKeWIzSTZJR1oxYm1OMGFXOXVJQ2hsY25KdmNuTXBJSHRjYmlBZ0lDQlBZbXBsWTNRdWEyVjVjeWhsY25KdmNuTXBMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNGdLRzVoYldVc0lHbHVaR1Y0S1NCN1hHNGdJQ0FnSUNCMllYSWdZMjl0Y0c5dVpXNTBJRDBnZEdocGN5NXBibkIxZEhOYmJtRnRaVjA3WEc1Y2JpQWdJQ0FnSUdsbUlDZ2hZMjl0Y0c5dVpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduV1c5MUlHRnlaU0IwY25scGJtY2dkRzhnZFhCa1lYUmxJR0Z1SUdsdWNIVjBJSFJvWVhRZ1pHOWxjeUJ1YjNRZ1pYaHBjM1J6TGlCV1pYSnBabmtnWlhKeWIzSnpJRzlpYW1WamRDQjNhWFJvSUdsdWNIVjBJRzVoYldWekxpQW5JQ3NnU2xOUFRpNXpkSEpwYm1kcFpua29aWEp5YjNKektTazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJSFpoY2lCaGNtZHpJRDBnVzN0Y2JpQWdJQ0FnSUNBZ1gybHpWbUZzYVdRNklHWmhiSE5sTEZ4dUlDQWdJQ0FnSUNCZmMyVnlkbVZ5UlhKeWIzSTZJR1Z5Y205eWMxdHVZVzFsWFZ4dUlDQWdJQ0FnZlYwN1hHNGdJQ0FnSUNCamIyMXdiMjVsYm5RdWMyVjBVM1JoZEdVdVlYQndiSGtvWTI5dGNHOXVaVzUwTENCaGNtZHpLVHRjYmlBZ0lDQjlMbUpwYm1Rb2RHaHBjeWtwTzF4dUlDQjlMRnh1WEc0Z0lHWmhhV3hUZFdKdGFYUTZJR1oxYm1OMGFXOXVJQ2hsY25KdmNuTXBJSHRjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaVWx1Y0hWMGMxZHBkR2hGY25KdmNpaGxjbkp2Y25NcE8xeHVJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9lMXh1SUNBZ0lDQWdhWE5UZFdKdGFYUjBhVzVuT2lCbVlXeHpaVnh1SUNBZ0lIMHBPMXh1SUNBZ0lIUm9hWE11Y0hKdmNITXViMjVGY25KdmNpaGxjbkp2Y25NcE8xeHVJQ0FnSUhSb2FYTXVjSEp2Y0hNdWIyNVRkV0p0YVhSMFpXUW9LVHRjYmlBZ2ZTeGNibHh1SUNBdkx5QlVjbUYyWlhKelpTQjBhR1VnWTJocGJHUnlaVzRnWVc1a0lHTm9hV3hrY21WdUlHOW1JR05vYVd4a2NtVnVJSFJ2SUdacGJtUmNiaUFnTHk4Z1lXeHNJR2x1Y0hWMGN5QmllU0JqYUdWamEybHVaeUIwYUdVZ2JtRnRaU0J3Y205d0xpQk5ZWGxpWlNCa2J5QmhJR0psZEhSbGNseHVJQ0F2THlCamFHVmpheUJvWlhKbFhHNGdJSEpsWjJsemRHVnlTVzV3ZFhSek9pQm1kVzVqZEdsdmJpQW9ZMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQlNaV0ZqZEM1RGFHbHNaSEpsYmk1bWIzSkZZV05vS0dOb2FXeGtjbVZ1TENCbWRXNWpkR2x2YmlBb1kyaHBiR1FwSUh0Y2JseHVJQ0FnSUNBZ2FXWWdLR05vYVd4a0lDWW1JR05vYVd4a0xuQnliM0J6SUNZbUlHTm9hV3hrTG5CeWIzQnpMbTVoYldVcElIdGNiaUFnSUNBZ0lDQWdZMmhwYkdRdWNISnZjSE11WDJGMGRHRmphRlJ2Um05eWJTQTlJSFJvYVhNdVlYUjBZV05vVkc5R2IzSnRPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNXdjbTl3Y3k1ZlpHVjBZV05vUm5KdmJVWnZjbTBnUFNCMGFHbHpMbVJsZEdGamFFWnliMjFHYjNKdE8xeHVJQ0FnSUNBZ0lDQmphR2xzWkM1d2NtOXdjeTVmZG1Gc2FXUmhkR1VnUFNCMGFHbHpMblpoYkdsa1lYUmxPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNXdjbTl3Y3k1ZmFYTkdiM0p0UkdsellXSnNaV1FnUFNCMGFHbHpMbWx6Um05eWJVUnBjMkZpYkdWa08xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQnBaaUFvWTJocGJHUWdKaVlnWTJocGJHUXVjSEp2Y0hNZ0ppWWdZMmhwYkdRdWNISnZjSE11WTJocGJHUnlaVzRwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV5WldkcGMzUmxja2x1Y0hWMGN5aGphR2xzWkM1d2NtOXdjeTVqYUdsc1pISmxiaWs3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0I5TG1KcGJtUW9kR2hwY3lrcE8xeHVJQ0I5TEZ4dVhHNGdJR2x6Um05eWJVUnBjMkZpYkdWa09pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11Y0hKdmNITXVaR2x6WVdKc1pXUTdYRzRnSUgwc1hHNWNiaUFnWjJWMFEzVnljbVZ1ZEZaaGJIVmxjem9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVhMlY1Y3loMGFHbHpMbWx1Y0hWMGN5a3VjbVZrZFdObEtHWjFibU4wYVc5dUlDaGtZWFJoTENCdVlXMWxLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MElEMGdkR2hwY3k1cGJuQjFkSE5iYm1GdFpWMDdYRzRnSUNBZ0lDQmtZWFJoVzI1aGJXVmRJRDBnWTI5dGNHOXVaVzUwTG5OMFlYUmxMbDkyWVd4MVpUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCa1lYUmhPMXh1SUNBZ0lIMHVZbWx1WkNoMGFHbHpLU3dnZTMwcE8xeHVJQ0I5TEZ4dVhHNGdJSE5sZEVadmNtMVFjbWx6ZEdsdVpUb2dablZ1WTNScGIyNGdLR2x6VUhKcGMzUnBibVVwSUh0Y2JpQWdJQ0IyWVhJZ2FXNXdkWFJ6SUQwZ2RHaHBjeTVwYm5CMWRITTdYRzRnSUNBZ2RtRnlJR2x1Y0hWMFMyVjVjeUE5SUU5aWFtVmpkQzVyWlhsektHbHVjSFYwY3lrN1hHNWNiaUFnSUNBdkx5QkpkR1Z5WVhSbElIUm9jbTkxWjJnZ1pXRmphQ0JqYjIxd2IyNWxiblFnWVc1a0lITmxkQ0JwZENCaGN5QndjbWx6ZEdsdVpWeHVJQ0FnSUM4dklHOXlJRndpWkdseWRIbGNJaTVjYmlBZ0lDQnBibkIxZEV0bGVYTXVabTl5UldGamFDaG1kVzVqZEdsdmJpQW9ibUZ0WlN3Z2FXNWtaWGdwSUh0Y2JpQWdJQ0FnSUhaaGNpQmpiMjF3YjI1bGJuUWdQU0JwYm5CMWRITmJibUZ0WlYwN1hHNGdJQ0FnSUNCamIyMXdiMjVsYm5RdWMyVjBVM1JoZEdVb2UxeHVJQ0FnSUNBZ0lDQmZhWE5RY21semRHbHVaVG9nYVhOUWNtbHpkR2x1WlZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlM1aWFXNWtLSFJvYVhNcEtUdGNiaUFnZlN4Y2JseHVJQ0F2THlCVmMyVWdkR2hsSUdKcGJtUmxaQ0IyWVd4MVpYTWdZVzVrSUhSb1pTQmhZM1IxWVd3Z2FXNXdkWFFnZG1Gc2RXVWdkRzljYmlBZ0x5OGdkbUZzYVdSaGRHVWdkR2hsSUdsdWNIVjBJR0Z1WkNCelpYUWdhWFJ6SUhOMFlYUmxMaUJVYUdWdUlHTm9aV05ySUhSb1pWeHVJQ0F2THlCemRHRjBaU0J2WmlCMGFHVWdabTl5YlNCcGRITmxiR1pjYmlBZ2RtRnNhV1JoZEdVNklHWjFibU4wYVc5dUlDaGpiMjF3YjI1bGJuUXBJSHRjYmx4dUlDQWdJQzh2SUZSeWFXZG5aWElnYjI1RGFHRnVaMlZjYmlBZ0lDQnBaaUFvZEdocGN5NXpkR0YwWlM1allXNURhR0Z1WjJVcElIdGNiaUFnSUNBZ0lIUm9hWE11Y0hKdmNITXViMjVEYUdGdVoyVW9kR2hwY3k1blpYUkRkWEp5Wlc1MFZtRnNkV1Z6S0NrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2hZMjl0Y0c5dVpXNTBMbkJ5YjNCekxuSmxjWFZwY21Wa0lDWW1JQ0ZqYjIxd2IyNWxiblF1WDNaaGJHbGtZWFJwYjI1ektTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1VuVnVJSFJvY205MVoyZ2dkR2hsSUhaaGJHbGtZWFJwYjI1ekxDQnpjR3hwZENCMGFHVnRJSFZ3SUdGdVpDQmpZV3hzWEc0Z0lDQWdMeThnZEdobElIWmhiR2xrWVhSdmNpQkpSaUIwYUdWeVpTQnBjeUJoSUhaaGJIVmxJRzl5SUdsMElHbHpJSEpsY1hWcGNtVmtYRzRnSUNBZ2RtRnlJR2x6Vm1Gc2FXUWdQU0IwYUdsekxuSjFibFpoYkdsa1lYUnBiMjRvWTI5dGNHOXVaVzUwS1R0Y2JseHVJQ0FnSUdOdmJYQnZibVZ1ZEM1elpYUlRkR0YwWlNoN1hHNGdJQ0FnSUNCZmFYTldZV3hwWkRvZ2FYTldZV3hwWkN4Y2JpQWdJQ0FnSUY5elpYSjJaWEpGY25KdmNqb2diblZzYkZ4dUlDQWdJSDBzSUhSb2FYTXVkbUZzYVdSaGRHVkdiM0p0S1R0Y2JseHVJQ0I5TEZ4dVhHNGdJSEoxYmxaaGJHbGtZWFJwYjI0NklHWjFibU4wYVc5dUlDaGpiMjF3YjI1bGJuUXBJSHRjYmlBZ0lDQjJZWElnYVhOV1lXeHBaQ0E5SUhSeWRXVTdYRzRnSUNBZ2FXWWdLR052YlhCdmJtVnVkQzVmZG1Gc2FXUmhkR2x2Ym5NdWJHVnVaM1JvSUNZbUlDaGpiMjF3YjI1bGJuUXVjSEp2Y0hNdWNtVnhkV2x5WldRZ2ZId2dZMjl0Y0c5dVpXNTBMbk4wWVhSbExsOTJZV3gxWlNBaFBUMGdKeWNwS1NCN1hHNGdJQ0FnSUNCamIyMXdiMjVsYm5RdVgzWmhiR2xrWVhScGIyNXpMbk53YkdsMEtDY3NKeWt1Wm05eVJXRmphQ2htZFc1amRHbHZiaUFvZG1Gc2FXUmhkR2x2YmlrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnWVhKbmN5QTlJSFpoYkdsa1lYUnBiMjR1YzNCc2FYUW9Kem9uS1R0Y2JpQWdJQ0FnSUNBZ2RtRnlJSFpoYkdsa1lYUmxUV1YwYUc5a0lEMGdZWEpuY3k1emFHbG1kQ2dwTzF4dUlDQWdJQ0FnSUNCaGNtZHpJRDBnWVhKbmN5NXRZWEFvWm5WdVkzUnBiMjRnS0dGeVp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUhSeWVTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnU2xOUFRpNXdZWEp6WlNoaGNtY3BPMXh1SUNBZ0lDQWdJQ0FnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJoY21jN0lDOHZJRWwwSUdseklHRWdjM1J5YVc1bklHbG1JR2wwSUdOaGJpQnViM1FnY0dGeWMyVWdhWFJjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdJQ0JoY21keklEMGdXMk52YlhCdmJtVnVkQzV6ZEdGMFpTNWZkbUZzZFdWZExtTnZibU5oZENoaGNtZHpLVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRjJZV3hwWkdGMGFXOXVVblZzWlhOYmRtRnNhV1JoZEdWTlpYUm9iMlJkS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEdiM0p0YzNrZ1pHOWxjeUJ1YjNRZ2FHRjJaU0IwYUdVZ2RtRnNhV1JoZEdsdmJpQnlkV3hsT2lBbklDc2dkbUZzYVdSaGRHVk5aWFJvYjJRcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNnaGRtRnNhV1JoZEdsdmJsSjFiR1Z6VzNaaGJHbGtZWFJsVFdWMGFHOWtYUzVoY0hCc2VTaDBhR2x6TG1kbGRFTjFjbkpsYm5SV1lXeDFaWE1vS1N3Z1lYSm5jeWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBjMVpoYkdsa0lEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHVZbWx1WkNoMGFHbHpLU2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCcGMxWmhiR2xrTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRlpoYkdsa1lYUmxJSFJvWlNCbWIzSnRJR0o1SUdkdmFXNW5JSFJvY205MVoyZ2dZV3hzSUdOb2FXeGtJR2x1Y0hWMElHTnZiWEJ2Ym1WdWRITmNiaUFnTHk4Z1lXNWtJR05vWldOcklIUm9aV2x5SUhOMFlYUmxYRzRnSUhaaGJHbGtZWFJsUm05eWJUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFpoY2lCaGJHeEpjMVpoYkdsa0lEMGdkSEoxWlR0Y2JpQWdJQ0IyWVhJZ2FXNXdkWFJ6SUQwZ2RHaHBjeTVwYm5CMWRITTdYRzRnSUNBZ2RtRnlJR2x1Y0hWMFMyVjVjeUE5SUU5aWFtVmpkQzVyWlhsektHbHVjSFYwY3lrN1hHNWNiaUFnSUNBdkx5QlhaU0J1WldWa0lHRWdZMkZzYkdKaFkyc2dZWE1nZDJVZ1lYSmxJSFpoYkdsa1lYUnBibWNnWVd4c0lHbHVjSFYwY3lCaFoyRnBiaTRnVkdocGN5QjNhV3hzWEc0Z0lDQWdMeThnY25WdUlIZG9aVzRnZEdobElHeGhjM1FnWTI5dGNHOXVaVzUwSUdoaGN5QnpaWFFnYVhSeklITjBZWFJsWEc0Z0lDQWdkbUZ5SUc5dVZtRnNhV1JoZEdsdmJrTnZiWEJzWlhSbElEMGdablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnYVc1d2RYUkxaWGx6TG1admNrVmhZMmdvWm5WdVkzUnBiMjRnS0c1aGJXVXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnBibkIxZEhOYmJtRnRaVjB1YzNSaGRHVXVYMmx6Vm1Gc2FXUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCaGJHeEpjMVpoYkdsa0lEMGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHVZbWx1WkNoMGFHbHpLU2s3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9lMXh1SUNBZ0lDQWdJQ0JwYzFaaGJHbGtPaUJoYkd4SmMxWmhiR2xrWEc0Z0lDQWdJQ0I5S1R0Y2JseHVJQ0FnSUNBZ2FXWWdLR0ZzYkVselZtRnNhV1FwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV3Y205d2N5NXZibFpoYkdsa0tDazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG5CeWIzQnpMbTl1U1c1MllXeHBaQ2dwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBdkx5QlVaV3hzSUhSb1pTQm1iM0p0SUhSb1lYUWdhWFFnWTJGdUlITjBZWEowSUhSdklIUnlhV2RuWlhJZ1kyaGhibWRsSUdWMlpXNTBjMXh1SUNBZ0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN1hHNGdJQ0FnSUNBZ0lHTmhia05vWVc1blpUb2dkSEoxWlZ4dUlDQWdJQ0FnZlNrN1hHNWNiaUFnSUNCOUxtSnBibVFvZEdocGN5azdYRzVjYmlBZ0lDQXZMeUJTZFc0Z2RtRnNhV1JoZEdsdmJpQmhaMkZwYmlCcGJpQmpZWE5sSUdGbVptVmpkR1ZrSUdKNUlHOTBhR1Z5SUdsdWNIVjBjeTRnVkdobFhHNGdJQ0FnTHk4Z2JHRnpkQ0JqYjIxd2IyNWxiblFnZG1Gc2FXUmhkR1ZrSUhkcGJHd2djblZ1SUhSb1pTQnZibFpoYkdsa1lYUnBiMjVEYjIxd2JHVjBaU0JqWVd4c1ltRmphMXh1SUNBZ0lHbHVjSFYwUzJWNWN5NW1iM0pGWVdOb0tHWjFibU4wYVc5dUlDaHVZVzFsTENCcGJtUmxlQ2tnZTF4dUlDQWdJQ0FnZG1GeUlHTnZiWEJ2Ym1WdWRDQTlJR2x1Y0hWMGMxdHVZVzFsWFR0Y2JpQWdJQ0FnSUhaaGNpQnBjMVpoYkdsa0lEMGdkR2hwY3k1eWRXNVdZV3hwWkdGMGFXOXVLR052YlhCdmJtVnVkQ2s3WEc0Z0lDQWdJQ0JqYjIxd2IyNWxiblF1YzJWMFUzUmhkR1VvZTF4dUlDQWdJQ0FnSUNCZmFYTldZV3hwWkRvZ2FYTldZV3hwWkN4Y2JpQWdJQ0FnSUNBZ1gzTmxjblpsY2tWeWNtOXlPaUJ1ZFd4c1hHNGdJQ0FnSUNCOUxDQnBibVJsZUNBOVBUMGdhVzV3ZFhSTFpYbHpMbXhsYm1kMGFDQXRJREVnUHlCdmJsWmhiR2xrWVhScGIyNURiMjF3YkdWMFpTQTZJRzUxYkd3cE8xeHVJQ0FnSUgwdVltbHVaQ2gwYUdsektTazdYRzVjYmlBZ0lDQXZMeUJKWmlCMGFHVnlaU0JoY21VZ2JtOGdhVzV3ZFhSekxDQnpaWFFnYzNSaGRHVWdkMmhsY21VZ1ptOXliU0JwY3lCeVpXRmtlU0IwYnlCMGNtbG5aMlZ5WEc0Z0lDQWdMeThnWTJoaGJtZGxJR1YyWlc1MExpQk9aWGNnYVc1d2RYUnpJRzFwWjJoMElHSmxJR0ZrWkdWa0lHeGhkR1Z5WEc0Z0lDQWdhV1lnS0NGcGJuQjFkRXRsZVhNdWJHVnVaM1JvSUNZbUlIUm9hWE11YVhOTmIzVnVkR1ZrS0NrcElIdGNiaUFnSUNBZ0lIUm9hWE11YzJWMFUzUmhkR1VvZTF4dUlDQWdJQ0FnSUNCallXNURhR0Z1WjJVNklIUnlkV1ZjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdkx5Qk5aWFJvYjJRZ2NIVjBJRzl1SUdWaFkyZ2dhVzV3ZFhRZ1kyOXRjRzl1Wlc1MElIUnZJSEpsWjJsemRHVnlYRzRnSUM4dklHbDBjMlZzWmlCMGJ5QjBhR1VnWm05eWJWeHVJQ0JoZEhSaFkyaFViMFp2Y20wNklHWjFibU4wYVc5dUlDaGpiMjF3YjI1bGJuUXBJSHRjYmlBZ0lDQjBhR2x6TG1sdWNIVjBjMXRqYjIxd2IyNWxiblF1Y0hKdmNITXVibUZ0WlYwZ1BTQmpiMjF3YjI1bGJuUTdYRzRnSUNBZ2RHaHBjeTV0YjJSbGJGdGpiMjF3YjI1bGJuUXVjSEp2Y0hNdWJtRnRaVjBnUFNCamIyMXdiMjVsYm5RdWMzUmhkR1V1WDNaaGJIVmxPMXh1SUNBZ0lIUm9hWE11ZG1Gc2FXUmhkR1VvWTI5dGNHOXVaVzUwS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJOWlhSb2IyUWdjSFYwSUc5dUlHVmhZMmdnYVc1d2RYUWdZMjl0Y0c5dVpXNTBJSFJ2SUhWdWNtVm5hWE4wWlhKY2JpQWdMeThnYVhSelpXeG1JR1p5YjIwZ2RHaGxJR1p2Y20xY2JpQWdaR1YwWVdOb1JuSnZiVVp2Y20wNklHWjFibU4wYVc5dUlDaGpiMjF3YjI1bGJuUXBJSHRjYmlBZ0lDQmtaV3hsZEdVZ2RHaHBjeTVwYm5CMWRITmJZMjl0Y0c5dVpXNTBMbkJ5YjNCekxtNWhiV1ZkTzF4dUlDQWdJR1JsYkdWMFpTQjBhR2x6TG0xdlpHVnNXMk52YlhCdmJtVnVkQzV3Y205d2N5NXVZVzFsWFR0Y2JpQWdmU3hjYmlBZ2NtVnVaR1Z5T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzVjYmlBZ0lDQnlaWFIxY200Z1VtVmhZM1F1UkU5TkxtWnZjbTBvZTF4dUlDQWdJQ0FnSUNCdmJsTjFZbTFwZERvZ2RHaHBjeTV6ZFdKdGFYUXNYRzRnSUNBZ0lDQWdJR05zWVhOelRtRnRaVG9nZEdocGN5NXdjbTl3Y3k1amJHRnpjMDVoYldWY2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCMGFHbHpMbkJ5YjNCekxtTm9hV3hrY21WdVhHNGdJQ0FnS1R0Y2JseHVJQ0I5WEc1OUtUdGNibHh1YVdZZ0tDRm5iRzlpWVd3dVpYaHdiM0owY3lBbUppQWhaMnh2WW1Gc0xtMXZaSFZzWlNBbUppQW9JV2RzYjJKaGJDNWtaV1pwYm1VZ2ZId2dJV2RzYjJKaGJDNWtaV1pwYm1VdVlXMWtLU2tnZTF4dUlDQm5iRzlpWVd3dVJtOXliWE41SUQwZ1JtOXliWE41TzF4dWZWeHVYRzV0YjJSMWJHVXVaWGh3YjNKMGN5QTlJRVp2Y20xemVUdGNiaUpkZlE9PSIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX3ZhbHVlOiB0aGlzLnByb3BzLnZhbHVlID8gdGhpcy5wcm9wcy52YWx1ZSA6ICcnLFxuICAgICAgX2lzVmFsaWQ6IHRydWUsXG4gICAgICBfaXNQcmlzdGluZTogdHJ1ZVxuICAgIH07XG4gIH0sXG4gIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkge1xuXG4gICAgdmFyIGNvbmZpZ3VyZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbnModGhpcy5wcm9wcy52YWxpZGF0aW9ucywgdGhpcy5wcm9wcy5yZXF1aXJlZCk7XG4gICAgICB0aGlzLnByb3BzLl9hdHRhY2hUb0Zvcm0odGhpcyk7XG4gICAgfS5iaW5kKHRoaXMpO1xuXG4gICAgaWYgKCF0aGlzLnByb3BzLm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRm9ybSBJbnB1dCByZXF1aXJlcyBhIG5hbWUgcHJvcGVydHkgd2hlbiB1c2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnByb3BzLl9hdHRhY2hUb0Zvcm0pIHtcbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW91bnRlZCgpKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5fYXR0YWNoVG9Gb3JtKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3JtIE1peGluIHJlcXVpcmVzIGNvbXBvbmVudCB0byBiZSBuZXN0ZWQgaW4gYSBGb3JtJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uZmlndXJlKCk7XG4gICAgICB9LmJpbmQodGhpcyksIDApO1xuICAgIH1cbiAgICBjb25maWd1cmUoKTtcblxuICB9LFxuXG4gIC8vIFdlIGhhdmUgdG8gbWFrZSB0aGUgdmFsaWRhdGUgbWV0aG9kIGlzIGtlcHQgd2hlbiBuZXcgcHJvcHMgYXJlIGFkZGVkXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uIChuZXh0UHJvcHMpIHtcbiAgICBuZXh0UHJvcHMuX2F0dGFjaFRvRm9ybSA9IHRoaXMucHJvcHMuX2F0dGFjaFRvRm9ybTtcbiAgICBuZXh0UHJvcHMuX2RldGFjaEZyb21Gb3JtID0gdGhpcy5wcm9wcy5fZGV0YWNoRnJvbUZvcm07XG4gICAgbmV4dFByb3BzLl92YWxpZGF0ZSA9IHRoaXMucHJvcHMuX3ZhbGlkYXRlO1xuICAgIHRoaXMuc2V0VmFsaWRhdGlvbnMobmV4dFByb3BzLnZhbGlkYXRpb25zLCBuZXh0UHJvcHMucmVxdWlyZWQpO1xuICB9LFxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZTogZnVuY3Rpb24gKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG5cbiAgICB2YXIgaXNWYWx1ZUNoYW5nZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMucHJvcHMudmFsdWUgIT09IHByZXZQcm9wcy52YWx1ZSAmJiAoXG4gICAgICAgICAgdGhpcy5zdGF0ZS5fdmFsdWUgPT09IHByZXZQcm9wcy52YWx1ZSB8fFxuXG4gICAgICAgICAgLy8gU2luY2UgdW5kZWZpbmVkIGlzIGNvbnZlcnRlZCB0byBlbXB0eSBzdHJpbmcgd2UgaGF2ZSB0b1xuICAgICAgICAgIC8vIGNoZWNrIHRoYXQgc3BlY2lmaWNhbGx5XG4gICAgICAgICAgKHRoaXMuc3RhdGUuX3ZhbHVlID09PSAnJyAmJiBwcmV2UHJvcHMudmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgIH0uYmluZCh0aGlzKTtcblxuXG4gICAgLy8gSWYgdmFsaWRhdGlvbnMgaGFzIGNoYW5nZWQgb3Igc29tZXRoaW5nIG91dHNpZGUgY2hhbmdlcyBcbiAgICAvLyB0aGUgdmFsdWUsIHNldCB0aGUgdmFsdWUgYWdhaW4gcnVubmluZyBhIHZhbGlkYXRpb25cblxuICAgIGlmIChwcmV2UHJvcHMudmFsaWRhdGlvbnMgIT09IHRoaXMucHJvcHMudmFsaWRhdGlvbnMgfHwgaXNWYWx1ZUNoYW5nZWQoKSkge1xuICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnByb3BzLnZhbHVlIHx8ICcnKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gRGV0YWNoIGl0IHdoZW4gY29tcG9uZW50IHVubW91bnRzXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5wcm9wcy5fZGV0YWNoRnJvbUZvcm0odGhpcyk7XG4gIH0sXG5cbiAgc2V0VmFsaWRhdGlvbnM6IGZ1bmN0aW9uICh2YWxpZGF0aW9ucywgcmVxdWlyZWQpIHtcblxuICAgIC8vIEFkZCB2YWxpZGF0aW9ucyB0byB0aGUgc3RvcmUgaXRzZWxmIGFzIHRoZSBwcm9wcyBvYmplY3QgY2FuIG5vdCBiZSBtb2RpZmllZFxuICAgIHRoaXMuX3ZhbGlkYXRpb25zID0gdmFsaWRhdGlvbnMgfHwgJyc7XG5cbiAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb25zID0gdmFsaWRhdGlvbnMgPyB2YWxpZGF0aW9ucyArICcsJyA6ICcnO1xuICAgICAgdGhpcy5fdmFsaWRhdGlvbnMgKz0gJ2lzVmFsdWUnO1xuICAgIH1cblxuICB9LFxuXG4gIC8vIFdlIHZhbGlkYXRlIGFmdGVyIHRoZSB2YWx1ZSBoYXMgYmVlbiBzZXRcbiAgc2V0VmFsdWU6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgX3ZhbHVlOiB2YWx1ZSxcbiAgICAgIF9pc1ByaXN0aW5lOiBmYWxzZVxuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMucHJvcHMuX3ZhbGlkYXRlKHRoaXMpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0sXG4gIHJlc2V0VmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF92YWx1ZTogJycsXG4gICAgICBfaXNQcmlzdGluZTogdHJ1ZVxuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMucHJvcHMuX3ZhbGlkYXRlKHRoaXMpO1xuICAgIH0pO1xuICB9LFxuICBnZXRWYWx1ZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLl92YWx1ZTtcbiAgfSxcbiAgaGFzVmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5fdmFsdWUgIT09ICcnO1xuICB9LFxuICBnZXRFcnJvck1lc3NhZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgfHwgdGhpcy5zaG93UmVxdWlyZWQoKSA/IG51bGwgOiB0aGlzLnN0YXRlLl9zZXJ2ZXJFcnJvciB8fCB0aGlzLnByb3BzLnZhbGlkYXRpb25FcnJvcjtcbiAgfSxcbiAgaXNGb3JtRGlzYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5faXNGb3JtRGlzYWJsZWQoKTtcbiAgfSxcbiAgaXNWYWxpZDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLl9pc1ZhbGlkO1xuICB9LFxuICBpc1ByaXN0aW5lOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuX2lzUHJpc3RpbmU7XG4gIH0sXG4gIGlzUmVxdWlyZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gISF0aGlzLnByb3BzLnJlcXVpcmVkO1xuICB9LFxuICBzaG93UmVxdWlyZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1JlcXVpcmVkKCkgJiYgdGhpcy5zdGF0ZS5fdmFsdWUgPT09ICcnO1xuICB9LFxuICBzaG93RXJyb3I6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMuc2hvd1JlcXVpcmVkKCkgJiYgIXRoaXMuc3RhdGUuX2lzVmFsaWQ7XG4gIH1cbn07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaUwxVnpaWEp6TDJOb2NtbHpkR2xoYm1Gc1ptOXVhUzlFYjJOMWJXVnVkSE12WkdWMkwyWnZjbTF6ZVMxeVpXRmpkQzl6Y21NdlRXbDRhVzR1YW5NaUxDSnpiM1Z5WTJWeklqcGJJaTlWYzJWeWN5OWphSEpwYzNScFlXNWhiR1p2Ym1rdlJHOWpkVzFsYm5SekwyUmxkaTltYjNKdGMza3RjbVZoWTNRdmMzSmpMMDFwZUdsdUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEUxQlFVMHNRMEZCUXl4UFFVRlBMRWRCUVVjN1JVRkRaaXhsUVVGbExFVkJRVVVzV1VGQldUdEpRVU16UWl4UFFVRlBPMDFCUTB3c1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEVWQlFVVTdUVUZEYUVRc1VVRkJVU3hGUVVGRkxFbEJRVWs3VFVGRFpDeFhRVUZYTEVWQlFVVXNTVUZCU1R0TFFVTnNRaXhEUVVGRE8wZEJRMGc3UVVGRFNDeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxGbEJRVms3TzBsQlJUbENMRWxCUVVrc1UwRkJVeXhIUVVGSExGbEJRVms3VFVGRE1VSXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzAxQlEycEZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTNKRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN08wbEJSV0lzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRk8wMUJRM0JDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc0swTkJRU3RETEVOQlFVTXNRMEZCUXp0QlFVTjJSU3hMUVVGTE96dEpRVVZFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExHRkJRV0VzUlVGQlJUdE5RVU0zUWl4UFFVRlBMRlZCUVZVc1EwRkJReXhaUVVGWk8xRkJRelZDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFVkJRVVVzVDBGQlR6dFJRVU01UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eGhRVUZoTEVWQlFVVTdWVUZETjBJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHpSRUZCYzBRc1EwRkJReXhEUVVGRE8xTkJRM3BGTzFGQlEwUXNVMEZCVXl4RlFVRkZMRU5CUVVNN1QwRkRZaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOc1FqdEJRVU5NTEVsQlFVa3NVMEZCVXl4RlFVRkZMRU5CUVVNN08wRkJSV2hDTEVkQlFVYzdRVUZEU0RzN1JVRkZSU3g1UWtGQmVVSXNSVUZCUlN4VlFVRlZMRk5CUVZNc1JVRkJSVHRKUVVNNVF5eFRRVUZUTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zWVVGQllTeERRVUZETzBsQlEyNUVMRk5CUVZNc1EwRkJReXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4bFFVRmxMRU5CUVVNN1NVRkRka1FzVTBGQlV5eERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF6dEpRVU16UXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExGTkJRVk1zUTBGQlF5eFhRVUZYTEVWQlFVVXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRMjVGTEVkQlFVYzdPMEZCUlVnc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4VlFVRlZMRk5CUVZNc1JVRkJSU3hUUVVGVExFVkJRVVU3TzBGQlJYUkVMRWxCUVVrc1NVRkJTU3hqUVVGakxFZEJRVWNzV1VGQldUczdUVUZGTDBJN1VVRkRSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NTMEZCU3l4VFFVRlRMRU5CUVVNc1MwRkJTenRCUVVNMVF5eFZRVUZWTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hMUVVGTExGTkJRVk1zUTBGQlF5eExRVUZMTzBGQlF5OURPMEZCUTBFN08xZEJSVmNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRXRCUVVzc1JVRkJSU3hKUVVGSkxGTkJRVk1zUTBGQlF5eExRVUZMTEV0QlFVc3NVMEZCVXl4RFFVRkRPMU5CUXpWRU8wRkJRMVFzVVVGQlVUczdRVUZGVWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEycENPMEZCUTBFN1FVRkRRVHRCUVVOQk96dEpRVVZKTEVsQlFVa3NVMEZCVXl4RFFVRkRMRmRCUVZjc1MwRkJTeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZkQlFWY3NTVUZCU1N4alFVRmpMRVZCUVVVc1JVRkJSVHROUVVONFJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRPMHRCUTNaRE8wRkJRMHdzUjBGQlJ6dEJRVU5JT3p0RlFVVkZMRzlDUVVGdlFpeEZRVUZGTEZsQlFWazdTVUZEYUVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRja01zUjBGQlJ6czdRVUZGU0N4RlFVRkZMR05CUVdNc1JVRkJSU3hWUVVGVkxGZEJRVmNzUlVGQlJTeFJRVUZSTEVWQlFVVTdRVUZEYmtRN08wRkJSVUVzU1VGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRmRCUVZjc1NVRkJTU3hGUVVGRkxFTkJRVU03TzBsQlJYUkRMRWxCUVVrc1VVRkJVU3hGUVVGRk8wMUJRMW9zU1VGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4WFFVRlhMRWRCUVVjc1YwRkJWeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdUVUZEZWtRc1NVRkJTU3hEUVVGRExGbEJRVmtzU1VGQlNTeFRRVUZUTEVOQlFVTTdRVUZEY2tNc1MwRkJTenM3UVVGRlRDeEhRVUZITzBGQlEwZzdPMFZCUlVVc1VVRkJVU3hGUVVGRkxGVkJRVlVzUzBGQlN5eEZRVUZGTzBsQlEzcENMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VFVGRFdpeE5RVUZOTEVWQlFVVXNTMEZCU3p0TlFVTmlMRmRCUVZjc1JVRkJSU3hMUVVGTE8wdEJRMjVDTEVWQlFVVXNXVUZCV1R0TlFVTmlMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUXpWQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1IwRkRaanRGUVVORUxGVkJRVlVzUlVGQlJTeFpRVUZaTzBsQlEzUkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VFVGRFdpeE5RVUZOTEVWQlFVVXNSVUZCUlR0TlFVTldMRmRCUVZjc1JVRkJSU3hKUVVGSk8wdEJRMnhDTEVWQlFVVXNXVUZCV1R0TlFVTmlMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUXpWQ0xFTkJRVU1zUTBGQlF6dEhRVU5LTzBWQlEwUXNVVUZCVVN4RlFVRkZMRmxCUVZrN1NVRkRjRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRIUVVNeFFqdEZRVU5FTEZGQlFWRXNSVUZCUlN4WlFVRlpPMGxCUTNCQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRXRCUVVzc1JVRkJSU3hEUVVGRE8wZEJRMnBETzBWQlEwUXNaVUZCWlN4RlFVRkZMRmxCUVZrN1NVRkRNMElzVDBGQlR5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWxCUVVrc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeEhRVUZITEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGbEJRVmtzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMR1ZCUVdVc1EwRkJRenRIUVVNM1J6dEZRVU5FTEdOQlFXTXNSVUZCUlN4WlFVRlpPMGxCUXpGQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4bFFVRmxMRVZCUVVVc1EwRkJRenRIUVVOeVF6dEZRVU5FTEU5QlFVOHNSVUZCUlN4WlFVRlpPMGxCUTI1Q0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNN1IwRkROVUk3UlVGRFJDeFZRVUZWTEVWQlFVVXNXVUZCV1R0SlFVTjBRaXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRPMGRCUXk5Q08wVkJRMFFzVlVGQlZTeEZRVUZGTEZsQlFWazdTVUZEZEVJc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNN1IwRkRPVUk3UlVGRFJDeFpRVUZaTEVWQlFVVXNXVUZCV1R0SlFVTjRRaXhQUVVGUExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUzBGQlN5eEZRVUZGTEVOQlFVTTdSMEZEZEVRN1JVRkRSQ3hUUVVGVExFVkJRVVVzV1VGQldUdEpRVU55UWl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU03UjBGRGNrUTdRMEZEUml4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYlc5a2RXeGxMbVY0Y0c5eWRITWdQU0I3WEc0Z0lHZGxkRWx1YVhScFlXeFRkR0YwWlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNCZmRtRnNkV1U2SUhSb2FYTXVjSEp2Y0hNdWRtRnNkV1VnUHlCMGFHbHpMbkJ5YjNCekxuWmhiSFZsSURvZ0p5Y3NYRzRnSUNBZ0lDQmZhWE5XWVd4cFpEb2dkSEoxWlN4Y2JpQWdJQ0FnSUY5cGMxQnlhWE4wYVc1bE9pQjBjblZsWEc0Z0lDQWdmVHRjYmlBZ2ZTeGNiaUFnWTI5dGNHOXVaVzUwVjJsc2JFMXZkVzUwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzVjYmlBZ0lDQjJZWElnWTI5dVptbG5kWEpsSUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1elpYUldZV3hwWkdGMGFXOXVjeWgwYUdsekxuQnliM0J6TG5aaGJHbGtZWFJwYjI1ekxDQjBhR2x6TG5CeWIzQnpMbkpsY1hWcGNtVmtLVHRjYmlBZ0lDQWdJSFJvYVhNdWNISnZjSE11WDJGMGRHRmphRlJ2Um05eWJTaDBhR2x6S1R0Y2JpQWdJQ0I5TG1KcGJtUW9kR2hwY3lrN1hHNWNiaUFnSUNCcFppQW9JWFJvYVhNdWNISnZjSE11Ym1GdFpTa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEdiM0p0SUVsdWNIVjBJSEpsY1hWcGNtVnpJR0VnYm1GdFpTQndjbTl3WlhKMGVTQjNhR1Z1SUhWelpXUW5LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvSVhSb2FYTXVjSEp2Y0hNdVgyRjBkR0ZqYUZSdlJtOXliU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSE5sZEZScGJXVnZkWFFvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVhSb2FYTXVhWE5OYjNWdWRHVmtLQ2twSUhKbGRIVnlianRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRjBhR2x6TG5CeWIzQnpMbDloZEhSaFkyaFViMFp2Y20wcElIdGNiaUFnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMFp2Y20wZ1RXbDRhVzRnY21WeGRXbHlaWE1nWTI5dGNHOXVaVzUwSUhSdklHSmxJRzVsYzNSbFpDQnBiaUJoSUVadmNtMG5LVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCamIyNW1hV2QxY21Vb0tUdGNiaUFnSUNBZ0lIMHVZbWx1WkNoMGFHbHpLU3dnTUNrN1hHNGdJQ0FnZlZ4dUlDQWdJR052Ym1acFozVnlaU2dwTzF4dVhHNGdJSDBzWEc1Y2JpQWdMeThnVjJVZ2FHRjJaU0IwYnlCdFlXdGxJSFJvWlNCMllXeHBaR0YwWlNCdFpYUm9iMlFnYVhNZ2EyVndkQ0IzYUdWdUlHNWxkeUJ3Y205d2N5QmhjbVVnWVdSa1pXUmNiaUFnWTI5dGNHOXVaVzUwVjJsc2JGSmxZMlZwZG1WUWNtOXdjem9nWm5WdVkzUnBiMjRnS0c1bGVIUlFjbTl3Y3lrZ2UxeHVJQ0FnSUc1bGVIUlFjbTl3Y3k1ZllYUjBZV05vVkc5R2IzSnRJRDBnZEdocGN5NXdjbTl3Y3k1ZllYUjBZV05vVkc5R2IzSnRPMXh1SUNBZ0lHNWxlSFJRY205d2N5NWZaR1YwWVdOb1JuSnZiVVp2Y20wZ1BTQjBhR2x6TG5CeWIzQnpMbDlrWlhSaFkyaEdjbTl0Um05eWJUdGNiaUFnSUNCdVpYaDBVSEp2Y0hNdVgzWmhiR2xrWVhSbElEMGdkR2hwY3k1d2NtOXdjeTVmZG1Gc2FXUmhkR1U3WEc0Z0lDQWdkR2hwY3k1elpYUldZV3hwWkdGMGFXOXVjeWh1WlhoMFVISnZjSE11ZG1Gc2FXUmhkR2x2Ym5Nc0lHNWxlSFJRY205d2N5NXlaWEYxYVhKbFpDazdYRzRnSUgwc1hHNWNiaUFnWTI5dGNHOXVaVzUwUkdsa1ZYQmtZWFJsT2lCbWRXNWpkR2x2YmlBb2NISmxkbEJ5YjNCekxDQndjbVYyVTNSaGRHVXBJSHRjYmx4dUlDQWdJSFpoY2lCcGMxWmhiSFZsUTJoaGJtZGxaQ0E5SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lGeHVJQ0FnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUNBZ2RHaHBjeTV3Y205d2N5NTJZV3gxWlNBaFBUMGdjSEpsZGxCeWIzQnpMblpoYkhWbElDWW1JQ2hjYmlBZ0lDQWdJQ0FnSUNCMGFHbHpMbk4wWVhSbExsOTJZV3gxWlNBOVBUMGdjSEpsZGxCeWIzQnpMblpoYkhWbElIeDhYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QlRhVzVqWlNCMWJtUmxabWx1WldRZ2FYTWdZMjl1ZG1WeWRHVmtJSFJ2SUdWdGNIUjVJSE4wY21sdVp5QjNaU0JvWVhabElIUnZYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1kyaGxZMnNnZEdoaGRDQnpjR1ZqYVdacFkyRnNiSGxjYmlBZ0lDQWdJQ0FnSUNBb2RHaHBjeTV6ZEdGMFpTNWZkbUZzZFdVZ1BUMDlJQ2NuSUNZbUlIQnlaWFpRY205d2N5NTJZV3gxWlNBOVBUMGdkVzVrWldacGJtVmtLVnh1SUNBZ0lDQWdJQ0FwWEc0Z0lDQWdJQ0FwTzF4dVhHNGdJQ0FnZlM1aWFXNWtLSFJvYVhNcE8xeHVYRzVjYmlBZ0lDQXZMeUJKWmlCMllXeHBaR0YwYVc5dWN5Qm9ZWE1nWTJoaGJtZGxaQ0J2Y2lCemIyMWxkR2hwYm1jZ2IzVjBjMmxrWlNCamFHRnVaMlZ6SUZ4dUlDQWdJQzh2SUhSb1pTQjJZV3gxWlN3Z2MyVjBJSFJvWlNCMllXeDFaU0JoWjJGcGJpQnlkVzV1YVc1bklHRWdkbUZzYVdSaGRHbHZibHh1WEc0Z0lDQWdhV1lnS0hCeVpYWlFjbTl3Y3k1MllXeHBaR0YwYVc5dWN5QWhQVDBnZEdocGN5NXdjbTl3Y3k1MllXeHBaR0YwYVc5dWN5QjhmQ0JwYzFaaGJIVmxRMmhoYm1kbFpDZ3BLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuTmxkRlpoYkhWbEtIUm9hWE11Y0hKdmNITXVkbUZzZFdVZ2ZId2dKeWNwTzF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdkx5QkVaWFJoWTJnZ2FYUWdkMmhsYmlCamIyMXdiMjVsYm5RZ2RXNXRiM1Z1ZEhOY2JpQWdZMjl0Y0c5dVpXNTBWMmxzYkZWdWJXOTFiblE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNCMGFHbHpMbkJ5YjNCekxsOWtaWFJoWTJoR2NtOXRSbTl5YlNoMGFHbHpLVHRjYmlBZ2ZTeGNibHh1SUNCelpYUldZV3hwWkdGMGFXOXVjem9nWm5WdVkzUnBiMjRnS0haaGJHbGtZWFJwYjI1ekxDQnlaWEYxYVhKbFpDa2dlMXh1WEc0Z0lDQWdMeThnUVdSa0lIWmhiR2xrWVhScGIyNXpJSFJ2SUhSb1pTQnpkRzl5WlNCcGRITmxiR1lnWVhNZ2RHaGxJSEJ5YjNCeklHOWlhbVZqZENCallXNGdibTkwSUdKbElHMXZaR2xtYVdWa1hHNGdJQ0FnZEdocGN5NWZkbUZzYVdSaGRHbHZibk1nUFNCMllXeHBaR0YwYVc5dWN5QjhmQ0FuSnp0Y2JseHVJQ0FnSUdsbUlDaHlaWEYxYVhKbFpDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmRtRnNhV1JoZEdsdmJuTWdQU0IyWVd4cFpHRjBhVzl1Y3lBL0lIWmhiR2xrWVhScGIyNXpJQ3NnSnl3bklEb2dKeWM3WEc0Z0lDQWdJQ0IwYUdsekxsOTJZV3hwWkdGMGFXOXVjeUFyUFNBbmFYTldZV3gxWlNjN1hHNGdJQ0FnZlZ4dVhHNGdJSDBzWEc1Y2JpQWdMeThnVjJVZ2RtRnNhV1JoZEdVZ1lXWjBaWElnZEdobElIWmhiSFZsSUdoaGN5QmlaV1Z1SUhObGRGeHVJQ0J6WlhSV1lXeDFaVG9nWm5WdVkzUnBiMjRnS0haaGJIVmxLU0I3WEc0Z0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN1hHNGdJQ0FnSUNCZmRtRnNkV1U2SUhaaGJIVmxMRnh1SUNBZ0lDQWdYMmx6VUhKcGMzUnBibVU2SUdaaGJITmxYRzRnSUNBZ2ZTd2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXdjbTl3Y3k1ZmRtRnNhV1JoZEdVb2RHaHBjeWs3WEc0Z0lDQWdmUzVpYVc1a0tIUm9hWE1wS1R0Y2JpQWdmU3hjYmlBZ2NtVnpaWFJXWVd4MVpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSFJvYVhNdWMyVjBVM1JoZEdVb2UxeHVJQ0FnSUNBZ1gzWmhiSFZsT2lBbkp5eGNiaUFnSUNBZ0lGOXBjMUJ5YVhOMGFXNWxPaUIwY25WbFhHNGdJQ0FnZlN3Z1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1d2NtOXdjeTVmZG1Gc2FXUmhkR1VvZEdocGN5azdYRzRnSUNBZ2ZTazdYRzRnSUgwc1hHNGdJR2RsZEZaaGJIVmxPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWMzUmhkR1V1WDNaaGJIVmxPMXh1SUNCOUxGeHVJQ0JvWVhOV1lXeDFaVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuTjBZWFJsTGw5MllXeDFaU0FoUFQwZ0p5YzdYRzRnSUgwc1hHNGdJR2RsZEVWeWNtOXlUV1Z6YzJGblpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selZtRnNhV1FvS1NCOGZDQjBhR2x6TG5Ob2IzZFNaWEYxYVhKbFpDZ3BJRDhnYm5Wc2JDQTZJSFJvYVhNdWMzUmhkR1V1WDNObGNuWmxja1Z5Y205eUlIeDhJSFJvYVhNdWNISnZjSE11ZG1Gc2FXUmhkR2x2YmtWeWNtOXlPMXh1SUNCOUxGeHVJQ0JwYzBadmNtMUVhWE5oWW14bFpEb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5CeWIzQnpMbDlwYzBadmNtMUVhWE5oWW14bFpDZ3BPMXh1SUNCOUxGeHVJQ0JwYzFaaGJHbGtPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWMzUmhkR1V1WDJselZtRnNhV1E3WEc0Z0lIMHNYRzRnSUdselVISnBjM1JwYm1VNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTV6ZEdGMFpTNWZhWE5RY21semRHbHVaVHRjYmlBZ2ZTeGNiaUFnYVhOU1pYRjFhWEpsWkRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lISmxkSFZ5YmlBaElYUm9hWE11Y0hKdmNITXVjbVZ4ZFdseVpXUTdYRzRnSUgwc1hHNGdJSE5vYjNkU1pYRjFhWEpsWkRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbWx6VW1WeGRXbHlaV1FvS1NBbUppQjBhR2x6TG5OMFlYUmxMbDkyWVd4MVpTQTlQVDBnSnljN1hHNGdJSDBzWEc0Z0lITm9iM2RGY25KdmNqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQWhkR2hwY3k1emFHOTNVbVZ4ZFdseVpXUW9LU0FtSmlBaGRHaHBjeTV6ZEdGMFpTNWZhWE5XWVd4cFpEdGNiaUFnZlZ4dWZUdGNiaUpkZlE9PSIsInZhciBjc3JmVG9rZW5TZWxlY3RvciA9IHR5cGVvZiBkb2N1bWVudCAhPSAndW5kZWZpbmVkJyA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKSA6IG51bGw7XG5cbnZhciB0b1VSTEVuY29kZWQgPSBmdW5jdGlvbiAoZWxlbWVudCwga2V5LCBsaXN0KSB7XG4gIHZhciBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgaWYgKHR5cGVvZiAoZWxlbWVudCkgPT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKHZhciBpZHggaW4gZWxlbWVudClcbiAgICAgIHRvVVJMRW5jb2RlZChlbGVtZW50W2lkeF0sIGtleSA/IGtleSArICdbJyArIGlkeCArICddJyA6IGlkeCwgbGlzdCk7XG4gIH0gZWxzZSB7XG4gICAgbGlzdC5wdXNoKGtleSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChlbGVtZW50KSk7XG4gIH1cbiAgcmV0dXJuIGxpc3Quam9pbignJicpO1xufTtcblxudmFyIHJlcXVlc3QgPSBmdW5jdGlvbiAobWV0aG9kLCB1cmwsIGRhdGEsIGNvbnRlbnRUeXBlLCBoZWFkZXJzKSB7XG5cbiAgdmFyIGNvbnRlbnRUeXBlID0gY29udGVudFR5cGUgPT09ICd1cmxlbmNvZGVkJyA/ICdhcHBsaWNhdGlvbi8nICsgY29udGVudFR5cGUucmVwbGFjZSgndXJsZW5jb2RlZCcsICd4LXd3dy1mb3JtLXVybGVuY29kZWQnKSA6ICdhcHBsaWNhdGlvbi9qc29uJztcbiAgZGF0YSA9IGNvbnRlbnRUeXBlID09PSAnYXBwbGljYXRpb24vanNvbicgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6IHRvVVJMRW5jb2RlZChkYXRhKTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICB4aHIub3BlbihtZXRob2QsIHVybCwgdHJ1ZSk7XG4gICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LVR5cGUnLCBjb250ZW50VHlwZSk7XG5cbiAgICAgIGlmICghIWNzcmZUb2tlblNlbGVjdG9yICYmICEhY3NyZlRva2VuU2VsZWN0b3IuY29udGVudCkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignWC1DU1JGLVRva2VuJywgY3NyZlRva2VuU2VsZWN0b3IuY29udGVudCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBwYXNzZWQgaGVhZGVyc1xuICAgICAgT2JqZWN0LmtleXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbiAoaGVhZGVyKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlciwgaGVhZGVyc1toZWFkZXJdKTtcbiAgICAgIH0pO1xuXG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSB4aHIucmVzcG9uc2VUZXh0ID8gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCkge1xuICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlamVjdChyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgeGhyLnNlbmQoZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYXJyYXlzRGlmZmVyOiBmdW5jdGlvbiAoYXJyYXlBLCBhcnJheUIpIHtcbiAgICB2YXIgaXNEaWZmZXJlbnQgPSBmYWxzZTtcbiAgICBpZiAoYXJyYXlBLmxlbmd0aCAhPT0gYXJyYXlCLmxlbmd0aCkge1xuICAgICAgaXNEaWZmZXJlbnQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcnJheUEuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgaWYgKGl0ZW0gIT09IGFycmF5QltpbmRleF0pIHtcbiAgICAgICAgICBpc0RpZmZlcmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXNEaWZmZXJlbnQ7XG4gIH0sXG4gIGFqYXg6IHtcbiAgICBwb3N0OiByZXF1ZXN0LmJpbmQobnVsbCwgJ1BPU1QnKSxcbiAgICBwdXQ6IHJlcXVlc3QuYmluZChudWxsLCAnUFVUJylcbiAgfVxufTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTDFWelpYSnpMMk5vY21semRHbGhibUZzWm05dWFTOUViMk4xYldWdWRITXZaR1YyTDJadmNtMXplUzF5WldGamRDOXpjbU12ZFhScGJITXVhbk1pTENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5amFISnBjM1JwWVc1aGJHWnZibWt2Ukc5amRXMWxiblJ6TDJSbGRpOW1iM0p0YzNrdGNtVmhZM1F2YzNKakwzVjBhV3h6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRWxCUVVrc2FVSkJRV2xDTEVkQlFVY3NUMEZCVHl4UlFVRlJMRWxCUVVrc1YwRkJWeXhIUVVGSExGRkJRVkVzUTBGQlF5eGhRVUZoTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdPMEZCUld4SUxFbEJRVWtzV1VGQldTeEhRVUZITEZWQlFWVXNUMEZCVHl4RlFVRkZMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVU3UlVGREwwTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF6dEZRVU4wUWl4SlFVRkpMRkZCUVZFc1QwRkJUeXhEUVVGRExFbEJRVWtzVVVGQlVTeEZRVUZGTzBsQlEyaERMRXRCUVVzc1NVRkJTU3hIUVVGSExFbEJRVWtzVDBGQlR6dE5RVU55UWl4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wZEJRM1pGTEUxQlFVMDdTVUZEVEN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTndSRHRGUVVORUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVONFFpeERRVUZETEVOQlFVTTdPMEZCUlVZc1NVRkJTU3hQUVVGUExFZEJRVWNzVlVGQlZTeE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hYUVVGWExFVkJRVVVzVDBGQlR5eEZRVUZGT3p0RlFVVXZSQ3hKUVVGSkxGZEJRVmNzUjBGQlJ5eFhRVUZYTEV0QlFVc3NXVUZCV1N4SFFVRkhMR05CUVdNc1IwRkJSeXhYUVVGWExFTkJRVU1zVDBGQlR5eERRVUZETEZsQlFWa3NSVUZCUlN4MVFrRkJkVUlzUTBGQlF5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRE8wRkJRM0JLTEVWQlFVVXNTVUZCU1N4SFFVRkhMRmRCUVZjc1MwRkJTeXhyUWtGQmEwSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UlVGRmRFWXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhWUVVGVkxFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVTdTVUZETlVNc1NVRkJTVHROUVVOR0xFbEJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NZMEZCWXl4RlFVRkZMRU5CUVVNN1RVRkRMMElzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzAxQlF6VkNMRWRCUVVjc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4UlFVRlJMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3hOUVVGTkxFZEJRVWNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhqUVVGakxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdPMDFCUld4RUxFbEJRVWtzUTBGQlF5eERRVUZETEdsQ1FVRnBRaXhKUVVGSkxFTkJRVU1zUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhQUVVGUExFVkJRVVU3VVVGRGRFUXNSMEZCUnl4RFFVRkRMR2RDUVVGblFpeERRVUZETEdOQlFXTXNSVUZCUlN4cFFrRkJhVUlzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTjRSU3hQUVVGUE8wRkJRMUE3TzAxQlJVMHNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4TlFVRk5MRVZCUVVVN1VVRkROME1zUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGQlJTeFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOMFJDeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1RVRkZTQ3hIUVVGSExFTkJRVU1zYTBKQlFXdENMRWRCUVVjc1dVRkJXVHRCUVVNelF5eFJRVUZSTEVsQlFVa3NSMEZCUnl4RFFVRkRMRlZCUVZVc1MwRkJTeXhEUVVGRExFVkJRVVU3TzFWQlJYaENMRWxCUVVrN1dVRkRSaXhKUVVGSkxGRkJRVkVzUjBGQlJ5eEhRVUZITEVOQlFVTXNXVUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJRenRaUVVOMFJTeEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4RlFVRkZPMk5CUTNwRExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0aFFVTnVRaXhOUVVGTk8yTkJRMHdzVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMkZCUTJ4Q08xZEJRMFlzUTBGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0WlFVTldMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU4wUWl4WFFVRlhPenRUUVVWR08wOUJRMFlzUTBGQlF6dE5RVU5HTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRGFFSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSVHROUVVOV0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTllPMGRCUTBZc1EwRkJReXhEUVVGRE8wRkJRMHdzUTBGQlF5eERRVUZET3p0QlFVVkdMRTFCUVUwc1EwRkJReXhQUVVGUExFZEJRVWM3UlVGRFppeFpRVUZaTEVWQlFVVXNWVUZCVlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRk8wbEJRM1JETEVsQlFVa3NWMEZCVnl4SFFVRkhMRXRCUVVzc1EwRkJRenRKUVVONFFpeEpRVUZKTEUxQlFVMHNRMEZCUXl4TlFVRk5MRXRCUVVzc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJUdE5RVU51UXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wdEJRM0JDTEUxQlFVMDdUVUZEVEN4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVlVzU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlR0UlFVTndReXhKUVVGSkxFbEJRVWtzUzBGQlN5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVN1ZVRkRNVUlzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXp0VFFVTndRanRQUVVOR0xFTkJRVU1zUTBGQlF6dExRVU5LTzBsQlEwUXNUMEZCVHl4WFFVRlhMRU5CUVVNN1IwRkRjRUk3UlVGRFJDeEpRVUZKTEVWQlFVVTdTVUZEU2l4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRPMGxCUTJoRExFZEJRVWNzUlVGQlJTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU03UjBGREwwSTdRMEZEUml4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpZG1GeUlHTnpjbVpVYjJ0bGJsTmxiR1ZqZEc5eUlEMGdkSGx3Wlc5bUlHUnZZM1Z0Wlc1MElDRTlJQ2QxYm1SbFptbHVaV1FuSUQ4Z1pHOWpkVzFsYm5RdWNYVmxjbmxUWld4bFkzUnZjaWduYldWMFlWdHVZVzFsUFZ3aVkzTnlaaTEwYjJ0bGJsd2lYU2NwSURvZ2JuVnNiRHRjYmx4dWRtRnlJSFJ2VlZKTVJXNWpiMlJsWkNBOUlHWjFibU4wYVc5dUlDaGxiR1Z0Wlc1MExDQnJaWGtzSUd4cGMzUXBJSHRjYmlBZ2RtRnlJR3hwYzNRZ1BTQnNhWE4wSUh4OElGdGRPMXh1SUNCcFppQW9kSGx3Wlc5bUlDaGxiR1Z0Wlc1MEtTQTlQU0FuYjJKcVpXTjBKeWtnZTF4dUlDQWdJR1p2Y2lBb2RtRnlJR2xrZUNCcGJpQmxiR1Z0Wlc1MEtWeHVJQ0FnSUNBZ2RHOVZVa3hGYm1OdlpHVmtLR1ZzWlcxbGJuUmJhV1I0WFN3Z2EyVjVJRDhnYTJWNUlDc2dKMXNuSUNzZ2FXUjRJQ3NnSjEwbklEb2dhV1I0TENCc2FYTjBLVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0JzYVhOMExuQjFjMmdvYTJWNUlDc2dKejBuSUNzZ1pXNWpiMlJsVlZKSlEyOXRjRzl1Wlc1MEtHVnNaVzFsYm5RcEtUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2JHbHpkQzVxYjJsdUtDY21KeWs3WEc1OU8xeHVYRzUyWVhJZ2NtVnhkV1Z6ZENBOUlHWjFibU4wYVc5dUlDaHRaWFJvYjJRc0lIVnliQ3dnWkdGMFlTd2dZMjl1ZEdWdWRGUjVjR1VzSUdobFlXUmxjbk1wSUh0Y2JseHVJQ0IyWVhJZ1kyOXVkR1Z1ZEZSNWNHVWdQU0JqYjI1MFpXNTBWSGx3WlNBOVBUMGdKM1Z5YkdWdVkyOWtaV1FuSUQ4Z0oyRndjR3hwWTJGMGFXOXVMeWNnS3lCamIyNTBaVzUwVkhsd1pTNXlaWEJzWVdObEtDZDFjbXhsYm1OdlpHVmtKeXdnSjNndGQzZDNMV1p2Y20wdGRYSnNaVzVqYjJSbFpDY3BJRG9nSjJGd2NHeHBZMkYwYVc5dUwycHpiMjRuTzF4dUlDQmtZWFJoSUQwZ1kyOXVkR1Z1ZEZSNWNHVWdQVDA5SUNkaGNIQnNhV05oZEdsdmJpOXFjMjl1SnlBL0lFcFRUMDR1YzNSeWFXNW5hV1o1S0dSaGRHRXBJRG9nZEc5VlVreEZibU52WkdWa0tHUmhkR0VwTzF4dVhHNGdJSEpsZEhWeWJpQnVaWGNnVUhKdmJXbHpaU2htZFc1amRHbHZiaUFvY21WemIyeDJaU3dnY21WcVpXTjBLU0I3WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUhaaGNpQjRhSElnUFNCdVpYY2dXRTFNU0hSMGNGSmxjWFZsYzNRb0tUdGNiaUFnSUNBZ0lIaG9jaTV2Y0dWdUtHMWxkR2h2WkN3Z2RYSnNMQ0IwY25WbEtUdGNiaUFnSUNBZ0lIaG9jaTV6WlhSU1pYRjFaWE4wU0dWaFpHVnlLQ2RCWTJObGNIUW5MQ0FuWVhCd2JHbGpZWFJwYjI0dmFuTnZiaWNwTzF4dUlDQWdJQ0FnZUdoeUxuTmxkRkpsY1hWbGMzUklaV0ZrWlhJb0owTnZiblJsYm5RdFZIbHdaU2NzSUdOdmJuUmxiblJVZVhCbEtUdGNibHh1SUNBZ0lDQWdhV1lnS0NFaFkzTnlabFJ2YTJWdVUyVnNaV04wYjNJZ0ppWWdJU0ZqYzNKbVZHOXJaVzVUWld4bFkzUnZjaTVqYjI1MFpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUhob2NpNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtDZFlMVU5UVWtZdFZHOXJaVzRuTENCamMzSm1WRzlyWlc1VFpXeGxZM1J2Y2k1amIyNTBaVzUwS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0x5OGdRV1JrSUhCaGMzTmxaQ0JvWldGa1pYSnpYRzRnSUNBZ0lDQlBZbXBsWTNRdWEyVjVjeWhvWldGa1pYSnpLUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVJQ2hvWldGa1pYSXBJSHRjYmlBZ0lDQWdJQ0FnZUdoeUxuTmxkRkpsY1hWbGMzUklaV0ZrWlhJb2FHVmhaR1Z5TENCb1pXRmtaWEp6VzJobFlXUmxjbDBwTzF4dUlDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lIaG9jaTV2Ym5KbFlXUjVjM1JoZEdWamFHRnVaMlVnUFNCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoNGFISXVjbVZoWkhsVGRHRjBaU0E5UFQwZ05Da2dlMXh1WEc0Z0lDQWdJQ0FnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJ5WlhOd2IyNXpaU0E5SUhob2NpNXlaWE53YjI1elpWUmxlSFFnUHlCS1UwOU9MbkJoY25ObEtIaG9jaTV5WlhOd2IyNXpaVlJsZUhRcElEb2diblZzYkR0Y2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoNGFISXVjM1JoZEhWeklENDlJREl3TUNBbUppQjRhSEl1YzNSaGRIVnpJRHdnTXpBd0tTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjMjlzZG1Vb2NtVnpjRzl1YzJVcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVZxWldOMEtISmxjM0J2Ym5ObEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaV3BsWTNRb1pTazdYRzRnSUNBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMDdYRzRnSUNBZ0lDQjRhSEl1YzJWdVpDaGtZWFJoS1R0Y2JpQWdJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnSUNCeVpXcGxZM1FvWlNrN1hHNGdJQ0FnZlZ4dUlDQjlLVHRjYm4wN1hHNWNibTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdlMXh1SUNCaGNuSmhlWE5FYVdabVpYSTZJR1oxYm1OMGFXOXVJQ2hoY25KaGVVRXNJR0Z5Y21GNVFpa2dlMXh1SUNBZ0lIWmhjaUJwYzBScFptWmxjbVZ1ZENBOUlHWmhiSE5sTzF4dUlDQWdJR2xtSUNoaGNuSmhlVUV1YkdWdVozUm9JQ0U5UFNCaGNuSmhlVUl1YkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0JwYzBScFptWmxjbVZ1ZENBOUlIUnlkV1U3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHRnljbUY1UVM1bWIzSkZZV05vS0daMWJtTjBhVzl1SUNocGRHVnRMQ0JwYm1SbGVDa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYUmxiU0FoUFQwZ1lYSnlZWGxDVzJsdVpHVjRYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbHpSR2xtWm1WeVpXNTBJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCcGMwUnBabVpsY21WdWREdGNiaUFnZlN4Y2JpQWdZV3BoZURvZ2UxeHVJQ0FnSUhCdmMzUTZJSEpsY1hWbGMzUXVZbWx1WkNodWRXeHNMQ0FuVUU5VFZDY3BMRnh1SUNBZ0lIQjFkRG9nY21WeGRXVnpkQzVpYVc1a0tHNTFiR3dzSUNkUVZWUW5LVnh1SUNCOVhHNTlPMXh1SWwxOSIsIm1vZHVsZS5leHBvcnRzID0ge1xuICAnaXNWYWx1ZSc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gJyc7XG4gIH0sXG4gICdpc0VtYWlsJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hdGNoKC9eKCgoW2Etel18XFxkfFshI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9fl18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKyhcXC4oW2Etel18XFxkfFshI1xcJCUmJ1xcKlxcK1xcLVxcLz1cXD9cXF5fYHtcXHx9fl18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKykqKXwoKFxceDIyKSgoKChcXHgyMHxcXHgwOSkqKFxceDBkXFx4MGEpKT8oXFx4MjB8XFx4MDkpKyk/KChbXFx4MDEtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZcXHg3Zl18XFx4MjF8W1xceDIzLVxceDViXXxbXFx4NWQtXFx4N2VdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoXFxcXChbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGQtXFx4N2ZdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpKSooKChcXHgyMHxcXHgwOSkqKFxceDBkXFx4MGEpKT8oXFx4MjB8XFx4MDkpKyk/KFxceDIyKSkpQCgoKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KChbYS16XXxcXGR8W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKFthLXpdfFxcZHwtfFxcLnxffH58W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKihbYS16XXxcXGR8W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSlcXC4pKygoW2Etel18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfCgoW2Etel18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKFthLXpdfFxcZHwtfFxcLnxffH58W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKihbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKSQvaSk7XG4gIH0sXG4gICdpc1RydWUnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHRydWU7XG4gIH0sXG4gICdpc051bWVyaWMnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBtYXRjaFJlc3VsdHMgPSB2YWx1ZS5tYXRjaCgvWy0rXT8oXFxkKlsuXSk/XFxkKy8pO1xuICAgICAgaWYgKCEhIG1hdGNoUmVzdWx0cykge1xuICAgICAgICByZXR1cm4gbWF0Y2hSZXN1bHRzWzBdID09IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgJ2lzQWxwaGEnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUubWF0Y2goL15bYS16QS1aXSskLyk7XG4gIH0sXG4gICdpc1dvcmRzJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hdGNoKC9eW2EtekEtWlxcc10rJC8pO1xuICB9LFxuICAnaXNTcGVjaWFsV29yZHMnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUubWF0Y2goL15bYS16QS1aXFxzXFx1MDBDMC1cXHUwMTdGXSskLyk7XG4gIH0sXG4gIGlzTGVuZ3RoOiBmdW5jdGlvbiAodmFsdWUsIG1pbiwgbWF4KSB7XG4gICAgaWYgKG1heCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdmFsdWUubGVuZ3RoID49IG1pbiAmJiB2YWx1ZS5sZW5ndGggPD0gbWF4O1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID49IG1pbjtcbiAgfSxcbiAgZXF1YWxzOiBmdW5jdGlvbiAodmFsdWUsIGVxbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBlcWw7XG4gIH0sXG4gIGVxdWFsc0ZpZWxkOiBmdW5jdGlvbiAodmFsdWUsIGZpZWxkKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB0aGlzW2ZpZWxkXTtcbiAgfVxufTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTDFWelpYSnpMMk5vY21semRHbGhibUZzWm05dWFTOUViMk4xYldWdWRITXZaR1YyTDJadmNtMXplUzF5WldGamRDOXpjbU12ZG1Gc2FXUmhkR2x2YmxKMWJHVnpMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXZWWE5sY25NdlkyaHlhWE4wYVdGdVlXeG1iMjVwTDBSdlkzVnRaVzUwY3k5a1pYWXZabTl5YlhONUxYSmxZV04wTDNOeVl5OTJZV3hwWkdGMGFXOXVVblZzWlhNdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVFVGQlRTeERRVUZETEU5QlFVOHNSMEZCUnp0RlFVTm1MRk5CUVZNc1JVRkJSU3hWUVVGVkxFdEJRVXNzUlVGQlJUdEpRVU14UWl4UFFVRlBMRXRCUVVzc1MwRkJTeXhGUVVGRkxFTkJRVU03UjBGRGNrSTdSVUZEUkN4VFFVRlRMRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVU3U1VGRE1VSXNUMEZCVHl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExIazBRa0ZCZVRSQ0xFTkJRVU1zUTBGQlF6dEhRVU12TlVJN1JVRkRSQ3hSUVVGUkxFVkJRVVVzVlVGQlZTeExRVUZMTEVWQlFVVTdTVUZEZWtJc1QwRkJUeXhMUVVGTExFdEJRVXNzU1VGQlNTeERRVUZETzBkQlEzWkNPMFZCUTBRc1YwRkJWeXhGUVVGRkxGVkJRVlVzUzBGQlN5eEZRVUZGTzBsQlF6VkNMRWxCUVVrc1QwRkJUeXhMUVVGTExFdEJRVXNzVVVGQlVTeEZRVUZGTzAxQlF6ZENMRTlCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMklzVFVGQlRUdE5RVU5NTEVsQlFVa3NXVUZCV1N4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1EwRkJRenROUVVOd1JDeEpRVUZKTEVOQlFVTXNSVUZCUlN4WlFVRlpMRVZCUVVVN1VVRkRia0lzVDBGQlR5eFpRVUZaTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRE8wOUJRMnBETEUxQlFVMDdVVUZEVEN4UFFVRlBMRXRCUVVzc1EwRkJRenRQUVVOa08wdEJRMFk3UjBGRFJqdEZRVU5FTEZOQlFWTXNSVUZCUlN4VlFVRlZMRXRCUVVzc1JVRkJSVHRKUVVNeFFpeFBRVUZQTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03UjBGRGJrTTdSVUZEUkN4VFFVRlRMRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVU3U1VGRE1VSXNUMEZCVHl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzBkQlEzSkRPMFZCUTBRc1owSkJRV2RDTEVWQlFVVXNWVUZCVlN4TFFVRkxMRVZCUVVVN1NVRkRha01zVDBGQlR5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRFJDUVVFMFFpeERRVUZETEVOQlFVTTdSMEZEYkVRN1JVRkRSQ3hSUVVGUkxFVkJRVVVzVlVGQlZTeExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSVHRKUVVOdVF5eEpRVUZKTEVkQlFVY3NTMEZCU3l4VFFVRlRMRVZCUVVVN1RVRkRja0lzVDBGQlR5eExRVUZMTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NRMEZCUXp0TFFVTnVSRHRKUVVORUxFOUJRVThzUzBGQlN5eERRVUZETEUxQlFVMHNTVUZCU1N4SFFVRkhMRU5CUVVNN1IwRkROVUk3UlVGRFJDeE5RVUZOTEVWQlFVVXNWVUZCVlN4TFFVRkxMRVZCUVVVc1IwRkJSeXhGUVVGRk8wbEJRelZDTEU5QlFVOHNTMEZCU3l4SlFVRkpMRWRCUVVjc1EwRkJRenRIUVVOeVFqdEZRVU5FTEZkQlFWY3NSVUZCUlN4VlFVRlZMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVU3U1VGRGJrTXNUMEZCVHl4TFFVRkxMRXRCUVVzc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBkQlF6bENPME5CUTBZc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW0xdlpIVnNaUzVsZUhCdmNuUnpJRDBnZTF4dUlDQW5hWE5XWVd4MVpTYzZJR1oxYm1OMGFXOXVJQ2gyWVd4MVpTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaU0FoUFQwZ0p5YzdYRzRnSUgwc1hHNGdJQ2RwYzBWdFlXbHNKem9nWm5WdVkzUnBiMjRnS0haaGJIVmxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsTG0xaGRHTm9LQzllS0Nnb1cyRXRlbDE4WEZ4a2ZGc2hJMXhjSkNVbUoxeGNLbHhjSzF4Y0xWeGNMejFjWEQ5Y1hGNWZZSHRjWEh4OWZsMThXMXhjZFRBd1FUQXRYRngxUkRkR1JseGNkVVk1TURBdFhGeDFSa1JEUmx4Y2RVWkVSakF0WEZ4MVJrWkZSbDBwS3loY1hDNG9XMkV0ZWwxOFhGeGtmRnNoSTF4Y0pDVW1KMXhjS2x4Y0sxeGNMVnhjTHoxY1hEOWNYRjVmWUh0Y1hIeDlmbDE4VzF4Y2RUQXdRVEF0WEZ4MVJEZEdSbHhjZFVZNU1EQXRYRngxUmtSRFJseGNkVVpFUmpBdFhGeDFSa1pGUmwwcEt5a3FLWHdvS0Z4Y2VESXlLU2dvS0NoY1hIZ3lNSHhjWEhnd09Ta3FLRnhjZURCa1hGeDRNR0VwS1Q4b1hGeDRNakI4WEZ4NE1Ea3BLeWsvS0NoYlhGeDRNREV0WEZ4NE1EaGNYSGd3WWx4Y2VEQmpYRng0TUdVdFhGeDRNV1pjWEhnM1psMThYRng0TWpGOFcxeGNlREl6TFZ4Y2VEVmlYWHhiWEZ4NE5XUXRYRng0TjJWZGZGdGNYSFV3TUVFd0xWeGNkVVEzUmtaY1hIVkdPVEF3TFZ4Y2RVWkVRMFpjWEhWR1JFWXdMVnhjZFVaR1JVWmRLWHdvWEZ4Y1hDaGJYRng0TURFdFhGeDRNRGxjWEhnd1lseGNlREJqWEZ4NE1HUXRYRng0TjJaZGZGdGNYSFV3TUVFd0xWeGNkVVEzUmtaY1hIVkdPVEF3TFZ4Y2RVWkVRMFpjWEhWR1JFWXdMVnhjZFVaR1JVWmRLU2twS1Nvb0tDaGNYSGd5TUh4Y1hIZ3dPU2txS0Z4Y2VEQmtYRng0TUdFcEtUOG9YRng0TWpCOFhGeDRNRGtwS3lrL0tGeGNlREl5S1NrcFFDZ29LRnRoTFhwZGZGeGNaSHhiWEZ4MU1EQkJNQzFjWEhWRU4wWkdYRngxUmprd01DMWNYSFZHUkVOR1hGeDFSa1JHTUMxY1hIVkdSa1ZHWFNsOEtDaGJZUzE2WFh4Y1hHUjhXMXhjZFRBd1FUQXRYRngxUkRkR1JseGNkVVk1TURBdFhGeDFSa1JEUmx4Y2RVWkVSakF0WEZ4MVJrWkZSbDBwS0Z0aExYcGRmRnhjWkh3dGZGeGNMbnhmZkg1OFcxeGNkVEF3UVRBdFhGeDFSRGRHUmx4Y2RVWTVNREF0WEZ4MVJrUkRSbHhjZFVaRVJqQXRYRngxUmtaRlJsMHBLaWhiWVMxNlhYeGNYR1I4VzF4Y2RUQXdRVEF0WEZ4MVJEZEdSbHhjZFVZNU1EQXRYRngxUmtSRFJseGNkVVpFUmpBdFhGeDFSa1pGUmwwcEtTbGNYQzRwS3lnb1cyRXRlbDE4VzF4Y2RUQXdRVEF0WEZ4MVJEZEdSbHhjZFVZNU1EQXRYRngxUmtSRFJseGNkVVpFUmpBdFhGeDFSa1pGUmwwcGZDZ29XMkV0ZWwxOFcxeGNkVEF3UVRBdFhGeDFSRGRHUmx4Y2RVWTVNREF0WEZ4MVJrUkRSbHhjZFVaRVJqQXRYRngxUmtaRlJsMHBLRnRoTFhwZGZGeGNaSHd0ZkZ4Y0xueGZmSDU4VzF4Y2RUQXdRVEF0WEZ4MVJEZEdSbHhjZFVZNU1EQXRYRngxUmtSRFJseGNkVVpFUmpBdFhGeDFSa1pGUmwwcEtpaGJZUzE2WFh4YlhGeDFNREJCTUMxY1hIVkVOMFpHWEZ4MVJqa3dNQzFjWEhWR1JFTkdYRngxUmtSR01DMWNYSFZHUmtWR1hTa3BLU1F2YVNrN1hHNGdJSDBzWEc0Z0lDZHBjMVJ5ZFdVbk9pQm1kVzVqZEdsdmJpQW9kbUZzZFdVcElIdGNiaUFnSUNCeVpYUjFjbTRnZG1Gc2RXVWdQVDA5SUhSeWRXVTdYRzRnSUgwc1hHNGdJQ2RwYzA1MWJXVnlhV01uT2lCbWRXNWpkR2x2YmlBb2RtRnNkV1VwSUh0Y2JpQWdJQ0JwWmlBb2RIbHdaVzltSUhaaGJIVmxJRDA5UFNBbmJuVnRZbVZ5SnlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhaaGNpQnRZWFJqYUZKbGMzVnNkSE1nUFNCMllXeDFaUzV0WVhSamFDZ3ZXeTByWFQ4b1hGeGtLbHN1WFNrL1hGeGtLeThwTzF4dUlDQWdJQ0FnYVdZZ0tDRWhJRzFoZEdOb1VtVnpkV3gwY3lrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JXRjBZMmhTWlhOMWJIUnpXekJkSUQwOUlIWmhiSFZsTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ0oybHpRV3h3YUdFbk9pQm1kVzVqZEdsdmJpQW9kbUZzZFdVcElIdGNiaUFnSUNCeVpYUjFjbTRnZG1Gc2RXVXViV0YwWTJnb0wxNWJZUzE2UVMxYVhTc2tMeWs3WEc0Z0lIMHNYRzRnSUNkcGMxZHZjbVJ6SnpvZ1puVnVZM1JwYjI0Z0tIWmhiSFZsS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFpoYkhWbExtMWhkR05vS0M5ZVcyRXRla0V0V2x4Y2MxMHJKQzhwTzF4dUlDQjlMRnh1SUNBbmFYTlRjR1ZqYVdGc1YyOXlaSE1uT2lCbWRXNWpkR2x2YmlBb2RtRnNkV1VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkbUZzZFdVdWJXRjBZMmdvTDE1YllTMTZRUzFhWEZ4elhGeDFNREJETUMxY1hIVXdNVGRHWFNza0x5azdYRzRnSUgwc1hHNGdJR2x6VEdWdVozUm9PaUJtZFc1amRHbHZiaUFvZG1Gc2RXVXNJRzFwYml3Z2JXRjRLU0I3WEc0Z0lDQWdhV1lnS0cxaGVDQWhQVDBnZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVXViR1Z1WjNSb0lENDlJRzFwYmlBbUppQjJZV3gxWlM1c1pXNW5kR2dnUEQwZ2JXRjRPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZG1Gc2RXVXViR1Z1WjNSb0lENDlJRzFwYmp0Y2JpQWdmU3hjYmlBZ1pYRjFZV3h6T2lCbWRXNWpkR2x2YmlBb2RtRnNkV1VzSUdWeGJDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMllXeDFaU0E5UFNCbGNXdzdYRzRnSUgwc1hHNGdJR1Z4ZFdGc2MwWnBaV3hrT2lCbWRXNWpkR2x2YmlBb2RtRnNkV1VzSUdacFpXeGtLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsSUQwOVBTQjBhR2x6VzJacFpXeGtYVHRjYmlBZ2ZWeHVmVHRjYmlKZGZRPT0iXX0= diff --git a/build/specs.js b/build/specs.js index 2de0da7..bda1a97 100644 --- a/build/specs.js +++ b/build/specs.js @@ -350,6 +350,8 @@ it('should be able to dynamically change validations', function (done) { }); + + },{"./../src/main.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/main.js"}],"./specs/Formsy-spec.js":[function(require,module,exports){ var Formsy = require('./../src/main.js'); @@ -387,9 +389,9 @@ describe('Formsy', function () { return ( React.createElement(Formsy.Form, {onSubmit: this.onSubmit}, React.createElement("h1", null, "Test"), - null, - undefined, - React.createElement(TestInput, {name: "name", value: 'foo' }) + null, + undefined, + React.createElement(TestInput, {name: "name", value: 'foo' }) ) ); } @@ -758,6 +760,8 @@ describe('Formsy', function () { }); + + },{"./../src/main.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/main.js"}],"./specs/Submit-spec.js":[function(require,module,exports){ var Formsy = require('./../src/main.js'); @@ -938,6 +942,8 @@ describe('Ajax', function() { }); + + },{"./../src/main.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/main.js"}],"./specs/Validation-spec.js":[function(require,module,exports){ var Formsy = require('./../src/main.js'); @@ -1133,6 +1139,8 @@ describe('Validation', function() { }); + + },{"./../src/main.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/main.js"}],"/Users/christianalfoni/Documents/dev/formsy-react/src/Mixin.js":[function(require,module,exports){ module.exports = { getInitialState: function () { @@ -1262,6 +1270,8 @@ module.exports = { } }; + + },{}],"/Users/christianalfoni/Documents/dev/formsy-react/src/main.js":[function(require,module,exports){ (function (global){ var React = global.React || require('react'); @@ -1603,10 +1613,12 @@ if (!global.exports && !global.module && (!global.define || !global.define.amd)) module.exports = Formsy; + + }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"./Mixin.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/Mixin.js","./utils.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/utils.js","./validationRules.js":"/Users/christianalfoni/Documents/dev/formsy-react/src/validationRules.js","react":"react"}],"/Users/christianalfoni/Documents/dev/formsy-react/src/utils.js":[function(require,module,exports){ -var csrfTokenSelector = document.querySelector('meta[name="csrf-token"]'); +var csrfTokenSelector = typeof document != 'undefined' ? document.querySelector('meta[name="csrf-token"]') : null; var toURLEncoded = function (element, key, list) { var list = list || []; @@ -1683,6 +1695,8 @@ module.exports = { } }; + + },{}],"/Users/christianalfoni/Documents/dev/formsy-react/src/validationRules.js":[function(require,module,exports){ module.exports = { 'isValue': function (value) { @@ -1698,7 +1712,7 @@ module.exports = { if (typeof value === 'number') { return true; } else { - matchResults = value.match(/[-+]?(\d*[.])?\d+/); + var matchResults = value.match(/[-+]?(\d*[.])?\d+/); if (!! matchResults) { return matchResults[0] == value; } else { @@ -1729,5 +1743,7 @@ module.exports = { } }; + + },{}]},{},["./specs/Element-spec.js","./specs/Formsy-spec.js","./specs/Submit-spec.js","./specs/Validation-spec.js"]) -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcGVjcy9FbGVtZW50LXNwZWMuanMiLCJzcGVjcy9Gb3Jtc3ktc3BlYy5qcyIsInNwZWNzL1N1Ym1pdC1zcGVjLmpzIiwic3BlY3MvVmFsaWRhdGlvbi1zcGVjLmpzIiwic3JjL01peGluLmpzIiwic3JjL21haW4uanMiLCJzcmMvdXRpbHMuanMiLCJzcmMvdmFsaWRhdGlvblJ1bGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMvSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbFZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJ2YXIgRm9ybXN5ID0gcmVxdWlyZSgnLi8uLi9zcmMvbWFpbi5qcycpO1xuXG5kZXNjcmliZSgnRWxlbWVudCcsIGZ1bmN0aW9uKCkge1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHBhc3NlZCBhbmQgc2V0VmFsdWUoKSB2YWx1ZSB3aGVuIHVzaW5nIGdldFZhbHVlKCknLCBmdW5jdGlvbiAoKSB7XG4gICAgXG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMudXBkYXRlVmFsdWV9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIG51bGwsIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wifSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhUYWcoZm9ybSwgJ0lOUFVUJyk7XG4gICAgZXhwZWN0KGlucHV0LmdldERPTU5vZGUoKS52YWx1ZSkudG9CZSgnZm9vJyk7XG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShpbnB1dCwge3RhcmdldDoge3ZhbHVlOiAnZm9vYmFyJ319KTtcbiAgICBleHBlY3QoaW5wdXQuZ2V0RE9NTm9kZSgpLnZhbHVlKS50b0JlKCdmb29iYXInKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIG9yIGZhbHNlIHdoZW4gY2FsbGluZyBoYXNWYWx1ZSgpIGRlcGVuZGluZyBvbiB2YWx1ZSBleGlzdGFuY2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgXG4gICAgdmFyIHJlc2V0ID0gbnVsbDtcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlc2V0ID0gdGhpcy5yZXNldFZhbHVlO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwgbnVsbCwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICByZXNldCgpO1xuICAgIGV4cGVjdChpbnB1dC5nZXRET01Ob2RlKCkudmFsdWUpLnRvQmUoJycpO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIGVycm9yIG1lc3NhZ2UgcGFzc2VkIHdoZW4gY2FsbGluZyBnZXRFcnJvck1lc3NhZ2UoKScsIGZ1bmN0aW9uICgpIHtcbiAgICBcbiAgICB2YXIgZ2V0RXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGdldEVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwgbnVsbCwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCIsIHZhbGlkYXRpb25zOiBcImlzRW1haWxcIiwgdmFsaWRhdGlvbkVycm9yOiBcIkhhcyB0byBiZSBlbWFpbFwifSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgZXhwZWN0KGdldEVycm9yTWVzc2FnZSgpKS50b0JlKCdIYXMgdG8gYmUgZW1haWwnKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiBzZXJ2ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIGNhbGxpbmcgZ2V0RXJyb3JNZXNzYWdlKCknLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIFxuICAgIGphc21pbmUuQWpheC5pbnN0YWxsKCk7XG5cbiAgICB2YXIgZ2V0RXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGdldEVycm9yTWVzc2FnZSA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIn0sIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wiLCB2YWxpZGF0aW9uczogXCJpc0VtYWlsXCIsIHZhbGlkYXRpb25FcnJvcjogXCJIYXMgdG8gYmUgZW1haWxcIn0pXG4gICAgICApXG4gICAgKTtcblxuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLlNpbXVsYXRlLnN1Ym1pdChmb3JtLmdldERPTU5vZGUoKSk7XG5cbiAgICBqYXNtaW5lLkFqYXgucmVxdWVzdHMubW9zdFJlY2VudCgpLnJlc3BvbmRXaXRoKHtcbiAgICAgIHN0YXR1czogNTAwLFxuICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIHJlc3BvbnNlVGV4dDogJ3tcImZvb1wiOiBcImJhclwifSdcbiAgICB9KVxuXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBleHBlY3QoZ2V0RXJyb3JNZXNzYWdlKCkpLnRvQmUoJ2JhcicpO1xuICAgICAgamFzbWluZS5BamF4LnVuaW5zdGFsbCgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0sIDApO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgb3IgZmFsc2Ugd2hlbiBjYWxsaW5nIGlzVmFsaWQoKSBkZXBlbmRpbmcgb24gdmFsaWQgc3RhdGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgXG4gICAgdmFyIGlzVmFsaWQgPSBudWxsO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXNWYWxpZCA9IHRoaXMuaXNWYWxpZDtcbiAgICAgIH0sXG4gICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMudXBkYXRlVmFsdWV9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHt1cmw6IFwiL3VzZXJzXCJ9LCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wiLCB2YWx1ZTogXCJmb29cIiwgdmFsaWRhdGlvbnM6IFwiaXNFbWFpbFwifSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgZXhwZWN0KGlzVmFsaWQoKSkudG9CZShmYWxzZSk7XG4gICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhUYWcoZm9ybSwgJ0lOUFVUJyk7XG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShpbnB1dCwge3RhcmdldDoge3ZhbHVlOiAnZm9vQGZvby5jb20nfX0pO1xuICAgIGV4cGVjdChpc1ZhbGlkKCkpLnRvQmUodHJ1ZSk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBvciBmYWxzZSB3aGVuIGNhbGxpbmcgaXNSZXF1aXJlZCgpIGRlcGVuZGluZyBvbiBwYXNzZWQgcmVxdWlyZWQgYXR0cmlidXRlJywgZnVuY3Rpb24gKCkge1xuICAgIFxuICAgIHZhciBpc1JlcXVpcmVkcyA9IFtdO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXNSZXF1aXJlZHMucHVzaCh0aGlzLmlzUmVxdWlyZWQpO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIn0sIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wifSksIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wiLCByZXF1aXJlZDogdHJ1ZX0pXG4gICAgICApXG4gICAgKTtcblxuICAgIGV4cGVjdChpc1JlcXVpcmVkc1swXSgpKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3QoaXNSZXF1aXJlZHNbMV0oKSkudG9CZSh0cnVlKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIG9yIGZhbHNlIHdoZW4gY2FsbGluZyBzaG93UmVxdWlyZWQoKSBkZXBlbmRpbmcgb24gaW5wdXQgYmVpbmcgZW1wdHkgYW5kIHJlcXVpcmVkIGlzIHBhc3NlZCwgb3Igbm90JywgZnVuY3Rpb24gKCkge1xuICAgIFxuICAgIHZhciBzaG93UmVxdWlyZWRzID0gW107XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBzaG93UmVxdWlyZWRzLnB1c2godGhpcy5zaG93UmVxdWlyZWQpO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIn0sIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiQVwiLCB2YWx1ZTogXCJmb29cIn0pLCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcIkJcIiwgdmFsdWU6IFwiXCIsIHJlcXVpcmVkOiB0cnVlfSksIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiQ1wiLCB2YWx1ZTogXCJcIn0pXG4gICAgICApXG4gICAgKTtcblxuICAgIGV4cGVjdChzaG93UmVxdWlyZWRzWzBdKCkpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChzaG93UmVxdWlyZWRzWzFdKCkpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KHNob3dSZXF1aXJlZHNbMl0oKSkudG9CZShmYWxzZSk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBvciBmYWxzZSB3aGVuIGNhbGxpbmcgc2hvd0Vycm9yKCkgZGVwZW5kaW5nIG9uIHZhbHVlIGlzIGludmFsaWQgb3IgYSBzZXJ2ZXIgZXJyb3IgaGFzIGFycml2ZWQsIG9yIG5vdCcsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICB2YXIgc2hvd0Vycm9yID0gbnVsbDtcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNob3dFcnJvciA9IHRoaXMuc2hvd0Vycm9yO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIn0sIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wiLCB2YWxpZGF0aW9uczogXCJpc0VtYWlsXCIsIHZhbGlkYXRpb25FcnJvcjogXCJUaGlzIGlzIG5vdCBhbiBlbWFpbFwifSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgZXhwZWN0KHNob3dFcnJvcigpKS50b0JlKHRydWUpO1xuXG4gICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhUYWcoZm9ybSwgJ0lOUFVUJyk7XG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShpbnB1dCwge3RhcmdldDoge3ZhbHVlOiAnZm9vQGZvby5jb20nfX0pO1xuICAgIGV4cGVjdChzaG93RXJyb3IoKSkudG9CZShmYWxzZSk7XG5cbiAgICBqYXNtaW5lLkFqYXguaW5zdGFsbCgpO1xuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5zdWJtaXQoZm9ybS5nZXRET01Ob2RlKCkpOyAgICBcbiAgICBqYXNtaW5lLkFqYXgucmVxdWVzdHMubW9zdFJlY2VudCgpLnJlc3BvbmRXaXRoKHtcbiAgICAgIHN0YXR1czogNTAwLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICByZXNwb25zZVRleHQ6ICd7XCJmb29cIjogXCJFbWFpbCBhbHJlYWR5IGV4aXN0c1wifSdcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGV4cGVjdChzaG93RXJyb3IoKSkudG9CZSh0cnVlKTtcbiAgICAgIGphc21pbmUuQWpheC51bmluc3RhbGwoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9LCAwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBvciBmYWxzZSB3aGVuIGNhbGxpbmcgaXNQcmVzdGluZSgpIGRlcGVuZGluZyBvbiBpbnB1dCBoYXMgYmVlbiBcInRvdWNoZWRcIiBvciBub3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgXG4gICAgdmFyIGlzUHJpc3RpbmUgPSBudWxsO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXNQcmlzdGluZSA9IHRoaXMuaXNQcmlzdGluZTtcbiAgICAgIH0sXG4gICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMudXBkYXRlVmFsdWV9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHt1cmw6IFwiL3VzZXJzXCJ9LCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcIkFcIiwgdmFsdWU6IFwiZm9vXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBleHBlY3QoaXNQcmlzdGluZSgpKS50b0JlKHRydWUpO1xuICAgIHZhciBpbnB1dCA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKGZvcm0sICdJTlBVVCcpO1xuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5jaGFuZ2UoaW5wdXQsIHt0YXJnZXQ6IHt2YWx1ZTogJ2Zvbyd9fSk7XG4gICAgZXhwZWN0KGlzUHJpc3RpbmUoKSkudG9CZShmYWxzZSk7XG4gICAgXG4gIH0pO1xuXG5pdCgnc2hvdWxkIGFsbG93IGFuIHVuZGVmaW5lZCB2YWx1ZSB0byBiZSB1cGRhdGVkIHRvIGEgdmFsdWUnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCl9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBUZXN0Rm9ybSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0Rm9ybVwiLFxuICAgICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7dmFsdWU6IHVuZGVmaW5lZH07XG4gICAgICB9LFxuICAgICAgY2hhbmdlVmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgdmFsdWU6ICdmb28nXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHt1cmw6IFwiL3VzZXJzXCJ9LCBcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJBXCIsIHZhbHVlOiB0aGlzLnN0YXRlLnZhbHVlfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0Rm9ybSwgbnVsbClcbiAgICApO1xuXG4gICAgZm9ybS5jaGFuZ2VWYWx1ZSgpO1xuICAgIHZhciBpbnB1dCA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKGZvcm0sICdJTlBVVCcpO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgZXhwZWN0KGlucHV0LmdldERPTU5vZGUoKS52YWx1ZSkudG9CZSgnZm9vJyk7XG4gICAgICBkb25lKCk7XG4gICAgfSwgMCk7XG4gIH0pOyAgXG5cbml0KCdzaG91bGQgYmUgYWJsZSB0byBkeW5hbWljYWxseSBjaGFuZ2UgdmFsaWRhdGlvbnMnLCBmdW5jdGlvbiAoZG9uZSkge1xuXG4gICAgdmFyIGlzSW52YWxpZCA9IGZhbHNlO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCl9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBUZXN0Rm9ybSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0Rm9ybVwiLFxuICAgICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7dmFsdWU6ICdmb29AYmFyLmNvbScsIHZhbGlkYXRpb25zOiAnaXNFbWFpbCd9O1xuICAgICAgfSxcbiAgICAgIGNoYW5nZVZhbGlkYXRpb25zOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHZhbGlkYXRpb25zOiAnZXF1YWxzOmZvbydcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgc2V0SW52YWxpZDogZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zb2xlLmxvZygnUnVubmluZyBpdCEnKTtcbiAgICAgICAgaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wiLCBvbkludmFsaWQ6IHRoaXMuc2V0SW52YWxpZH0sIFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcIkFcIiwgdmFsaWRhdGlvbnM6IHRoaXMuc3RhdGUudmFsaWRhdGlvbnMsIHZhbHVlOiB0aGlzLnN0YXRlLnZhbHVlfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0Rm9ybSwgbnVsbClcbiAgICApO1xuXG4gICAgZm9ybS5jaGFuZ2VWYWxpZGF0aW9ucygpO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgZXhwZWN0KGlzSW52YWxpZCkudG9CZSh0cnVlKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9LCAwKTtcbiAgfSk7ICBcblxufSk7XG4iLCJ2YXIgRm9ybXN5ID0gcmVxdWlyZSgnLi8uLi9zcmMvbWFpbi5qcycpO1xuXG5kZXNjcmliZSgnRm9ybXN5JywgZnVuY3Rpb24gKCkge1xuXG4gIGRlc2NyaWJlKCdTZXR0aW5nIHVwIGEgZm9ybScsIGZ1bmN0aW9uICgpIHtcblxuICAgIGl0KCdzaG91bGQgcmVuZGVyIGEgZm9ybSBpbnRvIHRoZSBkb2N1bWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudCggUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwgbnVsbCkpO1xuICAgICAgZXhwZWN0KGZvcm0uZ2V0RE9NTm9kZSgpLnRhZ05hbWUpLnRvRXF1YWwoJ0ZPUk0nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2V0IGEgY2xhc3MgbmFtZSBpZiBwYXNzZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtjbGFzc05hbWU6IFwiZm9vXCJ9KSk7XG4gICAgICBleHBlY3QoZm9ybS5nZXRET01Ob2RlKCkuY2xhc3NOYW1lKS50b0VxdWFsKCdmb28nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgZm9yIG51bGwvdW5kZWZpbmVkIGNoaWxkcmVuJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICAgIGNoYW5nZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLmNoYW5nZVZhbHVlfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHZhciBtb2RlbCA9IG51bGw7XG4gICAgICB2YXIgVGVzdEZvcm0gPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdEZvcm1cIixcbiAgICAgICAgb25TdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICAgICAgICBtb2RlbCA9IGZvcm1Nb2RlbDtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvblN1Ym1pdDogIHRoaXMub25TdWJtaXR9LCBcbiAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImgxXCIsIG51bGwsIFwiVGVzdFwiKSwgXG4gICAgICAgICAgICAgIG51bGwsIFxuICAgICAgICAgICAgICB1bmRlZmluZWQsIFxuICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwibmFtZVwiLCB2YWx1ZTogJ2ZvbycgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdEZvcm0sIG51bGwpKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcbiAgICAgICAgZXhwZWN0KG1vZGVsKS50b0VxdWFsKHtuYW1lOiAnZm9vJ30pO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGZvciBpbnB1dHMgYmVpbmcgYWRkZWQgZHluYW1pY2FsbHknLCBmdW5jdGlvbiAoZG9uZSkge1xuXG4gICAgICB2YXIgaW5wdXRzID0gW107XG4gICAgICB2YXIgZm9yY2VVcGRhdGUgPSBudWxsO1xuICAgICAgdmFyIG1vZGVsID0gbnVsbDtcbiAgICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIG51bGwpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIFRlc3RGb3JtID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RGb3JtXCIsXG4gICAgICAgIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGZvcmNlVXBkYXRlID0gdGhpcy5mb3JjZVVwZGF0ZS5iaW5kKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblN1Ym1pdDogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgICAgICAgIG1vZGVsID0gZm9ybU1vZGVsO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gKCBcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvblN1Ym1pdDogdGhpcy5vblN1Ym1pdH0sIFxuICAgICAgICAgICAgICBpbnB1dHNcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudCggXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdEZvcm0sIG51bGwpIFxuICAgICAgKTtcblxuICAgICAgLy8gV2FpdCBiZWZvcmUgYWRkaW5nIHRoZSBpbnB1dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgaW5wdXRzLnB1c2goVGVzdElucHV0KHtcbiAgICAgICAgICBuYW1lOiAndGVzdCdcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGZvcmNlVXBkYXRlKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgIC8vIFdhaXQgZm9yIG5leHQgZXZlbnQgbG9vcCwgYXMgdGhhdCBkb2VzIHRoZSBmb3JtXG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcbiAgICAgICAgICAgIGV4cGVjdChtb2RlbC50ZXN0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0sIDApO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICB9LCAxMCk7XG5cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgZHluYW1pY2FsbHkgYWRkZWQgaW5wdXRzIHRvIHVwZGF0ZSB0aGUgZm9ybS1tb2RlbCcsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICAgIHZhciBpbnB1dHMgPSBbXTtcbiAgICAgIHZhciBmb3JjZVVwZGF0ZSA9IG51bGw7XG4gICAgICB2YXIgbW9kZWwgPSBudWxsO1xuICAgICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgICAgY2hhbmdlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMuY2hhbmdlVmFsdWV9KVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBUZXN0Rm9ybSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0Rm9ybVwiLFxuICAgICAgICBjb21wb25lbnRXaWxsTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBmb3JjZVVwZGF0ZSA9IHRoaXMuZm9yY2VVcGRhdGUuYmluZCh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWJtaXQ6IGZ1bmN0aW9uIChmb3JtTW9kZWwpIHtcbiAgICAgICAgICBtb2RlbCA9IGZvcm1Nb2RlbDtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuICggXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7b25TdWJtaXQ6IHRoaXMub25TdWJtaXR9LCBcbiAgICAgICAgICAgICAgaW5wdXRzXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RGb3JtLCBudWxsKSBcbiAgICAgICk7XG5cbiAgICAgIC8vIFdhaXQgYmVmb3JlIGFkZGluZyB0aGUgaW5wdXRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgIGlucHV0cy5wdXNoKFRlc3RJbnB1dCh7XG4gICAgICAgICAgbmFtZTogJ3Rlc3QnXG4gICAgICAgIH0pKTtcblxuICAgICAgICBmb3JjZVVwZGF0ZShmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAvLyBXYWl0IGZvciBuZXh0IGV2ZW50IGxvb3AsIGFzIHRoYXQgZG9lcyB0aGUgZm9ybVxuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKSwge3RhcmdldDoge3ZhbHVlOiAnZm9vJ319KTtcbiAgICAgICAgICAgIFRlc3RVdGlscy5TaW11bGF0ZS5zdWJtaXQoZm9ybS5nZXRET01Ob2RlKCkpO1xuICAgICAgICAgICAgZXhwZWN0KG1vZGVsLnRlc3QpLnRvQmUoJ2ZvbycpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0sIDApO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICB9LCAxMCk7XG5cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBkeW5hbWljYWxseSB1cGRhdGVkIGlucHV0IHRvIHVwZGF0ZSB0aGUgZm9ybS1tb2RlbCcsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICAgIHZhciBmb3JjZVVwZGF0ZSA9IG51bGw7XG4gICAgICB2YXIgbW9kZWwgPSBudWxsO1xuICAgICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgICAgY2hhbmdlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMuY2hhbmdlVmFsdWV9KVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdmFyIGlucHV0O1xuICAgICAgdmFyIFRlc3RGb3JtID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RGb3JtXCIsXG4gICAgICAgIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGZvcmNlVXBkYXRlID0gdGhpcy5mb3JjZVVwZGF0ZS5iaW5kKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblN1Ym1pdDogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgICAgICAgIG1vZGVsID0gZm9ybU1vZGVsO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpbnB1dCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJ0ZXN0XCIsIHZhbHVlOiAgdGhpcy5wcm9wcy52YWx1ZX0pO1xuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvblN1Ym1pdDogdGhpcy5vblN1Ym1pdH0sIFxuICAgICAgICAgICAgICBpbnB1dFxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdEZvcm0sIHt2YWx1ZTogXCJmb29cIn0pKTtcblxuICAgICAgLy8gV2FpdCBiZWZvcmUgY2hhbmdpbmcgdGhlIGlucHV0XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9ybS5zZXRQcm9wcyh7dmFsdWU6ICdiYXInfSk7XG5cbiAgICAgICAgZm9yY2VVcGRhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIG5leHQgZXZlbnQgbG9vcCwgYXMgdGhhdCBkb2VzIHRoZSBmb3JtXG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcbiAgICAgICAgICAgIGV4cGVjdChtb2RlbC50ZXN0KS50b0JlKCdiYXInKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9LCAwKTtcblxuICAgICAgICB9KTtcblxuICAgICAgfSwgMTApO1xuXG4gICAgfSk7XG5cblxuICAgIGl0KCdzaG91bGQgaW52YWxpZGF0ZSBhIHZhbGlkIGZvcm0gaWYgZHluYW1pY2FsbHkgaW5zZXJ0ZWQgaW5wdXQgaXMgaW52YWxpZCcsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICAgIHZhciBmb3JjZVVwZGF0ZSA9IG51bGw7XG4gICAgICB2YXIgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy5jaGFuZ2VWYWx1ZX0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG5cbiAgICAgIHZhciBpbnB1dHMgPSBbVGVzdElucHV0KHtcbiAgICAgICAgbmFtZTogJ3Rlc3QnLFxuICAgICAgICB2YWxpZGF0aW9uczogJ2lzRW1haWwnLFxuICAgICAgICB2YWx1ZTogJ2Zvb0BiYXIuY29tJ1xuICAgICAgfSldO1xuXG4gICAgICB2YXIgVGVzdEZvcm0gPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdEZvcm1cIixcbiAgICAgICAgY29tcG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZm9yY2VVcGRhdGUgPSB0aGlzLmZvcmNlVXBkYXRlLmJpbmQodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldEludmFsaWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gKCBcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvbkludmFsaWQ6IHRoaXMuc2V0SW52YWxpZH0sIFxuICAgICAgICAgICAgICBpbnB1dHNcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudCggXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdEZvcm0sIG51bGwpIFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGlzSW52YWxpZCkudG9CZShmYWxzZSk7XG5cbiAgICAgIGlucHV0cy5wdXNoKFRlc3RJbnB1dCh7XG4gICAgICAgIG5hbWU6ICd0ZXN0MicsXG4gICAgICAgIHZhbGlkYXRpb25zOiAnaXNFbWFpbCcsXG4gICAgICAgIHZhbHVlOiAnZm9vQGJhcidcbiAgICAgIH0pKTtcblxuXG4gICAgICBmb3JjZVVwZGF0ZShmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgLy8gV2FpdCBmb3IgbmV4dCBldmVudCBsb29wLCBhcyB0aGF0IGRvZXMgdGhlIGZvcm1cbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgVGVzdFV0aWxzLlNpbXVsYXRlLnN1Ym1pdChmb3JtLmdldERPTU5vZGUoKSk7XG4gICAgICAgICAgZXhwZWN0KGlzSW52YWxpZCkudG9CZSh0cnVlKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0sIDApO1xuXG4gICAgICB9KTtcblxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgdHJpZ2dlciBvbkNoYW5nZSB3aGVuIGZvcm0gaXMgbW91bnRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBoYXNDaGFuZ2VkID0gamFzbWluZS5jcmVhdGVTcHkoJ29uQ2hhbmdlJyk7XG4gICAgICB2YXIgVGVzdEZvcm0gPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdEZvcm1cIixcbiAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYXNDaGFuZ2VkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7b25DaGFuZ2U6IHRoaXMub25DaGFuZ2V9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0Rm9ybSwgbnVsbCkpO1xuICAgICAgZXhwZWN0KGhhc0NoYW5nZWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRyaWdnZXIgb25DaGFuZ2Ugd2hlbiBmb3JtIGVsZW1lbnQgaXMgY2hhbmdlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBoYXNDaGFuZ2VkID0gamFzbWluZS5jcmVhdGVTcHkoJ29uQ2hhbmdlJyk7XG4gICAgICB2YXIgTXlJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJNeUlucHV0XCIsXG4gICAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgVGVzdEZvcm0gPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdEZvcm1cIixcbiAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYXNDaGFuZ2VkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7b25DaGFuZ2U6IHRoaXMub25DaGFuZ2V9LCBcbiAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChNeUlucHV0LCB7bmFtZTogXCJmb29cIn0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0Rm9ybSwgbnVsbCkpO1xuICAgICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKSwge3RhcmdldDoge3ZhbHVlOiAnYmFyJ319KTtcbiAgICAgIGV4cGVjdChoYXNDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRyaWdnZXIgb25DaGFuZ2Ugd2hlbiBuZXcgaW5wdXQgaXMgYWRkZWQgdG8gZm9ybScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgICB2YXIgaGFzQ2hhbmdlZCA9IGphc21pbmUuY3JlYXRlU3B5KCdvbkNoYW5nZScpO1xuICAgICAgdmFyIGlucHV0cyA9IFtdO1xuICAgICAgdmFyIGZvcmNlVXBkYXRlID0gbnVsbDtcbiAgICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICAgIGNoYW5nZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLmNoYW5nZVZhbHVlfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgVGVzdEZvcm0gPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdEZvcm1cIixcbiAgICAgICAgY29tcG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZm9yY2VVcGRhdGUgPSB0aGlzLmZvcmNlVXBkYXRlLmJpbmQodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFzQ2hhbmdlZCgpO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gKCBcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvbkNoYW5nZTogdGhpcy5vbkNoYW5nZX0sIFxuICAgICAgICAgICAgICBpbnB1dHNcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudCggXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdEZvcm0sIG51bGwpIFxuICAgICAgKTtcblxuICAgICAgLy8gV2FpdCBiZWZvcmUgYWRkaW5nIHRoZSBpbnB1dFxuICAgICAgaW5wdXRzLnB1c2goVGVzdElucHV0KHtcbiAgICAgICAgbmFtZTogJ3Rlc3QnXG4gICAgICB9KSk7XG5cbiAgICAgIGZvcmNlVXBkYXRlKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAvLyBXYWl0IGZvciBuZXh0IGV2ZW50IGxvb3AsIGFzIHRoYXQgZG9lcyB0aGUgZm9ybVxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBleHBlY3QoaGFzQ2hhbmdlZCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgIH0pO1xuXG4gICAgfSk7XG5cbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1VwZGF0ZSBhIGZvcm0nLCBmdW5jdGlvbiAoKSB7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGVsZW1lbnRzIHRvIGNoZWNrIGlmIHRoZSBmb3JtIGlzIGRpc2FibGVkJywgZnVuY3Rpb24gKGRvbmUpIHtcblxuICAgICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKX0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIFRlc3RGb3JtID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RGb3JtXCIsXG4gICAgICAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7ZGlzYWJsZWQ6IHRydWV9O1xuICAgICAgICB9LFxuICAgICAgICBlbmFibGVGb3JtOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuICggXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7b25DaGFuZ2U6IHRoaXMub25DaGFuZ2UsIGRpc2FibGVkOiB0aGlzLnN0YXRlLmRpc2FibGVkfSwgXG4gICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIn0pXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RGb3JtLCBudWxsKSBcbiAgICAgICk7XG5cbiAgICAgIHZhciBpbnB1dCA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRDb21wb25lbnRXaXRoVHlwZShmb3JtLCBUZXN0SW5wdXQpO1xuICAgICAgZXhwZWN0KGlucHV0LmlzRm9ybURpc2FibGVkKCkpLnRvQmUodHJ1ZSk7XG4gICAgICBmb3JtLmVuYWJsZUZvcm0oKTtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBleHBlY3QoaW5wdXQuaXNGb3JtRGlzYWJsZWQoKSkudG9CZShmYWxzZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIDApO1xuXG4gICAgfSk7XG5cbiAgfSk7XG5cbn0pO1xuIiwidmFyIEZvcm1zeSA9IHJlcXVpcmUoJy4vLi4vc3JjL21haW4uanMnKTtcblxuZGVzY3JpYmUoJ0FqYXgnLCBmdW5jdGlvbigpIHtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBqYXNtaW5lLkFqYXguaW5zdGFsbCgpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIGphc21pbmUuQWpheC51bmluc3RhbGwoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwb3N0IHRvIGEgZ2l2ZW4gdXJsIGlmIHBhc3NlZCcsIGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHt1cmw6IFwiL3VzZXJzXCJ9XG4gICAgICApXG4gICAgKTtcbiAgICBcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcbiAgICBleHBlY3QoamFzbWluZS5BamF4LnJlcXVlc3RzLm1vc3RSZWNlbnQoKS51cmwpLnRvQmUoJy91c2VycycpO1xuICAgIGV4cGVjdChqYXNtaW5lLkFqYXgucmVxdWVzdHMubW9zdFJlY2VudCgpLm1ldGhvZCkudG9CZSgnUE9TVCcpO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHV0IHRvIGEgZ2l2ZW4gdXJsIGlmIHBhc3NlZCBhIG1ldGhvZCBhdHRyaWJ1dGUnLCBmdW5jdGlvbiAoKSB7XG5cbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wiLCBtZXRob2Q6IFwiUFVUXCJ9XG4gICAgICApXG4gICAgKTtcbiAgICBcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcbiAgICBleHBlY3QoamFzbWluZS5BamF4LnJlcXVlc3RzLm1vc3RSZWNlbnQoKS51cmwpLnRvQmUoJy91c2VycycpO1xuICAgIGV4cGVjdChqYXNtaW5lLkFqYXgucmVxdWVzdHMubW9zdFJlY2VudCgpLm1ldGhvZCkudG9CZSgnUFVUJyk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIHgtd3d3LWZvcm0tdXJsZW5jb2RlZCBhcyBjb250ZW50VHlwZSB3aGVuIHVybGVuY29kZWQgaXMgc2V0IGFzIGNvbnRlbnRUeXBlJywgZnVuY3Rpb24gKCkge1xuXG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIiwgY29udGVudFR5cGU6IFwidXJsZW5jb2RlZFwifVxuICAgICAgKVxuICAgICk7XG4gICAgXG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLnN1Ym1pdChmb3JtLmdldERPTU5vZGUoKSk7XG4gICAgZXhwZWN0KGphc21pbmUuQWpheC5yZXF1ZXN0cy5tb3N0UmVjZW50KCkuY29udGVudFR5cGUoKSkudG9CZSgnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBydW4gYW4gb25TdWNjZXNzIGhhbmRsZXIsIGlmIHBhc3NlZCBhbmQgYWpheCBpcyBzdWNjZXNzZnVsbC4gRmlyc3QgYXJndW1lbnQgaXMgZGF0YSBmcm9tIHNlcnZlcicsIGZ1bmN0aW9uIChkb25lKSB7XG4gXG4gICAgdmFyIG9uU3VjY2VzcyA9IGphc21pbmUuY3JlYXRlU3B5KFwic3VjY2Vzc1wiKTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wiLCBvblN1Y2Nlc3M6IG9uU3VjY2Vzc31cbiAgICAgIClcbiAgICApO1xuICAgIFxuICAgIGphc21pbmUuQWpheC5zdHViUmVxdWVzdCgnL3VzZXJzJykuYW5kUmV0dXJuKHtcbiAgICAgIHN0YXR1czogMjAwLFxuICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIHJlc3BvbnNlVGV4dDogJ3t9J1xuICAgIH0pO1xuXG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLnN1Ym1pdChmb3JtLmdldERPTU5vZGUoKSk7XG5cbiAgICAvLyBTaW5jZSBhamF4IGlzIHJldHVybmVkIGFzIGEgcHJvbWlzZSAoYXN5bmMpLCBtb3ZlIGFzc2VydGlvblxuICAgIC8vIHRvIGVuZCBvZiBldmVudCBsb29wXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBleHBlY3Qob25TdWNjZXNzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7fSk7XG4gICAgICBkb25lKCk7XG4gICAgfSwgMCk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZG8gYWpheCByZXF1ZXN0IGlmIG9uU3VibWl0IGhhbmRsZXIgaXMgcGFzc2VkLCBidXQgcGFzcyB0aGUgbW9kZWwgYXMgZmlyc3QgYXJndW1lbnQgdG8gb25TdWJtaXQgaGFuZGxlcicsIGZ1bmN0aW9uICgpIHtcbiAgICBcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7b25TdWJtaXQ6IG9uU3VibWl0fSwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiYmFyXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcblxuICAgIGV4cGVjdChqYXNtaW5lLkFqYXgucmVxdWVzdHMuY291bnQoKSkudG9CZSgwKTtcblxuICAgIGZ1bmN0aW9uIG9uU3VibWl0IChkYXRhKSB7XG4gICAgICBleHBlY3QoZGF0YSkudG9FcXVhbCh7XG4gICAgICAgIGZvbzogJ2JhcidcbiAgICAgIH0pO1xuICAgIH1cblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHRyaWdnZXIgYW4gb25TdWJtaXR0ZWQgaGFuZGxlciwgaWYgcGFzc2VkIGFuZCB0aGUgc3VibWl0IGhhcyByZXNwb25kZWQgd2l0aCBTVUNDRVNTJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICBcbiAgICB2YXIgb25TdWJtaXR0ZWQgPSBqYXNtaW5lLmNyZWF0ZVNweShcInN1Ym1pdHRlZFwiKTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wiLCBvblN1Ym1pdHRlZDogb25TdWJtaXR0ZWR9XG4gICAgICApXG4gICAgKTtcbiAgICBcbiAgICBqYXNtaW5lLkFqYXguc3R1YlJlcXVlc3QoJy91c2VycycpLmFuZFJldHVybih7XG4gICAgICBzdGF0dXM6IDIwMCxcbiAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICByZXNwb25zZVRleHQ6ICd7fSdcbiAgICB9KTtcblxuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5zdWJtaXQoZm9ybS5nZXRET01Ob2RlKCkpO1xuXG4gICAgLy8gU2luY2UgYWpheCBpcyByZXR1cm5lZCBhcyBhIHByb21pc2UgKGFzeW5jKSwgbW92ZSBhc3NlcnRpb25cbiAgICAvLyB0byBlbmQgb2YgZXZlbnQgbG9vcFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgZXhwZWN0KG9uU3VibWl0dGVkKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBkb25lKCk7XG4gICAgfSwgMCk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0cmlnZ2VyIGFuIG9uU3VibWl0dGVkIGhhbmRsZXIsIGlmIHBhc3NlZCBhbmQgdGhlIHN1Ym1pdCBoYXMgcmVzcG9uZGVkIHdpdGggRVJST1InLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIFxuICAgIHZhciBvblN1Ym1pdHRlZCA9IGphc21pbmUuY3JlYXRlU3B5KFwic3VibWl0dGVkXCIpO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHt1cmw6IFwiL3VzZXJzXCIsIG9uU3VibWl0dGVkOiBvblN1Ym1pdHRlZH1cbiAgICAgIClcbiAgICApO1xuICAgIFxuICAgIGphc21pbmUuQWpheC5zdHViUmVxdWVzdCgnL3VzZXJzJykuYW5kUmV0dXJuKHtcbiAgICAgIHN0YXR1czogNTAwLFxuICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIHJlc3BvbnNlVGV4dDogJ3t9J1xuICAgIH0pO1xuXG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLnN1Ym1pdChmb3JtLmdldERPTU5vZGUoKSk7XG5cbiAgICAvLyBTaW5jZSBhamF4IGlzIHJldHVybmVkIGFzIGEgcHJvbWlzZSAoYXN5bmMpLCBtb3ZlIGFzc2VydGlvblxuICAgIC8vIHRvIGVuZCBvZiBldmVudCBsb29wXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBleHBlY3Qob25TdWJtaXR0ZWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9LCAwKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHRyaWdnZXIgYW4gb25FcnJvciBoYW5kbGVyLCBpZiBwYXNzZWQgYW5kIHRoZSBzdWJtaXQgaGFzIHJlc3BvbmRlZCB3aXRoIEVSUk9SJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICBcbiAgICB2YXIgb25FcnJvciA9IGphc21pbmUuY3JlYXRlU3B5KFwiZXJyb3JcIik7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIiwgb25FcnJvcjogb25FcnJvcn1cbiAgICAgIClcbiAgICApO1xuICAgIFxuICAgIC8vIERvIG5vdCByZXR1cm4gYW55IGVycm9yIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGlucHV0c1xuICAgIGphc21pbmUuQWpheC5zdHViUmVxdWVzdCgnL3VzZXJzJykuYW5kUmV0dXJuKHtcbiAgICAgIHN0YXR1czogNTAwLFxuICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIHJlc3BvbnNlVGV4dDogJ3t9J1xuICAgIH0pO1xuXG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLnN1Ym1pdChmb3JtLmdldERPTU5vZGUoKSk7XG5cbiAgICAvLyBTaW5jZSBhamF4IGlzIHJldHVybmVkIGFzIGEgcHJvbWlzZSAoYXN5bmMpLCBtb3ZlIGFzc2VydGlvblxuICAgIC8vIHRvIGVuZCBvZiBldmVudCBsb29wXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBleHBlY3Qob25FcnJvcikudG9IYXZlQmVlbkNhbGxlZFdpdGgoe30pO1xuICAgICAgZG9uZSgpO1xuICAgIH0sIDApO1xuXG4gIH0pO1xuXG59KTtcbiIsInZhciBGb3Jtc3kgPSByZXF1aXJlKCcuLy4uL3NyYy9tYWluLmpzJyk7XG5cbmRlc2NyaWJlKCdWYWxpZGF0aW9uJywgZnVuY3Rpb24oKSB7XG5cbiAgaXQoJ3Nob3VsZCB0cmlnZ2VyIGFuIG9uVmFsaWQgaGFuZGxlciwgaWYgcGFzc2VkLCB3aGVuIGZvcm0gaXMgdmFsaWQnLCBmdW5jdGlvbiAoKSB7XG5cbiAgICB2YXIgb25WYWxpZCA9IGphc21pbmUuY3JlYXRlU3B5KCd2YWxpZCcpO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7b25WYWxpZDogb25WYWxpZH0sIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHJlcXVpcmVkOiB0cnVlfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhUYWcoZm9ybSwgJ0lOUFVUJyk7XG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShpbnB1dCwge3RhcmdldDoge3ZhbHVlOiAnZm9vJ319KTtcbiAgICBleHBlY3Qob25WYWxpZCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdHJpZ2dlciBhbiBvbkludmFsaWQgaGFuZGxlciwgaWYgcGFzc2VkLCB3aGVuIGZvcm0gaXMgaW52YWxpZCcsIGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBvbkludmFsaWQgPSBqYXNtaW5lLmNyZWF0ZVNweSgnaW52YWxpZCcpO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7b25WYWxpZDogb25JbnZhbGlkfSwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKGlucHV0LCB7dGFyZ2V0OiB7dmFsdWU6ICcnfX0pO1xuICAgIGV4cGVjdChvbkludmFsaWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICB9KTtcblxuICBpdCgnUlVMRTogaXNFbWFpbCcsIGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBpc1ZhbGlkID0gamFzbWluZS5jcmVhdGVTcHkoJ3ZhbGlkJyk7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgaXNWYWxpZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCBudWxsLCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wiLCB2YWx1ZTogXCJmb29cIiwgdmFsaWRhdGlvbnM6IFwiaXNFbWFpbFwifSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhUYWcoZm9ybSwgJ0lOUFVUJyk7XG4gICAgZXhwZWN0KGlzVmFsaWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShpbnB1dCwge3RhcmdldDoge3ZhbHVlOiAnZm9vQGZvby5jb20nfX0pO1xuICAgIGV4cGVjdChpc1ZhbGlkKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgfSk7XG5cbiAgaXQoJ1JVTEU6IGlzTnVtZXJpYycsIGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBpc1ZhbGlkID0gamFzbWluZS5jcmVhdGVTcHkoJ3ZhbGlkJyk7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgaXNWYWxpZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCBudWxsLCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wiLCB2YWx1ZTogXCJmb29cIiwgdmFsaWRhdGlvbnM6IFwiaXNOdW1lcmljXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICBleHBlY3QoaXNWYWxpZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKGlucHV0LCB7dGFyZ2V0OiB7dmFsdWU6ICcxMjMnfX0pO1xuICAgIGV4cGVjdChpc1ZhbGlkKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgfSk7XG5cbiAgaXQoJ1JVTEU6IGlzTnVtZXJpYyAoYWN0dWFsIG51bWJlciknLCBmdW5jdGlvbiAoKSB7XG5cbiAgICB2YXIgaXNWYWxpZCA9IGphc21pbmUuY3JlYXRlU3B5KCd2YWxpZCcpO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKE51bWJlcihldmVudC50YXJnZXQudmFsdWUpKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgaXNWYWxpZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCBudWxsLCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wiLCB2YWx1ZTogXCJmb29cIiwgdmFsaWRhdGlvbnM6IFwiaXNOdW1lcmljXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICBleHBlY3QoaXNWYWxpZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKGlucHV0LCB7dGFyZ2V0OiB7dmFsdWU6ICcxMjMnfX0pO1xuICAgIGV4cGVjdChpc1ZhbGlkKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgfSk7XG5cbiAgaXQoJ1JVTEU6IGlzTnVtZXJpYyAoc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZmxvYXQpJywgZnVuY3Rpb24gKCkge1xuXG4gICAgdmFyIGlzVmFsaWQgPSBqYXNtaW5lLmNyZWF0ZVNweSgndmFsaWQnKTtcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBpc1ZhbGlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMudXBkYXRlVmFsdWV9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIG51bGwsIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wiLCB2YWxpZGF0aW9uczogXCJpc051bWVyaWNcIn0pXG4gICAgICApXG4gICAgKTtcblxuICAgIHZhciBpbnB1dCA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKGZvcm0sICdJTlBVVCcpO1xuICAgIGV4cGVjdChpc1ZhbGlkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5jaGFuZ2UoaW5wdXQsIHt0YXJnZXQ6IHt2YWx1ZTogJzEuNSd9fSk7XG4gICAgZXhwZWN0KGlzVmFsaWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICB9KTtcblxuICBpdCgnUlVMRTogaXNOdW1lcmljIGlzIGZhbHNlIChzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW52YWxpZCBmbG9hdCknLCBmdW5jdGlvbiAoKSB7XG5cbiAgICB2YXIgaXNWYWxpZCA9IGphc21pbmUuY3JlYXRlU3B5KCd2YWxpZCcpO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgIGlzVmFsaWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwgbnVsbCwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCIsIHZhbGlkYXRpb25zOiBcImlzTnVtZXJpY1wifSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhUYWcoZm9ybSwgJ0lOUFVUJyk7XG4gICAgZXhwZWN0KGlzVmFsaWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShpbnB1dCwge3RhcmdldDoge3ZhbHVlOiAnMS4nfX0pO1xuICAgIGV4cGVjdChpc1ZhbGlkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gIH0pO1xuXG59KTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX3ZhbHVlOiB0aGlzLnByb3BzLnZhbHVlID8gdGhpcy5wcm9wcy52YWx1ZSA6ICcnLFxuICAgICAgX2lzVmFsaWQ6IHRydWUsXG4gICAgICBfaXNQcmlzdGluZTogdHJ1ZVxuICAgIH07XG4gIH0sXG4gIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkge1xuXG4gICAgdmFyIGNvbmZpZ3VyZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbnModGhpcy5wcm9wcy52YWxpZGF0aW9ucywgdGhpcy5wcm9wcy5yZXF1aXJlZCk7XG4gICAgICB0aGlzLnByb3BzLl9hdHRhY2hUb0Zvcm0odGhpcyk7XG4gICAgfS5iaW5kKHRoaXMpO1xuXG4gICAgaWYgKCF0aGlzLnByb3BzLm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRm9ybSBJbnB1dCByZXF1aXJlcyBhIG5hbWUgcHJvcGVydHkgd2hlbiB1c2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnByb3BzLl9hdHRhY2hUb0Zvcm0pIHtcbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW91bnRlZCgpKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5fYXR0YWNoVG9Gb3JtKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3JtIE1peGluIHJlcXVpcmVzIGNvbXBvbmVudCB0byBiZSBuZXN0ZWQgaW4gYSBGb3JtJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uZmlndXJlKCk7XG4gICAgICB9LmJpbmQodGhpcyksIDApO1xuICAgIH1cbiAgICBjb25maWd1cmUoKTtcblxuICB9LFxuXG4gIC8vIFdlIGhhdmUgdG8gbWFrZSB0aGUgdmFsaWRhdGUgbWV0aG9kIGlzIGtlcHQgd2hlbiBuZXcgcHJvcHMgYXJlIGFkZGVkXG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uIChuZXh0UHJvcHMpIHtcbiAgICBuZXh0UHJvcHMuX2F0dGFjaFRvRm9ybSA9IHRoaXMucHJvcHMuX2F0dGFjaFRvRm9ybTtcbiAgICBuZXh0UHJvcHMuX2RldGFjaEZyb21Gb3JtID0gdGhpcy5wcm9wcy5fZGV0YWNoRnJvbUZvcm07XG4gICAgbmV4dFByb3BzLl92YWxpZGF0ZSA9IHRoaXMucHJvcHMuX3ZhbGlkYXRlO1xuICAgIHRoaXMuc2V0VmFsaWRhdGlvbnMobmV4dFByb3BzLnZhbGlkYXRpb25zLCBuZXh0UHJvcHMucmVxdWlyZWQpO1xuICB9LFxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZTogZnVuY3Rpb24gKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG5cbiAgICB2YXIgaXNWYWx1ZUNoYW5nZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMucHJvcHMudmFsdWUgIT09IHByZXZQcm9wcy52YWx1ZSAmJiAoXG4gICAgICAgICAgdGhpcy5zdGF0ZS5fdmFsdWUgPT09IHByZXZQcm9wcy52YWx1ZSB8fFxuXG4gICAgICAgICAgLy8gU2luY2UgdW5kZWZpbmVkIGlzIGNvbnZlcnRlZCB0byBlbXB0eSBzdHJpbmcgd2UgaGF2ZSB0b1xuICAgICAgICAgIC8vIGNoZWNrIHRoYXQgc3BlY2lmaWNhbGx5XG4gICAgICAgICAgKHRoaXMuc3RhdGUuX3ZhbHVlID09PSAnJyAmJiBwcmV2UHJvcHMudmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgIH0uYmluZCh0aGlzKTtcblxuXG4gICAgLy8gSWYgdmFsaWRhdGlvbnMgaGFzIGNoYW5nZWQgb3Igc29tZXRoaW5nIG91dHNpZGUgY2hhbmdlcyBcbiAgICAvLyB0aGUgdmFsdWUsIHNldCB0aGUgdmFsdWUgYWdhaW4gcnVubmluZyBhIHZhbGlkYXRpb25cblxuICAgIGlmIChwcmV2UHJvcHMudmFsaWRhdGlvbnMgIT09IHRoaXMucHJvcHMudmFsaWRhdGlvbnMgfHwgaXNWYWx1ZUNoYW5nZWQoKSkge1xuICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLnByb3BzLnZhbHVlIHx8ICcnKTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gRGV0YWNoIGl0IHdoZW4gY29tcG9uZW50IHVubW91bnRzXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5wcm9wcy5fZGV0YWNoRnJvbUZvcm0odGhpcyk7XG4gIH0sXG5cbiAgc2V0VmFsaWRhdGlvbnM6IGZ1bmN0aW9uICh2YWxpZGF0aW9ucywgcmVxdWlyZWQpIHtcblxuICAgIC8vIEFkZCB2YWxpZGF0aW9ucyB0byB0aGUgc3RvcmUgaXRzZWxmIGFzIHRoZSBwcm9wcyBvYmplY3QgY2FuIG5vdCBiZSBtb2RpZmllZFxuICAgIHRoaXMuX3ZhbGlkYXRpb25zID0gdmFsaWRhdGlvbnMgfHwgJyc7XG5cbiAgICBpZiAocmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb25zID0gdmFsaWRhdGlvbnMgPyB2YWxpZGF0aW9ucyArICcsJyA6ICcnO1xuICAgICAgdGhpcy5fdmFsaWRhdGlvbnMgKz0gJ2lzVmFsdWUnO1xuICAgIH1cblxuICB9LFxuXG4gIC8vIFdlIHZhbGlkYXRlIGFmdGVyIHRoZSB2YWx1ZSBoYXMgYmVlbiBzZXRcbiAgc2V0VmFsdWU6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgX3ZhbHVlOiB2YWx1ZSxcbiAgICAgIF9pc1ByaXN0aW5lOiBmYWxzZVxuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMucHJvcHMuX3ZhbGlkYXRlKHRoaXMpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0sXG4gIHJlc2V0VmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF92YWx1ZTogJycsXG4gICAgICBfaXNQcmlzdGluZTogdHJ1ZVxuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMucHJvcHMuX3ZhbGlkYXRlKHRoaXMpO1xuICAgIH0pO1xuICB9LFxuICBnZXRWYWx1ZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLl92YWx1ZTtcbiAgfSxcbiAgaGFzVmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5fdmFsdWUgIT09ICcnO1xuICB9LFxuICBnZXRFcnJvck1lc3NhZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgfHwgdGhpcy5zaG93UmVxdWlyZWQoKSA/IG51bGwgOiB0aGlzLnN0YXRlLl9zZXJ2ZXJFcnJvciB8fCB0aGlzLnByb3BzLnZhbGlkYXRpb25FcnJvcjtcbiAgfSxcbiAgaXNGb3JtRGlzYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5faXNGb3JtRGlzYWJsZWQoKTtcbiAgfSxcbiAgaXNWYWxpZDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLl9pc1ZhbGlkO1xuICB9LFxuICBpc1ByaXN0aW5lOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuX2lzUHJpc3RpbmU7XG4gIH0sXG4gIGlzUmVxdWlyZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gISF0aGlzLnByb3BzLnJlcXVpcmVkO1xuICB9LFxuICBzaG93UmVxdWlyZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1JlcXVpcmVkKCkgJiYgdGhpcy5zdGF0ZS5fdmFsdWUgPT09ICcnO1xuICB9LFxuICBzaG93RXJyb3I6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMuc2hvd1JlcXVpcmVkKCkgJiYgIXRoaXMuc3RhdGUuX2lzVmFsaWQ7XG4gIH1cbn07XG4iLCJ2YXIgUmVhY3QgPSBnbG9iYWwuUmVhY3QgfHwgcmVxdWlyZSgncmVhY3QnKTtcbnZhciBGb3Jtc3kgPSB7fTtcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuL3ZhbGlkYXRpb25SdWxlcy5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscy5qcycpO1xudmFyIE1peGluID0gcmVxdWlyZSgnLi9NaXhpbi5qcycpO1xudmFyIG9wdGlvbnMgPSB7fTtcblxuRm9ybXN5Lk1peGluID0gTWl4aW47XG5cbkZvcm1zeS5kZWZhdWx0cyA9IGZ1bmN0aW9uIChwYXNzZWRPcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBwYXNzZWRPcHRpb25zO1xufTtcblxuRm9ybXN5LmFkZFZhbGlkYXRpb25SdWxlID0gZnVuY3Rpb24gKG5hbWUsIGZ1bmMpIHtcbiAgdmFsaWRhdGlvblJ1bGVzW25hbWVdID0gZnVuYztcbn07XG5cbkZvcm1zeS5Gb3JtID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIkZvcm1cIixcbiAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVmFsaWQ6IHRydWUsXG4gICAgICBpc1N1Ym1pdHRpbmc6IGZhbHNlLFxuICAgICAgY2FuQ2hhbmdlOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gKCkge30sXG4gICAgICBvbkVycm9yOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uU3VibWl0OiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uVmFsaWQ6IGZ1bmN0aW9uICgpIHt9LFxuICAgICAgb25JbnZhbGlkOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiAoKSB7fVxuICAgIH07XG4gIH0sXG5cbiAgLy8gQWRkIGEgbWFwIHRvIHN0b3JlIHRoZSBpbnB1dHMgb2YgdGhlIGZvcm0sIGEgbW9kZWwgdG8gc3RvcmVcbiAgLy8gdGhlIHZhbHVlcyBvZiB0aGUgZm9ybSBhbmQgcmVnaXN0ZXIgY2hpbGQgaW5wdXRzXG4gIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5wdXRzID0ge307XG4gICAgdGhpcy5tb2RlbCA9IHt9O1xuICAgIHRoaXMucmVnaXN0ZXJJbnB1dHModGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gIH0sXG5cbiAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZhbGlkYXRlRm9ybSgpO1xuICB9LFxuXG4gIGNvbXBvbmVudFdpbGxVcGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5wdXRLZXlzID0gT2JqZWN0LmtleXModGhpcy5pbnB1dHMpO1xuXG4gICAgLy8gVGhlIHVwZGF0ZWQgY2hpbGRyZW4gYXJyYXkgaXMgbm90IGF2YWlsYWJsZSBoZXJlIGZvciBzb21lIHJlYXNvbixcbiAgICAvLyB3ZSBuZWVkIHRvIHdhaXQgZm9yIG5leHQgZXZlbnQgbG9vcFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAvLyBUaGUgY29tcG9uZW50IG1pZ2h0IGhhdmUgYmVlbiB1bm1vdW50ZWQgb24gYW5cbiAgICAgIC8vIHVwZGF0ZVxuICAgICAgaWYgKHRoaXMuaXNNb3VudGVkKCkpIHtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVySW5wdXRzKHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuXG4gICAgICAgIHZhciBuZXdJbnB1dEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmlucHV0cyk7XG4gICAgICAgIGlmICh1dGlscy5hcnJheXNEaWZmZXIoaW5wdXRLZXlzLCBuZXdJbnB1dEtleXMpKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUZvcm0oKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9LmJpbmQodGhpcyksIDApO1xuICB9LFxuXG4gIC8vIFVwZGF0ZSBtb2RlbCwgc3VibWl0IHRvIHVybCBwcm9wIGFuZCBzZW5kIHRoZSBtb2RlbFxuICBzdWJtaXQ6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyBUcmlnZ2VyIGZvcm0gYXMgbm90IHByaXN0aW5lLlxuICAgIC8vIElmIGFueSBpbnB1dHMgaGF2ZSBub3QgYmVlbiB0b3VjaGVkIHlldCB0aGlzIHdpbGwgbWFrZSB0aGVtIGRpcnR5XG4gICAgLy8gc28gdmFsaWRhdGlvbiBiZWNvbWVzIHZpc2libGUgKGlmIGJhc2VkIG9uIGlzUHJpc3RpbmUpXG4gICAgdGhpcy5zZXRGb3JtUHJpc3RpbmUoZmFsc2UpO1xuXG4gICAgLy8gVG8gc3VwcG9ydCB1c2UgY2FzZXMgd2hlcmUgbm8gYXN5bmMgb3IgcmVxdWVzdCBvcGVyYXRpb24gaXMgbmVlZGVkLlxuICAgIC8vIFRoZSBcIm9uU3VibWl0XCIgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggdGhlIG1vZGVsIGUuZy4ge2ZpZWxkTmFtZTogXCJteVZhbHVlXCJ9LFxuICAgIC8vIGlmIHdhbnRpbmcgdG8gcmVzZXQgdGhlIGVudGlyZSBmb3JtIHRvIG9yaWdpbmFsIHN0YXRlLCB0aGUgc2Vjb25kIHBhcmFtIGlzIGEgY2FsbGJhY2sgZm9yIHRoaXMuXG4gICAgaWYgKCF0aGlzLnByb3BzLnVybCkge1xuICAgICAgdGhpcy51cGRhdGVNb2RlbCgpO1xuICAgICAgdGhpcy5wcm9wcy5vblN1Ym1pdCh0aGlzLm1hcE1vZGVsKCksIHRoaXMucmVzZXRNb2RlbCwgdGhpcy51cGRhdGVJbnB1dHNXaXRoRXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzU3VibWl0dGluZzogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wcy5vblN1Ym1pdCh0aGlzLm1hcE1vZGVsKCksIHRoaXMucmVzZXRNb2RlbCwgdGhpcy51cGRhdGVJbnB1dHNXaXRoRXJyb3IpO1xuXG4gICAgdmFyIGhlYWRlcnMgPSAoT2JqZWN0LmtleXModGhpcy5wcm9wcy5oZWFkZXJzKS5sZW5ndGggJiYgdGhpcy5wcm9wcy5oZWFkZXJzKSB8fCBvcHRpb25zLmhlYWRlcnMgfHwge307XG5cbiAgICB2YXIgbWV0aG9kID0gdGhpcy5wcm9wcy5tZXRob2QgJiYgdXRpbHMuYWpheFt0aGlzLnByb3BzLm1ldGhvZC50b0xvd2VyQ2FzZSgpXSA/IHRoaXMucHJvcHMubWV0aG9kLnRvTG93ZXJDYXNlKCkgOiAncG9zdCc7XG4gICAgdXRpbHMuYWpheFttZXRob2RdKHRoaXMucHJvcHMudXJsLCB0aGlzLm1hcE1vZGVsKCksIHRoaXMucHJvcHMuY29udGVudFR5cGUgfHwgb3B0aW9ucy5jb250ZW50VHlwZSB8fCAnanNvbicsIGhlYWRlcnMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblN1Y2Nlc3MocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLnByb3BzLm9uU3VibWl0dGVkKCk7XG4gICAgICB9LmJpbmQodGhpcykpXG4gICAgICAuY2F0Y2godGhpcy5mYWlsU3VibWl0KTtcbiAgfSxcblxuICBtYXBNb2RlbDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLm1hcHBpbmcgPyB0aGlzLnByb3BzLm1hcHBpbmcodGhpcy5tb2RlbCkgOiB0aGlzLm1vZGVsO1xuICB9LFxuXG4gIC8vIEdvZXMgdGhyb3VnaCBhbGwgcmVnaXN0ZXJlZCBjb21wb25lbnRzIGFuZFxuICAvLyB1cGRhdGVzIHRoZSBtb2RlbCB2YWx1ZXNcbiAgdXBkYXRlTW9kZWw6IGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmlucHV0cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuaW5wdXRzW25hbWVdO1xuICAgICAgdGhpcy5tb2RlbFtuYW1lXSA9IGNvbXBvbmVudC5zdGF0ZS5fdmFsdWU7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfSxcblxuICAvLyBSZXNldCBlYWNoIGtleSBpbiB0aGUgbW9kZWwgdG8gdGhlIG9yaWdpbmFsIC8gaW5pdGlhbCB2YWx1ZVxuICByZXNldE1vZGVsOiBmdW5jdGlvbiAoKSB7XG4gICAgT2JqZWN0LmtleXModGhpcy5pbnB1dHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHRoaXMuaW5wdXRzW25hbWVdLnJlc2V0VmFsdWUoKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmFsaWRhdGVGb3JtKCk7XG4gIH0sXG5cbiAgLy8gR28gdGhyb3VnaCBlcnJvcnMgZnJvbSBzZXJ2ZXIgYW5kIGdyYWIgdGhlIGNvbXBvbmVudHNcbiAgLy8gc3RvcmVkIGluIHRoZSBpbnB1dHMgbWFwLiBDaGFuZ2UgdGhlaXIgc3RhdGUgdG8gaW52YWxpZFxuICAvLyBhbmQgc2V0IHRoZSBzZXJ2ZXJFcnJvciBtZXNzYWdlXG4gIHVwZGF0ZUlucHV0c1dpdGhFcnJvcjogZnVuY3Rpb24gKGVycm9ycykge1xuICAgIE9iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmlucHV0c1tuYW1lXTtcblxuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgYXJlIHRyeWluZyB0byB1cGRhdGUgYW4gaW5wdXQgdGhhdCBkb2VzIG5vdCBleGlzdHMuIFZlcmlmeSBlcnJvcnMgb2JqZWN0IHdpdGggaW5wdXQgbmFtZXMuICcgKyBKU09OLnN0cmluZ2lmeShlcnJvcnMpKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGFyZ3MgPSBbe1xuICAgICAgICBfaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIF9zZXJ2ZXJFcnJvcjogZXJyb3JzW25hbWVdXG4gICAgICB9XTtcbiAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZS5hcHBseShjb21wb25lbnQsIGFyZ3MpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0sXG5cbiAgZmFpbFN1Ym1pdDogZnVuY3Rpb24gKGVycm9ycykge1xuICAgIHRoaXMudXBkYXRlSW5wdXRzV2l0aEVycm9yKGVycm9ycyk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc1N1Ym1pdHRpbmc6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5wcm9wcy5vbkVycm9yKGVycm9ycyk7XG4gICAgdGhpcy5wcm9wcy5vblN1Ym1pdHRlZCgpO1xuICB9LFxuXG4gIC8vIFRyYXZlcnNlIHRoZSBjaGlsZHJlbiBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4gdG8gZmluZFxuICAvLyBhbGwgaW5wdXRzIGJ5IGNoZWNraW5nIHRoZSBuYW1lIHByb3AuIE1heWJlIGRvIGEgYmV0dGVyXG4gIC8vIGNoZWNrIGhlcmVcbiAgcmVnaXN0ZXJJbnB1dHM6IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuXG4gICAgICBpZiAoY2hpbGQgJiYgY2hpbGQucHJvcHMgJiYgY2hpbGQucHJvcHMubmFtZSkge1xuICAgICAgICBjaGlsZC5wcm9wcy5fYXR0YWNoVG9Gb3JtID0gdGhpcy5hdHRhY2hUb0Zvcm07XG4gICAgICAgIGNoaWxkLnByb3BzLl9kZXRhY2hGcm9tRm9ybSA9IHRoaXMuZGV0YWNoRnJvbUZvcm07XG4gICAgICAgIGNoaWxkLnByb3BzLl92YWxpZGF0ZSA9IHRoaXMudmFsaWRhdGU7XG4gICAgICAgIGNoaWxkLnByb3BzLl9pc0Zvcm1EaXNhYmxlZCA9IHRoaXMuaXNGb3JtRGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5wcm9wcyAmJiBjaGlsZC5wcm9wcy5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLnJlZ2lzdGVySW5wdXRzKGNoaWxkLnByb3BzLmNoaWxkcmVuKTtcbiAgICAgIH1cblxuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0sXG5cbiAgaXNGb3JtRGlzYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kaXNhYmxlZDtcbiAgfSxcblxuICBnZXRDdXJyZW50VmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaW5wdXRzKS5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEsIG5hbWUpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmlucHV0c1tuYW1lXTtcbiAgICAgIGRhdGFbbmFtZV0gPSBjb21wb25lbnQuc3RhdGUuX3ZhbHVlO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfS5iaW5kKHRoaXMpLCB7fSk7XG4gIH0sXG5cbiAgc2V0Rm9ybVByaXN0aW5lOiBmdW5jdGlvbiAoaXNQcmlzdGluZSkge1xuICAgIHZhciBpbnB1dHMgPSB0aGlzLmlucHV0cztcbiAgICB2YXIgaW5wdXRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGNvbXBvbmVudCBhbmQgc2V0IGl0IGFzIHByaXN0aW5lXG4gICAgLy8gb3IgXCJkaXJ0eVwiLlxuICAgIGlucHV0S2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IGlucHV0c1tuYW1lXTtcbiAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZSh7XG4gICAgICAgIF9pc1ByaXN0aW5lOiBpc1ByaXN0aW5lXG4gICAgICB9KTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9LFxuXG4gIC8vIFVzZSB0aGUgYmluZGVkIHZhbHVlcyBhbmQgdGhlIGFjdHVhbCBpbnB1dCB2YWx1ZSB0b1xuICAvLyB2YWxpZGF0ZSB0aGUgaW5wdXQgYW5kIHNldCBpdHMgc3RhdGUuIFRoZW4gY2hlY2sgdGhlXG4gIC8vIHN0YXRlIG9mIHRoZSBmb3JtIGl0c2VsZlxuICB2YWxpZGF0ZTogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuXG4gICAgLy8gVHJpZ2dlciBvbkNoYW5nZVxuICAgIGlmICh0aGlzLnN0YXRlLmNhbkNoYW5nZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLmdldEN1cnJlbnRWYWx1ZXMoKSk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21wb25lbnQucHJvcHMucmVxdWlyZWQgJiYgIWNvbXBvbmVudC5fdmFsaWRhdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSdW4gdGhyb3VnaCB0aGUgdmFsaWRhdGlvbnMsIHNwbGl0IHRoZW0gdXAgYW5kIGNhbGxcbiAgICAvLyB0aGUgdmFsaWRhdG9yIElGIHRoZXJlIGlzIGEgdmFsdWUgb3IgaXQgaXMgcmVxdWlyZWRcbiAgICB2YXIgaXNWYWxpZCA9IHRoaXMucnVuVmFsaWRhdGlvbihjb21wb25lbnQpO1xuXG4gICAgY29tcG9uZW50LnNldFN0YXRlKHtcbiAgICAgIF9pc1ZhbGlkOiBpc1ZhbGlkLFxuICAgICAgX3NlcnZlckVycm9yOiBudWxsXG4gICAgfSwgdGhpcy52YWxpZGF0ZUZvcm0pO1xuXG4gIH0sXG5cbiAgcnVuVmFsaWRhdGlvbjogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIHZhciBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBpZiAoY29tcG9uZW50Ll92YWxpZGF0aW9ucy5sZW5ndGggJiYgKGNvbXBvbmVudC5wcm9wcy5yZXF1aXJlZCB8fCBjb21wb25lbnQuc3RhdGUuX3ZhbHVlICE9PSAnJykpIHtcbiAgICAgIGNvbXBvbmVudC5fdmFsaWRhdGlvbnMuc3BsaXQoJywnKS5mb3JFYWNoKGZ1bmN0aW9uICh2YWxpZGF0aW9uKSB7XG4gICAgICAgIHZhciBhcmdzID0gdmFsaWRhdGlvbi5zcGxpdCgnOicpO1xuICAgICAgICB2YXIgdmFsaWRhdGVNZXRob2QgPSBhcmdzLnNoaWZ0KCk7XG4gICAgICAgIGFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGFyZyk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZzsgLy8gSXQgaXMgYSBzdHJpbmcgaWYgaXQgY2FuIG5vdCBwYXJzZSBpdFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGFyZ3MgPSBbY29tcG9uZW50LnN0YXRlLl92YWx1ZV0uY29uY2F0KGFyZ3MpO1xuICAgICAgICBpZiAoIXZhbGlkYXRpb25SdWxlc1t2YWxpZGF0ZU1ldGhvZF0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Zvcm1zeSBkb2VzIG5vdCBoYXZlIHRoZSB2YWxpZGF0aW9uIHJ1bGU6ICcgKyB2YWxpZGF0ZU1ldGhvZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uUnVsZXNbdmFsaWRhdGVNZXRob2RdLmFwcGx5KHRoaXMuZ2V0Q3VycmVudFZhbHVlcygpLCBhcmdzKSkge1xuICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH0sXG5cbiAgLy8gVmFsaWRhdGUgdGhlIGZvcm0gYnkgZ29pbmcgdGhyb3VnaCBhbGwgY2hpbGQgaW5wdXQgY29tcG9uZW50c1xuICAvLyBhbmQgY2hlY2sgdGhlaXIgc3RhdGVcbiAgdmFsaWRhdGVGb3JtOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFsbElzVmFsaWQgPSB0cnVlO1xuICAgIHZhciBpbnB1dHMgPSB0aGlzLmlucHV0cztcbiAgICB2YXIgaW5wdXRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcblxuICAgIC8vIFdlIG5lZWQgYSBjYWxsYmFjayBhcyB3ZSBhcmUgdmFsaWRhdGluZyBhbGwgaW5wdXRzIGFnYWluLiBUaGlzIHdpbGxcbiAgICAvLyBydW4gd2hlbiB0aGUgbGFzdCBjb21wb25lbnQgaGFzIHNldCBpdHMgc3RhdGVcbiAgICB2YXIgb25WYWxpZGF0aW9uQ29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpbnB1dEtleXMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICBpZiAoIWlucHV0c1tuYW1lXS5zdGF0ZS5faXNWYWxpZCkge1xuICAgICAgICAgIGFsbElzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfS5iaW5kKHRoaXMpKTtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzVmFsaWQ6IGFsbElzVmFsaWRcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYWxsSXNWYWxpZCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uVmFsaWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvcHMub25JbnZhbGlkKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRlbGwgdGhlIGZvcm0gdGhhdCBpdCBjYW4gc3RhcnQgdG8gdHJpZ2dlciBjaGFuZ2UgZXZlbnRzXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2FuQ2hhbmdlOiB0cnVlXG4gICAgICB9KTtcblxuICAgIH0uYmluZCh0aGlzKTtcblxuICAgIC8vIFJ1biB2YWxpZGF0aW9uIGFnYWluIGluIGNhc2UgYWZmZWN0ZWQgYnkgb3RoZXIgaW5wdXRzLiBUaGVcbiAgICAvLyBsYXN0IGNvbXBvbmVudCB2YWxpZGF0ZWQgd2lsbCBydW4gdGhlIG9uVmFsaWRhdGlvbkNvbXBsZXRlIGNhbGxiYWNrXG4gICAgaW5wdXRLZXlzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gaW5wdXRzW25hbWVdO1xuICAgICAgdmFyIGlzVmFsaWQgPSB0aGlzLnJ1blZhbGlkYXRpb24oY29tcG9uZW50KTtcbiAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZSh7XG4gICAgICAgIF9pc1ZhbGlkOiBpc1ZhbGlkLFxuICAgICAgICBfc2VydmVyRXJyb3I6IG51bGxcbiAgICAgIH0sIGluZGV4ID09PSBpbnB1dEtleXMubGVuZ3RoIC0gMSA/IG9uVmFsaWRhdGlvbkNvbXBsZXRlIDogbnVsbCk7XG4gICAgfS5iaW5kKHRoaXMpKTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyBpbnB1dHMsIHNldCBzdGF0ZSB3aGVyZSBmb3JtIGlzIHJlYWR5IHRvIHRyaWdnZXJcbiAgICAvLyBjaGFuZ2UgZXZlbnQuIE5ldyBpbnB1dHMgbWlnaHQgYmUgYWRkZWQgbGF0ZXJcbiAgICBpZiAoIWlucHV0S2V5cy5sZW5ndGggJiYgdGhpcy5pc01vdW50ZWQoKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNhbkNoYW5nZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8vIE1ldGhvZCBwdXQgb24gZWFjaCBpbnB1dCBjb21wb25lbnQgdG8gcmVnaXN0ZXJcbiAgLy8gaXRzZWxmIHRvIHRoZSBmb3JtXG4gIGF0dGFjaFRvRm9ybTogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIHRoaXMuaW5wdXRzW2NvbXBvbmVudC5wcm9wcy5uYW1lXSA9IGNvbXBvbmVudDtcbiAgICB0aGlzLm1vZGVsW2NvbXBvbmVudC5wcm9wcy5uYW1lXSA9IGNvbXBvbmVudC5zdGF0ZS5fdmFsdWU7XG4gICAgdGhpcy52YWxpZGF0ZShjb21wb25lbnQpO1xuICB9LFxuXG4gIC8vIE1ldGhvZCBwdXQgb24gZWFjaCBpbnB1dCBjb21wb25lbnQgdG8gdW5yZWdpc3RlclxuICAvLyBpdHNlbGYgZnJvbSB0aGUgZm9ybVxuICBkZXRhY2hGcm9tRm9ybTogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIGRlbGV0ZSB0aGlzLmlucHV0c1tjb21wb25lbnQucHJvcHMubmFtZV07XG4gICAgZGVsZXRlIHRoaXMubW9kZWxbY29tcG9uZW50LnByb3BzLm5hbWVdO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcblxuICAgIHJldHVybiBSZWFjdC5ET00uZm9ybSh7XG4gICAgICAgIG9uU3VibWl0OiB0aGlzLnN1Ym1pdCxcbiAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnByb3BzLmNsYXNzTmFtZVxuICAgICAgfSxcbiAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICApO1xuXG4gIH1cbn0pO1xuXG5pZiAoIWdsb2JhbC5leHBvcnRzICYmICFnbG9iYWwubW9kdWxlICYmICghZ2xvYmFsLmRlZmluZSB8fCAhZ2xvYmFsLmRlZmluZS5hbWQpKSB7XG4gIGdsb2JhbC5Gb3Jtc3kgPSBGb3Jtc3k7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRm9ybXN5O1xuIiwidmFyIGNzcmZUb2tlblNlbGVjdG9yID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwiY3NyZi10b2tlblwiXScpO1xuXG52YXIgdG9VUkxFbmNvZGVkID0gZnVuY3Rpb24gKGVsZW1lbnQsIGtleSwgbGlzdCkge1xuICB2YXIgbGlzdCA9IGxpc3QgfHwgW107XG4gIGlmICh0eXBlb2YgKGVsZW1lbnQpID09ICdvYmplY3QnKSB7XG4gICAgZm9yICh2YXIgaWR4IGluIGVsZW1lbnQpXG4gICAgICB0b1VSTEVuY29kZWQoZWxlbWVudFtpZHhdLCBrZXkgPyBrZXkgKyAnWycgKyBpZHggKyAnXScgOiBpZHgsIGxpc3QpO1xuICB9IGVsc2Uge1xuICAgIGxpc3QucHVzaChrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoZWxlbWVudCkpO1xuICB9XG4gIHJldHVybiBsaXN0LmpvaW4oJyYnKTtcbn07XG5cbnZhciByZXF1ZXN0ID0gZnVuY3Rpb24gKG1ldGhvZCwgdXJsLCBkYXRhLCBjb250ZW50VHlwZSwgaGVhZGVycykge1xuXG4gIHZhciBjb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlID09PSAndXJsZW5jb2RlZCcgPyAnYXBwbGljYXRpb24vJyArIGNvbnRlbnRUeXBlLnJlcGxhY2UoJ3VybGVuY29kZWQnLCAneC13d3ctZm9ybS11cmxlbmNvZGVkJykgOiAnYXBwbGljYXRpb24vanNvbic7XG4gIGRhdGEgPSBjb250ZW50VHlwZSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiB0b1VSTEVuY29kZWQoZGF0YSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgeGhyLm9wZW4obWV0aG9kLCB1cmwsIHRydWUpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgY29udGVudFR5cGUpO1xuXG4gICAgICBpZiAoISFjc3JmVG9rZW5TZWxlY3RvciAmJiAhIWNzcmZUb2tlblNlbGVjdG9yLmNvbnRlbnQpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ1gtQ1NSRi1Ub2tlbicsIGNzcmZUb2tlblNlbGVjdG9yLmNvbnRlbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgcGFzc2VkIGhlYWRlcnNcbiAgICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24gKGhlYWRlcikge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkZXIsIGhlYWRlcnNbaGVhZGVyXSk7XG4gICAgICB9KTtcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0geGhyLnJlc3BvbnNlVGV4dCA/IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4dCkgOiBudWxsO1xuICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPj0gMjAwICYmIHhoci5zdGF0dXMgPCAzMDApIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHhoci5zZW5kKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlamVjdChlKTtcbiAgICB9XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFycmF5c0RpZmZlcjogZnVuY3Rpb24gKGFycmF5QSwgYXJyYXlCKSB7XG4gICAgdmFyIGlzRGlmZmVyZW50ID0gZmFsc2U7XG4gICAgaWYgKGFycmF5QS5sZW5ndGggIT09IGFycmF5Qi5sZW5ndGgpIHtcbiAgICAgIGlzRGlmZmVyZW50ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJyYXlBLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgIGlmIChpdGVtICE9PSBhcnJheUJbaW5kZXhdKSB7XG4gICAgICAgICAgaXNEaWZmZXJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRGlmZmVyZW50O1xuICB9LFxuICBhamF4OiB7XG4gICAgcG9zdDogcmVxdWVzdC5iaW5kKG51bGwsICdQT1NUJyksXG4gICAgcHV0OiByZXF1ZXN0LmJpbmQobnVsbCwgJ1BVVCcpXG4gIH1cbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgJ2lzVmFsdWUnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09ICcnO1xuICB9LFxuICAnaXNFbWFpbCc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXRjaCgvXigoKFthLXpdfFxcZHxbISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5dfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSsoXFwuKFthLXpdfFxcZHxbISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5dfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSspKil8KChcXHgyMikoKCgoXFx4MjB8XFx4MDkpKihcXHgwZFxceDBhKSk/KFxceDIwfFxceDA5KSspPygoW1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4N2ZdfFxceDIxfFtcXHgyMy1cXHg1Yl18W1xceDVkLVxceDdlXXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KFxcXFwoW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBkLVxceDdmXXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKSkqKCgoXFx4MjB8XFx4MDkpKihcXHgwZFxceDBhKSk/KFxceDIwfFxceDA5KSspPyhcXHgyMikpKUAoKChbYS16XXxcXGR8W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfCgoW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKShbYS16XXxcXGR8LXxcXC58X3x+fFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSooW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpXFwuKSsoKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKShbYS16XXxcXGR8LXxcXC58X3x+fFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSooW2Etel18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSkkL2kpO1xuICB9LFxuICAnaXNUcnVlJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB0cnVlO1xuICB9LFxuICAnaXNOdW1lcmljJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXRjaFJlc3VsdHMgPSB2YWx1ZS5tYXRjaCgvWy0rXT8oXFxkKlsuXSk/XFxkKy8pO1xuICAgICAgaWYgKCEhIG1hdGNoUmVzdWx0cykge1xuICAgICAgICByZXR1cm4gbWF0Y2hSZXN1bHRzWzBdID09IHZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgJ2lzQWxwaGEnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUubWF0Y2goL15bYS16QS1aXSskLyk7XG4gIH0sXG4gICdpc1dvcmRzJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hdGNoKC9eW2EtekEtWlxcc10rJC8pO1xuICB9LFxuICAnaXNTcGVjaWFsV29yZHMnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUubWF0Y2goL15bYS16QS1aXFxzXFx1MDBDMC1cXHUwMTdGXSskLyk7XG4gIH0sXG4gIGlzTGVuZ3RoOiBmdW5jdGlvbiAodmFsdWUsIG1pbiwgbWF4KSB7XG4gICAgaWYgKG1heCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdmFsdWUubGVuZ3RoID49IG1pbiAmJiB2YWx1ZS5sZW5ndGggPD0gbWF4O1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID49IG1pbjtcbiAgfSxcbiAgZXF1YWxzOiBmdW5jdGlvbiAodmFsdWUsIGVxbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBlcWw7XG4gIH0sXG4gIGVxdWFsc0ZpZWxkOiBmdW5jdGlvbiAodmFsdWUsIGZpZWxkKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB0aGlzW2ZpZWxkXTtcbiAgfVxufTtcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvY2hyaXN0aWFuYWxmb25pL0RvY3VtZW50cy9kZXYvZm9ybXN5LXJlYWN0L3NwZWNzL0VsZW1lbnQtc3BlYy5qcyIsIi9Vc2Vycy9jaHJpc3RpYW5hbGZvbmkvRG9jdW1lbnRzL2Rldi9mb3Jtc3ktcmVhY3Qvc3BlY3MvRm9ybXN5LXNwZWMuanMiLCIvVXNlcnMvY2hyaXN0aWFuYWxmb25pL0RvY3VtZW50cy9kZXYvZm9ybXN5LXJlYWN0L3NwZWNzL1N1Ym1pdC1zcGVjLmpzIiwiL1VzZXJzL2NocmlzdGlhbmFsZm9uaS9Eb2N1bWVudHMvZGV2L2Zvcm1zeS1yZWFjdC9zcGVjcy9WYWxpZGF0aW9uLXNwZWMuanMiLCIvVXNlcnMvY2hyaXN0aWFuYWxmb25pL0RvY3VtZW50cy9kZXYvZm9ybXN5LXJlYWN0L3NyYy9NaXhpbi5qcyIsIi9Vc2Vycy9jaHJpc3RpYW5hbGZvbmkvRG9jdW1lbnRzL2Rldi9mb3Jtc3ktcmVhY3Qvc3JjL21haW4uanMiLCIvVXNlcnMvY2hyaXN0aWFuYWxmb25pL0RvY3VtZW50cy9kZXYvZm9ybXN5LXJlYWN0L3NyYy91dGlscy5qcyIsIi9Vc2Vycy9jaHJpc3RpYW5hbGZvbmkvRG9jdW1lbnRzL2Rldi9mb3Jtc3ktcmVhY3Qvc3JjL3ZhbGlkYXRpb25SdWxlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQ0FBLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDOztBQUV6QyxRQUFRLENBQUMsU0FBUyxFQUFFLFdBQVc7O0FBRS9CLEVBQUUsRUFBRSxDQUFDLGlFQUFpRSxFQUFFLFlBQVk7O0lBRWhGLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsV0FBVztNQUN6RCxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxD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O0lBQzVCLE9BQU8sS0FBSyxJQUFJLEdBQUcsQ0FBQztHQUNyQjtFQUNELFdBQVcsRUFBRSxVQUFVLEtBQUssRUFBRSxLQUFLLEVBQUU7SUFDbkMsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0dBQzlCO0FBQ0gsQ0FBQyxDQUFDOztBQUVGIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsInZhciBGb3Jtc3kgPSByZXF1aXJlKCcuLy4uL3NyYy9tYWluLmpzJyk7XG5cbmRlc2NyaWJlKCdFbGVtZW50JywgZnVuY3Rpb24oKSB7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gcGFzc2VkIGFuZCBzZXRWYWx1ZSgpIHZhbHVlIHdoZW4gdXNpbmcgZ2V0VmFsdWUoKScsIGZ1bmN0aW9uICgpIHtcbiAgICBcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwgbnVsbCwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICBleHBlY3QoaW5wdXQuZ2V0RE9NTm9kZSgpLnZhbHVlKS50b0JlKCdmb28nKTtcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKGlucHV0LCB7dGFyZ2V0OiB7dmFsdWU6ICdmb29iYXInfX0pO1xuICAgIGV4cGVjdChpbnB1dC5nZXRET01Ob2RlKCkudmFsdWUpLnRvQmUoJ2Zvb2JhcicpO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgb3IgZmFsc2Ugd2hlbiBjYWxsaW5nIGhhc1ZhbHVlKCkgZGVwZW5kaW5nIG9uIHZhbHVlIGV4aXN0YW5jZScsIGZ1bmN0aW9uICgpIHtcbiAgICBcbiAgICB2YXIgcmVzZXQgPSBudWxsO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVzZXQgPSB0aGlzLnJlc2V0VmFsdWU7XG4gICAgICB9LFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCBudWxsLCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wiLCB2YWx1ZTogXCJmb29cIn0pXG4gICAgICApXG4gICAgKTtcblxuICAgIHZhciBpbnB1dCA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKGZvcm0sICdJTlBVVCcpO1xuICAgIHJlc2V0KCk7XG4gICAgZXhwZWN0KGlucHV0LmdldERPTU5vZGUoKS52YWx1ZSkudG9CZSgnJyk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gZXJyb3IgbWVzc2FnZSBwYXNzZWQgd2hlbiBjYWxsaW5nIGdldEVycm9yTWVzc2FnZSgpJywgZnVuY3Rpb24gKCkge1xuICAgIFxuICAgIHZhciBnZXRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZ2V0RXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2U7XG4gICAgICB9LFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCBudWxsLCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wiLCB2YWx1ZTogXCJmb29cIiwgdmFsaWRhdGlvbnM6IFwiaXNFbWFpbFwiLCB2YWxpZGF0aW9uRXJyb3I6IFwiSGFzIHRvIGJlIGVtYWlsXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBleHBlY3QoZ2V0RXJyb3JNZXNzYWdlKCkpLnRvQmUoJ0hhcyB0byBiZSBlbWFpbCcpO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHNlcnZlciBlcnJvciBtZXNzYWdlIHdoZW4gY2FsbGluZyBnZXRFcnJvck1lc3NhZ2UoKScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgXG4gICAgamFzbWluZS5BamF4Lmluc3RhbGwoKTtcblxuICAgIHZhciBnZXRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZ2V0RXJyb3JNZXNzYWdlID0gdGhpcy5nZXRFcnJvck1lc3NhZ2U7XG4gICAgICB9LFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wifSwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCIsIHZhbGlkYXRpb25zOiBcImlzRW1haWxcIiwgdmFsaWRhdGlvbkVycm9yOiBcIkhhcyB0byBiZSBlbWFpbFwifSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcblxuICAgIGphc21pbmUuQWpheC5yZXF1ZXN0cy5tb3N0UmVjZW50KCkucmVzcG9uZFdpdGgoe1xuICAgICAgc3RhdHVzOiA1MDAsXG4gICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgcmVzcG9uc2VUZXh0OiAne1wiZm9vXCI6IFwiYmFyXCJ9J1xuICAgIH0pXG5cbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGV4cGVjdChnZXRFcnJvck1lc3NhZ2UoKSkudG9CZSgnYmFyJyk7XG4gICAgICBqYXNtaW5lLkFqYXgudW5pbnN0YWxsKCk7XG4gICAgICBkb25lKCk7XG4gICAgfSwgMCk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBvciBmYWxzZSB3aGVuIGNhbGxpbmcgaXNWYWxpZCgpIGRlcGVuZGluZyBvbiB2YWxpZCBzdGF0ZScsIGZ1bmN0aW9uICgpIHtcbiAgICBcbiAgICB2YXIgaXNWYWxpZCA9IG51bGw7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBpc1ZhbGlkID0gdGhpcy5pc1ZhbGlkO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIn0sIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wiLCB2YWxpZGF0aW9uczogXCJpc0VtYWlsXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBleHBlY3QoaXNWYWxpZCgpKS50b0JlKGZhbHNlKTtcbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKGlucHV0LCB7dGFyZ2V0OiB7dmFsdWU6ICdmb29AZm9vLmNvbSd9fSk7XG4gICAgZXhwZWN0KGlzVmFsaWQoKSkudG9CZSh0cnVlKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIG9yIGZhbHNlIHdoZW4gY2FsbGluZyBpc1JlcXVpcmVkKCkgZGVwZW5kaW5nIG9uIHBhc3NlZCByZXF1aXJlZCBhdHRyaWJ1dGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgXG4gICAgdmFyIGlzUmVxdWlyZWRzID0gW107XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBpc1JlcXVpcmVkcy5wdXNoKHRoaXMuaXNSZXF1aXJlZCk7XG4gICAgICB9LFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wifSwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCJ9KSwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCIsIHJlcXVpcmVkOiB0cnVlfSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgZXhwZWN0KGlzUmVxdWlyZWRzWzBdKCkpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChpc1JlcXVpcmVkc1sxXSgpKS50b0JlKHRydWUpO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgb3IgZmFsc2Ugd2hlbiBjYWxsaW5nIHNob3dSZXF1aXJlZCgpIGRlcGVuZGluZyBvbiBpbnB1dCBiZWluZyBlbXB0eSBhbmQgcmVxdWlyZWQgaXMgcGFzc2VkLCBvciBub3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgXG4gICAgdmFyIHNob3dSZXF1aXJlZHMgPSBbXTtcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNob3dSZXF1aXJlZHMucHVzaCh0aGlzLnNob3dSZXF1aXJlZCk7XG4gICAgICB9LFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wifSwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJBXCIsIHZhbHVlOiBcImZvb1wifSksIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiQlwiLCB2YWx1ZTogXCJcIiwgcmVxdWlyZWQ6IHRydWV9KSwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJDXCIsIHZhbHVlOiBcIlwifSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgZXhwZWN0KHNob3dSZXF1aXJlZHNbMF0oKSkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KHNob3dSZXF1aXJlZHNbMV0oKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3Qoc2hvd1JlcXVpcmVkc1syXSgpKS50b0JlKGZhbHNlKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIG9yIGZhbHNlIHdoZW4gY2FsbGluZyBzaG93RXJyb3IoKSBkZXBlbmRpbmcgb24gdmFsdWUgaXMgaW52YWxpZCBvciBhIHNlcnZlciBlcnJvciBoYXMgYXJyaXZlZCwgb3Igbm90JywgZnVuY3Rpb24gKGRvbmUpIHtcblxuICAgIHZhciBzaG93RXJyb3IgPSBudWxsO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2hvd0Vycm9yID0gdGhpcy5zaG93RXJyb3I7XG4gICAgICB9LFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wifSwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCIsIHZhbGlkYXRpb25zOiBcImlzRW1haWxcIiwgdmFsaWRhdGlvbkVycm9yOiBcIlRoaXMgaXMgbm90IGFuIGVtYWlsXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICBleHBlY3Qoc2hvd0Vycm9yKCkpLnRvQmUodHJ1ZSk7XG5cbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKGlucHV0LCB7dGFyZ2V0OiB7dmFsdWU6ICdmb29AZm9vLmNvbSd9fSk7XG4gICAgZXhwZWN0KHNob3dFcnJvcigpKS50b0JlKGZhbHNlKTtcblxuICAgIGphc21pbmUuQWpheC5pbnN0YWxsKCk7XG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLnN1Ym1pdChmb3JtLmdldERPTU5vZGUoKSk7ICAgIFxuICAgIGphc21pbmUuQWpheC5yZXF1ZXN0cy5tb3N0UmVjZW50KCkucmVzcG9uZFdpdGgoe1xuICAgICAgc3RhdHVzOiA1MDAsXG4gICAgICByZXNwb25zZVR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIHJlc3BvbnNlVGV4dDogJ3tcImZvb1wiOiBcIkVtYWlsIGFscmVhZHkgZXhpc3RzXCJ9J1xuICAgIH0pO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgZXhwZWN0KHNob3dFcnJvcigpKS50b0JlKHRydWUpO1xuICAgICAgamFzbWluZS5BamF4LnVuaW5zdGFsbCgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0sIDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIG9yIGZhbHNlIHdoZW4gY2FsbGluZyBpc1ByZXN0aW5lKCkgZGVwZW5kaW5nIG9uIGlucHV0IGhhcyBiZWVuIFwidG91Y2hlZFwiIG9yIG5vdCcsIGZ1bmN0aW9uICgpIHtcbiAgICBcbiAgICB2YXIgaXNQcmlzdGluZSA9IG51bGw7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICBpc1ByaXN0aW5lID0gdGhpcy5pc1ByaXN0aW5lO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIn0sIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiQVwiLCB2YWx1ZTogXCJmb29cIn0pXG4gICAgICApXG4gICAgKTtcblxuICAgIGV4cGVjdChpc1ByaXN0aW5lKCkpLnRvQmUodHJ1ZSk7XG4gICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhUYWcoZm9ybSwgJ0lOUFVUJyk7XG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShpbnB1dCwge3RhcmdldDoge3ZhbHVlOiAnZm9vJ319KTtcbiAgICBleHBlY3QoaXNQcmlzdGluZSgpKS50b0JlKGZhbHNlKTtcbiAgICBcbiAgfSk7XG5cbml0KCdzaG91bGQgYWxsb3cgYW4gdW5kZWZpbmVkIHZhbHVlIHRvIGJlIHVwZGF0ZWQgdG8gYSB2YWx1ZScsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIFRlc3RGb3JtID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RGb3JtXCIsXG4gICAgICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt2YWx1ZTogdW5kZWZpbmVkfTtcbiAgICAgIH0sXG4gICAgICBjaGFuZ2VWYWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICB2YWx1ZTogJ2ZvbydcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIn0sIFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcIkFcIiwgdmFsdWU6IHRoaXMuc3RhdGUudmFsdWV9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RGb3JtLCBudWxsKVxuICAgICk7XG5cbiAgICBmb3JtLmNoYW5nZVZhbHVlKCk7XG4gICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhUYWcoZm9ybSwgJ0lOUFVUJyk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBleHBlY3QoaW5wdXQuZ2V0RE9NTm9kZSgpLnZhbHVlKS50b0JlKCdmb28nKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9LCAwKTtcbiAgfSk7ICBcblxuaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB2YWxpZGF0aW9ucycsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICB2YXIgaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIFRlc3RGb3JtID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RGb3JtXCIsXG4gICAgICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHt2YWx1ZTogJ2Zvb0BiYXIuY29tJywgdmFsaWRhdGlvbnM6ICdpc0VtYWlsJ307XG4gICAgICB9LFxuICAgICAgY2hhbmdlVmFsaWRhdGlvbnM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgdmFsaWRhdGlvbnM6ICdlcXVhbHM6Zm9vJ1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBzZXRJbnZhbGlkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdSdW5uaW5nIGl0IScpO1xuICAgICAgICBpc0ludmFsaWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHt1cmw6IFwiL3VzZXJzXCIsIG9uSW52YWxpZDogdGhpcy5zZXRJbnZhbGlkfSwgXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiQVwiLCB2YWxpZGF0aW9uczogdGhpcy5zdGF0ZS52YWxpZGF0aW9ucywgdmFsdWU6IHRoaXMuc3RhdGUudmFsdWV9KVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RGb3JtLCBudWxsKVxuICAgICk7XG5cbiAgICBmb3JtLmNoYW5nZVZhbGlkYXRpb25zKCk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBleHBlY3QoaXNJbnZhbGlkKS50b0JlKHRydWUpO1xuICAgICAgZG9uZSgpO1xuICAgIH0sIDApO1xuICB9KTsgIFxuXG59KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pTDFWelpYSnpMMk5vY21semRHbGhibUZzWm05dWFTOUViMk4xYldWdWRITXZaR1YyTDJadmNtMXplUzF5WldGamRDOXpjR1ZqY3k5RmJHVnRaVzUwTFhOd1pXTXVhbk1pTENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5amFISnBjM1JwWVc1aGJHWnZibWt2Ukc5amRXMWxiblJ6TDJSbGRpOW1iM0p0YzNrdGNtVmhZM1F2YzNCbFkzTXZSV3hsYldWdWRDMXpjR1ZqTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRWxCUVVrc1RVRkJUU3hIUVVGSExFOUJRVThzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhEUVVGRE96dEJRVVY2UXl4UlFVRlJMRU5CUVVNc1UwRkJVeXhGUVVGRkxGZEJRVmM3TzBGQlJTOUNMRVZCUVVVc1JVRkJSU3hEUVVGRExHbEZRVUZwUlN4RlFVRkZMRmxCUVZrN08wbEJSV2hHTEVsQlFVa3NLMEpCUVN0Q0xIbENRVUZCTzAxQlEycERMRTFCUVUwc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTTdUVUZEZEVJc1YwRkJWeXhGUVVGRkxGVkJRVlVzUzBGQlN5eEZRVUZGTzFGQlF6VkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVOdVF6dE5RVU5FTEUxQlFVMHNSVUZCUlN4WlFVRlpPMUZCUTJ4Q0xFOUJRVThzYjBKQlFVRXNUMEZCVFN4RlFVRkJMRU5CUVVFc1EwRkJReXhMUVVGQkxFVkJRVXNzUTBGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVNc1EwRkJReXhSUVVGQkxFVkJRVkVzUTBGQlJTeEpRVUZKTEVOQlFVTXNWMEZCV1N4RFFVRkZMRU5CUVVFN1QwRkRjRVU3UzBGRFJpeERRVUZETEVOQlFVTTdTVUZEU0N4SlFVRkpMRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU1zYTBKQlFXdENPMDFCUTNKRExHOUNRVUZETEZkQlFWY3NSVUZCUVN4SlFVRkRMRVZCUVVFN1VVRkRXQ3h2UWtGQlF5eFRRVUZUTEVWQlFVRXNRMEZCUVN4RFFVRkRMRWxCUVVFc1JVRkJTU3hEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZETEV0QlFVRXNSVUZCU3l4RFFVRkRMRXRCUVVzc1EwRkJSU3hEUVVGQk8wMUJRM1pDTEVOQlFVRTdRVUZEY0VJc1MwRkJTeXhEUVVGRE96dEpRVVZHTEVsQlFVa3NTMEZCU3l4SFFVRkhMRk5CUVZNc1EwRkJReXdyUWtGQkswSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGNrVXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03U1VGRE4wTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1MwRkJTeXhGUVVGRkxGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnNSU3hKUVVGSkxFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPenRCUVVWd1JDeEhRVUZITEVOQlFVTXNRMEZCUXpzN1FVRkZUQ3hGUVVGRkxFVkJRVVVzUTBGQlF5eHJSa0ZCYTBZc1JVRkJSU3haUVVGWk96dEpRVVZxUnl4SlFVRkpMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03U1VGRGFrSXNTVUZCU1N3clFrRkJLMElzZVVKQlFVRTdUVUZEYWtNc1RVRkJUU3hGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXp0TlFVTjBRaXhwUWtGQmFVSXNSVUZCUlN4WlFVRlpPMUZCUXpkQ0xFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRPMDlCUTNwQ08wMUJRMFFzVjBGQlZ5eEZRVUZGTEZWQlFWVXNTMEZCU3l4RlFVRkZPMUZCUXpWQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFBRVU51UXp0TlFVTkVMRTFCUVUwc1JVRkJSU3haUVVGWk8xRkJRMnhDTEU5QlFVOHNiMEpCUVVFc1QwRkJUU3hGUVVGQkxFTkJRVUVzUTBGQlF5eExRVUZCTEVWQlFVc3NRMEZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRVU1zUTBGQlF5eFJRVUZCTEVWQlFWRXNRMEZCUlN4SlFVRkpMRU5CUVVNc1YwRkJXU3hEUVVGRkxFTkJRVUU3VDBGRGNFVTdTMEZEUml4RFFVRkRMRU5CUVVNN1NVRkRTQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eFRRVUZUTEVOQlFVTXNhMEpCUVd0Q08wMUJRM0pETEc5Q1FVRkRMRmRCUVZjc1JVRkJRU3hKUVVGRExFVkJRVUU3VVVGRFdDeHZRa0ZCUXl4VFFVRlRMRVZCUVVFc1EwRkJRU3hEUVVGRExFbEJRVUVzUlVGQlNTeERRVUZETEV0QlFVRXNSVUZCU3l4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRExFdEJRVXNzUTBGQlJTeERRVUZCTzAxQlEzWkNMRU5CUVVFN1FVRkRjRUlzUzBGQlN5eERRVUZET3p0SlFVVkdMRWxCUVVrc1MwRkJTeXhIUVVGSExGTkJRVk1zUTBGQlF5d3JRa0ZCSzBJc1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEY2tVc1MwRkJTeXhGUVVGRkxFTkJRVU03UVVGRFdpeEpRVUZKTEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE96dEJRVVU1UXl4SFFVRkhMRU5CUVVNc1EwRkJRenM3UVVGRlRDeEZRVUZGTEVWQlFVVXNRMEZCUXl4dFJVRkJiVVVzUlVGQlJTeFpRVUZaT3p0SlFVVnNSaXhKUVVGSkxHVkJRV1VzUjBGQlJ5eEpRVUZKTEVOQlFVTTdTVUZETTBJc1NVRkJTU3dyUWtGQkswSXNlVUpCUVVFN1RVRkRha01zVFVGQlRTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJRenROUVVOMFFpeHBRa0ZCYVVJc1JVRkJSU3haUVVGWk8xRkJRemRDTEdWQlFXVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRE8wOUJRM2hETzAxQlEwUXNWMEZCVnl4RlFVRkZMRlZCUVZVc1MwRkJTeXhGUVVGRk8xRkJRelZDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UFFVTnVRenROUVVORUxFMUJRVTBzUlVGQlJTeFpRVUZaTzFGQlEyeENMRTlCUVU4c2IwSkJRVUVzVDBGQlRTeEZRVUZCTEVOQlFVRXNRMEZCUXl4TFFVRkJMRVZCUVVzc1EwRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVWQlFVTXNRMEZCUXl4UlFVRkJMRVZCUVZFc1EwRkJSU3hKUVVGSkxFTkJRVU1zVjBGQldTeERRVUZGTEVOQlFVRTdUMEZEY0VVN1MwRkRSaXhEUVVGRExFTkJRVU03U1VGRFNDeEpRVUZKTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTzAxQlEzSkRMRzlDUVVGRExGZEJRVmNzUlVGQlFTeEpRVUZETEVWQlFVRTdVVUZEV0N4dlFrRkJReXhUUVVGVExFVkJRVUVzUTBGQlFTeERRVUZETEVsQlFVRXNSVUZCU1N4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZETEV0QlFVRXNSVUZCU3l4RFFVRkRMRmRCUVVFc1JVRkJWeXhEUVVGRExGTkJRVUVzUlVGQlV5eERRVUZETEdWQlFVRXNSVUZCWlN4RFFVRkRMR2xDUVVGcFFpeERRVUZGTEVOQlFVRTdUVUZETDBVc1EwRkJRVHRCUVVOd1FpeExRVUZMTEVOQlFVTTdPMEZCUlU0c1NVRkJTU3hOUVVGTkxFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXpzN1FVRkZkRVFzUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUlV3c1JVRkJSU3hGUVVGRkxFTkJRVU1zYlVWQlFXMUZMRVZCUVVVc1ZVRkJWU3hKUVVGSkxFVkJRVVU3TzBGQlJURkdMRWxCUVVrc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXpzN1NVRkZka0lzU1VGQlNTeGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUXpOQ0xFbEJRVWtzSzBKQlFTdENMSGxDUVVGQk8wMUJRMnBETEUxQlFVMHNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU03VFVGRGRFSXNhVUpCUVdsQ0xFVkJRVVVzV1VGQldUdFJRVU0zUWl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF6dFBRVU40UXp0TlFVTkVMRmRCUVZjc1JVRkJSU3hWUVVGVkxFdEJRVXNzUlVGQlJUdFJRVU0xUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1QwRkRia003VFVGRFJDeE5RVUZOTEVWQlFVVXNXVUZCV1R0UlFVTnNRaXhQUVVGUExHOUNRVUZCTEU5QlFVMHNSVUZCUVN4RFFVRkJMRU5CUVVNc1MwRkJRU3hGUVVGTExFTkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkRMRU5CUVVNc1VVRkJRU3hGUVVGUkxFTkJRVVVzU1VGQlNTeERRVUZETEZkQlFWa3NRMEZCUlN4RFFVRkJPMDlCUTNCRk8wdEJRMFlzUTBGQlF5eERRVUZETzBsQlEwZ3NTVUZCU1N4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExHdENRVUZyUWp0TlFVTnlReXh2UWtGQlF5eFhRVUZYTEVWQlFVRXNRMEZCUVN4RFFVRkRMRWRCUVVFc1JVRkJSeXhEUVVGRExGRkJRVk1zUTBGQlFTeEZRVUZCTzFGQlEzaENMRzlDUVVGRExGTkJRVk1zUlVGQlFTeERRVUZCTEVOQlFVTXNTVUZCUVN4RlFVRkpMRU5CUVVNc1MwRkJRU3hGUVVGTExFTkJRVU1zUzBGQlFTeEZRVUZMTEVOQlFVTXNTMEZCUVN4RlFVRkxMRU5CUVVNc1YwRkJRU3hGUVVGWExFTkJRVU1zVTBGQlFTeEZRVUZUTEVOQlFVTXNaVUZCUVN4RlFVRmxMRU5CUVVNc2FVSkJRV2xDTEVOQlFVVXNRMEZCUVR0TlFVTXZSU3hEUVVGQk8wRkJRM0JDTEV0QlFVc3NRMEZCUXpzN1FVRkZUaXhKUVVGSkxFbEJRVWtzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXl4RFFVRkRPenRKUVVWNFJDeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTTdUVUZETjBNc1RVRkJUU3hGUVVGRkxFZEJRVWM3VFVGRFdDeFhRVUZYTEVWQlFVVXNhMEpCUVd0Q08wMUJReTlDTEZsQlFWa3NSVUZCUlN4blFrRkJaMEk3UVVGRGNFTXNTMEZCU3l4RFFVRkRPenRKUVVWR0xGVkJRVlVzUTBGQlF5eFpRVUZaTzAxQlEzSkNMRTFCUVUwc1EwRkJReXhsUVVGbExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenROUVVOMFF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wMUJRM3BDTEVsQlFVa3NSVUZCUlN4RFFVRkRPMEZCUTJJc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZET3p0QlFVVldMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZNTEVWQlFVVXNSVUZCUlN4RFFVRkRMRFpGUVVFMlJTeEZRVUZGTEZsQlFWazdPMGxCUlRWR0xFbEJRVWtzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXp0SlFVTnVRaXhKUVVGSkxDdENRVUVyUWl4NVFrRkJRVHROUVVOcVF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRE8wMUJRM1JDTEdsQ1FVRnBRaXhGUVVGRkxGbEJRVms3VVVGRE4wSXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03VDBGRGVFSTdUVUZEUkN4WFFVRlhMRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVU3VVVGRE5VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMDlCUTI1RE8wMUJRMFFzVFVGQlRTeEZRVUZGTEZsQlFWazdVVUZEYkVJc1QwRkJUeXh2UWtGQlFTeFBRVUZOTEVWQlFVRXNRMEZCUVN4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNSVUZCUXl4RFFVRkRMRkZCUVVFc1JVRkJVU3hEUVVGRkxFbEJRVWtzUTBGQlF5eFhRVUZaTEVOQlFVVXNRMEZCUVR0UFFVTndSVHRMUVVOR0xFTkJRVU1zUTBGQlF6dEpRVU5JTEVsQlFVa3NTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhyUWtGQmEwSTdUVUZEY2tNc2IwSkJRVU1zVjBGQlZ5eEZRVUZCTEVOQlFVRXNRMEZCUXl4SFFVRkJMRVZCUVVjc1EwRkJReXhSUVVGVExFTkJRVUVzUlVGQlFUdFJRVU40UWl4dlFrRkJReXhUUVVGVExFVkJRVUVzUTBGQlFTeERRVUZETEVsQlFVRXNSVUZCU1N4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZETEV0QlFVRXNSVUZCU3l4RFFVRkRMRmRCUVVFc1JVRkJWeXhEUVVGRExGTkJRVk1zUTBGQlJTeERRVUZCTzAxQlF6ZERMRU5CUVVFN1FVRkRjRUlzUzBGQlN5eERRVUZET3p0SlFVVkdMRTFCUVUwc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRKUVVNNVFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNc0swSkJRU3RDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM0pGTEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRXRCUVVzc1JVRkJSU3hoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZGtVc1NVRkJTU3hOUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03TzBGQlJXcERMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZNTEVWQlFVVXNSVUZCUlN4RFFVRkRMRGhHUVVFNFJpeEZRVUZGTEZsQlFWazdPMGxCUlRkSExFbEJRVWtzVjBGQlZ5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTnlRaXhKUVVGSkxDdENRVUVyUWl4NVFrRkJRVHROUVVOcVF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRE8wMUJRM1JDTEdsQ1FVRnBRaXhGUVVGRkxGbEJRVms3VVVGRE4wSXNWMEZCVnl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdUMEZEYmtNN1RVRkRSQ3hYUVVGWExFVkJRVVVzVlVGQlZTeExRVUZMTEVWQlFVVTdVVUZETlVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wOUJRMjVETzAxQlEwUXNUVUZCVFN4RlFVRkZMRmxCUVZrN1VVRkRiRUlzVDBGQlR5eHZRa0ZCUVN4UFFVRk5MRVZCUVVFc1EwRkJRU3hEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkJReXhEUVVGRExGRkJRVUVzUlVGQlVTeERRVUZGTEVsQlFVa3NRMEZCUXl4WFFVRlpMRU5CUVVVc1EwRkJRVHRQUVVOd1JUdExRVU5HTEVOQlFVTXNRMEZCUXp0SlFVTklMRWxCUVVrc1NVRkJTU3hIUVVGSExGTkJRVk1zUTBGQlF5eHJRa0ZCYTBJN1RVRkRja01zYjBKQlFVTXNWMEZCVnl4RlFVRkJMRU5CUVVFc1EwRkJReXhIUVVGQkxFVkJRVWNzUTBGQlF5eFJRVUZUTEVOQlFVRXNSVUZCUVR0UlFVTjRRaXh2UWtGQlF5eFRRVUZUTEVWQlFVRXNRMEZCUVN4RFFVRkRMRWxCUVVFc1JVRkJTU3hEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZETEV0QlFVRXNSVUZCU3l4RFFVRkRMRXRCUVVzc1EwRkJSU3hEUVVGQkxFVkJRVUU3VVVGRGJrTXNiMEpCUVVNc1UwRkJVeXhGUVVGQkxFTkJRVUVzUTBGQlF5eEpRVUZCTEVWQlFVa3NRMEZCUXl4TFFVRkJMRVZCUVVzc1EwRkJReXhMUVVGQkxFVkJRVXNzUTBGQlF5eExRVUZCTEVWQlFVc3NRMEZCUXl4UlFVRkJMRVZCUVVFc1EwRkJSU3hEUVVGQk8wMUJRM2hDTEVOQlFVRTdRVUZEY0VJc1MwRkJTeXhEUVVGRE96dEpRVVZHTEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVONlF5eEpRVUZKTEUxQlFVMHNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmVFTXNSMEZCUnl4RFFVRkRMRU5CUVVNN08wRkJSVXdzUlVGQlJTeEZRVUZGTEVOQlFVTXNkVWhCUVhWSUxFVkJRVVVzV1VGQldUczdTVUZGZEVrc1NVRkJTU3hoUVVGaExFZEJRVWNzUlVGQlJTeERRVUZETzBsQlEzWkNMRWxCUVVrc0swSkJRU3RDTEhsQ1FVRkJPMDFCUTJwRExFMUJRVTBzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNN1RVRkRkRUlzYVVKQlFXbENMRVZCUVVVc1dVRkJXVHRSUVVNM1FpeGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFBRVU4yUXp0TlFVTkVMRmRCUVZjc1JVRkJSU3hWUVVGVkxFdEJRVXNzUlVGQlJUdFJRVU0xUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1QwRkRia003VFVGRFJDeE5RVUZOTEVWQlFVVXNXVUZCV1R0UlFVTnNRaXhQUVVGUExHOUNRVUZCTEU5QlFVMHNSVUZCUVN4RFFVRkJMRU5CUVVNc1MwRkJRU3hGUVVGTExFTkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkRMRU5CUVVNc1VVRkJRU3hGUVVGUkxFTkJRVVVzU1VGQlNTeERRVUZETEZkQlFWa3NRMEZCUlN4RFFVRkJPMDlCUTNCRk8wdEJRMFlzUTBGQlF5eERRVUZETzBsQlEwZ3NTVUZCU1N4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExHdENRVUZyUWp0TlFVTnlReXh2UWtGQlF5eFhRVUZYTEVWQlFVRXNRMEZCUVN4RFFVRkRMRWRCUVVFc1JVRkJSeXhEUVVGRExGRkJRVk1zUTBGQlFTeEZRVUZCTzFGQlEzaENMRzlDUVVGRExGTkJRVk1zUlVGQlFTeERRVUZCTEVOQlFVTXNTVUZCUVN4RlFVRkpMRU5CUVVNc1IwRkJRU3hGUVVGSExFTkJRVU1zUzBGQlFTeEZRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkZMRU5CUVVFc1JVRkJRVHRSUVVOcVF5eHZRa0ZCUXl4VFFVRlRMRVZCUVVFc1EwRkJRU3hEUVVGRExFbEJRVUVzUlVGQlNTeERRVUZETEVkQlFVRXNSVUZCUnl4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRExFVkJRVUVzUlVGQlJTeERRVUZETEZGQlFVRXNSVUZCUVN4RFFVRkZMRU5CUVVFc1JVRkJRVHRSUVVNdlFpeHZRa0ZCUXl4VFFVRlRMRVZCUVVFc1EwRkJRU3hEUVVGRExFbEJRVUVzUlVGQlNTeERRVUZETEVkQlFVRXNSVUZCUnl4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRExFVkJRVVVzUTBGQlJTeERRVUZCTzAxQlEyeENMRU5CUVVFN1FVRkRjRUlzUzBGQlN5eERRVUZET3p0SlFVVkdMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU4yUXl4TlFVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE1VTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03TzBGQlJUTkRMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZNTEVWQlFVVXNSVUZCUlN4RFFVRkRMREJJUVVFd1NDeEZRVUZGTEZWQlFWVXNTVUZCU1N4RlFVRkZPenRKUVVVM1NTeEpRVUZKTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1NVRkRja0lzU1VGQlNTd3JRa0ZCSzBJc2VVSkJRVUU3VFVGRGFrTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF6dE5RVU4wUWl4cFFrRkJhVUlzUlVGQlJTeFpRVUZaTzFGQlF6ZENMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETzA5QlF6VkNPMDFCUTBRc1YwRkJWeXhGUVVGRkxGVkJRVlVzUzBGQlN5eEZRVUZGTzFGQlF6VkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVOdVF6dE5RVU5FTEUxQlFVMHNSVUZCUlN4WlFVRlpPMUZCUTJ4Q0xFOUJRVThzYjBKQlFVRXNUMEZCVFN4RlFVRkJMRU5CUVVFc1EwRkJReXhMUVVGQkxFVkJRVXNzUTBGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVNc1EwRkJReXhSUVVGQkxFVkJRVkVzUTBGQlJTeEpRVUZKTEVOQlFVTXNWMEZCV1N4RFFVRkZMRU5CUVVFN1QwRkRjRVU3UzBGRFJpeERRVUZETEVOQlFVTTdTVUZEU0N4SlFVRkpMRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU1zYTBKQlFXdENPMDFCUTNKRExHOUNRVUZETEZkQlFWY3NSVUZCUVN4RFFVRkJMRU5CUVVNc1IwRkJRU3hGUVVGSExFTkJRVU1zVVVGQlV5eERRVUZCTEVWQlFVRTdVVUZEZUVJc2IwSkJRVU1zVTBGQlV5eEZRVUZCTEVOQlFVRXNRMEZCUXl4SlFVRkJMRVZCUVVrc1EwRkJReXhMUVVGQkxFVkJRVXNzUTBGQlF5eExRVUZCTEVWQlFVc3NRMEZCUXl4TFFVRkJMRVZCUVVzc1EwRkJReXhYUVVGQkxFVkJRVmNzUTBGQlF5eFRRVUZCTEVWQlFWTXNRMEZCUXl4bFFVRkJMRVZCUVdVc1EwRkJReXh6UWtGQmMwSXNRMEZCUlN4RFFVRkJPMDFCUTNCR0xFTkJRVUU3UVVGRGNFSXNTMEZCU3l4RFFVRkRPenRCUVVWT0xFbEJRVWtzVFVGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3p0SlFVVXZRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNLMEpCUVN0Q0xFTkJRVU1zU1VGQlNTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTNKRkxGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEV0QlFVc3NSVUZCUlN4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRrVXNTVUZCU1N4TlFVRk5MRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wbEJSV2hETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03U1VGRGRrSXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1NVRkROME1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU1zVjBGQlZ5eERRVUZETzAxQlF6ZERMRTFCUVUwc1JVRkJSU3hIUVVGSE8wMUJRMWdzV1VGQldTeEZRVUZGTEd0Q1FVRnJRanROUVVOb1F5eFpRVUZaTEVWQlFVVXNhVU5CUVdsRE8wdEJRMmhFTEVOQlFVTXNRMEZCUXp0SlFVTklMRlZCUVZVc1EwRkJReXhaUVVGWk8wMUJRM0pDTEUxQlFVMHNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TlFVTXZRaXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMDFCUTNwQ0xFbEJRVWtzUlVGQlJTeERRVUZETzB0QlExSXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOV0xFZEJRVWNzUTBGQlF5eERRVUZET3p0QlFVVk1MRVZCUVVVc1JVRkJSU3hEUVVGRExHOUhRVUZ2Unl4RlFVRkZMRmxCUVZrN08wbEJSVzVJTEVsQlFVa3NWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJRenRKUVVOMFFpeEpRVUZKTEN0Q1FVRXJRaXg1UWtGQlFUdE5RVU5xUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETzAxQlEzUkNMR2xDUVVGcFFpeEZRVUZGTEZsQlFWazdVVUZETjBJc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTTdUMEZET1VJN1RVRkRSQ3hYUVVGWExFVkJRVVVzVlVGQlZTeExRVUZMTEVWQlFVVTdVVUZETlVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wOUJRMjVETzAxQlEwUXNUVUZCVFN4RlFVRkZMRmxCUVZrN1VVRkRiRUlzVDBGQlR5eHZRa0ZCUVN4UFFVRk5MRVZCUVVFc1EwRkJRU3hEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkJReXhEUVVGRExGRkJRVUVzUlVGQlVTeERRVUZGTEVsQlFVa3NRMEZCUXl4WFFVRlpMRU5CUVVVc1EwRkJRVHRQUVVOd1JUdExRVU5HTEVOQlFVTXNRMEZCUXp0SlFVTklMRWxCUVVrc1NVRkJTU3hIUVVGSExGTkJRVk1zUTBGQlF5eHJRa0ZCYTBJN1RVRkRja01zYjBKQlFVTXNWMEZCVnl4RlFVRkJMRU5CUVVFc1EwRkJReXhIUVVGQkxFVkJRVWNzUTBGQlF5eFJRVUZUTEVOQlFVRXNSVUZCUVR0UlFVTjRRaXh2UWtGQlF5eFRRVUZUTEVWQlFVRXNRMEZCUVN4RFFVRkRMRWxCUVVFc1JVRkJTU3hEUVVGRExFZEJRVUVzUlVGQlJ5eERRVUZETEV0QlFVRXNSVUZCU3l4RFFVRkRMRXRCUVVzc1EwRkJSU3hEUVVGQk8wMUJRM0pDTEVOQlFVRTdRVUZEY0VJc1MwRkJTeXhEUVVGRE96dEpRVVZHTEUxQlFVMHNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTm9ReXhKUVVGSkxFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNLMEpCUVN0Q0xFTkJRVU1zU1VGQlNTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTNKRkxGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGREwwUXNTVUZCU1N4TlFVRk5MRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSWEpETEVkQlFVY3NRMEZCUXl4RFFVRkRPenRCUVVWTUxFVkJRVVVzUTBGQlF5d3dSRUZCTUVRc1JVRkJSU3hWUVVGVkxFbEJRVWtzUlVGQlJUdEpRVU16UlN4SlFVRkpMQ3RDUVVFclFpeDVRa0ZCUVR0TlFVTnFReXhOUVVGTkxFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRPMDFCUTNSQ0xFMUJRVTBzUlVGQlJTeFpRVUZaTzFGQlEyeENMRTlCUVU4c2IwSkJRVUVzVDBGQlRTeEZRVUZCTEVOQlFVRXNRMEZCUXl4TFFVRkJMRVZCUVVzc1EwRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZITEVOQlFVVXNRMEZCUVR0UFFVTjRRenRMUVVOR0xFTkJRVU1zUTBGQlF6dEpRVU5JTEVsQlFVa3NPRUpCUVRoQ0xIZENRVUZCTzAxQlEyaERMR1ZCUVdVc1JVRkJSU3haUVVGWk8xRkJRek5DTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03VDBGRE0wSTdUVUZEUkN4WFFVRlhMRVZCUVVVc1dVRkJXVHRSUVVOMlFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRPMVZCUTFvc1MwRkJTeXhGUVVGRkxFdEJRVXM3VTBGRFlpeERRVUZETEVOQlFVTTdUMEZEU2p0TlFVTkVMRTFCUVUwc1JVRkJSU3haUVVGWk8xRkJRMnhDTzFWQlEwVXNiMEpCUVVNc1YwRkJWeXhGUVVGQkxFTkJRVUVzUTBGQlF5eEhRVUZCTEVWQlFVY3NRMEZCUXl4UlFVRlRMRU5CUVVFc1JVRkJRVHRaUVVONFFpeHZRa0ZCUXl4VFFVRlRMRVZCUVVFc1EwRkJRU3hEUVVGRExFbEJRVUVzUlVGQlNTeERRVUZETEVkQlFVRXNSVUZCUnl4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCVFN4RFFVRkZMRU5CUVVFN1ZVRkRiRU1zUTBGQlFUdFZRVU5rTzA5QlEwZzdTMEZEUml4RFFVRkRMRU5CUVVNN1NVRkRTQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eFRRVUZUTEVOQlFVTXNhMEpCUVd0Q08wMUJRM0pETEc5Q1FVRkRMRkZCUVZFc1JVRkJRU3hKUVVGRkxFTkJRVUU3UVVGRGFrSXNTMEZCU3l4RFFVRkRPenRKUVVWR0xFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXp0SlFVTnVRaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNLMEpCUVN0Q0xFTkJRVU1zU1VGQlNTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTNKRkxGVkJRVlVzUTBGQlF5eFpRVUZaTzAxQlEzSkNMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzAxQlF6ZERMRWxCUVVrc1JVRkJSU3hEUVVGRE8wdEJRMUlzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTldMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZNTEVWQlFVVXNRMEZCUXl4clJFRkJhMFFzUlVGQlJTeFZRVUZWTEVsQlFVa3NSVUZCUlRzN1NVRkZia1VzU1VGQlNTeFRRVUZUTEVkQlFVY3NTMEZCU3l4RFFVRkRPMGxCUTNSQ0xFbEJRVWtzSzBKQlFTdENMSGxDUVVGQk8wMUJRMnBETEUxQlFVMHNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU03VFVGRGRFSXNUVUZCVFN4RlFVRkZMRmxCUVZrN1VVRkRiRUlzVDBGQlR5eHZRa0ZCUVN4UFFVRk5MRVZCUVVFc1EwRkJRU3hEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVjc1EwRkJSU3hEUVVGQk8wOUJRM2hETzB0QlEwWXNRMEZCUXl4RFFVRkRPMGxCUTBnc1NVRkJTU3c0UWtGQk9FSXNkMEpCUVVFN1RVRkRhRU1zWlVGQlpTeEZRVUZGTEZsQlFWazdVVUZETTBJc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeGhRVUZoTEVWQlFVVXNWMEZCVnl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8wOUJRM1pFTzAxQlEwUXNhVUpCUVdsQ0xFVkJRVVVzV1VGQldUdFJRVU0zUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8xVkJRMW9zVjBGQlZ5eEZRVUZGTEZsQlFWazdVMEZETVVJc1EwRkJReXhEUVVGRE8wOUJRMG83VFVGRFJDeFZRVUZWTEVWQlFVVXNXVUZCV1R0UlFVTjBRaXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUXpOQ0xGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdUMEZEYkVJN1RVRkRSQ3hOUVVGTkxFVkJRVVVzV1VGQldUdFJRVU5zUWp0VlFVTkZMRzlDUVVGRExGZEJRVmNzUlVGQlFTeERRVUZCTEVOQlFVTXNSMEZCUVN4RlFVRkhMRU5CUVVNc1VVRkJRU3hGUVVGUkxFTkJRVU1zVTBGQlFTeEZRVUZUTEVOQlFVVXNTVUZCU1N4RFFVRkRMRlZCUVZrc1EwRkJRU3hGUVVGQk8xbEJRM0JFTEc5Q1FVRkRMRk5CUVZNc1JVRkJRU3hEUVVGQkxFTkJRVU1zU1VGQlFTeEZRVUZKTEVOQlFVTXNSMEZCUVN4RlFVRkhMRU5CUVVNc1YwRkJRU3hGUVVGWExFTkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WFFVRlhMRVZCUVVNc1EwRkJReXhMUVVGQkxFVkJRVXNzUTBGQlJTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVUwc1EwRkJSU3hEUVVGQk8xVkJRM1pGTEVOQlFVRTdWVUZEWkR0UFFVTklPMHRCUTBZc1EwRkJReXhEUVVGRE8wbEJRMGdzU1VGQlNTeEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRMR3RDUVVGclFqdE5RVU55UXl4dlFrRkJReXhSUVVGUkxFVkJRVUVzU1VGQlJTeERRVUZCTzBGQlEycENMRXRCUVVzc1EwRkJRenM3U1VGRlJpeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzUTBGQlF6dEpRVU42UWl4VlFVRlZMRU5CUVVNc1dVRkJXVHROUVVOeVFpeE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzAxQlF6ZENMRWxCUVVrc1JVRkJSU3hEUVVGRE8wdEJRMUlzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTldMRWRCUVVjc1EwRkJReXhEUVVGRE96dERRVVZLTEVOQlFVTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkluWmhjaUJHYjNKdGMza2dQU0J5WlhGMWFYSmxLQ2N1THk0dUwzTnlZeTl0WVdsdUxtcHpKeWs3WEc1Y2JtUmxjMk55YVdKbEtDZEZiR1Z0Wlc1MEp5d2dablZ1WTNScGIyNG9LU0I3WEc1Y2JpQWdhWFFvSjNOb2IzVnNaQ0J5WlhSMWNtNGdjR0Z6YzJWa0lHRnVaQ0J6WlhSV1lXeDFaU2dwSUhaaGJIVmxJSGRvWlc0Z2RYTnBibWNnWjJWMFZtRnNkV1VvS1Njc0lHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQmNiaUFnSUNCMllYSWdWR1Z6ZEVsdWNIVjBJRDBnVW1WaFkzUXVZM0psWVhSbFEyeGhjM01vZTF4dUlDQWdJQ0FnYldsNGFXNXpPaUJiUm05eWJYTjVMazFwZUdsdVhTeGNiaUFnSUNBZ0lIVndaR0YwWlZaaGJIVmxPaUJtZFc1amRHbHZiaUFvWlhabGJuUXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXpaWFJXWVd4MVpTaGxkbVZ1ZEM1MFlYSm5aWFF1ZG1Gc2RXVXBPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQWdJSEpsYm1SbGNqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnUEdsdWNIVjBJSFpoYkhWbFBYdDBhR2x6TG1kbGRGWmhiSFZsS0NsOUlHOXVRMmhoYm1kbFBYdDBhR2x6TG5Wd1pHRjBaVlpoYkhWbGZTOCtYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzRnSUNBZ2RtRnlJR1p2Y20wZ1BTQlVaWE4wVlhScGJITXVjbVZ1WkdWeVNXNTBiMFJ2WTNWdFpXNTBLRnh1SUNBZ0lDQWdQRVp2Y20xemVTNUdiM0p0UGx4dUlDQWdJQ0FnSUNBOFZHVnpkRWx1Y0hWMElHNWhiV1U5WENKbWIyOWNJaUIyWVd4MVpUMWNJbVp2YjF3aUx6NWNiaUFnSUNBZ0lEd3ZSbTl5YlhONUxrWnZjbTArWEc0Z0lDQWdLVHRjYmx4dUlDQWdJSFpoY2lCcGJuQjFkQ0E5SUZSbGMzUlZkR2xzY3k1bWFXNWtVbVZ1WkdWeVpXUkVUMDFEYjIxd2IyNWxiblJYYVhSb1ZHRm5LR1p2Y20wc0lDZEpUbEJWVkNjcE8xeHVJQ0FnSUdWNGNHVmpkQ2hwYm5CMWRDNW5aWFJFVDAxT2IyUmxLQ2t1ZG1Gc2RXVXBMblJ2UW1Vb0oyWnZieWNwTzF4dUlDQWdJRlJsYzNSVmRHbHNjeTVUYVcxMWJHRjBaUzVqYUdGdVoyVW9hVzV3ZFhRc0lIdDBZWEpuWlhRNklIdDJZV3gxWlRvZ0oyWnZiMkpoY2lkOWZTazdYRzRnSUNBZ1pYaHdaV04wS0dsdWNIVjBMbWRsZEVSUFRVNXZaR1VvS1M1MllXeDFaU2t1ZEc5Q1pTZ25abTl2WW1GeUp5azdYRzVjYmlBZ2ZTazdYRzVjYmlBZ2FYUW9KM05vYjNWc1pDQnlaWFIxY200Z2RISjFaU0J2Y2lCbVlXeHpaU0IzYUdWdUlHTmhiR3hwYm1jZ2FHRnpWbUZzZFdVb0tTQmtaWEJsYm1ScGJtY2diMjRnZG1Gc2RXVWdaWGhwYzNSaGJtTmxKeXdnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUZ4dUlDQWdJSFpoY2lCeVpYTmxkQ0E5SUc1MWJHdzdYRzRnSUNBZ2RtRnlJRlJsYzNSSmJuQjFkQ0E5SUZKbFlXTjBMbU55WldGMFpVTnNZWE56S0h0Y2JpQWdJQ0FnSUcxcGVHbHVjem9nVzBadmNtMXplUzVOYVhocGJsMHNYRzRnSUNBZ0lDQmpiMjF3YjI1bGJuUkVhV1JOYjNWdWREb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYTmxkQ0E5SUhSb2FYTXVjbVZ6WlhSV1lXeDFaVHRjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0IxY0dSaGRHVldZV3gxWlRvZ1puVnVZM1JwYjI0Z0tHVjJaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YzJWMFZtRnNkV1VvWlhabGJuUXVkR0Z5WjJWMExuWmhiSFZsS1R0Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlEeHBibkIxZENCMllXeDFaVDE3ZEdocGN5NW5aWFJXWVd4MVpTZ3BmU0J2YmtOb1lXNW5aVDE3ZEdocGN5NTFjR1JoZEdWV1lXeDFaWDB2UGx4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQWdJSFpoY2lCbWIzSnRJRDBnVkdWemRGVjBhV3h6TG5KbGJtUmxja2x1ZEc5RWIyTjFiV1Z1ZENoY2JpQWdJQ0FnSUR4R2IzSnRjM2t1Um05eWJUNWNiaUFnSUNBZ0lDQWdQRlJsYzNSSmJuQjFkQ0J1WVcxbFBWd2labTl2WENJZ2RtRnNkV1U5WENKbWIyOWNJaTgrWEc0Z0lDQWdJQ0E4TDBadmNtMXplUzVHYjNKdFBseHVJQ0FnSUNrN1hHNWNiaUFnSUNCMllYSWdhVzV3ZFhRZ1BTQlVaWE4wVlhScGJITXVabWx1WkZKbGJtUmxjbVZrUkU5TlEyOXRjRzl1Wlc1MFYybDBhRlJoWnlobWIzSnRMQ0FuU1U1UVZWUW5LVHRjYmlBZ0lDQnlaWE5sZENncE8xeHVJQ0FnSUdWNGNHVmpkQ2hwYm5CMWRDNW5aWFJFVDAxT2IyUmxLQ2t1ZG1Gc2RXVXBMblJ2UW1Vb0p5Y3BPMXh1WEc0Z0lIMHBPMXh1WEc0Z0lHbDBLQ2R6YUc5MWJHUWdjbVYwZFhKdUlHVnljbTl5SUcxbGMzTmhaMlVnY0dGemMyVmtJSGRvWlc0Z1kyRnNiR2x1WnlCblpYUkZjbkp2Y2sxbGMzTmhaMlVvS1Njc0lHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQmNiaUFnSUNCMllYSWdaMlYwUlhKeWIzSk5aWE56WVdkbElEMGdiblZzYkR0Y2JpQWdJQ0IyWVhJZ1ZHVnpkRWx1Y0hWMElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdiV2w0YVc1ek9pQmJSbTl5YlhONUxrMXBlR2x1WFN4Y2JpQWdJQ0FnSUdOdmJYQnZibVZ1ZEVScFpFMXZkVzUwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJR2RsZEVWeWNtOXlUV1Z6YzJGblpTQTlJSFJvYVhNdVoyVjBSWEp5YjNKTlpYTnpZV2RsTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUhWd1pHRjBaVlpoYkhWbE9pQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYUldZV3gxWlNobGRtVnVkQzUwWVhKblpYUXVkbUZzZFdVcE8xeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lISmxibVJsY2pvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdQR2x1Y0hWMElIWmhiSFZsUFh0MGFHbHpMbWRsZEZaaGJIVmxLQ2w5SUc5dVEyaGhibWRsUFh0MGFHbHpMblZ3WkdGMFpWWmhiSFZsZlM4K1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJQ0FnZG1GeUlHWnZjbTBnUFNCVVpYTjBWWFJwYkhNdWNtVnVaR1Z5U1c1MGIwUnZZM1Z0Wlc1MEtGeHVJQ0FnSUNBZ1BFWnZjbTF6ZVM1R2IzSnRQbHh1SUNBZ0lDQWdJQ0E4VkdWemRFbHVjSFYwSUc1aGJXVTlYQ0ptYjI5Y0lpQjJZV3gxWlQxY0ltWnZiMXdpSUhaaGJHbGtZWFJwYjI1elBWd2lhWE5GYldGcGJGd2lJSFpoYkdsa1lYUnBiMjVGY25KdmNqMWNJa2hoY3lCMGJ5QmlaU0JsYldGcGJGd2lMejVjYmlBZ0lDQWdJRHd2Um05eWJYTjVMa1p2Y20wK1hHNGdJQ0FnS1R0Y2JseHVJQ0FnSUdWNGNHVmpkQ2huWlhSRmNuSnZjazFsYzNOaFoyVW9LU2t1ZEc5Q1pTZ25TR0Z6SUhSdklHSmxJR1Z0WVdsc0p5azdYRzVjYmlBZ2ZTazdYRzVjYmlBZ2FYUW9KM05vYjNWc1pDQnlaWFIxY200Z2MyVnlkbVZ5SUdWeWNtOXlJRzFsYzNOaFoyVWdkMmhsYmlCallXeHNhVzVuSUdkbGRFVnljbTl5VFdWemMyRm5aU2dwSnl3Z1puVnVZM1JwYjI0Z0tHUnZibVVwSUh0Y2JpQWdJQ0JjYmlBZ0lDQnFZWE50YVc1bExrRnFZWGd1YVc1emRHRnNiQ2dwTzF4dVhHNGdJQ0FnZG1GeUlHZGxkRVZ5Y205eVRXVnpjMkZuWlNBOUlHNTFiR3c3WEc0Z0lDQWdkbUZ5SUZSbGMzUkpibkIxZENBOUlGSmxZV04wTG1OeVpXRjBaVU5zWVhOektIdGNiaUFnSUNBZ0lHMXBlR2x1Y3pvZ1cwWnZjbTF6ZVM1TmFYaHBibDBzWEc0Z0lDQWdJQ0JqYjIxd2IyNWxiblJFYVdSTmIzVnVkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQm5aWFJGY25KdmNrMWxjM05oWjJVZ1BTQjBhR2x6TG1kbGRFVnljbTl5VFdWemMyRm5aVHRjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0IxY0dSaGRHVldZV3gxWlRvZ1puVnVZM1JwYjI0Z0tHVjJaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YzJWMFZtRnNkV1VvWlhabGJuUXVkR0Z5WjJWMExuWmhiSFZsS1R0Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlEeHBibkIxZENCMllXeDFaVDE3ZEdocGN5NW5aWFJXWVd4MVpTZ3BmU0J2YmtOb1lXNW5aVDE3ZEdocGN5NTFjR1JoZEdWV1lXeDFaWDB2UGx4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQWdJSFpoY2lCbWIzSnRJRDBnVkdWemRGVjBhV3h6TG5KbGJtUmxja2x1ZEc5RWIyTjFiV1Z1ZENoY2JpQWdJQ0FnSUR4R2IzSnRjM2t1Um05eWJTQjFjbXc5WENJdmRYTmxjbk5jSWo1Y2JpQWdJQ0FnSUNBZ1BGUmxjM1JKYm5CMWRDQnVZVzFsUFZ3aVptOXZYQ0lnZG1Gc2RXVTlYQ0ptYjI5Y0lpQjJZV3hwWkdGMGFXOXVjejFjSW1selJXMWhhV3hjSWlCMllXeHBaR0YwYVc5dVJYSnliM0k5WENKSVlYTWdkRzhnWW1VZ1pXMWhhV3hjSWk4K1hHNGdJQ0FnSUNBOEwwWnZjbTF6ZVM1R2IzSnRQbHh1SUNBZ0lDazdYRzVjYmlBZ0lDQjJZWElnWm05eWJTQTlJRlJsYzNSVmRHbHNjeTVUYVcxMWJHRjBaUzV6ZFdKdGFYUW9abTl5YlM1blpYUkVUMDFPYjJSbEtDa3BPMXh1WEc0Z0lDQWdhbUZ6YldsdVpTNUJhbUY0TG5KbGNYVmxjM1J6TG0xdmMzUlNaV05sYm5Rb0tTNXlaWE53YjI1a1YybDBhQ2g3WEc0Z0lDQWdJQ0J6ZEdGMGRYTTZJRFV3TUN4Y2JpQWdJQ0FnSUdOdmJuUmxiblJVZVhCbE9pQW5ZWEJ3YkdsallYUnBiMjR2YW5OdmJpY3NYRzRnSUNBZ0lDQnlaWE53YjI1elpWUmxlSFE2SUNkN1hDSm1iMjljSWpvZ1hDSmlZWEpjSW4wblhHNGdJQ0FnZlNsY2JseHVJQ0FnSUhObGRGUnBiV1Z2ZFhRb1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdaWGh3WldOMEtHZGxkRVZ5Y205eVRXVnpjMkZuWlNncEtTNTBiMEpsS0NkaVlYSW5LVHRjYmlBZ0lDQWdJR3BoYzIxcGJtVXVRV3BoZUM1MWJtbHVjM1JoYkd3b0tUdGNiaUFnSUNBZ0lHUnZibVVvS1R0Y2JpQWdJQ0I5TENBd0tUdGNibHh1SUNCOUtUdGNibHh1SUNCcGRDZ25jMmh2ZFd4a0lISmxkSFZ5YmlCMGNuVmxJRzl5SUdaaGJITmxJSGRvWlc0Z1kyRnNiR2x1WnlCcGMxWmhiR2xrS0NrZ1pHVndaVzVrYVc1bklHOXVJSFpoYkdsa0lITjBZWFJsSnl3Z1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lGeHVJQ0FnSUhaaGNpQnBjMVpoYkdsa0lEMGdiblZzYkR0Y2JpQWdJQ0IyWVhJZ1ZHVnpkRWx1Y0hWMElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdiV2w0YVc1ek9pQmJSbTl5YlhONUxrMXBlR2x1WFN4Y2JpQWdJQ0FnSUdOdmJYQnZibVZ1ZEVScFpFMXZkVzUwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJR2x6Vm1Gc2FXUWdQU0IwYUdsekxtbHpWbUZzYVdRN1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2RYQmtZWFJsVm1Gc2RXVTZJR1oxYm1OMGFXOXVJQ2hsZG1WdWRDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxkRlpoYkhWbEtHVjJaVzUwTG5SaGNtZGxkQzUyWVd4MVpTazdYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdjbVZ1WkdWeU9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUE4YVc1d2RYUWdkbUZzZFdVOWUzUm9hWE11WjJWMFZtRnNkV1VvS1gwZ2IyNURhR0Z1WjJVOWUzUm9hWE11ZFhCa1lYUmxWbUZzZFdWOUx6NWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtUdGNiaUFnSUNCMllYSWdabTl5YlNBOUlGUmxjM1JWZEdsc2N5NXlaVzVrWlhKSmJuUnZSRzlqZFcxbGJuUW9YRzRnSUNBZ0lDQThSbTl5YlhONUxrWnZjbTBnZFhKc1BWd2lMM1Z6WlhKelhDSStYRzRnSUNBZ0lDQWdJRHhVWlhOMFNXNXdkWFFnYm1GdFpUMWNJbVp2YjF3aUlIWmhiSFZsUFZ3aVptOXZYQ0lnZG1Gc2FXUmhkR2x2Ym5NOVhDSnBjMFZ0WVdsc1hDSXZQbHh1SUNBZ0lDQWdQQzlHYjNKdGMza3VSbTl5YlQ1Y2JpQWdJQ0FwTzF4dVhHNGdJQ0FnWlhod1pXTjBLR2x6Vm1Gc2FXUW9LU2t1ZEc5Q1pTaG1ZV3h6WlNrN1hHNGdJQ0FnZG1GeUlHbHVjSFYwSUQwZ1ZHVnpkRlYwYVd4ekxtWnBibVJTWlc1a1pYSmxaRVJQVFVOdmJYQnZibVZ1ZEZkcGRHaFVZV2NvWm05eWJTd2dKMGxPVUZWVUp5azdYRzRnSUNBZ1ZHVnpkRlYwYVd4ekxsTnBiWFZzWVhSbExtTm9ZVzVuWlNocGJuQjFkQ3dnZTNSaGNtZGxkRG9nZTNaaGJIVmxPaUFuWm05dlFHWnZieTVqYjIwbmZYMHBPMXh1SUNBZ0lHVjRjR1ZqZENocGMxWmhiR2xrS0NrcExuUnZRbVVvZEhKMVpTazdYRzVjYmlBZ2ZTazdYRzVjYmlBZ2FYUW9KM05vYjNWc1pDQnlaWFIxY200Z2RISjFaU0J2Y2lCbVlXeHpaU0IzYUdWdUlHTmhiR3hwYm1jZ2FYTlNaWEYxYVhKbFpDZ3BJR1JsY0dWdVpHbHVaeUJ2YmlCd1lYTnpaV1FnY21WeGRXbHlaV1FnWVhSMGNtbGlkWFJsSnl3Z1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lGeHVJQ0FnSUhaaGNpQnBjMUpsY1hWcGNtVmtjeUE5SUZ0ZE8xeHVJQ0FnSUhaaGNpQlVaWE4wU1c1d2RYUWdQU0JTWldGamRDNWpjbVZoZEdWRGJHRnpjeWg3WEc0Z0lDQWdJQ0J0YVhocGJuTTZJRnRHYjNKdGMza3VUV2w0YVc1ZExGeHVJQ0FnSUNBZ1kyOXRjRzl1Wlc1MFJHbGtUVzkxYm5RNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnYVhOU1pYRjFhWEpsWkhNdWNIVnphQ2gwYUdsekxtbHpVbVZ4ZFdseVpXUXBPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQWdJSFZ3WkdGMFpWWmhiSFZsT2lCbWRXNWpkR2x2YmlBb1pYWmxiblFwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSV1lXeDFaU2hsZG1WdWRDNTBZWEpuWlhRdWRtRnNkV1VwTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUhKbGJtUmxjam9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1BHbHVjSFYwSUhaaGJIVmxQWHQwYUdsekxtZGxkRlpoYkhWbEtDbDlJRzl1UTJoaGJtZGxQWHQwYUdsekxuVndaR0YwWlZaaGJIVmxmUzgrWEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lDQWdkbUZ5SUdadmNtMGdQU0JVWlhOMFZYUnBiSE11Y21WdVpHVnlTVzUwYjBSdlkzVnRaVzUwS0Z4dUlDQWdJQ0FnUEVadmNtMXplUzVHYjNKdElIVnliRDFjSWk5MWMyVnljMXdpUGx4dUlDQWdJQ0FnSUNBOFZHVnpkRWx1Y0hWMElHNWhiV1U5WENKbWIyOWNJaUIyWVd4MVpUMWNJbVp2YjF3aUx6NWNiaUFnSUNBZ0lDQWdQRlJsYzNSSmJuQjFkQ0J1WVcxbFBWd2labTl2WENJZ2RtRnNkV1U5WENKbWIyOWNJaUJ5WlhGMWFYSmxaQzgrWEc0Z0lDQWdJQ0E4TDBadmNtMXplUzVHYjNKdFBseHVJQ0FnSUNrN1hHNWNiaUFnSUNCbGVIQmxZM1FvYVhOU1pYRjFhWEpsWkhOYk1GMG9LU2t1ZEc5Q1pTaG1ZV3h6WlNrN1hHNGdJQ0FnWlhod1pXTjBLR2x6VW1WeGRXbHlaV1J6V3pGZEtDa3BMblJ2UW1Vb2RISjFaU2s3WEc1Y2JpQWdmU2s3WEc1Y2JpQWdhWFFvSjNOb2IzVnNaQ0J5WlhSMWNtNGdkSEoxWlNCdmNpQm1ZV3h6WlNCM2FHVnVJR05oYkd4cGJtY2djMmh2ZDFKbGNYVnBjbVZrS0NrZ1pHVndaVzVrYVc1bklHOXVJR2x1Y0hWMElHSmxhVzVuSUdWdGNIUjVJR0Z1WkNCeVpYRjFhWEpsWkNCcGN5QndZWE56WldRc0lHOXlJRzV2ZENjc0lHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQmNiaUFnSUNCMllYSWdjMmh2ZDFKbGNYVnBjbVZrY3lBOUlGdGRPMXh1SUNBZ0lIWmhjaUJVWlhOMFNXNXdkWFFnUFNCU1pXRmpkQzVqY21WaGRHVkRiR0Z6Y3loN1hHNGdJQ0FnSUNCdGFYaHBibk02SUZ0R2IzSnRjM2t1VFdsNGFXNWRMRnh1SUNBZ0lDQWdZMjl0Y0c5dVpXNTBSR2xrVFc5MWJuUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2MyaHZkMUpsY1hWcGNtVmtjeTV3ZFhOb0tIUm9hWE11YzJodmQxSmxjWFZwY21Wa0tUdGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ0lDQjFjR1JoZEdWV1lXeDFaVG9nWm5WdVkzUnBiMjRnS0dWMlpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlYwVm1Gc2RXVW9aWFpsYm5RdWRHRnlaMlYwTG5aaGJIVmxLVHRjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUR4cGJuQjFkQ0IyWVd4MVpUMTdkR2hwY3k1blpYUldZV3gxWlNncGZTQnZia05vWVc1blpUMTdkR2hwY3k1MWNHUmhkR1ZXWVd4MVpYMHZQbHh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1SUNBZ0lIWmhjaUJtYjNKdElEMGdWR1Z6ZEZWMGFXeHpMbkpsYm1SbGNrbHVkRzlFYjJOMWJXVnVkQ2hjYmlBZ0lDQWdJRHhHYjNKdGMza3VSbTl5YlNCMWNtdzlYQ0l2ZFhObGNuTmNJajVjYmlBZ0lDQWdJQ0FnUEZSbGMzUkpibkIxZENCdVlXMWxQVndpUVZ3aUlIWmhiSFZsUFZ3aVptOXZYQ0l2UGx4dUlDQWdJQ0FnSUNBOFZHVnpkRWx1Y0hWMElHNWhiV1U5WENKQ1hDSWdkbUZzZFdVOVhDSmNJaUJ5WlhGMWFYSmxaQzgrWEc0Z0lDQWdJQ0FnSUR4VVpYTjBTVzV3ZFhRZ2JtRnRaVDFjSWtOY0lpQjJZV3gxWlQxY0lsd2lMejVjYmlBZ0lDQWdJRHd2Um05eWJYTjVMa1p2Y20wK1hHNGdJQ0FnS1R0Y2JseHVJQ0FnSUdWNGNHVmpkQ2h6YUc5M1VtVnhkV2x5WldSeld6QmRLQ2twTG5SdlFtVW9abUZzYzJVcE8xeHVJQ0FnSUdWNGNHVmpkQ2h6YUc5M1VtVnhkV2x5WldSeld6RmRLQ2twTG5SdlFtVW9kSEoxWlNrN1hHNGdJQ0FnWlhod1pXTjBLSE5vYjNkU1pYRjFhWEpsWkhOYk1sMG9LU2t1ZEc5Q1pTaG1ZV3h6WlNrN1hHNWNiaUFnZlNrN1hHNWNiaUFnYVhRb0ozTm9iM1ZzWkNCeVpYUjFjbTRnZEhKMVpTQnZjaUJtWVd4elpTQjNhR1Z1SUdOaGJHeHBibWNnYzJodmQwVnljbTl5S0NrZ1pHVndaVzVrYVc1bklHOXVJSFpoYkhWbElHbHpJR2x1ZG1Gc2FXUWdiM0lnWVNCelpYSjJaWElnWlhKeWIzSWdhR0Z6SUdGeWNtbDJaV1FzSUc5eUlHNXZkQ2NzSUdaMWJtTjBhVzl1SUNoa2IyNWxLU0I3WEc1Y2JpQWdJQ0IyWVhJZ2MyaHZkMFZ5Y205eUlEMGdiblZzYkR0Y2JpQWdJQ0IyWVhJZ1ZHVnpkRWx1Y0hWMElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdiV2w0YVc1ek9pQmJSbTl5YlhONUxrMXBlR2x1WFN4Y2JpQWdJQ0FnSUdOdmJYQnZibVZ1ZEVScFpFMXZkVzUwT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSE5vYjNkRmNuSnZjaUE5SUhSb2FYTXVjMmh2ZDBWeWNtOXlPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQWdJSFZ3WkdGMFpWWmhiSFZsT2lCbWRXNWpkR2x2YmlBb1pYWmxiblFwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSV1lXeDFaU2hsZG1WdWRDNTBZWEpuWlhRdWRtRnNkV1VwTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUhKbGJtUmxjam9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1BHbHVjSFYwSUhaaGJIVmxQWHQwYUdsekxtZGxkRlpoYkhWbEtDbDlJRzl1UTJoaGJtZGxQWHQwYUdsekxuVndaR0YwWlZaaGJIVmxmUzgrWEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lDQWdkbUZ5SUdadmNtMGdQU0JVWlhOMFZYUnBiSE11Y21WdVpHVnlTVzUwYjBSdlkzVnRaVzUwS0Z4dUlDQWdJQ0FnUEVadmNtMXplUzVHYjNKdElIVnliRDFjSWk5MWMyVnljMXdpUGx4dUlDQWdJQ0FnSUNBOFZHVnpkRWx1Y0hWMElHNWhiV1U5WENKbWIyOWNJaUIyWVd4MVpUMWNJbVp2YjF3aUlIWmhiR2xrWVhScGIyNXpQVndpYVhORmJXRnBiRndpSUhaaGJHbGtZWFJwYjI1RmNuSnZjajFjSWxSb2FYTWdhWE1nYm05MElHRnVJR1Z0WVdsc1hDSXZQbHh1SUNBZ0lDQWdQQzlHYjNKdGMza3VSbTl5YlQ1Y2JpQWdJQ0FwTzF4dVhHNGdJQ0FnWlhod1pXTjBLSE5vYjNkRmNuSnZjaWdwS1M1MGIwSmxLSFJ5ZFdVcE8xeHVYRzRnSUNBZ2RtRnlJR2x1Y0hWMElEMGdWR1Z6ZEZWMGFXeHpMbVpwYm1SU1pXNWtaWEpsWkVSUFRVTnZiWEJ2Ym1WdWRGZHBkR2hVWVdjb1ptOXliU3dnSjBsT1VGVlVKeWs3WEc0Z0lDQWdWR1Z6ZEZWMGFXeHpMbE5wYlhWc1lYUmxMbU5vWVc1blpTaHBibkIxZEN3Z2UzUmhjbWRsZERvZ2UzWmhiSFZsT2lBblptOXZRR1p2Ynk1amIyMG5mWDBwTzF4dUlDQWdJR1Y0Y0dWamRDaHphRzkzUlhKeWIzSW9LU2t1ZEc5Q1pTaG1ZV3h6WlNrN1hHNWNiaUFnSUNCcVlYTnRhVzVsTGtGcVlYZ3VhVzV6ZEdGc2JDZ3BPMXh1SUNBZ0lGUmxjM1JWZEdsc2N5NVRhVzExYkdGMFpTNXpkV0p0YVhRb1ptOXliUzVuWlhSRVQwMU9iMlJsS0NrcE95QWdJQ0JjYmlBZ0lDQnFZWE50YVc1bExrRnFZWGd1Y21WeGRXVnpkSE11Ylc5emRGSmxZMlZ1ZENncExuSmxjM0J2Ym1SWGFYUm9LSHRjYmlBZ0lDQWdJSE4wWVhSMWN6b2dOVEF3TEZ4dUlDQWdJQ0FnY21WemNHOXVjMlZVZVhCbE9pQW5ZWEJ3YkdsallYUnBiMjR2YW5OdmJpY3NYRzRnSUNBZ0lDQnlaWE53YjI1elpWUmxlSFE2SUNkN1hDSm1iMjljSWpvZ1hDSkZiV0ZwYkNCaGJISmxZV1I1SUdWNGFYTjBjMXdpZlNkY2JpQWdJQ0I5S1R0Y2JpQWdJQ0J6WlhSVWFXMWxiM1YwS0daMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lHVjRjR1ZqZENoemFHOTNSWEp5YjNJb0tTa3VkRzlDWlNoMGNuVmxLVHRjYmlBZ0lDQWdJR3BoYzIxcGJtVXVRV3BoZUM1MWJtbHVjM1JoYkd3b0tUdGNiaUFnSUNBZ0lHUnZibVVvS1R0Y2JpQWdJQ0I5TENBd0tUdGNiaUFnZlNrN1hHNWNiaUFnYVhRb0ozTm9iM1ZzWkNCeVpYUjFjbTRnZEhKMVpTQnZjaUJtWVd4elpTQjNhR1Z1SUdOaGJHeHBibWNnYVhOUWNtVnpkR2x1WlNncElHUmxjR1Z1WkdsdVp5QnZiaUJwYm5CMWRDQm9ZWE1nWW1WbGJpQmNJblJ2ZFdOb1pXUmNJaUJ2Y2lCdWIzUW5MQ0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnWEc0Z0lDQWdkbUZ5SUdselVISnBjM1JwYm1VZ1BTQnVkV3hzTzF4dUlDQWdJSFpoY2lCVVpYTjBTVzV3ZFhRZ1BTQlNaV0ZqZEM1amNtVmhkR1ZEYkdGemN5aDdYRzRnSUNBZ0lDQnRhWGhwYm5NNklGdEdiM0p0YzNrdVRXbDRhVzVkTEZ4dUlDQWdJQ0FnWTI5dGNHOXVaVzUwUkdsa1RXOTFiblE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdhWE5RY21semRHbHVaU0E5SUhSb2FYTXVhWE5RY21semRHbHVaVHRjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0IxY0dSaGRHVldZV3gxWlRvZ1puVnVZM1JwYjI0Z0tHVjJaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YzJWMFZtRnNkV1VvWlhabGJuUXVkR0Z5WjJWMExuWmhiSFZsS1R0Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlEeHBibkIxZENCMllXeDFaVDE3ZEdocGN5NW5aWFJXWVd4MVpTZ3BmU0J2YmtOb1lXNW5aVDE3ZEdocGN5NTFjR1JoZEdWV1lXeDFaWDB2UGx4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQWdJSFpoY2lCbWIzSnRJRDBnVkdWemRGVjBhV3h6TG5KbGJtUmxja2x1ZEc5RWIyTjFiV1Z1ZENoY2JpQWdJQ0FnSUR4R2IzSnRjM2t1Um05eWJTQjFjbXc5WENJdmRYTmxjbk5jSWo1Y2JpQWdJQ0FnSUNBZ1BGUmxjM1JKYm5CMWRDQnVZVzFsUFZ3aVFWd2lJSFpoYkhWbFBWd2labTl2WENJdlBseHVJQ0FnSUNBZ1BDOUdiM0p0YzNrdVJtOXliVDVjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdaWGh3WldOMEtHbHpVSEpwYzNScGJtVW9LU2t1ZEc5Q1pTaDBjblZsS1R0Y2JpQWdJQ0IyWVhJZ2FXNXdkWFFnUFNCVVpYTjBWWFJwYkhNdVptbHVaRkpsYm1SbGNtVmtSRTlOUTI5dGNHOXVaVzUwVjJsMGFGUmhaeWhtYjNKdExDQW5TVTVRVlZRbktUdGNiaUFnSUNCVVpYTjBWWFJwYkhNdVUybHRkV3hoZEdVdVkyaGhibWRsS0dsdWNIVjBMQ0I3ZEdGeVoyVjBPaUI3ZG1Gc2RXVTZJQ2RtYjI4bmZYMHBPMXh1SUNBZ0lHVjRjR1ZqZENocGMxQnlhWE4wYVc1bEtDa3BMblJ2UW1Vb1ptRnNjMlVwTzF4dUlDQWdJRnh1SUNCOUtUdGNibHh1YVhRb0ozTm9iM1ZzWkNCaGJHeHZkeUJoYmlCMWJtUmxabWx1WldRZ2RtRnNkV1VnZEc4Z1ltVWdkWEJrWVhSbFpDQjBieUJoSUhaaGJIVmxKeXdnWm5WdVkzUnBiMjRnS0dSdmJtVXBJSHRjYmlBZ0lDQjJZWElnVkdWemRFbHVjSFYwSUQwZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNb2UxeHVJQ0FnSUNBZ2JXbDRhVzV6T2lCYlJtOXliWE41TGsxcGVHbHVYU3hjYmlBZ0lDQWdJSEpsYm1SbGNqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnUEdsdWNIVjBJSFpoYkhWbFBYdDBhR2x6TG1kbGRGWmhiSFZsS0NsOUx6NWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtUdGNiaUFnSUNCMllYSWdWR1Z6ZEVadmNtMGdQU0JTWldGamRDNWpjbVZoZEdWRGJHRnpjeWg3WEc0Z0lDQWdJQ0JuWlhSSmJtbDBhV0ZzVTNSaGRHVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUh0MllXeDFaVG9nZFc1a1pXWnBibVZrZlR0Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnSUNCamFHRnVaMlZXWVd4MVpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sZEZOMFlYUmxLSHRjYmlBZ0lDQWdJQ0FnSUNCMllXeDFaVG9nSjJadmJ5ZGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnY21WdVpHVnlPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBb1hHNGdJQ0FnSUNBZ0lDQWdQRVp2Y20xemVTNUdiM0p0SUhWeWJEMWNJaTkxYzJWeWMxd2lQbHh1SUNBZ0lDQWdJQ0FnSUNBZ1BGUmxjM1JKYm5CMWRDQnVZVzFsUFZ3aVFWd2lJSFpoYkhWbFBYdDBhR2x6TG5OMFlYUmxMblpoYkhWbGZTOCtYRzRnSUNBZ0lDQWdJQ0FnUEM5R2IzSnRjM2t1Um05eWJUNWNiaUFnSUNBZ0lDQWdLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmlBZ0lDQjJZWElnWm05eWJTQTlJRlJsYzNSVmRHbHNjeTV5Wlc1a1pYSkpiblJ2Ukc5amRXMWxiblFvWEc0Z0lDQWdJQ0E4VkdWemRFWnZjbTB2UGx4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0JtYjNKdExtTm9ZVzVuWlZaaGJIVmxLQ2s3WEc0Z0lDQWdkbUZ5SUdsdWNIVjBJRDBnVkdWemRGVjBhV3h6TG1acGJtUlNaVzVrWlhKbFpFUlBUVU52YlhCdmJtVnVkRmRwZEdoVVlXY29abTl5YlN3Z0owbE9VRlZVSnlrN1hHNGdJQ0FnYzJWMFZHbHRaVzkxZENobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQmxlSEJsWTNRb2FXNXdkWFF1WjJWMFJFOU5UbTlrWlNncExuWmhiSFZsS1M1MGIwSmxLQ2RtYjI4bktUdGNiaUFnSUNBZ0lHUnZibVVvS1R0Y2JpQWdJQ0I5TENBd0tUdGNiaUFnZlNrN0lDQmNibHh1YVhRb0ozTm9iM1ZzWkNCaVpTQmhZbXhsSUhSdklHUjVibUZ0YVdOaGJHeDVJR05vWVc1blpTQjJZV3hwWkdGMGFXOXVjeWNzSUdaMWJtTjBhVzl1SUNoa2IyNWxLU0I3WEc1Y2JpQWdJQ0IyWVhJZ2FYTkpiblpoYkdsa0lEMGdabUZzYzJVN1hHNGdJQ0FnZG1GeUlGUmxjM1JKYm5CMWRDQTlJRkpsWVdOMExtTnlaV0YwWlVOc1lYTnpLSHRjYmlBZ0lDQWdJRzFwZUdsdWN6b2dXMFp2Y20xemVTNU5hWGhwYmwwc1hHNGdJQ0FnSUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlEeHBibkIxZENCMllXeDFaVDE3ZEdocGN5NW5aWFJXWVd4MVpTZ3BmUzgrWEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lDQWdkbUZ5SUZSbGMzUkdiM0p0SUQwZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNb2UxeHVJQ0FnSUNBZ1oyVjBTVzVwZEdsaGJGTjBZWFJsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjdkbUZzZFdVNklDZG1iMjlBWW1GeUxtTnZiU2NzSUhaaGJHbGtZWFJwYjI1ek9pQW5hWE5GYldGcGJDZDlPMXh1SUNBZ0lDQWdmU3hjYmlBZ0lDQWdJR05vWVc1blpWWmhiR2xrWVhScGIyNXpPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YzJWMFUzUmhkR1VvZTF4dUlDQWdJQ0FnSUNBZ0lIWmhiR2xrWVhScGIyNXpPaUFuWlhGMVlXeHpPbVp2YnlkY2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdjMlYwU1c1MllXeHBaRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExteHZaeWduVW5WdWJtbHVaeUJwZENFbktUdGNiaUFnSUNBZ0lDQWdhWE5KYm5aaGJHbGtJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJQ2hjYmlBZ0lDQWdJQ0FnSUNBOFJtOXliWE41TGtadmNtMGdkWEpzUFZ3aUwzVnpaWEp6WENJZ2IyNUpiblpoYkdsa1BYdDBhR2x6TG5ObGRFbHVkbUZzYVdSOVBseHVJQ0FnSUNBZ0lDQWdJQ0FnUEZSbGMzUkpibkIxZENCdVlXMWxQVndpUVZ3aUlIWmhiR2xrWVhScGIyNXpQWHQwYUdsekxuTjBZWFJsTG5aaGJHbGtZWFJwYjI1emZTQjJZV3gxWlQxN2RHaHBjeTV6ZEdGMFpTNTJZV3gxWlgwdlBseHVJQ0FnSUNBZ0lDQWdJRHd2Um05eWJYTjVMa1p2Y20wK1hHNGdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzRnSUNBZ2RtRnlJR1p2Y20wZ1BTQlVaWE4wVlhScGJITXVjbVZ1WkdWeVNXNTBiMFJ2WTNWdFpXNTBLRnh1SUNBZ0lDQWdQRlJsYzNSR2IzSnRMejVjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdabTl5YlM1amFHRnVaMlZXWVd4cFpHRjBhVzl1Y3lncE8xeHVJQ0FnSUhObGRGUnBiV1Z2ZFhRb1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdaWGh3WldOMEtHbHpTVzUyWVd4cFpDa3VkRzlDWlNoMGNuVmxLVHRjYmlBZ0lDQWdJR1J2Ym1Vb0tUdGNiaUFnSUNCOUxDQXdLVHRjYmlBZ2ZTazdJQ0JjYmx4dWZTazdYRzRpWFgwPSIsInZhciBGb3Jtc3kgPSByZXF1aXJlKCcuLy4uL3NyYy9tYWluLmpzJyk7XG5cbmRlc2NyaWJlKCdGb3Jtc3knLCBmdW5jdGlvbiAoKSB7XG5cbiAgZGVzY3JpYmUoJ1NldHRpbmcgdXAgYSBmb3JtJywgZnVuY3Rpb24gKCkge1xuXG4gICAgaXQoJ3Nob3VsZCByZW5kZXIgYSBmb3JtIGludG8gdGhlIGRvY3VtZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KCBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCBudWxsKSk7XG4gICAgICBleHBlY3QoZm9ybS5nZXRET01Ob2RlKCkudGFnTmFtZSkudG9FcXVhbCgnRk9STScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzZXQgYSBjbGFzcyBuYW1lIGlmIHBhc3NlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudCggUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge2NsYXNzTmFtZTogXCJmb29cIn0pKTtcbiAgICAgIGV4cGVjdChmb3JtLmdldERPTU5vZGUoKS5jbGFzc05hbWUpLnRvRXF1YWwoJ2ZvbycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBmb3IgbnVsbC91bmRlZmluZWQgY2hpbGRyZW4nLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgICAgY2hhbmdlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMuY2hhbmdlVmFsdWV9KVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdmFyIG1vZGVsID0gbnVsbDtcbiAgICAgIHZhciBUZXN0Rm9ybSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0Rm9ybVwiLFxuICAgICAgICBvblN1Ym1pdDogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgICAgICAgIG1vZGVsID0gZm9ybU1vZGVsO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge29uU3VibWl0OiAgdGhpcy5vblN1Ym1pdH0sIFxuICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaDFcIiwgbnVsbCwgXCJUZXN0XCIpLCBcbiAgICAgICAgICAgICAgIG51bGwsIFxuICAgICAgICAgICAgICAgdW5kZWZpbmVkLCBcbiAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcIm5hbWVcIiwgdmFsdWU6ICAnZm9vJyB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0Rm9ybSwgbnVsbCkpO1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIFRlc3RVdGlscy5TaW11bGF0ZS5zdWJtaXQoZm9ybS5nZXRET01Ob2RlKCkpO1xuICAgICAgICBleHBlY3QobW9kZWwpLnRvRXF1YWwoe25hbWU6ICdmb28nfSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgZm9yIGlucHV0cyBiZWluZyBhZGRlZCBkeW5hbWljYWxseScsIGZ1bmN0aW9uIChkb25lKSB7XG5cbiAgICAgIHZhciBpbnB1dHMgPSBbXTtcbiAgICAgIHZhciBmb3JjZVVwZGF0ZSA9IG51bGw7XG4gICAgICB2YXIgbW9kZWwgPSBudWxsO1xuICAgICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbClcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgVGVzdEZvcm0gPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdEZvcm1cIixcbiAgICAgICAgY29tcG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZm9yY2VVcGRhdGUgPSB0aGlzLmZvcmNlVXBkYXRlLmJpbmQodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgICAgICAgbW9kZWwgPSBmb3JtTW9kZWw7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiAoIFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge29uU3VibWl0OiB0aGlzLm9uU3VibWl0fSwgXG4gICAgICAgICAgICAgIGlucHV0c1xuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0Rm9ybSwgbnVsbCkgXG4gICAgICApO1xuXG4gICAgICAvLyBXYWl0IGJlZm9yZSBhZGRpbmcgdGhlIGlucHV0XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICBpbnB1dHMucHVzaChUZXN0SW5wdXQoe1xuICAgICAgICAgIG5hbWU6ICd0ZXN0J1xuICAgICAgICB9KSk7XG5cbiAgICAgICAgZm9yY2VVcGRhdGUoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgLy8gV2FpdCBmb3IgbmV4dCBldmVudCBsb29wLCBhcyB0aGF0IGRvZXMgdGhlIGZvcm1cbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIFRlc3RVdGlscy5TaW11bGF0ZS5zdWJtaXQoZm9ybS5nZXRET01Ob2RlKCkpO1xuICAgICAgICAgICAgZXhwZWN0KG1vZGVsLnRlc3QpLnRvQmVEZWZpbmVkKCk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgfSk7XG5cbiAgICAgIH0sIDEwKTtcblxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBkeW5hbWljYWxseSBhZGRlZCBpbnB1dHMgdG8gdXBkYXRlIHRoZSBmb3JtLW1vZGVsJywgZnVuY3Rpb24gKGRvbmUpIHtcblxuICAgICAgdmFyIGlucHV0cyA9IFtdO1xuICAgICAgdmFyIGZvcmNlVXBkYXRlID0gbnVsbDtcbiAgICAgIHZhciBtb2RlbCA9IG51bGw7XG4gICAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy5jaGFuZ2VWYWx1ZX0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIFRlc3RGb3JtID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RGb3JtXCIsXG4gICAgICAgIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGZvcmNlVXBkYXRlID0gdGhpcy5mb3JjZVVwZGF0ZS5iaW5kKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblN1Ym1pdDogZnVuY3Rpb24gKGZvcm1Nb2RlbCkge1xuICAgICAgICAgIG1vZGVsID0gZm9ybU1vZGVsO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gKCBcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvblN1Ym1pdDogdGhpcy5vblN1Ym1pdH0sIFxuICAgICAgICAgICAgICBpbnB1dHNcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudCggXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdEZvcm0sIG51bGwpIFxuICAgICAgKTtcblxuICAgICAgLy8gV2FpdCBiZWZvcmUgYWRkaW5nIHRoZSBpbnB1dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgaW5wdXRzLnB1c2goVGVzdElucHV0KHtcbiAgICAgICAgICBuYW1lOiAndGVzdCdcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGZvcmNlVXBkYXRlKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgIC8vIFdhaXQgZm9yIG5leHQgZXZlbnQgbG9vcCwgYXMgdGhhdCBkb2VzIHRoZSBmb3JtXG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKGZvcm0sICdJTlBVVCcpLCB7dGFyZ2V0OiB7dmFsdWU6ICdmb28nfX0pO1xuICAgICAgICAgICAgVGVzdFV0aWxzLlNpbXVsYXRlLnN1Ym1pdChmb3JtLmdldERPTU5vZGUoKSk7XG4gICAgICAgICAgICBleHBlY3QobW9kZWwudGVzdCkudG9CZSgnZm9vJyk7XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgfSk7XG5cbiAgICAgIH0sIDEwKTtcblxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIGR5bmFtaWNhbGx5IHVwZGF0ZWQgaW5wdXQgdG8gdXBkYXRlIHRoZSBmb3JtLW1vZGVsJywgZnVuY3Rpb24gKGRvbmUpIHtcblxuICAgICAgdmFyIGZvcmNlVXBkYXRlID0gbnVsbDtcbiAgICAgIHZhciBtb2RlbCA9IG51bGw7XG4gICAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy5jaGFuZ2VWYWx1ZX0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB2YXIgaW5wdXQ7XG4gICAgICB2YXIgVGVzdEZvcm0gPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdEZvcm1cIixcbiAgICAgICAgY29tcG9uZW50V2lsbE1vdW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZm9yY2VVcGRhdGUgPSB0aGlzLmZvcmNlVXBkYXRlLmJpbmQodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VibWl0OiBmdW5jdGlvbiAoZm9ybU1vZGVsKSB7XG4gICAgICAgICAgbW9kZWwgPSBmb3JtTW9kZWw7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlucHV0ID0gUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcInRlc3RcIiwgdmFsdWU6ICB0aGlzLnByb3BzLnZhbHVlfSk7XG5cbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge29uU3VibWl0OiB0aGlzLm9uU3VibWl0fSwgXG4gICAgICAgICAgICAgIGlucHV0XG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0Rm9ybSwge3ZhbHVlOiBcImZvb1wifSkpO1xuXG4gICAgICAvLyBXYWl0IGJlZm9yZSBjaGFuZ2luZyB0aGUgaW5wdXRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3JtLnNldFByb3BzKHt2YWx1ZTogJ2Jhcid9KTtcblxuICAgICAgICBmb3JjZVVwZGF0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gV2FpdCBmb3IgbmV4dCBldmVudCBsb29wLCBhcyB0aGF0IGRvZXMgdGhlIGZvcm1cbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIFRlc3RVdGlscy5TaW11bGF0ZS5zdWJtaXQoZm9ybS5nZXRET01Ob2RlKCkpO1xuICAgICAgICAgICAgZXhwZWN0KG1vZGVsLnRlc3QpLnRvQmUoJ2JhcicpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0sIDApO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICB9LCAxMCk7XG5cbiAgICB9KTtcblxuXG4gICAgaXQoJ3Nob3VsZCBpbnZhbGlkYXRlIGEgdmFsaWQgZm9ybSBpZiBkeW5hbWljYWxseSBpbnNlcnRlZCBpbnB1dCBpcyBpbnZhbGlkJywgZnVuY3Rpb24gKGRvbmUpIHtcblxuICAgICAgdmFyIGZvcmNlVXBkYXRlID0gbnVsbDtcbiAgICAgIHZhciBpc0ludmFsaWQgPSBmYWxzZTtcbiAgICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICAgIGNoYW5nZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLmNoYW5nZVZhbHVlfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG5cblxuICAgICAgdmFyIGlucHV0cyA9IFtUZXN0SW5wdXQoe1xuICAgICAgICBuYW1lOiAndGVzdCcsXG4gICAgICAgIHZhbGlkYXRpb25zOiAnaXNFbWFpbCcsXG4gICAgICAgIHZhbHVlOiAnZm9vQGJhci5jb20nXG4gICAgICB9KV07XG5cbiAgICAgIHZhciBUZXN0Rm9ybSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0Rm9ybVwiLFxuICAgICAgICBjb21wb25lbnRXaWxsTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBmb3JjZVVwZGF0ZSA9IHRoaXMuZm9yY2VVcGRhdGUuYmluZCh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0SW52YWxpZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlzSW52YWxpZCA9IHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiAoIFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge29uSW52YWxpZDogdGhpcy5zZXRJbnZhbGlkfSwgXG4gICAgICAgICAgICAgIGlucHV0c1xuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0Rm9ybSwgbnVsbCkgXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoaXNJbnZhbGlkKS50b0JlKGZhbHNlKTtcblxuICAgICAgaW5wdXRzLnB1c2goVGVzdElucHV0KHtcbiAgICAgICAgbmFtZTogJ3Rlc3QyJyxcbiAgICAgICAgdmFsaWRhdGlvbnM6ICdpc0VtYWlsJyxcbiAgICAgICAgdmFsdWU6ICdmb29AYmFyJ1xuICAgICAgfSkpO1xuXG5cbiAgICAgIGZvcmNlVXBkYXRlKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAvLyBXYWl0IGZvciBuZXh0IGV2ZW50IGxvb3AsIGFzIHRoYXQgZG9lcyB0aGUgZm9ybVxuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcbiAgICAgICAgICBleHBlY3QoaXNJbnZhbGlkKS50b0JlKHRydWUpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgIH0pO1xuXG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCB0cmlnZ2VyIG9uQ2hhbmdlIHdoZW4gZm9ybSBpcyBtb3VudGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGhhc0NoYW5nZWQgPSBqYXNtaW5lLmNyZWF0ZVNweSgnb25DaGFuZ2UnKTtcbiAgICAgIHZhciBUZXN0Rm9ybSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0Rm9ybVwiLFxuICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhc0NoYW5nZWQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvbkNoYW5nZTogdGhpcy5vbkNoYW5nZX0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RGb3JtLCBudWxsKSk7XG4gICAgICBleHBlY3QoaGFzQ2hhbmdlZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdHJpZ2dlciBvbkNoYW5nZSB3aGVuIGZvcm0gZWxlbWVudCBpcyBjaGFuZ2VkJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGhhc0NoYW5nZWQgPSBqYXNtaW5lLmNyZWF0ZVNweSgnb25DaGFuZ2UnKTtcbiAgICAgIHZhciBNeUlucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIk15SW5wdXRcIixcbiAgICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2V9KVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBUZXN0Rm9ybSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0Rm9ybVwiLFxuICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhc0NoYW5nZWQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvbkNoYW5nZTogdGhpcy5vbkNoYW5nZX0sIFxuICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KE15SW5wdXQsIHtuYW1lOiBcImZvb1wifSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RGb3JtLCBudWxsKSk7XG4gICAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKGZvcm0sICdJTlBVVCcpLCB7dGFyZ2V0OiB7dmFsdWU6ICdiYXInfX0pO1xuICAgICAgZXhwZWN0KGhhc0NoYW5nZWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdHJpZ2dlciBvbkNoYW5nZSB3aGVuIG5ldyBpbnB1dCBpcyBhZGRlZCB0byBmb3JtJywgZnVuY3Rpb24gKGRvbmUpIHtcbiAgICAgIHZhciBoYXNDaGFuZ2VkID0gamFzbWluZS5jcmVhdGVTcHkoJ29uQ2hhbmdlJyk7XG4gICAgICB2YXIgaW5wdXRzID0gW107XG4gICAgICB2YXIgZm9yY2VVcGRhdGUgPSBudWxsO1xuICAgICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgICAgY2hhbmdlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMuY2hhbmdlVmFsdWV9KVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBUZXN0Rm9ybSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0Rm9ybVwiLFxuICAgICAgICBjb21wb25lbnRXaWxsTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBmb3JjZVVwZGF0ZSA9IHRoaXMuZm9yY2VVcGRhdGUuYmluZCh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYXNDaGFuZ2VkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiAoIFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge29uQ2hhbmdlOiB0aGlzLm9uQ2hhbmdlfSwgXG4gICAgICAgICAgICAgIGlucHV0c1xuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0Rm9ybSwgbnVsbCkgXG4gICAgICApO1xuXG4gICAgICAvLyBXYWl0IGJlZm9yZSBhZGRpbmcgdGhlIGlucHV0XG4gICAgICBpbnB1dHMucHVzaChUZXN0SW5wdXQoe1xuICAgICAgICBuYW1lOiAndGVzdCdcbiAgICAgIH0pKTtcblxuICAgICAgZm9yY2VVcGRhdGUoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgIC8vIFdhaXQgZm9yIG5leHQgZXZlbnQgbG9vcCwgYXMgdGhhdCBkb2VzIHRoZSBmb3JtXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGV4cGVjdChoYXNDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgfSk7XG5cbiAgICB9KTtcblxuICB9KTtcblxuICBkZXNjcmliZSgnVXBkYXRlIGEgZm9ybScsIGZ1bmN0aW9uICgpIHtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgZWxlbWVudHMgdG8gY2hlY2sgaWYgdGhlIGZvcm0gaXMgZGlzYWJsZWQnLCBmdW5jdGlvbiAoZG9uZSkge1xuXG4gICAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB2YXIgVGVzdEZvcm0gPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdEZvcm1cIixcbiAgICAgICAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHtkaXNhYmxlZDogdHJ1ZX07XG4gICAgICAgIH0sXG4gICAgICAgIGVuYWJsZUZvcm06IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gKCBcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvbkNoYW5nZTogdGhpcy5vbkNoYW5nZSwgZGlzYWJsZWQ6IHRoaXMuc3RhdGUuZGlzYWJsZWR9LCBcbiAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wifSlcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudCggXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdEZvcm0sIG51bGwpIFxuICAgICAgKTtcblxuICAgICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZENvbXBvbmVudFdpdGhUeXBlKGZvcm0sIFRlc3RJbnB1dCk7XG4gICAgICBleHBlY3QoaW5wdXQuaXNGb3JtRGlzYWJsZWQoKSkudG9CZSh0cnVlKTtcbiAgICAgIGZvcm0uZW5hYmxlRm9ybSgpO1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGV4cGVjdChpbnB1dC5pc0Zvcm1EaXNhYmxlZCgpKS50b0JlKGZhbHNlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSwgMCk7XG5cbiAgICB9KTtcblxuICB9KTtcblxufSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaUwxVnpaWEp6TDJOb2NtbHpkR2xoYm1Gc1ptOXVhUzlFYjJOMWJXVnVkSE12WkdWMkwyWnZjbTF6ZVMxeVpXRmpkQzl6Y0dWamN5OUdiM0p0YzNrdGMzQmxZeTVxY3lJc0luTnZkWEpqWlhNaU9sc2lMMVZ6WlhKekwyTm9jbWx6ZEdsaGJtRnNabTl1YVM5RWIyTjFiV1Z1ZEhNdlpHVjJMMlp2Y20xemVTMXlaV0ZqZEM5emNHVmpjeTlHYjNKdGMza3RjM0JsWXk1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hKUVVGSkxFMUJRVTBzUjBGQlJ5eFBRVUZQTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF6czdRVUZGZWtNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeFpRVUZaT3p0QlFVVXZRaXhGUVVGRkxGRkJRVkVzUTBGQlF5eHRRa0ZCYlVJc1JVRkJSU3haUVVGWk96dEpRVVY0UXl4RlFVRkZMRU5CUVVNc2QwTkJRWGRETEVWQlFVVXNXVUZCV1R0TlFVTjJSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eFRRVUZUTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFVTXNWMEZCVnl4RlFVRkJMRWxCUVdVc1EwRkJRU3hEUVVGRExFTkJRVU03VFVGRGRFVXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGVFUXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wbEJSVWdzUlVGQlJTeERRVUZETEcxRFFVRnRReXhGUVVGRkxGbEJRVms3VFVGRGJFUXNTVUZCU1N4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExHdENRVUZyUWl4RlFVRkZMRzlDUVVGRExGZEJRVmNzUlVGQlFTeERRVUZCTEVOQlFVTXNVMEZCUVN4RlFVRlRMRU5CUVVNc1MwRkJUU3hEUVVGakxFTkJRVUVzUTBGQlF5eERRVUZETzAxQlEzUkdMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEzcEVMRXRCUVVzc1EwRkJReXhEUVVGRE96dEpRVVZJTEVWQlFVVXNRMEZCUXl3d1EwRkJNRU1zUlVGQlJTeFZRVUZWTEVsQlFVa3NSVUZCUlR0TlFVTTNSQ3hKUVVGSkxDdENRVUVyUWl4NVFrRkJRVHRSUVVOcVF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRE8xRkJRM1JDTEZkQlFWY3NSVUZCUlN4VlFVRlZMRXRCUVVzc1JVRkJSVHRWUVVNMVFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVMEZEYmtNN1VVRkRSQ3hOUVVGTkxFVkJRVVVzV1VGQldUdFZRVU5zUWl4UFFVRlBMRzlDUVVGQkxFOUJRVTBzUlVGQlFTeERRVUZCTEVOQlFVTXNTMEZCUVN4RlFVRkxMRU5CUVVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeEZRVUZETEVOQlFVTXNVVUZCUVN4RlFVRlJMRU5CUVVVc1NVRkJTU3hEUVVGRExGZEJRVmtzUTBGQlJTeERRVUZCTzFOQlEzQkZPMEZCUTFRc1QwRkJUeXhEUVVGRExFTkJRVU03TzAxQlJVZ3NTVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRE8wMUJRMnBDTEVsQlFVa3NPRUpCUVRoQ0xIZENRVUZCTzFGQlEyaERMRkZCUVZFc1JVRkJSU3hWUVVGVkxGTkJRVk1zUlVGQlJUdFZRVU0zUWl4TFFVRkxMRWRCUVVjc1UwRkJVeXhEUVVGRE8xTkJRMjVDTzFGQlEwUXNUVUZCVFN4RlFVRkZMRmxCUVZrN1ZVRkRiRUk3V1VGRFJTeHZRa0ZCUXl4WFFVRlhMRVZCUVVFc1EwRkJRU3hEUVVGRExGRkJRVUVzUlVGQlVTeERRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJSeXhEUVVGQkxFVkJRVUU3WTBGRGRFTXNiMEpCUVVFc1NVRkJSeXhGUVVGQkxFbEJRVU1zUlVGQlFTeE5RVUZUTEVOQlFVRXNSVUZCUVR0alFVTmFMRU5CUVVNc1NVRkJTU3hGUVVGQkxFTkJRVVU3WTBGRFVDeERRVUZETEZOQlFWTXNSVUZCUVN4RFFVRkZPMk5CUTJJc2IwSkJRVU1zVTBGQlV5eEZRVUZCTEVOQlFVRXNRMEZCUXl4SlFVRkJMRVZCUVVrc1EwRkJReXhOUVVGQkxFVkJRVTBzUTBGQlF5eExRVUZCTEVWQlFVc3NRMEZCUlN4RFFVRkRMRTFCUVU4c1EwRkJRU3hEUVVGSExFTkJRVUU3V1VGRE4wSXNRMEZCUVR0WlFVTmtPMU5CUTBnN1FVRkRWQ3hQUVVGUExFTkJRVU1zUTBGQlF6czdUVUZGU0N4SlFVRkpMRWxCUVVrc1IwRkJSeXhUUVVGVExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc2IwSkJRVU1zVVVGQlVTeEZRVUZCTEVsQlFVVXNRMEZCUVN4RFFVRkRMRU5CUVVNN1RVRkRja1FzVlVGQlZTeERRVUZETEZsQlFWazdVVUZEY2tJc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRE4wTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pETEVsQlFVa3NSVUZCUlN4RFFVRkRPMDlCUTFJc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU5pTEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWUUxFbEJRVWtzUlVGQlJTeERRVUZETEdsRVFVRnBSQ3hGUVVGRkxGVkJRVlVzU1VGQlNTeEZRVUZGT3p0TlFVVndSU3hKUVVGSkxFMUJRVTBzUjBGQlJ5eEZRVUZGTEVOQlFVTTdUVUZEYUVJc1NVRkJTU3hYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETzAxQlEzWkNMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF6dE5RVU5xUWl4SlFVRkpMQ3RDUVVFclFpeDVRa0ZCUVR0UlFVTnFReXhOUVVGTkxFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUTNSQ0xFMUJRVTBzUlVGQlJTeFpRVUZaTzFWQlEyeENMRTlCUVU4c2IwSkJRVUVzUzBGQlNTeEZRVUZCTEVsQlFVVXNRMEZCUVR0VFFVTmtPMDlCUTBZc1EwRkJReXhEUVVGRE8wMUJRMGdzU1VGQlNTdzRRa0ZCT0VJc2QwSkJRVUU3VVVGRGFFTXNhMEpCUVd0Q0xFVkJRVVVzV1VGQldUdFZRVU01UWl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRNME03VVVGRFJDeFJRVUZSTEVWQlFVVXNWVUZCVlN4VFFVRlRMRVZCUVVVN1ZVRkROMElzUzBGQlN5eEhRVUZITEZOQlFWTXNRMEZCUXp0VFFVTnVRanRSUVVORUxFMUJRVTBzUlVGQlJTeFpRVUZaTzFWQlEyeENPMWxCUTBVc2IwSkJRVU1zVjBGQlZ5eEZRVUZCTEVOQlFVRXNRMEZCUXl4UlFVRkJMRVZCUVZFc1EwRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlZTeERRVUZCTEVWQlFVRTdZMEZEYmtNc1RVRkJUenRaUVVOSkxFTkJRVUVzUlVGQlJUdFRRVU51UWp0UFFVTkdMRU5CUVVNc1EwRkJRenROUVVOSUxFbEJRVWtzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4clFrRkJhMEk3VVVGRGNrTXNiMEpCUVVNc1VVRkJVU3hGUVVGQkxFbEJRVVVzUTBGQlFUdEJRVU51UWl4UFFVRlBMRU5CUVVNN1FVRkRVanM3UVVGRlFTeE5RVUZOTEZWQlFWVXNRMEZCUXl4WlFVRlpPenRSUVVWeVFpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJRenRWUVVOd1FpeEpRVUZKTEVWQlFVVXNUVUZCVFR0QlFVTjBRaXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZET3p0QlFVVmFMRkZCUVZFc1YwRkJWeXhEUVVGRExGbEJRVms3UVVGRGFFTTdPMVZCUlZVc1ZVRkJWU3hEUVVGRExGbEJRVms3V1VGRGNrSXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1dVRkROME1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFpRVU5xUXl4SlFVRkpMRVZCUVVVc1EwRkJRenRCUVVOdVFpeFhRVUZYTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSV2hDTEZOQlFWTXNRMEZCUXl4RFFVRkRPenRCUVVWWUxFOUJRVThzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXpzN1FVRkZZaXhMUVVGTExFTkJRVU1zUTBGQlF6czdRVUZGVUN4SlFVRkpMRVZCUVVVc1EwRkJReXhuUlVGQlowVXNSVUZCUlN4VlFVRlZMRWxCUVVrc1JVRkJSVHM3VFVGRmJrWXNTVUZCU1N4TlFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRE8wMUJRMmhDTEVsQlFVa3NWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenROUVVOMlFpeEpRVUZKTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNN1RVRkRha0lzU1VGQlNTd3JRa0ZCSzBJc2VVSkJRVUU3VVVGRGFrTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU4wUWl4WFFVRlhMRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVU3VlVGRE5VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUTI1RE8xRkJRMFFzVFVGQlRTeEZRVUZGTEZsQlFWazdWVUZEYkVJc1QwRkJUeXh2UWtGQlFTeFBRVUZOTEVWQlFVRXNRMEZCUVN4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNSVUZCUXl4RFFVRkRMRkZCUVVFc1JVRkJVU3hEUVVGRkxFbEJRVWtzUTBGQlF5eFhRVUZaTEVOQlFVVXNRMEZCUVR0VFFVTndSVHRQUVVOR0xFTkJRVU1zUTBGQlF6dE5RVU5JTEVsQlFVa3NPRUpCUVRoQ0xIZENRVUZCTzFGQlEyaERMR3RDUVVGclFpeEZRVUZGTEZsQlFWazdWVUZET1VJc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRek5ETzFGQlEwUXNVVUZCVVN4RlFVRkZMRlZCUVZVc1UwRkJVeXhGUVVGRk8xVkJRemRDTEV0QlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNN1UwRkRia0k3VVVGRFJDeE5RVUZOTEVWQlFVVXNXVUZCV1R0VlFVTnNRanRaUVVORkxHOUNRVUZETEZkQlFWY3NSVUZCUVN4RFFVRkJMRU5CUVVNc1VVRkJRU3hGUVVGUkxFTkJRVVVzU1VGQlNTeERRVUZETEZGQlFWVXNRMEZCUVN4RlFVRkJPMk5CUTI1RExFMUJRVTg3V1VGRFNTeERRVUZCTEVWQlFVVTdVMEZEYmtJN1QwRkRSaXhEUVVGRExFTkJRVU03VFVGRFNDeEpRVUZKTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTzFGQlEzSkRMRzlDUVVGRExGRkJRVkVzUlVGQlFTeEpRVUZGTEVOQlFVRTdRVUZEYmtJc1QwRkJUeXhEUVVGRE8wRkJRMUk3TzBGQlJVRXNUVUZCVFN4VlFVRlZMRU5CUVVNc1dVRkJXVHM3VVVGRmNrSXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03VlVGRGNFSXNTVUZCU1N4RlFVRkZMRTFCUVUwN1FVRkRkRUlzVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXpzN1FVRkZXaXhSUVVGUkxGZEJRVmNzUTBGQlF5eFpRVUZaTzBGQlEyaERPenRWUVVWVkxGVkJRVlVzUTBGQlF5eFpRVUZaTzFsQlEzSkNMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl3clFrRkJLMElzUTBGQlF5eEpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRemxITEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUXpkRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzFsQlF5OUNMRWxCUVVrc1JVRkJSU3hEUVVGRE8wRkJRMjVDTEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenM3UVVGRmFFSXNVMEZCVXl4RFFVRkRMRU5CUVVNN08wRkJSVmdzVDBGQlR5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPenRCUVVWaUxFdEJRVXNzUTBGQlF5eERRVUZET3p0QlFVVlFMRWxCUVVrc1JVRkJSU3hEUVVGRExHMUZRVUZ0UlN4RlFVRkZMRlZCUVZVc1NVRkJTU3hGUVVGRk96dE5RVVYwUml4SlFVRkpMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03VFVGRGRrSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRE8wMUJRMnBDTEVsQlFVa3NLMEpCUVN0Q0xIbENRVUZCTzFGQlEycERMRTFCUVUwc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTTdVVUZEZEVJc1YwRkJWeXhGUVVGRkxGVkJRVlVzUzBGQlN5eEZRVUZGTzFWQlF6VkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRUUVVOdVF6dFJRVU5FTEUxQlFVMHNSVUZCUlN4WlFVRlpPMVZCUTJ4Q0xFOUJRVThzYjBKQlFVRXNUMEZCVFN4RlFVRkJMRU5CUVVFc1EwRkJReXhMUVVGQkxFVkJRVXNzUTBGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRVZCUVVNc1EwRkJReXhSUVVGQkxFVkJRVkVzUTBGQlJTeEpRVUZKTEVOQlFVTXNWMEZCV1N4RFFVRkZMRU5CUVVFN1UwRkRjRVU3UVVGRFZDeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1RVRkZTQ3hKUVVGSkxFdEJRVXNzUTBGQlF6dE5RVU5XTEVsQlFVa3NPRUpCUVRoQ0xIZENRVUZCTzFGQlEyaERMR3RDUVVGclFpeEZRVUZGTEZsQlFWazdWVUZET1VJc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRek5ETzFGQlEwUXNVVUZCVVN4RlFVRkZMRlZCUVZVc1UwRkJVeXhGUVVGRk8xVkJRemRDTEV0QlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNN1UwRkRia0k3VVVGRFJDeE5RVUZOTEVWQlFVVXNXVUZCV1R0QlFVTTFRaXhWUVVGVkxFdEJRVXNzUjBGQlJ5eHZRa0ZCUXl4VFFVRlRMRVZCUVVFc1EwRkJRU3hEUVVGRExFbEJRVUVzUlVGQlNTeERRVUZETEUxQlFVRXNSVUZCVFN4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVVc1EwRkJRU3hEUVVGSExFTkJRVUVzUTBGQlF6czdWVUZGTjBRN1dVRkRSU3h2UWtGQlF5eFhRVUZYTEVWQlFVRXNRMEZCUVN4RFFVRkRMRkZCUVVFc1JVRkJVU3hEUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZWTEVOQlFVRXNSVUZCUVR0alFVTnVReXhMUVVGTk8xbEJRMHNzUTBGQlFTeEZRVUZGTzFOQlEyNUNPMDlCUTBZc1EwRkJReXhEUVVGRE8wRkJRMVFzVFVGQlRTeEpRVUZKTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNiMEpCUVVNc1VVRkJVU3hGUVVGQkxFTkJRVUVzUTBGQlF5eExRVUZCTEVWQlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVVc1EwRkJRU3hEUVVGRExFTkJRVU03UVVGRGRrVTdPMDFCUlUwc1ZVRkJWU3hEUVVGRExGbEJRVms3UVVGRE4wSXNVVUZCVVN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSWFJETEZGQlFWRXNWMEZCVnl4RFFVRkRMRmxCUVZrN08xVkJSWFJDTEZWQlFWVXNRMEZCUXl4WlFVRlpPMWxCUTNKQ0xGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETzFsQlF6ZERMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8xbEJReTlDTEVsQlFVa3NSVUZCUlN4RFFVRkRPMEZCUTI1Q0xGZEJRVmNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXpzN1FVRkZhRUlzVTBGQlV5eERRVUZETEVOQlFVTTdPMEZCUlZnc1QwRkJUeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZET3p0QlFVVmlMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRMUE3TzBGQlJVRXNTVUZCU1N4RlFVRkZMRU5CUVVNc2VVVkJRWGxGTEVWQlFVVXNWVUZCVlN4SlFVRkpMRVZCUVVVN08wMUJSVFZHTEVsQlFVa3NWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenROUVVOMlFpeEpRVUZKTEZOQlFWTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1RVRkRkRUlzU1VGQlNTd3JRa0ZCSzBJc2VVSkJRVUU3VVVGRGFrTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU4wUWl4WFFVRlhMRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVU3VlVGRE5VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUTI1RE8xRkJRMFFzVFVGQlRTeEZRVUZGTEZsQlFWazdWVUZEYkVJc1QwRkJUeXh2UWtGQlFTeFBRVUZOTEVWQlFVRXNRMEZCUVN4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNSVUZCUXl4RFFVRkRMRkZCUVVFc1JVRkJVU3hEUVVGRkxFbEJRVWtzUTBGQlF5eFhRVUZaTEVOQlFVVXNRMEZCUVR0VFFVTndSVHRCUVVOVUxFOUJRVThzUTBGQlF5eERRVUZETzBGQlExUTdPMDFCUlUwc1NVRkJTU3hOUVVGTkxFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTTdVVUZEZEVJc1NVRkJTU3hGUVVGRkxFMUJRVTA3VVVGRFdpeFhRVUZYTEVWQlFVVXNVMEZCVXp0UlFVTjBRaXhMUVVGTExFVkJRVVVzWVVGQllUdEJRVU0xUWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE96dE5RVVZLTEVsQlFVa3NPRUpCUVRoQ0xIZENRVUZCTzFGQlEyaERMR3RDUVVGclFpeEZRVUZGTEZsQlFWazdWVUZET1VJc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRek5ETzFGQlEwUXNWVUZCVlN4RlFVRkZMRmxCUVZrN1ZVRkRkRUlzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXp0VFFVTnNRanRSUVVORUxFMUJRVTBzUlVGQlJTeFpRVUZaTzFWQlEyeENPMWxCUTBVc2IwSkJRVU1zVjBGQlZ5eEZRVUZCTEVOQlFVRXNRMEZCUXl4VFFVRkJMRVZCUVZNc1EwRkJSU3hKUVVGSkxFTkJRVU1zVlVGQldTeERRVUZCTEVWQlFVRTdZMEZEZEVNc1RVRkJUenRaUVVOSkxFTkJRVUVzUlVGQlJUdFRRVU51UWp0UFFVTkdMRU5CUVVNc1EwRkJRenROUVVOSUxFbEJRVWtzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4clFrRkJhMEk3VVVGRGNrTXNiMEpCUVVNc1VVRkJVU3hGUVVGQkxFbEJRVVVzUTBGQlFUdEJRVU51UWl4UFFVRlBMRU5CUVVNN08wRkJSVklzVFVGQlRTeE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZET3p0TlFVVTVRaXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXp0UlFVTndRaXhKUVVGSkxFVkJRVVVzVDBGQlR6dFJRVU5pTEZkQlFWY3NSVUZCUlN4VFFVRlRPMUZCUTNSQ0xFdEJRVXNzUlVGQlJTeFRRVUZUTzBGQlEzaENMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03UVVGRFZqczdRVUZGUVN4TlFVRk5MRmRCUVZjc1EwRkJReXhaUVVGWk8wRkJRemxDT3p0UlFVVlJMRlZCUVZVc1EwRkJReXhaUVVGWk8xVkJRM0pDTEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXl4RFFVRkRPMVZCUXpkRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VlVGRE4wSXNTVUZCU1N4RlFVRkZMRU5CUVVNN1FVRkRha0lzVTBGQlV5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPenRCUVVWa0xFOUJRVThzUTBGQlF5eERRVUZET3p0QlFVVlVMRXRCUVVzc1EwRkJReXhEUVVGRE96dEpRVVZJTEVWQlFVVXNRMEZCUXl4clJFRkJhMFFzUlVGQlJTeFpRVUZaTzAxQlEycEZMRWxCUVVrc1ZVRkJWU3hIUVVGSExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1RVRkRMME1zU1VGQlNTdzRRa0ZCT0VJc2QwSkJRVUU3VVVGRGFFTXNVVUZCVVN4RlFVRkZMRmxCUVZrN1ZVRkRjRUlzVlVGQlZTeEZRVUZGTEVOQlFVTTdVMEZEWkR0UlFVTkVMRTFCUVUwc1JVRkJSU3haUVVGWk8xVkJRMnhDTEU5QlFVOHNiMEpCUVVNc1YwRkJWeXhGUVVGQkxFTkJRVUVzUTBGQlF5eFJRVUZCTEVWQlFWRXNRMEZCUlN4SlFVRkpMRU5CUVVNc1VVRkJWU3hEUVVGakxFTkJRVUVzUTBGQlF6dFRRVU0zUkR0UFFVTkdMRU5CUVVNc1EwRkJRenROUVVOSUxFbEJRVWtzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eHZRa0ZCUXl4UlFVRlJMRVZCUVVFc1NVRkJSU3hEUVVGQkxFTkJRVU1zUTBGQlF6dE5RVU55UkN4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhGUVVGRkxFTkJRVU03UVVGRGFFUXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wbEJSVWdzUlVGQlJTeERRVUZETEhORVFVRnpSQ3hGUVVGRkxGbEJRVms3VFVGRGNrVXNTVUZCU1N4VlFVRlZMRWRCUVVjc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0TlFVTXZReXhKUVVGSkxEWkNRVUUyUWl4MVFrRkJRVHRSUVVNdlFpeE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRE8xRkJRM1JDTEZGQlFWRXNSVUZCUlN4VlFVRlZMRXRCUVVzc1JVRkJSVHRWUVVONlFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVMEZEYmtNN1VVRkRSQ3hOUVVGTkxFVkJRVVVzV1VGQldUdFZRVU5zUWl4UFFVRlBMRzlDUVVGQkxFOUJRVTBzUlVGQlFTeERRVUZCTEVOQlFVTXNTMEZCUVN4RlFVRkxMRU5CUVVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeEZRVUZETEVOQlFVTXNVVUZCUVN4RlFVRlJMRU5CUVVVc1NVRkJTU3hEUVVGRExGRkJRVk1zUTBGQlJTeERRVUZCTzFOQlEycEZPMDlCUTBZc1EwRkJReXhEUVVGRE8wMUJRMGdzU1VGQlNTdzRRa0ZCT0VJc2QwSkJRVUU3VVVGRGFFTXNVVUZCVVN4RlFVRkZMRmxCUVZrN1ZVRkRjRUlzVlVGQlZTeEZRVUZGTEVOQlFVTTdVMEZEWkR0UlFVTkVMRTFCUVUwc1JVRkJSU3haUVVGWk8xVkJRMnhDTzFsQlEwVXNiMEpCUVVNc1YwRkJWeXhGUVVGQkxFTkJRVUVzUTBGQlF5eFJRVUZCTEVWQlFWRXNRMEZCUlN4SlFVRkpMRU5CUVVNc1VVRkJWU3hEUVVGQkxFVkJRVUU3WTBGRGNFTXNiMEpCUVVNc1QwRkJUeXhGUVVGQkxFTkJRVUVzUTBGQlF5eEpRVUZCTEVWQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVVc1EwRkJRVHRaUVVOVUxFTkJRVUU3V1VGRFpEdFRRVU5JTzA5QlEwWXNRMEZCUXl4RFFVRkRPMDFCUTBnc1NVRkJTU3hKUVVGSkxFZEJRVWNzVTBGQlV5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExHOUNRVUZETEZGQlFWRXNSVUZCUVN4SlFVRkZMRU5CUVVFc1EwRkJReXhEUVVGRE8wMUJRM0pFTEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5d3JRa0ZCSzBJc1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMDFCUXpsSExFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeERRVUZETzBGQlF6VkRMRXRCUVVzc1EwRkJReXhEUVVGRE96dEpRVVZJTEVWQlFVVXNRMEZCUXl4NVJFRkJlVVFzUlVGQlJTeFZRVUZWTEVsQlFVa3NSVUZCUlR0TlFVTTFSU3hKUVVGSkxGVkJRVlVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wMUJReTlETEVsQlFVa3NUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenROUVVOb1FpeEpRVUZKTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNN1RVRkRka0lzU1VGQlNTd3JRa0ZCSzBJc2VVSkJRVUU3VVVGRGFrTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF6dFJRVU4wUWl4WFFVRlhMRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVU3VlVGRE5VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUTI1RE8xRkJRMFFzVFVGQlRTeEZRVUZGTEZsQlFWazdWVUZEYkVJc1QwRkJUeXh2UWtGQlFTeFBRVUZOTEVWQlFVRXNRMEZCUVN4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNSVUZCUXl4RFFVRkRMRkZCUVVFc1JVRkJVU3hEUVVGRkxFbEJRVWtzUTBGQlF5eFhRVUZaTEVOQlFVVXNRMEZCUVR0VFFVTndSVHRQUVVOR0xFTkJRVU1zUTBGQlF6dE5RVU5JTEVsQlFVa3NPRUpCUVRoQ0xIZENRVUZCTzFGQlEyaERMR3RDUVVGclFpeEZRVUZGTEZsQlFWazdWVUZET1VJc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRek5ETzFGQlEwUXNVVUZCVVN4RlFVRkZMRmxCUVZrN1ZVRkRjRUlzVlVGQlZTeEZRVUZGTEVOQlFVTTdVMEZEWkR0UlFVTkVMRTFCUVUwc1JVRkJSU3haUVVGWk8xVkJRMnhDTzFsQlEwVXNiMEpCUVVNc1YwRkJWeXhGUVVGQkxFTkJRVUVzUTBGQlF5eFJRVUZCTEVWQlFWRXNRMEZCUlN4SlFVRkpMRU5CUVVNc1VVRkJWU3hEUVVGQkxFVkJRVUU3WTBGRGJrTXNUVUZCVHp0WlFVTkpMRU5CUVVFc1JVRkJSVHRUUVVOdVFqdFBRVU5HTEVOQlFVTXNRMEZCUXp0TlFVTklMRWxCUVVrc1NVRkJTU3hIUVVGSExGTkJRVk1zUTBGQlF5eHJRa0ZCYTBJN1VVRkRja01zYjBKQlFVTXNVVUZCVVN4RlFVRkJMRWxCUVVVc1EwRkJRVHRCUVVOdVFpeFBRVUZQTEVOQlFVTTdRVUZEVWpzN1RVRkZUU3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXp0UlFVTndRaXhKUVVGSkxFVkJRVVVzVFVGQlRUdEJRVU53UWl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE96dEJRVVZXTEUxQlFVMHNWMEZCVnl4RFFVRkRMRmxCUVZrN1FVRkRPVUk3TzFGQlJWRXNWVUZCVlN4RFFVRkRMRmxCUVZrN1ZVRkRja0lzVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEVOQlFVTTdWVUZEZEVNc1NVRkJTU3hGUVVGRkxFTkJRVU03UVVGRGFrSXNVMEZCVXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE96dEJRVVZrTEU5QlFVOHNRMEZCUXl4RFFVRkRPenRCUVVWVUxFdEJRVXNzUTBGQlF5eERRVUZET3p0QlFVVlFMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZNTEVWQlFVVXNVVUZCVVN4RFFVRkRMR1ZCUVdVc1JVRkJSU3haUVVGWk96dEJRVVY0UXl4SlFVRkpMRVZCUVVVc1EwRkJReXgzUkVGQmQwUXNSVUZCUlN4VlFVRlZMRWxCUVVrc1JVRkJSVHM3VFVGRk0wVXNTVUZCU1N3clFrRkJLMElzZVVKQlFVRTdVVUZEYWtNc1RVRkJUU3hGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTjBRaXhOUVVGTkxFVkJRVVVzV1VGQldUdFZRVU5zUWl4UFFVRlBMRzlDUVVGQkxFOUJRVTBzUlVGQlFTeERRVUZCTEVOQlFVTXNTMEZCUVN4RlFVRkxMRU5CUVVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJ5eERRVUZGTEVOQlFVRTdVMEZEZUVNN1QwRkRSaXhEUVVGRExFTkJRVU03VFVGRFNDeEpRVUZKTERoQ1FVRTRRaXgzUWtGQlFUdFJRVU5vUXl4bFFVRmxMRVZCUVVVc1dVRkJXVHRWUVVNelFpeFBRVUZQTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRM3BDTzFGQlEwUXNWVUZCVlN4RlFVRkZMRmxCUVZrN1ZVRkRkRUlzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0WlFVTmFMRkZCUVZFc1JVRkJSU3hMUVVGTE8xZEJRMmhDTEVOQlFVTXNRMEZCUXp0VFFVTktPMUZCUTBRc1RVRkJUU3hGUVVGRkxGbEJRVms3VlVGRGJFSTdXVUZEUlN4dlFrRkJReXhYUVVGWExFVkJRVUVzUTBGQlFTeERRVUZETEZGQlFVRXNSVUZCVVN4RFFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVU1zUTBGQlF5eFJRVUZCTEVWQlFWRXNRMEZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVlVzUTBGQlFTeEZRVUZCTzJOQlEyNUZMRzlDUVVGRExGTkJRVk1zUlVGQlFTeERRVUZCTEVOQlFVTXNTVUZCUVN4RlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRkxFTkJRVUU3V1VGRFdDeERRVUZCTEVWQlFVVTdVMEZEYmtJN1QwRkRSaXhEUVVGRExFTkJRVU03VFVGRFNDeEpRVUZKTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTzFGQlEzSkRMRzlDUVVGRExGRkJRVkVzUlVGQlFTeEpRVUZGTEVOQlFVRTdRVUZEYmtJc1QwRkJUeXhEUVVGRE96dE5RVVZHTEVsQlFVa3NTMEZCU3l4SFFVRkhMRk5CUVZNc1EwRkJReXcyUWtGQk5rSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03VFVGRGNrVXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhqUVVGakxFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenROUVVNeFF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNN1RVRkRiRUlzVlVGQlZTeERRVUZETEZsQlFWazdVVUZEY2tJc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU16UXl4SlFVRkpMRVZCUVVVc1EwRkJRenRCUVVObUxFOUJRVThzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXpzN1FVRkZXaXhMUVVGTExFTkJRVU1zUTBGQlF6czdRVUZGVUN4SFFVRkhMRU5CUVVNc1EwRkJRenM3UTBGRlNpeERRVUZETEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUoyWVhJZ1JtOXliWE41SUQwZ2NtVnhkV2x5WlNnbkxpOHVMaTl6Y21NdmJXRnBiaTVxY3ljcE8xeHVYRzVrWlhOamNtbGlaU2duUm05eWJYTjVKeXdnWm5WdVkzUnBiMjRnS0NrZ2UxeHVYRzRnSUdSbGMyTnlhV0psS0NkVFpYUjBhVzVuSUhWd0lHRWdabTl5YlNjc0lHWjFibU4wYVc5dUlDZ3BJSHRjYmx4dUlDQWdJR2wwS0NkemFHOTFiR1FnY21WdVpHVnlJR0VnWm05eWJTQnBiblJ2SUhSb1pTQmtiMk4xYldWdWRDY3NJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUhaaGNpQm1iM0p0SUQwZ1ZHVnpkRlYwYVd4ekxuSmxibVJsY2tsdWRHOUViMk4xYldWdWRDZ2dQRVp2Y20xemVTNUdiM0p0UGp3dlJtOXliWE41TGtadmNtMCtLVHRjYmlBZ0lDQWdJR1Y0Y0dWamRDaG1iM0p0TG1kbGRFUlBUVTV2WkdVb0tTNTBZV2RPWVcxbEtTNTBiMFZ4ZFdGc0tDZEdUMUpOSnlrN1hHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCcGRDZ25jMmh2ZFd4a0lITmxkQ0JoSUdOc1lYTnpJRzVoYldVZ2FXWWdjR0Z6YzJWa0p5d2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnZG1GeUlHWnZjbTBnUFNCVVpYTjBWWFJwYkhNdWNtVnVaR1Z5U1c1MGIwUnZZM1Z0Wlc1MEtDQThSbTl5YlhONUxrWnZjbTBnWTJ4aGMzTk9ZVzFsUFZ3aVptOXZYQ0krUEM5R2IzSnRjM2t1Um05eWJUNHBPMXh1SUNBZ0lDQWdaWGh3WldOMEtHWnZjbTB1WjJWMFJFOU5UbTlrWlNncExtTnNZWE56VG1GdFpTa3VkRzlGY1hWaGJDZ25abTl2SnlrN1hHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCcGRDZ25jMmh2ZFd4a0lHRnNiRzkzSUdadmNpQnVkV3hzTDNWdVpHVm1hVzVsWkNCamFHbHNaSEpsYmljc0lHWjFibU4wYVc5dUlDaGtiMjVsS1NCN1hHNGdJQ0FnSUNCMllYSWdWR1Z6ZEVsdWNIVjBJRDBnVW1WaFkzUXVZM0psWVhSbFEyeGhjM01vZTF4dUlDQWdJQ0FnSUNCdGFYaHBibk02SUZ0R2IzSnRjM2t1VFdsNGFXNWRMRnh1SUNBZ0lDQWdJQ0JqYUdGdVoyVldZV3gxWlRvZ1puVnVZM1JwYjI0Z0tHVjJaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1elpYUldZV3gxWlNobGRtVnVkQzUwWVhKblpYUXVkbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1BHbHVjSFYwSUhaaGJIVmxQWHQwYUdsekxtZGxkRlpoYkhWbEtDbDlJRzl1UTJoaGJtZGxQWHQwYUdsekxtTm9ZVzVuWlZaaGJIVmxmUzgrWEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVYRzRnSUNBZ0lDQjJZWElnYlc5a1pXd2dQU0J1ZFd4c08xeHVJQ0FnSUNBZ2RtRnlJRlJsYzNSR2IzSnRJRDBnVW1WaFkzUXVZM0psWVhSbFEyeGhjM01vZTF4dUlDQWdJQ0FnSUNCdmJsTjFZbTFwZERvZ1puVnVZM1JwYjI0Z0tHWnZjbTFOYjJSbGJDa2dlMXh1SUNBZ0lDQWdJQ0FnSUcxdlpHVnNJRDBnWm05eWJVMXZaR1ZzTzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdQRVp2Y20xemVTNUdiM0p0SUc5dVUzVmliV2wwUFhzZ2RHaHBjeTV2YmxOMVltMXBkQ0I5UGx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0E4YURFK1ZHVnpkRHd2YURFK1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhzZ2JuVnNiQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSHNnZFc1a1pXWnBibVZrSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnUEZSbGMzUkpibkIxZENCdVlXMWxQU2R1WVcxbEp5QjJZV3gxWlQxN0lDZG1iMjhuSUgwZ0x6NWNiaUFnSUNBZ0lDQWdJQ0FnSUR3dlJtOXliWE41TGtadmNtMCtYRzRnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJSFpoY2lCbWIzSnRJRDBnVkdWemRGVjBhV3h6TG5KbGJtUmxja2x1ZEc5RWIyTjFiV1Z1ZENnOFZHVnpkRVp2Y20wdlBpazdYRzRnSUNBZ0lDQnpaWFJVYVcxbGIzVjBLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ1ZHVnpkRlYwYVd4ekxsTnBiWFZzWVhSbExuTjFZbTFwZENobWIzSnRMbWRsZEVSUFRVNXZaR1VvS1NrN1hHNGdJQ0FnSUNBZ0lHVjRjR1ZqZENodGIyUmxiQ2t1ZEc5RmNYVmhiQ2g3Ym1GdFpUb2dKMlp2YnlkOUtUdGNiaUFnSUNBZ0lDQWdaRzl1WlNncE8xeHVJQ0FnSUNBZ2ZTd2dNVEFwTzF4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnYVhRb0ozTm9iM1ZzWkNCaGJHeHZkeUJtYjNJZ2FXNXdkWFJ6SUdKbGFXNW5JR0ZrWkdWa0lHUjVibUZ0YVdOaGJHeDVKeXdnWm5WdVkzUnBiMjRnS0dSdmJtVXBJSHRjYmx4dUlDQWdJQ0FnZG1GeUlHbHVjSFYwY3lBOUlGdGRPMXh1SUNBZ0lDQWdkbUZ5SUdadmNtTmxWWEJrWVhSbElEMGdiblZzYkR0Y2JpQWdJQ0FnSUhaaGNpQnRiMlJsYkNBOUlHNTFiR3c3WEc0Z0lDQWdJQ0IyWVhJZ1ZHVnpkRWx1Y0hWMElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdJQ0J0YVhocGJuTTZJRnRHYjNKdGMza3VUV2w0YVc1ZExGeHVJQ0FnSUNBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnUEdScGRpOCtYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZG1GeUlGUmxjM1JHYjNKdElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdJQ0JqYjIxd2IyNWxiblJYYVd4c1RXOTFiblE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdJQ0JtYjNKalpWVndaR0YwWlNBOUlIUm9hWE11Wm05eVkyVlZjR1JoZEdVdVltbHVaQ2gwYUdsektUdGNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnYjI1VGRXSnRhWFE2SUdaMWJtTjBhVzl1SUNobWIzSnRUVzlrWld3cElIdGNiaUFnSUNBZ0lDQWdJQ0J0YjJSbGJDQTlJR1p2Y20xTmIyUmxiRHRjYmlBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ2NtVnVaR1Z5T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2dnWEc0Z0lDQWdJQ0FnSUNBZ0lDQThSbTl5YlhONUxrWnZjbTBnYjI1VGRXSnRhWFE5ZTNSb2FYTXViMjVUZFdKdGFYUjlQaUJjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdlMmx1Y0hWMGMzMWNiaUFnSUNBZ0lDQWdJQ0FnSUR3dlJtOXliWE41TGtadmNtMCtLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCMllYSWdabTl5YlNBOUlGUmxjM1JWZEdsc2N5NXlaVzVrWlhKSmJuUnZSRzlqZFcxbGJuUW9JRnh1SUNBZ0lDQWdJQ0E4VkdWemRFWnZjbTB2UGlCY2JpQWdJQ0FnSUNrN1hHNWNiaUFnSUNBZ0lDOHZJRmRoYVhRZ1ltVm1iM0psSUdGa1pHbHVaeUIwYUdVZ2FXNXdkWFJjYmlBZ0lDQWdJSE5sZEZScGJXVnZkWFFvWm5WdVkzUnBiMjRnS0NrZ2UxeHVYRzRnSUNBZ0lDQWdJR2x1Y0hWMGN5NXdkWE5vS0ZSbGMzUkpibkIxZENoN1hHNGdJQ0FnSUNBZ0lDQWdibUZ0WlRvZ0ozUmxjM1FuWEc0Z0lDQWdJQ0FnSUgwcEtUdGNibHh1SUNBZ0lDQWdJQ0JtYjNKalpWVndaR0YwWlNobWRXNWpkR2x2YmlBb0tTQjdYRzVjYmlBZ0lDQWdJQ0FnSUNBdkx5QlhZV2wwSUdadmNpQnVaWGgwSUdWMlpXNTBJR3h2YjNBc0lHRnpJSFJvWVhRZ1pHOWxjeUIwYUdVZ1ptOXliVnh1SUNBZ0lDQWdJQ0FnSUhObGRGUnBiV1Z2ZFhRb1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1ZHVnpkRlYwYVd4ekxsTnBiWFZzWVhSbExuTjFZbTFwZENobWIzSnRMbWRsZEVSUFRVNXZaR1VvS1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JsZUhCbFkzUW9iVzlrWld3dWRHVnpkQ2t1ZEc5Q1pVUmxabWx1WldRb0tUdGNiaUFnSUNBZ0lDQWdJQ0FnSUdSdmJtVW9LVHRjYmlBZ0lDQWdJQ0FnSUNCOUxDQXdLVHRjYmx4dUlDQWdJQ0FnSUNCOUtUdGNibHh1SUNBZ0lDQWdmU3dnTVRBcE8xeHVYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnBkQ2duYzJodmRXeGtJR0ZzYkc5M0lHUjVibUZ0YVdOaGJHeDVJR0ZrWkdWa0lHbHVjSFYwY3lCMGJ5QjFjR1JoZEdVZ2RHaGxJR1p2Y20wdGJXOWtaV3duTENCbWRXNWpkR2x2YmlBb1pHOXVaU2tnZTF4dVhHNGdJQ0FnSUNCMllYSWdhVzV3ZFhSeklEMGdXMTA3WEc0Z0lDQWdJQ0IyWVhJZ1ptOXlZMlZWY0dSaGRHVWdQU0J1ZFd4c08xeHVJQ0FnSUNBZ2RtRnlJRzF2WkdWc0lEMGdiblZzYkR0Y2JpQWdJQ0FnSUhaaGNpQlVaWE4wU1c1d2RYUWdQU0JTWldGamRDNWpjbVZoZEdWRGJHRnpjeWg3WEc0Z0lDQWdJQ0FnSUcxcGVHbHVjem9nVzBadmNtMXplUzVOYVhocGJsMHNYRzRnSUNBZ0lDQWdJR05vWVc1blpWWmhiSFZsT2lCbWRXNWpkR2x2YmlBb1pYWmxiblFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TG5ObGRGWmhiSFZsS0dWMlpXNTBMblJoY21kbGRDNTJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJSEpsYm1SbGNqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBOGFXNXdkWFFnZG1Gc2RXVTllM1JvYVhNdVoyVjBWbUZzZFdVb0tYMGdiMjVEYUdGdVoyVTllM1JvYVhNdVkyaGhibWRsVm1Gc2RXVjlMejVjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCMllYSWdWR1Z6ZEVadmNtMGdQU0JTWldGamRDNWpjbVZoZEdWRGJHRnpjeWg3WEc0Z0lDQWdJQ0FnSUdOdmJYQnZibVZ1ZEZkcGJHeE5iM1Z1ZERvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUdadmNtTmxWWEJrWVhSbElEMGdkR2hwY3k1bWIzSmpaVlZ3WkdGMFpTNWlhVzVrS0hSb2FYTXBPMXh1SUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNCdmJsTjFZbTFwZERvZ1puVnVZM1JwYjI0Z0tHWnZjbTFOYjJSbGJDa2dlMXh1SUNBZ0lDQWdJQ0FnSUcxdlpHVnNJRDBnWm05eWJVMXZaR1ZzTzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS0NCY2JpQWdJQ0FnSUNBZ0lDQWdJRHhHYjNKdGMza3VSbTl5YlNCdmJsTjFZbTFwZEQxN2RHaHBjeTV2YmxOMVltMXBkSDArSUZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0I3YVc1d2RYUnpmVnh1SUNBZ0lDQWdJQ0FnSUNBZ1BDOUdiM0p0YzNrdVJtOXliVDRwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lIWmhjaUJtYjNKdElEMGdWR1Z6ZEZWMGFXeHpMbkpsYm1SbGNrbHVkRzlFYjJOMWJXVnVkQ2dnWEc0Z0lDQWdJQ0FnSUR4VVpYTjBSbTl5YlM4K0lGeHVJQ0FnSUNBZ0tUdGNibHh1SUNBZ0lDQWdMeThnVjJGcGRDQmlaV1p2Y21VZ1lXUmthVzVuSUhSb1pTQnBibkIxZEZ4dUlDQWdJQ0FnYzJWMFZHbHRaVzkxZENobWRXNWpkR2x2YmlBb0tTQjdYRzVjYmlBZ0lDQWdJQ0FnYVc1d2RYUnpMbkIxYzJnb1ZHVnpkRWx1Y0hWMEtIdGNiaUFnSUNBZ0lDQWdJQ0J1WVcxbE9pQW5kR1Z6ZENkY2JpQWdJQ0FnSUNBZ2ZTa3BPMXh1WEc0Z0lDQWdJQ0FnSUdadmNtTmxWWEJrWVhSbEtHWjFibU4wYVc5dUlDZ3BJSHRjYmx4dUlDQWdJQ0FnSUNBZ0lDOHZJRmRoYVhRZ1ptOXlJRzVsZUhRZ1pYWmxiblFnYkc5dmNDd2dZWE1nZEdoaGRDQmtiMlZ6SUhSb1pTQm1iM0p0WEc0Z0lDQWdJQ0FnSUNBZ2MyVjBWR2x0Wlc5MWRDaG1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQlVaWE4wVlhScGJITXVVMmx0ZFd4aGRHVXVZMmhoYm1kbEtGUmxjM1JWZEdsc2N5NW1hVzVrVW1WdVpHVnlaV1JFVDAxRGIyMXdiMjVsYm5SWGFYUm9WR0ZuS0dadmNtMHNJQ2RKVGxCVlZDY3BMQ0I3ZEdGeVoyVjBPaUI3ZG1Gc2RXVTZJQ2RtYjI4bmZYMHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ1ZHVnpkRlYwYVd4ekxsTnBiWFZzWVhSbExuTjFZbTFwZENobWIzSnRMbWRsZEVSUFRVNXZaR1VvS1NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JsZUhCbFkzUW9iVzlrWld3dWRHVnpkQ2t1ZEc5Q1pTZ25abTl2SnlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrYjI1bEtDazdYRzRnSUNBZ0lDQWdJQ0FnZlN3Z01DazdYRzVjYmlBZ0lDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lIMHNJREV3S1R0Y2JseHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2FYUW9KM05vYjNWc1pDQmhiR3h2ZHlCaElHUjVibUZ0YVdOaGJHeDVJSFZ3WkdGMFpXUWdhVzV3ZFhRZ2RHOGdkWEJrWVhSbElIUm9aU0JtYjNKdExXMXZaR1ZzSnl3Z1puVnVZM1JwYjI0Z0tHUnZibVVwSUh0Y2JseHVJQ0FnSUNBZ2RtRnlJR1p2Y21ObFZYQmtZWFJsSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJSFpoY2lCdGIyUmxiQ0E5SUc1MWJHdzdYRzRnSUNBZ0lDQjJZWElnVkdWemRFbHVjSFYwSUQwZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNb2UxeHVJQ0FnSUNBZ0lDQnRhWGhwYm5NNklGdEdiM0p0YzNrdVRXbDRhVzVkTEZ4dUlDQWdJQ0FnSUNCamFHRnVaMlZXWVd4MVpUb2dablZ1WTNScGIyNGdLR1YyWlc1MEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NXpaWFJXWVd4MVpTaGxkbVZ1ZEM1MFlYSm5aWFF1ZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdQR2x1Y0hWMElIWmhiSFZsUFh0MGFHbHpMbWRsZEZaaGJIVmxLQ2w5SUc5dVEyaGhibWRsUFh0MGFHbHpMbU5vWVc1blpWWmhiSFZsZlM4K1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHBPMXh1WEc0Z0lDQWdJQ0IyWVhJZ2FXNXdkWFE3WEc0Z0lDQWdJQ0IyWVhJZ1ZHVnpkRVp2Y20wZ1BTQlNaV0ZqZEM1amNtVmhkR1ZEYkdGemN5aDdYRzRnSUNBZ0lDQWdJR052YlhCdmJtVnVkRmRwYkd4TmIzVnVkRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1p2Y21ObFZYQmtZWFJsSUQwZ2RHaHBjeTVtYjNKalpWVndaR0YwWlM1aWFXNWtLSFJvYVhNcE8xeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdJQ0J2YmxOMVltMXBkRG9nWm5WdVkzUnBiMjRnS0dadmNtMU5iMlJsYkNrZ2UxeHVJQ0FnSUNBZ0lDQWdJRzF2WkdWc0lEMGdabTl5YlUxdlpHVnNPMXh1SUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnSUNCeVpXNWtaWEk2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdJQ0JwYm5CMWRDQTlJRHhVWlhOMFNXNXdkWFFnYm1GdFpUMG5kR1Z6ZENjZ2RtRnNkV1U5ZXlCMGFHbHpMbkJ5YjNCekxuWmhiSFZsSUgwZ0x6NDdYRzVjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnS0Z4dUlDQWdJQ0FnSUNBZ0lDQWdQRVp2Y20xemVTNUdiM0p0SUc5dVUzVmliV2wwUFh0MGFHbHpMbTl1VTNWaWJXbDBmVDVjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdlMmx1Y0hWMGZWeHVJQ0FnSUNBZ0lDQWdJQ0FnUEM5R2IzSnRjM2t1Um05eWJUNHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUhaaGNpQm1iM0p0SUQwZ1ZHVnpkRlYwYVd4ekxuSmxibVJsY2tsdWRHOUViMk4xYldWdWRDZzhWR1Z6ZEVadmNtMGdkbUZzZFdVOUoyWnZieWN2UGlrN1hHNWNiaUFnSUNBZ0lDOHZJRmRoYVhRZ1ltVm1iM0psSUdOb1lXNW5hVzVuSUhSb1pTQnBibkIxZEZ4dUlDQWdJQ0FnYzJWMFZHbHRaVzkxZENobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJR1p2Y20wdWMyVjBVSEp2Y0hNb2UzWmhiSFZsT2lBblltRnlKMzBwTzF4dVhHNGdJQ0FnSUNBZ0lHWnZjbU5sVlhCa1lYUmxLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJYWVdsMElHWnZjaUJ1WlhoMElHVjJaVzUwSUd4dmIzQXNJR0Z6SUhSb1lYUWdaRzlsY3lCMGFHVWdabTl5YlZ4dUlDQWdJQ0FnSUNBZ0lITmxkRlJwYldWdmRYUW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdWR1Z6ZEZWMGFXeHpMbE5wYlhWc1lYUmxMbk4xWW0xcGRDaG1iM0p0TG1kbGRFUlBUVTV2WkdVb0tTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCbGVIQmxZM1FvYlc5a1pXd3VkR1Z6ZENrdWRHOUNaU2duWW1GeUp5azdYRzRnSUNBZ0lDQWdJQ0FnSUNCa2IyNWxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ2ZTd2dNQ2s3WEc1Y2JpQWdJQ0FnSUNBZ2ZTazdYRzVjYmlBZ0lDQWdJSDBzSURFd0tUdGNibHh1SUNBZ0lIMHBPMXh1WEc1Y2JpQWdJQ0JwZENnbmMyaHZkV3hrSUdsdWRtRnNhV1JoZEdVZ1lTQjJZV3hwWkNCbWIzSnRJR2xtSUdSNWJtRnRhV05oYkd4NUlHbHVjMlZ5ZEdWa0lHbHVjSFYwSUdseklHbHVkbUZzYVdRbkxDQm1kVzVqZEdsdmJpQW9aRzl1WlNrZ2UxeHVYRzRnSUNBZ0lDQjJZWElnWm05eVkyVlZjR1JoZEdVZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnZG1GeUlHbHpTVzUyWVd4cFpDQTlJR1poYkhObE8xeHVJQ0FnSUNBZ2RtRnlJRlJsYzNSSmJuQjFkQ0E5SUZKbFlXTjBMbU55WldGMFpVTnNZWE56S0h0Y2JpQWdJQ0FnSUNBZ2JXbDRhVzV6T2lCYlJtOXliWE41TGsxcGVHbHVYU3hjYmlBZ0lDQWdJQ0FnWTJoaGJtZGxWbUZzZFdVNklHWjFibU4wYVc5dUlDaGxkbVZ1ZENrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdWMyVjBWbUZzZFdVb1pYWmxiblF1ZEdGeVoyVjBMblpoYkhWbEtUdGNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnY21WdVpHVnlPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlEeHBibkIxZENCMllXeDFaVDE3ZEdocGN5NW5aWFJXWVd4MVpTZ3BmU0J2YmtOb1lXNW5aVDE3ZEdocGN5NWphR0Z1WjJWV1lXeDFaWDB2UGx4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUtUdGNibHh1WEc0Z0lDQWdJQ0IyWVhJZ2FXNXdkWFJ6SUQwZ1cxUmxjM1JKYm5CMWRDaDdYRzRnSUNBZ0lDQWdJRzVoYldVNklDZDBaWE4wSnl4Y2JpQWdJQ0FnSUNBZ2RtRnNhV1JoZEdsdmJuTTZJQ2RwYzBWdFlXbHNKeXhjYmlBZ0lDQWdJQ0FnZG1Gc2RXVTZJQ2RtYjI5QVltRnlMbU52YlNkY2JpQWdJQ0FnSUgwcFhUdGNibHh1SUNBZ0lDQWdkbUZ5SUZSbGMzUkdiM0p0SUQwZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNb2UxeHVJQ0FnSUNBZ0lDQmpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQm1iM0pqWlZWd1pHRjBaU0E5SUhSb2FYTXVabTl5WTJWVmNHUmhkR1V1WW1sdVpDaDBhR2x6S1R0Y2JpQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdjMlYwU1c1MllXeHBaRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2x6U1c1MllXeHBaQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0FnSUhKbGJtUmxjam9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW9JRnh1SUNBZ0lDQWdJQ0FnSUNBZ1BFWnZjbTF6ZVM1R2IzSnRJRzl1U1c1MllXeHBaRDE3ZEdocGN5NXpaWFJKYm5aaGJHbGtmVDRnWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSHRwYm5CMWRITjlYRzRnSUNBZ0lDQWdJQ0FnSUNBOEwwWnZjbTF6ZVM1R2IzSnRQaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2RtRnlJR1p2Y20wZ1BTQlVaWE4wVlhScGJITXVjbVZ1WkdWeVNXNTBiMFJ2WTNWdFpXNTBLQ0JjYmlBZ0lDQWdJQ0FnUEZSbGMzUkdiM0p0THo0Z1hHNGdJQ0FnSUNBcE8xeHVYRzRnSUNBZ0lDQmxlSEJsWTNRb2FYTkpiblpoYkdsa0tTNTBiMEpsS0daaGJITmxLVHRjYmx4dUlDQWdJQ0FnYVc1d2RYUnpMbkIxYzJnb1ZHVnpkRWx1Y0hWMEtIdGNiaUFnSUNBZ0lDQWdibUZ0WlRvZ0ozUmxjM1F5Snl4Y2JpQWdJQ0FnSUNBZ2RtRnNhV1JoZEdsdmJuTTZJQ2RwYzBWdFlXbHNKeXhjYmlBZ0lDQWdJQ0FnZG1Gc2RXVTZJQ2RtYjI5QVltRnlKMXh1SUNBZ0lDQWdmU2twTzF4dVhHNWNiaUFnSUNBZ0lHWnZjbU5sVlhCa1lYUmxLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JseHVJQ0FnSUNBZ0lDQXZMeUJYWVdsMElHWnZjaUJ1WlhoMElHVjJaVzUwSUd4dmIzQXNJR0Z6SUhSb1lYUWdaRzlsY3lCMGFHVWdabTl5YlZ4dUlDQWdJQ0FnSUNCelpYUlVhVzFsYjNWMEtHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCVVpYTjBWWFJwYkhNdVUybHRkV3hoZEdVdWMzVmliV2wwS0dadmNtMHVaMlYwUkU5TlRtOWtaU2dwS1R0Y2JpQWdJQ0FnSUNBZ0lDQmxlSEJsWTNRb2FYTkpiblpoYkdsa0tTNTBiMEpsS0hSeWRXVXBPMXh1SUNBZ0lDQWdJQ0FnSUdSdmJtVW9LVHRjYmlBZ0lDQWdJQ0FnZlN3Z01DazdYRzVjYmlBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnZlNrN1hHNWNiaUFnSUNCcGRDZ25jMmh2ZFd4a0lHNXZkQ0IwY21sbloyVnlJRzl1UTJoaGJtZGxJSGRvWlc0Z1ptOXliU0JwY3lCdGIzVnVkR1ZrSnl3Z1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdkbUZ5SUdoaGMwTm9ZVzVuWldRZ1BTQnFZWE50YVc1bExtTnlaV0YwWlZOd2VTZ25iMjVEYUdGdVoyVW5LVHRjYmlBZ0lDQWdJSFpoY2lCVVpYTjBSbTl5YlNBOUlGSmxZV04wTG1OeVpXRjBaVU5zWVhOektIdGNiaUFnSUNBZ0lDQWdiMjVEYUdGdVoyVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQm9ZWE5EYUdGdVoyVmtLQ2s3WEc0Z0lDQWdJQ0FnSUgwc1hHNGdJQ0FnSUNBZ0lISmxibVJsY2pvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUE4Um05eWJYTjVMa1p2Y20wZ2IyNURhR0Z1WjJVOWUzUm9hWE11YjI1RGFHRnVaMlY5UGp3dlJtOXliWE41TGtadmNtMCtPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUhaaGNpQm1iM0p0SUQwZ1ZHVnpkRlYwYVd4ekxuSmxibVJsY2tsdWRHOUViMk4xYldWdWRDZzhWR1Z6ZEVadmNtMHZQaWs3WEc0Z0lDQWdJQ0JsZUhCbFkzUW9hR0Z6UTJoaGJtZGxaQ2t1Ym05MExuUnZTR0YyWlVKbFpXNURZV3hzWldRb0tUdGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lHbDBLQ2R6YUc5MWJHUWdkSEpwWjJkbGNpQnZia05vWVc1blpTQjNhR1Z1SUdadmNtMGdaV3hsYldWdWRDQnBjeUJqYUdGdVoyVmtKeXdnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ2RtRnlJR2hoYzBOb1lXNW5aV1FnUFNCcVlYTnRhVzVsTG1OeVpXRjBaVk53ZVNnbmIyNURhR0Z1WjJVbktUdGNiaUFnSUNBZ0lIWmhjaUJOZVVsdWNIVjBJRDBnVW1WaFkzUXVZM0psWVhSbFEyeGhjM01vZTF4dUlDQWdJQ0FnSUNCdGFYaHBibk02SUZ0R2IzSnRjM2t1VFdsNGFXNWRMRnh1SUNBZ0lDQWdJQ0J2YmtOb1lXNW5aVG9nWm5WdVkzUnBiMjRnS0dWMlpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSV1lXeDFaU2hsZG1WdWRDNTBZWEpuWlhRdWRtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnUEdsdWNIVjBJSFpoYkhWbFBYdDBhR2x6TG1kbGRGWmhiSFZsS0NsOUlHOXVRMmhoYm1kbFBYdDBhR2x6TG05dVEyaGhibWRsZlM4K1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdkbUZ5SUZSbGMzUkdiM0p0SUQwZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNb2UxeHVJQ0FnSUNBZ0lDQnZia05vWVc1blpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHaGhjME5vWVc1blpXUW9LVHRjYmlBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ2NtVnVaR1Z5T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2hjYmlBZ0lDQWdJQ0FnSUNBZ0lEeEdiM0p0YzNrdVJtOXliU0J2YmtOb1lXNW5aVDE3ZEdocGN5NXZia05vWVc1blpYMCtYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lEeE5lVWx1Y0hWMElHNWhiV1U5WENKbWIyOWNJaTgrWEc0Z0lDQWdJQ0FnSUNBZ0lDQThMMFp2Y20xemVTNUdiM0p0UGx4dUlDQWdJQ0FnSUNBZ0lDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZG1GeUlHWnZjbTBnUFNCVVpYTjBWWFJwYkhNdWNtVnVaR1Z5U1c1MGIwUnZZM1Z0Wlc1MEtEeFVaWE4wUm05eWJTOCtLVHRjYmlBZ0lDQWdJRlJsYzNSVmRHbHNjeTVUYVcxMWJHRjBaUzVqYUdGdVoyVW9WR1Z6ZEZWMGFXeHpMbVpwYm1SU1pXNWtaWEpsWkVSUFRVTnZiWEJ2Ym1WdWRGZHBkR2hVWVdjb1ptOXliU3dnSjBsT1VGVlVKeWtzSUh0MFlYSm5aWFE2SUh0MllXeDFaVG9nSjJKaGNpZDlmU2s3WEc0Z0lDQWdJQ0JsZUhCbFkzUW9hR0Z6UTJoaGJtZGxaQ2t1ZEc5SVlYWmxRbVZsYmtOaGJHeGxaQ2dwTzF4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnYVhRb0ozTm9iM1ZzWkNCMGNtbG5aMlZ5SUc5dVEyaGhibWRsSUhkb1pXNGdibVYzSUdsdWNIVjBJR2x6SUdGa1pHVmtJSFJ2SUdadmNtMG5MQ0JtZFc1amRHbHZiaUFvWkc5dVpTa2dlMXh1SUNBZ0lDQWdkbUZ5SUdoaGMwTm9ZVzVuWldRZ1BTQnFZWE50YVc1bExtTnlaV0YwWlZOd2VTZ25iMjVEYUdGdVoyVW5LVHRjYmlBZ0lDQWdJSFpoY2lCcGJuQjFkSE1nUFNCYlhUdGNiaUFnSUNBZ0lIWmhjaUJtYjNKalpWVndaR0YwWlNBOUlHNTFiR3c3WEc0Z0lDQWdJQ0IyWVhJZ1ZHVnpkRWx1Y0hWMElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdJQ0J0YVhocGJuTTZJRnRHYjNKdGMza3VUV2w0YVc1ZExGeHVJQ0FnSUNBZ0lDQmphR0Z1WjJWV1lXeDFaVG9nWm5WdVkzUnBiMjRnS0dWMlpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSV1lXeDFaU2hsZG1WdWRDNTBZWEpuWlhRdWRtRnNkV1VwTzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnUEdsdWNIVjBJSFpoYkhWbFBYdDBhR2x6TG1kbGRGWmhiSFZsS0NsOUlHOXVRMmhoYm1kbFBYdDBhR2x6TG1Ob1lXNW5aVlpoYkhWbGZTOCtYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZG1GeUlGUmxjM1JHYjNKdElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdJQ0JqYjIxd2IyNWxiblJYYVd4c1RXOTFiblE2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdJQ0JtYjNKalpWVndaR0YwWlNBOUlIUm9hWE11Wm05eVkyVlZjR1JoZEdVdVltbHVaQ2gwYUdsektUdGNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnYjI1RGFHRnVaMlU2SUdaMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdJQ0JvWVhORGFHRnVaMlZrS0NrN1hHNGdJQ0FnSUNBZ0lIMHNYRzRnSUNBZ0lDQWdJSEpsYm1SbGNqb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBb0lGeHVJQ0FnSUNBZ0lDQWdJQ0FnUEVadmNtMXplUzVHYjNKdElHOXVRMmhoYm1kbFBYdDBhR2x6TG05dVEyaGhibWRsZlQ0Z1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUh0cGJuQjFkSE45WEc0Z0lDQWdJQ0FnSUNBZ0lDQThMMFp2Y20xemVTNUdiM0p0UGlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdkbUZ5SUdadmNtMGdQU0JVWlhOMFZYUnBiSE11Y21WdVpHVnlTVzUwYjBSdlkzVnRaVzUwS0NCY2JpQWdJQ0FnSUNBZ1BGUmxjM1JHYjNKdEx6NGdYRzRnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0F2THlCWFlXbDBJR0psWm05eVpTQmhaR1JwYm1jZ2RHaGxJR2x1Y0hWMFhHNGdJQ0FnSUNCcGJuQjFkSE11Y0hWemFDaFVaWE4wU1c1d2RYUW9lMXh1SUNBZ0lDQWdJQ0J1WVcxbE9pQW5kR1Z6ZENkY2JpQWdJQ0FnSUgwcEtUdGNibHh1SUNBZ0lDQWdabTl5WTJWVmNHUmhkR1VvWm5WdVkzUnBiMjRnS0NrZ2UxeHVYRzRnSUNBZ0lDQWdJQzh2SUZkaGFYUWdabTl5SUc1bGVIUWdaWFpsYm5RZ2JHOXZjQ3dnWVhNZ2RHaGhkQ0JrYjJWeklIUm9aU0JtYjNKdFhHNGdJQ0FnSUNBZ0lITmxkRlJwYldWdmRYUW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHVjRjR1ZqZENob1lYTkRhR0Z1WjJWa0tTNTBiMGhoZG1WQ1pXVnVRMkZzYkdWa0tDazdYRzRnSUNBZ0lDQWdJQ0FnWkc5dVpTZ3BPMXh1SUNBZ0lDQWdJQ0I5TENBd0tUdGNibHh1SUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0I5S1R0Y2JseHVJQ0I5S1R0Y2JseHVJQ0JrWlhOamNtbGlaU2duVlhCa1lYUmxJR0VnWm05eWJTY3NJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JseHVJQ0FnSUdsMEtDZHphRzkxYkdRZ1lXeHNiM2NnWld4bGJXVnVkSE1nZEc4Z1kyaGxZMnNnYVdZZ2RHaGxJR1p2Y20wZ2FYTWdaR2x6WVdKc1pXUW5MQ0JtZFc1amRHbHZiaUFvWkc5dVpTa2dlMXh1WEc0Z0lDQWdJQ0IyWVhJZ1ZHVnpkRWx1Y0hWMElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdJQ0J0YVhocGJuTTZJRnRHYjNKdGMza3VUV2w0YVc1ZExGeHVJQ0FnSUNBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnUEdsdWNIVjBJSFpoYkhWbFBYdDBhR2x6TG1kbGRGWmhiSFZsS0NsOUx6NWNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0IyWVhJZ1ZHVnpkRVp2Y20wZ1BTQlNaV0ZqZEM1amNtVmhkR1ZEYkdGemN5aDdYRzRnSUNBZ0lDQWdJR2RsZEVsdWFYUnBZV3hUZEdGMFpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCN1pHbHpZV0pzWldRNklIUnlkV1Y5TzF4dUlDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQmxibUZpYkdWR2IzSnRPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrYVhOaFlteGxaRG9nWm1Gc2MyVmNiaUFnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lDQWdjbVZ1WkdWeU9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNnZ1hHNGdJQ0FnSUNBZ0lDQWdJQ0E4Um05eWJYTjVMa1p2Y20wZ2IyNURhR0Z1WjJVOWUzUm9hWE11YjI1RGFHRnVaMlY5SUdScGMyRmliR1ZrUFh0MGFHbHpMbk4wWVhSbExtUnBjMkZpYkdWa2ZUNGdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lEeFVaWE4wU1c1d2RYUWdibUZ0WlQxY0ltWnZiMXdpTHo1Y2JpQWdJQ0FnSUNBZ0lDQWdJRHd2Um05eWJYTjVMa1p2Y20wK0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0IyWVhJZ1ptOXliU0E5SUZSbGMzUlZkR2xzY3k1eVpXNWtaWEpKYm5SdlJHOWpkVzFsYm5Rb0lGeHVJQ0FnSUNBZ0lDQThWR1Z6ZEVadmNtMHZQaUJjYmlBZ0lDQWdJQ2s3WEc1Y2JpQWdJQ0FnSUhaaGNpQnBibkIxZENBOUlGUmxjM1JWZEdsc2N5NW1hVzVrVW1WdVpHVnlaV1JEYjIxd2IyNWxiblJYYVhSb1ZIbHdaU2htYjNKdExDQlVaWE4wU1c1d2RYUXBPMXh1SUNBZ0lDQWdaWGh3WldOMEtHbHVjSFYwTG1selJtOXliVVJwYzJGaWJHVmtLQ2twTG5SdlFtVW9kSEoxWlNrN1hHNGdJQ0FnSUNCbWIzSnRMbVZ1WVdKc1pVWnZjbTBvS1R0Y2JpQWdJQ0FnSUhObGRGUnBiV1Z2ZFhRb1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0JsZUhCbFkzUW9hVzV3ZFhRdWFYTkdiM0p0UkdsellXSnNaV1FvS1NrdWRHOUNaU2htWVd4elpTazdYRzRnSUNBZ0lDQWdJR1J2Ym1Vb0tUdGNiaUFnSUNBZ0lIMHNJREFwTzF4dVhHNGdJQ0FnZlNrN1hHNWNiaUFnZlNrN1hHNWNibjBwTzF4dUlsMTkiLCJ2YXIgRm9ybXN5ID0gcmVxdWlyZSgnLi8uLi9zcmMvbWFpbi5qcycpO1xuXG5kZXNjcmliZSgnQWpheCcsIGZ1bmN0aW9uKCkge1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIGphc21pbmUuQWpheC5pbnN0YWxsKCk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgamFzbWluZS5BamF4LnVuaW5zdGFsbCgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBvc3QgdG8gYSBnaXZlbiB1cmwgaWYgcGFzc2VkJywgZnVuY3Rpb24gKCkge1xuXG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIn1cbiAgICAgIClcbiAgICApO1xuICAgIFxuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5zdWJtaXQoZm9ybS5nZXRET01Ob2RlKCkpO1xuICAgIGV4cGVjdChqYXNtaW5lLkFqYXgucmVxdWVzdHMubW9zdFJlY2VudCgpLnVybCkudG9CZSgnL3VzZXJzJyk7XG4gICAgZXhwZWN0KGphc21pbmUuQWpheC5yZXF1ZXN0cy5tb3N0UmVjZW50KCkubWV0aG9kKS50b0JlKCdQT1NUJyk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwdXQgdG8gYSBnaXZlbiB1cmwgaWYgcGFzc2VkIGEgbWV0aG9kIGF0dHJpYnV0ZScsIGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHt1cmw6IFwiL3VzZXJzXCIsIG1ldGhvZDogXCJQVVRcIn1cbiAgICAgIClcbiAgICApO1xuICAgIFxuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5zdWJtaXQoZm9ybS5nZXRET01Ob2RlKCkpO1xuICAgIGV4cGVjdChqYXNtaW5lLkFqYXgucmVxdWVzdHMubW9zdFJlY2VudCgpLnVybCkudG9CZSgnL3VzZXJzJyk7XG4gICAgZXhwZWN0KGphc21pbmUuQWpheC5yZXF1ZXN0cy5tb3N0UmVjZW50KCkubWV0aG9kKS50b0JlKCdQVVQnKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhc3MgeC13d3ctZm9ybS11cmxlbmNvZGVkIGFzIGNvbnRlbnRUeXBlIHdoZW4gdXJsZW5jb2RlZCBpcyBzZXQgYXMgY29udGVudFR5cGUnLCBmdW5jdGlvbiAoKSB7XG5cbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wiLCBjb250ZW50VHlwZTogXCJ1cmxlbmNvZGVkXCJ9XG4gICAgICApXG4gICAgKTtcbiAgICBcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcbiAgICBleHBlY3QoamFzbWluZS5BamF4LnJlcXVlc3RzLm1vc3RSZWNlbnQoKS5jb250ZW50VHlwZSgpKS50b0JlKCdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHJ1biBhbiBvblN1Y2Nlc3MgaGFuZGxlciwgaWYgcGFzc2VkIGFuZCBhamF4IGlzIHN1Y2Nlc3NmdWxsLiBGaXJzdCBhcmd1bWVudCBpcyBkYXRhIGZyb20gc2VydmVyJywgZnVuY3Rpb24gKGRvbmUpIHtcbiBcbiAgICB2YXIgb25TdWNjZXNzID0gamFzbWluZS5jcmVhdGVTcHkoXCJzdWNjZXNzXCIpO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHt1cmw6IFwiL3VzZXJzXCIsIG9uU3VjY2Vzczogb25TdWNjZXNzfVxuICAgICAgKVxuICAgICk7XG4gICAgXG4gICAgamFzbWluZS5BamF4LnN0dWJSZXF1ZXN0KCcvdXNlcnMnKS5hbmRSZXR1cm4oe1xuICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgcmVzcG9uc2VUZXh0OiAne30nXG4gICAgfSk7XG5cbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcblxuICAgIC8vIFNpbmNlIGFqYXggaXMgcmV0dXJuZWQgYXMgYSBwcm9taXNlIChhc3luYyksIG1vdmUgYXNzZXJ0aW9uXG4gICAgLy8gdG8gZW5kIG9mIGV2ZW50IGxvb3BcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGV4cGVjdChvblN1Y2Nlc3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHt9KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9LCAwKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBkbyBhamF4IHJlcXVlc3QgaWYgb25TdWJtaXQgaGFuZGxlciBpcyBwYXNzZWQsIGJ1dCBwYXNzIHRoZSBtb2RlbCBhcyBmaXJzdCBhcmd1bWVudCB0byBvblN1Ym1pdCBoYW5kbGVyJywgZnVuY3Rpb24gKCkge1xuICAgIFxuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCl9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvblN1Ym1pdDogb25TdWJtaXR9LCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wiLCB2YWx1ZTogXCJiYXJcIn0pXG4gICAgICApXG4gICAgKTtcblxuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5zdWJtaXQoZm9ybS5nZXRET01Ob2RlKCkpO1xuXG4gICAgZXhwZWN0KGphc21pbmUuQWpheC5yZXF1ZXN0cy5jb3VudCgpKS50b0JlKDApO1xuXG4gICAgZnVuY3Rpb24gb25TdWJtaXQgKGRhdGEpIHtcbiAgICAgIGV4cGVjdChkYXRhKS50b0VxdWFsKHtcbiAgICAgICAgZm9vOiAnYmFyJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdHJpZ2dlciBhbiBvblN1Ym1pdHRlZCBoYW5kbGVyLCBpZiBwYXNzZWQgYW5kIHRoZSBzdWJtaXQgaGFzIHJlc3BvbmRlZCB3aXRoIFNVQ0NFU1MnLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIFxuICAgIHZhciBvblN1Ym1pdHRlZCA9IGphc21pbmUuY3JlYXRlU3B5KFwic3VibWl0dGVkXCIpO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHt1cmw6IFwiL3VzZXJzXCIsIG9uU3VibWl0dGVkOiBvblN1Ym1pdHRlZH1cbiAgICAgIClcbiAgICApO1xuICAgIFxuICAgIGphc21pbmUuQWpheC5zdHViUmVxdWVzdCgnL3VzZXJzJykuYW5kUmV0dXJuKHtcbiAgICAgIHN0YXR1czogMjAwLFxuICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIHJlc3BvbnNlVGV4dDogJ3t9J1xuICAgIH0pO1xuXG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLnN1Ym1pdChmb3JtLmdldERPTU5vZGUoKSk7XG5cbiAgICAvLyBTaW5jZSBhamF4IGlzIHJldHVybmVkIGFzIGEgcHJvbWlzZSAoYXN5bmMpLCBtb3ZlIGFzc2VydGlvblxuICAgIC8vIHRvIGVuZCBvZiBldmVudCBsb29wXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBleHBlY3Qob25TdWJtaXR0ZWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9LCAwKTtcblxuICB9KTtcblxuICBpdCgnc2hvdWxkIHRyaWdnZXIgYW4gb25TdWJtaXR0ZWQgaGFuZGxlciwgaWYgcGFzc2VkIGFuZCB0aGUgc3VibWl0IGhhcyByZXNwb25kZWQgd2l0aCBFUlJPUicsIGZ1bmN0aW9uIChkb25lKSB7XG4gICAgXG4gICAgdmFyIG9uU3VibWl0dGVkID0gamFzbWluZS5jcmVhdGVTcHkoXCJzdWJtaXR0ZWRcIik7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwge3VybDogXCIvdXNlcnNcIiwgb25TdWJtaXR0ZWQ6IG9uU3VibWl0dGVkfVxuICAgICAgKVxuICAgICk7XG4gICAgXG4gICAgamFzbWluZS5BamF4LnN0dWJSZXF1ZXN0KCcvdXNlcnMnKS5hbmRSZXR1cm4oe1xuICAgICAgc3RhdHVzOiA1MDAsXG4gICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgcmVzcG9uc2VUZXh0OiAne30nXG4gICAgfSk7XG5cbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcblxuICAgIC8vIFNpbmNlIGFqYXggaXMgcmV0dXJuZWQgYXMgYSBwcm9taXNlIChhc3luYyksIG1vdmUgYXNzZXJ0aW9uXG4gICAgLy8gdG8gZW5kIG9mIGV2ZW50IGxvb3BcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGV4cGVjdChvblN1Ym1pdHRlZCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0sIDApO1xuXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdHJpZ2dlciBhbiBvbkVycm9yIGhhbmRsZXIsIGlmIHBhc3NlZCBhbmQgdGhlIHN1Ym1pdCBoYXMgcmVzcG9uZGVkIHdpdGggRVJST1InLCBmdW5jdGlvbiAoZG9uZSkge1xuICAgIFxuICAgIHZhciBvbkVycm9yID0gamFzbWluZS5jcmVhdGVTcHkoXCJlcnJvclwiKTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCB7dXJsOiBcIi91c2Vyc1wiLCBvbkVycm9yOiBvbkVycm9yfVxuICAgICAgKVxuICAgICk7XG4gICAgXG4gICAgLy8gRG8gbm90IHJldHVybiBhbnkgZXJyb3IgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW5wdXRzXG4gICAgamFzbWluZS5BamF4LnN0dWJSZXF1ZXN0KCcvdXNlcnMnKS5hbmRSZXR1cm4oe1xuICAgICAgc3RhdHVzOiA1MDAsXG4gICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgcmVzcG9uc2VUZXh0OiAne30nXG4gICAgfSk7XG5cbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuc3VibWl0KGZvcm0uZ2V0RE9NTm9kZSgpKTtcblxuICAgIC8vIFNpbmNlIGFqYXggaXMgcmV0dXJuZWQgYXMgYSBwcm9taXNlIChhc3luYyksIG1vdmUgYXNzZXJ0aW9uXG4gICAgLy8gdG8gZW5kIG9mIGV2ZW50IGxvb3BcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIGV4cGVjdChvbkVycm9yKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7fSk7XG4gICAgICBkb25lKCk7XG4gICAgfSwgMCk7XG5cbiAgfSk7XG5cbn0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lMMVZ6WlhKekwyTm9jbWx6ZEdsaGJtRnNabTl1YVM5RWIyTjFiV1Z1ZEhNdlpHVjJMMlp2Y20xemVTMXlaV0ZqZEM5emNHVmpjeTlUZFdKdGFYUXRjM0JsWXk1cWN5SXNJbk52ZFhKalpYTWlPbHNpTDFWelpYSnpMMk5vY21semRHbGhibUZzWm05dWFTOUViMk4xYldWdWRITXZaR1YyTDJadmNtMXplUzF5WldGamRDOXpjR1ZqY3k5VGRXSnRhWFF0YzNCbFl5NXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4SlFVRkpMRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1EwRkJRenM3UVVGRmVrTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1JVRkJSU3hYUVVGWE96dEZRVVV4UWl4VlFVRlZMRU5CUVVNc1dVRkJXVHRKUVVOeVFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRek5DTEVkQlFVY3NRMEZCUXl4RFFVRkRPenRGUVVWSUxGTkJRVk1zUTBGQlF5eFpRVUZaTzBsQlEzQkNMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdRVUZETjBJc1IwRkJSeXhEUVVGRExFTkJRVU03TzBGQlJVd3NSVUZCUlN4RlFVRkZMRU5CUVVNc2MwTkJRWE5ETEVWQlFVVXNXVUZCV1RzN1NVRkZja1FzU1VGQlNTeEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRMR3RDUVVGclFqdE5RVU55UXl4dlFrRkJReXhYUVVGWExFVkJRVUVzUTBGQlFTeERRVUZETEVkQlFVRXNSVUZCUnl4RFFVRkRMRkZCUVZNc1EwRkJRVHROUVVOYUxFTkJRVUU3UVVGRGNFSXNTMEZCU3l4RFFVRkRPenRKUVVWR0xGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlF6ZERMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRiRVVzU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVnVSU3hIUVVGSExFTkJRVU1zUTBGQlF6czdRVUZGVEN4RlFVRkZMRVZCUVVVc1EwRkJReXgzUkVGQmQwUXNSVUZCUlN4WlFVRlpPenRKUVVWMlJTeEpRVUZKTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTzAxQlEzSkRMRzlDUVVGRExGZEJRVmNzUlVGQlFTeERRVUZCTEVOQlFVTXNSMEZCUVN4RlFVRkhMRU5CUVVNc1VVRkJRU3hGUVVGUkxFTkJRVU1zVFVGQlFTeEZRVUZOTEVOQlFVTXNTMEZCVFN4RFFVRkJPMDFCUTNwQ0xFTkJRVUU3UVVGRGNFSXNTMEZCU3l4RFFVRkRPenRKUVVWR0xGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETzBsQlF6ZERMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4VlFVRlZMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRiRVVzU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZET3p0QlFVVnNSU3hIUVVGSExFTkJRVU1zUTBGQlF6czdRVUZGVEN4RlFVRkZMRVZCUVVVc1EwRkJReXgzUmtGQmQwWXNSVUZCUlN4WlFVRlpPenRKUVVWMlJ5eEpRVUZKTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTzAxQlEzSkRMRzlDUVVGRExGZEJRVmNzUlVGQlFTeERRVUZCTEVOQlFVTXNSMEZCUVN4RlFVRkhMRU5CUVVNc1VVRkJRU3hGUVVGUkxFTkJRVU1zVjBGQlFTeEZRVUZYTEVOQlFVTXNXVUZCWVN4RFFVRkJPMDFCUTNKRExFTkJRVUU3UVVGRGNFSXNTMEZCU3l4RFFVRkRPenRKUVVWR0xGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEycEVMRWxCUVVrc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFEUVVGdFF5eERRVUZETEVOQlFVTTdPMEZCUlhaSExFZEJRVWNzUTBGQlF5eERRVUZET3p0QlFVVk1MRVZCUVVVc1JVRkJSU3hEUVVGRExIZEhRVUYzUnl4RlFVRkZMRlZCUVZVc1NVRkJTU3hGUVVGRk96dEpRVVV6U0N4SlFVRkpMRk5CUVZNc1IwRkJSeXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUXpkRExFbEJRVWtzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4clFrRkJhMEk3VFVGRGNrTXNiMEpCUVVNc1YwRkJWeXhGUVVGQkxFTkJRVUVzUTBGQlF5eEhRVUZCTEVWQlFVY3NRMEZCUXl4UlFVRkJMRVZCUVZFc1EwRkJReXhUUVVGQkxFVkJRVk1zUTBGQlJTeFRRVUZYTEVOQlFVRTdUVUZEYkVNc1EwRkJRVHRCUVVOd1FpeExRVUZMTEVOQlFVTTdPMGxCUlVZc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRE8wMUJRek5ETEUxQlFVMHNSVUZCUlN4SFFVRkhPMDFCUTFnc1YwRkJWeXhGUVVGRkxHdENRVUZyUWp0TlFVTXZRaXhaUVVGWkxFVkJRVVVzU1VGQlNUdEJRVU40UWl4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRlVDeEpRVUZKTEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTJwRU8wRkJRMEU3TzBsQlJVa3NWVUZCVlN4RFFVRkRMRmxCUVZrN1RVRkRja0lzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMDFCUXpORExFbEJRVWtzUlVGQlJTeERRVUZETzBGQlEySXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE96dEJRVVZXTEVkQlFVY3NRMEZCUXl4RFFVRkRPenRCUVVWTUxFVkJRVVVzUlVGQlJTeERRVUZETEc5SVFVRnZTQ3hGUVVGRkxGbEJRVms3TzBsQlJXNUpMRWxCUVVrc0swSkJRU3RDTEhsQ1FVRkJPMDFCUTJwRExFMUJRVTBzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNN1RVRkRkRUlzVFVGQlRTeEZRVUZGTEZsQlFWazdVVUZEYkVJc1QwRkJUeXh2UWtGQlFTeFBRVUZOTEVWQlFVRXNRMEZCUVN4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVY3NRMEZCUlN4RFFVRkJPMDlCUTNoRE8wdEJRMFlzUTBGQlF5eERRVUZETzBsQlEwZ3NTVUZCU1N4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExHdENRVUZyUWp0TlFVTnlReXh2UWtGQlF5eFhRVUZYTEVWQlFVRXNRMEZCUVN4RFFVRkRMRkZCUVVFc1JVRkJVU3hEUVVGRkxGRkJRVlVzUTBGQlFTeEZRVUZCTzFGQlF5OUNMRzlDUVVGRExGTkJRVk1zUlVGQlFTeERRVUZCTEVOQlFVTXNTVUZCUVN4RlFVRkpMRU5CUVVNc1MwRkJRU3hGUVVGTExFTkJRVU1zUzBGQlFTeEZRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkZMRU5CUVVFN1RVRkRka0lzUTBGQlFUdEJRVU53UWl4TFFVRkxMRU5CUVVNN08wRkJSVTRzU1VGQlNTeFRRVUZUTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTXNRMEZCUXpzN1FVRkZha1FzU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzBsQlJUbERMRk5CUVZNc1VVRkJVU3hGUVVGRkxFbEJRVWtzUlVGQlJUdE5RVU4yUWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETzFGQlEyNUNMRWRCUVVjc1JVRkJSU3hMUVVGTE8wOUJRMWdzUTBGQlF5eERRVUZETzBGQlExUXNTMEZCU3pzN1FVRkZUQ3hIUVVGSExFTkJRVU1zUTBGQlF6czdRVUZGVEN4RlFVRkZMRVZCUVVVc1EwRkJReXcwUmtGQk5FWXNSVUZCUlN4VlFVRlZMRWxCUVVrc1JVRkJSVHM3U1VGRkwwY3NTVUZCU1N4WFFVRlhMRWRCUVVjc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0SlFVTnFSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eFRRVUZUTEVOQlFVTXNhMEpCUVd0Q08wMUJRM0pETEc5Q1FVRkRMRmRCUVZjc1JVRkJRU3hEUVVGQkxFTkJRVU1zUjBGQlFTeEZRVUZITEVOQlFVTXNVVUZCUVN4RlFVRlJMRU5CUVVNc1YwRkJRU3hGUVVGWExFTkJRVVVzVjBGQllTeERRVUZCTzAxQlEzUkRMRU5CUVVFN1FVRkRjRUlzUzBGQlN5eERRVUZET3p0SlFVVkdMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJRenROUVVNelF5eE5RVUZOTEVWQlFVVXNSMEZCUnp0TlFVTllMRmRCUVZjc1JVRkJSU3hyUWtGQmEwSTdUVUZETDBJc1dVRkJXU3hGUVVGRkxFbEJRVWs3UVVGRGVFSXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSVkFzU1VGQlNTeFRRVUZUTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTnFSRHRCUVVOQk96dEpRVVZKTEZWQlFWVXNRMEZCUXl4WlFVRlpPMDFCUTNKQ0xFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeERRVUZETzAxQlEzWkRMRWxCUVVrc1JVRkJSU3hEUVVGRE8wRkJRMklzUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPenRCUVVWV0xFZEJRVWNzUTBGQlF5eERRVUZET3p0QlFVVk1MRVZCUVVVc1JVRkJSU3hEUVVGRExEQkdRVUV3Uml4RlFVRkZMRlZCUVZVc1NVRkJTU3hGUVVGRk96dEpRVVUzUnl4SlFVRkpMRmRCUVZjc1IwRkJSeXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMGxCUTJwRUxFbEJRVWtzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4clFrRkJhMEk3VFVGRGNrTXNiMEpCUVVNc1YwRkJWeXhGUVVGQkxFTkJRVUVzUTBGQlF5eEhRVUZCTEVWQlFVY3NRMEZCUXl4UlFVRkJMRVZCUVZFc1EwRkJReXhYUVVGQkxFVkJRVmNzUTBGQlJTeFhRVUZoTEVOQlFVRTdUVUZEZEVNc1EwRkJRVHRCUVVOd1FpeExRVUZMTEVOQlFVTTdPMGxCUlVZc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRE8wMUJRek5ETEUxQlFVMHNSVUZCUlN4SFFVRkhPMDFCUTFnc1YwRkJWeXhGUVVGRkxHdENRVUZyUWp0TlFVTXZRaXhaUVVGWkxFVkJRVVVzU1VGQlNUdEJRVU40UWl4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRlVDeEpRVUZKTEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTJwRU8wRkJRMEU3TzBsQlJVa3NWVUZCVlN4RFFVRkRMRmxCUVZrN1RVRkRja0lzVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEVOQlFVTTdUVUZEZGtNc1NVRkJTU3hGUVVGRkxFTkJRVU03UVVGRFlpeExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSVllzUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUlV3c1JVRkJSU3hGUVVGRkxFTkJRVU1zYzBaQlFYTkdMRVZCUVVVc1ZVRkJWU3hKUVVGSkxFVkJRVVU3TzBsQlJYcEhMRWxCUVVrc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRla01zU1VGQlNTeEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRMR3RDUVVGclFqdE5RVU55UXl4dlFrRkJReXhYUVVGWExFVkJRVUVzUTBGQlFTeERRVUZETEVkQlFVRXNSVUZCUnl4RFFVRkRMRkZCUVVFc1JVRkJVU3hEUVVGRExFOUJRVUVzUlVGQlR5eERRVUZGTEU5QlFWTXNRMEZCUVR0TlFVTTVRaXhEUVVGQk8wRkJRM0JDTEV0QlFVc3NRMEZCUXp0QlFVTk9PenRKUVVWSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF6dE5RVU16UXl4TlFVRk5MRVZCUVVVc1IwRkJSenROUVVOWUxGZEJRVmNzUlVGQlJTeHJRa0ZCYTBJN1RVRkRMMElzV1VGQldTeEZRVUZGTEVsQlFVazdRVUZEZUVJc1MwRkJTeXhEUVVGRExFTkJRVU03TzBGQlJWQXNTVUZCU1N4VFFVRlRMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOcVJEdEJRVU5CT3p0SlFVVkpMRlZCUVZVc1EwRkJReXhaUVVGWk8wMUJRM0pDTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenROUVVONlF5eEpRVUZKTEVWQlFVVXNRMEZCUXp0QlFVTmlMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6czdRVUZGVml4SFFVRkhMRU5CUVVNc1EwRkJRenM3UTBGRlNpeERRVUZETEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUoyWVhJZ1JtOXliWE41SUQwZ2NtVnhkV2x5WlNnbkxpOHVMaTl6Y21NdmJXRnBiaTVxY3ljcE8xeHVYRzVrWlhOamNtbGlaU2duUVdwaGVDY3NJR1oxYm1OMGFXOXVLQ2tnZTF4dVhHNGdJR0psWm05eVpVVmhZMmdvWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUdwaGMyMXBibVV1UVdwaGVDNXBibk4wWVd4c0tDazdYRzRnSUgwcE8xeHVYRzRnSUdGbWRHVnlSV0ZqYUNobWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2FtRnpiV2x1WlM1QmFtRjRMblZ1YVc1emRHRnNiQ2dwTzF4dUlDQjlLVHRjYmx4dUlDQnBkQ2duYzJodmRXeGtJSEJ2YzNRZ2RHOGdZU0JuYVhabGJpQjFjbXdnYVdZZ2NHRnpjMlZrSnl3Z1puVnVZM1JwYjI0Z0tDa2dlMXh1WEc0Z0lDQWdkbUZ5SUdadmNtMGdQU0JVWlhOMFZYUnBiSE11Y21WdVpHVnlTVzUwYjBSdlkzVnRaVzUwS0Z4dUlDQWdJQ0FnUEVadmNtMXplUzVHYjNKdElIVnliRDFjSWk5MWMyVnljMXdpUGx4dUlDQWdJQ0FnUEM5R2IzSnRjM2t1Um05eWJUNWNiaUFnSUNBcE8xeHVJQ0FnSUZ4dUlDQWdJRlJsYzNSVmRHbHNjeTVUYVcxMWJHRjBaUzV6ZFdKdGFYUW9abTl5YlM1blpYUkVUMDFPYjJSbEtDa3BPMXh1SUNBZ0lHVjRjR1ZqZENocVlYTnRhVzVsTGtGcVlYZ3VjbVZ4ZFdWemRITXViVzl6ZEZKbFkyVnVkQ2dwTG5WeWJDa3VkRzlDWlNnbkwzVnpaWEp6SnlrN1hHNGdJQ0FnWlhod1pXTjBLR3BoYzIxcGJtVXVRV3BoZUM1eVpYRjFaWE4wY3k1dGIzTjBVbVZqWlc1MEtDa3ViV1YwYUc5a0tTNTBiMEpsS0NkUVQxTlVKeWs3WEc1Y2JpQWdmU2s3WEc1Y2JpQWdhWFFvSjNOb2IzVnNaQ0J3ZFhRZ2RHOGdZU0JuYVhabGJpQjFjbXdnYVdZZ2NHRnpjMlZrSUdFZ2JXVjBhRzlrSUdGMGRISnBZblYwWlNjc0lHWjFibU4wYVc5dUlDZ3BJSHRjYmx4dUlDQWdJSFpoY2lCbWIzSnRJRDBnVkdWemRGVjBhV3h6TG5KbGJtUmxja2x1ZEc5RWIyTjFiV1Z1ZENoY2JpQWdJQ0FnSUR4R2IzSnRjM2t1Um05eWJTQjFjbXc5WENJdmRYTmxjbk5jSWlCdFpYUm9iMlE5WENKUVZWUmNJajVjYmlBZ0lDQWdJRHd2Um05eWJYTjVMa1p2Y20wK1hHNGdJQ0FnS1R0Y2JpQWdJQ0JjYmlBZ0lDQlVaWE4wVlhScGJITXVVMmx0ZFd4aGRHVXVjM1ZpYldsMEtHWnZjbTB1WjJWMFJFOU5UbTlrWlNncEtUdGNiaUFnSUNCbGVIQmxZM1FvYW1GemJXbHVaUzVCYW1GNExuSmxjWFZsYzNSekxtMXZjM1JTWldObGJuUW9LUzUxY213cExuUnZRbVVvSnk5MWMyVnljeWNwTzF4dUlDQWdJR1Y0Y0dWamRDaHFZWE50YVc1bExrRnFZWGd1Y21WeGRXVnpkSE11Ylc5emRGSmxZMlZ1ZENncExtMWxkR2h2WkNrdWRHOUNaU2duVUZWVUp5azdYRzVjYmlBZ2ZTazdYRzVjYmlBZ2FYUW9KM05vYjNWc1pDQndZWE56SUhndGQzZDNMV1p2Y20wdGRYSnNaVzVqYjJSbFpDQmhjeUJqYjI1MFpXNTBWSGx3WlNCM2FHVnVJSFZ5YkdWdVkyOWtaV1FnYVhNZ2MyVjBJR0Z6SUdOdmJuUmxiblJVZVhCbEp5d2dablZ1WTNScGIyNGdLQ2tnZTF4dVhHNGdJQ0FnZG1GeUlHWnZjbTBnUFNCVVpYTjBWWFJwYkhNdWNtVnVaR1Z5U1c1MGIwUnZZM1Z0Wlc1MEtGeHVJQ0FnSUNBZ1BFWnZjbTF6ZVM1R2IzSnRJSFZ5YkQxY0lpOTFjMlZ5YzF3aUlHTnZiblJsYm5SVWVYQmxQVndpZFhKc1pXNWpiMlJsWkZ3aVBseHVJQ0FnSUNBZ1BDOUdiM0p0YzNrdVJtOXliVDVjYmlBZ0lDQXBPMXh1SUNBZ0lGeHVJQ0FnSUZSbGMzUlZkR2xzY3k1VGFXMTFiR0YwWlM1emRXSnRhWFFvWm05eWJTNW5aWFJFVDAxT2IyUmxLQ2twTzF4dUlDQWdJR1Y0Y0dWamRDaHFZWE50YVc1bExrRnFZWGd1Y21WeGRXVnpkSE11Ylc5emRGSmxZMlZ1ZENncExtTnZiblJsYm5SVWVYQmxLQ2twTG5SdlFtVW9KMkZ3Y0d4cFkyRjBhVzl1TDNndGQzZDNMV1p2Y20wdGRYSnNaVzVqYjJSbFpDY3BPMXh1WEc0Z0lIMHBPMXh1WEc0Z0lHbDBLQ2R6YUc5MWJHUWdjblZ1SUdGdUlHOXVVM1ZqWTJWemN5Qm9ZVzVrYkdWeUxDQnBaaUJ3WVhOelpXUWdZVzVrSUdGcVlYZ2dhWE1nYzNWalkyVnpjMloxYkd3dUlFWnBjbk4wSUdGeVozVnRaVzUwSUdseklHUmhkR0VnWm5KdmJTQnpaWEoyWlhJbkxDQm1kVzVqZEdsdmJpQW9aRzl1WlNrZ2UxeHVJRnh1SUNBZ0lIWmhjaUJ2YmxOMVkyTmxjM01nUFNCcVlYTnRhVzVsTG1OeVpXRjBaVk53ZVNoY0luTjFZMk5sYzNOY0lpazdYRzRnSUNBZ2RtRnlJR1p2Y20wZ1BTQlVaWE4wVlhScGJITXVjbVZ1WkdWeVNXNTBiMFJ2WTNWdFpXNTBLRnh1SUNBZ0lDQWdQRVp2Y20xemVTNUdiM0p0SUhWeWJEMWNJaTkxYzJWeWMxd2lJRzl1VTNWalkyVnpjejE3YjI1VGRXTmpaWE56ZlQ1Y2JpQWdJQ0FnSUR3dlJtOXliWE41TGtadmNtMCtYRzRnSUNBZ0tUdGNiaUFnSUNCY2JpQWdJQ0JxWVhOdGFXNWxMa0ZxWVhndWMzUjFZbEpsY1hWbGMzUW9KeTkxYzJWeWN5Y3BMbUZ1WkZKbGRIVnliaWg3WEc0Z0lDQWdJQ0J6ZEdGMGRYTTZJREl3TUN4Y2JpQWdJQ0FnSUdOdmJuUmxiblJVZVhCbE9pQW5ZWEJ3YkdsallYUnBiMjR2YW5OdmJpY3NYRzRnSUNBZ0lDQnlaWE53YjI1elpWUmxlSFE2SUNkN2ZTZGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lGUmxjM1JWZEdsc2N5NVRhVzExYkdGMFpTNXpkV0p0YVhRb1ptOXliUzVuWlhSRVQwMU9iMlJsS0NrcE8xeHVYRzRnSUNBZ0x5OGdVMmx1WTJVZ1lXcGhlQ0JwY3lCeVpYUjFjbTVsWkNCaGN5QmhJSEJ5YjIxcGMyVWdLR0Z6ZVc1aktTd2diVzkyWlNCaGMzTmxjblJwYjI1Y2JpQWdJQ0F2THlCMGJ5QmxibVFnYjJZZ1pYWmxiblFnYkc5dmNGeHVJQ0FnSUhObGRGUnBiV1Z2ZFhRb1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdaWGh3WldOMEtHOXVVM1ZqWTJWemN5a3VkRzlJWVhabFFtVmxia05oYkd4bFpGZHBkR2dvZTMwcE8xeHVJQ0FnSUNBZ1pHOXVaU2dwTzF4dUlDQWdJSDBzSURBcE8xeHVYRzRnSUgwcE8xeHVYRzRnSUdsMEtDZHphRzkxYkdRZ2JtOTBJR1J2SUdGcVlYZ2djbVZ4ZFdWemRDQnBaaUJ2YmxOMVltMXBkQ0JvWVc1a2JHVnlJR2x6SUhCaGMzTmxaQ3dnWW5WMElIQmhjM01nZEdobElHMXZaR1ZzSUdGeklHWnBjbk4wSUdGeVozVnRaVzUwSUhSdklHOXVVM1ZpYldsMElHaGhibVJzWlhJbkxDQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdYRzRnSUNBZ2RtRnlJRlJsYzNSSmJuQjFkQ0E5SUZKbFlXTjBMbU55WldGMFpVTnNZWE56S0h0Y2JpQWdJQ0FnSUcxcGVHbHVjem9nVzBadmNtMXplUzVOYVhocGJsMHNYRzRnSUNBZ0lDQnlaVzVrWlhJNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRHhwYm5CMWRDQjJZV3gxWlQxN2RHaHBjeTVuWlhSV1lXeDFaU2dwZlM4K1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJQ0FnZG1GeUlHWnZjbTBnUFNCVVpYTjBWWFJwYkhNdWNtVnVaR1Z5U1c1MGIwUnZZM1Z0Wlc1MEtGeHVJQ0FnSUNBZ1BFWnZjbTF6ZVM1R2IzSnRJRzl1VTNWaWJXbDBQWHR2YmxOMVltMXBkSDArWEc0Z0lDQWdJQ0FnSUR4VVpYTjBTVzV3ZFhRZ2JtRnRaVDFjSW1admIxd2lJSFpoYkhWbFBWd2lZbUZ5WENJdlBseHVJQ0FnSUNBZ1BDOUdiM0p0YzNrdVJtOXliVDVjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdWR1Z6ZEZWMGFXeHpMbE5wYlhWc1lYUmxMbk4xWW0xcGRDaG1iM0p0TG1kbGRFUlBUVTV2WkdVb0tTazdYRzVjYmlBZ0lDQmxlSEJsWTNRb2FtRnpiV2x1WlM1QmFtRjRMbkpsY1hWbGMzUnpMbU52ZFc1MEtDa3BMblJ2UW1Vb01DazdYRzVjYmlBZ0lDQm1kVzVqZEdsdmJpQnZibE4xWW0xcGRDQW9aR0YwWVNrZ2UxeHVJQ0FnSUNBZ1pYaHdaV04wS0dSaGRHRXBMblJ2UlhGMVlXd29lMXh1SUNBZ0lDQWdJQ0JtYjI4NklDZGlZWEluWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0I5WEc1Y2JpQWdmU2s3WEc1Y2JpQWdhWFFvSjNOb2IzVnNaQ0IwY21sbloyVnlJR0Z1SUc5dVUzVmliV2wwZEdWa0lHaGhibVJzWlhJc0lHbG1JSEJoYzNObFpDQmhibVFnZEdobElITjFZbTFwZENCb1lYTWdjbVZ6Y0c5dVpHVmtJSGRwZEdnZ1UxVkRRMFZUVXljc0lHWjFibU4wYVc5dUlDaGtiMjVsS1NCN1hHNGdJQ0FnWEc0Z0lDQWdkbUZ5SUc5dVUzVmliV2wwZEdWa0lEMGdhbUZ6YldsdVpTNWpjbVZoZEdWVGNIa29YQ0p6ZFdKdGFYUjBaV1JjSWlrN1hHNGdJQ0FnZG1GeUlHWnZjbTBnUFNCVVpYTjBWWFJwYkhNdWNtVnVaR1Z5U1c1MGIwUnZZM1Z0Wlc1MEtGeHVJQ0FnSUNBZ1BFWnZjbTF6ZVM1R2IzSnRJSFZ5YkQxY0lpOTFjMlZ5YzF3aUlHOXVVM1ZpYldsMGRHVmtQWHR2YmxOMVltMXBkSFJsWkgwK1hHNGdJQ0FnSUNBOEwwWnZjbTF6ZVM1R2IzSnRQbHh1SUNBZ0lDazdYRzRnSUNBZ1hHNGdJQ0FnYW1GemJXbHVaUzVCYW1GNExuTjBkV0pTWlhGMVpYTjBLQ2N2ZFhObGNuTW5LUzVoYm1SU1pYUjFjbTRvZTF4dUlDQWdJQ0FnYzNSaGRIVnpPaUF5TURBc1hHNGdJQ0FnSUNCamIyNTBaVzUwVkhsd1pUb2dKMkZ3Y0d4cFkyRjBhVzl1TDJwemIyNG5MRnh1SUNBZ0lDQWdjbVZ6Y0c5dWMyVlVaWGgwT2lBbmUzMG5YRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQlVaWE4wVlhScGJITXVVMmx0ZFd4aGRHVXVjM1ZpYldsMEtHWnZjbTB1WjJWMFJFOU5UbTlrWlNncEtUdGNibHh1SUNBZ0lDOHZJRk5wYm1ObElHRnFZWGdnYVhNZ2NtVjBkWEp1WldRZ1lYTWdZU0J3Y205dGFYTmxJQ2hoYzNsdVl5a3NJRzF2ZG1VZ1lYTnpaWEowYVc5dVhHNGdJQ0FnTHk4Z2RHOGdaVzVrSUc5bUlHVjJaVzUwSUd4dmIzQmNiaUFnSUNCelpYUlVhVzFsYjNWMEtHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJR1Y0Y0dWamRDaHZibE4xWW0xcGRIUmxaQ2t1ZEc5SVlYWmxRbVZsYmtOaGJHeGxaQ2dwTzF4dUlDQWdJQ0FnWkc5dVpTZ3BPMXh1SUNBZ0lIMHNJREFwTzF4dVhHNGdJSDBwTzF4dVhHNGdJR2wwS0NkemFHOTFiR1FnZEhKcFoyZGxjaUJoYmlCdmJsTjFZbTFwZEhSbFpDQm9ZVzVrYkdWeUxDQnBaaUJ3WVhOelpXUWdZVzVrSUhSb1pTQnpkV0p0YVhRZ2FHRnpJSEpsYzNCdmJtUmxaQ0IzYVhSb0lFVlNVazlTSnl3Z1puVnVZM1JwYjI0Z0tHUnZibVVwSUh0Y2JpQWdJQ0JjYmlBZ0lDQjJZWElnYjI1VGRXSnRhWFIwWldRZ1BTQnFZWE50YVc1bExtTnlaV0YwWlZOd2VTaGNJbk4xWW0xcGRIUmxaRndpS1R0Y2JpQWdJQ0IyWVhJZ1ptOXliU0E5SUZSbGMzUlZkR2xzY3k1eVpXNWtaWEpKYm5SdlJHOWpkVzFsYm5Rb1hHNGdJQ0FnSUNBOFJtOXliWE41TGtadmNtMGdkWEpzUFZ3aUwzVnpaWEp6WENJZ2IyNVRkV0p0YVhSMFpXUTllMjl1VTNWaWJXbDBkR1ZrZlQ1Y2JpQWdJQ0FnSUR3dlJtOXliWE41TGtadmNtMCtYRzRnSUNBZ0tUdGNiaUFnSUNCY2JpQWdJQ0JxWVhOdGFXNWxMa0ZxWVhndWMzUjFZbEpsY1hWbGMzUW9KeTkxYzJWeWN5Y3BMbUZ1WkZKbGRIVnliaWg3WEc0Z0lDQWdJQ0J6ZEdGMGRYTTZJRFV3TUN4Y2JpQWdJQ0FnSUdOdmJuUmxiblJVZVhCbE9pQW5ZWEJ3YkdsallYUnBiMjR2YW5OdmJpY3NYRzRnSUNBZ0lDQnlaWE53YjI1elpWUmxlSFE2SUNkN2ZTZGNiaUFnSUNCOUtUdGNibHh1SUNBZ0lGUmxjM1JWZEdsc2N5NVRhVzExYkdGMFpTNXpkV0p0YVhRb1ptOXliUzVuWlhSRVQwMU9iMlJsS0NrcE8xeHVYRzRnSUNBZ0x5OGdVMmx1WTJVZ1lXcGhlQ0JwY3lCeVpYUjFjbTVsWkNCaGN5QmhJSEJ5YjIxcGMyVWdLR0Z6ZVc1aktTd2diVzkyWlNCaGMzTmxjblJwYjI1Y2JpQWdJQ0F2THlCMGJ5QmxibVFnYjJZZ1pYWmxiblFnYkc5dmNGeHVJQ0FnSUhObGRGUnBiV1Z2ZFhRb1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdaWGh3WldOMEtHOXVVM1ZpYldsMGRHVmtLUzUwYjBoaGRtVkNaV1Z1UTJGc2JHVmtLQ2s3WEc0Z0lDQWdJQ0JrYjI1bEtDazdYRzRnSUNBZ2ZTd2dNQ2s3WEc1Y2JpQWdmU2s3WEc1Y2JpQWdhWFFvSjNOb2IzVnNaQ0IwY21sbloyVnlJR0Z1SUc5dVJYSnliM0lnYUdGdVpHeGxjaXdnYVdZZ2NHRnpjMlZrSUdGdVpDQjBhR1VnYzNWaWJXbDBJR2hoY3lCeVpYTndiMjVrWldRZ2QybDBhQ0JGVWxKUFVpY3NJR1oxYm1OMGFXOXVJQ2hrYjI1bEtTQjdYRzRnSUNBZ1hHNGdJQ0FnZG1GeUlHOXVSWEp5YjNJZ1BTQnFZWE50YVc1bExtTnlaV0YwWlZOd2VTaGNJbVZ5Y205eVhDSXBPMXh1SUNBZ0lIWmhjaUJtYjNKdElEMGdWR1Z6ZEZWMGFXeHpMbkpsYm1SbGNrbHVkRzlFYjJOMWJXVnVkQ2hjYmlBZ0lDQWdJRHhHYjNKdGMza3VSbTl5YlNCMWNtdzlYQ0l2ZFhObGNuTmNJaUJ2YmtWeWNtOXlQWHR2YmtWeWNtOXlmVDVjYmlBZ0lDQWdJRHd2Um05eWJYTjVMa1p2Y20wK1hHNGdJQ0FnS1R0Y2JpQWdJQ0JjYmlBZ0lDQXZMeUJFYnlCdWIzUWdjbVYwZFhKdUlHRnVlU0JsY25KdmNpQmlaV05oZFhObElIUm9aWEpsSUdGeVpTQnVieUJwYm5CMWRITmNiaUFnSUNCcVlYTnRhVzVsTGtGcVlYZ3VjM1IxWWxKbGNYVmxjM1FvSnk5MWMyVnljeWNwTG1GdVpGSmxkSFZ5YmloN1hHNGdJQ0FnSUNCemRHRjBkWE02SURVd01DeGNiaUFnSUNBZ0lHTnZiblJsYm5SVWVYQmxPaUFuWVhCd2JHbGpZWFJwYjI0dmFuTnZiaWNzWEc0Z0lDQWdJQ0J5WlhOd2IyNXpaVlJsZUhRNklDZDdmU2RjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJRlJsYzNSVmRHbHNjeTVUYVcxMWJHRjBaUzV6ZFdKdGFYUW9abTl5YlM1blpYUkVUMDFPYjJSbEtDa3BPMXh1WEc0Z0lDQWdMeThnVTJsdVkyVWdZV3BoZUNCcGN5QnlaWFIxY201bFpDQmhjeUJoSUhCeWIyMXBjMlVnS0dGemVXNWpLU3dnYlc5MlpTQmhjM05sY25ScGIyNWNiaUFnSUNBdkx5QjBieUJsYm1RZ2IyWWdaWFpsYm5RZ2JHOXZjRnh1SUNBZ0lITmxkRlJwYldWdmRYUW9ablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnWlhod1pXTjBLRzl1UlhKeWIzSXBMblJ2U0dGMlpVSmxaVzVEWVd4c1pXUlhhWFJvS0h0OUtUdGNiaUFnSUNBZ0lHUnZibVVvS1R0Y2JpQWdJQ0I5TENBd0tUdGNibHh1SUNCOUtUdGNibHh1ZlNrN1hHNGlYWDA9IiwidmFyIEZvcm1zeSA9IHJlcXVpcmUoJy4vLi4vc3JjL21haW4uanMnKTtcblxuZGVzY3JpYmUoJ1ZhbGlkYXRpb24nLCBmdW5jdGlvbigpIHtcblxuICBpdCgnc2hvdWxkIHRyaWdnZXIgYW4gb25WYWxpZCBoYW5kbGVyLCBpZiBwYXNzZWQsIHdoZW4gZm9ybSBpcyB2YWxpZCcsIGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBvblZhbGlkID0gamFzbWluZS5jcmVhdGVTcHkoJ3ZhbGlkJyk7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMudXBkYXRlVmFsdWV9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvblZhbGlkOiBvblZhbGlkfSwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgcmVxdWlyZWQ6IHRydWV9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKGlucHV0LCB7dGFyZ2V0OiB7dmFsdWU6ICdmb28nfX0pO1xuICAgIGV4cGVjdChvblZhbGlkKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0cmlnZ2VyIGFuIG9uSW52YWxpZCBoYW5kbGVyLCBpZiBwYXNzZWQsIHdoZW4gZm9ybSBpcyBpbnZhbGlkJywgZnVuY3Rpb24gKCkge1xuXG4gICAgdmFyIG9uSW52YWxpZCA9IGphc21pbmUuY3JlYXRlU3B5KCdpbnZhbGlkJyk7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMudXBkYXRlVmFsdWV9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIHtvblZhbGlkOiBvbkludmFsaWR9LCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wiLCB2YWx1ZTogXCJmb29cIn0pXG4gICAgICApXG4gICAgKTtcblxuICAgIHZhciBpbnB1dCA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKGZvcm0sICdJTlBVVCcpO1xuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5jaGFuZ2UoaW5wdXQsIHt0YXJnZXQ6IHt2YWx1ZTogJyd9fSk7XG4gICAgZXhwZWN0KG9uSW52YWxpZCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gIH0pO1xuXG4gIGl0KCdSVUxFOiBpc0VtYWlsJywgZnVuY3Rpb24gKCkge1xuXG4gICAgdmFyIGlzVmFsaWQgPSBqYXNtaW5lLmNyZWF0ZVNweSgndmFsaWQnKTtcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBpc1ZhbGlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMudXBkYXRlVmFsdWV9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIG51bGwsIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wiLCB2YWxpZGF0aW9uczogXCJpc0VtYWlsXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICBleHBlY3QoaXNWYWxpZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKGlucHV0LCB7dGFyZ2V0OiB7dmFsdWU6ICdmb29AZm9vLmNvbSd9fSk7XG4gICAgZXhwZWN0KGlzVmFsaWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICB9KTtcblxuICBpdCgnUlVMRTogaXNOdW1lcmljJywgZnVuY3Rpb24gKCkge1xuXG4gICAgdmFyIGlzVmFsaWQgPSBqYXNtaW5lLmNyZWF0ZVNweSgndmFsaWQnKTtcbiAgICB2YXIgVGVzdElucHV0ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIlRlc3RJbnB1dFwiLFxuICAgICAgbWl4aW5zOiBbRm9ybXN5Lk1peGluXSxcbiAgICAgIHVwZGF0ZVZhbHVlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBpc1ZhbGlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMudXBkYXRlVmFsdWV9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIG51bGwsIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wiLCB2YWxpZGF0aW9uczogXCJpc051bWVyaWNcIn0pXG4gICAgICApXG4gICAgKTtcblxuICAgIHZhciBpbnB1dCA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKGZvcm0sICdJTlBVVCcpO1xuICAgIGV4cGVjdChpc1ZhbGlkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5jaGFuZ2UoaW5wdXQsIHt0YXJnZXQ6IHt2YWx1ZTogJzEyMyd9fSk7XG4gICAgZXhwZWN0KGlzVmFsaWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICB9KTtcblxuICBpdCgnUlVMRTogaXNOdW1lcmljIChhY3R1YWwgbnVtYmVyKScsIGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBpc1ZhbGlkID0gamFzbWluZS5jcmVhdGVTcHkoJ3ZhbGlkJyk7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoTnVtYmVyKGV2ZW50LnRhcmdldC52YWx1ZSkpO1xuICAgICAgfSxcbiAgICAgIHJlbmRlcjogZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBpc1ZhbGlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7dmFsdWU6IHRoaXMuZ2V0VmFsdWUoKSwgb25DaGFuZ2U6IHRoaXMudXBkYXRlVmFsdWV9KVxuICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBmb3JtID0gVGVzdFV0aWxzLnJlbmRlckludG9Eb2N1bWVudChcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9ybXN5LkZvcm0sIG51bGwsIFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRlc3RJbnB1dCwge25hbWU6IFwiZm9vXCIsIHZhbHVlOiBcImZvb1wiLCB2YWxpZGF0aW9uczogXCJpc051bWVyaWNcIn0pXG4gICAgICApXG4gICAgKTtcblxuICAgIHZhciBpbnB1dCA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKGZvcm0sICdJTlBVVCcpO1xuICAgIGV4cGVjdChpc1ZhbGlkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIFRlc3RVdGlscy5TaW11bGF0ZS5jaGFuZ2UoaW5wdXQsIHt0YXJnZXQ6IHt2YWx1ZTogJzEyMyd9fSk7XG4gICAgZXhwZWN0KGlzVmFsaWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICB9KTtcblxuICBpdCgnUlVMRTogaXNOdW1lcmljIChzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBmbG9hdCknLCBmdW5jdGlvbiAoKSB7XG5cbiAgICB2YXIgaXNWYWxpZCA9IGphc21pbmUuY3JlYXRlU3B5KCd2YWxpZCcpO1xuICAgIHZhciBUZXN0SW5wdXQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7ZGlzcGxheU5hbWU6IFwiVGVzdElucHV0XCIsXG4gICAgICBtaXhpbnM6IFtGb3Jtc3kuTWl4aW5dLFxuICAgICAgdXBkYXRlVmFsdWU6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgIGlzVmFsaWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIHt2YWx1ZTogdGhpcy5nZXRWYWx1ZSgpLCBvbkNoYW5nZTogdGhpcy51cGRhdGVWYWx1ZX0pXG4gICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGZvcm0gPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGb3Jtc3kuRm9ybSwgbnVsbCwgXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGVzdElucHV0LCB7bmFtZTogXCJmb29cIiwgdmFsdWU6IFwiZm9vXCIsIHZhbGlkYXRpb25zOiBcImlzTnVtZXJpY1wifSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgdmFyIGlucHV0ID0gVGVzdFV0aWxzLmZpbmRSZW5kZXJlZERPTUNvbXBvbmVudFdpdGhUYWcoZm9ybSwgJ0lOUFVUJyk7XG4gICAgZXhwZWN0KGlzVmFsaWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgVGVzdFV0aWxzLlNpbXVsYXRlLmNoYW5nZShpbnB1dCwge3RhcmdldDoge3ZhbHVlOiAnMS41J319KTtcbiAgICBleHBlY3QoaXNWYWxpZCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gIH0pO1xuXG4gIGl0KCdSVUxFOiBpc051bWVyaWMgaXMgZmFsc2UgKHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnZhbGlkIGZsb2F0KScsIGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBpc1ZhbGlkID0gamFzbWluZS5jcmVhdGVTcHkoJ3ZhbGlkJyk7XG4gICAgdmFyIFRlc3RJbnB1dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtkaXNwbGF5TmFtZTogXCJUZXN0SW5wdXRcIixcbiAgICAgIG1peGluczogW0Zvcm1zeS5NaXhpbl0sXG4gICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgIH0sXG4gICAgICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgaXNWYWxpZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwge3ZhbHVlOiB0aGlzLmdldFZhbHVlKCksIG9uQ2hhbmdlOiB0aGlzLnVwZGF0ZVZhbHVlfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgZm9ybSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEZvcm1zeS5Gb3JtLCBudWxsLCBcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXN0SW5wdXQsIHtuYW1lOiBcImZvb1wiLCB2YWx1ZTogXCJmb29cIiwgdmFsaWRhdGlvbnM6IFwiaXNOdW1lcmljXCJ9KVxuICAgICAgKVxuICAgICk7XG5cbiAgICB2YXIgaW5wdXQgPSBUZXN0VXRpbHMuZmluZFJlbmRlcmVkRE9NQ29tcG9uZW50V2l0aFRhZyhmb3JtLCAnSU5QVVQnKTtcbiAgICBleHBlY3QoaXNWYWxpZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBUZXN0VXRpbHMuU2ltdWxhdGUuY2hhbmdlKGlucHV0LCB7dGFyZ2V0OiB7dmFsdWU6ICcxLid9fSk7XG4gICAgZXhwZWN0KGlzVmFsaWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG5cbiAgfSk7XG5cbn0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lMMVZ6WlhKekwyTm9jbWx6ZEdsaGJtRnNabTl1YVM5RWIyTjFiV1Z1ZEhNdlpHVjJMMlp2Y20xemVTMXlaV0ZqZEM5emNHVmpjeTlXWVd4cFpHRjBhVzl1TFhOd1pXTXVhbk1pTENKemIzVnlZMlZ6SWpwYklpOVZjMlZ5Y3k5amFISnBjM1JwWVc1aGJHWnZibWt2Ukc5amRXMWxiblJ6TDJSbGRpOW1iM0p0YzNrdGNtVmhZM1F2YzNCbFkzTXZWbUZzYVdSaGRHbHZiaTF6Y0dWakxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEVsQlFVa3NUVUZCVFN4SFFVRkhMRTlCUVU4c1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4RFFVRkRPenRCUVVWNlF5eFJRVUZSTEVOQlFVTXNXVUZCV1N4RlFVRkZMRmRCUVZjN08wRkJSV3hETEVWQlFVVXNSVUZCUlN4RFFVRkRMR3RGUVVGclJTeEZRVUZGTEZsQlFWazdPMGxCUldwR0xFbEJRVWtzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGVrTXNTVUZCU1N3clFrRkJLMElzZVVKQlFVRTdUVUZEYWtNc1RVRkJUU3hGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXp0TlFVTjBRaXhYUVVGWExFVkJRVVVzVlVGQlZTeExRVUZMTEVWQlFVVTdVVUZETlVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wOUJRMjVETzAxQlEwUXNUVUZCVFN4RlFVRkZMRmxCUVZrN1VVRkRiRUlzVDBGQlR5eHZRa0ZCUVN4UFFVRk5MRVZCUVVFc1EwRkJRU3hEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkJReXhEUVVGRExGRkJRVUVzUlVGQlVTeERRVUZGTEVsQlFVa3NRMEZCUXl4WFFVRlpMRU5CUVVVc1EwRkJRVHRQUVVOd1JUdExRVU5HTEVOQlFVTXNRMEZCUXp0SlFVTklMRWxCUVVrc1NVRkJTU3hIUVVGSExGTkJRVk1zUTBGQlF5eHJRa0ZCYTBJN1RVRkRja01zYjBKQlFVTXNWMEZCVnl4RlFVRkJMRU5CUVVFc1EwRkJReXhQUVVGQkxFVkJRVThzUTBGQlJTeFBRVUZUTEVOQlFVRXNSVUZCUVR0UlFVTTNRaXh2UWtGQlF5eFRRVUZUTEVWQlFVRXNRMEZCUVN4RFFVRkRMRWxCUVVFc1JVRkJTU3hEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZETEZGQlFVRXNSVUZCUVN4RFFVRkZMRU5CUVVFN1RVRkRXaXhEUVVGQk8wRkJRM0JDTEV0QlFVc3NRMEZCUXpzN1NVRkZSaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNLMEpCUVN0Q0xFTkJRVU1zU1VGQlNTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTNKRkxGTkJRVk1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGREwwUXNTVUZCU1N4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1EwRkJRenM3UVVGRmRrTXNSMEZCUnl4RFFVRkRMRU5CUVVNN08wRkJSVXdzUlVGQlJTeEZRVUZGTEVOQlFVTXNjMFZCUVhORkxFVkJRVVVzV1VGQldUczdTVUZGY2tZc1NVRkJTU3hUUVVGVExFZEJRVWNzVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRKUVVNM1F5eEpRVUZKTEN0Q1FVRXJRaXg1UWtGQlFUdE5RVU5xUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETzAxQlEzUkNMRmRCUVZjc1JVRkJSU3hWUVVGVkxFdEJRVXNzUlVGQlJUdFJRVU0xUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1QwRkRia003VFVGRFJDeE5RVUZOTEVWQlFVVXNXVUZCV1R0UlFVTnNRaXhQUVVGUExHOUNRVUZCTEU5QlFVMHNSVUZCUVN4RFFVRkJMRU5CUVVNc1MwRkJRU3hGUVVGTExFTkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkRMRU5CUVVNc1VVRkJRU3hGUVVGUkxFTkJRVVVzU1VGQlNTeERRVUZETEZkQlFWa3NRMEZCUlN4RFFVRkJPMDlCUTNCRk8wdEJRMFlzUTBGQlF5eERRVUZETzBsQlEwZ3NTVUZCU1N4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExHdENRVUZyUWp0TlFVTnlReXh2UWtGQlF5eFhRVUZYTEVWQlFVRXNRMEZCUVN4RFFVRkRMRTlCUVVFc1JVRkJUeXhEUVVGRkxGTkJRVmNzUTBGQlFTeEZRVUZCTzFGQlF5OUNMRzlDUVVGRExGTkJRVk1zUlVGQlFTeERRVUZCTEVOQlFVTXNTVUZCUVN4RlFVRkpMRU5CUVVNc1MwRkJRU3hGUVVGTExFTkJRVU1zUzBGQlFTeEZRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkZMRU5CUVVFN1RVRkRka0lzUTBGQlFUdEJRVU53UWl4TFFVRkxMRU5CUVVNN08wbEJSVVlzU1VGQlNTeExRVUZMTEVkQlFVY3NVMEZCVXl4RFFVRkRMQ3RDUVVFclFpeERRVUZETEVsQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOeVJTeFRRVUZUTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6VkVMRWxCUVVrc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhGUVVGRkxFTkJRVU03TzBGQlJYcERMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZNTEVWQlFVVXNSVUZCUlN4RFFVRkRMR1ZCUVdVc1JVRkJSU3haUVVGWk96dEpRVVU1UWl4SlFVRkpMRTlCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTNwRExFbEJRVWtzSzBKQlFTdENMSGxDUVVGQk8wMUJRMnBETEUxQlFVMHNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU03VFVGRGRFSXNWMEZCVnl4RlFVRkZMRlZCUVZVc1MwRkJTeXhGUVVGRk8xRkJRelZDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UFFVTnVRenROUVVORUxFMUJRVTBzUlVGQlJTeFpRVUZaTzFGQlEyeENMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTzFWQlEyeENMRTlCUVU4c1JVRkJSU3hEUVVGRE8xTkJRMWc3VVVGRFJDeFBRVUZQTEc5Q1FVRkJMRTlCUVUwc1JVRkJRU3hEUVVGQkxFTkJRVU1zUzBGQlFTeEZRVUZMTEVOQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hGUVVGRExFTkJRVU1zVVVGQlFTeEZRVUZSTEVOQlFVVXNTVUZCU1N4RFFVRkRMRmRCUVZrc1EwRkJSU3hEUVVGQk8wOUJRM0JGTzB0QlEwWXNRMEZCUXl4RFFVRkRPMGxCUTBnc1NVRkJTU3hKUVVGSkxFZEJRVWNzVTBGQlV5eERRVUZETEd0Q1FVRnJRanROUVVOeVF5eHZRa0ZCUXl4WFFVRlhMRVZCUVVFc1NVRkJReXhGUVVGQk8xRkJRMWdzYjBKQlFVTXNVMEZCVXl4RlFVRkJMRU5CUVVFc1EwRkJReXhKUVVGQkxFVkJRVWtzUTBGQlF5eExRVUZCTEVWQlFVc3NRMEZCUXl4TFFVRkJMRVZCUVVzc1EwRkJReXhMUVVGQkxFVkJRVXNzUTBGQlF5eFhRVUZCTEVWQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVVc1EwRkJRVHROUVVNM1F5eERRVUZCTzBGQlEzQkNMRXRCUVVzc1EwRkJRenM3U1VGRlJpeEpRVUZKTEV0QlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNc0swSkJRU3RDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM0pGTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1EwRkJRenRKUVVOMlF5eFRRVUZUTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1lVRkJZU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzWkZMRWxCUVVrc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEdkQ1FVRm5RaXhGUVVGRkxFTkJRVU03TzBGQlJYWkRMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVZNTEVWQlFVVXNSVUZCUlN4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEZsQlFWazdPMGxCUldoRExFbEJRVWtzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGVrTXNTVUZCU1N3clFrRkJLMElzZVVKQlFVRTdUVUZEYWtNc1RVRkJUU3hGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXp0TlFVTjBRaXhYUVVGWExFVkJRVVVzVlVGQlZTeExRVUZMTEVWQlFVVTdVVUZETlVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wOUJRMjVETzAxQlEwUXNUVUZCVFN4RlFVRkZMRmxCUVZrN1VVRkRiRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRVZCUVVVN1ZVRkRiRUlzVDBGQlR5eEZRVUZGTEVOQlFVTTdVMEZEV0R0UlFVTkVMRTlCUVU4c2IwSkJRVUVzVDBGQlRTeEZRVUZCTEVOQlFVRXNRMEZCUXl4TFFVRkJMRVZCUVVzc1EwRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVWQlFVTXNRMEZCUXl4UlFVRkJMRVZCUVZFc1EwRkJSU3hKUVVGSkxFTkJRVU1zVjBGQldTeERRVUZGTEVOQlFVRTdUMEZEY0VVN1MwRkRSaXhEUVVGRExFTkJRVU03U1VGRFNDeEpRVUZKTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTzAxQlEzSkRMRzlDUVVGRExGZEJRVmNzUlVGQlFTeEpRVUZETEVWQlFVRTdVVUZEV0N4dlFrRkJReXhUUVVGVExFVkJRVUVzUTBGQlFTeERRVUZETEVsQlFVRXNSVUZCU1N4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZETEV0QlFVRXNSVUZCU3l4RFFVRkRMRmRCUVVFc1JVRkJWeXhEUVVGRExGZEJRVmNzUTBGQlJTeERRVUZCTzAxQlF5OURMRU5CUVVFN1FVRkRjRUlzUzBGQlN5eERRVUZET3p0SlFVVkdMRWxCUVVrc1MwRkJTeXhIUVVGSExGTkJRVk1zUTBGQlF5d3JRa0ZCSzBJc1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEY2tVc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4blFrRkJaMElzUlVGQlJTeERRVUZETzBsQlEzWkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRMMFFzU1VGQlNTeE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNRMEZCUXpzN1FVRkZka01zUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUlV3c1JVRkJSU3hGUVVGRkxFTkJRVU1zYVVOQlFXbERMRVZCUVVVc1dVRkJXVHM3U1VGRmFFUXNTVUZCU1N4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTjZReXhKUVVGSkxDdENRVUVyUWl4NVFrRkJRVHROUVVOcVF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRE8wMUJRM1JDTEZkQlFWY3NSVUZCUlN4VlFVRlZMRXRCUVVzc1JVRkJSVHRSUVVNMVFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1QwRkRNME03VFVGRFJDeE5RVUZOTEVWQlFVVXNXVUZCV1R0UlFVTnNRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlR0VlFVTnNRaXhQUVVGUExFVkJRVVVzUTBGQlF6dFRRVU5ZTzFGQlEwUXNUMEZCVHl4dlFrRkJRU3hQUVVGTkxFVkJRVUVzUTBGQlFTeERRVUZETEV0QlFVRXNSVUZCU3l4RFFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUlVGQlF5eERRVUZETEZGQlFVRXNSVUZCVVN4RFFVRkZMRWxCUVVrc1EwRkJReXhYUVVGWkxFTkJRVVVzUTBGQlFUdFBRVU53UlR0TFFVTkdMRU5CUVVNc1EwRkJRenRKUVVOSUxFbEJRVWtzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4clFrRkJhMEk3VFVGRGNrTXNiMEpCUVVNc1YwRkJWeXhGUVVGQkxFbEJRVU1zUlVGQlFUdFJRVU5ZTEc5Q1FVRkRMRk5CUVZNc1JVRkJRU3hEUVVGQkxFTkJRVU1zU1VGQlFTeEZRVUZKTEVOQlFVTXNTMEZCUVN4RlFVRkxMRU5CUVVNc1MwRkJRU3hGUVVGTExFTkJRVU1zUzBGQlFTeEZRVUZMTEVOQlFVTXNWMEZCUVN4RlFVRlhMRU5CUVVNc1YwRkJWeXhEUVVGRkxFTkJRVUU3VFVGREwwTXNRMEZCUVR0QlFVTndRaXhMUVVGTExFTkJRVU03TzBsQlJVWXNTVUZCU1N4TFFVRkxMRWRCUVVjc1UwRkJVeXhEUVVGRExDdENRVUVyUWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU55UlN4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhGUVVGRkxFTkJRVU03U1VGRGRrTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXZSQ3hKUVVGSkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4blFrRkJaMElzUlVGQlJTeERRVUZET3p0QlFVVjJReXhIUVVGSExFTkJRVU1zUTBGQlF6czdRVUZGVEN4RlFVRkZMRVZCUVVVc1EwRkJReXh2UkVGQmIwUXNSVUZCUlN4WlFVRlpPenRKUVVWdVJTeEpRVUZKTEU5QlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlEzcERMRWxCUVVrc0swSkJRU3RDTEhsQ1FVRkJPMDFCUTJwRExFMUJRVTBzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNN1RVRkRkRUlzVjBGQlZ5eEZRVUZGTEZWQlFWVXNTMEZCU3l4RlFVRkZPMUZCUXpWQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFBRVU51UXp0TlFVTkVMRTFCUVUwc1JVRkJSU3haUVVGWk8xRkJRMnhDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hGUVVGRk8xVkJRMnhDTEU5QlFVOHNSVUZCUlN4RFFVRkRPMU5CUTFnN1VVRkRSQ3hQUVVGUExHOUNRVUZCTEU5QlFVMHNSVUZCUVN4RFFVRkJMRU5CUVVNc1MwRkJRU3hGUVVGTExFTkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RlFVRkRMRU5CUVVNc1VVRkJRU3hGUVVGUkxFTkJRVVVzU1VGQlNTeERRVUZETEZkQlFWa3NRMEZCUlN4RFFVRkJPMDlCUTNCRk8wdEJRMFlzUTBGQlF5eERRVUZETzBsQlEwZ3NTVUZCU1N4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExHdENRVUZyUWp0TlFVTnlReXh2UWtGQlF5eFhRVUZYTEVWQlFVRXNTVUZCUXl4RlFVRkJPMUZCUTFnc2IwSkJRVU1zVTBGQlV5eEZRVUZCTEVOQlFVRXNRMEZCUXl4SlFVRkJMRVZCUVVrc1EwRkJReXhMUVVGQkxFVkJRVXNzUTBGQlF5eExRVUZCTEVWQlFVc3NRMEZCUXl4TFFVRkJMRVZCUVVzc1EwRkJReXhYUVVGQkxFVkJRVmNzUTBGQlF5eFhRVUZYTEVOQlFVVXNRMEZCUVR0TlFVTXZReXhEUVVGQk8wRkJRM0JDTEV0QlFVc3NRMEZCUXpzN1NVRkZSaXhKUVVGSkxFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNLMEpCUVN0Q0xFTkJRVU1zU1VGQlNTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUTNKRkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNRMEZCUXp0SlFVTjJReXhUUVVGVExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJReTlFTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExHZENRVUZuUWl4RlFVRkZMRU5CUVVNN08wRkJSWFpETEVkQlFVY3NRMEZCUXl4RFFVRkRPenRCUVVWTUxFVkJRVVVzUlVGQlJTeERRVUZETEhORlFVRnpSU3hGUVVGRkxGbEJRVms3TzBsQlJYSkdMRWxCUVVrc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRla01zU1VGQlNTd3JRa0ZCSzBJc2VVSkJRVUU3VFVGRGFrTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF6dE5RVU4wUWl4WFFVRlhMRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVU3VVVGRE5VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMDlCUTI1RE8wMUJRMFFzVFVGQlRTeEZRVUZGTEZsQlFWazdVVUZEYkVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVWQlFVVTdWVUZEYkVJc1QwRkJUeXhGUVVGRkxFTkJRVU03VTBGRFdEdFJRVU5FTEU5QlFVOHNiMEpCUVVFc1QwRkJUU3hGUVVGQkxFTkJRVUVzUTBGQlF5eExRVUZCTEVWQlFVc3NRMEZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRVU1zUTBGQlF5eFJRVUZCTEVWQlFWRXNRMEZCUlN4SlFVRkpMRU5CUVVNc1YwRkJXU3hEUVVGRkxFTkJRVUU3VDBGRGNFVTdTMEZEUml4RFFVRkRMRU5CUVVNN1NVRkRTQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eFRRVUZUTEVOQlFVTXNhMEpCUVd0Q08wMUJRM0pETEc5Q1FVRkRMRmRCUVZjc1JVRkJRU3hKUVVGRExFVkJRVUU3VVVGRFdDeHZRa0ZCUXl4VFFVRlRMRVZCUVVFc1EwRkJRU3hEUVVGRExFbEJRVUVzUlVGQlNTeERRVUZETEV0QlFVRXNSVUZCU3l4RFFVRkRMRXRCUVVFc1JVRkJTeXhEUVVGRExFdEJRVUVzUlVGQlN5eERRVUZETEZkQlFVRXNSVUZCVnl4RFFVRkRMRmRCUVZjc1EwRkJSU3hEUVVGQk8wMUJReTlETEVOQlFVRTdRVUZEY0VJc1MwRkJTeXhEUVVGRE96dEpRVVZHTEVsQlFVa3NTMEZCU3l4SFFVRkhMRk5CUVZNc1EwRkJReXdyUWtGQkswSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGNrVXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hEUVVGRE8wbEJRM1pETEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZET1VRc1NVRkJTU3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEVOQlFVTTdPMEZCUlRORExFZEJRVWNzUTBGQlF5eERRVUZET3p0RFFVVktMRU5CUVVNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW5aaGNpQkdiM0p0YzNrZ1BTQnlaWEYxYVhKbEtDY3VMeTR1TDNOeVl5OXRZV2x1TG1wekp5azdYRzVjYm1SbGMyTnlhV0psS0NkV1lXeHBaR0YwYVc5dUp5d2dablZ1WTNScGIyNG9LU0I3WEc1Y2JpQWdhWFFvSjNOb2IzVnNaQ0IwY21sbloyVnlJR0Z1SUc5dVZtRnNhV1FnYUdGdVpHeGxjaXdnYVdZZ2NHRnpjMlZrTENCM2FHVnVJR1p2Y20wZ2FYTWdkbUZzYVdRbkxDQm1kVzVqZEdsdmJpQW9LU0I3WEc1Y2JpQWdJQ0IyWVhJZ2IyNVdZV3hwWkNBOUlHcGhjMjFwYm1VdVkzSmxZWFJsVTNCNUtDZDJZV3hwWkNjcE8xeHVJQ0FnSUhaaGNpQlVaWE4wU1c1d2RYUWdQU0JTWldGamRDNWpjbVZoZEdWRGJHRnpjeWg3WEc0Z0lDQWdJQ0J0YVhocGJuTTZJRnRHYjNKdGMza3VUV2w0YVc1ZExGeHVJQ0FnSUNBZ2RYQmtZWFJsVm1Gc2RXVTZJR1oxYm1OMGFXOXVJQ2hsZG1WdWRDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxkRlpoYkhWbEtHVjJaVzUwTG5SaGNtZGxkQzUyWVd4MVpTazdYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdjbVZ1WkdWeU9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUE4YVc1d2RYUWdkbUZzZFdVOWUzUm9hWE11WjJWMFZtRnNkV1VvS1gwZ2IyNURhR0Z1WjJVOWUzUm9hWE11ZFhCa1lYUmxWbUZzZFdWOUx6NWNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtUdGNiaUFnSUNCMllYSWdabTl5YlNBOUlGUmxjM1JWZEdsc2N5NXlaVzVrWlhKSmJuUnZSRzlqZFcxbGJuUW9YRzRnSUNBZ0lDQThSbTl5YlhONUxrWnZjbTBnYjI1V1lXeHBaRDE3YjI1V1lXeHBaSDArWEc0Z0lDQWdJQ0FnSUR4VVpYTjBTVzV3ZFhRZ2JtRnRaVDFjSW1admIxd2lJSEpsY1hWcGNtVmtMejVjYmlBZ0lDQWdJRHd2Um05eWJYTjVMa1p2Y20wK1hHNGdJQ0FnS1R0Y2JseHVJQ0FnSUhaaGNpQnBibkIxZENBOUlGUmxjM1JWZEdsc2N5NW1hVzVrVW1WdVpHVnlaV1JFVDAxRGIyMXdiMjVsYm5SWGFYUm9WR0ZuS0dadmNtMHNJQ2RKVGxCVlZDY3BPMXh1SUNBZ0lGUmxjM1JWZEdsc2N5NVRhVzExYkdGMFpTNWphR0Z1WjJVb2FXNXdkWFFzSUh0MFlYSm5aWFE2SUh0MllXeDFaVG9nSjJadmJ5ZDlmU2s3WEc0Z0lDQWdaWGh3WldOMEtHOXVWbUZzYVdRcExuUnZTR0YyWlVKbFpXNURZV3hzWldRb0tUdGNibHh1SUNCOUtUdGNibHh1SUNCcGRDZ25jMmh2ZFd4a0lIUnlhV2RuWlhJZ1lXNGdiMjVKYm5aaGJHbGtJR2hoYm1Sc1pYSXNJR2xtSUhCaGMzTmxaQ3dnZDJobGJpQm1iM0p0SUdseklHbHVkbUZzYVdRbkxDQm1kVzVqZEdsdmJpQW9LU0I3WEc1Y2JpQWdJQ0IyWVhJZ2IyNUpiblpoYkdsa0lEMGdhbUZ6YldsdVpTNWpjbVZoZEdWVGNIa29KMmx1ZG1Gc2FXUW5LVHRjYmlBZ0lDQjJZWElnVkdWemRFbHVjSFYwSUQwZ1VtVmhZM1F1WTNKbFlYUmxRMnhoYzNNb2UxeHVJQ0FnSUNBZ2JXbDRhVzV6T2lCYlJtOXliWE41TGsxcGVHbHVYU3hjYmlBZ0lDQWdJSFZ3WkdGMFpWWmhiSFZsT2lCbWRXNWpkR2x2YmlBb1pYWmxiblFwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSV1lXeDFaU2hsZG1WdWRDNTBZWEpuWlhRdWRtRnNkV1VwTzF4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUhKbGJtUmxjam9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1BHbHVjSFYwSUhaaGJIVmxQWHQwYUdsekxtZGxkRlpoYkhWbEtDbDlJRzl1UTJoaGJtZGxQWHQwYUdsekxuVndaR0YwWlZaaGJIVmxmUzgrWEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lDQWdkbUZ5SUdadmNtMGdQU0JVWlhOMFZYUnBiSE11Y21WdVpHVnlTVzUwYjBSdlkzVnRaVzUwS0Z4dUlDQWdJQ0FnUEVadmNtMXplUzVHYjNKdElHOXVWbUZzYVdROWUyOXVTVzUyWVd4cFpIMCtYRzRnSUNBZ0lDQWdJRHhVWlhOMFNXNXdkWFFnYm1GdFpUMWNJbVp2YjF3aUlIWmhiSFZsUFZ3aVptOXZYQ0l2UGx4dUlDQWdJQ0FnUEM5R2IzSnRjM2t1Um05eWJUNWNiaUFnSUNBcE8xeHVYRzRnSUNBZ2RtRnlJR2x1Y0hWMElEMGdWR1Z6ZEZWMGFXeHpMbVpwYm1SU1pXNWtaWEpsWkVSUFRVTnZiWEJ2Ym1WdWRGZHBkR2hVWVdjb1ptOXliU3dnSjBsT1VGVlVKeWs3WEc0Z0lDQWdWR1Z6ZEZWMGFXeHpMbE5wYlhWc1lYUmxMbU5vWVc1blpTaHBibkIxZEN3Z2UzUmhjbWRsZERvZ2UzWmhiSFZsT2lBbkozMTlLVHRjYmlBZ0lDQmxlSEJsWTNRb2IyNUpiblpoYkdsa0tTNTBiMGhoZG1WQ1pXVnVRMkZzYkdWa0tDazdYRzVjYmlBZ2ZTazdYRzVjYmlBZ2FYUW9KMUpWVEVVNklHbHpSVzFoYVd3bkxDQm1kVzVqZEdsdmJpQW9LU0I3WEc1Y2JpQWdJQ0IyWVhJZ2FYTldZV3hwWkNBOUlHcGhjMjFwYm1VdVkzSmxZWFJsVTNCNUtDZDJZV3hwWkNjcE8xeHVJQ0FnSUhaaGNpQlVaWE4wU1c1d2RYUWdQU0JTWldGamRDNWpjbVZoZEdWRGJHRnpjeWg3WEc0Z0lDQWdJQ0J0YVhocGJuTTZJRnRHYjNKdGMza3VUV2w0YVc1ZExGeHVJQ0FnSUNBZ2RYQmtZWFJsVm1Gc2RXVTZJR1oxYm1OMGFXOXVJQ2hsZG1WdWRDa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxkRlpoYkhWbEtHVjJaVzUwTG5SaGNtZGxkQzUyWVd4MVpTazdYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdjbVZ1WkdWeU9pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG1selZtRnNhV1FvS1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2x6Vm1Gc2FXUW9LVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnUEdsdWNIVjBJSFpoYkhWbFBYdDBhR2x6TG1kbGRGWmhiSFZsS0NsOUlHOXVRMmhoYm1kbFBYdDBhR2x6TG5Wd1pHRjBaVlpoYkhWbGZTOCtYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzRnSUNBZ2RtRnlJR1p2Y20wZ1BTQlVaWE4wVlhScGJITXVjbVZ1WkdWeVNXNTBiMFJ2WTNWdFpXNTBLRnh1SUNBZ0lDQWdQRVp2Y20xemVTNUdiM0p0UGx4dUlDQWdJQ0FnSUNBOFZHVnpkRWx1Y0hWMElHNWhiV1U5WENKbWIyOWNJaUIyWVd4MVpUMWNJbVp2YjF3aUlIWmhiR2xrWVhScGIyNXpQVndpYVhORmJXRnBiRndpTHo1Y2JpQWdJQ0FnSUR3dlJtOXliWE41TGtadmNtMCtYRzRnSUNBZ0tUdGNibHh1SUNBZ0lIWmhjaUJwYm5CMWRDQTlJRlJsYzNSVmRHbHNjeTVtYVc1a1VtVnVaR1Z5WldSRVQwMURiMjF3YjI1bGJuUlhhWFJvVkdGbktHWnZjbTBzSUNkSlRsQlZWQ2NwTzF4dUlDQWdJR1Y0Y0dWamRDaHBjMVpoYkdsa0tTNXViM1F1ZEc5SVlYWmxRbVZsYmtOaGJHeGxaQ2dwTzF4dUlDQWdJRlJsYzNSVmRHbHNjeTVUYVcxMWJHRjBaUzVqYUdGdVoyVW9hVzV3ZFhRc0lIdDBZWEpuWlhRNklIdDJZV3gxWlRvZ0oyWnZiMEJtYjI4dVkyOXRKMzE5S1R0Y2JpQWdJQ0JsZUhCbFkzUW9hWE5XWVd4cFpDa3VkRzlJWVhabFFtVmxia05oYkd4bFpDZ3BPMXh1WEc0Z0lIMHBPMXh1WEc0Z0lHbDBLQ2RTVlV4Rk9pQnBjMDUxYldWeWFXTW5MQ0JtZFc1amRHbHZiaUFvS1NCN1hHNWNiaUFnSUNCMllYSWdhWE5XWVd4cFpDQTlJR3BoYzIxcGJtVXVZM0psWVhSbFUzQjVLQ2QyWVd4cFpDY3BPMXh1SUNBZ0lIWmhjaUJVWlhOMFNXNXdkWFFnUFNCU1pXRmpkQzVqY21WaGRHVkRiR0Z6Y3loN1hHNGdJQ0FnSUNCdGFYaHBibk02SUZ0R2IzSnRjM2t1VFdsNGFXNWRMRnh1SUNBZ0lDQWdkWEJrWVhSbFZtRnNkV1U2SUdaMWJtTjBhVzl1SUNobGRtVnVkQ2tnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sZEZaaGJIVmxLR1YyWlc1MExuUmhjbWRsZEM1MllXeDFaU2s3WEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnY21WdVpHVnlPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2gwYUdsekxtbHpWbUZzYVdRb0tTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdselZtRnNhV1FvS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1BHbHVjSFYwSUhaaGJIVmxQWHQwYUdsekxtZGxkRlpoYkhWbEtDbDlJRzl1UTJoaGJtZGxQWHQwYUdsekxuVndaR0YwWlZaaGJIVmxmUzgrWEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU2s3WEc0Z0lDQWdkbUZ5SUdadmNtMGdQU0JVWlhOMFZYUnBiSE11Y21WdVpHVnlTVzUwYjBSdlkzVnRaVzUwS0Z4dUlDQWdJQ0FnUEVadmNtMXplUzVHYjNKdFBseHVJQ0FnSUNBZ0lDQThWR1Z6ZEVsdWNIVjBJRzVoYldVOVhDSm1iMjljSWlCMllXeDFaVDFjSW1admIxd2lJSFpoYkdsa1lYUnBiMjV6UFZ3aWFYTk9kVzFsY21salhDSXZQbHh1SUNBZ0lDQWdQQzlHYjNKdGMza3VSbTl5YlQ1Y2JpQWdJQ0FwTzF4dVhHNGdJQ0FnZG1GeUlHbHVjSFYwSUQwZ1ZHVnpkRlYwYVd4ekxtWnBibVJTWlc1a1pYSmxaRVJQVFVOdmJYQnZibVZ1ZEZkcGRHaFVZV2NvWm05eWJTd2dKMGxPVUZWVUp5azdYRzRnSUNBZ1pYaHdaV04wS0dselZtRnNhV1FwTG01dmRDNTBiMGhoZG1WQ1pXVnVRMkZzYkdWa0tDazdYRzRnSUNBZ1ZHVnpkRlYwYVd4ekxsTnBiWFZzWVhSbExtTm9ZVzVuWlNocGJuQjFkQ3dnZTNSaGNtZGxkRG9nZTNaaGJIVmxPaUFuTVRJekozMTlLVHRjYmlBZ0lDQmxlSEJsWTNRb2FYTldZV3hwWkNrdWRHOUlZWFpsUW1WbGJrTmhiR3hsWkNncE8xeHVYRzRnSUgwcE8xeHVYRzRnSUdsMEtDZFNWVXhGT2lCcGMwNTFiV1Z5YVdNZ0tHRmpkSFZoYkNCdWRXMWlaWElwSnl3Z1puVnVZM1JwYjI0Z0tDa2dlMXh1WEc0Z0lDQWdkbUZ5SUdselZtRnNhV1FnUFNCcVlYTnRhVzVsTG1OeVpXRjBaVk53ZVNnbmRtRnNhV1FuS1R0Y2JpQWdJQ0IyWVhJZ1ZHVnpkRWx1Y0hWMElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdiV2w0YVc1ek9pQmJSbTl5YlhONUxrMXBlR2x1WFN4Y2JpQWdJQ0FnSUhWd1pHRjBaVlpoYkhWbE9pQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYUldZV3gxWlNoT2RXMWlaWElvWlhabGJuUXVkR0Z5WjJWMExuWmhiSFZsS1NrN1hHNGdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ2NtVnVaR1Z5T2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbWx6Vm1Gc2FXUW9LU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbHpWbUZzYVdRb0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdQR2x1Y0hWMElIWmhiSFZsUFh0MGFHbHpMbWRsZEZaaGJIVmxLQ2w5SUc5dVEyaGhibWRsUFh0MGFHbHpMblZ3WkdGMFpWWmhiSFZsZlM4K1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJQ0FnZG1GeUlHWnZjbTBnUFNCVVpYTjBWWFJwYkhNdWNtVnVaR1Z5U1c1MGIwUnZZM1Z0Wlc1MEtGeHVJQ0FnSUNBZ1BFWnZjbTF6ZVM1R2IzSnRQbHh1SUNBZ0lDQWdJQ0E4VkdWemRFbHVjSFYwSUc1aGJXVTlYQ0ptYjI5Y0lpQjJZV3gxWlQxY0ltWnZiMXdpSUhaaGJHbGtZWFJwYjI1elBWd2lhWE5PZFcxbGNtbGpYQ0l2UGx4dUlDQWdJQ0FnUEM5R2IzSnRjM2t1Um05eWJUNWNiaUFnSUNBcE8xeHVYRzRnSUNBZ2RtRnlJR2x1Y0hWMElEMGdWR1Z6ZEZWMGFXeHpMbVpwYm1SU1pXNWtaWEpsWkVSUFRVTnZiWEJ2Ym1WdWRGZHBkR2hVWVdjb1ptOXliU3dnSjBsT1VGVlVKeWs3WEc0Z0lDQWdaWGh3WldOMEtHbHpWbUZzYVdRcExtNXZkQzUwYjBoaGRtVkNaV1Z1UTJGc2JHVmtLQ2s3WEc0Z0lDQWdWR1Z6ZEZWMGFXeHpMbE5wYlhWc1lYUmxMbU5vWVc1blpTaHBibkIxZEN3Z2UzUmhjbWRsZERvZ2UzWmhiSFZsT2lBbk1USXpKMzE5S1R0Y2JpQWdJQ0JsZUhCbFkzUW9hWE5XWVd4cFpDa3VkRzlJWVhabFFtVmxia05oYkd4bFpDZ3BPMXh1WEc0Z0lIMHBPMXh1WEc0Z0lHbDBLQ2RTVlV4Rk9pQnBjMDUxYldWeWFXTWdLSE4wY21sdVp5QnlaWEJ5WlhObGJuUmhkR2x2YmlCdlppQmhJR1pzYjJGMEtTY3NJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JseHVJQ0FnSUhaaGNpQnBjMVpoYkdsa0lEMGdhbUZ6YldsdVpTNWpjbVZoZEdWVGNIa29KM1poYkdsa0p5azdYRzRnSUNBZ2RtRnlJRlJsYzNSSmJuQjFkQ0E5SUZKbFlXTjBMbU55WldGMFpVTnNZWE56S0h0Y2JpQWdJQ0FnSUcxcGVHbHVjem9nVzBadmNtMXplUzVOYVhocGJsMHNYRzRnSUNBZ0lDQjFjR1JoZEdWV1lXeDFaVG9nWm5WdVkzUnBiMjRnS0dWMlpXNTBLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlYwVm1Gc2RXVW9aWFpsYm5RdWRHRnlaMlYwTG5aaGJIVmxLVHRjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0J5Wlc1a1pYSTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWFYTldZV3hwWkNncEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYVhOV1lXeHBaQ2dwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlBOGFXNXdkWFFnZG1Gc2RXVTllM1JvYVhNdVoyVjBWbUZzZFdVb0tYMGdiMjVEYUdGdVoyVTllM1JvYVhNdWRYQmtZWFJsVm1Gc2RXVjlMejVjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmlBZ0lDQjJZWElnWm05eWJTQTlJRlJsYzNSVmRHbHNjeTV5Wlc1a1pYSkpiblJ2Ukc5amRXMWxiblFvWEc0Z0lDQWdJQ0E4Um05eWJYTjVMa1p2Y20wK1hHNGdJQ0FnSUNBZ0lEeFVaWE4wU1c1d2RYUWdibUZ0WlQxY0ltWnZiMXdpSUhaaGJIVmxQVndpWm05dlhDSWdkbUZzYVdSaGRHbHZibk05WENKcGMwNTFiV1Z5YVdOY0lpOCtYRzRnSUNBZ0lDQThMMFp2Y20xemVTNUdiM0p0UGx4dUlDQWdJQ2s3WEc1Y2JpQWdJQ0IyWVhJZ2FXNXdkWFFnUFNCVVpYTjBWWFJwYkhNdVptbHVaRkpsYm1SbGNtVmtSRTlOUTI5dGNHOXVaVzUwVjJsMGFGUmhaeWhtYjNKdExDQW5TVTVRVlZRbktUdGNiaUFnSUNCbGVIQmxZM1FvYVhOV1lXeHBaQ2t1Ym05MExuUnZTR0YyWlVKbFpXNURZV3hzWldRb0tUdGNiaUFnSUNCVVpYTjBWWFJwYkhNdVUybHRkV3hoZEdVdVkyaGhibWRsS0dsdWNIVjBMQ0I3ZEdGeVoyVjBPaUI3ZG1Gc2RXVTZJQ2N4TGpVbmZYMHBPMXh1SUNBZ0lHVjRjR1ZqZENocGMxWmhiR2xrS1M1MGIwaGhkbVZDWldWdVEyRnNiR1ZrS0NrN1hHNWNiaUFnZlNrN1hHNWNiaUFnYVhRb0oxSlZURVU2SUdselRuVnRaWEpwWXlCcGN5Qm1ZV3h6WlNBb2MzUnlhVzVuSUhKbGNISmxjMlZ1ZEdGMGFXOXVJRzltSUdGdUlHbHVkbUZzYVdRZ1pteHZZWFFwSnl3Z1puVnVZM1JwYjI0Z0tDa2dlMXh1WEc0Z0lDQWdkbUZ5SUdselZtRnNhV1FnUFNCcVlYTnRhVzVsTG1OeVpXRjBaVk53ZVNnbmRtRnNhV1FuS1R0Y2JpQWdJQ0IyWVhJZ1ZHVnpkRWx1Y0hWMElEMGdVbVZoWTNRdVkzSmxZWFJsUTJ4aGMzTW9lMXh1SUNBZ0lDQWdiV2w0YVc1ek9pQmJSbTl5YlhONUxrMXBlR2x1WFN4Y2JpQWdJQ0FnSUhWd1pHRjBaVlpoYkhWbE9pQm1kVzVqZEdsdmJpQW9aWFpsYm5RcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYUldZV3gxWlNobGRtVnVkQzUwWVhKblpYUXVkbUZzZFdVcE8xeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNBZ0lISmxibVJsY2pvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2RHaHBjeTVwYzFaaGJHbGtLQ2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBjMVpoYkdsa0tDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRHhwYm5CMWRDQjJZV3gxWlQxN2RHaHBjeTVuWlhSV1lXeDFaU2dwZlNCdmJrTm9ZVzVuWlQxN2RHaHBjeTUxY0dSaGRHVldZV3gxWlgwdlBseHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVJQ0FnSUhaaGNpQm1iM0p0SUQwZ1ZHVnpkRlYwYVd4ekxuSmxibVJsY2tsdWRHOUViMk4xYldWdWRDaGNiaUFnSUNBZ0lEeEdiM0p0YzNrdVJtOXliVDVjYmlBZ0lDQWdJQ0FnUEZSbGMzUkpibkIxZENCdVlXMWxQVndpWm05dlhDSWdkbUZzZFdVOVhDSm1iMjljSWlCMllXeHBaR0YwYVc5dWN6MWNJbWx6VG5WdFpYSnBZMXdpTHo1Y2JpQWdJQ0FnSUR3dlJtOXliWE41TGtadmNtMCtYRzRnSUNBZ0tUdGNibHh1SUNBZ0lIWmhjaUJwYm5CMWRDQTlJRlJsYzNSVmRHbHNjeTVtYVc1a1VtVnVaR1Z5WldSRVQwMURiMjF3YjI1bGJuUlhhWFJvVkdGbktHWnZjbTBzSUNkSlRsQlZWQ2NwTzF4dUlDQWdJR1Y0Y0dWamRDaHBjMVpoYkdsa0tTNXViM1F1ZEc5SVlYWmxRbVZsYmtOaGJHeGxaQ2dwTzF4dUlDQWdJRlJsYzNSVmRHbHNjeTVUYVcxMWJHRjBaUzVqYUdGdVoyVW9hVzV3ZFhRc0lIdDBZWEpuWlhRNklIdDJZV3gxWlRvZ0p6RXVKMzE5S1R0Y2JpQWdJQ0JsZUhCbFkzUW9hWE5XWVd4cFpDa3VibTkwTG5SdlNHRjJaVUpsWlc1RFlXeHNaV1FvS1R0Y2JseHVJQ0I5S1R0Y2JseHVmU2s3WEc0aVhYMD0iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF92YWx1ZTogdGhpcy5wcm9wcy52YWx1ZSA/IHRoaXMucHJvcHMudmFsdWUgOiAnJyxcbiAgICAgIF9pc1ZhbGlkOiB0cnVlLFxuICAgICAgX2lzUHJpc3RpbmU6IHRydWVcbiAgICB9O1xuICB9LFxuICBjb21wb25lbnRXaWxsTW91bnQ6IGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBjb25maWd1cmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnNldFZhbGlkYXRpb25zKHRoaXMucHJvcHMudmFsaWRhdGlvbnMsIHRoaXMucHJvcHMucmVxdWlyZWQpO1xuICAgICAgdGhpcy5wcm9wcy5fYXR0YWNoVG9Gb3JtKHRoaXMpO1xuICAgIH0uYmluZCh0aGlzKTtcblxuICAgIGlmICghdGhpcy5wcm9wcy5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Zvcm0gSW5wdXQgcmVxdWlyZXMgYSBuYW1lIHByb3BlcnR5IHdoZW4gdXNlZCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wcm9wcy5fYXR0YWNoVG9Gb3JtKSB7XG4gICAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc01vdW50ZWQoKSkgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMuX2F0dGFjaFRvRm9ybSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRm9ybSBNaXhpbiByZXF1aXJlcyBjb21wb25lbnQgdG8gYmUgbmVzdGVkIGluIGEgRm9ybScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZ3VyZSgpO1xuICAgICAgfS5iaW5kKHRoaXMpLCAwKTtcbiAgICB9XG4gICAgY29uZmlndXJlKCk7XG5cbiAgfSxcblxuICAvLyBXZSBoYXZlIHRvIG1ha2UgdGhlIHZhbGlkYXRlIG1ldGhvZCBpcyBrZXB0IHdoZW4gbmV3IHByb3BzIGFyZSBhZGRlZFxuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBmdW5jdGlvbiAobmV4dFByb3BzKSB7XG4gICAgbmV4dFByb3BzLl9hdHRhY2hUb0Zvcm0gPSB0aGlzLnByb3BzLl9hdHRhY2hUb0Zvcm07XG4gICAgbmV4dFByb3BzLl9kZXRhY2hGcm9tRm9ybSA9IHRoaXMucHJvcHMuX2RldGFjaEZyb21Gb3JtO1xuICAgIG5leHRQcm9wcy5fdmFsaWRhdGUgPSB0aGlzLnByb3BzLl92YWxpZGF0ZTtcbiAgICB0aGlzLnNldFZhbGlkYXRpb25zKG5leHRQcm9wcy52YWxpZGF0aW9ucywgbmV4dFByb3BzLnJlcXVpcmVkKTtcbiAgfSxcblxuICBjb21wb25lbnREaWRVcGRhdGU6IGZ1bmN0aW9uIChwcmV2UHJvcHMsIHByZXZTdGF0ZSkge1xuXG4gICAgdmFyIGlzVmFsdWVDaGFuZ2VkID0gZnVuY3Rpb24gKCkge1xuICAgICAgXG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLnByb3BzLnZhbHVlICE9PSBwcmV2UHJvcHMudmFsdWUgJiYgKFxuICAgICAgICAgIHRoaXMuc3RhdGUuX3ZhbHVlID09PSBwcmV2UHJvcHMudmFsdWUgfHxcblxuICAgICAgICAgIC8vIFNpbmNlIHVuZGVmaW5lZCBpcyBjb252ZXJ0ZWQgdG8gZW1wdHkgc3RyaW5nIHdlIGhhdmUgdG9cbiAgICAgICAgICAvLyBjaGVjayB0aGF0IHNwZWNpZmljYWxseVxuICAgICAgICAgICh0aGlzLnN0YXRlLl92YWx1ZSA9PT0gJycgJiYgcHJldlByb3BzLnZhbHVlID09PSB1bmRlZmluZWQpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICB9LmJpbmQodGhpcyk7XG5cblxuICAgIC8vIElmIHZhbGlkYXRpb25zIGhhcyBjaGFuZ2VkIG9yIHNvbWV0aGluZyBvdXRzaWRlIGNoYW5nZXMgXG4gICAgLy8gdGhlIHZhbHVlLCBzZXQgdGhlIHZhbHVlIGFnYWluIHJ1bm5pbmcgYSB2YWxpZGF0aW9uXG5cbiAgICBpZiAocHJldlByb3BzLnZhbGlkYXRpb25zICE9PSB0aGlzLnByb3BzLnZhbGlkYXRpb25zIHx8IGlzVmFsdWVDaGFuZ2VkKCkpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5wcm9wcy52YWx1ZSB8fCAnJyk7XG4gICAgfVxuICB9LFxuXG4gIC8vIERldGFjaCBpdCB3aGVuIGNvbXBvbmVudCB1bm1vdW50c1xuICBjb21wb25lbnRXaWxsVW5tb3VudDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucHJvcHMuX2RldGFjaEZyb21Gb3JtKHRoaXMpO1xuICB9LFxuXG4gIHNldFZhbGlkYXRpb25zOiBmdW5jdGlvbiAodmFsaWRhdGlvbnMsIHJlcXVpcmVkKSB7XG5cbiAgICAvLyBBZGQgdmFsaWRhdGlvbnMgdG8gdGhlIHN0b3JlIGl0c2VsZiBhcyB0aGUgcHJvcHMgb2JqZWN0IGNhbiBub3QgYmUgbW9kaWZpZWRcbiAgICB0aGlzLl92YWxpZGF0aW9ucyA9IHZhbGlkYXRpb25zIHx8ICcnO1xuXG4gICAgaWYgKHJlcXVpcmVkKSB7XG4gICAgICB0aGlzLl92YWxpZGF0aW9ucyA9IHZhbGlkYXRpb25zID8gdmFsaWRhdGlvbnMgKyAnLCcgOiAnJztcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb25zICs9ICdpc1ZhbHVlJztcbiAgICB9XG5cbiAgfSxcblxuICAvLyBXZSB2YWxpZGF0ZSBhZnRlciB0aGUgdmFsdWUgaGFzIGJlZW4gc2V0XG4gIHNldFZhbHVlOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF92YWx1ZTogdmFsdWUsXG4gICAgICBfaXNQcmlzdGluZTogZmFsc2VcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnByb3BzLl92YWxpZGF0ZSh0aGlzKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9LFxuICByZXNldFZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBfdmFsdWU6ICcnLFxuICAgICAgX2lzUHJpc3RpbmU6IHRydWVcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnByb3BzLl92YWxpZGF0ZSh0aGlzKTtcbiAgICB9KTtcbiAgfSxcbiAgZ2V0VmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5fdmFsdWU7XG4gIH0sXG4gIGhhc1ZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuX3ZhbHVlICE9PSAnJztcbiAgfSxcbiAgZ2V0RXJyb3JNZXNzYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpIHx8IHRoaXMuc2hvd1JlcXVpcmVkKCkgPyBudWxsIDogdGhpcy5zdGF0ZS5fc2VydmVyRXJyb3IgfHwgdGhpcy5wcm9wcy52YWxpZGF0aW9uRXJyb3I7XG4gIH0sXG4gIGlzRm9ybURpc2FibGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuX2lzRm9ybURpc2FibGVkKCk7XG4gIH0sXG4gIGlzVmFsaWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5faXNWYWxpZDtcbiAgfSxcbiAgaXNQcmlzdGluZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLl9pc1ByaXN0aW5lO1xuICB9LFxuICBpc1JlcXVpcmVkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5wcm9wcy5yZXF1aXJlZDtcbiAgfSxcbiAgc2hvd1JlcXVpcmVkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZXF1aXJlZCgpICYmIHRoaXMuc3RhdGUuX3ZhbHVlID09PSAnJztcbiAgfSxcbiAgc2hvd0Vycm9yOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLnNob3dSZXF1aXJlZCgpICYmICF0aGlzLnN0YXRlLl9pc1ZhbGlkO1xuICB9XG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lMMVZ6WlhKekwyTm9jbWx6ZEdsaGJtRnNabTl1YVM5RWIyTjFiV1Z1ZEhNdlpHVjJMMlp2Y20xemVTMXlaV0ZqZEM5emNtTXZUV2w0YVc0dWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk5VmMyVnljeTlqYUhKcGMzUnBZVzVoYkdadmJta3ZSRzlqZFcxbGJuUnpMMlJsZGk5bWIzSnRjM2t0Y21WaFkzUXZjM0pqTDAxcGVHbHVMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVkQlFVYzdSVUZEWml4bFFVRmxMRVZCUVVVc1dVRkJXVHRKUVVNelFpeFBRVUZQTzAxQlEwd3NUVUZCVFN4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFVkJRVVU3VFVGRGFFUXNVVUZCVVN4RlFVRkZMRWxCUVVrN1RVRkRaQ3hYUVVGWExFVkJRVVVzU1VGQlNUdExRVU5zUWl4RFFVRkRPMGRCUTBnN1FVRkRTQ3hGUVVGRkxHdENRVUZyUWl4RlFVRkZMRmxCUVZrN08wbEJSVGxDTEVsQlFVa3NVMEZCVXl4SFFVRkhMRmxCUVZrN1RVRkRNVUlzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wMUJRMnBGTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzSkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdPMGxCUldJc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZPMDFCUTNCQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNLME5CUVN0RExFTkJRVU1zUTBGQlF6dEJRVU4yUlN4TFFVRkxPenRKUVVWRUxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMR0ZCUVdFc1JVRkJSVHROUVVNM1FpeFBRVUZQTEZWQlFWVXNRMEZCUXl4WlFVRlpPMUZCUXpWQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRVZCUVVVc1QwRkJUenRSUVVNNVFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhoUVVGaExFVkJRVVU3VlVGRE4wSXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXh6UkVGQmMwUXNRMEZCUXl4RFFVRkRPMU5CUTNwRk8xRkJRMFFzVTBGQlV5eEZRVUZGTEVOQlFVTTdUMEZEWWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTnNRanRCUVVOTUxFbEJRVWtzVTBGQlV5eEZRVUZGTEVOQlFVTTdPMEZCUldoQ0xFZEJRVWM3UVVGRFNEczdSVUZGUlN4NVFrRkJlVUlzUlVGQlJTeFZRVUZWTEZOQlFWTXNSVUZCUlR0SlFVTTVReXhUUVVGVExFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1lVRkJZU3hEUVVGRE8wbEJRMjVFTEZOQlFWTXNRMEZCUXl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlFVTTdTVUZEZGtRc1UwRkJVeXhEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1EwRkJRenRKUVVNelF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRk5CUVZNc1EwRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTI1RkxFZEJRVWM3TzBGQlJVZ3NSVUZCUlN4clFrRkJhMElzUlVGQlJTeFZRVUZWTEZOQlFWTXNSVUZCUlN4VFFVRlRMRVZCUVVVN08wRkJSWFJFTEVsQlFVa3NTVUZCU1N4alFVRmpMRWRCUVVjc1dVRkJXVHM3VFVGRkwwSTdVVUZEUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUzBGQlN5eFRRVUZUTEVOQlFVTXNTMEZCU3p0QlFVTTFReXhWUVVGVkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4TFFVRkxMRk5CUVZNc1EwRkJReXhMUVVGTE8wRkJReTlETzBGQlEwRTdPMWRCUlZjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEV0QlFVc3NSVUZCUlN4SlFVRkpMRk5CUVZNc1EwRkJReXhMUVVGTExFdEJRVXNzVTBGQlV5eERRVUZETzFOQlF6VkVPMEZCUTFRc1VVRkJVVHM3UVVGRlVpeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRMnBDTzBGQlEwRTdRVUZEUVR0QlFVTkJPenRKUVVWSkxFbEJRVWtzVTBGQlV5eERRVUZETEZkQlFWY3NTMEZCU3l4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzU1VGQlNTeGpRVUZqTEVWQlFVVXNSVUZCUlR0TlFVTjRSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETzB0QlEzWkRPMEZCUTB3c1IwRkJSenRCUVVOSU96dEZRVVZGTEc5Q1FVRnZRaXhGUVVGRkxGbEJRVms3U1VGRGFFTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEY2tNc1IwRkJSenM3UVVGRlNDeEZRVUZGTEdOQlFXTXNSVUZCUlN4VlFVRlZMRmRCUVZjc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRGJrUTdPMEZCUlVFc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeEhRVUZITEZkQlFWY3NTVUZCU1N4RlFVRkZMRU5CUVVNN08wbEJSWFJETEVsQlFVa3NVVUZCVVN4RlFVRkZPMDFCUTFvc1NVRkJTU3hEUVVGRExGbEJRVmtzUjBGQlJ5eFhRVUZYTEVkQlFVY3NWMEZCVnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU03VFVGRGVrUXNTVUZCU1N4RFFVRkRMRmxCUVZrc1NVRkJTU3hUUVVGVExFTkJRVU03UVVGRGNrTXNTMEZCU3pzN1FVRkZUQ3hIUVVGSE8wRkJRMGc3TzBWQlJVVXNVVUZCVVN4RlFVRkZMRlZCUVZVc1MwRkJTeXhGUVVGRk8wbEJRM3BDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1RVRkRXaXhOUVVGTkxFVkJRVVVzUzBGQlN6dE5RVU5pTEZkQlFWY3NSVUZCUlN4TFFVRkxPMHRCUTI1Q0xFVkJRVVVzV1VGQldUdE5RVU5pTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6VkNMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdSMEZEWmp0RlFVTkVMRlZCUVZVc1JVRkJSU3haUVVGWk8wbEJRM1JDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1RVRkRXaXhOUVVGTkxFVkJRVVVzUlVGQlJUdE5RVU5XTEZkQlFWY3NSVUZCUlN4SlFVRkpPMHRCUTJ4Q0xFVkJRVVVzV1VGQldUdE5RVU5pTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6VkNMRU5CUVVNc1EwRkJRenRIUVVOS08wVkJRMFFzVVVGQlVTeEZRVUZGTEZsQlFWazdTVUZEY0VJc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0SFFVTXhRanRGUVVORUxGRkJRVkVzUlVGQlJTeFpRVUZaTzBsQlEzQkNMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEV0QlFVc3NSVUZCUlN4RFFVRkRPMGRCUTJwRE8wVkJRMFFzWlVGQlpTeEZRVUZGTEZsQlFWazdTVUZETTBJc1QwRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hIUVVGSExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmxCUVZrc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEdWQlFXVXNRMEZCUXp0SFFVTTNSenRGUVVORUxHTkJRV01zUlVGQlJTeFpRVUZaTzBsQlF6RkNMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eGxRVUZsTEVWQlFVVXNRMEZCUXp0SFFVTnlRenRGUVVORUxFOUJRVThzUlVGQlJTeFpRVUZaTzBsQlEyNUNMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTTdSMEZETlVJN1JVRkRSQ3hWUVVGVkxFVkJRVVVzV1VGQldUdEpRVU4wUWl4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETzBkQlF5OUNPMFZCUTBRc1ZVRkJWU3hGUVVGRkxGbEJRVms3U1VGRGRFSXNUMEZCVHl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTTdSMEZET1VJN1JVRkRSQ3haUVVGWkxFVkJRVVVzV1VGQldUdEpRVU40UWl4UFFVRlBMRWxCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1MwRkJTeXhGUVVGRkxFTkJRVU03UjBGRGRFUTdSVUZEUkN4VFFVRlRMRVZCUVVVc1dVRkJXVHRKUVVOeVFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNN1IwRkRja1E3UTBGRFJpeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWJXOWtkV3hsTG1WNGNHOXlkSE1nUFNCN1hHNGdJR2RsZEVsdWFYUnBZV3hUZEdGMFpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQmZkbUZzZFdVNklIUm9hWE11Y0hKdmNITXVkbUZzZFdVZ1B5QjBhR2x6TG5CeWIzQnpMblpoYkhWbElEb2dKeWNzWEc0Z0lDQWdJQ0JmYVhOV1lXeHBaRG9nZEhKMVpTeGNiaUFnSUNBZ0lGOXBjMUJ5YVhOMGFXNWxPaUIwY25WbFhHNGdJQ0FnZlR0Y2JpQWdmU3hjYmlBZ1kyOXRjRzl1Wlc1MFYybHNiRTF2ZFc1ME9pQm1kVzVqZEdsdmJpQW9LU0I3WEc1Y2JpQWdJQ0IyWVhJZ1kyOXVabWxuZFhKbElEMGdablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXpaWFJXWVd4cFpHRjBhVzl1Y3loMGFHbHpMbkJ5YjNCekxuWmhiR2xrWVhScGIyNXpMQ0IwYUdsekxuQnliM0J6TG5KbGNYVnBjbVZrS1R0Y2JpQWdJQ0FnSUhSb2FYTXVjSEp2Y0hNdVgyRjBkR0ZqYUZSdlJtOXliU2gwYUdsektUdGNiaUFnSUNCOUxtSnBibVFvZEdocGN5azdYRzVjYmlBZ0lDQnBaaUFvSVhSb2FYTXVjSEp2Y0hNdWJtRnRaU2tnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RHYjNKdElFbHVjSFYwSUhKbGNYVnBjbVZ6SUdFZ2JtRnRaU0J3Y205d1pYSjBlU0IzYUdWdUlIVnpaV1FuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb0lYUm9hWE11Y0hKdmNITXVYMkYwZEdGamFGUnZSbTl5YlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhObGRGUnBiV1Z2ZFhRb1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lYUm9hWE11YVhOTmIzVnVkR1ZrS0NrcElISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUNBZ2FXWWdLQ0YwYUdsekxuQnliM0J6TGw5aGRIUmhZMmhVYjBadmNtMHBJSHRjYmlBZ0lDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjBadmNtMGdUV2w0YVc0Z2NtVnhkV2x5WlhNZ1kyOXRjRzl1Wlc1MElIUnZJR0psSUc1bGMzUmxaQ0JwYmlCaElFWnZjbTBuS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQmpiMjVtYVdkMWNtVW9LVHRjYmlBZ0lDQWdJSDB1WW1sdVpDaDBhR2x6S1N3Z01DazdYRzRnSUNBZ2ZWeHVJQ0FnSUdOdmJtWnBaM1Z5WlNncE8xeHVYRzRnSUgwc1hHNWNiaUFnTHk4Z1YyVWdhR0YyWlNCMGJ5QnRZV3RsSUhSb1pTQjJZV3hwWkdGMFpTQnRaWFJvYjJRZ2FYTWdhMlZ3ZENCM2FHVnVJRzVsZHlCd2NtOXdjeUJoY21VZ1lXUmtaV1JjYmlBZ1kyOXRjRzl1Wlc1MFYybHNiRkpsWTJWcGRtVlFjbTl3Y3pvZ1puVnVZM1JwYjI0Z0tHNWxlSFJRY205d2N5a2dlMXh1SUNBZ0lHNWxlSFJRY205d2N5NWZZWFIwWVdOb1ZHOUdiM0p0SUQwZ2RHaHBjeTV3Y205d2N5NWZZWFIwWVdOb1ZHOUdiM0p0TzF4dUlDQWdJRzVsZUhSUWNtOXdjeTVmWkdWMFlXTm9Sbkp2YlVadmNtMGdQU0IwYUdsekxuQnliM0J6TGw5a1pYUmhZMmhHY205dFJtOXliVHRjYmlBZ0lDQnVaWGgwVUhKdmNITXVYM1poYkdsa1lYUmxJRDBnZEdocGN5NXdjbTl3Y3k1ZmRtRnNhV1JoZEdVN1hHNGdJQ0FnZEdocGN5NXpaWFJXWVd4cFpHRjBhVzl1Y3lodVpYaDBVSEp2Y0hNdWRtRnNhV1JoZEdsdmJuTXNJRzVsZUhSUWNtOXdjeTV5WlhGMWFYSmxaQ2s3WEc0Z0lIMHNYRzVjYmlBZ1kyOXRjRzl1Wlc1MFJHbGtWWEJrWVhSbE9pQm1kVzVqZEdsdmJpQW9jSEpsZGxCeWIzQnpMQ0J3Y21WMlUzUmhkR1VwSUh0Y2JseHVJQ0FnSUhaaGNpQnBjMVpoYkhWbFEyaGhibWRsWkNBOUlHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJRnh1SUNBZ0lDQWdjbVYwZFhKdUlDaGNiaUFnSUNBZ0lDQWdkR2hwY3k1d2NtOXdjeTUyWVd4MVpTQWhQVDBnY0hKbGRsQnliM0J6TG5aaGJIVmxJQ1ltSUNoY2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TG5OMFlYUmxMbDkyWVd4MVpTQTlQVDBnY0hKbGRsQnliM0J6TG5aaGJIVmxJSHg4WEc1Y2JpQWdJQ0FnSUNBZ0lDQXZMeUJUYVc1alpTQjFibVJsWm1sdVpXUWdhWE1nWTI5dWRtVnlkR1ZrSUhSdklHVnRjSFI1SUhOMGNtbHVaeUIzWlNCb1lYWmxJSFJ2WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdZMmhsWTJzZ2RHaGhkQ0J6Y0dWamFXWnBZMkZzYkhsY2JpQWdJQ0FnSUNBZ0lDQW9kR2hwY3k1emRHRjBaUzVmZG1Gc2RXVWdQVDA5SUNjbklDWW1JSEJ5WlhaUWNtOXdjeTUyWVd4MVpTQTlQVDBnZFc1a1pXWnBibVZrS1Z4dUlDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBcE8xeHVYRzRnSUNBZ2ZTNWlhVzVrS0hSb2FYTXBPMXh1WEc1Y2JpQWdJQ0F2THlCSlppQjJZV3hwWkdGMGFXOXVjeUJvWVhNZ1kyaGhibWRsWkNCdmNpQnpiMjFsZEdocGJtY2diM1YwYzJsa1pTQmphR0Z1WjJWeklGeHVJQ0FnSUM4dklIUm9aU0IyWVd4MVpTd2djMlYwSUhSb1pTQjJZV3gxWlNCaFoyRnBiaUJ5ZFc1dWFXNW5JR0VnZG1Gc2FXUmhkR2x2Ymx4dVhHNGdJQ0FnYVdZZ0tIQnlaWFpRY205d2N5NTJZV3hwWkdGMGFXOXVjeUFoUFQwZ2RHaHBjeTV3Y205d2N5NTJZV3hwWkdGMGFXOXVjeUI4ZkNCcGMxWmhiSFZsUTJoaGJtZGxaQ2dwS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbk5sZEZaaGJIVmxLSFJvYVhNdWNISnZjSE11ZG1Gc2RXVWdmSHdnSnljcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQXZMeUJFWlhSaFkyZ2dhWFFnZDJobGJpQmpiMjF3YjI1bGJuUWdkVzV0YjNWdWRITmNiaUFnWTI5dGNHOXVaVzUwVjJsc2JGVnViVzkxYm5RNklHWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQjBhR2x6TG5CeWIzQnpMbDlrWlhSaFkyaEdjbTl0Um05eWJTaDBhR2x6S1R0Y2JpQWdmU3hjYmx4dUlDQnpaWFJXWVd4cFpHRjBhVzl1Y3pvZ1puVnVZM1JwYjI0Z0tIWmhiR2xrWVhScGIyNXpMQ0J5WlhGMWFYSmxaQ2tnZTF4dVhHNGdJQ0FnTHk4Z1FXUmtJSFpoYkdsa1lYUnBiMjV6SUhSdklIUm9aU0J6ZEc5eVpTQnBkSE5sYkdZZ1lYTWdkR2hsSUhCeWIzQnpJRzlpYW1WamRDQmpZVzRnYm05MElHSmxJRzF2WkdsbWFXVmtYRzRnSUNBZ2RHaHBjeTVmZG1Gc2FXUmhkR2x2Ym5NZ1BTQjJZV3hwWkdGMGFXOXVjeUI4ZkNBbkp6dGNibHh1SUNBZ0lHbG1JQ2h5WlhGMWFYSmxaQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZkbUZzYVdSaGRHbHZibk1nUFNCMllXeHBaR0YwYVc5dWN5QS9JSFpoYkdsa1lYUnBiMjV6SUNzZ0p5d25JRG9nSnljN1hHNGdJQ0FnSUNCMGFHbHpMbDkyWVd4cFpHRjBhVzl1Y3lBclBTQW5hWE5XWVd4MVpTYzdYRzRnSUNBZ2ZWeHVYRzRnSUgwc1hHNWNiaUFnTHk4Z1YyVWdkbUZzYVdSaGRHVWdZV1owWlhJZ2RHaGxJSFpoYkhWbElHaGhjeUJpWldWdUlITmxkRnh1SUNCelpYUldZV3gxWlRvZ1puVnVZM1JwYjI0Z0tIWmhiSFZsS1NCN1hHNGdJQ0FnZEdocGN5NXpaWFJUZEdGMFpTaDdYRzRnSUNBZ0lDQmZkbUZzZFdVNklIWmhiSFZsTEZ4dUlDQWdJQ0FnWDJselVISnBjM1JwYm1VNklHWmhiSE5sWEc0Z0lDQWdmU3dnWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3Y205d2N5NWZkbUZzYVdSaGRHVW9kR2hwY3lrN1hHNGdJQ0FnZlM1aWFXNWtLSFJvYVhNcEtUdGNiaUFnZlN4Y2JpQWdjbVZ6WlhSV1lXeDFaVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9lMXh1SUNBZ0lDQWdYM1poYkhWbE9pQW5KeXhjYmlBZ0lDQWdJRjlwYzFCeWFYTjBhVzVsT2lCMGNuVmxYRzRnSUNBZ2ZTd2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXdjbTl3Y3k1ZmRtRnNhV1JoZEdVb2RHaHBjeWs3WEc0Z0lDQWdmU2s3WEc0Z0lIMHNYRzRnSUdkbGRGWmhiSFZsT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjM1JoZEdVdVgzWmhiSFZsTzF4dUlDQjlMRnh1SUNCb1lYTldZV3gxWlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk4wWVhSbExsOTJZV3gxWlNBaFBUMGdKeWM3WEc0Z0lIMHNYRzRnSUdkbGRFVnljbTl5VFdWemMyRm5aVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtbHpWbUZzYVdRb0tTQjhmQ0IwYUdsekxuTm9iM2RTWlhGMWFYSmxaQ2dwSUQ4Z2JuVnNiQ0E2SUhSb2FYTXVjM1JoZEdVdVgzTmxjblpsY2tWeWNtOXlJSHg4SUhSb2FYTXVjSEp2Y0hNdWRtRnNhV1JoZEdsdmJrVnljbTl5TzF4dUlDQjlMRnh1SUNCcGMwWnZjbTFFYVhOaFlteGxaRG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuQnliM0J6TGw5cGMwWnZjbTFFYVhOaFlteGxaQ2dwTzF4dUlDQjlMRnh1SUNCcGMxWmhiR2xrT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjM1JoZEdVdVgybHpWbUZzYVdRN1hHNGdJSDBzWEc0Z0lHbHpVSEpwYzNScGJtVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1emRHRjBaUzVmYVhOUWNtbHpkR2x1WlR0Y2JpQWdmU3hjYmlBZ2FYTlNaWEYxYVhKbFpEb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQWhJWFJvYVhNdWNISnZjSE11Y21WeGRXbHlaV1E3WEc0Z0lIMHNYRzRnSUhOb2IzZFNaWEYxYVhKbFpEb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1selVtVnhkV2x5WldRb0tTQW1KaUIwYUdsekxuTjBZWFJsTGw5MllXeDFaU0E5UFQwZ0p5YzdYRzRnSUgwc1hHNGdJSE5vYjNkRmNuSnZjam9nWm5WdVkzUnBiMjRnS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUFoZEdocGN5NXphRzkzVW1WeGRXbHlaV1FvS1NBbUppQWhkR2hwY3k1emRHRjBaUzVmYVhOV1lXeHBaRHRjYmlBZ2ZWeHVmVHRjYmlKZGZRPT0iLCJ2YXIgUmVhY3QgPSBnbG9iYWwuUmVhY3QgfHwgcmVxdWlyZSgncmVhY3QnKTtcbnZhciBGb3Jtc3kgPSB7fTtcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuL3ZhbGlkYXRpb25SdWxlcy5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscy5qcycpO1xudmFyIE1peGluID0gcmVxdWlyZSgnLi9NaXhpbi5qcycpO1xudmFyIG9wdGlvbnMgPSB7fTtcblxuRm9ybXN5Lk1peGluID0gTWl4aW47XG5cbkZvcm1zeS5kZWZhdWx0cyA9IGZ1bmN0aW9uIChwYXNzZWRPcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBwYXNzZWRPcHRpb25zO1xufTtcblxuRm9ybXN5LmFkZFZhbGlkYXRpb25SdWxlID0gZnVuY3Rpb24gKG5hbWUsIGZ1bmMpIHtcbiAgdmFsaWRhdGlvblJ1bGVzW25hbWVdID0gZnVuYztcbn07XG5cbkZvcm1zeS5Gb3JtID0gUmVhY3QuY3JlYXRlQ2xhc3Moe2Rpc3BsYXlOYW1lOiBcIkZvcm1cIixcbiAgZ2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVmFsaWQ6IHRydWUsXG4gICAgICBpc1N1Ym1pdHRpbmc6IGZhbHNlLFxuICAgICAgY2FuQ2hhbmdlOiBmYWxzZVxuICAgIH07XG4gIH0sXG4gIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gKCkge30sXG4gICAgICBvbkVycm9yOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uU3VibWl0OiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uU3VibWl0dGVkOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uVmFsaWQ6IGZ1bmN0aW9uICgpIHt9LFxuICAgICAgb25JbnZhbGlkOiBmdW5jdGlvbiAoKSB7fSxcbiAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiAoKSB7fVxuICAgIH07XG4gIH0sXG5cbiAgLy8gQWRkIGEgbWFwIHRvIHN0b3JlIHRoZSBpbnB1dHMgb2YgdGhlIGZvcm0sIGEgbW9kZWwgdG8gc3RvcmVcbiAgLy8gdGhlIHZhbHVlcyBvZiB0aGUgZm9ybSBhbmQgcmVnaXN0ZXIgY2hpbGQgaW5wdXRzXG4gIGNvbXBvbmVudFdpbGxNb3VudDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuaW5wdXRzID0ge307XG4gICAgdGhpcy5tb2RlbCA9IHt9O1xuICAgIHRoaXMucmVnaXN0ZXJJbnB1dHModGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gIH0sXG5cbiAgY29tcG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnZhbGlkYXRlRm9ybSgpO1xuICB9LFxuXG4gIGNvbXBvbmVudFdpbGxVcGRhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaW5wdXRLZXlzID0gT2JqZWN0LmtleXModGhpcy5pbnB1dHMpO1xuXG4gICAgLy8gVGhlIHVwZGF0ZWQgY2hpbGRyZW4gYXJyYXkgaXMgbm90IGF2YWlsYWJsZSBoZXJlIGZvciBzb21lIHJlYXNvbixcbiAgICAvLyB3ZSBuZWVkIHRvIHdhaXQgZm9yIG5leHQgZXZlbnQgbG9vcFxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAvLyBUaGUgY29tcG9uZW50IG1pZ2h0IGhhdmUgYmVlbiB1bm1vdW50ZWQgb24gYW5cbiAgICAgIC8vIHVwZGF0ZVxuICAgICAgaWYgKHRoaXMuaXNNb3VudGVkKCkpIHtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVySW5wdXRzKHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuXG4gICAgICAgIHZhciBuZXdJbnB1dEtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmlucHV0cyk7XG4gICAgICAgIGlmICh1dGlscy5hcnJheXNEaWZmZXIoaW5wdXRLZXlzLCBuZXdJbnB1dEtleXMpKSB7XG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUZvcm0oKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG5cbiAgICB9LmJpbmQodGhpcyksIDApO1xuICB9LFxuXG4gIC8vIFVwZGF0ZSBtb2RlbCwgc3VibWl0IHRvIHVybCBwcm9wIGFuZCBzZW5kIHRoZSBtb2RlbFxuICBzdWJtaXQ6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyBUcmlnZ2VyIGZvcm0gYXMgbm90IHByaXN0aW5lLlxuICAgIC8vIElmIGFueSBpbnB1dHMgaGF2ZSBub3QgYmVlbiB0b3VjaGVkIHlldCB0aGlzIHdpbGwgbWFrZSB0aGVtIGRpcnR5XG4gICAgLy8gc28gdmFsaWRhdGlvbiBiZWNvbWVzIHZpc2libGUgKGlmIGJhc2VkIG9uIGlzUHJpc3RpbmUpXG4gICAgdGhpcy5zZXRGb3JtUHJpc3RpbmUoZmFsc2UpO1xuXG4gICAgLy8gVG8gc3VwcG9ydCB1c2UgY2FzZXMgd2hlcmUgbm8gYXN5bmMgb3IgcmVxdWVzdCBvcGVyYXRpb24gaXMgbmVlZGVkLlxuICAgIC8vIFRoZSBcIm9uU3VibWl0XCIgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggdGhlIG1vZGVsIGUuZy4ge2ZpZWxkTmFtZTogXCJteVZhbHVlXCJ9LFxuICAgIC8vIGlmIHdhbnRpbmcgdG8gcmVzZXQgdGhlIGVudGlyZSBmb3JtIHRvIG9yaWdpbmFsIHN0YXRlLCB0aGUgc2Vjb25kIHBhcmFtIGlzIGEgY2FsbGJhY2sgZm9yIHRoaXMuXG4gICAgaWYgKCF0aGlzLnByb3BzLnVybCkge1xuICAgICAgdGhpcy51cGRhdGVNb2RlbCgpO1xuICAgICAgdGhpcy5wcm9wcy5vblN1Ym1pdCh0aGlzLm1hcE1vZGVsKCksIHRoaXMucmVzZXRNb2RlbCwgdGhpcy51cGRhdGVJbnB1dHNXaXRoRXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlTW9kZWwoKTtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzU3VibWl0dGluZzogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wcy5vblN1Ym1pdCh0aGlzLm1hcE1vZGVsKCksIHRoaXMucmVzZXRNb2RlbCwgdGhpcy51cGRhdGVJbnB1dHNXaXRoRXJyb3IpO1xuXG4gICAgdmFyIGhlYWRlcnMgPSAoT2JqZWN0LmtleXModGhpcy5wcm9wcy5oZWFkZXJzKS5sZW5ndGggJiYgdGhpcy5wcm9wcy5oZWFkZXJzKSB8fCBvcHRpb25zLmhlYWRlcnMgfHwge307XG5cbiAgICB2YXIgbWV0aG9kID0gdGhpcy5wcm9wcy5tZXRob2QgJiYgdXRpbHMuYWpheFt0aGlzLnByb3BzLm1ldGhvZC50b0xvd2VyQ2FzZSgpXSA/IHRoaXMucHJvcHMubWV0aG9kLnRvTG93ZXJDYXNlKCkgOiAncG9zdCc7XG4gICAgdXRpbHMuYWpheFttZXRob2RdKHRoaXMucHJvcHMudXJsLCB0aGlzLm1hcE1vZGVsKCksIHRoaXMucHJvcHMuY29udGVudFR5cGUgfHwgb3B0aW9ucy5jb250ZW50VHlwZSB8fCAnanNvbicsIGhlYWRlcnMpXG4gICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblN1Y2Nlc3MocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLnByb3BzLm9uU3VibWl0dGVkKCk7XG4gICAgICB9LmJpbmQodGhpcykpXG4gICAgICAuY2F0Y2godGhpcy5mYWlsU3VibWl0KTtcbiAgfSxcblxuICBtYXBNb2RlbDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLm1hcHBpbmcgPyB0aGlzLnByb3BzLm1hcHBpbmcodGhpcy5tb2RlbCkgOiB0aGlzLm1vZGVsO1xuICB9LFxuXG4gIC8vIEdvZXMgdGhyb3VnaCBhbGwgcmVnaXN0ZXJlZCBjb21wb25lbnRzIGFuZFxuICAvLyB1cGRhdGVzIHRoZSBtb2RlbCB2YWx1ZXNcbiAgdXBkYXRlTW9kZWw6IGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmlucHV0cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IHRoaXMuaW5wdXRzW25hbWVdO1xuICAgICAgdGhpcy5tb2RlbFtuYW1lXSA9IGNvbXBvbmVudC5zdGF0ZS5fdmFsdWU7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfSxcblxuICAvLyBSZXNldCBlYWNoIGtleSBpbiB0aGUgbW9kZWwgdG8gdGhlIG9yaWdpbmFsIC8gaW5pdGlhbCB2YWx1ZVxuICByZXNldE1vZGVsOiBmdW5jdGlvbiAoKSB7XG4gICAgT2JqZWN0LmtleXModGhpcy5pbnB1dHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHRoaXMuaW5wdXRzW25hbWVdLnJlc2V0VmFsdWUoKTtcbiAgICB9LmJpbmQodGhpcykpO1xuICAgIHRoaXMudmFsaWRhdGVGb3JtKCk7XG4gIH0sXG5cbiAgLy8gR28gdGhyb3VnaCBlcnJvcnMgZnJvbSBzZXJ2ZXIgYW5kIGdyYWIgdGhlIGNvbXBvbmVudHNcbiAgLy8gc3RvcmVkIGluIHRoZSBpbnB1dHMgbWFwLiBDaGFuZ2UgdGhlaXIgc3RhdGUgdG8gaW52YWxpZFxuICAvLyBhbmQgc2V0IHRoZSBzZXJ2ZXJFcnJvciBtZXNzYWdlXG4gIHVwZGF0ZUlucHV0c1dpdGhFcnJvcjogZnVuY3Rpb24gKGVycm9ycykge1xuICAgIE9iamVjdC5rZXlzKGVycm9ycykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmlucHV0c1tuYW1lXTtcblxuICAgICAgaWYgKCFjb21wb25lbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgYXJlIHRyeWluZyB0byB1cGRhdGUgYW4gaW5wdXQgdGhhdCBkb2VzIG5vdCBleGlzdHMuIFZlcmlmeSBlcnJvcnMgb2JqZWN0IHdpdGggaW5wdXQgbmFtZXMuICcgKyBKU09OLnN0cmluZ2lmeShlcnJvcnMpKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGFyZ3MgPSBbe1xuICAgICAgICBfaXNWYWxpZDogZmFsc2UsXG4gICAgICAgIF9zZXJ2ZXJFcnJvcjogZXJyb3JzW25hbWVdXG4gICAgICB9XTtcbiAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZS5hcHBseShjb21wb25lbnQsIGFyZ3MpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0sXG5cbiAgZmFpbFN1Ym1pdDogZnVuY3Rpb24gKGVycm9ycykge1xuICAgIHRoaXMudXBkYXRlSW5wdXRzV2l0aEVycm9yKGVycm9ycyk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc1N1Ym1pdHRpbmc6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5wcm9wcy5vbkVycm9yKGVycm9ycyk7XG4gICAgdGhpcy5wcm9wcy5vblN1Ym1pdHRlZCgpO1xuICB9LFxuXG4gIC8vIFRyYXZlcnNlIHRoZSBjaGlsZHJlbiBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4gdG8gZmluZFxuICAvLyBhbGwgaW5wdXRzIGJ5IGNoZWNraW5nIHRoZSBuYW1lIHByb3AuIE1heWJlIGRvIGEgYmV0dGVyXG4gIC8vIGNoZWNrIGhlcmVcbiAgcmVnaXN0ZXJJbnB1dHM6IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuXG4gICAgICBpZiAoY2hpbGQgJiYgY2hpbGQucHJvcHMgJiYgY2hpbGQucHJvcHMubmFtZSkge1xuICAgICAgICBjaGlsZC5wcm9wcy5fYXR0YWNoVG9Gb3JtID0gdGhpcy5hdHRhY2hUb0Zvcm07XG4gICAgICAgIGNoaWxkLnByb3BzLl9kZXRhY2hGcm9tRm9ybSA9IHRoaXMuZGV0YWNoRnJvbUZvcm07XG4gICAgICAgIGNoaWxkLnByb3BzLl92YWxpZGF0ZSA9IHRoaXMudmFsaWRhdGU7XG4gICAgICAgIGNoaWxkLnByb3BzLl9pc0Zvcm1EaXNhYmxlZCA9IHRoaXMuaXNGb3JtRGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5wcm9wcyAmJiBjaGlsZC5wcm9wcy5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLnJlZ2lzdGVySW5wdXRzKGNoaWxkLnByb3BzLmNoaWxkcmVuKTtcbiAgICAgIH1cblxuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0sXG5cbiAgaXNGb3JtRGlzYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kaXNhYmxlZDtcbiAgfSxcblxuICBnZXRDdXJyZW50VmFsdWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaW5wdXRzKS5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEsIG5hbWUpIHtcbiAgICAgIHZhciBjb21wb25lbnQgPSB0aGlzLmlucHV0c1tuYW1lXTtcbiAgICAgIGRhdGFbbmFtZV0gPSBjb21wb25lbnQuc3RhdGUuX3ZhbHVlO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfS5iaW5kKHRoaXMpLCB7fSk7XG4gIH0sXG5cbiAgc2V0Rm9ybVByaXN0aW5lOiBmdW5jdGlvbiAoaXNQcmlzdGluZSkge1xuICAgIHZhciBpbnB1dHMgPSB0aGlzLmlucHV0cztcbiAgICB2YXIgaW5wdXRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcblxuICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIGNvbXBvbmVudCBhbmQgc2V0IGl0IGFzIHByaXN0aW5lXG4gICAgLy8gb3IgXCJkaXJ0eVwiLlxuICAgIGlucHV0S2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGNvbXBvbmVudCA9IGlucHV0c1tuYW1lXTtcbiAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZSh7XG4gICAgICAgIF9pc1ByaXN0aW5lOiBpc1ByaXN0aW5lXG4gICAgICB9KTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9LFxuXG4gIC8vIFVzZSB0aGUgYmluZGVkIHZhbHVlcyBhbmQgdGhlIGFjdHVhbCBpbnB1dCB2YWx1ZSB0b1xuICAvLyB2YWxpZGF0ZSB0aGUgaW5wdXQgYW5kIHNldCBpdHMgc3RhdGUuIFRoZW4gY2hlY2sgdGhlXG4gIC8vIHN0YXRlIG9mIHRoZSBmb3JtIGl0c2VsZlxuICB2YWxpZGF0ZTogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuXG4gICAgLy8gVHJpZ2dlciBvbkNoYW5nZVxuICAgIGlmICh0aGlzLnN0YXRlLmNhbkNoYW5nZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLmdldEN1cnJlbnRWYWx1ZXMoKSk7XG4gICAgfVxuXG4gICAgaWYgKCFjb21wb25lbnQucHJvcHMucmVxdWlyZWQgJiYgIWNvbXBvbmVudC5fdmFsaWRhdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSdW4gdGhyb3VnaCB0aGUgdmFsaWRhdGlvbnMsIHNwbGl0IHRoZW0gdXAgYW5kIGNhbGxcbiAgICAvLyB0aGUgdmFsaWRhdG9yIElGIHRoZXJlIGlzIGEgdmFsdWUgb3IgaXQgaXMgcmVxdWlyZWRcbiAgICB2YXIgaXNWYWxpZCA9IHRoaXMucnVuVmFsaWRhdGlvbihjb21wb25lbnQpO1xuXG4gICAgY29tcG9uZW50LnNldFN0YXRlKHtcbiAgICAgIF9pc1ZhbGlkOiBpc1ZhbGlkLFxuICAgICAgX3NlcnZlckVycm9yOiBudWxsXG4gICAgfSwgdGhpcy52YWxpZGF0ZUZvcm0pO1xuXG4gIH0sXG5cbiAgcnVuVmFsaWRhdGlvbjogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIHZhciBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBpZiAoY29tcG9uZW50Ll92YWxpZGF0aW9ucy5sZW5ndGggJiYgKGNvbXBvbmVudC5wcm9wcy5yZXF1aXJlZCB8fCBjb21wb25lbnQuc3RhdGUuX3ZhbHVlICE9PSAnJykpIHtcbiAgICAgIGNvbXBvbmVudC5fdmFsaWRhdGlvbnMuc3BsaXQoJywnKS5mb3JFYWNoKGZ1bmN0aW9uICh2YWxpZGF0aW9uKSB7XG4gICAgICAgIHZhciBhcmdzID0gdmFsaWRhdGlvbi5zcGxpdCgnOicpO1xuICAgICAgICB2YXIgdmFsaWRhdGVNZXRob2QgPSBhcmdzLnNoaWZ0KCk7XG4gICAgICAgIGFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGFyZyk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZzsgLy8gSXQgaXMgYSBzdHJpbmcgaWYgaXQgY2FuIG5vdCBwYXJzZSBpdFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGFyZ3MgPSBbY29tcG9uZW50LnN0YXRlLl92YWx1ZV0uY29uY2F0KGFyZ3MpO1xuICAgICAgICBpZiAoIXZhbGlkYXRpb25SdWxlc1t2YWxpZGF0ZU1ldGhvZF0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Zvcm1zeSBkb2VzIG5vdCBoYXZlIHRoZSB2YWxpZGF0aW9uIHJ1bGU6ICcgKyB2YWxpZGF0ZU1ldGhvZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWxpZGF0aW9uUnVsZXNbdmFsaWRhdGVNZXRob2RdLmFwcGx5KHRoaXMuZ2V0Q3VycmVudFZhbHVlcygpLCBhcmdzKSkge1xuICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH0sXG5cbiAgLy8gVmFsaWRhdGUgdGhlIGZvcm0gYnkgZ29pbmcgdGhyb3VnaCBhbGwgY2hpbGQgaW5wdXQgY29tcG9uZW50c1xuICAvLyBhbmQgY2hlY2sgdGhlaXIgc3RhdGVcbiAgdmFsaWRhdGVGb3JtOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFsbElzVmFsaWQgPSB0cnVlO1xuICAgIHZhciBpbnB1dHMgPSB0aGlzLmlucHV0cztcbiAgICB2YXIgaW5wdXRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRzKTtcblxuICAgIC8vIFdlIG5lZWQgYSBjYWxsYmFjayBhcyB3ZSBhcmUgdmFsaWRhdGluZyBhbGwgaW5wdXRzIGFnYWluLiBUaGlzIHdpbGxcbiAgICAvLyBydW4gd2hlbiB0aGUgbGFzdCBjb21wb25lbnQgaGFzIHNldCBpdHMgc3RhdGVcbiAgICB2YXIgb25WYWxpZGF0aW9uQ29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpbnB1dEtleXMuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICBpZiAoIWlucHV0c1tuYW1lXS5zdGF0ZS5faXNWYWxpZCkge1xuICAgICAgICAgIGFsbElzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfS5iaW5kKHRoaXMpKTtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzVmFsaWQ6IGFsbElzVmFsaWRcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYWxsSXNWYWxpZCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uVmFsaWQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHJvcHMub25JbnZhbGlkKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRlbGwgdGhlIGZvcm0gdGhhdCBpdCBjYW4gc3RhcnQgdG8gdHJpZ2dlciBjaGFuZ2UgZXZlbnRzXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY2FuQ2hhbmdlOiB0cnVlXG4gICAgICB9KTtcblxuICAgIH0uYmluZCh0aGlzKTtcblxuICAgIC8vIFJ1biB2YWxpZGF0aW9uIGFnYWluIGluIGNhc2UgYWZmZWN0ZWQgYnkgb3RoZXIgaW5wdXRzLiBUaGVcbiAgICAvLyBsYXN0IGNvbXBvbmVudCB2YWxpZGF0ZWQgd2lsbCBydW4gdGhlIG9uVmFsaWRhdGlvbkNvbXBsZXRlIGNhbGxiYWNrXG4gICAgaW5wdXRLZXlzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgY29tcG9uZW50ID0gaW5wdXRzW25hbWVdO1xuICAgICAgdmFyIGlzVmFsaWQgPSB0aGlzLnJ1blZhbGlkYXRpb24oY29tcG9uZW50KTtcbiAgICAgIGNvbXBvbmVudC5zZXRTdGF0ZSh7XG4gICAgICAgIF9pc1ZhbGlkOiBpc1ZhbGlkLFxuICAgICAgICBfc2VydmVyRXJyb3I6IG51bGxcbiAgICAgIH0sIGluZGV4ID09PSBpbnB1dEtleXMubGVuZ3RoIC0gMSA/IG9uVmFsaWRhdGlvbkNvbXBsZXRlIDogbnVsbCk7XG4gICAgfS5iaW5kKHRoaXMpKTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyBpbnB1dHMsIHNldCBzdGF0ZSB3aGVyZSBmb3JtIGlzIHJlYWR5IHRvIHRyaWdnZXJcbiAgICAvLyBjaGFuZ2UgZXZlbnQuIE5ldyBpbnB1dHMgbWlnaHQgYmUgYWRkZWQgbGF0ZXJcbiAgICBpZiAoIWlucHV0S2V5cy5sZW5ndGggJiYgdGhpcy5pc01vdW50ZWQoKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGNhbkNoYW5nZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8vIE1ldGhvZCBwdXQgb24gZWFjaCBpbnB1dCBjb21wb25lbnQgdG8gcmVnaXN0ZXJcbiAgLy8gaXRzZWxmIHRvIHRoZSBmb3JtXG4gIGF0dGFjaFRvRm9ybTogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIHRoaXMuaW5wdXRzW2NvbXBvbmVudC5wcm9wcy5uYW1lXSA9IGNvbXBvbmVudDtcbiAgICB0aGlzLm1vZGVsW2NvbXBvbmVudC5wcm9wcy5uYW1lXSA9IGNvbXBvbmVudC5zdGF0ZS5fdmFsdWU7XG4gICAgdGhpcy52YWxpZGF0ZShjb21wb25lbnQpO1xuICB9LFxuXG4gIC8vIE1ldGhvZCBwdXQgb24gZWFjaCBpbnB1dCBjb21wb25lbnQgdG8gdW5yZWdpc3RlclxuICAvLyBpdHNlbGYgZnJvbSB0aGUgZm9ybVxuICBkZXRhY2hGcm9tRm9ybTogZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgIGRlbGV0ZSB0aGlzLmlucHV0c1tjb21wb25lbnQucHJvcHMubmFtZV07XG4gICAgZGVsZXRlIHRoaXMubW9kZWxbY29tcG9uZW50LnByb3BzLm5hbWVdO1xuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uICgpIHtcblxuICAgIHJldHVybiBSZWFjdC5ET00uZm9ybSh7XG4gICAgICAgIG9uU3VibWl0OiB0aGlzLnN1Ym1pdCxcbiAgICAgICAgY2xhc3NOYW1lOiB0aGlzLnByb3BzLmNsYXNzTmFtZVxuICAgICAgfSxcbiAgICAgIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgICApO1xuXG4gIH1cbn0pO1xuXG5pZiAoIWdsb2JhbC5leHBvcnRzICYmICFnbG9iYWwubW9kdWxlICYmICghZ2xvYmFsLmRlZmluZSB8fCAhZ2xvYmFsLmRlZmluZS5hbWQpKSB7XG4gIGdsb2JhbC5Gb3Jtc3kgPSBGb3Jtc3k7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRm9ybXN5O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lMMVZ6WlhKekwyTm9jbWx6ZEdsaGJtRnNabTl1YVM5RWIyTjFiV1Z1ZEhNdlpHVjJMMlp2Y20xemVTMXlaV0ZqZEM5emNtTXZiV0ZwYmk1cWN5SXNJbk52ZFhKalpYTWlPbHNpTDFWelpYSnpMMk5vY21semRHbGhibUZzWm05dWFTOUViMk4xYldWdWRITXZaR1YyTDJadmNtMXplUzF5WldGamRDOXpjbU12YldGcGJpNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4SlFVRkpMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zUzBGQlN5eEpRVUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVNM1F5eEpRVUZKTEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRhRUlzU1VGQlNTeGxRVUZsTEVkQlFVY3NUMEZCVHl4RFFVRkRMSE5DUVVGelFpeERRVUZETEVOQlFVTTdRVUZEZEVRc1NVRkJTU3hMUVVGTExFZEJRVWNzVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMEZCUTJ4RExFbEJRVWtzUzBGQlN5eEhRVUZITEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRCUVVOc1F5eEpRVUZKTEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNN08wRkJSV3BDTEUxQlFVMHNRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE96dEJRVVZ5UWl4TlFVRk5MRU5CUVVNc1VVRkJVU3hIUVVGSExGVkJRVlVzWVVGQllTeEZRVUZGTzBWQlEzcERMRTlCUVU4c1IwRkJSeXhoUVVGaExFTkJRVU03UVVGRE1VSXNRMEZCUXl4RFFVRkRPenRCUVVWR0xFMUJRVTBzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhWUVVGVkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVTdSVUZETDBNc1pVRkJaU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXp0QlFVTXZRaXhEUVVGRExFTkJRVU03TzBGQlJVWXNhVU5CUVdsRExHOUNRVUZCTzBWQlF5OUNMR1ZCUVdVc1JVRkJSU3haUVVGWk8wbEJRek5DTEU5QlFVODdUVUZEVEN4UFFVRlBMRVZCUVVVc1NVRkJTVHROUVVOaUxGbEJRVmtzUlVGQlJTeExRVUZMTzAxQlEyNUNMRk5CUVZNc1JVRkJSU3hMUVVGTE8wdEJRMnBDTEVOQlFVTTdSMEZEU0R0RlFVTkVMR1ZCUVdVc1JVRkJSU3haUVVGWk8wbEJRek5DTEU5QlFVODdUVUZEVEN4UFFVRlBMRVZCUVVVc1JVRkJSVHROUVVOWUxGTkJRVk1zUlVGQlJTeFpRVUZaTEVWQlFVVTdUVUZEZWtJc1QwRkJUeXhGUVVGRkxGbEJRVmtzUlVGQlJUdE5RVU4yUWl4UlFVRlJMRVZCUVVVc1dVRkJXU3hGUVVGRk8wMUJRM2hDTEZkQlFWY3NSVUZCUlN4WlFVRlpMRVZCUVVVN1RVRkRNMElzVDBGQlR5eEZRVUZGTEZsQlFWa3NSVUZCUlR0TlFVTjJRaXhUUVVGVExFVkJRVVVzV1VGQldTeEZRVUZGTzAxQlEzcENMRkZCUVZFc1JVRkJSU3haUVVGWkxFVkJRVVU3UzBGRGVrSXNRMEZCUXp0QlFVTk9MRWRCUVVjN1FVRkRTRHRCUVVOQk96dEZRVVZGTEd0Q1FVRnJRaXhGUVVGRkxGbEJRVms3U1VGRE9VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGFrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGFFSXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUXpkRExFZEJRVWM3TzBWQlJVUXNhVUpCUVdsQ0xFVkJRVVVzV1VGQldUdEpRVU0zUWl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03UVVGRGVFSXNSMEZCUnpzN1JVRkZSQ3h0UWtGQmJVSXNSVUZCUlN4WlFVRlpPMEZCUTI1RExFbEJRVWtzU1VGQlNTeFRRVUZUTEVkQlFVY3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdRVUZETjBNN1FVRkRRVHM3UVVGRlFTeEpRVUZKTEZWQlFWVXNRMEZCUXl4WlFVRlpPMEZCUXpOQ08wRkJRMEU3TzBGQlJVRXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzUlVGQlJUczdRVUZGTlVJc1VVRkJVU3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03TzFGQlJYcERMRWxCUVVrc1dVRkJXU3hIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRelZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRmxCUVZrc1EwRkJReXhUUVVGVExFVkJRVVVzV1VGQldTeERRVUZETEVWQlFVVTdWVUZETDBNc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETzBGQlF6bENMRk5CUVZNN08wRkJSVlFzVDBGQlR6czdTMEZGUml4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnlRaXhIUVVGSE8wRkJRMGc3TzBWQlJVVXNUVUZCVFN4RlFVRkZMRlZCUVZVc1MwRkJTeXhGUVVGRk8wRkJRek5DTEVsQlFVa3NTMEZCU3l4RFFVRkRMR05CUVdNc1JVRkJSU3hEUVVGRE8wRkJRek5DTzBGQlEwRTdRVUZEUVRzN1FVRkZRU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRhRU03UVVGRFFUdEJRVU5CT3p0SlFVVkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSVUZCUlR0TlFVTnVRaXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdUVUZEYmtJc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTTdUVUZEYkVZc1QwRkJUenRCUVVOaUxFdEJRVXM3TzBsQlJVUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRE8wbEJRMjVDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1RVRkRXaXhaUVVGWkxFVkJRVVVzU1VGQlNUdEJRVU40UWl4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRlVDeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRE96dEJRVVYwUml4SlFVRkpMRWxCUVVrc1QwRkJUeXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUzBGQlN5eFBRVUZQTEVOQlFVTXNUMEZCVHl4SlFVRkpMRVZCUVVVc1EwRkJRenM3U1VGRmRFY3NTVUZCU1N4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1JVRkJSU3hIUVVGSExFMUJRVTBzUTBGQlF6dEpRVU42U0N4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGZEJRVmNzU1VGQlNTeFBRVUZQTEVOQlFVTXNWMEZCVnl4SlFVRkpMRTFCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU03VDBGRGJFZ3NTVUZCU1N4RFFVRkRMRlZCUVZVc1VVRkJVU3hGUVVGRk8xRkJRM2hDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlF5OUNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdUMEZETVVJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdUMEZEV2l4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETzBGQlF6bENMRWRCUVVjN08wVkJSVVFzVVVGQlVTeEZRVUZGTEZsQlFWazdTVUZEY0VJc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dEJRVU0xUlN4SFFVRkhPMEZCUTBnN1FVRkRRVHM3UlVGRlJTeFhRVUZYTEVWQlFVVXNXVUZCV1R0SlFVTjJRaXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zVlVGQlZTeEpRVUZKTEVWQlFVVTdUVUZETDBNc1NVRkJTU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenROUVVOc1F5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRPMHRCUXpORExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRiRUlzUjBGQlJ6dEJRVU5JT3p0RlFVVkZMRlZCUVZVc1JVRkJSU3haUVVGWk8wbEJRM1JDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRWxCUVVrc1JVRkJSVHROUVVNdlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzB0QlEyaERMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEWkN4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU03UVVGRGVFSXNSMEZCUnp0QlFVTklPMEZCUTBFN1FVRkRRVHM3UlVGRlJTeHhRa0ZCY1VJc1JVRkJSU3hWUVVGVkxFMUJRVTBzUlVGQlJUdEpRVU4yUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVU3UVVGRGRrUXNUVUZCVFN4SlFVRkpMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPenROUVVWc1F5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZPMUZCUTJRc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHBSMEZCYVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRjRW9zVDBGQlR6czdUVUZGUkN4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRE8xRkJRMVlzVVVGQlVTeEZRVUZGTEV0QlFVczdVVUZEWml4WlFVRlpMRVZCUVVVc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF6dFBRVU16UWl4RFFVRkRMRU5CUVVNN1RVRkRTQ3hUUVVGVExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE0wTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5zUWl4SFFVRkhPenRGUVVWRUxGVkJRVlVzUlVGQlJTeFZRVUZWTEUxQlFVMHNSVUZCUlR0SlFVTTFRaXhKUVVGSkxFTkJRVU1zY1VKQlFYRkNMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGJrTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenROUVVOYUxGbEJRVmtzUlVGQlJTeExRVUZMTzB0QlEzQkNMRU5CUVVNc1EwRkJRenRKUVVOSUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRek5DTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhGUVVGRkxFTkJRVU03UVVGRE4wSXNSMEZCUnp0QlFVTklPMEZCUTBFN1FVRkRRVHM3UlVGRlJTeGpRVUZqTEVWQlFVVXNWVUZCVlN4UlFVRlJMRVZCUVVVN1FVRkRkRU1zU1VGQlNTeExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFVkJRVVVzVlVGQlZTeExRVUZMTEVWQlFVVTdPMDFCUldoRUxFbEJRVWtzUzBGQlN5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVTdVVUZETlVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVNNVF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMR1ZCUVdVc1IwRkJSeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETzFGQlEyeEVMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkRkRU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF6dEJRVU14UkN4UFFVRlBPenROUVVWRUxFbEJRVWtzUzBGQlN5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVWQlFVVTdVVUZEYUVRc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRMnhFTEU5QlFVODdPMHRCUlVZc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnNRaXhIUVVGSE96dEZRVVZFTEdOQlFXTXNSVUZCUlN4WlFVRlpPMGxCUXpGQ0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNN1FVRkRMMElzUjBGQlJ6czdSVUZGUkN4blFrRkJaMElzUlVGQlJTeFpRVUZaTzBsQlF6VkNMRTlCUVU4c1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlR0TlFVTXpSQ3hKUVVGSkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wMUJRMnhETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0TlFVTndReXhQUVVGUExFbEJRVWtzUTBGQlF6dExRVU5pTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzUkNMRWRCUVVjN08wVkJSVVFzWlVGQlpTeEZRVUZGTEZWQlFWVXNWVUZCVlN4RlFVRkZPMGxCUTNKRExFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkROMElzU1VGQlNTeEpRVUZKTEZOQlFWTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEzaERPMEZCUTBFN08wbEJSVWtzVTBGQlV5eERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVU3VFVGRGRrTXNTVUZCU1N4VFFVRlRMRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzAxQlF6ZENMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU03VVVGRGFrSXNWMEZCVnl4RlFVRkZMRlZCUVZVN1QwRkRlRUlzUTBGQlF5eERRVUZETzB0QlEwb3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5zUWl4SFFVRkhPMEZCUTBnN1FVRkRRVHRCUVVOQk96dEJRVVZCTEVWQlFVVXNVVUZCVVN4RlFVRkZMRlZCUVZVc1UwRkJVeXhGUVVGRk8wRkJRMnBET3p0SlFVVkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFRRVUZUTEVWQlFVVTdUVUZEZUVJc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTnVSQ3hMUVVGTE96dEpRVVZFTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkVzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4WlFVRlpMRVZCUVVVN1RVRkRlRVFzVDBGQlR6dEJRVU5pTEV0QlFVczdRVUZEVER0QlFVTkJPenRCUVVWQkxFbEJRVWtzU1VGQlNTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6czdTVUZGTlVNc1UwRkJVeXhEUVVGRExGRkJRVkVzUTBGQlF6dE5RVU5xUWl4UlFVRlJMRVZCUVVVc1QwRkJUenROUVVOcVFpeFpRVUZaTEVWQlFVVXNTVUZCU1R0QlFVTjRRaXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPenRCUVVVeFFpeEhRVUZIT3p0RlFVVkVMR0ZCUVdFc1JVRkJSU3hWUVVGVkxGTkJRVk1zUlVGQlJUdEpRVU5zUXl4SlFVRkpMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU03U1VGRGJrSXNTVUZCU1N4VFFVRlRMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUzBGQlN5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1NVRkJTU3hUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNTMEZCU3l4RlFVRkZMRU5CUVVNc1JVRkJSVHROUVVOb1J5eFRRVUZUTEVOQlFVTXNXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4VlFVRlZMRVZCUVVVN1VVRkRPVVFzU1VGQlNTeEpRVUZKTEVkQlFVY3NWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5xUXl4SlFVRkpMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdVVUZEYkVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4SFFVRkhMRVZCUVVVN1ZVRkROMElzU1VGQlNUdFpRVU5HTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFhRVU40UWl4RFFVRkRMRTlCUVU4c1EwRkJReXhGUVVGRk8xbEJRMVlzVDBGQlR5eEhRVUZITEVOQlFVTTdWMEZEV2p0VFFVTkdMRU5CUVVNc1EwRkJRenRSUVVOSUxFbEJRVWtzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUXpkRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNZMEZCWXl4RFFVRkRMRVZCUVVVN1ZVRkRjRU1zVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl3MFEwRkJORU1zUjBGQlJ5eGpRVUZqTEVOQlFVTXNRMEZCUXp0VFFVTm9SanRSUVVORUxFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTzFWQlEzcEZMRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU03VTBGRGFrSTdUMEZEUml4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzB0QlEyWTdTVUZEUkN4UFFVRlBMRTlCUVU4c1EwRkJRenRCUVVOdVFpeEhRVUZITzBGQlEwZzdRVUZEUVRzN1JVRkZSU3haUVVGWkxFVkJRVVVzV1VGQldUdEpRVU40UWl4SlFVRkpMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03U1VGRGRFSXNTVUZCU1N4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU0zUWl4SlFVRkpMRWxCUVVrc1UwRkJVeXhIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRlRU03UVVGRFFUczdTVUZGU1N4SlFVRkpMRzlDUVVGdlFpeEhRVUZITEZsQlFWazdUVUZEY2tNc1UwRkJVeXhEUVVGRExFOUJRVThzUTBGQlF5eFZRVUZWTEVsQlFVa3NSVUZCUlR0UlFVTm9ReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFVkJRVVU3VlVGRGFFTXNWVUZCVlN4SFFVRkhMRXRCUVVzc1EwRkJRenRUUVVOd1FqdEJRVU5VTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6czdUVUZGWkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8xRkJRMW9zVDBGQlR5eEZRVUZGTEZWQlFWVTdRVUZETTBJc1QwRkJUeXhEUVVGRExFTkJRVU03TzAxQlJVZ3NTVUZCU1N4VlFVRlZMRVZCUVVVN1VVRkRaQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMDlCUTNSQ0xFMUJRVTA3VVVGRFRDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8wRkJReTlDTEU5QlFVODdRVUZEVURzN1RVRkZUU3hKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzFGQlExb3NVMEZCVXl4RlFVRkZMRWxCUVVrN1FVRkRka0lzVDBGQlR5eERRVUZETEVOQlFVTTdPMEZCUlZRc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0QlFVTnFRanRCUVVOQk96dEpRVVZKTEZOQlFWTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hKUVVGSkxFVkJRVVVzUzBGQlN5eEZRVUZGTzAxQlEzWkRMRWxCUVVrc1UwRkJVeXhIUVVGSExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TlFVTTNRaXhKUVVGSkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wMUJRelZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkRha0lzVVVGQlVTeEZRVUZGTEU5QlFVODdVVUZEYWtJc1dVRkJXU3hGUVVGRkxFbEJRVWs3VDBGRGJrSXNSVUZCUlN4TFFVRkxMRXRCUVVzc1UwRkJVeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVkQlFVY3NiMEpCUVc5Q0xFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEZGtVc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJ4Q08wRkJRMEU3TzBsQlJVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RlFVRkZPMDFCUTNwRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdVVUZEV2l4VFFVRlRMRVZCUVVVc1NVRkJTVHRQUVVOb1FpeERRVUZETEVOQlFVTTdTMEZEU2p0QlFVTk1MRWRCUVVjN1FVRkRTRHRCUVVOQk96dEZRVVZGTEZsQlFWa3NSVUZCUlN4VlFVRlZMRk5CUVZNc1JVRkJSVHRKUVVOcVF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRPMGxCUXpsRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVNeFJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRemRDTEVkQlFVYzdRVUZEU0R0QlFVTkJPenRGUVVWRkxHTkJRV01zUlVGQlJTeFZRVUZWTEZOQlFWTXNSVUZCUlR0SlFVTnVReXhQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU42UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRIUVVONlF6dEJRVU5JTEVWQlFVVXNUVUZCVFN4RlFVRkZMRmxCUVZrN08wbEJSV3hDTEU5QlFVOHNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU03VVVGRGJFSXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTk8xRkJRM0pDTEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk03VDBGRGFFTTdUVUZEUkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGRkJRVkU3UVVGRGVrSXNTMEZCU3l4RFFVRkRPenRIUVVWSU8wRkJRMGdzUTBGQlF5eERRVUZETEVOQlFVTTdPMEZCUlVnc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdSVUZETDBVc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZEZWtJc1EwRkJRenM3UVVGRlJDeE5RVUZOTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTFCUVUwc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW5aaGNpQlNaV0ZqZENBOUlHZHNiMkpoYkM1U1pXRmpkQ0I4ZkNCeVpYRjFhWEpsS0NkeVpXRmpkQ2NwTzF4dWRtRnlJRVp2Y20xemVTQTlJSHQ5TzF4dWRtRnlJSFpoYkdsa1lYUnBiMjVTZFd4bGN5QTlJSEpsY1hWcGNtVW9KeTR2ZG1Gc2FXUmhkR2x2YmxKMWJHVnpMbXB6SnlrN1hHNTJZWElnZFhScGJITWdQU0J5WlhGMWFYSmxLQ2N1TDNWMGFXeHpMbXB6SnlrN1hHNTJZWElnVFdsNGFXNGdQU0J5WlhGMWFYSmxLQ2N1TDAxcGVHbHVMbXB6SnlrN1hHNTJZWElnYjNCMGFXOXVjeUE5SUh0OU8xeHVYRzVHYjNKdGMza3VUV2w0YVc0Z1BTQk5hWGhwYmp0Y2JseHVSbTl5YlhONUxtUmxabUYxYkhSeklEMGdablZ1WTNScGIyNGdLSEJoYzNObFpFOXdkR2x2Ym5NcElIdGNiaUFnYjNCMGFXOXVjeUE5SUhCaGMzTmxaRTl3ZEdsdmJuTTdYRzU5TzF4dVhHNUdiM0p0YzNrdVlXUmtWbUZzYVdSaGRHbHZibEoxYkdVZ1BTQm1kVzVqZEdsdmJpQW9ibUZ0WlN3Z1puVnVZeWtnZTF4dUlDQjJZV3hwWkdGMGFXOXVVblZzWlhOYmJtRnRaVjBnUFNCbWRXNWpPMXh1ZlR0Y2JseHVSbTl5YlhONUxrWnZjbTBnUFNCU1pXRmpkQzVqY21WaGRHVkRiR0Z6Y3loN1hHNGdJR2RsZEVsdWFYUnBZV3hUZEdGMFpUb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQnBjMVpoYkdsa09pQjBjblZsTEZ4dUlDQWdJQ0FnYVhOVGRXSnRhWFIwYVc1bk9pQm1ZV3h6WlN4Y2JpQWdJQ0FnSUdOaGJrTm9ZVzVuWlRvZ1ptRnNjMlZjYmlBZ0lDQjlPMXh1SUNCOUxGeHVJQ0JuWlhSRVpXWmhkV3gwVUhKdmNITTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdhR1ZoWkdWeWN6b2dlMzBzWEc0Z0lDQWdJQ0J2YmxOMVkyTmxjM002SUdaMWJtTjBhVzl1SUNncElIdDlMRnh1SUNBZ0lDQWdiMjVGY25KdmNqb2dablZ1WTNScGIyNGdLQ2tnZTMwc1hHNGdJQ0FnSUNCdmJsTjFZbTFwZERvZ1puVnVZM1JwYjI0Z0tDa2dlMzBzWEc0Z0lDQWdJQ0J2YmxOMVltMXBkSFJsWkRvZ1puVnVZM1JwYjI0Z0tDa2dlMzBzWEc0Z0lDQWdJQ0J2YmxaaGJHbGtPaUJtZFc1amRHbHZiaUFvS1NCN2ZTeGNiaUFnSUNBZ0lHOXVTVzUyWVd4cFpEb2dablZ1WTNScGIyNGdLQ2tnZTMwc1hHNGdJQ0FnSUNCdmJrTm9ZVzVuWlRvZ1puVnVZM1JwYjI0Z0tDa2dlMzFjYmlBZ0lDQjlPMXh1SUNCOUxGeHVYRzRnSUM4dklFRmtaQ0JoSUcxaGNDQjBieUJ6ZEc5eVpTQjBhR1VnYVc1d2RYUnpJRzltSUhSb1pTQm1iM0p0TENCaElHMXZaR1ZzSUhSdklITjBiM0psWEc0Z0lDOHZJSFJvWlNCMllXeDFaWE1nYjJZZ2RHaGxJR1p2Y20wZ1lXNWtJSEpsWjJsemRHVnlJR05vYVd4a0lHbHVjSFYwYzF4dUlDQmpiMjF3YjI1bGJuUlhhV3hzVFc5MWJuUTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0IwYUdsekxtbHVjSFYwY3lBOUlIdDlPMXh1SUNBZ0lIUm9hWE11Ylc5a1pXd2dQU0I3ZlR0Y2JpQWdJQ0IwYUdsekxuSmxaMmx6ZEdWeVNXNXdkWFJ6S0hSb2FYTXVjSEp2Y0hNdVkyaHBiR1J5Wlc0cE8xeHVJQ0I5TEZ4dVhHNGdJR052YlhCdmJtVnVkRVJwWkUxdmRXNTBPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZEdocGN5NTJZV3hwWkdGMFpVWnZjbTBvS1R0Y2JpQWdmU3hjYmx4dUlDQmpiMjF3YjI1bGJuUlhhV3hzVlhCa1lYUmxPaUJtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnZG1GeUlHbHVjSFYwUzJWNWN5QTlJRTlpYW1WamRDNXJaWGx6S0hSb2FYTXVhVzV3ZFhSektUdGNibHh1SUNBZ0lDOHZJRlJvWlNCMWNHUmhkR1ZrSUdOb2FXeGtjbVZ1SUdGeWNtRjVJR2x6SUc1dmRDQmhkbUZwYkdGaWJHVWdhR1Z5WlNCbWIzSWdjMjl0WlNCeVpXRnpiMjRzWEc0Z0lDQWdMeThnZDJVZ2JtVmxaQ0IwYnlCM1lXbDBJR1p2Y2lCdVpYaDBJR1YyWlc1MElHeHZiM0JjYmlBZ0lDQnpaWFJVYVcxbGIzVjBLR1oxYm1OMGFXOXVJQ2dwSUh0Y2JseHVJQ0FnSUNBZ0x5OGdWR2hsSUdOdmJYQnZibVZ1ZENCdGFXZG9kQ0JvWVhabElHSmxaVzRnZFc1dGIzVnVkR1ZrSUc5dUlHRnVYRzRnSUNBZ0lDQXZMeUIxY0dSaGRHVmNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxtbHpUVzkxYm5SbFpDZ3BLU0I3WEc1Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV5WldkcGMzUmxja2x1Y0hWMGN5aDBhR2x6TG5CeWIzQnpMbU5vYVd4a2NtVnVLVHRjYmx4dUlDQWdJQ0FnSUNCMllYSWdibVYzU1c1d2RYUkxaWGx6SUQwZ1QySnFaV04wTG10bGVYTW9kR2hwY3k1cGJuQjFkSE1wTzF4dUlDQWdJQ0FnSUNCcFppQW9kWFJwYkhNdVlYSnlZWGx6UkdsbVptVnlLR2x1Y0hWMFMyVjVjeXdnYm1WM1NXNXdkWFJMWlhsektTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVkbUZzYVdSaGRHVkdiM0p0S0NrN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdmUzVpYVc1a0tIUm9hWE1wTENBd0tUdGNiaUFnZlN4Y2JseHVJQ0F2THlCVmNHUmhkR1VnYlc5a1pXd3NJSE4xWW0xcGRDQjBieUIxY213Z2NISnZjQ0JoYm1RZ2MyVnVaQ0IwYUdVZ2JXOWtaV3hjYmlBZ2MzVmliV2wwT2lCbWRXNWpkR2x2YmlBb1pYWmxiblFwSUh0Y2JpQWdJQ0JsZG1WdWRDNXdjbVYyWlc1MFJHVm1ZWFZzZENncE8xeHVYRzRnSUNBZ0x5OGdWSEpwWjJkbGNpQm1iM0p0SUdGeklHNXZkQ0J3Y21semRHbHVaUzVjYmlBZ0lDQXZMeUJKWmlCaGJua2dhVzV3ZFhSeklHaGhkbVVnYm05MElHSmxaVzRnZEc5MVkyaGxaQ0I1WlhRZ2RHaHBjeUIzYVd4c0lHMWhhMlVnZEdobGJTQmthWEowZVZ4dUlDQWdJQzh2SUhOdklIWmhiR2xrWVhScGIyNGdZbVZqYjIxbGN5QjJhWE5wWW14bElDaHBaaUJpWVhObFpDQnZiaUJwYzFCeWFYTjBhVzVsS1Z4dUlDQWdJSFJvYVhNdWMyVjBSbTl5YlZCeWFYTjBhVzVsS0daaGJITmxLVHRjYmx4dUlDQWdJQzh2SUZSdklITjFjSEJ2Y25RZ2RYTmxJR05oYzJWeklIZG9aWEpsSUc1dklHRnplVzVqSUc5eUlISmxjWFZsYzNRZ2IzQmxjbUYwYVc5dUlHbHpJRzVsWldSbFpDNWNiaUFnSUNBdkx5QlVhR1VnWENKdmJsTjFZbTFwZEZ3aUlHTmhiR3hpWVdOcklHbHpJR05oYkd4bFpDQjNhWFJvSUhSb1pTQnRiMlJsYkNCbExtY3VJSHRtYVdWc1pFNWhiV1U2SUZ3aWJYbFdZV3gxWlZ3aWZTeGNiaUFnSUNBdkx5QnBaaUIzWVc1MGFXNW5JSFJ2SUhKbGMyVjBJSFJvWlNCbGJuUnBjbVVnWm05eWJTQjBieUJ2Y21sbmFXNWhiQ0J6ZEdGMFpTd2dkR2hsSUhObFkyOXVaQ0J3WVhKaGJTQnBjeUJoSUdOaGJHeGlZV05ySUdadmNpQjBhR2x6TGx4dUlDQWdJR2xtSUNnaGRHaHBjeTV3Y205d2N5NTFjbXdwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFRXOWtaV3dvS1R0Y2JpQWdJQ0FnSUhSb2FYTXVjSEp2Y0hNdWIyNVRkV0p0YVhRb2RHaHBjeTV0WVhCTmIyUmxiQ2dwTENCMGFHbHpMbkpsYzJWMFRXOWtaV3dzSUhSb2FYTXVkWEJrWVhSbFNXNXdkWFJ6VjJsMGFFVnljbTl5S1R0Y2JpQWdJQ0FnSUhKbGRIVnlianRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaVTF2WkdWc0tDazdYRzRnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3WEc0Z0lDQWdJQ0JwYzFOMVltMXBkSFJwYm1jNklIUnlkV1ZjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJSFJvYVhNdWNISnZjSE11YjI1VGRXSnRhWFFvZEdocGN5NXRZWEJOYjJSbGJDZ3BMQ0IwYUdsekxuSmxjMlYwVFc5a1pXd3NJSFJvYVhNdWRYQmtZWFJsU1c1d2RYUnpWMmwwYUVWeWNtOXlLVHRjYmx4dUlDQWdJSFpoY2lCb1pXRmtaWEp6SUQwZ0tFOWlhbVZqZEM1clpYbHpLSFJvYVhNdWNISnZjSE11YUdWaFpHVnljeWt1YkdWdVozUm9JQ1ltSUhSb2FYTXVjSEp2Y0hNdWFHVmhaR1Z5Y3lrZ2ZId2diM0IwYVc5dWN5NW9aV0ZrWlhKeklIeDhJSHQ5TzF4dVhHNGdJQ0FnZG1GeUlHMWxkR2h2WkNBOUlIUm9hWE11Y0hKdmNITXViV1YwYUc5a0lDWW1JSFYwYVd4ekxtRnFZWGhiZEdocGN5NXdjbTl3Y3k1dFpYUm9iMlF1ZEc5TWIzZGxja05oYzJVb0tWMGdQeUIwYUdsekxuQnliM0J6TG0xbGRHaHZaQzUwYjB4dmQyVnlRMkZ6WlNncElEb2dKM0J2YzNRbk8xeHVJQ0FnSUhWMGFXeHpMbUZxWVhoYmJXVjBhRzlrWFNoMGFHbHpMbkJ5YjNCekxuVnliQ3dnZEdocGN5NXRZWEJOYjJSbGJDZ3BMQ0IwYUdsekxuQnliM0J6TG1OdmJuUmxiblJVZVhCbElIeDhJRzl3ZEdsdmJuTXVZMjl1ZEdWdWRGUjVjR1VnZkh3Z0oycHpiMjRuTENCb1pXRmtaWEp6S1Z4dUlDQWdJQ0FnTG5Sb1pXNG9ablZ1WTNScGIyNGdLSEpsYzNCdmJuTmxLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVjSEp2Y0hNdWIyNVRkV05qWlhOektISmxjM0J2Ym5ObEtUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1d2NtOXdjeTV2YmxOMVltMXBkSFJsWkNncE8xeHVJQ0FnSUNBZ2ZTNWlhVzVrS0hSb2FYTXBLVnh1SUNBZ0lDQWdMbU5oZEdOb0tIUm9hWE11Wm1GcGJGTjFZbTFwZENrN1hHNGdJSDBzWEc1Y2JpQWdiV0Z3VFc5a1pXdzZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1d2NtOXdjeTV0WVhCd2FXNW5JRDhnZEdocGN5NXdjbTl3Y3k1dFlYQndhVzVuS0hSb2FYTXViVzlrWld3cElEb2dkR2hwY3k1dGIyUmxiRHRjYmlBZ2ZTeGNibHh1SUNBdkx5QkhiMlZ6SUhSb2NtOTFaMmdnWVd4c0lISmxaMmx6ZEdWeVpXUWdZMjl0Y0c5dVpXNTBjeUJoYm1SY2JpQWdMeThnZFhCa1lYUmxjeUIwYUdVZ2JXOWtaV3dnZG1Gc2RXVnpYRzRnSUhWd1pHRjBaVTF2WkdWc09pQm1kVzVqZEdsdmJpQW9LU0I3WEc0Z0lDQWdUMkpxWldOMExtdGxlWE1vZEdocGN5NXBibkIxZEhNcExtWnZja1ZoWTJnb1puVnVZM1JwYjI0Z0tHNWhiV1VwSUh0Y2JpQWdJQ0FnSUhaaGNpQmpiMjF3YjI1bGJuUWdQU0IwYUdsekxtbHVjSFYwYzF0dVlXMWxYVHRjYmlBZ0lDQWdJSFJvYVhNdWJXOWtaV3hiYm1GdFpWMGdQU0JqYjIxd2IyNWxiblF1YzNSaGRHVXVYM1poYkhWbE8xeHVJQ0FnSUgwdVltbHVaQ2gwYUdsektTazdYRzRnSUgwc1hHNWNiaUFnTHk4Z1VtVnpaWFFnWldGamFDQnJaWGtnYVc0Z2RHaGxJRzF2WkdWc0lIUnZJSFJvWlNCdmNtbG5hVzVoYkNBdklHbHVhWFJwWVd3Z2RtRnNkV1ZjYmlBZ2NtVnpaWFJOYjJSbGJEb2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJRTlpYW1WamRDNXJaWGx6S0hSb2FYTXVhVzV3ZFhSektTNW1iM0pGWVdOb0tHWjFibU4wYVc5dUlDaHVZVzFsS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbWx1Y0hWMGMxdHVZVzFsWFM1eVpYTmxkRlpoYkhWbEtDazdYRzRnSUNBZ2ZTNWlhVzVrS0hSb2FYTXBLVHRjYmlBZ0lDQjBhR2x6TG5aaGJHbGtZWFJsUm05eWJTZ3BPMXh1SUNCOUxGeHVYRzRnSUM4dklFZHZJSFJvY205MVoyZ2daWEp5YjNKeklHWnliMjBnYzJWeWRtVnlJR0Z1WkNCbmNtRmlJSFJvWlNCamIyMXdiMjVsYm5SelhHNGdJQzh2SUhOMGIzSmxaQ0JwYmlCMGFHVWdhVzV3ZFhSeklHMWhjQzRnUTJoaGJtZGxJSFJvWldseUlITjBZWFJsSUhSdklHbHVkbUZzYVdSY2JpQWdMeThnWVc1a0lITmxkQ0IwYUdVZ2MyVnlkbVZ5UlhKeWIzSWdiV1Z6YzJGblpWeHVJQ0IxY0dSaGRHVkpibkIxZEhOWGFYUm9SWEp5YjNJNklHWjFibU4wYVc5dUlDaGxjbkp2Y25NcElIdGNiaUFnSUNCUFltcGxZM1F1YTJWNWN5aGxjbkp2Y25NcExtWnZja1ZoWTJnb1puVnVZM1JwYjI0Z0tHNWhiV1VzSUdsdVpHVjRLU0I3WEc0Z0lDQWdJQ0IyWVhJZ1kyOXRjRzl1Wlc1MElEMGdkR2hwY3k1cGJuQjFkSE5iYm1GdFpWMDdYRzVjYmlBZ0lDQWdJR2xtSUNnaFkyOXRjRzl1Wlc1MEtTQjdYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25XVzkxSUdGeVpTQjBjbmxwYm1jZ2RHOGdkWEJrWVhSbElHRnVJR2x1Y0hWMElIUm9ZWFFnWkc5bGN5QnViM1FnWlhocGMzUnpMaUJXWlhKcFpua2daWEp5YjNKeklHOWlhbVZqZENCM2FYUm9JR2x1Y0hWMElHNWhiV1Z6TGlBbklDc2dTbE5QVGk1emRISnBibWRwWm5rb1pYSnliM0p6S1NrN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lIWmhjaUJoY21keklEMGdXM3RjYmlBZ0lDQWdJQ0FnWDJselZtRnNhV1E2SUdaaGJITmxMRnh1SUNBZ0lDQWdJQ0JmYzJWeWRtVnlSWEp5YjNJNklHVnljbTl5YzF0dVlXMWxYVnh1SUNBZ0lDQWdmVjA3WEc0Z0lDQWdJQ0JqYjIxd2IyNWxiblF1YzJWMFUzUmhkR1V1WVhCd2JIa29ZMjl0Y0c5dVpXNTBMQ0JoY21kektUdGNiaUFnSUNCOUxtSnBibVFvZEdocGN5a3BPMXh1SUNCOUxGeHVYRzRnSUdaaGFXeFRkV0p0YVhRNklHWjFibU4wYVc5dUlDaGxjbkp2Y25NcElIdGNiaUFnSUNCMGFHbHpMblZ3WkdGMFpVbHVjSFYwYzFkcGRHaEZjbkp2Y2lobGNuSnZjbk1wTzF4dUlDQWdJSFJvYVhNdWMyVjBVM1JoZEdVb2UxeHVJQ0FnSUNBZ2FYTlRkV0p0YVhSMGFXNW5PaUJtWVd4elpWeHVJQ0FnSUgwcE8xeHVJQ0FnSUhSb2FYTXVjSEp2Y0hNdWIyNUZjbkp2Y2lobGNuSnZjbk1wTzF4dUlDQWdJSFJvYVhNdWNISnZjSE11YjI1VGRXSnRhWFIwWldRb0tUdGNiaUFnZlN4Y2JseHVJQ0F2THlCVWNtRjJaWEp6WlNCMGFHVWdZMmhwYkdSeVpXNGdZVzVrSUdOb2FXeGtjbVZ1SUc5bUlHTm9hV3hrY21WdUlIUnZJR1pwYm1SY2JpQWdMeThnWVd4c0lHbHVjSFYwY3lCaWVTQmphR1ZqYTJsdVp5QjBhR1VnYm1GdFpTQndjbTl3TGlCTllYbGlaU0JrYnlCaElHSmxkSFJsY2x4dUlDQXZMeUJqYUdWamF5Qm9aWEpsWEc0Z0lISmxaMmx6ZEdWeVNXNXdkWFJ6T2lCbWRXNWpkR2x2YmlBb1kyaHBiR1J5Wlc0cElIdGNiaUFnSUNCU1pXRmpkQzVEYUdsc1pISmxiaTVtYjNKRllXTm9LR05vYVd4a2NtVnVMQ0JtZFc1amRHbHZiaUFvWTJocGJHUXBJSHRjYmx4dUlDQWdJQ0FnYVdZZ0tHTm9hV3hrSUNZbUlHTm9hV3hrTG5CeWIzQnpJQ1ltSUdOb2FXeGtMbkJ5YjNCekxtNWhiV1VwSUh0Y2JpQWdJQ0FnSUNBZ1kyaHBiR1F1Y0hKdmNITXVYMkYwZEdGamFGUnZSbTl5YlNBOUlIUm9hWE11WVhSMFlXTm9WRzlHYjNKdE8xeHVJQ0FnSUNBZ0lDQmphR2xzWkM1d2NtOXdjeTVmWkdWMFlXTm9Sbkp2YlVadmNtMGdQU0IwYUdsekxtUmxkR0ZqYUVaeWIyMUdiM0p0TzF4dUlDQWdJQ0FnSUNCamFHbHNaQzV3Y205d2N5NWZkbUZzYVdSaGRHVWdQU0IwYUdsekxuWmhiR2xrWVhSbE8xeHVJQ0FnSUNBZ0lDQmphR2xzWkM1d2NtOXdjeTVmYVhOR2IzSnRSR2x6WVdKc1pXUWdQU0IwYUdsekxtbHpSbTl5YlVScGMyRmliR1ZrTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9ZMmhwYkdRZ0ppWWdZMmhwYkdRdWNISnZjSE1nSmlZZ1kyaHBiR1F1Y0hKdmNITXVZMmhwYkdSeVpXNHBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXlaV2RwYzNSbGNrbHVjSFYwY3loamFHbHNaQzV3Y205d2N5NWphR2xzWkhKbGJpazdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQjlMbUpwYm1Rb2RHaHBjeWtwTzF4dUlDQjlMRnh1WEc0Z0lHbHpSbTl5YlVScGMyRmliR1ZrT2lCbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjSEp2Y0hNdVpHbHpZV0pzWldRN1hHNGdJSDBzWEc1Y2JpQWdaMlYwUTNWeWNtVnVkRlpoYkhWbGN6b2dablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQlBZbXBsWTNRdWEyVjVjeWgwYUdsekxtbHVjSFYwY3lrdWNtVmtkV05sS0daMWJtTjBhVzl1SUNoa1lYUmhMQ0J1WVcxbEtTQjdYRzRnSUNBZ0lDQjJZWElnWTI5dGNHOXVaVzUwSUQwZ2RHaHBjeTVwYm5CMWRITmJibUZ0WlYwN1hHNGdJQ0FnSUNCa1lYUmhXMjVoYldWZElEMGdZMjl0Y0c5dVpXNTBMbk4wWVhSbExsOTJZV3gxWlR0Y2JpQWdJQ0FnSUhKbGRIVnliaUJrWVhSaE8xeHVJQ0FnSUgwdVltbHVaQ2gwYUdsektTd2dlMzBwTzF4dUlDQjlMRnh1WEc0Z0lITmxkRVp2Y20xUWNtbHpkR2x1WlRvZ1puVnVZM1JwYjI0Z0tHbHpVSEpwYzNScGJtVXBJSHRjYmlBZ0lDQjJZWElnYVc1d2RYUnpJRDBnZEdocGN5NXBibkIxZEhNN1hHNGdJQ0FnZG1GeUlHbHVjSFYwUzJWNWN5QTlJRTlpYW1WamRDNXJaWGx6S0dsdWNIVjBjeWs3WEc1Y2JpQWdJQ0F2THlCSmRHVnlZWFJsSUhSb2NtOTFaMmdnWldGamFDQmpiMjF3YjI1bGJuUWdZVzVrSUhObGRDQnBkQ0JoY3lCd2NtbHpkR2x1WlZ4dUlDQWdJQzh2SUc5eUlGd2laR2x5ZEhsY0lpNWNiaUFnSUNCcGJuQjFkRXRsZVhNdVptOXlSV0ZqYUNobWRXNWpkR2x2YmlBb2JtRnRaU3dnYVc1a1pYZ3BJSHRjYmlBZ0lDQWdJSFpoY2lCamIyMXdiMjVsYm5RZ1BTQnBibkIxZEhOYmJtRnRaVjA3WEc0Z0lDQWdJQ0JqYjIxd2IyNWxiblF1YzJWMFUzUmhkR1VvZTF4dUlDQWdJQ0FnSUNCZmFYTlFjbWx6ZEdsdVpUb2dhWE5RY21semRHbHVaVnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmUzVpYVc1a0tIUm9hWE1wS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJWYzJVZ2RHaGxJR0pwYm1SbFpDQjJZV3gxWlhNZ1lXNWtJSFJvWlNCaFkzUjFZV3dnYVc1d2RYUWdkbUZzZFdVZ2RHOWNiaUFnTHk4Z2RtRnNhV1JoZEdVZ2RHaGxJR2x1Y0hWMElHRnVaQ0J6WlhRZ2FYUnpJSE4wWVhSbExpQlVhR1Z1SUdOb1pXTnJJSFJvWlZ4dUlDQXZMeUJ6ZEdGMFpTQnZaaUIwYUdVZ1ptOXliU0JwZEhObGJHWmNiaUFnZG1Gc2FXUmhkR1U2SUdaMWJtTjBhVzl1SUNoamIyMXdiMjVsYm5RcElIdGNibHh1SUNBZ0lDOHZJRlJ5YVdkblpYSWdiMjVEYUdGdVoyVmNiaUFnSUNCcFppQW9kR2hwY3k1emRHRjBaUzVqWVc1RGFHRnVaMlVwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSEp2Y0hNdWIyNURhR0Z1WjJVb2RHaHBjeTVuWlhSRGRYSnlaVzUwVm1Gc2RXVnpLQ2twTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNnaFkyOXRjRzl1Wlc1MExuQnliM0J6TG5KbGNYVnBjbVZrSUNZbUlDRmpiMjF3YjI1bGJuUXVYM1poYkdsa1lYUnBiMjV6S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnVW5WdUlIUm9jbTkxWjJnZ2RHaGxJSFpoYkdsa1lYUnBiMjV6TENCemNHeHBkQ0IwYUdWdElIVndJR0Z1WkNCallXeHNYRzRnSUNBZ0x5OGdkR2hsSUhaaGJHbGtZWFJ2Y2lCSlJpQjBhR1Z5WlNCcGN5QmhJSFpoYkhWbElHOXlJR2wwSUdseklISmxjWFZwY21Wa1hHNGdJQ0FnZG1GeUlHbHpWbUZzYVdRZ1BTQjBhR2x6TG5KMWJsWmhiR2xrWVhScGIyNG9ZMjl0Y0c5dVpXNTBLVHRjYmx4dUlDQWdJR052YlhCdmJtVnVkQzV6WlhSVGRHRjBaU2g3WEc0Z0lDQWdJQ0JmYVhOV1lXeHBaRG9nYVhOV1lXeHBaQ3hjYmlBZ0lDQWdJRjl6WlhKMlpYSkZjbkp2Y2pvZ2JuVnNiRnh1SUNBZ0lIMHNJSFJvYVhNdWRtRnNhV1JoZEdWR2IzSnRLVHRjYmx4dUlDQjlMRnh1WEc0Z0lISjFibFpoYkdsa1lYUnBiMjQ2SUdaMWJtTjBhVzl1SUNoamIyMXdiMjVsYm5RcElIdGNiaUFnSUNCMllYSWdhWE5XWVd4cFpDQTlJSFJ5ZFdVN1hHNGdJQ0FnYVdZZ0tHTnZiWEJ2Ym1WdWRDNWZkbUZzYVdSaGRHbHZibk11YkdWdVozUm9JQ1ltSUNoamIyMXdiMjVsYm5RdWNISnZjSE11Y21WeGRXbHlaV1FnZkh3Z1kyOXRjRzl1Wlc1MExuTjBZWFJsTGw5MllXeDFaU0FoUFQwZ0p5Y3BLU0I3WEc0Z0lDQWdJQ0JqYjIxd2IyNWxiblF1WDNaaGJHbGtZWFJwYjI1ekxuTndiR2wwS0Njc0p5a3VabTl5UldGamFDaG1kVzVqZEdsdmJpQW9kbUZzYVdSaGRHbHZiaWtnZTF4dUlDQWdJQ0FnSUNCMllYSWdZWEpuY3lBOUlIWmhiR2xrWVhScGIyNHVjM0JzYVhRb0p6b25LVHRjYmlBZ0lDQWdJQ0FnZG1GeUlIWmhiR2xrWVhSbFRXVjBhRzlrSUQwZ1lYSm5jeTV6YUdsbWRDZ3BPMXh1SUNBZ0lDQWdJQ0JoY21keklEMGdZWEpuY3k1dFlYQW9ablZ1WTNScGIyNGdLR0Z5WnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJ5ZVNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdTbE5QVGk1d1lYSnpaU2hoY21jcE8xeHVJQ0FnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQmhjbWM3SUM4dklFbDBJR2x6SUdFZ2MzUnlhVzVuSUdsbUlHbDBJR05oYmlCdWIzUWdjR0Z5YzJVZ2FYUmNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQmhjbWR6SUQwZ1cyTnZiWEJ2Ym1WdWRDNXpkR0YwWlM1ZmRtRnNkV1ZkTG1OdmJtTmhkQ2hoY21kektUdGNiaUFnSUNBZ0lDQWdhV1lnS0NGMllXeHBaR0YwYVc5dVVuVnNaWE5iZG1Gc2FXUmhkR1ZOWlhSb2IyUmRLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkR2IzSnRjM2tnWkc5bGN5QnViM1FnYUdGMlpTQjBhR1VnZG1Gc2FXUmhkR2x2YmlCeWRXeGxPaUFuSUNzZ2RtRnNhV1JoZEdWTlpYUm9iMlFwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lHbG1JQ2doZG1Gc2FXUmhkR2x2YmxKMWJHVnpXM1poYkdsa1lYUmxUV1YwYUc5a1hTNWhjSEJzZVNoMGFHbHpMbWRsZEVOMWNuSmxiblJXWVd4MVpYTW9LU3dnWVhKbmN5a3BJSHRjYmlBZ0lDQWdJQ0FnSUNCcGMxWmhiR2xrSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwdVltbHVaQ2gwYUdsektTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJwYzFaaGJHbGtPMXh1SUNCOUxGeHVYRzRnSUM4dklGWmhiR2xrWVhSbElIUm9aU0JtYjNKdElHSjVJR2R2YVc1bklIUm9jbTkxWjJnZ1lXeHNJR05vYVd4a0lHbHVjSFYwSUdOdmJYQnZibVZ1ZEhOY2JpQWdMeThnWVc1a0lHTm9aV05ySUhSb1pXbHlJSE4wWVhSbFhHNGdJSFpoYkdsa1lYUmxSbTl5YlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lIWmhjaUJoYkd4SmMxWmhiR2xrSUQwZ2RISjFaVHRjYmlBZ0lDQjJZWElnYVc1d2RYUnpJRDBnZEdocGN5NXBibkIxZEhNN1hHNGdJQ0FnZG1GeUlHbHVjSFYwUzJWNWN5QTlJRTlpYW1WamRDNXJaWGx6S0dsdWNIVjBjeWs3WEc1Y2JpQWdJQ0F2THlCWFpTQnVaV1ZrSUdFZ1kyRnNiR0poWTJzZ1lYTWdkMlVnWVhKbElIWmhiR2xrWVhScGJtY2dZV3hzSUdsdWNIVjBjeUJoWjJGcGJpNGdWR2hwY3lCM2FXeHNYRzRnSUNBZ0x5OGdjblZ1SUhkb1pXNGdkR2hsSUd4aGMzUWdZMjl0Y0c5dVpXNTBJR2hoY3lCelpYUWdhWFJ6SUhOMFlYUmxYRzRnSUNBZ2RtRnlJRzl1Vm1Gc2FXUmhkR2x2YmtOdmJYQnNaWFJsSUQwZ1puVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdhVzV3ZFhSTFpYbHpMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNGdLRzVoYldVcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0NGcGJuQjFkSE5iYm1GdFpWMHVjM1JoZEdVdVgybHpWbUZzYVdRcElIdGNiaUFnSUNBZ0lDQWdJQ0JoYkd4SmMxWmhiR2xrSUQwZ1ptRnNjMlU3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwdVltbHVaQ2gwYUdsektTazdYRzVjYmlBZ0lDQWdJSFJvYVhNdWMyVjBVM1JoZEdVb2UxeHVJQ0FnSUNBZ0lDQnBjMVpoYkdsa09pQmhiR3hKYzFaaGJHbGtYRzRnSUNBZ0lDQjlLVHRjYmx4dUlDQWdJQ0FnYVdZZ0tHRnNiRWx6Vm1Gc2FXUXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXdjbTl3Y3k1dmJsWmhiR2xrS0NrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbkJ5YjNCekxtOXVTVzUyWVd4cFpDZ3BPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0F2THlCVVpXeHNJSFJvWlNCbWIzSnRJSFJvWVhRZ2FYUWdZMkZ1SUhOMFlYSjBJSFJ2SUhSeWFXZG5aWElnWTJoaGJtZGxJR1YyWlc1MGMxeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSVGRHRjBaU2g3WEc0Z0lDQWdJQ0FnSUdOaGJrTm9ZVzVuWlRvZ2RISjFaVnh1SUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0I5TG1KcGJtUW9kR2hwY3lrN1hHNWNiaUFnSUNBdkx5QlNkVzRnZG1Gc2FXUmhkR2x2YmlCaFoyRnBiaUJwYmlCallYTmxJR0ZtWm1WamRHVmtJR0o1SUc5MGFHVnlJR2x1Y0hWMGN5NGdWR2hsWEc0Z0lDQWdMeThnYkdGemRDQmpiMjF3YjI1bGJuUWdkbUZzYVdSaGRHVmtJSGRwYkd3Z2NuVnVJSFJvWlNCdmJsWmhiR2xrWVhScGIyNURiMjF3YkdWMFpTQmpZV3hzWW1GamExeHVJQ0FnSUdsdWNIVjBTMlY1Y3k1bWIzSkZZV05vS0daMWJtTjBhVzl1SUNodVlXMWxMQ0JwYm1SbGVDa2dlMXh1SUNBZ0lDQWdkbUZ5SUdOdmJYQnZibVZ1ZENBOUlHbHVjSFYwYzF0dVlXMWxYVHRjYmlBZ0lDQWdJSFpoY2lCcGMxWmhiR2xrSUQwZ2RHaHBjeTV5ZFc1V1lXeHBaR0YwYVc5dUtHTnZiWEJ2Ym1WdWRDazdYRzRnSUNBZ0lDQmpiMjF3YjI1bGJuUXVjMlYwVTNSaGRHVW9lMXh1SUNBZ0lDQWdJQ0JmYVhOV1lXeHBaRG9nYVhOV1lXeHBaQ3hjYmlBZ0lDQWdJQ0FnWDNObGNuWmxja1Z5Y205eU9pQnVkV3hzWEc0Z0lDQWdJQ0I5TENCcGJtUmxlQ0E5UFQwZ2FXNXdkWFJMWlhsekxteGxibWQwYUNBdElERWdQeUJ2YmxaaGJHbGtZWFJwYjI1RGIyMXdiR1YwWlNBNklHNTFiR3dwTzF4dUlDQWdJSDB1WW1sdVpDaDBhR2x6S1NrN1hHNWNiaUFnSUNBdkx5QkpaaUIwYUdWeVpTQmhjbVVnYm04Z2FXNXdkWFJ6TENCelpYUWdjM1JoZEdVZ2QyaGxjbVVnWm05eWJTQnBjeUJ5WldGa2VTQjBieUIwY21sbloyVnlYRzRnSUNBZ0x5OGdZMmhoYm1kbElHVjJaVzUwTGlCT1pYY2dhVzV3ZFhSeklHMXBaMmgwSUdKbElHRmtaR1ZrSUd4aGRHVnlYRzRnSUNBZ2FXWWdLQ0ZwYm5CMWRFdGxlWE11YkdWdVozUm9JQ1ltSUhSb2FYTXVhWE5OYjNWdWRHVmtLQ2twSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9lMXh1SUNBZ0lDQWdJQ0JqWVc1RGFHRnVaMlU2SUhSeWRXVmNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0F2THlCTlpYUm9iMlFnY0hWMElHOXVJR1ZoWTJnZ2FXNXdkWFFnWTI5dGNHOXVaVzUwSUhSdklISmxaMmx6ZEdWeVhHNGdJQzh2SUdsMGMyVnNaaUIwYnlCMGFHVWdabTl5YlZ4dUlDQmhkSFJoWTJoVWIwWnZjbTA2SUdaMWJtTjBhVzl1SUNoamIyMXdiMjVsYm5RcElIdGNiaUFnSUNCMGFHbHpMbWx1Y0hWMGMxdGpiMjF3YjI1bGJuUXVjSEp2Y0hNdWJtRnRaVjBnUFNCamIyMXdiMjVsYm5RN1hHNGdJQ0FnZEdocGN5NXRiMlJsYkZ0amIyMXdiMjVsYm5RdWNISnZjSE11Ym1GdFpWMGdQU0JqYjIxd2IyNWxiblF1YzNSaGRHVXVYM1poYkhWbE8xeHVJQ0FnSUhSb2FYTXVkbUZzYVdSaGRHVW9ZMjl0Y0c5dVpXNTBLVHRjYmlBZ2ZTeGNibHh1SUNBdkx5Qk5aWFJvYjJRZ2NIVjBJRzl1SUdWaFkyZ2dhVzV3ZFhRZ1kyOXRjRzl1Wlc1MElIUnZJSFZ1Y21WbmFYTjBaWEpjYmlBZ0x5OGdhWFJ6Wld4bUlHWnliMjBnZEdobElHWnZjbTFjYmlBZ1pHVjBZV05vUm5KdmJVWnZjbTA2SUdaMWJtTjBhVzl1SUNoamIyMXdiMjVsYm5RcElIdGNiaUFnSUNCa1pXeGxkR1VnZEdocGN5NXBibkIxZEhOYlkyOXRjRzl1Wlc1MExuQnliM0J6TG01aGJXVmRPMXh1SUNBZ0lHUmxiR1YwWlNCMGFHbHpMbTF2WkdWc1cyTnZiWEJ2Ym1WdWRDNXdjbTl3Y3k1dVlXMWxYVHRjYmlBZ2ZTeGNiaUFnY21WdVpHVnlPaUJtZFc1amRHbHZiaUFvS1NCN1hHNWNiaUFnSUNCeVpYUjFjbTRnVW1WaFkzUXVSRTlOTG1admNtMG9lMXh1SUNBZ0lDQWdJQ0J2YmxOMVltMXBkRG9nZEdocGN5NXpkV0p0YVhRc1hHNGdJQ0FnSUNBZ0lHTnNZWE56VG1GdFpUb2dkR2hwY3k1d2NtOXdjeTVqYkdGemMwNWhiV1ZjYmlBZ0lDQWdJSDBzWEc0Z0lDQWdJQ0IwYUdsekxuQnliM0J6TG1Ob2FXeGtjbVZ1WEc0Z0lDQWdLVHRjYmx4dUlDQjlYRzU5S1R0Y2JseHVhV1lnS0NGbmJHOWlZV3d1Wlhod2IzSjBjeUFtSmlBaFoyeHZZbUZzTG0xdlpIVnNaU0FtSmlBb0lXZHNiMkpoYkM1a1pXWnBibVVnZkh3Z0lXZHNiMkpoYkM1a1pXWnBibVV1WVcxa0tTa2dlMXh1SUNCbmJHOWlZV3d1Um05eWJYTjVJRDBnUm05eWJYTjVPMXh1ZlZ4dVhHNXRiMlIxYkdVdVpYaHdiM0owY3lBOUlFWnZjbTF6ZVR0Y2JpSmRmUT09IiwidmFyIGNzcmZUb2tlblNlbGVjdG9yID0gdHlwZW9mIGRvY3VtZW50ICE9ICd1bmRlZmluZWQnID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwiY3NyZi10b2tlblwiXScpIDogbnVsbDtcblxudmFyIHRvVVJMRW5jb2RlZCA9IGZ1bmN0aW9uIChlbGVtZW50LCBrZXksIGxpc3QpIHtcbiAgdmFyIGxpc3QgPSBsaXN0IHx8IFtdO1xuICBpZiAodHlwZW9mIChlbGVtZW50KSA9PSAnb2JqZWN0Jykge1xuICAgIGZvciAodmFyIGlkeCBpbiBlbGVtZW50KVxuICAgICAgdG9VUkxFbmNvZGVkKGVsZW1lbnRbaWR4XSwga2V5ID8ga2V5ICsgJ1snICsgaWR4ICsgJ10nIDogaWR4LCBsaXN0KTtcbiAgfSBlbHNlIHtcbiAgICBsaXN0LnB1c2goa2V5ICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGVsZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gbGlzdC5qb2luKCcmJyk7XG59O1xuXG52YXIgcmVxdWVzdCA9IGZ1bmN0aW9uIChtZXRob2QsIHVybCwgZGF0YSwgY29udGVudFR5cGUsIGhlYWRlcnMpIHtcblxuICB2YXIgY29udGVudFR5cGUgPSBjb250ZW50VHlwZSA9PT0gJ3VybGVuY29kZWQnID8gJ2FwcGxpY2F0aW9uLycgKyBjb250ZW50VHlwZS5yZXBsYWNlKCd1cmxlbmNvZGVkJywgJ3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIDogJ2FwcGxpY2F0aW9uL2pzb24nO1xuICBkYXRhID0gY29udGVudFR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJyA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogdG9VUkxFbmNvZGVkKGRhdGEpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsLCB0cnVlKTtcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGNvbnRlbnRUeXBlKTtcblxuICAgICAgaWYgKCEhY3NyZlRva2VuU2VsZWN0b3IgJiYgISFjc3JmVG9rZW5TZWxlY3Rvci5jb250ZW50KSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdYLUNTUkYtVG9rZW4nLCBjc3JmVG9rZW5TZWxlY3Rvci5jb250ZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHBhc3NlZCBoZWFkZXJzXG4gICAgICBPYmplY3Qua2V5cyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChoZWFkZXIpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyLCBoZWFkZXJzW2hlYWRlcl0pO1xuICAgICAgfSk7XG5cbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXNwb25zZSA9IHhoci5yZXNwb25zZVRleHQgPyBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpIDogbnVsbDtcbiAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID49IDIwMCAmJiB4aHIuc3RhdHVzIDwgMzAwKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB4aHIuc2VuZChkYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhcnJheXNEaWZmZXI6IGZ1bmN0aW9uIChhcnJheUEsIGFycmF5Qikge1xuICAgIHZhciBpc0RpZmZlcmVudCA9IGZhbHNlO1xuICAgIGlmIChhcnJheUEubGVuZ3RoICE9PSBhcnJheUIubGVuZ3RoKSB7XG4gICAgICBpc0RpZmZlcmVudCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFycmF5QS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICBpZiAoaXRlbSAhPT0gYXJyYXlCW2luZGV4XSkge1xuICAgICAgICAgIGlzRGlmZmVyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpc0RpZmZlcmVudDtcbiAgfSxcbiAgYWpheDoge1xuICAgIHBvc3Q6IHJlcXVlc3QuYmluZChudWxsLCAnUE9TVCcpLFxuICAgIHB1dDogcmVxdWVzdC5iaW5kKG51bGwsICdQVVQnKVxuICB9XG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lMMVZ6WlhKekwyTm9jbWx6ZEdsaGJtRnNabTl1YVM5RWIyTjFiV1Z1ZEhNdlpHVjJMMlp2Y20xemVTMXlaV0ZqZEM5emNtTXZkWFJwYkhNdWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk5VmMyVnljeTlqYUhKcGMzUnBZVzVoYkdadmJta3ZSRzlqZFcxbGJuUnpMMlJsZGk5bWIzSnRjM2t0Y21WaFkzUXZjM0pqTDNWMGFXeHpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFbEJRVWtzYVVKQlFXbENMRWRCUVVjc1QwRkJUeXhSUVVGUkxFbEJRVWtzVjBGQlZ5eEhRVUZITEZGQlFWRXNRMEZCUXl4aFFVRmhMRU5CUVVNc2VVSkJRWGxDTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN08wRkJSV3hJTEVsQlFVa3NXVUZCV1N4SFFVRkhMRlZCUVZVc1QwRkJUeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVTdSVUZETDBNc1NVRkJTU3hKUVVGSkxFZEJRVWNzU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXp0RlFVTjBRaXhKUVVGSkxGRkJRVkVzVDBGQlR5eERRVUZETEVsQlFVa3NVVUZCVVN4RlFVRkZPMGxCUTJoRExFdEJRVXNzU1VGQlNTeEhRVUZITEVsQlFVa3NUMEZCVHp0TlFVTnlRaXhaUVVGWkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEhRVUZITEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBkQlEzWkZMRTFCUVUwN1NVRkRUQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRIUVVOd1JEdEZRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU40UWl4RFFVRkRMRU5CUVVNN08wRkJSVVlzU1VGQlNTeFBRVUZQTEVkQlFVY3NWVUZCVlN4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRkxFbEJRVWtzUlVGQlJTeFhRVUZYTEVWQlFVVXNUMEZCVHl4RlFVRkZPenRGUVVVdlJDeEpRVUZKTEZkQlFWY3NSMEZCUnl4WFFVRlhMRXRCUVVzc1dVRkJXU3hIUVVGSExHTkJRV01zUjBGQlJ5eFhRVUZYTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmxCUVZrc1JVRkJSU3gxUWtGQmRVSXNRMEZCUXl4SFFVRkhMR3RDUVVGclFpeERRVUZETzBGQlEzQktMRVZCUVVVc1NVRkJTU3hIUVVGSExGZEJRVmNzUzBGQlN5eHJRa0ZCYTBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6czdSVUZGZEVZc1QwRkJUeXhKUVVGSkxFOUJRVThzUTBGQlF5eFZRVUZWTEU5QlFVOHNSVUZCUlN4TlFVRk5MRVZCUVVVN1NVRkROVU1zU1VGQlNUdE5RVU5HTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1kwRkJZeXhGUVVGRkxFTkJRVU03VFVGREwwSXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMDFCUXpWQ0xFZEJRVWNzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhSUVVGUkxFVkJRVVVzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRCUVVONlJDeE5RVUZOTEVkQlFVY3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eGpRVUZqTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN08wMUJSV3hFTEVsQlFVa3NRMEZCUXl4RFFVRkRMR2xDUVVGcFFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eFBRVUZQTEVWQlFVVTdVVUZEZEVRc1IwRkJSeXhEUVVGRExHZENRVUZuUWl4RFFVRkRMR05CUVdNc1JVRkJSU3hwUWtGQmFVSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVONFJTeFBRVUZQTzBGQlExQTdPMDFCUlUwc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hOUVVGTkxFVkJRVVU3VVVGRE4wTXNSMEZCUnl4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNSVUZCUlN4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU4wUkN4UFFVRlBMRU5CUVVNc1EwRkJRenM3VFVGRlNDeEhRVUZITEVOQlFVTXNhMEpCUVd0Q0xFZEJRVWNzV1VGQldUdEJRVU16UXl4UlFVRlJMRWxCUVVrc1IwRkJSeXhEUVVGRExGVkJRVlVzUzBGQlN5eERRVUZETEVWQlFVVTdPMVZCUlhoQ0xFbEJRVWs3V1VGRFJpeEpRVUZKTEZGQlFWRXNSMEZCUnl4SFFVRkhMRU5CUVVNc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRmxCUVZrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU4wUlN4SlFVRkpMRWRCUVVjc1EwRkJReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhGUVVGRk8yTkJRM3BETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRoUVVOdVFpeE5RVUZOTzJOQlEwd3NUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8yRkJRMnhDTzFkQlEwWXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSVHRaUVVOV0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjBRaXhYUVVGWE96dFRRVVZHTzA5QlEwWXNRMEZCUXp0TlFVTkdMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEYUVJc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdE5RVU5XTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOWU8wZEJRMFlzUTBGQlF5eERRVUZETzBGQlEwd3NRMEZCUXl4RFFVRkRPenRCUVVWR0xFMUJRVTBzUTBGQlF5eFBRVUZQTEVkQlFVYzdSVUZEWml4WlFVRlpMRVZCUVVVc1ZVRkJWU3hOUVVGTkxFVkJRVVVzVFVGQlRTeEZRVUZGTzBsQlEzUkRMRWxCUVVrc1YwRkJWeXhIUVVGSExFdEJRVXNzUTBGQlF6dEpRVU40UWl4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFdEJRVXNzVFVGQlRTeERRVUZETEUxQlFVMHNSVUZCUlR0TlFVTnVReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETzB0QlEzQkNMRTFCUVUwN1RVRkRUQ3hOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEZWQlFWVXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSVHRSUVVOd1F5eEpRVUZKTEVsQlFVa3NTMEZCU3l4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVU3VlVGRE1VSXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJRenRUUVVOd1FqdFBRVU5HTEVOQlFVTXNRMEZCUXp0TFFVTktPMGxCUTBRc1QwRkJUeXhYUVVGWExFTkJRVU03UjBGRGNFSTdSVUZEUkN4SlFVRkpMRVZCUVVVN1NVRkRTaXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRE8wbEJRMmhETEVkQlFVY3NSVUZCUlN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTTdSMEZETDBJN1EwRkRSaXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lkbUZ5SUdOemNtWlViMnRsYmxObGJHVmpkRzl5SUQwZ2RIbHdaVzltSUdSdlkzVnRaVzUwSUNFOUlDZDFibVJsWm1sdVpXUW5JRDhnWkc5amRXMWxiblF1Y1hWbGNubFRaV3hsWTNSdmNpZ25iV1YwWVZ0dVlXMWxQVndpWTNOeVppMTBiMnRsYmx3aVhTY3BJRG9nYm5Wc2JEdGNibHh1ZG1GeUlIUnZWVkpNUlc1amIyUmxaQ0E5SUdaMWJtTjBhVzl1SUNobGJHVnRaVzUwTENCclpYa3NJR3hwYzNRcElIdGNiaUFnZG1GeUlHeHBjM1FnUFNCc2FYTjBJSHg4SUZ0ZE8xeHVJQ0JwWmlBb2RIbHdaVzltSUNobGJHVnRaVzUwS1NBOVBTQW5iMkpxWldOMEp5a2dlMXh1SUNBZ0lHWnZjaUFvZG1GeUlHbGtlQ0JwYmlCbGJHVnRaVzUwS1Z4dUlDQWdJQ0FnZEc5VlVreEZibU52WkdWa0tHVnNaVzFsYm5SYmFXUjRYU3dnYTJWNUlEOGdhMlY1SUNzZ0oxc25JQ3NnYVdSNElDc2dKMTBuSURvZ2FXUjRMQ0JzYVhOMEtUdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnNhWE4wTG5CMWMyZ29hMlY1SUNzZ0p6MG5JQ3NnWlc1amIyUmxWVkpKUTI5dGNHOXVaVzUwS0dWc1pXMWxiblFwS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnYkdsemRDNXFiMmx1S0NjbUp5azdYRzU5TzF4dVhHNTJZWElnY21WeGRXVnpkQ0E5SUdaMWJtTjBhVzl1SUNodFpYUm9iMlFzSUhWeWJDd2daR0YwWVN3Z1kyOXVkR1Z1ZEZSNWNHVXNJR2hsWVdSbGNuTXBJSHRjYmx4dUlDQjJZWElnWTI5dWRHVnVkRlI1Y0dVZ1BTQmpiMjUwWlc1MFZIbHdaU0E5UFQwZ0ozVnliR1Z1WTI5a1pXUW5JRDhnSjJGd2NHeHBZMkYwYVc5dUx5Y2dLeUJqYjI1MFpXNTBWSGx3WlM1eVpYQnNZV05sS0NkMWNteGxibU52WkdWa0p5d2dKM2d0ZDNkM0xXWnZjbTB0ZFhKc1pXNWpiMlJsWkNjcElEb2dKMkZ3Y0d4cFkyRjBhVzl1TDJwemIyNG5PMXh1SUNCa1lYUmhJRDBnWTI5dWRHVnVkRlI1Y0dVZ1BUMDlJQ2RoY0hCc2FXTmhkR2x2Ymk5cWMyOXVKeUEvSUVwVFQwNHVjM1J5YVc1bmFXWjVLR1JoZEdFcElEb2dkRzlWVWt4RmJtTnZaR1ZrS0dSaGRHRXBPMXh1WEc0Z0lISmxkSFZ5YmlCdVpYY2dVSEp2YldselpTaG1kVzVqZEdsdmJpQW9jbVZ6YjJ4MlpTd2djbVZxWldOMEtTQjdYRzRnSUNBZ2RISjVJSHRjYmlBZ0lDQWdJSFpoY2lCNGFISWdQU0J1WlhjZ1dFMU1TSFIwY0ZKbGNYVmxjM1FvS1R0Y2JpQWdJQ0FnSUhob2NpNXZjR1Z1S0cxbGRHaHZaQ3dnZFhKc0xDQjBjblZsS1R0Y2JpQWdJQ0FnSUhob2NpNXpaWFJTWlhGMVpYTjBTR1ZoWkdWeUtDZEJZMk5sY0hRbkxDQW5ZWEJ3YkdsallYUnBiMjR2YW5OdmJpY3BPMXh1SUNBZ0lDQWdlR2h5TG5ObGRGSmxjWFZsYzNSSVpXRmtaWElvSjBOdmJuUmxiblF0Vkhsd1pTY3NJR052Ym5SbGJuUlVlWEJsS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLQ0VoWTNOeVpsUnZhMlZ1VTJWc1pXTjBiM0lnSmlZZ0lTRmpjM0ptVkc5clpXNVRaV3hsWTNSdmNpNWpiMjUwWlc1MEtTQjdYRzRnSUNBZ0lDQWdJSGhvY2k1elpYUlNaWEYxWlhOMFNHVmhaR1Z5S0NkWUxVTlRVa1l0Vkc5clpXNG5MQ0JqYzNKbVZHOXJaVzVUWld4bFkzUnZjaTVqYjI1MFpXNTBLVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnTHk4Z1FXUmtJSEJoYzNObFpDQm9aV0ZrWlhKelhHNGdJQ0FnSUNCUFltcGxZM1F1YTJWNWN5aG9aV0ZrWlhKektTNW1iM0pGWVdOb0tHWjFibU4wYVc5dUlDaG9aV0ZrWlhJcElIdGNiaUFnSUNBZ0lDQWdlR2h5TG5ObGRGSmxjWFZsYzNSSVpXRmtaWElvYUdWaFpHVnlMQ0JvWldGa1pYSnpXMmhsWVdSbGNsMHBPMXh1SUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0FnSUhob2NpNXZibkpsWVdSNWMzUmhkR1ZqYUdGdVoyVWdQU0JtZFc1amRHbHZiaUFvS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2g0YUhJdWNtVmhaSGxUZEdGMFpTQTlQVDBnTkNrZ2UxeHVYRzRnSUNBZ0lDQWdJQ0FnZEhKNUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGNpQnlaWE53YjI1elpTQTlJSGhvY2k1eVpYTndiMjV6WlZSbGVIUWdQeUJLVTA5T0xuQmhjbk5sS0hob2NpNXlaWE53YjI1elpWUmxlSFFwSURvZ2JuVnNiRHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2g0YUhJdWMzUmhkSFZ6SUQ0OUlESXdNQ0FtSmlCNGFISXVjM1JoZEhWeklEd2dNekF3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGMyOXNkbVVvY21WemNHOXVjMlVwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVnFaV04wS0hKbGMzQnZibk5sS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpXcGxZM1FvWlNrN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwN1hHNGdJQ0FnSUNCNGFISXVjMlZ1WkNoa1lYUmhLVHRjYmlBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdJQ0J5WldwbFkzUW9aU2s3WEc0Z0lDQWdmVnh1SUNCOUtUdGNibjA3WEc1Y2JtMXZaSFZzWlM1bGVIQnZjblJ6SUQwZ2UxeHVJQ0JoY25KaGVYTkVhV1ptWlhJNklHWjFibU4wYVc5dUlDaGhjbkpoZVVFc0lHRnljbUY1UWlrZ2UxeHVJQ0FnSUhaaGNpQnBjMFJwWm1abGNtVnVkQ0E5SUdaaGJITmxPMXh1SUNBZ0lHbG1JQ2hoY25KaGVVRXViR1Z1WjNSb0lDRTlQU0JoY25KaGVVSXViR1Z1WjNSb0tTQjdYRzRnSUNBZ0lDQnBjMFJwWm1abGNtVnVkQ0E5SUhSeWRXVTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdGeWNtRjVRUzVtYjNKRllXTm9LR1oxYm1OMGFXOXVJQ2hwZEdWdExDQnBibVJsZUNrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvYVhSbGJTQWhQVDBnWVhKeVlYbENXMmx1WkdWNFhTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdselJHbG1abVZ5Wlc1MElEMGdkSEoxWlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJwYzBScFptWmxjbVZ1ZER0Y2JpQWdmU3hjYmlBZ1lXcGhlRG9nZTF4dUlDQWdJSEJ2YzNRNklISmxjWFZsYzNRdVltbHVaQ2h1ZFd4c0xDQW5VRTlUVkNjcExGeHVJQ0FnSUhCMWREb2djbVZ4ZFdWemRDNWlhVzVrS0c1MWJHd3NJQ2RRVlZRbktWeHVJQ0I5WEc1OU8xeHVJbDE5IiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gICdpc1ZhbHVlJzogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSAnJztcbiAgfSxcbiAgJ2lzRW1haWwnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUubWF0Y2goL14oKChbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKFxcLihbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKSopfCgoXFx4MjIpKCgoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oKFtcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDdmXXxcXHgyMXxbXFx4MjMtXFx4NWJdfFtcXHg1ZC1cXHg3ZV18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfChcXFxcKFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZC1cXHg3Zl18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSkpKigoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oXFx4MjIpKSlAKCgoW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKVxcLikrKChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpJC9pKTtcbiAgfSxcbiAgJ2lzVHJ1ZSc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZTtcbiAgfSxcbiAgJ2lzTnVtZXJpYyc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG1hdGNoUmVzdWx0cyA9IHZhbHVlLm1hdGNoKC9bLStdPyhcXGQqWy5dKT9cXGQrLyk7XG4gICAgICBpZiAoISEgbWF0Y2hSZXN1bHRzKSB7XG4gICAgICAgIHJldHVybiBtYXRjaFJlc3VsdHNbMF0gPT0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICAnaXNBbHBoYSc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXRjaCgvXlthLXpBLVpdKyQvKTtcbiAgfSxcbiAgJ2lzV29yZHMnOiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUubWF0Y2goL15bYS16QS1aXFxzXSskLyk7XG4gIH0sXG4gICdpc1NwZWNpYWxXb3Jkcyc6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXRjaCgvXlthLXpBLVpcXHNcXHUwMEMwLVxcdTAxN0ZdKyQvKTtcbiAgfSxcbiAgaXNMZW5ndGg6IGZ1bmN0aW9uICh2YWx1ZSwgbWluLCBtYXgpIHtcbiAgICBpZiAobWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPj0gbWluICYmIHZhbHVlLmxlbmd0aCA8PSBtYXg7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPj0gbWluO1xuICB9LFxuICBlcXVhbHM6IGZ1bmN0aW9uICh2YWx1ZSwgZXFsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09IGVxbDtcbiAgfSxcbiAgZXF1YWxzRmllbGQ6IGZ1bmN0aW9uICh2YWx1ZSwgZmllbGQpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHRoaXNbZmllbGRdO1xuICB9XG59O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lMMVZ6WlhKekwyTm9jbWx6ZEdsaGJtRnNabTl1YVM5RWIyTjFiV1Z1ZEhNdlpHVjJMMlp2Y20xemVTMXlaV0ZqZEM5emNtTXZkbUZzYVdSaGRHbHZibEoxYkdWekxtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdlZYTmxjbk12WTJoeWFYTjBhV0Z1WVd4bWIyNXBMMFJ2WTNWdFpXNTBjeTlrWlhZdlptOXliWE41TFhKbFlXTjBMM055WXk5MllXeHBaR0YwYVc5dVVuVnNaWE11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUVUZCVFN4RFFVRkRMRTlCUVU4c1IwRkJSenRGUVVObUxGTkJRVk1zUlVGQlJTeFZRVUZWTEV0QlFVc3NSVUZCUlR0SlFVTXhRaXhQUVVGUExFdEJRVXNzUzBGQlN5eEZRVUZGTEVOQlFVTTdSMEZEY2tJN1JVRkRSQ3hUUVVGVExFVkJRVVVzVlVGQlZTeExRVUZMTEVWQlFVVTdTVUZETVVJc1QwRkJUeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEhrMFFrRkJlVFJDTEVOQlFVTXNRMEZCUXp0SFFVTXZOVUk3UlVGRFJDeFJRVUZSTEVWQlFVVXNWVUZCVlN4TFFVRkxMRVZCUVVVN1NVRkRla0lzVDBGQlR5eExRVUZMTEV0QlFVc3NTVUZCU1N4RFFVRkRPMGRCUTNaQ08wVkJRMFFzVjBGQlZ5eEZRVUZGTEZWQlFWVXNTMEZCU3l4RlFVRkZPMGxCUXpWQ0xFbEJRVWtzVDBGQlR5eExRVUZMTEV0QlFVc3NVVUZCVVN4RlFVRkZPMDFCUXpkQ0xFOUJRVThzU1VGQlNTeERRVUZETzB0QlEySXNUVUZCVFR0TlFVTk1MRWxCUVVrc1dVRkJXU3hIUVVGSExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF6dE5RVU53UkN4SlFVRkpMRU5CUVVNc1JVRkJSU3haUVVGWkxFVkJRVVU3VVVGRGJrSXNUMEZCVHl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETzA5QlEycERMRTFCUVUwN1VVRkRUQ3hQUVVGUExFdEJRVXNzUTBGQlF6dFBRVU5rTzB0QlEwWTdSMEZEUmp0RlFVTkVMRk5CUVZNc1JVRkJSU3hWUVVGVkxFdEJRVXNzUlVGQlJUdEpRVU14UWl4UFFVRlBMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdSMEZEYmtNN1JVRkRSQ3hUUVVGVExFVkJRVVVzVlVGQlZTeExRVUZMTEVWQlFVVTdTVUZETVVJc1QwRkJUeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMGRCUTNKRE8wVkJRMFFzWjBKQlFXZENMRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVU3U1VGRGFrTXNUMEZCVHl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExEUkNRVUUwUWl4RFFVRkRMRU5CUVVNN1IwRkRiRVE3UlVGRFJDeFJRVUZSTEVWQlFVVXNWVUZCVlN4TFFVRkxMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJUdEpRVU51UXl4SlFVRkpMRWRCUVVjc1MwRkJTeXhUUVVGVExFVkJRVVU3VFVGRGNrSXNUMEZCVHl4TFFVRkxMRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1EwRkJRenRMUVVOdVJEdEpRVU5FTEU5QlFVOHNTMEZCU3l4RFFVRkRMRTFCUVUwc1NVRkJTU3hIUVVGSExFTkJRVU03UjBGRE5VSTdSVUZEUkN4TlFVRk5MRVZCUVVVc1ZVRkJWU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTzBsQlF6VkNMRTlCUVU4c1MwRkJTeXhKUVVGSkxFZEJRVWNzUTBGQlF6dEhRVU55UWp0RlFVTkVMRmRCUVZjc1JVRkJSU3hWUVVGVkxFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVTdTVUZEYmtNc1QwRkJUeXhMUVVGTExFdEJRVXNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGRCUXpsQ08wTkJRMFlzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbTF2WkhWc1pTNWxlSEJ2Y25SeklEMGdlMXh1SUNBbmFYTldZV3gxWlNjNklHWjFibU4wYVc5dUlDaDJZV3gxWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIyWVd4MVpTQWhQVDBnSnljN1hHNGdJSDBzWEc0Z0lDZHBjMFZ0WVdsc0p6b2dablZ1WTNScGIyNGdLSFpoYkhWbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhaaGJIVmxMbTFoZEdOb0tDOWVLQ2dvVzJFdGVsMThYRnhrZkZzaEkxeGNKQ1VtSjF4Y0tseGNLMXhjTFZ4Y0x6MWNYRDljWEY1ZllIdGNYSHg5ZmwxOFcxeGNkVEF3UVRBdFhGeDFSRGRHUmx4Y2RVWTVNREF0WEZ4MVJrUkRSbHhjZFVaRVJqQXRYRngxUmtaRlJsMHBLeWhjWEM0b1cyRXRlbDE4WEZ4a2ZGc2hJMXhjSkNVbUoxeGNLbHhjSzF4Y0xWeGNMejFjWEQ5Y1hGNWZZSHRjWEh4OWZsMThXMXhjZFRBd1FUQXRYRngxUkRkR1JseGNkVVk1TURBdFhGeDFSa1JEUmx4Y2RVWkVSakF0WEZ4MVJrWkZSbDBwS3lrcUtYd29LRnhjZURJeUtTZ29LQ2hjWEhneU1IeGNYSGd3T1NrcUtGeGNlREJrWEZ4NE1HRXBLVDhvWEZ4NE1qQjhYRng0TURrcEt5ay9LQ2hiWEZ4NE1ERXRYRng0TURoY1hIZ3dZbHhjZURCalhGeDRNR1V0WEZ4NE1XWmNYSGczWmwxOFhGeDRNakY4VzF4Y2VESXpMVnhjZURWaVhYeGJYRng0TldRdFhGeDROMlZkZkZ0Y1hIVXdNRUV3TFZ4Y2RVUTNSa1pjWEhWR09UQXdMVnhjZFVaRVEwWmNYSFZHUkVZd0xWeGNkVVpHUlVaZEtYd29YRnhjWENoYlhGeDRNREV0WEZ4NE1EbGNYSGd3WWx4Y2VEQmpYRng0TUdRdFhGeDROMlpkZkZ0Y1hIVXdNRUV3TFZ4Y2RVUTNSa1pjWEhWR09UQXdMVnhjZFVaRVEwWmNYSFZHUkVZd0xWeGNkVVpHUlVaZEtTa3BLU29vS0NoY1hIZ3lNSHhjWEhnd09Ta3FLRnhjZURCa1hGeDRNR0VwS1Q4b1hGeDRNakI4WEZ4NE1Ea3BLeWsvS0Z4Y2VESXlLU2twUUNnb0tGdGhMWHBkZkZ4Y1pIeGJYRngxTURCQk1DMWNYSFZFTjBaR1hGeDFSamt3TUMxY1hIVkdSRU5HWEZ4MVJrUkdNQzFjWEhWR1JrVkdYU2w4S0NoYllTMTZYWHhjWEdSOFcxeGNkVEF3UVRBdFhGeDFSRGRHUmx4Y2RVWTVNREF0WEZ4MVJrUkRSbHhjZFVaRVJqQXRYRngxUmtaRlJsMHBLRnRoTFhwZGZGeGNaSHd0ZkZ4Y0xueGZmSDU4VzF4Y2RUQXdRVEF0WEZ4MVJEZEdSbHhjZFVZNU1EQXRYRngxUmtSRFJseGNkVVpFUmpBdFhGeDFSa1pGUmwwcEtpaGJZUzE2WFh4Y1hHUjhXMXhjZFRBd1FUQXRYRngxUkRkR1JseGNkVVk1TURBdFhGeDFSa1JEUmx4Y2RVWkVSakF0WEZ4MVJrWkZSbDBwS1NsY1hDNHBLeWdvVzJFdGVsMThXMXhjZFRBd1FUQXRYRngxUkRkR1JseGNkVVk1TURBdFhGeDFSa1JEUmx4Y2RVWkVSakF0WEZ4MVJrWkZSbDBwZkNnb1cyRXRlbDE4VzF4Y2RUQXdRVEF0WEZ4MVJEZEdSbHhjZFVZNU1EQXRYRngxUmtSRFJseGNkVVpFUmpBdFhGeDFSa1pGUmwwcEtGdGhMWHBkZkZ4Y1pId3RmRnhjTG54ZmZINThXMXhjZFRBd1FUQXRYRngxUkRkR1JseGNkVVk1TURBdFhGeDFSa1JEUmx4Y2RVWkVSakF0WEZ4MVJrWkZSbDBwS2loYllTMTZYWHhiWEZ4MU1EQkJNQzFjWEhWRU4wWkdYRngxUmprd01DMWNYSFZHUkVOR1hGeDFSa1JHTUMxY1hIVkdSa1ZHWFNrcEtTUXZhU2s3WEc0Z0lIMHNYRzRnSUNkcGMxUnlkV1VuT2lCbWRXNWpkR2x2YmlBb2RtRnNkV1VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkbUZzZFdVZ1BUMDlJSFJ5ZFdVN1hHNGdJSDBzWEc0Z0lDZHBjMDUxYldWeWFXTW5PaUJtZFc1amRHbHZiaUFvZG1Gc2RXVXBJSHRjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JSFpoYkhWbElEMDlQU0FuYm5WdFltVnlKeWtnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSFJ5ZFdVN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFpoY2lCdFlYUmphRkpsYzNWc2RITWdQU0IyWVd4MVpTNXRZWFJqYUNndld5MHJYVDhvWEZ4a0tsc3VYU2svWEZ4a0t5OHBPMXh1SUNBZ0lDQWdhV1lnS0NFaElHMWhkR05vVW1WemRXeDBjeWtnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYldGMFkyaFNaWE4xYkhSeld6QmRJRDA5SUhaaGJIVmxPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZTeGNiaUFnSjJselFXeHdhR0VuT2lCbWRXNWpkR2x2YmlBb2RtRnNkV1VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkbUZzZFdVdWJXRjBZMmdvTDE1YllTMTZRUzFhWFNza0x5azdYRzRnSUgwc1hHNGdJQ2RwYzFkdmNtUnpKem9nWm5WdVkzUnBiMjRnS0haaGJIVmxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIWmhiSFZsTG0xaGRHTm9LQzllVzJFdGVrRXRXbHhjYzEwckpDOHBPMXh1SUNCOUxGeHVJQ0FuYVhOVGNHVmphV0ZzVjI5eVpITW5PaUJtZFc1amRHbHZiaUFvZG1Gc2RXVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2RtRnNkV1V1YldGMFkyZ29MMTViWVMxNlFTMWFYRnh6WEZ4MU1EQkRNQzFjWEhVd01UZEdYU3NrTHlrN1hHNGdJSDBzWEc0Z0lHbHpUR1Z1WjNSb09pQm1kVzVqZEdsdmJpQW9kbUZzZFdVc0lHMXBiaXdnYldGNEtTQjdYRzRnSUNBZ2FXWWdLRzFoZUNBaFBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkbUZzZFdVdWJHVnVaM1JvSUQ0OUlHMXBiaUFtSmlCMllXeDFaUzVzWlc1bmRHZ2dQRDBnYldGNE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkbUZzZFdVdWJHVnVaM1JvSUQ0OUlHMXBianRjYmlBZ2ZTeGNiaUFnWlhGMVlXeHpPaUJtZFc1amRHbHZiaUFvZG1Gc2RXVXNJR1Z4YkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIyWVd4MVpTQTlQU0JsY1d3N1hHNGdJSDBzWEc0Z0lHVnhkV0ZzYzBacFpXeGtPaUJtZFc1amRHbHZiaUFvZG1Gc2RXVXNJR1pwWld4a0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhaaGJIVmxJRDA5UFNCMGFHbHpXMlpwWld4a1hUdGNiaUFnZlZ4dWZUdGNiaUpkZlE9PSJdfQ== diff --git a/package.json b/package.json index bf93fe2..7b29510 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "formsy-react", - "version": "0.8.0", + "version": "0.8.1", "description": "A form input builder and validator for React JS", "repository": { "type": "git", @@ -25,11 +25,11 @@ "gulp-uglify": "^0.3.1", "gulp-util": "^3.0.0", "phantomjs": "^1.9.12", - "reactify": "^0.15.2", + "reactify": "^1.1.0", "vinyl-source-stream": "^0.1.1", "watchify": "^2.1.1" }, "peerDependencies": { - "react": "^0.12.2" + "react": "^0.12.2 || ^0.13.1" } }