vitest 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9161,7 +9161,10 @@ async function VitestPlugin(options = {}, ctx = new Vitest()) {
9161
9161
  },
9162
9162
  async configResolved(viteConfig) {
9163
9163
  var _a, _b, _c, _d, _e;
9164
- options = deepMerge({}, configDefaults, viteConfig.test || {}, options);
9164
+ const viteConfigTest = viteConfig.test || {};
9165
+ if (viteConfigTest.watch === false)
9166
+ viteConfigTest.run = true;
9167
+ options = deepMerge({}, configDefaults, viteConfigTest, options);
9165
9168
  options.api = resolveApiConfig(options);
9166
9169
  options.watch = options.watch && !options.run;
9167
9170
  (_a = process.env).BASE_URL ?? (_a.BASE_URL = viteConfig.base);
@@ -9215,4 +9218,4 @@ async function createVitest(options, viteOverrides = {}) {
9215
9218
  }
9216
9219
 
9217
9220
  export { VitestPlugin as V, createVitest as c };
9218
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWIzYjA1MjE2LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0veW9jdG8tcXVldWVAMS4wLjAvbm9kZV9tb2R1bGVzL3lvY3RvLXF1ZXVlL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3AtbGltaXRANC4wLjAvbm9kZV9tb2R1bGVzL3AtbGltaXQvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcC1sb2NhdGVANi4wLjAvbm9kZV9tb2R1bGVzL3AtbG9jYXRlL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvY2F0ZS1wYXRoQDcuMC4wL25vZGVfbW9kdWxlcy9sb2NhdGUtcGF0aC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9maW5kLXVwQDYuMi4wL25vZGVfbW9kdWxlcy9maW5kLXVwL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvYXJyYXkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9lcnJuby5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3V0aWxzL2ZzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvcGF0aC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9pcy1leHRnbG9iQDIuMS4xL25vZGVfbW9kdWxlcy9pcy1leHRnbG9iL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2lzLWdsb2JANC4wLjMvbm9kZV9tb2R1bGVzL2lzLWdsb2IvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZ2xvYi1wYXJlbnRANS4xLjIvbm9kZV9tb2R1bGVzL2dsb2ItcGFyZW50L2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2JyYWNlc0AzLjAuMi9ub2RlX21vZHVsZXMvYnJhY2VzL2xpYi91dGlscy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9icmFjZXNAMy4wLjIvbm9kZV9tb2R1bGVzL2JyYWNlcy9saWIvc3RyaW5naWZ5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2lzLW51bWJlckA3LjAuMC9ub2RlX21vZHVsZXMvaXMtbnVtYmVyL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RvLXJlZ2V4LXJhbmdlQDUuMC4xL25vZGVfbW9kdWxlcy90by1yZWdleC1yYW5nZS9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9maWxsLXJhbmdlQDcuMC4xL25vZGVfbW9kdWxlcy9maWxsLXJhbmdlL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2JyYWNlc0AzLjAuMi9ub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9jb21waWxlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2JyYWNlc0AzLjAuMi9ub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9leHBhbmQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vYnJhY2VzQDMuMC4yL25vZGVfbW9kdWxlcy9icmFjZXMvbGliL2NvbnN0YW50cy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9icmFjZXNAMy4wLjIvbm9kZV9tb2R1bGVzL2JyYWNlcy9saWIvcGFyc2UuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vYnJhY2VzQDMuMC4yL25vZGVfbW9kdWxlcy9icmFjZXMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcGljb21hdGNoQDIuMy4wL25vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL2NvbnN0YW50cy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9waWNvbWF0Y2hAMi4zLjAvbm9kZV9tb2R1bGVzL3BpY29tYXRjaC9saWIvdXRpbHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcGljb21hdGNoQDIuMy4wL25vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL3NjYW4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcGljb21hdGNoQDIuMy4wL25vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL3BhcnNlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3BpY29tYXRjaEAyLjMuMC9ub2RlX21vZHVsZXMvcGljb21hdGNoL2xpYi9waWNvbWF0Y2guanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcGljb21hdGNoQDIuMy4wL25vZGVfbW9kdWxlcy9waWNvbWF0Y2gvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbWljcm9tYXRjaEA0LjAuNC9ub2RlX21vZHVsZXMvbWljcm9tYXRjaC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3V0aWxzL3BhdHRlcm4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbWVyZ2UyQDEuNC4xL25vZGVfbW9kdWxlcy9tZXJnZTIvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9zdHJlYW0uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9zdHJpbmcuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L21hbmFnZXJzL3Rhc2tzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvbWFuYWdlcnMvcGF0dGVybnMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQG5vZGVsaWIrZnMuc3RhdEAyLjAuNC9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc3RhdC9vdXQvcHJvdmlkZXJzL2FzeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnN0YXRAMi4wLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L3Byb3ZpZGVycy9zeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnN0YXRAMi4wLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L2FkYXB0ZXJzL2ZzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnN0YXRAMi4wLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L3NldHRpbmdzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnN0YXRAMi4wLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3F1ZXVlLW1pY3JvdGFza0AxLjIuMi9ub2RlX21vZHVsZXMvcXVldWUtbWljcm90YXNrL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3J1bi1wYXJhbGxlbEAxLjIuMC9ub2RlX21vZHVsZXMvcnVuLXBhcmFsbGVsL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnNjYW5kaXJAMi4xLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnNjYW5kaXIvb3V0L2NvbnN0YW50cy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC91dGlscy9mcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC91dGlscy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9wcm92aWRlcnMvY29tbW9uLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnNjYW5kaXJAMi4xLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnNjYW5kaXIvb3V0L3Byb3ZpZGVycy9hc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9wcm92aWRlcnMvc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9hZGFwdGVycy9mcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9zZXR0aW5ncy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9yZXVzaWZ5QDEuMC40L25vZGVfbW9kdWxlcy9yZXVzaWZ5L3JldXNpZnkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdHFAMS4xMC4xL25vZGVfbW9kdWxlcy9mYXN0cS9xdWV1ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL2NvbW1vbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL3JlYWRlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL2FzeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLndhbGtAMS4yLjYvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLndhbGsvb3V0L3Byb3ZpZGVycy9hc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9wcm92aWRlcnMvc3RyZWFtLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLndhbGtAMS4yLjYvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLndhbGsvb3V0L3JlYWRlcnMvc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9wcm92aWRlcnMvc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9zZXR0aW5ncy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3JlYWRlcnMvcmVhZGVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcmVhZGVycy9zdHJlYW0uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvbWF0Y2hlcnMvbWF0Y2hlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9tYXRjaGVycy9wYXJ0aWFsLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL2ZpbHRlcnMvZGVlcC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9maWx0ZXJzL2VudHJ5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL2ZpbHRlcnMvZXJyb3IuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvdHJhbnNmb3JtZXJzL2VudHJ5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL3Byb3ZpZGVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL2FzeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL3N0cmVhbS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3JlYWRlcnMvc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9zeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvc2V0dGluZ3MuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9pbmRleC5qcyIsIi4uLy4uL3ZpdGUtbm9kZS9zcmMvZXh0ZXJuYWxpemUudHMiLCIuLi8uLi92aXRlLW5vZGUvc3JjL3NlcnZlci50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvbWFuYWdlci50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY292ZXJhZ2UudHMiLCIuLi9zcmMvbm9kZS9yZXBvcnRlcnMvcmVuZGVyZXJzL3V0aWxzLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL2Jhc2UudHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vYW5zaS1lc2NhcGVzQDUuMC4wL25vZGVfbW9kdWxlcy9hbnNpLWVzY2FwZXMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcmVzdG9yZS1jdXJzb3JANC4wLjAvbm9kZV9tb2R1bGVzL3Jlc3RvcmUtY3Vyc29yL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NsaS1jdXJzb3JANC4wLjAvbm9kZV9tb2R1bGVzL2NsaS1jdXJzb3IvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vd3JhcC1hbnNpQDguMC4xL25vZGVfbW9kdWxlcy93cmFwLWFuc2kvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbG9nLXVwZGF0ZUA1LjAuMC9ub2RlX21vZHVsZXMvbG9nLXVwZGF0ZS9pbmRleC5qcyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy9yZW5kZXJlcnMvbGlzdFJlbmRlcmVyLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL2RlZmF1bHQudHMiLCIuLi9zcmMvbm9kZS9yZXBvcnRlcnMvcmVuZGVyZXJzL2RvdFJlbmRlcmVyLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL2RvdC50cyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy9qc29uLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL3ZlcmJvc2UudHMiLCIuLi9zcmMvbm9kZS9yZXBvcnRlcnMvdXRpbHMvaW5kZW50ZWQtbG9nZ2VyLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL3RhcC50cyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy9qdW5pdC50cyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy90YXAtZmxhdC50cyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy9pbmRleC50cyIsIi4uL3NyYy9ub2RlL3Bvb2wudHMiLCIuLi9zcmMvbm9kZS9zdGF0ZS50cyIsIi4uL3NyYy9ub2RlL2NvbmZpZy50cyIsIi4uL3NyYy9ub2RlL2NvcmUudHMiLCIuLi9zcmMvbm9kZS9wbHVnaW5zL2dsb2JhbFNldHVwLnRzIiwiLi4vc3JjL25vZGUvcGx1Z2lucy9tb2NrLnRzIiwiLi4vc3JjL25vZGUvcGx1Z2lucy9lbnZSZXBsYWNlci50cyIsIi4uL3NyYy9ub2RlL3BsdWdpbnMvaW5kZXgudHMiLCIuLi9zcmMvbm9kZS9jcmVhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkhvdyBpdCB3b3JrczpcbmB0aGlzLiNoZWFkYCBpcyBhbiBpbnN0YW5jZSBvZiBgTm9kZWAgd2hpY2gga2VlcHMgdHJhY2sgb2YgaXRzIGN1cnJlbnQgdmFsdWUgYW5kIG5lc3RzIGFub3RoZXIgaW5zdGFuY2Ugb2YgYE5vZGVgIHRoYXQga2VlcHMgdGhlIHZhbHVlIHRoYXQgY29tZXMgYWZ0ZXIgaXQuIFdoZW4gYSB2YWx1ZSBpcyBwcm92aWRlZCB0byBgLmVucXVldWUoKWAsIHRoZSBjb2RlIG5lZWRzIHRvIGl0ZXJhdGUgdGhyb3VnaCBgdGhpcy4jaGVhZGAsIGdvaW5nIGRlZXBlciBhbmQgZGVlcGVyIHRvIGZpbmQgdGhlIGxhc3QgdmFsdWUuIEhvd2V2ZXIsIGl0ZXJhdGluZyB0aHJvdWdoIGV2ZXJ5IHNpbmdsZSBpdGVtIGlzIHNsb3cuIFRoaXMgcHJvYmxlbSBpcyBzb2x2ZWQgYnkgc2F2aW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBsYXN0IHZhbHVlIGFzIGB0aGlzLiN0YWlsYCBzbyB0aGF0IGl0IGNhbiByZWZlcmVuY2UgaXQgdG8gYWRkIGEgbmV3IHZhbHVlLlxuKi9cblxuY2xhc3MgTm9kZSB7XG5cdHZhbHVlO1xuXHRuZXh0O1xuXG5cdGNvbnN0cnVjdG9yKHZhbHVlKSB7XG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFF1ZXVlIHtcblx0I2hlYWQ7XG5cdCN0YWlsO1xuXHQjc2l6ZTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmNsZWFyKCk7XG5cdH1cblxuXHRlbnF1ZXVlKHZhbHVlKSB7XG5cdFx0Y29uc3Qgbm9kZSA9IG5ldyBOb2RlKHZhbHVlKTtcblxuXHRcdGlmICh0aGlzLiNoZWFkKSB7XG5cdFx0XHR0aGlzLiN0YWlsLm5leHQgPSBub2RlO1xuXHRcdFx0dGhpcy4jdGFpbCA9IG5vZGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuI2hlYWQgPSBub2RlO1xuXHRcdFx0dGhpcy4jdGFpbCA9IG5vZGU7XG5cdFx0fVxuXG5cdFx0dGhpcy4jc2l6ZSsrO1xuXHR9XG5cblx0ZGVxdWV1ZSgpIHtcblx0XHRjb25zdCBjdXJyZW50ID0gdGhpcy4jaGVhZDtcblx0XHRpZiAoIWN1cnJlbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLiNoZWFkID0gdGhpcy4jaGVhZC5uZXh0O1xuXHRcdHRoaXMuI3NpemUtLTtcblx0XHRyZXR1cm4gY3VycmVudC52YWx1ZTtcblx0fVxuXG5cdGNsZWFyKCkge1xuXHRcdHRoaXMuI2hlYWQgPSB1bmRlZmluZWQ7XG5cdFx0dGhpcy4jdGFpbCA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLiNzaXplID0gMDtcblx0fVxuXG5cdGdldCBzaXplKCkge1xuXHRcdHJldHVybiB0aGlzLiNzaXplO1xuXHR9XG5cblx0KiBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcblx0XHRsZXQgY3VycmVudCA9IHRoaXMuI2hlYWQ7XG5cblx0XHR3aGlsZSAoY3VycmVudCkge1xuXHRcdFx0eWllbGQgY3VycmVudC52YWx1ZTtcblx0XHRcdGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG5cdFx0fVxuXHR9XG59XG4iLCJpbXBvcnQgUXVldWUgZnJvbSAneW9jdG8tcXVldWUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwTGltaXQoY29uY3VycmVuY3kpIHtcblx0aWYgKCEoKE51bWJlci5pc0ludGVnZXIoY29uY3VycmVuY3kpIHx8IGNvbmN1cnJlbmN5ID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpICYmIGNvbmN1cnJlbmN5ID4gMCkpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBgY29uY3VycmVuY3lgIHRvIGJlIGEgbnVtYmVyIGZyb20gMSBhbmQgdXAnKTtcblx0fVxuXG5cdGNvbnN0IHF1ZXVlID0gbmV3IFF1ZXVlKCk7XG5cdGxldCBhY3RpdmVDb3VudCA9IDA7XG5cblx0Y29uc3QgbmV4dCA9ICgpID0+IHtcblx0XHRhY3RpdmVDb3VudC0tO1xuXG5cdFx0aWYgKHF1ZXVlLnNpemUgPiAwKSB7XG5cdFx0XHRxdWV1ZS5kZXF1ZXVlKCkoKTtcblx0XHR9XG5cdH07XG5cblx0Y29uc3QgcnVuID0gYXN5bmMgKGZuLCByZXNvbHZlLCBhcmdzKSA9PiB7XG5cdFx0YWN0aXZlQ291bnQrKztcblxuXHRcdGNvbnN0IHJlc3VsdCA9IChhc3luYyAoKSA9PiBmbiguLi5hcmdzKSkoKTtcblxuXHRcdHJlc29sdmUocmVzdWx0KTtcblxuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCByZXN1bHQ7XG5cdFx0fSBjYXRjaCB7fVxuXG5cdFx0bmV4dCgpO1xuXHR9O1xuXG5cdGNvbnN0IGVucXVldWUgPSAoZm4sIHJlc29sdmUsIGFyZ3MpID0+IHtcblx0XHRxdWV1ZS5lbnF1ZXVlKHJ1bi5iaW5kKHVuZGVmaW5lZCwgZm4sIHJlc29sdmUsIGFyZ3MpKTtcblxuXHRcdChhc3luYyAoKSA9PiB7XG5cdFx0XHQvLyBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIHdhaXQgdW50aWwgdGhlIG5leHQgbWljcm90YXNrIGJlZm9yZSBjb21wYXJpbmdcblx0XHRcdC8vIGBhY3RpdmVDb3VudGAgdG8gYGNvbmN1cnJlbmN5YCwgYmVjYXVzZSBgYWN0aXZlQ291bnRgIGlzIHVwZGF0ZWQgYXN5bmNocm9ub3VzbHlcblx0XHRcdC8vIHdoZW4gdGhlIHJ1biBmdW5jdGlvbiBpcyBkZXF1ZXVlZCBhbmQgY2FsbGVkLiBUaGUgY29tcGFyaXNvbiBpbiB0aGUgaWYtc3RhdGVtZW50XG5cdFx0XHQvLyBuZWVkcyB0byBoYXBwZW4gYXN5bmNocm9ub3VzbHkgYXMgd2VsbCB0byBnZXQgYW4gdXAtdG8tZGF0ZSB2YWx1ZSBmb3IgYGFjdGl2ZUNvdW50YC5cblx0XHRcdGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuXG5cdFx0XHRpZiAoYWN0aXZlQ291bnQgPCBjb25jdXJyZW5jeSAmJiBxdWV1ZS5zaXplID4gMCkge1xuXHRcdFx0XHRxdWV1ZS5kZXF1ZXVlKCkoKTtcblx0XHRcdH1cblx0XHR9KSgpO1xuXHR9O1xuXG5cdGNvbnN0IGdlbmVyYXRvciA9IChmbiwgLi4uYXJncykgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG5cdFx0ZW5xdWV1ZShmbiwgcmVzb2x2ZSwgYXJncyk7XG5cdH0pO1xuXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGdlbmVyYXRvciwge1xuXHRcdGFjdGl2ZUNvdW50OiB7XG5cdFx0XHRnZXQ6ICgpID0+IGFjdGl2ZUNvdW50LFxuXHRcdH0sXG5cdFx0cGVuZGluZ0NvdW50OiB7XG5cdFx0XHRnZXQ6ICgpID0+IHF1ZXVlLnNpemUsXG5cdFx0fSxcblx0XHRjbGVhclF1ZXVlOiB7XG5cdFx0XHR2YWx1ZTogKCkgPT4ge1xuXHRcdFx0XHRxdWV1ZS5jbGVhcigpO1xuXHRcdFx0fSxcblx0XHR9LFxuXHR9KTtcblxuXHRyZXR1cm4gZ2VuZXJhdG9yO1xufVxuIiwiaW1wb3J0IHBMaW1pdCBmcm9tICdwLWxpbWl0JztcblxuY2xhc3MgRW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdGNvbnN0cnVjdG9yKHZhbHVlKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XG5cdH1cbn1cblxuLy8gVGhlIGlucHV0IGNhbiBhbHNvIGJlIGEgcHJvbWlzZSwgc28gd2UgYXdhaXQgaXQuXG5jb25zdCB0ZXN0RWxlbWVudCA9IGFzeW5jIChlbGVtZW50LCB0ZXN0ZXIpID0+IHRlc3Rlcihhd2FpdCBlbGVtZW50KTtcblxuLy8gVGhlIGlucHV0IGNhbiBhbHNvIGJlIGEgcHJvbWlzZSwgc28gd2UgYFByb21pc2UuYWxsKClgIHRoZW0gYm90aC5cbmNvbnN0IGZpbmRlciA9IGFzeW5jIGVsZW1lbnQgPT4ge1xuXHRjb25zdCB2YWx1ZXMgPSBhd2FpdCBQcm9taXNlLmFsbChlbGVtZW50KTtcblx0aWYgKHZhbHVlc1sxXSA9PT0gdHJ1ZSkge1xuXHRcdHRocm93IG5ldyBFbmRFcnJvcih2YWx1ZXNbMF0pO1xuXHR9XG5cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcExvY2F0ZShcblx0aXRlcmFibGUsXG5cdHRlc3Rlcixcblx0e1xuXHRcdGNvbmN1cnJlbmN5ID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuXHRcdHByZXNlcnZlT3JkZXIgPSB0cnVlLFxuXHR9ID0ge30sXG4pIHtcblx0Y29uc3QgbGltaXQgPSBwTGltaXQoY29uY3VycmVuY3kpO1xuXG5cdC8vIFN0YXJ0IGFsbCB0aGUgcHJvbWlzZXMgY29uY3VycmVudGx5IHdpdGggb3B0aW9uYWwgbGltaXQuXG5cdGNvbnN0IGl0ZW1zID0gWy4uLml0ZXJhYmxlXS5tYXAoZWxlbWVudCA9PiBbZWxlbWVudCwgbGltaXQodGVzdEVsZW1lbnQsIGVsZW1lbnQsIHRlc3RlcildKTtcblxuXHQvLyBDaGVjayB0aGUgcHJvbWlzZXMgZWl0aGVyIHNlcmlhbGx5IG9yIGNvbmN1cnJlbnRseS5cblx0Y29uc3QgY2hlY2tMaW1pdCA9IHBMaW1pdChwcmVzZXJ2ZU9yZGVyID8gMSA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG5cblx0dHJ5IHtcblx0XHRhd2FpdCBQcm9taXNlLmFsbChpdGVtcy5tYXAoZWxlbWVudCA9PiBjaGVja0xpbWl0KGZpbmRlciwgZWxlbWVudCkpKTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRpZiAoZXJyb3IgaW5zdGFuY2VvZiBFbmRFcnJvcikge1xuXHRcdFx0cmV0dXJuIGVycm9yLnZhbHVlO1xuXHRcdH1cblxuXHRcdHRocm93IGVycm9yO1xuXHR9XG59XG4iLCJpbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBmcywge3Byb21pc2VzIGFzIGZzUHJvbWlzZXN9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBMb2NhdGUgZnJvbSAncC1sb2NhdGUnO1xuXG5jb25zdCB0eXBlTWFwcGluZ3MgPSB7XG5cdGRpcmVjdG9yeTogJ2lzRGlyZWN0b3J5Jyxcblx0ZmlsZTogJ2lzRmlsZScsXG59O1xuXG5mdW5jdGlvbiBjaGVja1R5cGUodHlwZSkge1xuXHRpZiAodHlwZSBpbiB0eXBlTWFwcGluZ3MpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZSBzcGVjaWZpZWQ6ICR7dHlwZX1gKTtcbn1cblxuY29uc3QgbWF0Y2hUeXBlID0gKHR5cGUsIHN0YXQpID0+IHR5cGUgPT09IHVuZGVmaW5lZCB8fCBzdGF0W3R5cGVNYXBwaW5nc1t0eXBlXV0oKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvY2F0ZVBhdGgoXG5cdHBhdGhzLFxuXHR7XG5cdFx0Y3dkID0gcHJvY2Vzcy5jd2QoKSxcblx0XHR0eXBlID0gJ2ZpbGUnLFxuXHRcdGFsbG93U3ltbGlua3MgPSB0cnVlLFxuXHRcdGNvbmN1cnJlbmN5LFxuXHRcdHByZXNlcnZlT3JkZXIsXG5cdH0gPSB7fSxcbikge1xuXHRjaGVja1R5cGUodHlwZSk7XG5cblx0Y29uc3Qgc3RhdEZ1bmN0aW9uID0gYWxsb3dTeW1saW5rcyA/IGZzUHJvbWlzZXMuc3RhdCA6IGZzUHJvbWlzZXMubHN0YXQ7XG5cblx0cmV0dXJuIHBMb2NhdGUocGF0aHMsIGFzeW5jIHBhdGhfID0+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3Qgc3RhdCA9IGF3YWl0IHN0YXRGdW5jdGlvbihwYXRoLnJlc29sdmUoY3dkLCBwYXRoXykpO1xuXHRcdFx0cmV0dXJuIG1hdGNoVHlwZSh0eXBlLCBzdGF0KTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0sIHtjb25jdXJyZW5jeSwgcHJlc2VydmVPcmRlcn0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYXRlUGF0aFN5bmMoXG5cdHBhdGhzLFxuXHR7XG5cdFx0Y3dkID0gcHJvY2Vzcy5jd2QoKSxcblx0XHR0eXBlID0gJ2ZpbGUnLFxuXHRcdGFsbG93U3ltbGlua3MgPSB0cnVlLFxuXHR9ID0ge30sXG4pIHtcblx0Y2hlY2tUeXBlKHR5cGUpO1xuXG5cdGNvbnN0IHN0YXRGdW5jdGlvbiA9IGFsbG93U3ltbGlua3MgPyBmcy5zdGF0U3luYyA6IGZzLmxzdGF0U3luYztcblxuXHRmb3IgKGNvbnN0IHBhdGhfIG9mIHBhdGhzKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHN0YXQgPSBzdGF0RnVuY3Rpb24ocGF0aC5yZXNvbHZlKGN3ZCwgcGF0aF8pKTtcblxuXHRcdFx0aWYgKG1hdGNoVHlwZSh0eXBlLCBzdGF0KSkge1xuXHRcdFx0XHRyZXR1cm4gcGF0aF87XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7fVxuXHR9XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHtsb2NhdGVQYXRoLCBsb2NhdGVQYXRoU3luY30gZnJvbSAnbG9jYXRlLXBhdGgnO1xuXG5leHBvcnQgY29uc3QgZmluZFVwU3RvcCA9IFN5bWJvbCgnZmluZFVwU3RvcCcpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFVwTXVsdGlwbGUobmFtZSwgb3B0aW9ucyA9IHt9KSB7XG5cdGxldCBkaXJlY3RvcnkgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5jd2QgfHwgJycpO1xuXHRjb25zdCB7cm9vdH0gPSBwYXRoLnBhcnNlKGRpcmVjdG9yeSk7XG5cdGNvbnN0IHN0b3BBdCA9IHBhdGgucmVzb2x2ZShkaXJlY3RvcnksIG9wdGlvbnMuc3RvcEF0IHx8IHJvb3QpO1xuXHRjb25zdCBsaW1pdCA9IG9wdGlvbnMubGltaXQgfHwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuXHRjb25zdCBwYXRocyA9IFtuYW1lXS5mbGF0KCk7XG5cblx0Y29uc3QgcnVuTWF0Y2hlciA9IGFzeW5jIGxvY2F0ZU9wdGlvbnMgPT4ge1xuXHRcdGlmICh0eXBlb2YgbmFtZSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0cmV0dXJuIGxvY2F0ZVBhdGgocGF0aHMsIGxvY2F0ZU9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZvdW5kUGF0aCA9IGF3YWl0IG5hbWUobG9jYXRlT3B0aW9ucy5jd2QpO1xuXHRcdGlmICh0eXBlb2YgZm91bmRQYXRoID09PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuIGxvY2F0ZVBhdGgoW2ZvdW5kUGF0aF0sIGxvY2F0ZU9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmb3VuZFBhdGg7XG5cdH07XG5cblx0Y29uc3QgbWF0Y2hlcyA9IFtdO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG5cdHdoaWxlICh0cnVlKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3Bcblx0XHRjb25zdCBmb3VuZFBhdGggPSBhd2FpdCBydW5NYXRjaGVyKHsuLi5vcHRpb25zLCBjd2Q6IGRpcmVjdG9yeX0pO1xuXG5cdFx0aWYgKGZvdW5kUGF0aCA9PT0gZmluZFVwU3RvcCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0aWYgKGZvdW5kUGF0aCkge1xuXHRcdFx0bWF0Y2hlcy5wdXNoKHBhdGgucmVzb2x2ZShkaXJlY3RvcnksIGZvdW5kUGF0aCkpO1xuXHRcdH1cblxuXHRcdGlmIChkaXJlY3RvcnkgPT09IHN0b3BBdCB8fCBtYXRjaGVzLmxlbmd0aCA+PSBsaW1pdCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0ZGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lKGRpcmVjdG9yeSk7XG5cdH1cblxuXHRyZXR1cm4gbWF0Y2hlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRVcE11bHRpcGxlU3luYyhuYW1lLCBvcHRpb25zID0ge30pIHtcblx0bGV0IGRpcmVjdG9yeSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLmN3ZCB8fCAnJyk7XG5cdGNvbnN0IHtyb290fSA9IHBhdGgucGFyc2UoZGlyZWN0b3J5KTtcblx0Y29uc3Qgc3RvcEF0ID0gb3B0aW9ucy5zdG9wQXQgfHwgcm9vdDtcblx0Y29uc3QgbGltaXQgPSBvcHRpb25zLmxpbWl0IHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcblx0Y29uc3QgcGF0aHMgPSBbbmFtZV0uZmxhdCgpO1xuXG5cdGNvbnN0IHJ1bk1hdGNoZXIgPSBsb2NhdGVPcHRpb25zID0+IHtcblx0XHRpZiAodHlwZW9mIG5hbWUgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHJldHVybiBsb2NhdGVQYXRoU3luYyhwYXRocywgbG9jYXRlT3B0aW9ucyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZm91bmRQYXRoID0gbmFtZShsb2NhdGVPcHRpb25zLmN3ZCk7XG5cdFx0aWYgKHR5cGVvZiBmb3VuZFBhdGggPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gbG9jYXRlUGF0aFN5bmMoW2ZvdW5kUGF0aF0sIGxvY2F0ZU9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmb3VuZFBhdGg7XG5cdH07XG5cblx0Y29uc3QgbWF0Y2hlcyA9IFtdO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG5cdHdoaWxlICh0cnVlKSB7XG5cdFx0Y29uc3QgZm91bmRQYXRoID0gcnVuTWF0Y2hlcih7Li4ub3B0aW9ucywgY3dkOiBkaXJlY3Rvcnl9KTtcblxuXHRcdGlmIChmb3VuZFBhdGggPT09IGZpbmRVcFN0b3ApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGlmIChmb3VuZFBhdGgpIHtcblx0XHRcdG1hdGNoZXMucHVzaChwYXRoLnJlc29sdmUoZGlyZWN0b3J5LCBmb3VuZFBhdGgpKTtcblx0XHR9XG5cblx0XHRpZiAoZGlyZWN0b3J5ID09PSBzdG9wQXQgfHwgbWF0Y2hlcy5sZW5ndGggPj0gbGltaXQpIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGRpcmVjdG9yeSA9IHBhdGguZGlybmFtZShkaXJlY3RvcnkpO1xuXHR9XG5cblx0cmV0dXJuIG1hdGNoZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kVXAobmFtZSwgb3B0aW9ucyA9IHt9KSB7XG5cdGNvbnN0IG1hdGNoZXMgPSBhd2FpdCBmaW5kVXBNdWx0aXBsZShuYW1lLCB7Li4ub3B0aW9ucywgbGltaXQ6IDF9KTtcblx0cmV0dXJuIG1hdGNoZXNbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kVXBTeW5jKG5hbWUsIG9wdGlvbnMgPSB7fSkge1xuXHRjb25zdCBtYXRjaGVzID0gZmluZFVwTXVsdGlwbGVTeW5jKG5hbWUsIHsuLi5vcHRpb25zLCBsaW1pdDogMX0pO1xuXHRyZXR1cm4gbWF0Y2hlc1swXTtcbn1cblxuZXhwb3J0IHtcblx0cGF0aEV4aXN0cyxcblx0cGF0aEV4aXN0c1N5bmMsXG59IGZyb20gJ3BhdGgtZXhpc3RzJztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zcGxpdFdoZW4gPSBleHBvcnRzLmZsYXR0ZW4gPSB2b2lkIDA7XG5mdW5jdGlvbiBmbGF0dGVuKGl0ZW1zKSB7XG4gICAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgoY29sbGVjdGlvbiwgaXRlbSkgPT4gW10uY29uY2F0KGNvbGxlY3Rpb24sIGl0ZW0pLCBbXSk7XG59XG5leHBvcnRzLmZsYXR0ZW4gPSBmbGF0dGVuO1xuZnVuY3Rpb24gc3BsaXRXaGVuKGl0ZW1zLCBwcmVkaWNhdGUpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbW11dO1xuICAgIGxldCBncm91cEluZGV4ID0gMDtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgaWYgKHByZWRpY2F0ZShpdGVtKSkge1xuICAgICAgICAgICAgZ3JvdXBJbmRleCsrO1xuICAgICAgICAgICAgcmVzdWx0W2dyb3VwSW5kZXhdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRbZ3JvdXBJbmRleF0ucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5zcGxpdFdoZW4gPSBzcGxpdFdoZW47XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNFbm9lbnRDb2RlRXJyb3IgPSB2b2lkIDA7XG5mdW5jdGlvbiBpc0Vub2VudENvZGVFcnJvcihlcnJvcikge1xuICAgIHJldHVybiBlcnJvci5jb2RlID09PSAnRU5PRU5UJztcbn1cbmV4cG9ydHMuaXNFbm9lbnRDb2RlRXJyb3IgPSBpc0Vub2VudENvZGVFcnJvcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMgPSB2b2lkIDA7XG5jbGFzcyBEaXJlbnRGcm9tU3RhdHMge1xuICAgIGNvbnN0cnVjdG9yKG5hbWUsIHN0YXRzKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuaXNCbG9ja0RldmljZSA9IHN0YXRzLmlzQmxvY2tEZXZpY2UuYmluZChzdGF0cyk7XG4gICAgICAgIHRoaXMuaXNDaGFyYWN0ZXJEZXZpY2UgPSBzdGF0cy5pc0NoYXJhY3RlckRldmljZS5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc0RpcmVjdG9yeSA9IHN0YXRzLmlzRGlyZWN0b3J5LmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzRklGTyA9IHN0YXRzLmlzRklGTy5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBzdGF0cy5pc0ZpbGUuYmluZChzdGF0cyk7XG4gICAgICAgIHRoaXMuaXNTb2NrZXQgPSBzdGF0cy5pc1NvY2tldC5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc1N5bWJvbGljTGluayA9IHN0YXRzLmlzU3ltYm9saWNMaW5rLmJpbmQoc3RhdHMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZURpcmVudEZyb21TdGF0cyhuYW1lLCBzdGF0cykge1xuICAgIHJldHVybiBuZXcgRGlyZW50RnJvbVN0YXRzKG5hbWUsIHN0YXRzKTtcbn1cbmV4cG9ydHMuY3JlYXRlRGlyZW50RnJvbVN0YXRzID0gY3JlYXRlRGlyZW50RnJvbVN0YXRzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlbW92ZUxlYWRpbmdEb3RTZWdtZW50ID0gZXhwb3J0cy5lc2NhcGUgPSBleHBvcnRzLm1ha2VBYnNvbHV0ZSA9IGV4cG9ydHMudW5peGlmeSA9IHZvaWQgMDtcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmNvbnN0IExFQURJTkdfRE9UX1NFR01FTlRfQ0hBUkFDVEVSU19DT1VOVCA9IDI7IC8vIC4vIG9yIC5cXFxcXG5jb25zdCBVTkVTQ0FQRURfR0xPQl9TWU1CT0xTX1JFID0gLyhcXFxcPykoWygpKj9bXFxde3x9XXxeIXxbIStAXSg/PVxcKCkpL2c7XG4vKipcbiAqIERlc2lnbmVkIHRvIHdvcmsgb25seSB3aXRoIHNpbXBsZSBwYXRoczogYGRpclxcXFxmaWxlYC5cbiAqL1xuZnVuY3Rpb24gdW5peGlmeShmaWxlcGF0aCkge1xuICAgIHJldHVybiBmaWxlcGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG59XG5leHBvcnRzLnVuaXhpZnkgPSB1bml4aWZ5O1xuZnVuY3Rpb24gbWFrZUFic29sdXRlKGN3ZCwgZmlsZXBhdGgpIHtcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKGN3ZCwgZmlsZXBhdGgpO1xufVxuZXhwb3J0cy5tYWtlQWJzb2x1dGUgPSBtYWtlQWJzb2x1dGU7XG5mdW5jdGlvbiBlc2NhcGUocGF0dGVybikge1xuICAgIHJldHVybiBwYXR0ZXJuLnJlcGxhY2UoVU5FU0NBUEVEX0dMT0JfU1lNQk9MU19SRSwgJ1xcXFwkMicpO1xufVxuZXhwb3J0cy5lc2NhcGUgPSBlc2NhcGU7XG5mdW5jdGlvbiByZW1vdmVMZWFkaW5nRG90U2VnbWVudChlbnRyeSkge1xuICAgIC8vIFdlIGRvIG5vdCB1c2UgYHN0YXJ0c1dpdGhgIGJlY2F1c2UgdGhpcyBpcyAxMHggc2xvd2VyIHRoYW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiBmb3Igc29tZSBjYXNlcy5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1zdHJpbmctc3RhcnRzLWVuZHMtd2l0aFxuICAgIGlmIChlbnRyeS5jaGFyQXQoMCkgPT09ICcuJykge1xuICAgICAgICBjb25zdCBzZWNvbmRDaGFyYWN0ZXJ5ID0gZW50cnkuY2hhckF0KDEpO1xuICAgICAgICBpZiAoc2Vjb25kQ2hhcmFjdGVyeSA9PT0gJy8nIHx8IHNlY29uZENoYXJhY3RlcnkgPT09ICdcXFxcJykge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnNsaWNlKExFQURJTkdfRE9UX1NFR01FTlRfQ0hBUkFDVEVSU19DT1VOVCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xufVxuZXhwb3J0cy5yZW1vdmVMZWFkaW5nRG90U2VnbWVudCA9IHJlbW92ZUxlYWRpbmdEb3RTZWdtZW50O1xuIiwiLyohXG4gKiBpcy1leHRnbG9iIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1leHRnbG9iPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzRXh0Z2xvYihzdHIpIHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnIHx8IHN0ciA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgbWF0Y2g7XG4gIHdoaWxlICgobWF0Y2ggPSAvKFxcXFwpLnwoW0A/ISsqXVxcKC4qXFwpKS9nLmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobWF0Y2hbMl0pIHJldHVybiB0cnVlO1xuICAgIHN0ciA9IHN0ci5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwiLyohXG4gKiBpcy1nbG9iIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1nbG9iPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG52YXIgaXNFeHRnbG9iID0gcmVxdWlyZSgnaXMtZXh0Z2xvYicpO1xudmFyIGNoYXJzID0geyAneyc6ICd9JywgJygnOiAnKScsICdbJzogJ10nfTtcbnZhciBzdHJpY3RDaGVjayA9IGZ1bmN0aW9uKHN0cikge1xuICBpZiAoc3RyWzBdID09PSAnIScpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgcGlwZUluZGV4ID0gLTI7XG4gIHZhciBjbG9zZVNxdWFyZUluZGV4ID0gLTI7XG4gIHZhciBjbG9zZUN1cmx5SW5kZXggPSAtMjtcbiAgdmFyIGNsb3NlUGFyZW5JbmRleCA9IC0yO1xuICB2YXIgYmFja1NsYXNoSW5kZXggPSAtMjtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIGlmIChzdHJbaW5kZXhdID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdHJbaW5kZXggKyAxXSA9PT0gJz8nICYmIC9bXFxdLispXS8udGVzdChzdHJbaW5kZXhdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNsb3NlU3F1YXJlSW5kZXggIT09IC0xICYmIHN0cltpbmRleF0gPT09ICdbJyAmJiBzdHJbaW5kZXggKyAxXSAhPT0gJ10nKSB7XG4gICAgICBpZiAoY2xvc2VTcXVhcmVJbmRleCA8IGluZGV4KSB7XG4gICAgICAgIGNsb3NlU3F1YXJlSW5kZXggPSBzdHIuaW5kZXhPZignXScsIGluZGV4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjbG9zZVNxdWFyZUluZGV4ID4gaW5kZXgpIHtcbiAgICAgICAgaWYgKGJhY2tTbGFzaEluZGV4ID09PSAtMSB8fCBiYWNrU2xhc2hJbmRleCA+IGNsb3NlU3F1YXJlSW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBiYWNrU2xhc2hJbmRleCA9IHN0ci5pbmRleE9mKCdcXFxcJywgaW5kZXgpO1xuICAgICAgICBpZiAoYmFja1NsYXNoSW5kZXggPT09IC0xIHx8IGJhY2tTbGFzaEluZGV4ID4gY2xvc2VTcXVhcmVJbmRleCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsb3NlQ3VybHlJbmRleCAhPT0gLTEgJiYgc3RyW2luZGV4XSA9PT0gJ3snICYmIHN0cltpbmRleCArIDFdICE9PSAnfScpIHtcbiAgICAgIGNsb3NlQ3VybHlJbmRleCA9IHN0ci5pbmRleE9mKCd9JywgaW5kZXgpO1xuICAgICAgaWYgKGNsb3NlQ3VybHlJbmRleCA+IGluZGV4KSB7XG4gICAgICAgIGJhY2tTbGFzaEluZGV4ID0gc3RyLmluZGV4T2YoJ1xcXFwnLCBpbmRleCk7XG4gICAgICAgIGlmIChiYWNrU2xhc2hJbmRleCA9PT0gLTEgfHwgYmFja1NsYXNoSW5kZXggPiBjbG9zZUN1cmx5SW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbG9zZVBhcmVuSW5kZXggIT09IC0xICYmIHN0cltpbmRleF0gPT09ICcoJyAmJiBzdHJbaW5kZXggKyAxXSA9PT0gJz8nICYmIC9bOiE9XS8udGVzdChzdHJbaW5kZXggKyAyXSkgJiYgc3RyW2luZGV4ICsgM10gIT09ICcpJykge1xuICAgICAgY2xvc2VQYXJlbkluZGV4ID0gc3RyLmluZGV4T2YoJyknLCBpbmRleCk7XG4gICAgICBpZiAoY2xvc2VQYXJlbkluZGV4ID4gaW5kZXgpIHtcbiAgICAgICAgYmFja1NsYXNoSW5kZXggPSBzdHIuaW5kZXhPZignXFxcXCcsIGluZGV4KTtcbiAgICAgICAgaWYgKGJhY2tTbGFzaEluZGV4ID09PSAtMSB8fCBiYWNrU2xhc2hJbmRleCA+IGNsb3NlUGFyZW5JbmRleCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBpcGVJbmRleCAhPT0gLTEgJiYgc3RyW2luZGV4XSA9PT0gJygnICYmIHN0cltpbmRleCArIDFdICE9PSAnfCcpIHtcbiAgICAgIGlmIChwaXBlSW5kZXggPCBpbmRleCkge1xuICAgICAgICBwaXBlSW5kZXggPSBzdHIuaW5kZXhPZignfCcsIGluZGV4KTtcbiAgICAgIH1cbiAgICAgIGlmIChwaXBlSW5kZXggIT09IC0xICYmIHN0cltwaXBlSW5kZXggKyAxXSAhPT0gJyknKSB7XG4gICAgICAgIGNsb3NlUGFyZW5JbmRleCA9IHN0ci5pbmRleE9mKCcpJywgcGlwZUluZGV4KTtcbiAgICAgICAgaWYgKGNsb3NlUGFyZW5JbmRleCA+IHBpcGVJbmRleCkge1xuICAgICAgICAgIGJhY2tTbGFzaEluZGV4ID0gc3RyLmluZGV4T2YoJ1xcXFwnLCBwaXBlSW5kZXgpO1xuICAgICAgICAgIGlmIChiYWNrU2xhc2hJbmRleCA9PT0gLTEgfHwgYmFja1NsYXNoSW5kZXggPiBjbG9zZVBhcmVuSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdHJbaW5kZXhdID09PSAnXFxcXCcpIHtcbiAgICAgIHZhciBvcGVuID0gc3RyW2luZGV4ICsgMV07XG4gICAgICBpbmRleCArPSAyO1xuICAgICAgdmFyIGNsb3NlID0gY2hhcnNbb3Blbl07XG5cbiAgICAgIGlmIChjbG9zZSkge1xuICAgICAgICB2YXIgbiA9IHN0ci5pbmRleE9mKGNsb3NlLCBpbmRleCk7XG4gICAgICAgIGlmIChuICE9PSAtMSkge1xuICAgICAgICAgIGluZGV4ID0gbiArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0cltpbmRleF0gPT09ICchJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxudmFyIHJlbGF4ZWRDaGVjayA9IGZ1bmN0aW9uKHN0cikge1xuICBpZiAoc3RyWzBdID09PSAnIScpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgaW5kZXggPSAwO1xuICB3aGlsZSAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgaWYgKC9bKj97fSgpW1xcXV0vLnRlc3Qoc3RyW2luZGV4XSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdHJbaW5kZXhdID09PSAnXFxcXCcpIHtcbiAgICAgIHZhciBvcGVuID0gc3RyW2luZGV4ICsgMV07XG4gICAgICBpbmRleCArPSAyO1xuICAgICAgdmFyIGNsb3NlID0gY2hhcnNbb3Blbl07XG5cbiAgICAgIGlmIChjbG9zZSkge1xuICAgICAgICB2YXIgbiA9IHN0ci5pbmRleE9mKGNsb3NlLCBpbmRleCk7XG4gICAgICAgIGlmIChuICE9PSAtMSkge1xuICAgICAgICAgIGluZGV4ID0gbiArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0cltpbmRleF0gPT09ICchJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0dsb2Ioc3RyLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCBzdHIgPT09ICcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzRXh0Z2xvYihzdHIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YXIgY2hlY2sgPSBzdHJpY3RDaGVjaztcblxuICAvLyBvcHRpb25hbGx5IHJlbGF4IGNoZWNrXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc3RyaWN0ID09PSBmYWxzZSkge1xuICAgIGNoZWNrID0gcmVsYXhlZENoZWNrO1xuICB9XG5cbiAgcmV0dXJuIGNoZWNrKHN0cik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNHbG9iID0gcmVxdWlyZSgnaXMtZ2xvYicpO1xudmFyIHBhdGhQb3NpeERpcm5hbWUgPSByZXF1aXJlKCdwYXRoJykucG9zaXguZGlybmFtZTtcbnZhciBpc1dpbjMyID0gcmVxdWlyZSgnb3MnKS5wbGF0Zm9ybSgpID09PSAnd2luMzInO1xuXG52YXIgc2xhc2ggPSAnLyc7XG52YXIgYmFja3NsYXNoID0gL1xcXFwvZztcbnZhciBlbmNsb3N1cmUgPSAvW1xce1xcW10uKltcXH1cXF1dJC87XG52YXIgZ2xvYmJ5ID0gLyhefFteXFxcXF0pKFtcXHtcXFtdfFxcKFteXFwpXSskKS87XG52YXIgZXNjYXBlZCA9IC9cXFxcKFtcXCFcXCpcXD9cXHxcXFtcXF1cXChcXClcXHtcXH1dKS9nO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsaXBCYWNrc2xhc2hlcz10cnVlXVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnbG9iUGFyZW50KHN0ciwgb3B0cykge1xuICB2YXIgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oeyBmbGlwQmFja3NsYXNoZXM6IHRydWUgfSwgb3B0cyk7XG5cbiAgLy8gZmxpcCB3aW5kb3dzIHBhdGggc2VwYXJhdG9yc1xuICBpZiAob3B0aW9ucy5mbGlwQmFja3NsYXNoZXMgJiYgaXNXaW4zMiAmJiBzdHIuaW5kZXhPZihzbGFzaCkgPCAwKSB7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoYmFja3NsYXNoLCBzbGFzaCk7XG4gIH1cblxuICAvLyBzcGVjaWFsIGNhc2UgZm9yIHN0cmluZ3MgZW5kaW5nIGluIGVuY2xvc3VyZSBjb250YWluaW5nIHBhdGggc2VwYXJhdG9yXG4gIGlmIChlbmNsb3N1cmUudGVzdChzdHIpKSB7XG4gICAgc3RyICs9IHNsYXNoO1xuICB9XG5cbiAgLy8gcHJlc2VydmVzIGZ1bGwgcGF0aCBpbiBjYXNlIG9mIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yXG4gIHN0ciArPSAnYSc7XG5cbiAgLy8gcmVtb3ZlIHBhdGggcGFydHMgdGhhdCBhcmUgZ2xvYmJ5XG4gIGRvIHtcbiAgICBzdHIgPSBwYXRoUG9zaXhEaXJuYW1lKHN0cik7XG4gIH0gd2hpbGUgKGlzR2xvYihzdHIpIHx8IGdsb2JieS50ZXN0KHN0cikpO1xuXG4gIC8vIHJlbW92ZSBlc2NhcGUgY2hhcnMgYW5kIHJldHVybiByZXN1bHRcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGVzY2FwZWQsICckMScpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5pc0ludGVnZXIgPSBudW0gPT4ge1xuICBpZiAodHlwZW9mIG51bSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihudW0pO1xuICB9XG4gIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJyAmJiBudW0udHJpbSgpICE9PSAnJykge1xuICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihudW0pKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIEZpbmQgYSBub2RlIG9mIHRoZSBnaXZlbiB0eXBlXG4gKi9cblxuZXhwb3J0cy5maW5kID0gKG5vZGUsIHR5cGUpID0+IG5vZGUubm9kZXMuZmluZChub2RlID0+IG5vZGUudHlwZSA9PT0gdHlwZSk7XG5cbi8qKlxuICogRmluZCBhIG5vZGUgb2YgdGhlIGdpdmVuIHR5cGVcbiAqL1xuXG5leHBvcnRzLmV4Y2VlZHNMaW1pdCA9IChtaW4sIG1heCwgc3RlcCA9IDEsIGxpbWl0KSA9PiB7XG4gIGlmIChsaW1pdCA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgaWYgKCFleHBvcnRzLmlzSW50ZWdlcihtaW4pIHx8ICFleHBvcnRzLmlzSW50ZWdlcihtYXgpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiAoKE51bWJlcihtYXgpIC0gTnVtYmVyKG1pbikpIC8gTnVtYmVyKHN0ZXApKSA+PSBsaW1pdDtcbn07XG5cbi8qKlxuICogRXNjYXBlIHRoZSBnaXZlbiBub2RlIHdpdGggJ1xcXFwnIGJlZm9yZSBub2RlLnZhbHVlXG4gKi9cblxuZXhwb3J0cy5lc2NhcGVOb2RlID0gKGJsb2NrLCBuID0gMCwgdHlwZSkgPT4ge1xuICBsZXQgbm9kZSA9IGJsb2NrLm5vZGVzW25dO1xuICBpZiAoIW5vZGUpIHJldHVybjtcblxuICBpZiAoKHR5cGUgJiYgbm9kZS50eXBlID09PSB0eXBlKSB8fCBub2RlLnR5cGUgPT09ICdvcGVuJyB8fCBub2RlLnR5cGUgPT09ICdjbG9zZScpIHtcbiAgICBpZiAobm9kZS5lc2NhcGVkICE9PSB0cnVlKSB7XG4gICAgICBub2RlLnZhbHVlID0gJ1xcXFwnICsgbm9kZS52YWx1ZTtcbiAgICAgIG5vZGUuZXNjYXBlZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnJhY2Ugbm9kZSBzaG91bGQgYmUgZW5jbG9zZWQgaW4gbGl0ZXJhbCBicmFjZXNcbiAqL1xuXG5leHBvcnRzLmVuY2xvc2VCcmFjZSA9IG5vZGUgPT4ge1xuICBpZiAobm9kZS50eXBlICE9PSAnYnJhY2UnKSByZXR1cm4gZmFsc2U7XG4gIGlmICgobm9kZS5jb21tYXMgPj4gMCArIG5vZGUucmFuZ2VzID4+IDApID09PSAwKSB7XG4gICAgbm9kZS5pbnZhbGlkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhIGJyYWNlIG5vZGUgaXMgaW52YWxpZC5cbiAqL1xuXG5leHBvcnRzLmlzSW52YWxpZEJyYWNlID0gYmxvY2sgPT4ge1xuICBpZiAoYmxvY2sudHlwZSAhPT0gJ2JyYWNlJykgcmV0dXJuIGZhbHNlO1xuICBpZiAoYmxvY2suaW52YWxpZCA9PT0gdHJ1ZSB8fCBibG9jay5kb2xsYXIpIHJldHVybiB0cnVlO1xuICBpZiAoKGJsb2NrLmNvbW1hcyA+PiAwICsgYmxvY2sucmFuZ2VzID4+IDApID09PSAwKSB7XG4gICAgYmxvY2suaW52YWxpZCA9IHRydWU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGJsb2NrLm9wZW4gIT09IHRydWUgfHwgYmxvY2suY2xvc2UgIT09IHRydWUpIHtcbiAgICBibG9jay5pbnZhbGlkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhIG5vZGUgaXMgYW4gb3BlbiBvciBjbG9zZSBub2RlXG4gKi9cblxuZXhwb3J0cy5pc09wZW5PckNsb3NlID0gbm9kZSA9PiB7XG4gIGlmIChub2RlLnR5cGUgPT09ICdvcGVuJyB8fCBub2RlLnR5cGUgPT09ICdjbG9zZScpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gbm9kZS5vcGVuID09PSB0cnVlIHx8IG5vZGUuY2xvc2UgPT09IHRydWU7XG59O1xuXG4vKipcbiAqIFJlZHVjZSBhbiBhcnJheSBvZiB0ZXh0IG5vZGVzLlxuICovXG5cbmV4cG9ydHMucmVkdWNlID0gbm9kZXMgPT4gbm9kZXMucmVkdWNlKChhY2MsIG5vZGUpID0+IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ3RleHQnKSBhY2MucHVzaChub2RlLnZhbHVlKTtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ3JhbmdlJykgbm9kZS50eXBlID0gJ3RleHQnO1xuICByZXR1cm4gYWNjO1xufSwgW10pO1xuXG4vKipcbiAqIEZsYXR0ZW4gYW4gYXJyYXlcbiAqL1xuXG5leHBvcnRzLmZsYXR0ZW4gPSAoLi4uYXJncykgPT4ge1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgY29uc3QgZmxhdCA9IGFyciA9PiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBlbGUgPSBhcnJbaV07XG4gICAgICBBcnJheS5pc0FycmF5KGVsZSkgPyBmbGF0KGVsZSwgcmVzdWx0KSA6IGVsZSAhPT0gdm9pZCAwICYmIHJlc3VsdC5wdXNoKGVsZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIGZsYXQoYXJncyk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoYXN0LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IHN0cmluZ2lmeSA9IChub2RlLCBwYXJlbnQgPSB7fSkgPT4ge1xuICAgIGxldCBpbnZhbGlkQmxvY2sgPSBvcHRpb25zLmVzY2FwZUludmFsaWQgJiYgdXRpbHMuaXNJbnZhbGlkQnJhY2UocGFyZW50KTtcbiAgICBsZXQgaW52YWxpZE5vZGUgPSBub2RlLmludmFsaWQgPT09IHRydWUgJiYgb3B0aW9ucy5lc2NhcGVJbnZhbGlkID09PSB0cnVlO1xuICAgIGxldCBvdXRwdXQgPSAnJztcblxuICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICBpZiAoKGludmFsaWRCbG9jayB8fCBpbnZhbGlkTm9kZSkgJiYgdXRpbHMuaXNPcGVuT3JDbG9zZShub2RlKSkge1xuICAgICAgICByZXR1cm4gJ1xcXFwnICsgbm9kZS52YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2Rlcykge1xuICAgICAgZm9yIChsZXQgY2hpbGQgb2Ygbm9kZS5ub2Rlcykge1xuICAgICAgICBvdXRwdXQgKz0gc3RyaW5naWZ5KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc3RyaW5naWZ5KGFzdCk7XG59O1xuXG4iLCIvKiFcbiAqIGlzLW51bWJlciA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtbnVtYmVyPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obnVtKSB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBudW0gLSBudW0gPT09IDA7XG4gIH1cbiAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnICYmIG51bS50cmltKCkgIT09ICcnKSB7XG4gICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSA/IE51bWJlci5pc0Zpbml0ZSgrbnVtKSA6IGlzRmluaXRlKCtudW0pO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG4iLCIvKiFcbiAqIHRvLXJlZ2V4LXJhbmdlIDxodHRwczovL2dpdGh1Yi5jb20vbWljcm9tYXRjaC90by1yZWdleC1yYW5nZT5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBpc051bWJlciA9IHJlcXVpcmUoJ2lzLW51bWJlcicpO1xuXG5jb25zdCB0b1JlZ2V4UmFuZ2UgPSAobWluLCBtYXgsIG9wdGlvbnMpID0+IHtcbiAgaWYgKGlzTnVtYmVyKG1pbikgPT09IGZhbHNlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndG9SZWdleFJhbmdlOiBleHBlY3RlZCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYmUgYSBudW1iZXInKTtcbiAgfVxuXG4gIGlmIChtYXggPT09IHZvaWQgMCB8fCBtaW4gPT09IG1heCkge1xuICAgIHJldHVybiBTdHJpbmcobWluKTtcbiAgfVxuXG4gIGlmIChpc051bWJlcihtYXgpID09PSBmYWxzZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RvUmVnZXhSYW5nZTogZXhwZWN0ZWQgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBhIG51bWJlci4nKTtcbiAgfVxuXG4gIGxldCBvcHRzID0geyByZWxheFplcm9zOiB0cnVlLCAuLi5vcHRpb25zIH07XG4gIGlmICh0eXBlb2Ygb3B0cy5zdHJpY3RaZXJvcyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgb3B0cy5yZWxheFplcm9zID0gb3B0cy5zdHJpY3RaZXJvcyA9PT0gZmFsc2U7XG4gIH1cblxuICBsZXQgcmVsYXggPSBTdHJpbmcob3B0cy5yZWxheFplcm9zKTtcbiAgbGV0IHNob3J0aGFuZCA9IFN0cmluZyhvcHRzLnNob3J0aGFuZCk7XG4gIGxldCBjYXB0dXJlID0gU3RyaW5nKG9wdHMuY2FwdHVyZSk7XG4gIGxldCB3cmFwID0gU3RyaW5nKG9wdHMud3JhcCk7XG4gIGxldCBjYWNoZUtleSA9IG1pbiArICc6JyArIG1heCArICc9JyArIHJlbGF4ICsgc2hvcnRoYW5kICsgY2FwdHVyZSArIHdyYXA7XG5cbiAgaWYgKHRvUmVnZXhSYW5nZS5jYWNoZS5oYXNPd25Qcm9wZXJ0eShjYWNoZUtleSkpIHtcbiAgICByZXR1cm4gdG9SZWdleFJhbmdlLmNhY2hlW2NhY2hlS2V5XS5yZXN1bHQ7XG4gIH1cblxuICBsZXQgYSA9IE1hdGgubWluKG1pbiwgbWF4KTtcbiAgbGV0IGIgPSBNYXRoLm1heChtaW4sIG1heCk7XG5cbiAgaWYgKE1hdGguYWJzKGEgLSBiKSA9PT0gMSkge1xuICAgIGxldCByZXN1bHQgPSBtaW4gKyAnfCcgKyBtYXg7XG4gICAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgICAgcmV0dXJuIGAoJHtyZXN1bHR9KWA7XG4gICAgfVxuICAgIGlmIChvcHRzLndyYXAgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gYCg/OiR7cmVzdWx0fSlgO1xuICB9XG5cbiAgbGV0IGlzUGFkZGVkID0gaGFzUGFkZGluZyhtaW4pIHx8IGhhc1BhZGRpbmcobWF4KTtcbiAgbGV0IHN0YXRlID0geyBtaW4sIG1heCwgYSwgYiB9O1xuICBsZXQgcG9zaXRpdmVzID0gW107XG4gIGxldCBuZWdhdGl2ZXMgPSBbXTtcblxuICBpZiAoaXNQYWRkZWQpIHtcbiAgICBzdGF0ZS5pc1BhZGRlZCA9IGlzUGFkZGVkO1xuICAgIHN0YXRlLm1heExlbiA9IFN0cmluZyhzdGF0ZS5tYXgpLmxlbmd0aDtcbiAgfVxuXG4gIGlmIChhIDwgMCkge1xuICAgIGxldCBuZXdNaW4gPSBiIDwgMCA/IE1hdGguYWJzKGIpIDogMTtcbiAgICBuZWdhdGl2ZXMgPSBzcGxpdFRvUGF0dGVybnMobmV3TWluLCBNYXRoLmFicyhhKSwgc3RhdGUsIG9wdHMpO1xuICAgIGEgPSBzdGF0ZS5hID0gMDtcbiAgfVxuXG4gIGlmIChiID49IDApIHtcbiAgICBwb3NpdGl2ZXMgPSBzcGxpdFRvUGF0dGVybnMoYSwgYiwgc3RhdGUsIG9wdHMpO1xuICB9XG5cbiAgc3RhdGUubmVnYXRpdmVzID0gbmVnYXRpdmVzO1xuICBzdGF0ZS5wb3NpdGl2ZXMgPSBwb3NpdGl2ZXM7XG4gIHN0YXRlLnJlc3VsdCA9IGNvbGxhdGVQYXR0ZXJucyhuZWdhdGl2ZXMsIHBvc2l0aXZlcywgb3B0cyk7XG5cbiAgaWYgKG9wdHMuY2FwdHVyZSA9PT0gdHJ1ZSkge1xuICAgIHN0YXRlLnJlc3VsdCA9IGAoJHtzdGF0ZS5yZXN1bHR9KWA7XG4gIH0gZWxzZSBpZiAob3B0cy53cmFwICE9PSBmYWxzZSAmJiAocG9zaXRpdmVzLmxlbmd0aCArIG5lZ2F0aXZlcy5sZW5ndGgpID4gMSkge1xuICAgIHN0YXRlLnJlc3VsdCA9IGAoPzoke3N0YXRlLnJlc3VsdH0pYDtcbiAgfVxuXG4gIHRvUmVnZXhSYW5nZS5jYWNoZVtjYWNoZUtleV0gPSBzdGF0ZTtcbiAgcmV0dXJuIHN0YXRlLnJlc3VsdDtcbn07XG5cbmZ1bmN0aW9uIGNvbGxhdGVQYXR0ZXJucyhuZWcsIHBvcywgb3B0aW9ucykge1xuICBsZXQgb25seU5lZ2F0aXZlID0gZmlsdGVyUGF0dGVybnMobmVnLCBwb3MsICctJywgZmFsc2UsIG9wdGlvbnMpIHx8IFtdO1xuICBsZXQgb25seVBvc2l0aXZlID0gZmlsdGVyUGF0dGVybnMocG9zLCBuZWcsICcnLCBmYWxzZSwgb3B0aW9ucykgfHwgW107XG4gIGxldCBpbnRlcnNlY3RlZCA9IGZpbHRlclBhdHRlcm5zKG5lZywgcG9zLCAnLT8nLCB0cnVlLCBvcHRpb25zKSB8fCBbXTtcbiAgbGV0IHN1YnBhdHRlcm5zID0gb25seU5lZ2F0aXZlLmNvbmNhdChpbnRlcnNlY3RlZCkuY29uY2F0KG9ubHlQb3NpdGl2ZSk7XG4gIHJldHVybiBzdWJwYXR0ZXJucy5qb2luKCd8Jyk7XG59XG5cbmZ1bmN0aW9uIHNwbGl0VG9SYW5nZXMobWluLCBtYXgpIHtcbiAgbGV0IG5pbmVzID0gMTtcbiAgbGV0IHplcm9zID0gMTtcblxuICBsZXQgc3RvcCA9IGNvdW50TmluZXMobWluLCBuaW5lcyk7XG4gIGxldCBzdG9wcyA9IG5ldyBTZXQoW21heF0pO1xuXG4gIHdoaWxlIChtaW4gPD0gc3RvcCAmJiBzdG9wIDw9IG1heCkge1xuICAgIHN0b3BzLmFkZChzdG9wKTtcbiAgICBuaW5lcyArPSAxO1xuICAgIHN0b3AgPSBjb3VudE5pbmVzKG1pbiwgbmluZXMpO1xuICB9XG5cbiAgc3RvcCA9IGNvdW50WmVyb3MobWF4ICsgMSwgemVyb3MpIC0gMTtcblxuICB3aGlsZSAobWluIDwgc3RvcCAmJiBzdG9wIDw9IG1heCkge1xuICAgIHN0b3BzLmFkZChzdG9wKTtcbiAgICB6ZXJvcyArPSAxO1xuICAgIHN0b3AgPSBjb3VudFplcm9zKG1heCArIDEsIHplcm9zKSAtIDE7XG4gIH1cblxuICBzdG9wcyA9IFsuLi5zdG9wc107XG4gIHN0b3BzLnNvcnQoY29tcGFyZSk7XG4gIHJldHVybiBzdG9wcztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcmFuZ2UgdG8gYSByZWdleCBwYXR0ZXJuXG4gKiBAcGFyYW0ge051bWJlcn0gYHN0YXJ0YFxuICogQHBhcmFtIHtOdW1iZXJ9IGBzdG9wYFxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIHJhbmdlVG9QYXR0ZXJuKHN0YXJ0LCBzdG9wLCBvcHRpb25zKSB7XG4gIGlmIChzdGFydCA9PT0gc3RvcCkge1xuICAgIHJldHVybiB7IHBhdHRlcm46IHN0YXJ0LCBjb3VudDogW10sIGRpZ2l0czogMCB9O1xuICB9XG5cbiAgbGV0IHppcHBlZCA9IHppcChzdGFydCwgc3RvcCk7XG4gIGxldCBkaWdpdHMgPSB6aXBwZWQubGVuZ3RoO1xuICBsZXQgcGF0dGVybiA9ICcnO1xuICBsZXQgY291bnQgPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlnaXRzOyBpKyspIHtcbiAgICBsZXQgW3N0YXJ0RGlnaXQsIHN0b3BEaWdpdF0gPSB6aXBwZWRbaV07XG5cbiAgICBpZiAoc3RhcnREaWdpdCA9PT0gc3RvcERpZ2l0KSB7XG4gICAgICBwYXR0ZXJuICs9IHN0YXJ0RGlnaXQ7XG5cbiAgICB9IGVsc2UgaWYgKHN0YXJ0RGlnaXQgIT09ICcwJyB8fCBzdG9wRGlnaXQgIT09ICc5Jykge1xuICAgICAgcGF0dGVybiArPSB0b0NoYXJhY3RlckNsYXNzKHN0YXJ0RGlnaXQsIHN0b3BEaWdpdCwgb3B0aW9ucyk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gIH1cblxuICBpZiAoY291bnQpIHtcbiAgICBwYXR0ZXJuICs9IG9wdGlvbnMuc2hvcnRoYW5kID09PSB0cnVlID8gJ1xcXFxkJyA6ICdbMC05XSc7XG4gIH1cblxuICByZXR1cm4geyBwYXR0ZXJuLCBjb3VudDogW2NvdW50XSwgZGlnaXRzIH07XG59XG5cbmZ1bmN0aW9uIHNwbGl0VG9QYXR0ZXJucyhtaW4sIG1heCwgdG9rLCBvcHRpb25zKSB7XG4gIGxldCByYW5nZXMgPSBzcGxpdFRvUmFuZ2VzKG1pbiwgbWF4KTtcbiAgbGV0IHRva2VucyA9IFtdO1xuICBsZXQgc3RhcnQgPSBtaW47XG4gIGxldCBwcmV2O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IG1heCA9IHJhbmdlc1tpXTtcbiAgICBsZXQgb2JqID0gcmFuZ2VUb1BhdHRlcm4oU3RyaW5nKHN0YXJ0KSwgU3RyaW5nKG1heCksIG9wdGlvbnMpO1xuICAgIGxldCB6ZXJvcyA9ICcnO1xuXG4gICAgaWYgKCF0b2suaXNQYWRkZWQgJiYgcHJldiAmJiBwcmV2LnBhdHRlcm4gPT09IG9iai5wYXR0ZXJuKSB7XG4gICAgICBpZiAocHJldi5jb3VudC5sZW5ndGggPiAxKSB7XG4gICAgICAgIHByZXYuY291bnQucG9wKCk7XG4gICAgICB9XG5cbiAgICAgIHByZXYuY291bnQucHVzaChvYmouY291bnRbMF0pO1xuICAgICAgcHJldi5zdHJpbmcgPSBwcmV2LnBhdHRlcm4gKyB0b1F1YW50aWZpZXIocHJldi5jb3VudCk7XG4gICAgICBzdGFydCA9IG1heCArIDE7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodG9rLmlzUGFkZGVkKSB7XG4gICAgICB6ZXJvcyA9IHBhZFplcm9zKG1heCwgdG9rLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBvYmouc3RyaW5nID0gemVyb3MgKyBvYmoucGF0dGVybiArIHRvUXVhbnRpZmllcihvYmouY291bnQpO1xuICAgIHRva2Vucy5wdXNoKG9iaik7XG4gICAgc3RhcnQgPSBtYXggKyAxO1xuICAgIHByZXYgPSBvYmo7XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJQYXR0ZXJucyhhcnIsIGNvbXBhcmlzb24sIHByZWZpeCwgaW50ZXJzZWN0aW9uLCBvcHRpb25zKSB7XG4gIGxldCByZXN1bHQgPSBbXTtcblxuICBmb3IgKGxldCBlbGUgb2YgYXJyKSB7XG4gICAgbGV0IHsgc3RyaW5nIH0gPSBlbGU7XG5cbiAgICAvLyBvbmx5IHB1c2ggaWYgX2JvdGhfIGFyZSBuZWdhdGl2ZS4uLlxuICAgIGlmICghaW50ZXJzZWN0aW9uICYmICFjb250YWlucyhjb21wYXJpc29uLCAnc3RyaW5nJywgc3RyaW5nKSkge1xuICAgICAgcmVzdWx0LnB1c2gocHJlZml4ICsgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvLyBvciBfYm90aF8gYXJlIHBvc2l0aXZlXG4gICAgaWYgKGludGVyc2VjdGlvbiAmJiBjb250YWlucyhjb21wYXJpc29uLCAnc3RyaW5nJywgc3RyaW5nKSkge1xuICAgICAgcmVzdWx0LnB1c2gocHJlZml4ICsgc3RyaW5nKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBaaXAgc3RyaW5nc1xuICovXG5cbmZ1bmN0aW9uIHppcChhLCBiKSB7XG4gIGxldCBhcnIgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSBhcnIucHVzaChbYVtpXSwgYltpXV0pO1xuICByZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBjb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAwO1xufVxuXG5mdW5jdGlvbiBjb250YWlucyhhcnIsIGtleSwgdmFsKSB7XG4gIHJldHVybiBhcnIuc29tZShlbGUgPT4gZWxlW2tleV0gPT09IHZhbCk7XG59XG5cbmZ1bmN0aW9uIGNvdW50TmluZXMobWluLCBsZW4pIHtcbiAgcmV0dXJuIE51bWJlcihTdHJpbmcobWluKS5zbGljZSgwLCAtbGVuKSArICc5Jy5yZXBlYXQobGVuKSk7XG59XG5cbmZ1bmN0aW9uIGNvdW50WmVyb3MoaW50ZWdlciwgemVyb3MpIHtcbiAgcmV0dXJuIGludGVnZXIgLSAoaW50ZWdlciAlIE1hdGgucG93KDEwLCB6ZXJvcykpO1xufVxuXG5mdW5jdGlvbiB0b1F1YW50aWZpZXIoZGlnaXRzKSB7XG4gIGxldCBbc3RhcnQgPSAwLCBzdG9wID0gJyddID0gZGlnaXRzO1xuICBpZiAoc3RvcCB8fCBzdGFydCA+IDEpIHtcbiAgICByZXR1cm4gYHske3N0YXJ0ICsgKHN0b3AgPyAnLCcgKyBzdG9wIDogJycpfX1gO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gdG9DaGFyYWN0ZXJDbGFzcyhhLCBiLCBvcHRpb25zKSB7XG4gIHJldHVybiBgWyR7YX0keyhiIC0gYSA9PT0gMSkgPyAnJyA6ICctJ30ke2J9XWA7XG59XG5cbmZ1bmN0aW9uIGhhc1BhZGRpbmcoc3RyKSB7XG4gIHJldHVybiAvXi0/KDArKVxcZC8udGVzdChzdHIpO1xufVxuXG5mdW5jdGlvbiBwYWRaZXJvcyh2YWx1ZSwgdG9rLCBvcHRpb25zKSB7XG4gIGlmICghdG9rLmlzUGFkZGVkKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbGV0IGRpZmYgPSBNYXRoLmFicyh0b2subWF4TGVuIC0gU3RyaW5nKHZhbHVlKS5sZW5ndGgpO1xuICBsZXQgcmVsYXggPSBvcHRpb25zLnJlbGF4WmVyb3MgIT09IGZhbHNlO1xuXG4gIHN3aXRjaCAoZGlmZikge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiAnJztcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gcmVsYXggPyAnMD8nIDogJzAnO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiByZWxheCA/ICcwezAsMn0nIDogJzAwJztcbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gcmVsYXggPyBgMHswLCR7ZGlmZn19YCA6IGAweyR7ZGlmZn19YDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDYWNoZVxuICovXG5cbnRvUmVnZXhSYW5nZS5jYWNoZSA9IHt9O1xudG9SZWdleFJhbmdlLmNsZWFyQ2FjaGUgPSAoKSA9PiAodG9SZWdleFJhbmdlLmNhY2hlID0ge30pO1xuXG4vKipcbiAqIEV4cG9zZSBgdG9SZWdleFJhbmdlYFxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gdG9SZWdleFJhbmdlO1xuIiwiLyohXG4gKiBmaWxsLXJhbmdlIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9maWxsLXJhbmdlPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5jb25zdCB0b1JlZ2V4UmFuZ2UgPSByZXF1aXJlKCd0by1yZWdleC1yYW5nZScpO1xuXG5jb25zdCBpc09iamVjdCA9IHZhbCA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKTtcblxuY29uc3QgdHJhbnNmb3JtID0gdG9OdW1iZXIgPT4ge1xuICByZXR1cm4gdmFsdWUgPT4gdG9OdW1iZXIgPT09IHRydWUgPyBOdW1iZXIodmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcbn07XG5cbmNvbnN0IGlzVmFsaWRWYWx1ZSA9IHZhbHVlID0+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUgIT09ICcnKTtcbn07XG5cbmNvbnN0IGlzTnVtYmVyID0gbnVtID0+IE51bWJlci5pc0ludGVnZXIoK251bSk7XG5cbmNvbnN0IHplcm9zID0gaW5wdXQgPT4ge1xuICBsZXQgdmFsdWUgPSBgJHtpbnB1dH1gO1xuICBsZXQgaW5kZXggPSAtMTtcbiAgaWYgKHZhbHVlWzBdID09PSAnLScpIHZhbHVlID0gdmFsdWUuc2xpY2UoMSk7XG4gIGlmICh2YWx1ZSA9PT0gJzAnKSByZXR1cm4gZmFsc2U7XG4gIHdoaWxlICh2YWx1ZVsrK2luZGV4XSA9PT0gJzAnKTtcbiAgcmV0dXJuIGluZGV4ID4gMDtcbn07XG5cbmNvbnN0IHN0cmluZ2lmeSA9IChzdGFydCwgZW5kLCBvcHRpb25zKSA9PiB7XG4gIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnMuc3RyaW5naWZ5ID09PSB0cnVlO1xufTtcblxuY29uc3QgcGFkID0gKGlucHV0LCBtYXhMZW5ndGgsIHRvTnVtYmVyKSA9PiB7XG4gIGlmIChtYXhMZW5ndGggPiAwKSB7XG4gICAgbGV0IGRhc2ggPSBpbnB1dFswXSA9PT0gJy0nID8gJy0nIDogJyc7XG4gICAgaWYgKGRhc2gpIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgaW5wdXQgPSAoZGFzaCArIGlucHV0LnBhZFN0YXJ0KGRhc2ggPyBtYXhMZW5ndGggLSAxIDogbWF4TGVuZ3RoLCAnMCcpKTtcbiAgfVxuICBpZiAodG9OdW1iZXIgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIFN0cmluZyhpbnB1dCk7XG4gIH1cbiAgcmV0dXJuIGlucHV0O1xufTtcblxuY29uc3QgdG9NYXhMZW4gPSAoaW5wdXQsIG1heExlbmd0aCkgPT4ge1xuICBsZXQgbmVnYXRpdmUgPSBpbnB1dFswXSA9PT0gJy0nID8gJy0nIDogJyc7XG4gIGlmIChuZWdhdGl2ZSkge1xuICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgbWF4TGVuZ3RoLS07XG4gIH1cbiAgd2hpbGUgKGlucHV0Lmxlbmd0aCA8IG1heExlbmd0aCkgaW5wdXQgPSAnMCcgKyBpbnB1dDtcbiAgcmV0dXJuIG5lZ2F0aXZlID8gKCctJyArIGlucHV0KSA6IGlucHV0O1xufTtcblxuY29uc3QgdG9TZXF1ZW5jZSA9IChwYXJ0cywgb3B0aW9ucykgPT4ge1xuICBwYXJ0cy5uZWdhdGl2ZXMuc29ydCgoYSwgYikgPT4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApO1xuICBwYXJ0cy5wb3NpdGl2ZXMuc29ydCgoYSwgYikgPT4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApO1xuXG4gIGxldCBwcmVmaXggPSBvcHRpb25zLmNhcHR1cmUgPyAnJyA6ICc/Oic7XG4gIGxldCBwb3NpdGl2ZXMgPSAnJztcbiAgbGV0IG5lZ2F0aXZlcyA9ICcnO1xuICBsZXQgcmVzdWx0O1xuXG4gIGlmIChwYXJ0cy5wb3NpdGl2ZXMubGVuZ3RoKSB7XG4gICAgcG9zaXRpdmVzID0gcGFydHMucG9zaXRpdmVzLmpvaW4oJ3wnKTtcbiAgfVxuXG4gIGlmIChwYXJ0cy5uZWdhdGl2ZXMubGVuZ3RoKSB7XG4gICAgbmVnYXRpdmVzID0gYC0oJHtwcmVmaXh9JHtwYXJ0cy5uZWdhdGl2ZXMuam9pbignfCcpfSlgO1xuICB9XG5cbiAgaWYgKHBvc2l0aXZlcyAmJiBuZWdhdGl2ZXMpIHtcbiAgICByZXN1bHQgPSBgJHtwb3NpdGl2ZXN9fCR7bmVnYXRpdmVzfWA7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gcG9zaXRpdmVzIHx8IG5lZ2F0aXZlcztcbiAgfVxuXG4gIGlmIChvcHRpb25zLndyYXApIHtcbiAgICByZXR1cm4gYCgke3ByZWZpeH0ke3Jlc3VsdH0pYDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCB0b1JhbmdlID0gKGEsIGIsIGlzTnVtYmVycywgb3B0aW9ucykgPT4ge1xuICBpZiAoaXNOdW1iZXJzKSB7XG4gICAgcmV0dXJuIHRvUmVnZXhSYW5nZShhLCBiLCB7IHdyYXA6IGZhbHNlLCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgbGV0IHN0YXJ0ID0gU3RyaW5nLmZyb21DaGFyQ29kZShhKTtcbiAgaWYgKGEgPT09IGIpIHJldHVybiBzdGFydDtcblxuICBsZXQgc3RvcCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYik7XG4gIHJldHVybiBgWyR7c3RhcnR9LSR7c3RvcH1dYDtcbn07XG5cbmNvbnN0IHRvUmVnZXggPSAoc3RhcnQsIGVuZCwgb3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzdGFydCkpIHtcbiAgICBsZXQgd3JhcCA9IG9wdGlvbnMud3JhcCA9PT0gdHJ1ZTtcbiAgICBsZXQgcHJlZml4ID0gb3B0aW9ucy5jYXB0dXJlID8gJycgOiAnPzonO1xuICAgIHJldHVybiB3cmFwID8gYCgke3ByZWZpeH0ke3N0YXJ0LmpvaW4oJ3wnKX0pYCA6IHN0YXJ0LmpvaW4oJ3wnKTtcbiAgfVxuICByZXR1cm4gdG9SZWdleFJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbnMpO1xufTtcblxuY29uc3QgcmFuZ2VFcnJvciA9ICguLi5hcmdzKSA9PiB7XG4gIHJldHVybiBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCByYW5nZSBhcmd1bWVudHM6ICcgKyB1dGlsLmluc3BlY3QoLi4uYXJncykpO1xufTtcblxuY29uc3QgaW52YWxpZFJhbmdlID0gKHN0YXJ0LCBlbmQsIG9wdGlvbnMpID0+IHtcbiAgaWYgKG9wdGlvbnMuc3RyaWN0UmFuZ2VzID09PSB0cnVlKSB0aHJvdyByYW5nZUVycm9yKFtzdGFydCwgZW5kXSk7XG4gIHJldHVybiBbXTtcbn07XG5cbmNvbnN0IGludmFsaWRTdGVwID0gKHN0ZXAsIG9wdGlvbnMpID0+IHtcbiAgaWYgKG9wdGlvbnMuc3RyaWN0UmFuZ2VzID09PSB0cnVlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgc3RlcCBcIiR7c3RlcH1cIiB0byBiZSBhIG51bWJlcmApO1xuICB9XG4gIHJldHVybiBbXTtcbn07XG5cbmNvbnN0IGZpbGxOdW1iZXJzID0gKHN0YXJ0LCBlbmQsIHN0ZXAgPSAxLCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IGEgPSBOdW1iZXIoc3RhcnQpO1xuICBsZXQgYiA9IE51bWJlcihlbmQpO1xuXG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihhKSB8fCAhTnVtYmVyLmlzSW50ZWdlcihiKSkge1xuICAgIGlmIChvcHRpb25zLnN0cmljdFJhbmdlcyA9PT0gdHJ1ZSkgdGhyb3cgcmFuZ2VFcnJvcihbc3RhcnQsIGVuZF0pO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIGZpeCBuZWdhdGl2ZSB6ZXJvXG4gIGlmIChhID09PSAwKSBhID0gMDtcbiAgaWYgKGIgPT09IDApIGIgPSAwO1xuXG4gIGxldCBkZXNjZW5kaW5nID0gYSA+IGI7XG4gIGxldCBzdGFydFN0cmluZyA9IFN0cmluZyhzdGFydCk7XG4gIGxldCBlbmRTdHJpbmcgPSBTdHJpbmcoZW5kKTtcbiAgbGV0IHN0ZXBTdHJpbmcgPSBTdHJpbmcoc3RlcCk7XG4gIHN0ZXAgPSBNYXRoLm1heChNYXRoLmFicyhzdGVwKSwgMSk7XG5cbiAgbGV0IHBhZGRlZCA9IHplcm9zKHN0YXJ0U3RyaW5nKSB8fCB6ZXJvcyhlbmRTdHJpbmcpIHx8IHplcm9zKHN0ZXBTdHJpbmcpO1xuICBsZXQgbWF4TGVuID0gcGFkZGVkID8gTWF0aC5tYXgoc3RhcnRTdHJpbmcubGVuZ3RoLCBlbmRTdHJpbmcubGVuZ3RoLCBzdGVwU3RyaW5nLmxlbmd0aCkgOiAwO1xuICBsZXQgdG9OdW1iZXIgPSBwYWRkZWQgPT09IGZhbHNlICYmIHN0cmluZ2lmeShzdGFydCwgZW5kLCBvcHRpb25zKSA9PT0gZmFsc2U7XG4gIGxldCBmb3JtYXQgPSBvcHRpb25zLnRyYW5zZm9ybSB8fCB0cmFuc2Zvcm0odG9OdW1iZXIpO1xuXG4gIGlmIChvcHRpb25zLnRvUmVnZXggJiYgc3RlcCA9PT0gMSkge1xuICAgIHJldHVybiB0b1JhbmdlKHRvTWF4TGVuKHN0YXJ0LCBtYXhMZW4pLCB0b01heExlbihlbmQsIG1heExlbiksIHRydWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgbGV0IHBhcnRzID0geyBuZWdhdGl2ZXM6IFtdLCBwb3NpdGl2ZXM6IFtdIH07XG4gIGxldCBwdXNoID0gbnVtID0+IHBhcnRzW251bSA8IDAgPyAnbmVnYXRpdmVzJyA6ICdwb3NpdGl2ZXMnXS5wdXNoKE1hdGguYWJzKG51bSkpO1xuICBsZXQgcmFuZ2UgPSBbXTtcbiAgbGV0IGluZGV4ID0gMDtcblxuICB3aGlsZSAoZGVzY2VuZGluZyA/IGEgPj0gYiA6IGEgPD0gYikge1xuICAgIGlmIChvcHRpb25zLnRvUmVnZXggPT09IHRydWUgJiYgc3RlcCA+IDEpIHtcbiAgICAgIHB1c2goYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmdlLnB1c2gocGFkKGZvcm1hdChhLCBpbmRleCksIG1heExlbiwgdG9OdW1iZXIpKTtcbiAgICB9XG4gICAgYSA9IGRlc2NlbmRpbmcgPyBhIC0gc3RlcCA6IGEgKyBzdGVwO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBpZiAob3B0aW9ucy50b1JlZ2V4ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHN0ZXAgPiAxXG4gICAgICA/IHRvU2VxdWVuY2UocGFydHMsIG9wdGlvbnMpXG4gICAgICA6IHRvUmVnZXgocmFuZ2UsIG51bGwsIHsgd3JhcDogZmFsc2UsIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICByZXR1cm4gcmFuZ2U7XG59O1xuXG5jb25zdCBmaWxsTGV0dGVycyA9IChzdGFydCwgZW5kLCBzdGVwID0gMSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmICgoIWlzTnVtYmVyKHN0YXJ0KSAmJiBzdGFydC5sZW5ndGggPiAxKSB8fCAoIWlzTnVtYmVyKGVuZCkgJiYgZW5kLmxlbmd0aCA+IDEpKSB7XG4gICAgcmV0dXJuIGludmFsaWRSYW5nZShzdGFydCwgZW5kLCBvcHRpb25zKTtcbiAgfVxuXG5cbiAgbGV0IGZvcm1hdCA9IG9wdGlvbnMudHJhbnNmb3JtIHx8ICh2YWwgPT4gU3RyaW5nLmZyb21DaGFyQ29kZSh2YWwpKTtcbiAgbGV0IGEgPSBgJHtzdGFydH1gLmNoYXJDb2RlQXQoMCk7XG4gIGxldCBiID0gYCR7ZW5kfWAuY2hhckNvZGVBdCgwKTtcblxuICBsZXQgZGVzY2VuZGluZyA9IGEgPiBiO1xuICBsZXQgbWluID0gTWF0aC5taW4oYSwgYik7XG4gIGxldCBtYXggPSBNYXRoLm1heChhLCBiKTtcblxuICBpZiAob3B0aW9ucy50b1JlZ2V4ICYmIHN0ZXAgPT09IDEpIHtcbiAgICByZXR1cm4gdG9SYW5nZShtaW4sIG1heCwgZmFsc2UsIG9wdGlvbnMpO1xuICB9XG5cbiAgbGV0IHJhbmdlID0gW107XG4gIGxldCBpbmRleCA9IDA7XG5cbiAgd2hpbGUgKGRlc2NlbmRpbmcgPyBhID49IGIgOiBhIDw9IGIpIHtcbiAgICByYW5nZS5wdXNoKGZvcm1hdChhLCBpbmRleCkpO1xuICAgIGEgPSBkZXNjZW5kaW5nID8gYSAtIHN0ZXAgOiBhICsgc3RlcDtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMudG9SZWdleCA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiB0b1JlZ2V4KHJhbmdlLCBudWxsLCB7IHdyYXA6IGZhbHNlLCBvcHRpb25zIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJhbmdlO1xufTtcblxuY29uc3QgZmlsbCA9IChzdGFydCwgZW5kLCBzdGVwLCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKGVuZCA9PSBudWxsICYmIGlzVmFsaWRWYWx1ZShzdGFydCkpIHtcbiAgICByZXR1cm4gW3N0YXJ0XTtcbiAgfVxuXG4gIGlmICghaXNWYWxpZFZhbHVlKHN0YXJ0KSB8fCAhaXNWYWxpZFZhbHVlKGVuZCkpIHtcbiAgICByZXR1cm4gaW52YWxpZFJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBzdGVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGZpbGwoc3RhcnQsIGVuZCwgMSwgeyB0cmFuc2Zvcm06IHN0ZXAgfSk7XG4gIH1cblxuICBpZiAoaXNPYmplY3Qoc3RlcCkpIHtcbiAgICByZXR1cm4gZmlsbChzdGFydCwgZW5kLCAwLCBzdGVwKTtcbiAgfVxuXG4gIGxldCBvcHRzID0geyAuLi5vcHRpb25zIH07XG4gIGlmIChvcHRzLmNhcHR1cmUgPT09IHRydWUpIG9wdHMud3JhcCA9IHRydWU7XG4gIHN0ZXAgPSBzdGVwIHx8IG9wdHMuc3RlcCB8fCAxO1xuXG4gIGlmICghaXNOdW1iZXIoc3RlcCkpIHtcbiAgICBpZiAoc3RlcCAhPSBudWxsICYmICFpc09iamVjdChzdGVwKSkgcmV0dXJuIGludmFsaWRTdGVwKHN0ZXAsIG9wdHMpO1xuICAgIHJldHVybiBmaWxsKHN0YXJ0LCBlbmQsIDEsIHN0ZXApO1xuICB9XG5cbiAgaWYgKGlzTnVtYmVyKHN0YXJ0KSAmJiBpc051bWJlcihlbmQpKSB7XG4gICAgcmV0dXJuIGZpbGxOdW1iZXJzKHN0YXJ0LCBlbmQsIHN0ZXAsIG9wdHMpO1xuICB9XG5cbiAgcmV0dXJuIGZpbGxMZXR0ZXJzKHN0YXJ0LCBlbmQsIE1hdGgubWF4KE1hdGguYWJzKHN0ZXApLCAxKSwgb3B0cyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbGw7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZpbGwgPSByZXF1aXJlKCdmaWxsLXJhbmdlJyk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuY29uc3QgY29tcGlsZSA9IChhc3QsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBsZXQgd2FsayA9IChub2RlLCBwYXJlbnQgPSB7fSkgPT4ge1xuICAgIGxldCBpbnZhbGlkQmxvY2sgPSB1dGlscy5pc0ludmFsaWRCcmFjZShwYXJlbnQpO1xuICAgIGxldCBpbnZhbGlkTm9kZSA9IG5vZGUuaW52YWxpZCA9PT0gdHJ1ZSAmJiBvcHRpb25zLmVzY2FwZUludmFsaWQgPT09IHRydWU7XG4gICAgbGV0IGludmFsaWQgPSBpbnZhbGlkQmxvY2sgPT09IHRydWUgfHwgaW52YWxpZE5vZGUgPT09IHRydWU7XG4gICAgbGV0IHByZWZpeCA9IG9wdGlvbnMuZXNjYXBlSW52YWxpZCA9PT0gdHJ1ZSA/ICdcXFxcJyA6ICcnO1xuICAgIGxldCBvdXRwdXQgPSAnJztcblxuICAgIGlmIChub2RlLmlzT3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIHByZWZpeCArIG5vZGUudmFsdWU7XG4gICAgfVxuICAgIGlmIChub2RlLmlzQ2xvc2UgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBwcmVmaXggKyBub2RlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdvcGVuJykge1xuICAgICAgcmV0dXJuIGludmFsaWQgPyAocHJlZml4ICsgbm9kZS52YWx1ZSkgOiAnKCc7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgICAgcmV0dXJuIGludmFsaWQgPyAocHJlZml4ICsgbm9kZS52YWx1ZSkgOiAnKSc7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2NvbW1hJykge1xuICAgICAgcmV0dXJuIG5vZGUucHJldi50eXBlID09PSAnY29tbWEnID8gJycgOiAoaW52YWxpZCA/IG5vZGUudmFsdWUgOiAnfCcpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2RlcyAmJiBub2RlLnJhbmdlcyA+IDApIHtcbiAgICAgIGxldCBhcmdzID0gdXRpbHMucmVkdWNlKG5vZGUubm9kZXMpO1xuICAgICAgbGV0IHJhbmdlID0gZmlsbCguLi5hcmdzLCB7IC4uLm9wdGlvbnMsIHdyYXA6IGZhbHNlLCB0b1JlZ2V4OiB0cnVlIH0pO1xuXG4gICAgICBpZiAocmFuZ2UubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA+IDEgJiYgcmFuZ2UubGVuZ3RoID4gMSA/IGAoJHtyYW5nZX0pYCA6IHJhbmdlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzKSB7XG4gICAgICBmb3IgKGxldCBjaGlsZCBvZiBub2RlLm5vZGVzKSB7XG4gICAgICAgIG91dHB1dCArPSB3YWxrKGNoaWxkLCBub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gd2Fsayhhc3QpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb21waWxlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmaWxsID0gcmVxdWlyZSgnZmlsbC1yYW5nZScpO1xuY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9zdHJpbmdpZnknKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5jb25zdCBhcHBlbmQgPSAocXVldWUgPSAnJywgc3Rhc2ggPSAnJywgZW5jbG9zZSA9IGZhbHNlKSA9PiB7XG4gIGxldCByZXN1bHQgPSBbXTtcblxuICBxdWV1ZSA9IFtdLmNvbmNhdChxdWV1ZSk7XG4gIHN0YXNoID0gW10uY29uY2F0KHN0YXNoKTtcblxuICBpZiAoIXN0YXNoLmxlbmd0aCkgcmV0dXJuIHF1ZXVlO1xuICBpZiAoIXF1ZXVlLmxlbmd0aCkge1xuICAgIHJldHVybiBlbmNsb3NlID8gdXRpbHMuZmxhdHRlbihzdGFzaCkubWFwKGVsZSA9PiBgeyR7ZWxlfX1gKSA6IHN0YXNoO1xuICB9XG5cbiAgZm9yIChsZXQgaXRlbSBvZiBxdWV1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICBmb3IgKGxldCB2YWx1ZSBvZiBpdGVtKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGFwcGVuZCh2YWx1ZSwgc3Rhc2gsIGVuY2xvc2UpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgZWxlIG9mIHN0YXNoKSB7XG4gICAgICAgIGlmIChlbmNsb3NlID09PSB0cnVlICYmIHR5cGVvZiBlbGUgPT09ICdzdHJpbmcnKSBlbGUgPSBgeyR7ZWxlfX1gO1xuICAgICAgICByZXN1bHQucHVzaChBcnJheS5pc0FycmF5KGVsZSkgPyBhcHBlbmQoaXRlbSwgZWxlLCBlbmNsb3NlKSA6IChpdGVtICsgZWxlKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB1dGlscy5mbGF0dGVuKHJlc3VsdCk7XG59O1xuXG5jb25zdCBleHBhbmQgPSAoYXN0LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IHJhbmdlTGltaXQgPSBvcHRpb25zLnJhbmdlTGltaXQgPT09IHZvaWQgMCA/IDEwMDAgOiBvcHRpb25zLnJhbmdlTGltaXQ7XG5cbiAgbGV0IHdhbGsgPSAobm9kZSwgcGFyZW50ID0ge30pID0+IHtcbiAgICBub2RlLnF1ZXVlID0gW107XG5cbiAgICBsZXQgcCA9IHBhcmVudDtcbiAgICBsZXQgcSA9IHBhcmVudC5xdWV1ZTtcblxuICAgIHdoaWxlIChwLnR5cGUgIT09ICdicmFjZScgJiYgcC50eXBlICE9PSAncm9vdCcgJiYgcC5wYXJlbnQpIHtcbiAgICAgIHAgPSBwLnBhcmVudDtcbiAgICAgIHEgPSBwLnF1ZXVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLmludmFsaWQgfHwgbm9kZS5kb2xsYXIpIHtcbiAgICAgIHEucHVzaChhcHBlbmQocS5wb3AoKSwgc3RyaW5naWZ5KG5vZGUsIG9wdGlvbnMpKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2JyYWNlJyAmJiBub2RlLmludmFsaWQgIT09IHRydWUgJiYgbm9kZS5ub2Rlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHEucHVzaChhcHBlbmQocS5wb3AoKSwgWyd7fSddKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vZGUubm9kZXMgJiYgbm9kZS5yYW5nZXMgPiAwKSB7XG4gICAgICBsZXQgYXJncyA9IHV0aWxzLnJlZHVjZShub2RlLm5vZGVzKTtcblxuICAgICAgaWYgKHV0aWxzLmV4Y2VlZHNMaW1pdCguLi5hcmdzLCBvcHRpb25zLnN0ZXAsIHJhbmdlTGltaXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdleHBhbmRlZCBhcnJheSBsZW5ndGggZXhjZWVkcyByYW5nZSBsaW1pdC4gVXNlIG9wdGlvbnMucmFuZ2VMaW1pdCB0byBpbmNyZWFzZSBvciBkaXNhYmxlIHRoZSBsaW1pdC4nKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJhbmdlID0gZmlsbCguLi5hcmdzLCBvcHRpb25zKTtcbiAgICAgIGlmIChyYW5nZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmFuZ2UgPSBzdHJpbmdpZnkobm9kZSwgb3B0aW9ucyk7XG4gICAgICB9XG5cbiAgICAgIHEucHVzaChhcHBlbmQocS5wb3AoKSwgcmFuZ2UpKTtcbiAgICAgIG5vZGUubm9kZXMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZW5jbG9zZSA9IHV0aWxzLmVuY2xvc2VCcmFjZShub2RlKTtcbiAgICBsZXQgcXVldWUgPSBub2RlLnF1ZXVlO1xuICAgIGxldCBibG9jayA9IG5vZGU7XG5cbiAgICB3aGlsZSAoYmxvY2sudHlwZSAhPT0gJ2JyYWNlJyAmJiBibG9jay50eXBlICE9PSAncm9vdCcgJiYgYmxvY2sucGFyZW50KSB7XG4gICAgICBibG9jayA9IGJsb2NrLnBhcmVudDtcbiAgICAgIHF1ZXVlID0gYmxvY2sucXVldWU7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLm5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2hpbGQgPSBub2RlLm5vZGVzW2ldO1xuXG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2NvbW1hJyAmJiBub2RlLnR5cGUgPT09ICdicmFjZScpIHtcbiAgICAgICAgaWYgKGkgPT09IDEpIHF1ZXVlLnB1c2goJycpO1xuICAgICAgICBxdWV1ZS5wdXNoKCcnKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAnY2xvc2UnKSB7XG4gICAgICAgIHEucHVzaChhcHBlbmQocS5wb3AoKSwgcXVldWUsIGVuY2xvc2UpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZC52YWx1ZSAmJiBjaGlsZC50eXBlICE9PSAnb3BlbicpIHtcbiAgICAgICAgcXVldWUucHVzaChhcHBlbmQocXVldWUucG9wKCksIGNoaWxkLnZhbHVlKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hpbGQubm9kZXMpIHtcbiAgICAgICAgd2FsayhjaGlsZCwgbm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXVlO1xuICB9O1xuXG4gIHJldHVybiB1dGlscy5mbGF0dGVuKHdhbGsoYXN0KSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cGFuZDtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIE1BWF9MRU5HVEg6IDEwMjQgKiA2NCxcblxuICAvLyBEaWdpdHNcbiAgQ0hBUl8wOiAnMCcsIC8qIDAgKi9cbiAgQ0hBUl85OiAnOScsIC8qIDkgKi9cblxuICAvLyBBbHBoYWJldCBjaGFycy5cbiAgQ0hBUl9VUFBFUkNBU0VfQTogJ0EnLCAvKiBBICovXG4gIENIQVJfTE9XRVJDQVNFX0E6ICdhJywgLyogYSAqL1xuICBDSEFSX1VQUEVSQ0FTRV9aOiAnWicsIC8qIFogKi9cbiAgQ0hBUl9MT1dFUkNBU0VfWjogJ3onLCAvKiB6ICovXG5cbiAgQ0hBUl9MRUZUX1BBUkVOVEhFU0VTOiAnKCcsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUzogJyknLCAvKiApICovXG5cbiAgQ0hBUl9BU1RFUklTSzogJyonLCAvKiAqICovXG5cbiAgLy8gTm9uLWFscGhhYmV0aWMgY2hhcnMuXG4gIENIQVJfQU1QRVJTQU5EOiAnJicsIC8qICYgKi9cbiAgQ0hBUl9BVDogJ0AnLCAvKiBAICovXG4gIENIQVJfQkFDS1NMQVNIOiAnXFxcXCcsIC8qIFxcICovXG4gIENIQVJfQkFDS1RJQ0s6ICdgJywgLyogYCAqL1xuICBDSEFSX0NBUlJJQUdFX1JFVFVSTjogJ1xccicsIC8qIFxcciAqL1xuICBDSEFSX0NJUkNVTUZMRVhfQUNDRU5UOiAnXicsIC8qIF4gKi9cbiAgQ0hBUl9DT0xPTjogJzonLCAvKiA6ICovXG4gIENIQVJfQ09NTUE6ICcsJywgLyogLCAqL1xuICBDSEFSX0RPTExBUjogJyQnLCAvKiAuICovXG4gIENIQVJfRE9UOiAnLicsIC8qIC4gKi9cbiAgQ0hBUl9ET1VCTEVfUVVPVEU6ICdcIicsIC8qIFwiICovXG4gIENIQVJfRVFVQUw6ICc9JywgLyogPSAqL1xuICBDSEFSX0VYQ0xBTUFUSU9OX01BUks6ICchJywgLyogISAqL1xuICBDSEFSX0ZPUk1fRkVFRDogJ1xcZicsIC8qIFxcZiAqL1xuICBDSEFSX0ZPUldBUkRfU0xBU0g6ICcvJywgLyogLyAqL1xuICBDSEFSX0hBU0g6ICcjJywgLyogIyAqL1xuICBDSEFSX0hZUEhFTl9NSU5VUzogJy0nLCAvKiAtICovXG4gIENIQVJfTEVGVF9BTkdMRV9CUkFDS0VUOiAnPCcsIC8qIDwgKi9cbiAgQ0hBUl9MRUZUX0NVUkxZX0JSQUNFOiAneycsIC8qIHsgKi9cbiAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUOiAnWycsIC8qIFsgKi9cbiAgQ0hBUl9MSU5FX0ZFRUQ6ICdcXG4nLCAvKiBcXG4gKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRTogJ1xcdTAwQTAnLCAvKiBcXHUwMEEwICovXG4gIENIQVJfUEVSQ0VOVDogJyUnLCAvKiAlICovXG4gIENIQVJfUExVUzogJysnLCAvKiArICovXG4gIENIQVJfUVVFU1RJT05fTUFSSzogJz8nLCAvKiA/ICovXG4gIENIQVJfUklHSFRfQU5HTEVfQlJBQ0tFVDogJz4nLCAvKiA+ICovXG4gIENIQVJfUklHSFRfQ1VSTFlfQlJBQ0U6ICd9JywgLyogfSAqL1xuICBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUOiAnXScsIC8qIF0gKi9cbiAgQ0hBUl9TRU1JQ09MT046ICc7JywgLyogOyAqL1xuICBDSEFSX1NJTkdMRV9RVU9URTogJ1xcJycsIC8qICcgKi9cbiAgQ0hBUl9TUEFDRTogJyAnLCAvKiAgICovXG4gIENIQVJfVEFCOiAnXFx0JywgLyogXFx0ICovXG4gIENIQVJfVU5ERVJTQ09SRTogJ18nLCAvKiBfICovXG4gIENIQVJfVkVSVElDQUxfTElORTogJ3wnLCAvKiB8ICovXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFOiAnXFx1RkVGRicgLyogXFx1RkVGRiAqL1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9zdHJpbmdpZnknKTtcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCB7XG4gIE1BWF9MRU5HVEgsXG4gIENIQVJfQkFDS1NMQVNILCAvKiBcXCAqL1xuICBDSEFSX0JBQ0tUSUNLLCAvKiBgICovXG4gIENIQVJfQ09NTUEsIC8qICwgKi9cbiAgQ0hBUl9ET1QsIC8qIC4gKi9cbiAgQ0hBUl9MRUZUX1BBUkVOVEhFU0VTLCAvKiAoICovXG4gIENIQVJfUklHSFRfUEFSRU5USEVTRVMsIC8qICkgKi9cbiAgQ0hBUl9MRUZUX0NVUkxZX0JSQUNFLCAvKiB7ICovXG4gIENIQVJfUklHSFRfQ1VSTFlfQlJBQ0UsIC8qIH0gKi9cbiAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VULCAvKiBbICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQsIC8qIF0gKi9cbiAgQ0hBUl9ET1VCTEVfUVVPVEUsIC8qIFwiICovXG4gIENIQVJfU0lOR0xFX1FVT1RFLCAvKiAnICovXG4gIENIQVJfTk9fQlJFQUtfU1BBQ0UsXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFXG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcblxuLyoqXG4gKiBwYXJzZVxuICovXG5cbmNvbnN0IHBhcnNlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIHN0cmluZycpO1xuICB9XG5cbiAgbGV0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICBsZXQgbWF4ID0gdHlwZW9mIG9wdHMubWF4TGVuZ3RoID09PSAnbnVtYmVyJyA/IE1hdGgubWluKE1BWF9MRU5HVEgsIG9wdHMubWF4TGVuZ3RoKSA6IE1BWF9MRU5HVEg7XG4gIGlmIChpbnB1dC5sZW5ndGggPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYElucHV0IGxlbmd0aCAoJHtpbnB1dC5sZW5ndGh9KSwgZXhjZWVkcyBtYXggY2hhcmFjdGVycyAoJHttYXh9KWApO1xuICB9XG5cbiAgbGV0IGFzdCA9IHsgdHlwZTogJ3Jvb3QnLCBpbnB1dCwgbm9kZXM6IFtdIH07XG4gIGxldCBzdGFjayA9IFthc3RdO1xuICBsZXQgYmxvY2sgPSBhc3Q7XG4gIGxldCBwcmV2ID0gYXN0O1xuICBsZXQgYnJhY2tldHMgPSAwO1xuICBsZXQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgZGVwdGggPSAwO1xuICBsZXQgdmFsdWU7XG4gIGxldCBtZW1vID0ge307XG5cbiAgLyoqXG4gICAqIEhlbHBlcnNcbiAgICovXG5cbiAgY29uc3QgYWR2YW5jZSA9ICgpID0+IGlucHV0W2luZGV4KytdO1xuICBjb25zdCBwdXNoID0gbm9kZSA9PiB7XG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ3RleHQnICYmIHByZXYudHlwZSA9PT0gJ2RvdCcpIHtcbiAgICAgIHByZXYudHlwZSA9ICd0ZXh0JztcbiAgICB9XG5cbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICd0ZXh0JyAmJiBub2RlLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgcHJldi52YWx1ZSArPSBub2RlLnZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJsb2NrLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgbm9kZS5wYXJlbnQgPSBibG9jaztcbiAgICBub2RlLnByZXYgPSBwcmV2O1xuICAgIHByZXYgPSBub2RlO1xuICAgIHJldHVybiBub2RlO1xuICB9O1xuXG4gIHB1c2goeyB0eXBlOiAnYm9zJyB9KTtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBibG9jayA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgIHZhbHVlID0gYWR2YW5jZSgpO1xuXG4gICAgLyoqXG4gICAgICogSW52YWxpZCBjaGFyc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX1pFUk9fV0lEVEhfTk9CUkVBS19TUEFDRSB8fCB2YWx1ZSA9PT0gQ0hBUl9OT19CUkVBS19TUEFDRSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXNjYXBlZCBjaGFyc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0JBQ0tTTEFTSCkge1xuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWU6IChvcHRpb25zLmtlZXBFc2NhcGluZyA/IHZhbHVlIDogJycpICsgYWR2YW5jZSgpIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmlnaHQgc3F1YXJlIGJyYWNrZXQgKGxpdGVyYWwpOiAnXSdcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWU6ICdcXFxcJyArIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGVmdCBzcXVhcmUgYnJhY2tldDogJ1snXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgYnJhY2tldHMrKztcblxuICAgICAgbGV0IGNsb3NlZCA9IHRydWU7XG4gICAgICBsZXQgbmV4dDtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoICYmIChuZXh0ID0gYWR2YW5jZSgpKSkge1xuICAgICAgICB2YWx1ZSArPSBuZXh0O1xuXG4gICAgICAgIGlmIChuZXh0ID09PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICBicmFja2V0cysrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1NMQVNIKSB7XG4gICAgICAgICAgdmFsdWUgKz0gYWR2YW5jZSgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICBicmFja2V0cy0tO1xuXG4gICAgICAgICAgaWYgKGJyYWNrZXRzID09PSAwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJlbnRoZXNlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0xFRlRfUEFSRU5USEVTRVMpIHtcbiAgICAgIGJsb2NrID0gcHVzaCh7IHR5cGU6ICdwYXJlbicsIG5vZGVzOiBbXSB9KTtcbiAgICAgIHN0YWNrLnB1c2goYmxvY2spO1xuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfUklHSFRfUEFSRU5USEVTRVMpIHtcbiAgICAgIGlmIChibG9jay50eXBlICE9PSAncGFyZW4nKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJsb2NrID0gc3RhY2sucG9wKCk7XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGJsb2NrID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBRdW90ZXM6ICd8XCJ8YFxuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0RPVUJMRV9RVU9URSB8fCB2YWx1ZSA9PT0gQ0hBUl9TSU5HTEVfUVVPVEUgfHwgdmFsdWUgPT09IENIQVJfQkFDS1RJQ0spIHtcbiAgICAgIGxldCBvcGVuID0gdmFsdWU7XG4gICAgICBsZXQgbmV4dDtcblxuICAgICAgaWYgKG9wdGlvbnMua2VlcFF1b3RlcyAhPT0gdHJ1ZSkge1xuICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgKG5leHQgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgIGlmIChuZXh0ID09PSBDSEFSX0JBQ0tTTEFTSCkge1xuICAgICAgICAgIHZhbHVlICs9IG5leHQgKyBhZHZhbmNlKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCA9PT0gb3Blbikge1xuICAgICAgICAgIGlmIChvcHRpb25zLmtlZXBRdW90ZXMgPT09IHRydWUpIHZhbHVlICs9IG5leHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZSArPSBuZXh0O1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExlZnQgY3VybHkgYnJhY2U6ICd7J1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgIGRlcHRoKys7XG5cbiAgICAgIGxldCBkb2xsYXIgPSBwcmV2LnZhbHVlICYmIHByZXYudmFsdWUuc2xpY2UoLTEpID09PSAnJCcgfHwgYmxvY2suZG9sbGFyID09PSB0cnVlO1xuICAgICAgbGV0IGJyYWNlID0ge1xuICAgICAgICB0eXBlOiAnYnJhY2UnLFxuICAgICAgICBvcGVuOiB0cnVlLFxuICAgICAgICBjbG9zZTogZmFsc2UsXG4gICAgICAgIGRvbGxhcixcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGNvbW1hczogMCxcbiAgICAgICAgcmFuZ2VzOiAwLFxuICAgICAgICBub2RlczogW11cbiAgICAgIH07XG5cbiAgICAgIGJsb2NrID0gcHVzaChicmFjZSk7XG4gICAgICBzdGFjay5wdXNoKGJsb2NrKTtcbiAgICAgIHB1c2goeyB0eXBlOiAnb3BlbicsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmlnaHQgY3VybHkgYnJhY2U6ICd9J1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX1JJR0hUX0NVUkxZX0JSQUNFKSB7XG4gICAgICBpZiAoYmxvY2sudHlwZSAhPT0gJ2JyYWNlJykge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxldCB0eXBlID0gJ2Nsb3NlJztcbiAgICAgIGJsb2NrID0gc3RhY2sucG9wKCk7XG4gICAgICBibG9jay5jbG9zZSA9IHRydWU7XG5cbiAgICAgIHB1c2goeyB0eXBlLCB2YWx1ZSB9KTtcbiAgICAgIGRlcHRoLS07XG5cbiAgICAgIGJsb2NrID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tYTogJywnXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfQ09NTUEgJiYgZGVwdGggPiAwKSB7XG4gICAgICBpZiAoYmxvY2sucmFuZ2VzID4gMCkge1xuICAgICAgICBibG9jay5yYW5nZXMgPSAwO1xuICAgICAgICBsZXQgb3BlbiA9IGJsb2NrLm5vZGVzLnNoaWZ0KCk7XG4gICAgICAgIGJsb2NrLm5vZGVzID0gW29wZW4sIHsgdHlwZTogJ3RleHQnLCB2YWx1ZTogc3RyaW5naWZ5KGJsb2NrKSB9XTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdjb21tYScsIHZhbHVlIH0pO1xuICAgICAgYmxvY2suY29tbWFzKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3Q6ICcuJ1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0RPVCAmJiBkZXB0aCA+IDAgJiYgYmxvY2suY29tbWFzID09PSAwKSB7XG4gICAgICBsZXQgc2libGluZ3MgPSBibG9jay5ub2RlcztcblxuICAgICAgaWYgKGRlcHRoID09PSAwIHx8IHNpYmxpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmV2LnR5cGUgPT09ICdkb3QnKSB7XG4gICAgICAgIGJsb2NrLnJhbmdlID0gW107XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgIHByZXYudHlwZSA9ICdyYW5nZSc7XG5cbiAgICAgICAgaWYgKGJsb2NrLm5vZGVzLmxlbmd0aCAhPT0gMyAmJiBibG9jay5ub2Rlcy5sZW5ndGggIT09IDUpIHtcbiAgICAgICAgICBibG9jay5pbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBibG9jay5yYW5nZXMgPSAwO1xuICAgICAgICAgIHByZXYudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJsb2NrLnJhbmdlcysrO1xuICAgICAgICBibG9jay5hcmdzID0gW107XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldi50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIHNpYmxpbmdzLnBvcCgpO1xuXG4gICAgICAgIGxldCBiZWZvcmUgPSBzaWJsaW5nc1tzaWJsaW5ncy5sZW5ndGggLSAxXTtcbiAgICAgICAgYmVmb3JlLnZhbHVlICs9IHByZXYudmFsdWUgKyB2YWx1ZTtcbiAgICAgICAgcHJldiA9IGJlZm9yZTtcbiAgICAgICAgYmxvY2sucmFuZ2VzLS07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2RvdCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGV4dFxuICAgICAqL1xuXG4gICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gIH1cblxuICAvLyBNYXJrIGltYmFsYW5jZWQgYnJhY2VzIGFuZCBicmFja2V0cyBhcyBpbnZhbGlkXG4gIGRvIHtcbiAgICBibG9jayA9IHN0YWNrLnBvcCgpO1xuXG4gICAgaWYgKGJsb2NrLnR5cGUgIT09ICdyb290Jykge1xuICAgICAgYmxvY2subm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgaWYgKCFub2RlLm5vZGVzKSB7XG4gICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ29wZW4nKSBub2RlLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykgbm9kZS5pc0Nsb3NlID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoIW5vZGUubm9kZXMpIG5vZGUudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICBub2RlLmludmFsaWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gZ2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgYmxvY2sgb24gcGFyZW50Lm5vZGVzIChibG9jaydzIHNpYmxpbmdzKVxuICAgICAgbGV0IHBhcmVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgbGV0IGluZGV4ID0gcGFyZW50Lm5vZGVzLmluZGV4T2YoYmxvY2spO1xuICAgICAgLy8gcmVwbGFjZSB0aGUgKGludmFsaWQpIGJsb2NrIHdpdGggaXQncyBub2Rlc1xuICAgICAgcGFyZW50Lm5vZGVzLnNwbGljZShpbmRleCwgMSwgLi4uYmxvY2subm9kZXMpO1xuICAgIH1cbiAgfSB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCk7XG5cbiAgcHVzaCh7IHR5cGU6ICdlb3MnIH0pO1xuICByZXR1cm4gYXN0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9saWIvc3RyaW5naWZ5Jyk7XG5jb25zdCBjb21waWxlID0gcmVxdWlyZSgnLi9saWIvY29tcGlsZScpO1xuY29uc3QgZXhwYW5kID0gcmVxdWlyZSgnLi9saWIvZXhwYW5kJyk7XG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vbGliL3BhcnNlJyk7XG5cbi8qKlxuICogRXhwYW5kIHRoZSBnaXZlbiBwYXR0ZXJuIG9yIGNyZWF0ZSBhIHJlZ2V4LWNvbXBhdGlibGUgc3RyaW5nLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGNvbnNvbGUubG9nKGJyYWNlcygne2EsYixjfScsIHsgY29tcGlsZTogdHJ1ZSB9KSk7IC8vPT4gWycoYXxifGMpJ11cbiAqIGNvbnNvbGUubG9nKGJyYWNlcygne2EsYixjfScpKTsgLy89PiBbJ2EnLCAnYicsICdjJ11cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IGJyYWNlcyA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGxldCBvdXRwdXQgPSBbXTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICBmb3IgKGxldCBwYXR0ZXJuIG9mIGlucHV0KSB7XG4gICAgICBsZXQgcmVzdWx0ID0gYnJhY2VzLmNyZWF0ZShwYXR0ZXJuLCBvcHRpb25zKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goLi4ucmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IFtdLmNvbmNhdChicmFjZXMuY3JlYXRlKGlucHV0LCBvcHRpb25zKSk7XG4gIH1cblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmV4cGFuZCA9PT0gdHJ1ZSAmJiBvcHRpb25zLm5vZHVwZXMgPT09IHRydWUpIHtcbiAgICBvdXRwdXQgPSBbLi4ubmV3IFNldChvdXRwdXQpXTtcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYHN0cmAgd2l0aCB0aGUgZ2l2ZW4gYG9wdGlvbnNgLlxuICpcbiAqIGBgYGpzXG4gKiAvLyBicmFjZXMucGFyc2UocGF0dGVybiwgWywgb3B0aW9uc10pO1xuICogY29uc3QgYXN0ID0gYnJhY2VzLnBhcnNlKCdhL3tiLGN9L2QnKTtcbiAqIGNvbnNvbGUubG9nKGFzdCk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXR0ZXJuIEJyYWNlIHBhdHRlcm4gdG8gcGFyc2VcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gQVNUXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5wYXJzZSA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiBwYXJzZShpbnB1dCwgb3B0aW9ucyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGJyYWNlcyBzdHJpbmcgZnJvbSBhbiBBU1QsIG9yIGFuIEFTVCBub2RlLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGxldCBhc3QgPSBicmFjZXMucGFyc2UoJ2Zvby97YSxifS9iYXInKTtcbiAqIGNvbnNvbGUubG9nKHN0cmluZ2lmeShhc3Qubm9kZXNbMl0pKTsgLy89PiAne2EsYn0nXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIEJyYWNlIHBhdHRlcm4gb3IgQVNULlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgYW4gYXJyYXkgb2YgZXhwYW5kZWQgdmFsdWVzLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5icmFjZXMuc3RyaW5naWZ5ID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gc3RyaW5naWZ5KGJyYWNlcy5wYXJzZShpbnB1dCwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICB9XG4gIHJldHVybiBzdHJpbmdpZnkoaW5wdXQsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBDb21waWxlcyBhIGJyYWNlIHBhdHRlcm4gaW50byBhIHJlZ2V4LWNvbXBhdGlibGUsIG9wdGltaXplZCBzdHJpbmcuXG4gKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIG1haW4gW2JyYWNlc10oI2JyYWNlcykgZnVuY3Rpb24gYnkgZGVmYXVsdC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYnJhY2VzID0gcmVxdWlyZSgnYnJhY2VzJyk7XG4gKiBjb25zb2xlLmxvZyhicmFjZXMuY29tcGlsZSgnYS97YixjfS9kJykpO1xuICogLy89PiBbJ2EvKGJ8YykvZCddXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIEJyYWNlIHBhdHRlcm4gb3IgQVNULlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgYW4gYXJyYXkgb2YgZXhwYW5kZWQgdmFsdWVzLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5icmFjZXMuY29tcGlsZSA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgaW5wdXQgPSBicmFjZXMucGFyc2UoaW5wdXQsIG9wdGlvbnMpO1xuICB9XG4gIHJldHVybiBjb21waWxlKGlucHV0LCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogRXhwYW5kcyBhIGJyYWNlIHBhdHRlcm4gaW50byBhbiBhcnJheS4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZVxuICogbWFpbiBbYnJhY2VzXSgjYnJhY2VzKSBmdW5jdGlvbiB3aGVuIGBvcHRpb25zLmV4cGFuZGAgaXMgdHJ1ZS4gQmVmb3JlXG4gKiB1c2luZyB0aGlzIG1ldGhvZCBpdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IHJlYWQgdGhlIFtwZXJmb3JtYW5jZSBub3Rlc10oI3BlcmZvcm1hbmNlKSlcbiAqIGFuZCBhZHZhbnRhZ2VzIG9mIHVzaW5nIFsuY29tcGlsZV0oI2NvbXBpbGUpIGluc3RlYWQuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuICogY29uc29sZS5sb2coYnJhY2VzLmV4cGFuZCgnYS97YixjfS9kJykpO1xuICogLy89PiBbJ2EvYi9kJywgJ2EvYy9kJ107XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmAgQnJhY2UgcGF0dGVyblxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgYW4gYXJyYXkgb2YgZXhwYW5kZWQgdmFsdWVzLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5icmFjZXMuZXhwYW5kID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBpbnB1dCA9IGJyYWNlcy5wYXJzZShpbnB1dCwgb3B0aW9ucyk7XG4gIH1cblxuICBsZXQgcmVzdWx0ID0gZXhwYW5kKGlucHV0LCBvcHRpb25zKTtcblxuICAvLyBmaWx0ZXIgb3V0IGVtcHR5IHN0cmluZ3MgaWYgc3BlY2lmaWVkXG4gIGlmIChvcHRpb25zLm5vZW1wdHkgPT09IHRydWUpIHtcbiAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgLy8gZmlsdGVyIG91dCBkdXBsaWNhdGVzIGlmIHNwZWNpZmllZFxuICBpZiAob3B0aW9ucy5ub2R1cGVzID09PSB0cnVlKSB7XG4gICAgcmVzdWx0ID0gWy4uLm5ldyBTZXQocmVzdWx0KV07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBQcm9jZXNzZXMgYSBicmFjZSBwYXR0ZXJuIGFuZCByZXR1cm5zIGVpdGhlciBhbiBleHBhbmRlZCBhcnJheVxuICogKGlmIGBvcHRpb25zLmV4cGFuZGAgaXMgdHJ1ZSksIGEgaGlnaGx5IG9wdGltaXplZCByZWdleC1jb21wYXRpYmxlIHN0cmluZy5cbiAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgbWFpbiBbYnJhY2VzXSgjYnJhY2VzKSBmdW5jdGlvbi5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYnJhY2VzID0gcmVxdWlyZSgnYnJhY2VzJyk7XG4gKiBjb25zb2xlLmxvZyhicmFjZXMuY3JlYXRlKCd1c2VyLXsyMDAuLjMwMH0vcHJvamVjdC17YSxiLGN9LXsxLi4xMH0nKSlcbiAqIC8vPT4gJ3VzZXItKDIwWzAtOV18MlsxLTldWzAtOV18MzAwKS9wcm9qZWN0LShhfGJ8YyktKFsxLTldfDEwKSdcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBwYXR0ZXJuYCBCcmFjZSBwYXR0ZXJuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5jcmVhdGUgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAoaW5wdXQgPT09ICcnIHx8IGlucHV0Lmxlbmd0aCA8IDMpIHtcbiAgICByZXR1cm4gW2lucHV0XTtcbiAgfVxuXG4gcmV0dXJuIG9wdGlvbnMuZXhwYW5kICE9PSB0cnVlXG4gICAgPyBicmFjZXMuY29tcGlsZShpbnB1dCwgb3B0aW9ucylcbiAgICA6IGJyYWNlcy5leHBhbmQoaW5wdXQsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBFeHBvc2UgXCJicmFjZXNcIlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gYnJhY2VzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgV0lOX1NMQVNIID0gJ1xcXFxcXFxcLyc7XG5jb25zdCBXSU5fTk9fU0xBU0ggPSBgW14ke1dJTl9TTEFTSH1dYDtcblxuLyoqXG4gKiBQb3NpeCBnbG9iIHJlZ2V4XG4gKi9cblxuY29uc3QgRE9UX0xJVEVSQUwgPSAnXFxcXC4nO1xuY29uc3QgUExVU19MSVRFUkFMID0gJ1xcXFwrJztcbmNvbnN0IFFNQVJLX0xJVEVSQUwgPSAnXFxcXD8nO1xuY29uc3QgU0xBU0hfTElURVJBTCA9ICdcXFxcLyc7XG5jb25zdCBPTkVfQ0hBUiA9ICcoPz0uKSc7XG5jb25zdCBRTUFSSyA9ICdbXi9dJztcbmNvbnN0IEVORF9BTkNIT1IgPSBgKD86JHtTTEFTSF9MSVRFUkFMfXwkKWA7XG5jb25zdCBTVEFSVF9BTkNIT1IgPSBgKD86Xnwke1NMQVNIX0xJVEVSQUx9KWA7XG5jb25zdCBET1RTX1NMQVNIID0gYCR7RE9UX0xJVEVSQUx9ezEsMn0ke0VORF9BTkNIT1J9YDtcbmNvbnN0IE5PX0RPVCA9IGAoPyEke0RPVF9MSVRFUkFMfSlgO1xuY29uc3QgTk9fRE9UUyA9IGAoPyEke1NUQVJUX0FOQ0hPUn0ke0RPVFNfU0xBU0h9KWA7XG5jb25zdCBOT19ET1RfU0xBU0ggPSBgKD8hJHtET1RfTElURVJBTH17MCwxfSR7RU5EX0FOQ0hPUn0pYDtcbmNvbnN0IE5PX0RPVFNfU0xBU0ggPSBgKD8hJHtET1RTX1NMQVNIfSlgO1xuY29uc3QgUU1BUktfTk9fRE9UID0gYFteLiR7U0xBU0hfTElURVJBTH1dYDtcbmNvbnN0IFNUQVIgPSBgJHtRTUFSS30qP2A7XG5cbmNvbnN0IFBPU0lYX0NIQVJTID0ge1xuICBET1RfTElURVJBTCxcbiAgUExVU19MSVRFUkFMLFxuICBRTUFSS19MSVRFUkFMLFxuICBTTEFTSF9MSVRFUkFMLFxuICBPTkVfQ0hBUixcbiAgUU1BUkssXG4gIEVORF9BTkNIT1IsXG4gIERPVFNfU0xBU0gsXG4gIE5PX0RPVCxcbiAgTk9fRE9UUyxcbiAgTk9fRE9UX1NMQVNILFxuICBOT19ET1RTX1NMQVNILFxuICBRTUFSS19OT19ET1QsXG4gIFNUQVIsXG4gIFNUQVJUX0FOQ0hPUlxufTtcblxuLyoqXG4gKiBXaW5kb3dzIGdsb2IgcmVnZXhcbiAqL1xuXG5jb25zdCBXSU5ET1dTX0NIQVJTID0ge1xuICAuLi5QT1NJWF9DSEFSUyxcblxuICBTTEFTSF9MSVRFUkFMOiBgWyR7V0lOX1NMQVNIfV1gLFxuICBRTUFSSzogV0lOX05PX1NMQVNILFxuICBTVEFSOiBgJHtXSU5fTk9fU0xBU0h9Kj9gLFxuICBET1RTX1NMQVNIOiBgJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpYCxcbiAgTk9fRE9UOiBgKD8hJHtET1RfTElURVJBTH0pYCxcbiAgTk9fRE9UUzogYCg/ISg/Ol58WyR7V0lOX1NMQVNIfV0pJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIE5PX0RPVF9TTEFTSDogYCg/ISR7RE9UX0xJVEVSQUx9ezAsMX0oPzpbJHtXSU5fU0xBU0h9XXwkKSlgLFxuICBOT19ET1RTX1NMQVNIOiBgKD8hJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIFFNQVJLX05PX0RPVDogYFteLiR7V0lOX1NMQVNIfV1gLFxuICBTVEFSVF9BTkNIT1I6IGAoPzpefFske1dJTl9TTEFTSH1dKWAsXG4gIEVORF9BTkNIT1I6IGAoPzpbJHtXSU5fU0xBU0h9XXwkKWBcbn07XG5cbi8qKlxuICogUE9TSVggQnJhY2tldCBSZWdleFxuICovXG5cbmNvbnN0IFBPU0lYX1JFR0VYX1NPVVJDRSA9IHtcbiAgYWxudW06ICdhLXpBLVowLTknLFxuICBhbHBoYTogJ2EtekEtWicsXG4gIGFzY2lpOiAnXFxcXHgwMC1cXFxceDdGJyxcbiAgYmxhbms6ICcgXFxcXHQnLFxuICBjbnRybDogJ1xcXFx4MDAtXFxcXHgxRlxcXFx4N0YnLFxuICBkaWdpdDogJzAtOScsXG4gIGdyYXBoOiAnXFxcXHgyMS1cXFxceDdFJyxcbiAgbG93ZXI6ICdhLXonLFxuICBwcmludDogJ1xcXFx4MjAtXFxcXHg3RSAnLFxuICBwdW5jdDogJ1xcXFwtIVwiIyQlJlxcJygpXFxcXCorLC4vOjs8PT4/QFtcXFxcXV5fYHt8fX4nLFxuICBzcGFjZTogJyBcXFxcdFxcXFxyXFxcXG5cXFxcdlxcXFxmJyxcbiAgdXBwZXI6ICdBLVonLFxuICB3b3JkOiAnQS1aYS16MC05XycsXG4gIHhkaWdpdDogJ0EtRmEtZjAtOSdcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBNQVhfTEVOR1RIOiAxMDI0ICogNjQsXG4gIFBPU0lYX1JFR0VYX1NPVVJDRSxcblxuICAvLyByZWd1bGFyIGV4cHJlc3Npb25zXG4gIFJFR0VYX0JBQ0tTTEFTSDogL1xcXFwoPyFbKis/XiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUzogL15bXkAhW1xcXS4sJCorP157fSgpfFxcXFwvXSsvLFxuICBSRUdFWF9TUEVDSUFMX0NIQVJTOiAvWy0qKz8uXiR7fSh8KVtcXF1dLyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGOiAvKFxcXFw/KSgoXFxXKShcXDMqKSkvZyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUw6IC8oWy0qKz8uXiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9SRU1PVkVfQkFDS1NMQVNIOiAvKD86XFxbLio/W15cXFxcXVxcXXxcXFxcKD89LikpL2csXG5cbiAgLy8gUmVwbGFjZSBnbG9icyB3aXRoIGVxdWl2YWxlbnQgcGF0dGVybnMgdG8gcmVkdWNlIHBhcnNpbmcgdGltZS5cbiAgUkVQTEFDRU1FTlRTOiB7XG4gICAgJyoqKic6ICcqJyxcbiAgICAnKiovKionOiAnKionLFxuICAgICcqKi8qKi8qKic6ICcqKidcbiAgfSxcblxuICAvLyBEaWdpdHNcbiAgQ0hBUl8wOiA0OCwgLyogMCAqL1xuICBDSEFSXzk6IDU3LCAvKiA5ICovXG5cbiAgLy8gQWxwaGFiZXQgY2hhcnMuXG4gIENIQVJfVVBQRVJDQVNFX0E6IDY1LCAvKiBBICovXG4gIENIQVJfTE9XRVJDQVNFX0E6IDk3LCAvKiBhICovXG4gIENIQVJfVVBQRVJDQVNFX1o6IDkwLCAvKiBaICovXG4gIENIQVJfTE9XRVJDQVNFX1o6IDEyMiwgLyogeiAqL1xuXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUzogNDAsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUzogNDEsIC8qICkgKi9cblxuICBDSEFSX0FTVEVSSVNLOiA0MiwgLyogKiAqL1xuXG4gIC8vIE5vbi1hbHBoYWJldGljIGNoYXJzLlxuICBDSEFSX0FNUEVSU0FORDogMzgsIC8qICYgKi9cbiAgQ0hBUl9BVDogNjQsIC8qIEAgKi9cbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSDogOTIsIC8qIFxcICovXG4gIENIQVJfQ0FSUklBR0VfUkVUVVJOOiAxMywgLyogXFxyICovXG4gIENIQVJfQ0lSQ1VNRkxFWF9BQ0NFTlQ6IDk0LCAvKiBeICovXG4gIENIQVJfQ09MT046IDU4LCAvKiA6ICovXG4gIENIQVJfQ09NTUE6IDQ0LCAvKiAsICovXG4gIENIQVJfRE9UOiA0NiwgLyogLiAqL1xuICBDSEFSX0RPVUJMRV9RVU9URTogMzQsIC8qIFwiICovXG4gIENIQVJfRVFVQUw6IDYxLCAvKiA9ICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSzogMzMsIC8qICEgKi9cbiAgQ0hBUl9GT1JNX0ZFRUQ6IDEyLCAvKiBcXGYgKi9cbiAgQ0hBUl9GT1JXQVJEX1NMQVNIOiA0NywgLyogLyAqL1xuICBDSEFSX0dSQVZFX0FDQ0VOVDogOTYsIC8qIGAgKi9cbiAgQ0hBUl9IQVNIOiAzNSwgLyogIyAqL1xuICBDSEFSX0hZUEhFTl9NSU5VUzogNDUsIC8qIC0gKi9cbiAgQ0hBUl9MRUZUX0FOR0xFX0JSQUNLRVQ6IDYwLCAvKiA8ICovXG4gIENIQVJfTEVGVF9DVVJMWV9CUkFDRTogMTIzLCAvKiB7ICovXG4gIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVDogOTEsIC8qIFsgKi9cbiAgQ0hBUl9MSU5FX0ZFRUQ6IDEwLCAvKiBcXG4gKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRTogMTYwLCAvKiBcXHUwMEEwICovXG4gIENIQVJfUEVSQ0VOVDogMzcsIC8qICUgKi9cbiAgQ0hBUl9QTFVTOiA0MywgLyogKyAqL1xuICBDSEFSX1FVRVNUSU9OX01BUks6IDYzLCAvKiA/ICovXG4gIENIQVJfUklHSFRfQU5HTEVfQlJBQ0tFVDogNjIsIC8qID4gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRTogMTI1LCAvKiB9ICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQ6IDkzLCAvKiBdICovXG4gIENIQVJfU0VNSUNPTE9OOiA1OSwgLyogOyAqL1xuICBDSEFSX1NJTkdMRV9RVU9URTogMzksIC8qICcgKi9cbiAgQ0hBUl9TUEFDRTogMzIsIC8qICAgKi9cbiAgQ0hBUl9UQUI6IDksIC8qIFxcdCAqL1xuICBDSEFSX1VOREVSU0NPUkU6IDk1LCAvKiBfICovXG4gIENIQVJfVkVSVElDQUxfTElORTogMTI0LCAvKiB8ICovXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFOiA2NTI3OSwgLyogXFx1RkVGRiAqL1xuXG4gIFNFUDogcGF0aC5zZXAsXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBFWFRHTE9CX0NIQVJTXG4gICAqL1xuXG4gIGV4dGdsb2JDaGFycyhjaGFycykge1xuICAgIHJldHVybiB7XG4gICAgICAnISc6IHsgdHlwZTogJ25lZ2F0ZScsIG9wZW46ICcoPzooPyEoPzonLCBjbG9zZTogYCkpJHtjaGFycy5TVEFSfSlgIH0sXG4gICAgICAnPyc6IHsgdHlwZTogJ3FtYXJrJywgb3BlbjogJyg/OicsIGNsb3NlOiAnKT8nIH0sXG4gICAgICAnKyc6IHsgdHlwZTogJ3BsdXMnLCBvcGVuOiAnKD86JywgY2xvc2U6ICcpKycgfSxcbiAgICAgICcqJzogeyB0eXBlOiAnc3RhcicsIG9wZW46ICcoPzonLCBjbG9zZTogJykqJyB9LFxuICAgICAgJ0AnOiB7IHR5cGU6ICdhdCcsIG9wZW46ICcoPzonLCBjbG9zZTogJyknIH1cbiAgICB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgR0xPQl9DSEFSU1xuICAgKi9cblxuICBnbG9iQ2hhcnMod2luMzIpIHtcbiAgICByZXR1cm4gd2luMzIgPT09IHRydWUgPyBXSU5ET1dTX0NIQVJTIDogUE9TSVhfQ0hBUlM7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCB3aW4zMiA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5jb25zdCB7XG4gIFJFR0VYX0JBQ0tTTEFTSCxcbiAgUkVHRVhfUkVNT1ZFX0JBQ0tTTEFTSCxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSUyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUxcbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG5leHBvcnRzLmlzT2JqZWN0ID0gdmFsID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuZXhwb3J0cy5oYXNSZWdleENoYXJzID0gc3RyID0+IFJFR0VYX1NQRUNJQUxfQ0hBUlMudGVzdChzdHIpO1xuZXhwb3J0cy5pc1JlZ2V4Q2hhciA9IHN0ciA9PiBzdHIubGVuZ3RoID09PSAxICYmIGV4cG9ydHMuaGFzUmVnZXhDaGFycyhzdHIpO1xuZXhwb3J0cy5lc2NhcGVSZWdleCA9IHN0ciA9PiBzdHIucmVwbGFjZShSRUdFWF9TUEVDSUFMX0NIQVJTX0dMT0JBTCwgJ1xcXFwkMScpO1xuZXhwb3J0cy50b1Bvc2l4U2xhc2hlcyA9IHN0ciA9PiBzdHIucmVwbGFjZShSRUdFWF9CQUNLU0xBU0gsICcvJyk7XG5cbmV4cG9ydHMucmVtb3ZlQmFja3NsYXNoZXMgPSBzdHIgPT4ge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoUkVHRVhfUkVNT1ZFX0JBQ0tTTEFTSCwgbWF0Y2ggPT4ge1xuICAgIHJldHVybiBtYXRjaCA9PT0gJ1xcXFwnID8gJycgOiBtYXRjaDtcbiAgfSk7XG59O1xuXG5leHBvcnRzLnN1cHBvcnRzTG9va2JlaGluZHMgPSAoKSA9PiB7XG4gIGNvbnN0IHNlZ3MgPSBwcm9jZXNzLnZlcnNpb24uc2xpY2UoMSkuc3BsaXQoJy4nKS5tYXAoTnVtYmVyKTtcbiAgaWYgKHNlZ3MubGVuZ3RoID09PSAzICYmIHNlZ3NbMF0gPj0gOSB8fCAoc2Vnc1swXSA9PT0gOCAmJiBzZWdzWzFdID49IDEwKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydHMuaXNXaW5kb3dzID0gb3B0aW9ucyA9PiB7XG4gIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLndpbmRvd3MgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBvcHRpb25zLndpbmRvd3M7XG4gIH1cbiAgcmV0dXJuIHdpbjMyID09PSB0cnVlIHx8IHBhdGguc2VwID09PSAnXFxcXCc7XG59O1xuXG5leHBvcnRzLmVzY2FwZUxhc3QgPSAoaW5wdXQsIGNoYXIsIGxhc3RJZHgpID0+IHtcbiAgY29uc3QgaWR4ID0gaW5wdXQubGFzdEluZGV4T2YoY2hhciwgbGFzdElkeCk7XG4gIGlmIChpZHggPT09IC0xKSByZXR1cm4gaW5wdXQ7XG4gIGlmIChpbnB1dFtpZHggLSAxXSA9PT0gJ1xcXFwnKSByZXR1cm4gZXhwb3J0cy5lc2NhcGVMYXN0KGlucHV0LCBjaGFyLCBpZHggLSAxKTtcbiAgcmV0dXJuIGAke2lucHV0LnNsaWNlKDAsIGlkeCl9XFxcXCR7aW5wdXQuc2xpY2UoaWR4KX1gO1xufTtcblxuZXhwb3J0cy5yZW1vdmVQcmVmaXggPSAoaW5wdXQsIHN0YXRlID0ge30pID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0O1xuICBpZiAob3V0cHV0LnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICBvdXRwdXQgPSBvdXRwdXQuc2xpY2UoMik7XG4gICAgc3RhdGUucHJlZml4ID0gJy4vJztcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuZXhwb3J0cy53cmFwT3V0cHV0ID0gKGlucHV0LCBzdGF0ZSA9IHt9LCBvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3QgcHJlcGVuZCA9IG9wdGlvbnMuY29udGFpbnMgPyAnJyA6ICdeJztcbiAgY29uc3QgYXBwZW5kID0gb3B0aW9ucy5jb250YWlucyA/ICcnIDogJyQnO1xuXG4gIGxldCBvdXRwdXQgPSBgJHtwcmVwZW5kfSg/OiR7aW5wdXR9KSR7YXBwZW5kfWA7XG4gIGlmIChzdGF0ZS5uZWdhdGVkID09PSB0cnVlKSB7XG4gICAgb3V0cHV0ID0gYCg/Ol4oPyEke291dHB1dH0pLiokKWA7XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3Qge1xuICBDSEFSX0FTVEVSSVNLLCAgICAgICAgICAgICAvKiAqICovXG4gIENIQVJfQVQsICAgICAgICAgICAgICAgICAgIC8qIEAgKi9cbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSCwgICAgICAgLyogXFwgKi9cbiAgQ0hBUl9DT01NQSwgICAgICAgICAgICAgICAgLyogLCAqL1xuICBDSEFSX0RPVCwgICAgICAgICAgICAgICAgICAvKiAuICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSywgICAgIC8qICEgKi9cbiAgQ0hBUl9GT1JXQVJEX1NMQVNILCAgICAgICAgLyogLyAqL1xuICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UsICAgICAvKiB7ICovXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUywgICAgIC8qICggKi9cbiAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VULCAgLyogWyAqL1xuICBDSEFSX1BMVVMsICAgICAgICAgICAgICAgICAvKiArICovXG4gIENIQVJfUVVFU1RJT05fTUFSSywgICAgICAgIC8qID8gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSwgICAgLyogfSAqL1xuICBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTLCAgICAvKiApICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgIC8qIF0gKi9cbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG5jb25zdCBpc1BhdGhTZXBhcmF0b3IgPSBjb2RlID0+IHtcbiAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCB8fCBjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIO1xufTtcblxuY29uc3QgZGVwdGggPSB0b2tlbiA9PiB7XG4gIGlmICh0b2tlbi5pc1ByZWZpeCAhPT0gdHJ1ZSkge1xuICAgIHRva2VuLmRlcHRoID0gdG9rZW4uaXNHbG9ic3RhciA/IEluZmluaXR5IDogMTtcbiAgfVxufTtcblxuLyoqXG4gKiBRdWlja2x5IHNjYW5zIGEgZ2xvYiBwYXR0ZXJuIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgaGFuZGZ1bCBvZlxuICogdXNlZnVsIHByb3BlcnRpZXMsIGxpa2UgYGlzR2xvYmAsIGBwYXRoYCAodGhlIGxlYWRpbmcgbm9uLWdsb2IsIGlmIGl0IGV4aXN0cyksXG4gKiBgZ2xvYmAgKHRoZSBhY3R1YWwgcGF0dGVybiksIGBuZWdhdGVkYCAodHJ1ZSBpZiB0aGUgcGF0aCBzdGFydHMgd2l0aCBgIWAgYnV0IG5vdFxuICogd2l0aCBgIShgKSBhbmQgYG5lZ2F0ZWRFeHRnbG9iYCAodHJ1ZSBpZiB0aGUgcGF0aCBzdGFydHMgd2l0aCBgIShgKS5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcG0gPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIGNvbnNvbGUubG9nKHBtLnNjYW4oJ2Zvby9iYXIvKi5qcycpKTtcbiAqIHsgaXNHbG9iOiB0cnVlLCBpbnB1dDogJ2Zvby9iYXIvKi5qcycsIGJhc2U6ICdmb28vYmFyJywgZ2xvYjogJyouanMnIH1cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggdG9rZW5zIGFuZCByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5jb25zdCBzY2FuID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGNvbnN0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aCAtIDE7XG4gIGNvbnN0IHNjYW5Ub0VuZCA9IG9wdHMucGFydHMgPT09IHRydWUgfHwgb3B0cy5zY2FuVG9FbmQgPT09IHRydWU7XG4gIGNvbnN0IHNsYXNoZXMgPSBbXTtcbiAgY29uc3QgdG9rZW5zID0gW107XG4gIGNvbnN0IHBhcnRzID0gW107XG5cbiAgbGV0IHN0ciA9IGlucHV0O1xuICBsZXQgaW5kZXggPSAtMTtcbiAgbGV0IHN0YXJ0ID0gMDtcbiAgbGV0IGxhc3RJbmRleCA9IDA7XG4gIGxldCBpc0JyYWNlID0gZmFsc2U7XG4gIGxldCBpc0JyYWNrZXQgPSBmYWxzZTtcbiAgbGV0IGlzR2xvYiA9IGZhbHNlO1xuICBsZXQgaXNFeHRnbG9iID0gZmFsc2U7XG4gIGxldCBpc0dsb2JzdGFyID0gZmFsc2U7XG4gIGxldCBicmFjZUVzY2FwZWQgPSBmYWxzZTtcbiAgbGV0IGJhY2tzbGFzaGVzID0gZmFsc2U7XG4gIGxldCBuZWdhdGVkID0gZmFsc2U7XG4gIGxldCBuZWdhdGVkRXh0Z2xvYiA9IGZhbHNlO1xuICBsZXQgZmluaXNoZWQgPSBmYWxzZTtcbiAgbGV0IGJyYWNlcyA9IDA7XG4gIGxldCBwcmV2O1xuICBsZXQgY29kZTtcbiAgbGV0IHRva2VuID0geyB2YWx1ZTogJycsIGRlcHRoOiAwLCBpc0dsb2I6IGZhbHNlIH07XG5cbiAgY29uc3QgZW9zID0gKCkgPT4gaW5kZXggPj0gbGVuZ3RoO1xuICBjb25zdCBwZWVrID0gKCkgPT4gc3RyLmNoYXJDb2RlQXQoaW5kZXggKyAxKTtcbiAgY29uc3QgYWR2YW5jZSA9ICgpID0+IHtcbiAgICBwcmV2ID0gY29kZTtcbiAgICByZXR1cm4gc3RyLmNoYXJDb2RlQXQoKytpbmRleCk7XG4gIH07XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY29kZSA9IGFkdmFuY2UoKTtcbiAgICBsZXQgbmV4dDtcblxuICAgIGlmIChjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgIGNvZGUgPSBhZHZhbmNlKCk7XG5cbiAgICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgICAgYnJhY2VFc2NhcGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChicmFjZUVzY2FwZWQgPT09IHRydWUgfHwgY29kZSA9PT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNFKSB7XG4gICAgICBicmFjZXMrKztcblxuICAgICAgd2hpbGUgKGVvcygpICE9PSB0cnVlICYmIChjb2RlID0gYWR2YW5jZSgpKSkge1xuICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICAgIGFkdmFuY2UoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgICAgICBicmFjZXMrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChicmFjZUVzY2FwZWQgIT09IHRydWUgJiYgY29kZSA9PT0gQ0hBUl9ET1QgJiYgKGNvZGUgPSBhZHZhbmNlKCkpID09PSBDSEFSX0RPVCkge1xuICAgICAgICAgIGlzQnJhY2UgPSB0b2tlbi5pc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJyYWNlRXNjYXBlZCAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0NPTU1BKSB7XG4gICAgICAgICAgaXNCcmFjZSA9IHRva2VuLmlzQnJhY2UgPSB0cnVlO1xuICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSkge1xuICAgICAgICAgIGJyYWNlcy0tO1xuXG4gICAgICAgICAgaWYgKGJyYWNlcyA9PT0gMCkge1xuICAgICAgICAgICAgYnJhY2VFc2NhcGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpc0JyYWNlID0gdG9rZW4uaXNCcmFjZSA9IHRydWU7XG4gICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgc2xhc2hlcy5wdXNoKGluZGV4KTtcbiAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgIHRva2VuID0geyB2YWx1ZTogJycsIGRlcHRoOiAwLCBpc0dsb2I6IGZhbHNlIH07XG5cbiAgICAgIGlmIChmaW5pc2hlZCA9PT0gdHJ1ZSkgY29udGludWU7XG4gICAgICBpZiAocHJldiA9PT0gQ0hBUl9ET1QgJiYgaW5kZXggPT09IChzdGFydCArIDEpKSB7XG4gICAgICAgIHN0YXJ0ICs9IDI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5ub2V4dCAhPT0gdHJ1ZSkge1xuICAgICAgY29uc3QgaXNFeHRnbG9iQ2hhciA9IGNvZGUgPT09IENIQVJfUExVU1xuICAgICAgICB8fCBjb2RlID09PSBDSEFSX0FUXG4gICAgICAgIHx8IGNvZGUgPT09IENIQVJfQVNURVJJU0tcbiAgICAgICAgfHwgY29kZSA9PT0gQ0hBUl9RVUVTVElPTl9NQVJLXG4gICAgICAgIHx8IGNvZGUgPT09IENIQVJfRVhDTEFNQVRJT05fTUFSSztcblxuICAgICAgaWYgKGlzRXh0Z2xvYkNoYXIgPT09IHRydWUgJiYgcGVlaygpID09PSBDSEFSX0xFRlRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgaXNFeHRnbG9iID0gdG9rZW4uaXNFeHRnbG9iID0gdHJ1ZTtcbiAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9FWENMQU1BVElPTl9NQVJLICYmIGluZGV4ID09PSBzdGFydCkge1xuICAgICAgICAgIG5lZ2F0ZWRFeHRnbG9iID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKGNvZGUgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29kZSA9IGFkdmFuY2UoKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTKSB7XG4gICAgICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBDSEFSX0FTVEVSSVNLKSB7XG4gICAgICBpZiAocHJldiA9PT0gQ0hBUl9BU1RFUklTSykgaXNHbG9ic3RhciA9IHRva2VuLmlzR2xvYnN0YXIgPSB0cnVlO1xuICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBDSEFSX1FVRVNUSU9OX01BUkspIHtcbiAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKG5leHQgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgIGlmIChuZXh0ID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgICAgYmFja3NsYXNoZXMgPSB0b2tlbi5iYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgICAgYWR2YW5jZSgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICBpc0JyYWNrZXQgPSB0b2tlbi5pc0JyYWNrZXQgPSB0cnVlO1xuICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChvcHRzLm5vbmVnYXRlICE9PSB0cnVlICYmIGNvZGUgPT09IENIQVJfRVhDTEFNQVRJT05fTUFSSyAmJiBpbmRleCA9PT0gc3RhcnQpIHtcbiAgICAgIG5lZ2F0ZWQgPSB0b2tlbi5uZWdhdGVkID0gdHJ1ZTtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5ub3BhcmVuICE9PSB0cnVlICYmIGNvZGUgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKGNvZGUgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgICAgICAgYmFja3NsYXNoZXMgPSB0b2tlbi5iYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgICAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfUklHSFRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChpc0dsb2IgPT09IHRydWUpIHtcbiAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMubm9leHQgPT09IHRydWUpIHtcbiAgICBpc0V4dGdsb2IgPSBmYWxzZTtcbiAgICBpc0dsb2IgPSBmYWxzZTtcbiAgfVxuXG4gIGxldCBiYXNlID0gc3RyO1xuICBsZXQgcHJlZml4ID0gJyc7XG4gIGxldCBnbG9iID0gJyc7XG5cbiAgaWYgKHN0YXJ0ID4gMCkge1xuICAgIHByZWZpeCA9IHN0ci5zbGljZSgwLCBzdGFydCk7XG4gICAgc3RyID0gc3RyLnNsaWNlKHN0YXJ0KTtcbiAgICBsYXN0SW5kZXggLT0gc3RhcnQ7XG4gIH1cblxuICBpZiAoYmFzZSAmJiBpc0dsb2IgPT09IHRydWUgJiYgbGFzdEluZGV4ID4gMCkge1xuICAgIGJhc2UgPSBzdHIuc2xpY2UoMCwgbGFzdEluZGV4KTtcbiAgICBnbG9iID0gc3RyLnNsaWNlKGxhc3RJbmRleCk7XG4gIH0gZWxzZSBpZiAoaXNHbG9iID09PSB0cnVlKSB7XG4gICAgYmFzZSA9ICcnO1xuICAgIGdsb2IgPSBzdHI7XG4gIH0gZWxzZSB7XG4gICAgYmFzZSA9IHN0cjtcbiAgfVxuXG4gIGlmIChiYXNlICYmIGJhc2UgIT09ICcnICYmIGJhc2UgIT09ICcvJyAmJiBiYXNlICE9PSBzdHIpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGJhc2UuY2hhckNvZGVBdChiYXNlLmxlbmd0aCAtIDEpKSkge1xuICAgICAgYmFzZSA9IGJhc2Uuc2xpY2UoMCwgLTEpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLnVuZXNjYXBlID09PSB0cnVlKSB7XG4gICAgaWYgKGdsb2IpIGdsb2IgPSB1dGlscy5yZW1vdmVCYWNrc2xhc2hlcyhnbG9iKTtcblxuICAgIGlmIChiYXNlICYmIGJhY2tzbGFzaGVzID09PSB0cnVlKSB7XG4gICAgICBiYXNlID0gdXRpbHMucmVtb3ZlQmFja3NsYXNoZXMoYmFzZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RhdGUgPSB7XG4gICAgcHJlZml4LFxuICAgIGlucHV0LFxuICAgIHN0YXJ0LFxuICAgIGJhc2UsXG4gICAgZ2xvYixcbiAgICBpc0JyYWNlLFxuICAgIGlzQnJhY2tldCxcbiAgICBpc0dsb2IsXG4gICAgaXNFeHRnbG9iLFxuICAgIGlzR2xvYnN0YXIsXG4gICAgbmVnYXRlZCxcbiAgICBuZWdhdGVkRXh0Z2xvYlxuICB9O1xuXG4gIGlmIChvcHRzLnRva2VucyA9PT0gdHJ1ZSkge1xuICAgIHN0YXRlLm1heERlcHRoID0gMDtcbiAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgdG9rZW5zLnB1c2godG9rZW4pO1xuICAgIH1cbiAgICBzdGF0ZS50b2tlbnMgPSB0b2tlbnM7XG4gIH1cblxuICBpZiAob3B0cy5wYXJ0cyA9PT0gdHJ1ZSB8fCBvcHRzLnRva2VucyA9PT0gdHJ1ZSkge1xuICAgIGxldCBwcmV2SW5kZXg7XG5cbiAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBzbGFzaGVzLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgIGNvbnN0IG4gPSBwcmV2SW5kZXggPyBwcmV2SW5kZXggKyAxIDogc3RhcnQ7XG4gICAgICBjb25zdCBpID0gc2xhc2hlc1tpZHhdO1xuICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dC5zbGljZShuLCBpKTtcbiAgICAgIGlmIChvcHRzLnRva2Vucykge1xuICAgICAgICBpZiAoaWR4ID09PSAwICYmIHN0YXJ0ICE9PSAwKSB7XG4gICAgICAgICAgdG9rZW5zW2lkeF0uaXNQcmVmaXggPSB0cnVlO1xuICAgICAgICAgIHRva2Vuc1tpZHhdLnZhbHVlID0gcHJlZml4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRva2Vuc1tpZHhdLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZGVwdGgodG9rZW5zW2lkeF0pO1xuICAgICAgICBzdGF0ZS5tYXhEZXB0aCArPSB0b2tlbnNbaWR4XS5kZXB0aDtcbiAgICAgIH1cbiAgICAgIGlmIChpZHggIT09IDAgfHwgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIHBhcnRzLnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgICAgcHJldkluZGV4ID0gaTtcbiAgICB9XG5cbiAgICBpZiAocHJldkluZGV4ICYmIHByZXZJbmRleCArIDEgPCBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQuc2xpY2UocHJldkluZGV4ICsgMSk7XG4gICAgICBwYXJ0cy5wdXNoKHZhbHVlKTtcblxuICAgICAgaWYgKG9wdHMudG9rZW5zKSB7XG4gICAgICAgIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgZGVwdGgodG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXSk7XG4gICAgICAgIHN0YXRlLm1heERlcHRoICs9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0uZGVwdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGUuc2xhc2hlcyA9IHNsYXNoZXM7XG4gICAgc3RhdGUucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gc2NhbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IHtcbiAgTUFYX0xFTkdUSCxcbiAgUE9TSVhfUkVHRVhfU09VUkNFLFxuICBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGLFxuICBSRVBMQUNFTUVOVFNcbn0gPSBjb25zdGFudHM7XG5cbi8qKlxuICogSGVscGVyc1xuICovXG5cbmNvbnN0IGV4cGFuZFJhbmdlID0gKGFyZ3MsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zLmV4cGFuZFJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuZXhwYW5kUmFuZ2UoLi4uYXJncywgb3B0aW9ucyk7XG4gIH1cblxuICBhcmdzLnNvcnQoKTtcbiAgY29uc3QgdmFsdWUgPSBgWyR7YXJncy5qb2luKCctJyl9XWA7XG5cbiAgdHJ5IHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3ICovXG4gICAgbmV3IFJlZ0V4cCh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmV0dXJuIGFyZ3MubWFwKHYgPT4gdXRpbHMuZXNjYXBlUmVnZXgodikpLmpvaW4oJy4uJyk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgbWVzc2FnZSBmb3IgYSBzeW50YXggZXJyb3JcbiAqL1xuXG5jb25zdCBzeW50YXhFcnJvciA9ICh0eXBlLCBjaGFyKSA9PiB7XG4gIHJldHVybiBgTWlzc2luZyAke3R5cGV9OiBcIiR7Y2hhcn1cIiAtIHVzZSBcIlxcXFxcXFxcJHtjaGFyfVwiIHRvIG1hdGNoIGxpdGVyYWwgY2hhcmFjdGVyc2A7XG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBpbnB1dCBzdHJpbmcuXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cblxuY29uc3QgcGFyc2UgPSAoaW5wdXQsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIHN0cmluZycpO1xuICB9XG5cbiAgaW5wdXQgPSBSRVBMQUNFTUVOVFNbaW5wdXRdIHx8IGlucHV0O1xuXG4gIGNvbnN0IG9wdHMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgY29uc3QgbWF4ID0gdHlwZW9mIG9wdHMubWF4TGVuZ3RoID09PSAnbnVtYmVyJyA/IE1hdGgubWluKE1BWF9MRU5HVEgsIG9wdHMubWF4TGVuZ3RoKSA6IE1BWF9MRU5HVEg7XG5cbiAgbGV0IGxlbiA9IGlucHV0Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IG1heCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW5wdXQgbGVuZ3RoOiAke2xlbn0sIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIGxlbmd0aDogJHttYXh9YCk7XG4gIH1cblxuICBjb25zdCBib3MgPSB7IHR5cGU6ICdib3MnLCB2YWx1ZTogJycsIG91dHB1dDogb3B0cy5wcmVwZW5kIHx8ICcnIH07XG4gIGNvbnN0IHRva2VucyA9IFtib3NdO1xuXG4gIGNvbnN0IGNhcHR1cmUgPSBvcHRzLmNhcHR1cmUgPyAnJyA6ICc/Oic7XG4gIGNvbnN0IHdpbjMyID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuXG4gIC8vIGNyZWF0ZSBjb25zdGFudHMgYmFzZWQgb24gcGxhdGZvcm0sIGZvciB3aW5kb3dzIG9yIHBvc2l4XG4gIGNvbnN0IFBMQVRGT1JNX0NIQVJTID0gY29uc3RhbnRzLmdsb2JDaGFycyh3aW4zMik7XG4gIGNvbnN0IEVYVEdMT0JfQ0hBUlMgPSBjb25zdGFudHMuZXh0Z2xvYkNoYXJzKFBMQVRGT1JNX0NIQVJTKTtcblxuICBjb25zdCB7XG4gICAgRE9UX0xJVEVSQUwsXG4gICAgUExVU19MSVRFUkFMLFxuICAgIFNMQVNIX0xJVEVSQUwsXG4gICAgT05FX0NIQVIsXG4gICAgRE9UU19TTEFTSCxcbiAgICBOT19ET1QsXG4gICAgTk9fRE9UX1NMQVNILFxuICAgIE5PX0RPVFNfU0xBU0gsXG4gICAgUU1BUkssXG4gICAgUU1BUktfTk9fRE9ULFxuICAgIFNUQVIsXG4gICAgU1RBUlRfQU5DSE9SXG4gIH0gPSBQTEFURk9STV9DSEFSUztcblxuICBjb25zdCBnbG9ic3RhciA9IG9wdHMgPT4ge1xuICAgIHJldHVybiBgKCR7Y2FwdHVyZX0oPzooPyEke1NUQVJUX0FOQ0hPUn0ke29wdHMuZG90ID8gRE9UU19TTEFTSCA6IERPVF9MSVRFUkFMfSkuKSo/KWA7XG4gIH07XG5cbiAgY29uc3Qgbm9kb3QgPSBvcHRzLmRvdCA/ICcnIDogTk9fRE9UO1xuICBjb25zdCBxbWFya05vRG90ID0gb3B0cy5kb3QgPyBRTUFSSyA6IFFNQVJLX05PX0RPVDtcbiAgbGV0IHN0YXIgPSBvcHRzLmJhc2ggPT09IHRydWUgPyBnbG9ic3RhcihvcHRzKSA6IFNUQVI7XG5cbiAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgIHN0YXIgPSBgKCR7c3Rhcn0pYDtcbiAgfVxuXG4gIC8vIG1pbmltYXRjaCBvcHRpb25zIHN1cHBvcnRcbiAgaWYgKHR5cGVvZiBvcHRzLm5vZXh0ID09PSAnYm9vbGVhbicpIHtcbiAgICBvcHRzLm5vZXh0Z2xvYiA9IG9wdHMubm9leHQ7XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICBpbnB1dCxcbiAgICBpbmRleDogLTEsXG4gICAgc3RhcnQ6IDAsXG4gICAgZG90OiBvcHRzLmRvdCA9PT0gdHJ1ZSxcbiAgICBjb25zdW1lZDogJycsXG4gICAgb3V0cHV0OiAnJyxcbiAgICBwcmVmaXg6ICcnLFxuICAgIGJhY2t0cmFjazogZmFsc2UsXG4gICAgbmVnYXRlZDogZmFsc2UsXG4gICAgYnJhY2tldHM6IDAsXG4gICAgYnJhY2VzOiAwLFxuICAgIHBhcmVuczogMCxcbiAgICBxdW90ZXM6IDAsXG4gICAgZ2xvYnN0YXI6IGZhbHNlLFxuICAgIHRva2Vuc1xuICB9O1xuXG4gIGlucHV0ID0gdXRpbHMucmVtb3ZlUHJlZml4KGlucHV0LCBzdGF0ZSk7XG4gIGxlbiA9IGlucHV0Lmxlbmd0aDtcblxuICBjb25zdCBleHRnbG9icyA9IFtdO1xuICBjb25zdCBicmFjZXMgPSBbXTtcbiAgY29uc3Qgc3RhY2sgPSBbXTtcbiAgbGV0IHByZXYgPSBib3M7XG4gIGxldCB2YWx1ZTtcblxuICAvKipcbiAgICogVG9rZW5pemluZyBoZWxwZXJzXG4gICAqL1xuXG4gIGNvbnN0IGVvcyA9ICgpID0+IHN0YXRlLmluZGV4ID09PSBsZW4gLSAxO1xuICBjb25zdCBwZWVrID0gc3RhdGUucGVlayA9IChuID0gMSkgPT4gaW5wdXRbc3RhdGUuaW5kZXggKyBuXTtcbiAgY29uc3QgYWR2YW5jZSA9IHN0YXRlLmFkdmFuY2UgPSAoKSA9PiBpbnB1dFsrK3N0YXRlLmluZGV4XSB8fCAnJztcbiAgY29uc3QgcmVtYWluaW5nID0gKCkgPT4gaW5wdXQuc2xpY2Uoc3RhdGUuaW5kZXggKyAxKTtcbiAgY29uc3QgY29uc3VtZSA9ICh2YWx1ZSA9ICcnLCBudW0gPSAwKSA9PiB7XG4gICAgc3RhdGUuY29uc3VtZWQgKz0gdmFsdWU7XG4gICAgc3RhdGUuaW5kZXggKz0gbnVtO1xuICB9O1xuXG4gIGNvbnN0IGFwcGVuZCA9IHRva2VuID0+IHtcbiAgICBzdGF0ZS5vdXRwdXQgKz0gdG9rZW4ub3V0cHV0ICE9IG51bGwgPyB0b2tlbi5vdXRwdXQgOiB0b2tlbi52YWx1ZTtcbiAgICBjb25zdW1lKHRva2VuLnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBuZWdhdGUgPSAoKSA9PiB7XG4gICAgbGV0IGNvdW50ID0gMTtcblxuICAgIHdoaWxlIChwZWVrKCkgPT09ICchJyAmJiAocGVlaygyKSAhPT0gJygnIHx8IHBlZWsoMykgPT09ICc/JykpIHtcbiAgICAgIGFkdmFuY2UoKTtcbiAgICAgIHN0YXRlLnN0YXJ0Kys7XG4gICAgICBjb3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb3VudCAlIDIgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzdGF0ZS5uZWdhdGVkID0gdHJ1ZTtcbiAgICBzdGF0ZS5zdGFydCsrO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGluY3JlbWVudCA9IHR5cGUgPT4ge1xuICAgIHN0YXRlW3R5cGVdKys7XG4gICAgc3RhY2sucHVzaCh0eXBlKTtcbiAgfTtcblxuICBjb25zdCBkZWNyZW1lbnQgPSB0eXBlID0+IHtcbiAgICBzdGF0ZVt0eXBlXS0tO1xuICAgIHN0YWNrLnBvcCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQdXNoIHRva2VucyBvbnRvIHRoZSB0b2tlbnMgYXJyYXkuIFRoaXMgaGVscGVyIHNwZWVkcyB1cFxuICAgKiB0b2tlbml6aW5nIGJ5IDEpIGhlbHBpbmcgdXMgYXZvaWQgYmFja3RyYWNraW5nIGFzIG11Y2ggYXMgcG9zc2libGUsXG4gICAqIGFuZCAyKSBoZWxwaW5nIHVzIGF2b2lkIGNyZWF0aW5nIGV4dHJhIHRva2VucyB3aGVuIGNvbnNlY3V0aXZlXG4gICAqIGNoYXJhY3RlcnMgYXJlIHBsYWluIHRleHQuIFRoaXMgaW1wcm92ZXMgcGVyZm9ybWFuY2UgYW5kIHNpbXBsaWZpZXNcbiAgICogbG9va2JlaGluZHMuXG4gICAqL1xuXG4gIGNvbnN0IHB1c2ggPSB0b2sgPT4ge1xuICAgIGlmIChwcmV2LnR5cGUgPT09ICdnbG9ic3RhcicpIHtcbiAgICAgIGNvbnN0IGlzQnJhY2UgPSBzdGF0ZS5icmFjZXMgPiAwICYmICh0b2sudHlwZSA9PT0gJ2NvbW1hJyB8fCB0b2sudHlwZSA9PT0gJ2JyYWNlJyk7XG4gICAgICBjb25zdCBpc0V4dGdsb2IgPSB0b2suZXh0Z2xvYiA9PT0gdHJ1ZSB8fCAoZXh0Z2xvYnMubGVuZ3RoICYmICh0b2sudHlwZSA9PT0gJ3BpcGUnIHx8IHRvay50eXBlID09PSAncGFyZW4nKSk7XG5cbiAgICAgIGlmICh0b2sudHlwZSAhPT0gJ3NsYXNoJyAmJiB0b2sudHlwZSAhPT0gJ3BhcmVuJyAmJiAhaXNCcmFjZSAmJiAhaXNFeHRnbG9iKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtcHJldi5vdXRwdXQubGVuZ3RoKTtcbiAgICAgICAgcHJldi50eXBlID0gJ3N0YXInO1xuICAgICAgICBwcmV2LnZhbHVlID0gJyonO1xuICAgICAgICBwcmV2Lm91dHB1dCA9IHN0YXI7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBwcmV2Lm91dHB1dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXh0Z2xvYnMubGVuZ3RoICYmIHRvay50eXBlICE9PSAncGFyZW4nKSB7XG4gICAgICBleHRnbG9ic1tleHRnbG9icy5sZW5ndGggLSAxXS5pbm5lciArPSB0b2sudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRvay52YWx1ZSB8fCB0b2sub3V0cHV0KSBhcHBlbmQodG9rKTtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICd0ZXh0JyAmJiB0b2sudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBwcmV2LnZhbHVlICs9IHRvay52YWx1ZTtcbiAgICAgIHByZXYub3V0cHV0ID0gKHByZXYub3V0cHV0IHx8ICcnKSArIHRvay52YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2sucHJldiA9IHByZXY7XG4gICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICBwcmV2ID0gdG9rO1xuICB9O1xuXG4gIGNvbnN0IGV4dGdsb2JPcGVuID0gKHR5cGUsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdG9rZW4gPSB7IC4uLkVYVEdMT0JfQ0hBUlNbdmFsdWVdLCBjb25kaXRpb25zOiAxLCBpbm5lcjogJycgfTtcblxuICAgIHRva2VuLnByZXYgPSBwcmV2O1xuICAgIHRva2VuLnBhcmVucyA9IHN0YXRlLnBhcmVucztcbiAgICB0b2tlbi5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQ7XG4gICAgY29uc3Qgb3V0cHV0ID0gKG9wdHMuY2FwdHVyZSA/ICcoJyA6ICcnKSArIHRva2VuLm9wZW47XG5cbiAgICBpbmNyZW1lbnQoJ3BhcmVucycpO1xuICAgIHB1c2goeyB0eXBlLCB2YWx1ZSwgb3V0cHV0OiBzdGF0ZS5vdXRwdXQgPyAnJyA6IE9ORV9DSEFSIH0pO1xuICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCBleHRnbG9iOiB0cnVlLCB2YWx1ZTogYWR2YW5jZSgpLCBvdXRwdXQgfSk7XG4gICAgZXh0Z2xvYnMucHVzaCh0b2tlbik7XG4gIH07XG5cbiAgY29uc3QgZXh0Z2xvYkNsb3NlID0gdG9rZW4gPT4ge1xuICAgIGxldCBvdXRwdXQgPSB0b2tlbi5jbG9zZSArIChvcHRzLmNhcHR1cmUgPyAnKScgOiAnJyk7XG4gICAgbGV0IHJlc3Q7XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ25lZ2F0ZScpIHtcbiAgICAgIGxldCBleHRnbG9iU3RhciA9IHN0YXI7XG5cbiAgICAgIGlmICh0b2tlbi5pbm5lciAmJiB0b2tlbi5pbm5lci5sZW5ndGggPiAxICYmIHRva2VuLmlubmVyLmluY2x1ZGVzKCcvJykpIHtcbiAgICAgICAgZXh0Z2xvYlN0YXIgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dGdsb2JTdGFyICE9PSBzdGFyIHx8IGVvcygpIHx8IC9eXFwpKyQvLnRlc3QocmVtYWluaW5nKCkpKSB7XG4gICAgICAgIG91dHB1dCA9IHRva2VuLmNsb3NlID0gYCkkKSkke2V4dGdsb2JTdGFyfWA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlbi5pbm5lci5pbmNsdWRlcygnKicpICYmIChyZXN0ID0gcmVtYWluaW5nKCkpICYmIC9eXFwuW15cXFxcLy5dKyQvLnRlc3QocmVzdCkpIHtcbiAgICAgICAgb3V0cHV0ID0gdG9rZW4uY2xvc2UgPSBgKSR7cmVzdH0pJHtleHRnbG9iU3Rhcn0pYDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRva2VuLnByZXYudHlwZSA9PT0gJ2JvcycpIHtcbiAgICAgICAgc3RhdGUubmVnYXRlZEV4dGdsb2IgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCBleHRnbG9iOiB0cnVlLCB2YWx1ZSwgb3V0cHV0IH0pO1xuICAgIGRlY3JlbWVudCgncGFyZW5zJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZhc3QgcGF0aHNcbiAgICovXG5cbiAgaWYgKG9wdHMuZmFzdHBhdGhzICE9PSBmYWxzZSAmJiAhLyheWyohXXxbLygpW1xcXXt9XCJdKS8udGVzdChpbnB1dCkpIHtcbiAgICBsZXQgYmFja3NsYXNoZXMgPSBmYWxzZTtcblxuICAgIGxldCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKFJFR0VYX1NQRUNJQUxfQ0hBUlNfQkFDS1JFRiwgKG0sIGVzYywgY2hhcnMsIGZpcnN0LCByZXN0LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGZpcnN0ID09PSAnXFxcXCcpIHtcbiAgICAgICAgYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICByZXR1cm4gbTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0ID09PSAnPycpIHtcbiAgICAgICAgaWYgKGVzYykge1xuICAgICAgICAgIHJldHVybiBlc2MgKyBmaXJzdCArIChyZXN0ID8gUU1BUksucmVwZWF0KHJlc3QubGVuZ3RoKSA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gcW1hcmtOb0RvdCArIChyZXN0ID8gUU1BUksucmVwZWF0KHJlc3QubGVuZ3RoKSA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUU1BUksucmVwZWF0KGNoYXJzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaXJzdCA9PT0gJy4nKSB7XG4gICAgICAgIHJldHVybiBET1RfTElURVJBTC5yZXBlYXQoY2hhcnMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0ID09PSAnKicpIHtcbiAgICAgICAgaWYgKGVzYykge1xuICAgICAgICAgIHJldHVybiBlc2MgKyBmaXJzdCArIChyZXN0ID8gc3RhciA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlc2MgPyBtIDogYFxcXFwke219YDtcbiAgICB9KTtcblxuICAgIGlmIChiYWNrc2xhc2hlcyA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKG9wdHMudW5lc2NhcGUgPT09IHRydWUpIHtcbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnJlcGxhY2UoL1xcXFwvZywgJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnJlcGxhY2UoL1xcXFwrL2csIG0gPT4ge1xuICAgICAgICAgIHJldHVybiBtLmxlbmd0aCAlIDIgPT09IDAgPyAnXFxcXFxcXFwnIDogKG0gPyAnXFxcXCcgOiAnJyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvdXRwdXQgPT09IGlucHV0ICYmIG9wdHMuY29udGFpbnMgPT09IHRydWUpIHtcbiAgICAgIHN0YXRlLm91dHB1dCA9IGlucHV0O1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIHN0YXRlLm91dHB1dCA9IHV0aWxzLndyYXBPdXRwdXQob3V0cHV0LCBzdGF0ZSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRva2VuaXplIGlucHV0IHVudGlsIHdlIHJlYWNoIGVuZC1vZi1zdHJpbmdcbiAgICovXG5cbiAgd2hpbGUgKCFlb3MoKSkge1xuICAgIHZhbHVlID0gYWR2YW5jZSgpO1xuXG4gICAgaWYgKHZhbHVlID09PSAnXFx1MDAwMCcpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVzY2FwZWQgY2hhcmFjdGVyc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnXFxcXCcpIHtcbiAgICAgIGNvbnN0IG5leHQgPSBwZWVrKCk7XG5cbiAgICAgIGlmIChuZXh0ID09PSAnLycgJiYgb3B0cy5iYXNoICE9PSB0cnVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV4dCA9PT0gJy4nIHx8IG5leHQgPT09ICc7Jykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFuZXh0KSB7XG4gICAgICAgIHZhbHVlICs9ICdcXFxcJztcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBjb2xsYXBzZSBzbGFzaGVzIHRvIHJlZHVjZSBwb3RlbnRpYWwgZm9yIGV4cGxvaXRzXG4gICAgICBjb25zdCBtYXRjaCA9IC9eXFxcXCsvLmV4ZWMocmVtYWluaW5nKCkpO1xuICAgICAgbGV0IHNsYXNoZXMgPSAwO1xuXG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMF0ubGVuZ3RoID4gMikge1xuICAgICAgICBzbGFzaGVzID0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICBzdGF0ZS5pbmRleCArPSBzbGFzaGVzO1xuICAgICAgICBpZiAoc2xhc2hlcyAlIDIgIT09IDApIHtcbiAgICAgICAgICB2YWx1ZSArPSAnXFxcXCc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMudW5lc2NhcGUgPT09IHRydWUpIHtcbiAgICAgICAgdmFsdWUgPSBhZHZhbmNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSArPSBhZHZhbmNlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5icmFja2V0cyA9PT0gMCkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgd2UncmUgaW5zaWRlIGEgcmVnZXggY2hhcmFjdGVyIGNsYXNzLCBjb250aW51ZVxuICAgICAqIHVudGlsIHdlIHJlYWNoIHRoZSBjbG9zaW5nIGJyYWNrZXQuXG4gICAgICovXG5cbiAgICBpZiAoc3RhdGUuYnJhY2tldHMgPiAwICYmICh2YWx1ZSAhPT0gJ10nIHx8IHByZXYudmFsdWUgPT09ICdbJyB8fCBwcmV2LnZhbHVlID09PSAnW14nKSkge1xuICAgICAgaWYgKG9wdHMucG9zaXggIT09IGZhbHNlICYmIHZhbHVlID09PSAnOicpIHtcbiAgICAgICAgY29uc3QgaW5uZXIgPSBwcmV2LnZhbHVlLnNsaWNlKDEpO1xuICAgICAgICBpZiAoaW5uZXIuaW5jbHVkZXMoJ1snKSkge1xuICAgICAgICAgIHByZXYucG9zaXggPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKGlubmVyLmluY2x1ZGVzKCc6JykpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHByZXYudmFsdWUubGFzdEluZGV4T2YoJ1snKTtcbiAgICAgICAgICAgIGNvbnN0IHByZSA9IHByZXYudmFsdWUuc2xpY2UoMCwgaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3QgPSBwcmV2LnZhbHVlLnNsaWNlKGlkeCArIDIpO1xuICAgICAgICAgICAgY29uc3QgcG9zaXggPSBQT1NJWF9SRUdFWF9TT1VSQ0VbcmVzdF07XG4gICAgICAgICAgICBpZiAocG9zaXgpIHtcbiAgICAgICAgICAgICAgcHJldi52YWx1ZSA9IHByZSArIHBvc2l4O1xuICAgICAgICAgICAgICBzdGF0ZS5iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgICAgICAgICBhZHZhbmNlKCk7XG5cbiAgICAgICAgICAgICAgaWYgKCFib3Mub3V0cHV0ICYmIHRva2Vucy5pbmRleE9mKHByZXYpID09PSAxKSB7XG4gICAgICAgICAgICAgICAgYm9zLm91dHB1dCA9IE9ORV9DSEFSO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoKHZhbHVlID09PSAnWycgJiYgcGVlaygpICE9PSAnOicpIHx8ICh2YWx1ZSA9PT0gJy0nICYmIHBlZWsoKSA9PT0gJ10nKSkge1xuICAgICAgICB2YWx1ZSA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09ICddJyAmJiAocHJldi52YWx1ZSA9PT0gJ1snIHx8IHByZXYudmFsdWUgPT09ICdbXicpKSB7XG4gICAgICAgIHZhbHVlID0gYFxcXFwke3ZhbHVlfWA7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLnBvc2l4ID09PSB0cnVlICYmIHZhbHVlID09PSAnIScgJiYgcHJldi52YWx1ZSA9PT0gJ1snKSB7XG4gICAgICAgIHZhbHVlID0gJ14nO1xuICAgICAgfVxuXG4gICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgYXBwZW5kKHsgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB3ZSdyZSBpbnNpZGUgYSBxdW90ZWQgc3RyaW5nLCBjb250aW51ZVxuICAgICAqIHVudGlsIHdlIHJlYWNoIHRoZSBjbG9zaW5nIGRvdWJsZSBxdW90ZS5cbiAgICAgKi9cblxuICAgIGlmIChzdGF0ZS5xdW90ZXMgPT09IDEgJiYgdmFsdWUgIT09ICdcIicpIHtcbiAgICAgIHZhbHVlID0gdXRpbHMuZXNjYXBlUmVnZXgodmFsdWUpO1xuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgIGFwcGVuZCh7IHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRG91YmxlIHF1b3Rlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnXCInKSB7XG4gICAgICBzdGF0ZS5xdW90ZXMgPSBzdGF0ZS5xdW90ZXMgPT09IDEgPyAwIDogMTtcbiAgICAgIGlmIChvcHRzLmtlZXBRdW90ZXMgPT09IHRydWUpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJlbnRoZXNlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnKCcpIHtcbiAgICAgIGluY3JlbWVudCgncGFyZW5zJyk7XG4gICAgICBwdXNoKHsgdHlwZTogJ3BhcmVuJywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICcpJykge1xuICAgICAgaWYgKHN0YXRlLnBhcmVucyA9PT0gMCAmJiBvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignb3BlbmluZycsICcoJykpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleHRnbG9iID0gZXh0Z2xvYnNbZXh0Z2xvYnMubGVuZ3RoIC0gMV07XG4gICAgICBpZiAoZXh0Z2xvYiAmJiBzdGF0ZS5wYXJlbnMgPT09IGV4dGdsb2IucGFyZW5zICsgMSkge1xuICAgICAgICBleHRnbG9iQ2xvc2UoZXh0Z2xvYnMucG9wKCkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdwYXJlbicsIHZhbHVlLCBvdXRwdXQ6IHN0YXRlLnBhcmVucyA/ICcpJyA6ICdcXFxcKScgfSk7XG4gICAgICBkZWNyZW1lbnQoJ3BhcmVucycpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3F1YXJlIGJyYWNrZXRzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICdbJykge1xuICAgICAgaWYgKG9wdHMubm9icmFja2V0ID09PSB0cnVlIHx8ICFyZW1haW5pbmcoKS5pbmNsdWRlcygnXScpKSB7XG4gICAgICAgIGlmIChvcHRzLm5vYnJhY2tldCAhPT0gdHJ1ZSAmJiBvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdjbG9zaW5nJywgJ10nKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZSA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5jcmVtZW50KCdicmFja2V0cycpO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2JyYWNrZXQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gJ10nKSB7XG4gICAgICBpZiAob3B0cy5ub2JyYWNrZXQgPT09IHRydWUgfHwgKHByZXYgJiYgcHJldi50eXBlID09PSAnYnJhY2tldCcgJiYgcHJldi52YWx1ZS5sZW5ndGggPT09IDEpKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlLCBvdXRwdXQ6IGBcXFxcJHt2YWx1ZX1gIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlLmJyYWNrZXRzID09PSAwKSB7XG4gICAgICAgIGlmIChvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdvcGVuaW5nJywgJ1snKSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSwgb3V0cHV0OiBgXFxcXCR7dmFsdWV9YCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGRlY3JlbWVudCgnYnJhY2tldHMnKTtcblxuICAgICAgY29uc3QgcHJldlZhbHVlID0gcHJldi52YWx1ZS5zbGljZSgxKTtcbiAgICAgIGlmIChwcmV2LnBvc2l4ICE9PSB0cnVlICYmIHByZXZWYWx1ZVswXSA9PT0gJ14nICYmICFwcmV2VmFsdWUuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICB2YWx1ZSA9IGAvJHt2YWx1ZX1gO1xuICAgICAgfVxuXG4gICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgYXBwZW5kKHsgdmFsdWUgfSk7XG5cbiAgICAgIC8vIHdoZW4gbGl0ZXJhbCBicmFja2V0cyBhcmUgZXhwbGljaXRseSBkaXNhYmxlZFxuICAgICAgLy8gYXNzdW1lIHdlIHNob3VsZCBtYXRjaCB3aXRoIGEgcmVnZXggY2hhcmFjdGVyIGNsYXNzXG4gICAgICBpZiAob3B0cy5saXRlcmFsQnJhY2tldHMgPT09IGZhbHNlIHx8IHV0aWxzLmhhc1JlZ2V4Q2hhcnMocHJldlZhbHVlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXNjYXBlZCA9IHV0aWxzLmVzY2FwZVJlZ2V4KHByZXYudmFsdWUpO1xuICAgICAgc3RhdGUub3V0cHV0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIC1wcmV2LnZhbHVlLmxlbmd0aCk7XG5cbiAgICAgIC8vIHdoZW4gbGl0ZXJhbCBicmFja2V0cyBhcmUgZXhwbGljaXRseSBlbmFibGVkXG4gICAgICAvLyBhc3N1bWUgd2Ugc2hvdWxkIGVzY2FwZSB0aGUgYnJhY2tldHMgdG8gbWF0Y2ggbGl0ZXJhbCBjaGFyYWN0ZXJzXG4gICAgICBpZiAob3B0cy5saXRlcmFsQnJhY2tldHMgPT09IHRydWUpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IGVzY2FwZWQ7XG4gICAgICAgIHByZXYudmFsdWUgPSBlc2NhcGVkO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gd2hlbiB0aGUgdXNlciBzcGVjaWZpZXMgbm90aGluZywgdHJ5IHRvIG1hdGNoIGJvdGhcbiAgICAgIHByZXYudmFsdWUgPSBgKCR7Y2FwdHVyZX0ke2VzY2FwZWR9fCR7cHJldi52YWx1ZX0pYDtcbiAgICAgIHN0YXRlLm91dHB1dCArPSBwcmV2LnZhbHVlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnJhY2VzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICd7JyAmJiBvcHRzLm5vYnJhY2UgIT09IHRydWUpIHtcbiAgICAgIGluY3JlbWVudCgnYnJhY2VzJyk7XG5cbiAgICAgIGNvbnN0IG9wZW4gPSB7XG4gICAgICAgIHR5cGU6ICdicmFjZScsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvdXRwdXQ6ICcoJyxcbiAgICAgICAgb3V0cHV0SW5kZXg6IHN0YXRlLm91dHB1dC5sZW5ndGgsXG4gICAgICAgIHRva2Vuc0luZGV4OiBzdGF0ZS50b2tlbnMubGVuZ3RoXG4gICAgICB9O1xuXG4gICAgICBicmFjZXMucHVzaChvcGVuKTtcbiAgICAgIHB1c2gob3Blbik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICd9Jykge1xuICAgICAgY29uc3QgYnJhY2UgPSBicmFjZXNbYnJhY2VzLmxlbmd0aCAtIDFdO1xuXG4gICAgICBpZiAob3B0cy5ub2JyYWNlID09PSB0cnVlIHx8ICFicmFjZSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSwgb3V0cHV0OiB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxldCBvdXRwdXQgPSAnKSc7XG5cbiAgICAgIGlmIChicmFjZS5kb3RzID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IHRva2Vucy5zbGljZSgpO1xuICAgICAgICBjb25zdCByYW5nZSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBhcnIubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgICAgaWYgKGFycltpXS50eXBlID09PSAnYnJhY2UnKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFycltpXS50eXBlICE9PSAnZG90cycpIHtcbiAgICAgICAgICAgIHJhbmdlLnVuc2hpZnQoYXJyW2ldLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBvdXRwdXQgPSBleHBhbmRSYW5nZShyYW5nZSwgb3B0cyk7XG4gICAgICAgIHN0YXRlLmJhY2t0cmFjayA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChicmFjZS5jb21tYSAhPT0gdHJ1ZSAmJiBicmFjZS5kb3RzICE9PSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IG91dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCBicmFjZS5vdXRwdXRJbmRleCk7XG4gICAgICAgIGNvbnN0IHRva3MgPSBzdGF0ZS50b2tlbnMuc2xpY2UoYnJhY2UudG9rZW5zSW5kZXgpO1xuICAgICAgICBicmFjZS52YWx1ZSA9IGJyYWNlLm91dHB1dCA9ICdcXFxceyc7XG4gICAgICAgIHZhbHVlID0gb3V0cHV0ID0gJ1xcXFx9JztcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gb3V0O1xuICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdG9rcykge1xuICAgICAgICAgIHN0YXRlLm91dHB1dCArPSAodC5vdXRwdXQgfHwgdC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdicmFjZScsIHZhbHVlLCBvdXRwdXQgfSk7XG4gICAgICBkZWNyZW1lbnQoJ2JyYWNlcycpO1xuICAgICAgYnJhY2VzLnBvcCgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGlwZXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ3wnKSB7XG4gICAgICBpZiAoZXh0Z2xvYnMubGVuZ3RoID4gMCkge1xuICAgICAgICBleHRnbG9ic1tleHRnbG9icy5sZW5ndGggLSAxXS5jb25kaXRpb25zKys7XG4gICAgICB9XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbW1hc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnLCcpIHtcbiAgICAgIGxldCBvdXRwdXQgPSB2YWx1ZTtcblxuICAgICAgY29uc3QgYnJhY2UgPSBicmFjZXNbYnJhY2VzLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGJyYWNlICYmIHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdID09PSAnYnJhY2VzJykge1xuICAgICAgICBicmFjZS5jb21tYSA9IHRydWU7XG4gICAgICAgIG91dHB1dCA9ICd8JztcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdjb21tYScsIHZhbHVlLCBvdXRwdXQgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTbGFzaGVzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICcvJykge1xuICAgICAgLy8gaWYgdGhlIGJlZ2lubmluZyBvZiB0aGUgZ2xvYiBpcyBcIi4vXCIsIGFkdmFuY2UgdGhlIHN0YXJ0XG4gICAgICAvLyB0byB0aGUgY3VycmVudCBpbmRleCwgYW5kIGRvbid0IGFkZCB0aGUgXCIuL1wiIGNoYXJhY3RlcnNcbiAgICAgIC8vIHRvIHRoZSBzdGF0ZS4gVGhpcyBncmVhdGx5IHNpbXBsaWZpZXMgbG9va2JlaGluZHMgd2hlblxuICAgICAgLy8gY2hlY2tpbmcgZm9yIEJPUyBjaGFyYWN0ZXJzIGxpa2UgXCIhXCIgYW5kIFwiLlwiIChub3QgXCIuL1wiKVxuICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ2RvdCcgJiYgc3RhdGUuaW5kZXggPT09IHN0YXRlLnN0YXJ0ICsgMSkge1xuICAgICAgICBzdGF0ZS5zdGFydCA9IHN0YXRlLmluZGV4ICsgMTtcbiAgICAgICAgc3RhdGUuY29uc3VtZWQgPSAnJztcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gJyc7XG4gICAgICAgIHRva2Vucy5wb3AoKTtcbiAgICAgICAgcHJldiA9IGJvczsgLy8gcmVzZXQgXCJwcmV2XCIgdG8gdGhlIGZpcnN0IHRva2VuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3NsYXNoJywgdmFsdWUsIG91dHB1dDogU0xBU0hfTElURVJBTCB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvdHNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJy4nKSB7XG4gICAgICBpZiAoc3RhdGUuYnJhY2VzID4gMCAmJiBwcmV2LnR5cGUgPT09ICdkb3QnKSB7XG4gICAgICAgIGlmIChwcmV2LnZhbHVlID09PSAnLicpIHByZXYub3V0cHV0ID0gRE9UX0xJVEVSQUw7XG4gICAgICAgIGNvbnN0IGJyYWNlID0gYnJhY2VzW2JyYWNlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgcHJldi50eXBlID0gJ2RvdHMnO1xuICAgICAgICBwcmV2Lm91dHB1dCArPSB2YWx1ZTtcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgYnJhY2UuZG90cyA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoKHN0YXRlLmJyYWNlcyArIHN0YXRlLnBhcmVucykgPT09IDAgJiYgcHJldi50eXBlICE9PSAnYm9zJyAmJiBwcmV2LnR5cGUgIT09ICdzbGFzaCcpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUsIG91dHB1dDogRE9UX0xJVEVSQUwgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2RvdCcsIHZhbHVlLCBvdXRwdXQ6IERPVF9MSVRFUkFMIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUXVlc3Rpb24gbWFya3NcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJz8nKSB7XG4gICAgICBjb25zdCBpc0dyb3VwID0gcHJldiAmJiBwcmV2LnZhbHVlID09PSAnKCc7XG4gICAgICBpZiAoIWlzR3JvdXAgJiYgb3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgcGVlaygpID09PSAnKCcgJiYgcGVlaygyKSAhPT0gJz8nKSB7XG4gICAgICAgIGV4dGdsb2JPcGVuKCdxbWFyaycsIHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ3BhcmVuJykge1xuICAgICAgICBjb25zdCBuZXh0ID0gcGVlaygpO1xuICAgICAgICBsZXQgb3V0cHV0ID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKG5leHQgPT09ICc8JyAmJiAhdXRpbHMuc3VwcG9ydHNMb29rYmVoaW5kcygpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb2RlLmpzIHYxMCBvciBoaWdoZXIgaXMgcmVxdWlyZWQgZm9yIHJlZ2V4IGxvb2tiZWhpbmRzJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHByZXYudmFsdWUgPT09ICcoJyAmJiAhL1shPTw6XS8udGVzdChuZXh0KSkgfHwgKG5leHQgPT09ICc8JyAmJiAhLzwoWyE9XXxcXHcrPikvLnRlc3QocmVtYWluaW5nKCkpKSkge1xuICAgICAgICAgIG91dHB1dCA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUsIG91dHB1dCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLmRvdCAhPT0gdHJ1ZSAmJiAocHJldi50eXBlID09PSAnc2xhc2gnIHx8IHByZXYudHlwZSA9PT0gJ2JvcycpKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAncW1hcmsnLCB2YWx1ZSwgb3V0cHV0OiBRTUFSS19OT19ET1QgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3FtYXJrJywgdmFsdWUsIG91dHB1dDogUU1BUksgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGNsYW1hdGlvblxuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnIScpIHtcbiAgICAgIGlmIChvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiBwZWVrKCkgPT09ICcoJykge1xuICAgICAgICBpZiAocGVlaygyKSAhPT0gJz8nIHx8ICEvWyE9PDpdLy50ZXN0KHBlZWsoMykpKSB7XG4gICAgICAgICAgZXh0Z2xvYk9wZW4oJ25lZ2F0ZScsIHZhbHVlKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy5ub25lZ2F0ZSAhPT0gdHJ1ZSAmJiBzdGF0ZS5pbmRleCA9PT0gMCkge1xuICAgICAgICBuZWdhdGUoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGx1c1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnKycpIHtcbiAgICAgIGlmIChvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiBwZWVrKCkgPT09ICcoJyAmJiBwZWVrKDIpICE9PSAnPycpIHtcbiAgICAgICAgZXh0Z2xvYk9wZW4oJ3BsdXMnLCB2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoKHByZXYgJiYgcHJldi52YWx1ZSA9PT0gJygnKSB8fCBvcHRzLnJlZ2V4ID09PSBmYWxzZSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3BsdXMnLCB2YWx1ZSwgb3V0cHV0OiBQTFVTX0xJVEVSQUwgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoKHByZXYgJiYgKHByZXYudHlwZSA9PT0gJ2JyYWNrZXQnIHx8IHByZXYudHlwZSA9PT0gJ3BhcmVuJyB8fCBwcmV2LnR5cGUgPT09ICdicmFjZScpKSB8fCBzdGF0ZS5wYXJlbnMgPiAwKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAncGx1cycsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdwbHVzJywgdmFsdWU6IFBMVVNfTElURVJBTCB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBsYWluIHRleHRcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ0AnKSB7XG4gICAgICBpZiAob3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgcGVlaygpID09PSAnKCcgJiYgcGVlaygyKSAhPT0gJz8nKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAnYXQnLCBleHRnbG9iOiB0cnVlLCB2YWx1ZSwgb3V0cHV0OiAnJyB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGxhaW4gdGV4dFxuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlICE9PSAnKicpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJyQnIHx8IHZhbHVlID09PSAnXicpIHtcbiAgICAgICAgdmFsdWUgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWF0Y2ggPSBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUy5leGVjKHJlbWFpbmluZygpKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICB2YWx1ZSArPSBtYXRjaFswXTtcbiAgICAgICAgc3RhdGUuaW5kZXggKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXJzXG4gICAgICovXG5cbiAgICBpZiAocHJldiAmJiAocHJldi50eXBlID09PSAnZ2xvYnN0YXInIHx8IHByZXYuc3RhciA9PT0gdHJ1ZSkpIHtcbiAgICAgIHByZXYudHlwZSA9ICdzdGFyJztcbiAgICAgIHByZXYuc3RhciA9IHRydWU7XG4gICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgcHJldi5vdXRwdXQgPSBzdGFyO1xuICAgICAgc3RhdGUuYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgIGNvbnN1bWUodmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IHJlc3QgPSByZW1haW5pbmcoKTtcbiAgICBpZiAob3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgL15cXChbXj9dLy50ZXN0KHJlc3QpKSB7XG4gICAgICBleHRnbG9iT3Blbignc3RhcicsIHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChwcmV2LnR5cGUgPT09ICdzdGFyJykge1xuICAgICAgaWYgKG9wdHMubm9nbG9ic3RhciA9PT0gdHJ1ZSkge1xuICAgICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByaW9yID0gcHJldi5wcmV2O1xuICAgICAgY29uc3QgYmVmb3JlID0gcHJpb3IucHJldjtcbiAgICAgIGNvbnN0IGlzU3RhcnQgPSBwcmlvci50eXBlID09PSAnc2xhc2gnIHx8IHByaW9yLnR5cGUgPT09ICdib3MnO1xuICAgICAgY29uc3QgYWZ0ZXJTdGFyID0gYmVmb3JlICYmIChiZWZvcmUudHlwZSA9PT0gJ3N0YXInIHx8IGJlZm9yZS50eXBlID09PSAnZ2xvYnN0YXInKTtcblxuICAgICAgaWYgKG9wdHMuYmFzaCA9PT0gdHJ1ZSAmJiAoIWlzU3RhcnQgfHwgKHJlc3RbMF0gJiYgcmVzdFswXSAhPT0gJy8nKSkpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdzdGFyJywgdmFsdWUsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0JyYWNlID0gc3RhdGUuYnJhY2VzID4gMCAmJiAocHJpb3IudHlwZSA9PT0gJ2NvbW1hJyB8fCBwcmlvci50eXBlID09PSAnYnJhY2UnKTtcbiAgICAgIGNvbnN0IGlzRXh0Z2xvYiA9IGV4dGdsb2JzLmxlbmd0aCAmJiAocHJpb3IudHlwZSA9PT0gJ3BpcGUnIHx8IHByaW9yLnR5cGUgPT09ICdwYXJlbicpO1xuICAgICAgaWYgKCFpc1N0YXJ0ICYmIHByaW9yLnR5cGUgIT09ICdwYXJlbicgJiYgIWlzQnJhY2UgJiYgIWlzRXh0Z2xvYikge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3N0YXInLCB2YWx1ZSwgb3V0cHV0OiAnJyB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHN0cmlwIGNvbnNlY3V0aXZlIGAvKiovYFxuICAgICAgd2hpbGUgKHJlc3Quc2xpY2UoMCwgMykgPT09ICcvKionKSB7XG4gICAgICAgIGNvbnN0IGFmdGVyID0gaW5wdXRbc3RhdGUuaW5kZXggKyA0XTtcbiAgICAgICAgaWYgKGFmdGVyICYmIGFmdGVyICE9PSAnLycpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXN0ID0gcmVzdC5zbGljZSgzKTtcbiAgICAgICAgY29uc3VtZSgnLyoqJywgMyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmlvci50eXBlID09PSAnYm9zJyAmJiBlb3MoKSkge1xuICAgICAgICBwcmV2LnR5cGUgPSAnZ2xvYnN0YXInO1xuICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgICBwcmV2Lm91dHB1dCA9IGdsb2JzdGFyKG9wdHMpO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBwcmV2Lm91dHB1dDtcbiAgICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmlvci50eXBlID09PSAnc2xhc2gnICYmIHByaW9yLnByZXYudHlwZSAhPT0gJ2JvcycgJiYgIWFmdGVyU3RhciAmJiBlb3MoKSkge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLShwcmlvci5vdXRwdXQgKyBwcmV2Lm91dHB1dCkubGVuZ3RoKTtcbiAgICAgICAgcHJpb3Iub3V0cHV0ID0gYCg/OiR7cHJpb3Iub3V0cHV0fWA7XG5cbiAgICAgICAgcHJldi50eXBlID0gJ2dsb2JzdGFyJztcbiAgICAgICAgcHJldi5vdXRwdXQgPSBnbG9ic3RhcihvcHRzKSArIChvcHRzLnN0cmljdFNsYXNoZXMgPyAnKScgOiAnfCQpJyk7XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IHByaW9yLm91dHB1dCArIHByZXYub3V0cHV0O1xuICAgICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmlvci50eXBlID09PSAnc2xhc2gnICYmIHByaW9yLnByZXYudHlwZSAhPT0gJ2JvcycgJiYgcmVzdFswXSA9PT0gJy8nKSB7XG4gICAgICAgIGNvbnN0IGVuZCA9IHJlc3RbMV0gIT09IHZvaWQgMCA/ICd8JCcgOiAnJztcblxuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLShwcmlvci5vdXRwdXQgKyBwcmV2Lm91dHB1dCkubGVuZ3RoKTtcbiAgICAgICAgcHJpb3Iub3V0cHV0ID0gYCg/OiR7cHJpb3Iub3V0cHV0fWA7XG5cbiAgICAgICAgcHJldi50eXBlID0gJ2dsb2JzdGFyJztcbiAgICAgICAgcHJldi5vdXRwdXQgPSBgJHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9fCR7U0xBU0hfTElURVJBTH0ke2VuZH0pYDtcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcblxuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJpb3Iub3V0cHV0ICsgcHJldi5vdXRwdXQ7XG4gICAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcblxuICAgICAgICBjb25zdW1lKHZhbHVlICsgYWR2YW5jZSgpKTtcblxuICAgICAgICBwdXNoKHsgdHlwZTogJ3NsYXNoJywgdmFsdWU6ICcvJywgb3V0cHV0OiAnJyB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmlvci50eXBlID09PSAnYm9zJyAmJiByZXN0WzBdID09PSAnLycpIHtcbiAgICAgICAgcHJldi50eXBlID0gJ2dsb2JzdGFyJztcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgcHJldi5vdXRwdXQgPSBgKD86Xnwke1NMQVNIX0xJVEVSQUx9fCR7Z2xvYnN0YXIob3B0cyl9JHtTTEFTSF9MSVRFUkFMfSlgO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBwcmV2Lm91dHB1dDtcbiAgICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgICBjb25zdW1lKHZhbHVlICsgYWR2YW5jZSgpKTtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdzbGFzaCcsIHZhbHVlOiAnLycsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyByZW1vdmUgc2luZ2xlIHN0YXIgZnJvbSBvdXRwdXRcbiAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtcHJldi5vdXRwdXQubGVuZ3RoKTtcblxuICAgICAgLy8gcmVzZXQgcHJldmlvdXMgdG9rZW4gdG8gZ2xvYnN0YXJcbiAgICAgIHByZXYudHlwZSA9ICdnbG9ic3Rhcic7XG4gICAgICBwcmV2Lm91dHB1dCA9IGdsb2JzdGFyKG9wdHMpO1xuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcblxuICAgICAgLy8gcmVzZXQgb3V0cHV0IHdpdGggZ2xvYnN0YXJcbiAgICAgIHN0YXRlLm91dHB1dCArPSBwcmV2Lm91dHB1dDtcbiAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgIGNvbnN1bWUodmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW4gPSB7IHR5cGU6ICdzdGFyJywgdmFsdWUsIG91dHB1dDogc3RhciB9O1xuXG4gICAgaWYgKG9wdHMuYmFzaCA9PT0gdHJ1ZSkge1xuICAgICAgdG9rZW4ub3V0cHV0ID0gJy4qPyc7XG4gICAgICBpZiAocHJldi50eXBlID09PSAnYm9zJyB8fCBwcmV2LnR5cGUgPT09ICdzbGFzaCcpIHtcbiAgICAgICAgdG9rZW4ub3V0cHV0ID0gbm9kb3QgKyB0b2tlbi5vdXRwdXQ7XG4gICAgICB9XG4gICAgICBwdXNoKHRva2VuKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChwcmV2ICYmIChwcmV2LnR5cGUgPT09ICdicmFja2V0JyB8fCBwcmV2LnR5cGUgPT09ICdwYXJlbicpICYmIG9wdHMucmVnZXggPT09IHRydWUpIHtcbiAgICAgIHRva2VuLm91dHB1dCA9IHZhbHVlO1xuICAgICAgcHVzaCh0b2tlbik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuaW5kZXggPT09IHN0YXRlLnN0YXJ0IHx8IHByZXYudHlwZSA9PT0gJ3NsYXNoJyB8fCBwcmV2LnR5cGUgPT09ICdkb3QnKSB7XG4gICAgICBpZiAocHJldi50eXBlID09PSAnZG90Jykge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gTk9fRE9UX1NMQVNIO1xuICAgICAgICBwcmV2Lm91dHB1dCArPSBOT19ET1RfU0xBU0g7XG5cbiAgICAgIH0gZWxzZSBpZiAob3B0cy5kb3QgPT09IHRydWUpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IE5PX0RPVFNfU0xBU0g7XG4gICAgICAgIHByZXYub3V0cHV0ICs9IE5PX0RPVFNfU0xBU0g7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBub2RvdDtcbiAgICAgICAgcHJldi5vdXRwdXQgKz0gbm9kb3Q7XG4gICAgICB9XG5cbiAgICAgIGlmIChwZWVrKCkgIT09ICcqJykge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gT05FX0NIQVI7XG4gICAgICAgIHByZXYub3V0cHV0ICs9IE9ORV9DSEFSO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1c2godG9rZW4pO1xuICB9XG5cbiAgd2hpbGUgKHN0YXRlLmJyYWNrZXRzID4gMCkge1xuICAgIGlmIChvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ludGF4RXJyb3IoJ2Nsb3NpbmcnLCAnXScpKTtcbiAgICBzdGF0ZS5vdXRwdXQgPSB1dGlscy5lc2NhcGVMYXN0KHN0YXRlLm91dHB1dCwgJ1snKTtcbiAgICBkZWNyZW1lbnQoJ2JyYWNrZXRzJyk7XG4gIH1cblxuICB3aGlsZSAoc3RhdGUucGFyZW5zID4gMCkge1xuICAgIGlmIChvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ludGF4RXJyb3IoJ2Nsb3NpbmcnLCAnKScpKTtcbiAgICBzdGF0ZS5vdXRwdXQgPSB1dGlscy5lc2NhcGVMYXN0KHN0YXRlLm91dHB1dCwgJygnKTtcbiAgICBkZWNyZW1lbnQoJ3BhcmVucycpO1xuICB9XG5cbiAgd2hpbGUgKHN0YXRlLmJyYWNlcyA+IDApIHtcbiAgICBpZiAob3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdjbG9zaW5nJywgJ30nKSk7XG4gICAgc3RhdGUub3V0cHV0ID0gdXRpbHMuZXNjYXBlTGFzdChzdGF0ZS5vdXRwdXQsICd7Jyk7XG4gICAgZGVjcmVtZW50KCdicmFjZXMnKTtcbiAgfVxuXG4gIGlmIChvcHRzLnN0cmljdFNsYXNoZXMgIT09IHRydWUgJiYgKHByZXYudHlwZSA9PT0gJ3N0YXInIHx8IHByZXYudHlwZSA9PT0gJ2JyYWNrZXQnKSkge1xuICAgIHB1c2goeyB0eXBlOiAnbWF5YmVfc2xhc2gnLCB2YWx1ZTogJycsIG91dHB1dDogYCR7U0xBU0hfTElURVJBTH0/YCB9KTtcbiAgfVxuXG4gIC8vIHJlYnVpbGQgdGhlIG91dHB1dCBpZiB3ZSBoYWQgdG8gYmFja3RyYWNrIGF0IGFueSBwb2ludFxuICBpZiAoc3RhdGUuYmFja3RyYWNrID09PSB0cnVlKSB7XG4gICAgc3RhdGUub3V0cHV0ID0gJyc7XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHN0YXRlLnRva2Vucykge1xuICAgICAgc3RhdGUub3V0cHV0ICs9IHRva2VuLm91dHB1dCAhPSBudWxsID8gdG9rZW4ub3V0cHV0IDogdG9rZW4udmFsdWU7XG5cbiAgICAgIGlmICh0b2tlbi5zdWZmaXgpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IHRva2VuLnN1ZmZpeDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59O1xuXG4vKipcbiAqIEZhc3QgcGF0aHMgZm9yIGNyZWF0aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMgZm9yIGNvbW1vbiBnbG9iIHBhdHRlcm5zLlxuICogVGhpcyBjYW4gc2lnbmlmaWNhbnRseSBzcGVlZCB1cCBwcm9jZXNzaW5nIGFuZCBoYXMgdmVyeSBsaXR0bGUgZG93bnNpZGVcbiAqIGltcGFjdCB3aGVuIG5vbmUgb2YgdGhlIGZhc3QgcGF0aHMgbWF0Y2guXG4gKi9cblxucGFyc2UuZmFzdHBhdGhzID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IG9wdHMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgY29uc3QgbWF4ID0gdHlwZW9mIG9wdHMubWF4TGVuZ3RoID09PSAnbnVtYmVyJyA/IE1hdGgubWluKE1BWF9MRU5HVEgsIG9wdHMubWF4TGVuZ3RoKSA6IE1BWF9MRU5HVEg7XG4gIGNvbnN0IGxlbiA9IGlucHV0Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IG1heCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW5wdXQgbGVuZ3RoOiAke2xlbn0sIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIGxlbmd0aDogJHttYXh9YCk7XG4gIH1cblxuICBpbnB1dCA9IFJFUExBQ0VNRU5UU1tpbnB1dF0gfHwgaW5wdXQ7XG4gIGNvbnN0IHdpbjMyID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuXG4gIC8vIGNyZWF0ZSBjb25zdGFudHMgYmFzZWQgb24gcGxhdGZvcm0sIGZvciB3aW5kb3dzIG9yIHBvc2l4XG4gIGNvbnN0IHtcbiAgICBET1RfTElURVJBTCxcbiAgICBTTEFTSF9MSVRFUkFMLFxuICAgIE9ORV9DSEFSLFxuICAgIERPVFNfU0xBU0gsXG4gICAgTk9fRE9ULFxuICAgIE5PX0RPVFMsXG4gICAgTk9fRE9UU19TTEFTSCxcbiAgICBTVEFSLFxuICAgIFNUQVJUX0FOQ0hPUlxuICB9ID0gY29uc3RhbnRzLmdsb2JDaGFycyh3aW4zMik7XG5cbiAgY29uc3Qgbm9kb3QgPSBvcHRzLmRvdCA/IE5PX0RPVFMgOiBOT19ET1Q7XG4gIGNvbnN0IHNsYXNoRG90ID0gb3B0cy5kb3QgPyBOT19ET1RTX1NMQVNIIDogTk9fRE9UO1xuICBjb25zdCBjYXB0dXJlID0gb3B0cy5jYXB0dXJlID8gJycgOiAnPzonO1xuICBjb25zdCBzdGF0ZSA9IHsgbmVnYXRlZDogZmFsc2UsIHByZWZpeDogJycgfTtcbiAgbGV0IHN0YXIgPSBvcHRzLmJhc2ggPT09IHRydWUgPyAnLio/JyA6IFNUQVI7XG5cbiAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgIHN0YXIgPSBgKCR7c3Rhcn0pYDtcbiAgfVxuXG4gIGNvbnN0IGdsb2JzdGFyID0gb3B0cyA9PiB7XG4gICAgaWYgKG9wdHMubm9nbG9ic3RhciA9PT0gdHJ1ZSkgcmV0dXJuIHN0YXI7XG4gICAgcmV0dXJuIGAoJHtjYXB0dXJlfSg/Oig/ISR7U1RBUlRfQU5DSE9SfSR7b3B0cy5kb3QgPyBET1RTX1NMQVNIIDogRE9UX0xJVEVSQUx9KS4pKj8pYDtcbiAgfTtcblxuICBjb25zdCBjcmVhdGUgPSBzdHIgPT4ge1xuICAgIHN3aXRjaCAoc3RyKSB7XG4gICAgICBjYXNlICcqJzpcbiAgICAgICAgcmV0dXJuIGAke25vZG90fSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJy4qJzpcbiAgICAgICAgcmV0dXJuIGAke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyouKic6XG4gICAgICAgIHJldHVybiBgJHtub2RvdH0ke3N0YXJ9JHtET1RfTElURVJBTH0ke09ORV9DSEFSfSR7c3Rhcn1gO1xuXG4gICAgICBjYXNlICcqLyonOlxuICAgICAgICByZXR1cm4gYCR7bm9kb3R9JHtzdGFyfSR7U0xBU0hfTElURVJBTH0ke09ORV9DSEFSfSR7c2xhc2hEb3R9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyoqJzpcbiAgICAgICAgcmV0dXJuIG5vZG90ICsgZ2xvYnN0YXIob3B0cyk7XG5cbiAgICAgIGNhc2UgJyoqLyonOlxuICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke3NsYXNoRG90fSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyoqLyouKic6XG4gICAgICAgIHJldHVybiBgKD86JHtub2RvdH0ke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH0pPyR7c2xhc2hEb3R9JHtzdGFyfSR7RE9UX0xJVEVSQUx9JHtPTkVfQ0hBUn0ke3N0YXJ9YDtcblxuICAgICAgY2FzZSAnKiovLionOlxuICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXiguKj8pXFwuKFxcdyspJC8uZXhlYyhzdHIpO1xuICAgICAgICBpZiAoIW1hdGNoKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc291cmNlID0gY3JlYXRlKG1hdGNoWzFdKTtcbiAgICAgICAgaWYgKCFzb3VyY2UpIHJldHVybjtcblxuICAgICAgICByZXR1cm4gc291cmNlICsgRE9UX0xJVEVSQUwgKyBtYXRjaFsyXTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb3V0cHV0ID0gdXRpbHMucmVtb3ZlUHJlZml4KGlucHV0LCBzdGF0ZSk7XG4gIGxldCBzb3VyY2UgPSBjcmVhdGUob3V0cHV0KTtcblxuICBpZiAoc291cmNlICYmIG9wdHMuc3RyaWN0U2xhc2hlcyAhPT0gdHJ1ZSkge1xuICAgIHNvdXJjZSArPSBgJHtTTEFTSF9MSVRFUkFMfT9gO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBzY2FuID0gcmVxdWlyZSgnLi9zY2FuJyk7XG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcbmNvbnN0IGlzT2JqZWN0ID0gdmFsID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXRjaGVyIGZ1bmN0aW9uIGZyb20gb25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucy4gVGhlXG4gKiByZXR1cm5lZCBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyB0byBtYXRjaCBhcyBpdHMgZmlyc3QgYXJndW1lbnQsXG4gKiBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSBtYXRjaC4gVGhlIHJldHVybmVkIG1hdGNoZXJcbiAqIGZ1bmN0aW9uIGFsc28gdGFrZXMgYSBib29sZWFuIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdGhhdCwgd2hlbiB0cnVlLFxuICogcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaChnbG9iWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IGlzTWF0Y2ggPSBwaWNvbWF0Y2goJyouISgqYSknKTtcbiAqIGNvbnNvbGUubG9nKGlzTWF0Y2goJ2EuYScpKTsgLy89PiBmYWxzZVxuICogY29uc29sZS5sb2coaXNNYXRjaCgnYS5iJykpOyAvLz0+IHRydWVcbiAqIGBgYFxuICogQG5hbWUgcGljb21hdGNoXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYGdsb2JzYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm5zLlxuICogQHBhcmFtIHtPYmplY3Q9fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge0Z1bmN0aW9uPX0gUmV0dXJucyBhIG1hdGNoZXIgZnVuY3Rpb24uXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IHBpY29tYXRjaCA9IChnbG9iLCBvcHRpb25zLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGdsb2IpKSB7XG4gICAgY29uc3QgZm5zID0gZ2xvYi5tYXAoaW5wdXQgPT4gcGljb21hdGNoKGlucHV0LCBvcHRpb25zLCByZXR1cm5TdGF0ZSkpO1xuICAgIGNvbnN0IGFycmF5TWF0Y2hlciA9IHN0ciA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGlzTWF0Y2ggb2YgZm5zKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gaXNNYXRjaChzdHIpO1xuICAgICAgICBpZiAoc3RhdGUpIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheU1hdGNoZXI7XG4gIH1cblxuICBjb25zdCBpc1N0YXRlID0gaXNPYmplY3QoZ2xvYikgJiYgZ2xvYi50b2tlbnMgJiYgZ2xvYi5pbnB1dDtcblxuICBpZiAoZ2xvYiA9PT0gJycgfHwgKHR5cGVvZiBnbG9iICE9PSAnc3RyaW5nJyAmJiAhaXNTdGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBwYXR0ZXJuIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuICBjb25zdCByZWdleCA9IGlzU3RhdGVcbiAgICA/IHBpY29tYXRjaC5jb21waWxlUmUoZ2xvYiwgb3B0aW9ucylcbiAgICA6IHBpY29tYXRjaC5tYWtlUmUoZ2xvYiwgb3B0aW9ucywgZmFsc2UsIHRydWUpO1xuXG4gIGNvbnN0IHN0YXRlID0gcmVnZXguc3RhdGU7XG4gIGRlbGV0ZSByZWdleC5zdGF0ZTtcblxuICBsZXQgaXNJZ25vcmVkID0gKCkgPT4gZmFsc2U7XG4gIGlmIChvcHRzLmlnbm9yZSkge1xuICAgIGNvbnN0IGlnbm9yZU9wdHMgPSB7IC4uLm9wdGlvbnMsIGlnbm9yZTogbnVsbCwgb25NYXRjaDogbnVsbCwgb25SZXN1bHQ6IG51bGwgfTtcbiAgICBpc0lnbm9yZWQgPSBwaWNvbWF0Y2gob3B0cy5pZ25vcmUsIGlnbm9yZU9wdHMsIHJldHVyblN0YXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZXIgPSAoaW5wdXQsIHJldHVybk9iamVjdCA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgeyBpc01hdGNoLCBtYXRjaCwgb3V0cHV0IH0gPSBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXgsIG9wdGlvbnMsIHsgZ2xvYiwgcG9zaXggfSk7XG4gICAgY29uc3QgcmVzdWx0ID0geyBnbG9iLCBzdGF0ZSwgcmVnZXgsIHBvc2l4LCBpbnB1dCwgb3V0cHV0LCBtYXRjaCwgaXNNYXRjaCB9O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRzLm9uUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvcHRzLm9uUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGlzTWF0Y2ggPT09IGZhbHNlKSB7XG4gICAgICByZXN1bHQuaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdCA/IHJlc3VsdCA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChpc0lnbm9yZWQoaW5wdXQpKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMub25JZ25vcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb3B0cy5vbklnbm9yZShyZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMub25NYXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3B0cy5vbk1hdGNoKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiB0cnVlO1xuICB9O1xuXG4gIGlmIChyZXR1cm5TdGF0ZSkge1xuICAgIG1hdGNoZXIuc3RhdGUgPSBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVyO1xufTtcblxuLyoqXG4gKiBUZXN0IGBpbnB1dGAgd2l0aCB0aGUgZ2l2ZW4gYHJlZ2V4YC4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBtYWluXG4gKiBgcGljb21hdGNoKClgIGZ1bmN0aW9uIHRvIHRlc3QgdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXhbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLnRlc3QoJ2Zvby9iYXInLCAvXig/OihbXi9dKj8pXFwvKFteL10qPykpJC8pKTtcbiAqIC8vIHsgaXNNYXRjaDogdHJ1ZSwgbWF0Y2g6IFsgJ2Zvby8nLCAnZm9vJywgJ2JhcicgXSwgb3V0cHV0OiAnZm9vL2JhcicgfVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfSBgcmVnZXhgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggbWF0Y2hpbmcgaW5mby5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucGljb21hdGNoLnRlc3QgPSAoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCB7IGdsb2IsIHBvc2l4IH0gPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGlucHV0IHRvIGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAoaW5wdXQgPT09ICcnKSB7XG4gICAgcmV0dXJuIHsgaXNNYXRjaDogZmFsc2UsIG91dHB1dDogJycgfTtcbiAgfVxuXG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBmb3JtYXQgPSBvcHRzLmZvcm1hdCB8fCAocG9zaXggPyB1dGlscy50b1Bvc2l4U2xhc2hlcyA6IG51bGwpO1xuICBsZXQgbWF0Y2ggPSBpbnB1dCA9PT0gZ2xvYjtcbiAgbGV0IG91dHB1dCA9IChtYXRjaCAmJiBmb3JtYXQpID8gZm9ybWF0KGlucHV0KSA6IGlucHV0O1xuXG4gIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICBvdXRwdXQgPSBmb3JtYXQgPyBmb3JtYXQoaW5wdXQpIDogaW5wdXQ7XG4gICAgbWF0Y2ggPSBvdXRwdXQgPT09IGdsb2I7XG4gIH1cblxuICBpZiAobWF0Y2ggPT09IGZhbHNlIHx8IG9wdHMuY2FwdHVyZSA9PT0gdHJ1ZSkge1xuICAgIGlmIChvcHRzLm1hdGNoQmFzZSA9PT0gdHJ1ZSB8fCBvcHRzLmJhc2VuYW1lID09PSB0cnVlKSB7XG4gICAgICBtYXRjaCA9IHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCBwb3NpeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoID0gcmVnZXguZXhlYyhvdXRwdXQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGlzTWF0Y2g6IEJvb2xlYW4obWF0Y2gpLCBtYXRjaCwgb3V0cHV0IH07XG59O1xuXG4vKipcbiAqIE1hdGNoIHRoZSBiYXNlbmFtZSBvZiBhIGZpbGVwYXRoLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIGdsb2JbLCBvcHRpb25zXSk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gubWF0Y2hCYXNlKCdmb28vYmFyLmpzJywgJyouanMnKTsgLy8gdHJ1ZVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gYGdsb2JgIEdsb2IgcGF0dGVybiBvciByZWdleCBjcmVhdGVkIGJ5IFsubWFrZVJlXSgjbWFrZVJlKS5cbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5tYXRjaEJhc2UgPSAoaW5wdXQsIGdsb2IsIG9wdGlvbnMsIHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpKSA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gZ2xvYiBpbnN0YW5jZW9mIFJlZ0V4cCA/IGdsb2IgOiBwaWNvbWF0Y2gubWFrZVJlKGdsb2IsIG9wdGlvbnMpO1xuICByZXR1cm4gcmVnZXgudGVzdChwYXRoLmJhc2VuYW1lKGlucHV0KSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiAqKmFueSoqIG9mIHRoZSBnaXZlbiBnbG9iIGBwYXR0ZXJuc2AgbWF0Y2ggdGhlIHNwZWNpZmllZCBgc3RyaW5nYC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2guaXNNYXRjaChzdHJpbmcsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCBbJ2IuKicsICcqLmEnXSkpOyAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCAnYi4qJykpOyAvLz0+IGZhbHNlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBzdHIgVGhlIHN0cmluZyB0byB0ZXN0LlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHBhdHRlcm5zIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpLlxuICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGFueSBwYXR0ZXJucyBtYXRjaCBgc3RyYFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2guaXNNYXRjaCA9IChzdHIsIHBhdHRlcm5zLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybnMsIG9wdGlvbnMpKHN0cik7XG5cbi8qKlxuICogUGFyc2UgYSBnbG9iIHBhdHRlcm4gdG8gY3JlYXRlIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBhIHJlZ3VsYXJcbiAqIGV4cHJlc3Npb24uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3QgcmVzdWx0ID0gcGljb21hdGNoLnBhcnNlKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB1c2VmdWwgcHJvcGVydGllcyBhbmQgb3V0cHV0IHRvIGJlIHVzZWQgYXMgYSByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2gucGFyc2UgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkgcmV0dXJuIHBhdHRlcm4ubWFwKHAgPT4gcGljb21hdGNoLnBhcnNlKHAsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIHBhcnNlKHBhdHRlcm4sIHsgLi4ub3B0aW9ucywgZmFzdHBhdGhzOiBmYWxzZSB9KTtcbn07XG5cbi8qKlxuICogU2NhbiBhIGdsb2IgcGF0dGVybiB0byBzZXBhcmF0ZSB0aGUgcGF0dGVybiBpbnRvIHNlZ21lbnRzLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5zY2FuKGlucHV0Wywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IHBpY29tYXRjaC5zY2FuKCchLi9mb28vKi5qcycpO1xuICogY29uc29sZS5sb2cocmVzdWx0KTtcbiAqIHsgcHJlZml4OiAnIS4vJyxcbiAqICAgaW5wdXQ6ICchLi9mb28vKi5qcycsXG4gKiAgIHN0YXJ0OiAzLFxuICogICBiYXNlOiAnZm9vJyxcbiAqICAgZ2xvYjogJyouanMnLFxuICogICBpc0JyYWNlOiBmYWxzZSxcbiAqICAgaXNCcmFja2V0OiBmYWxzZSxcbiAqICAgaXNHbG9iOiB0cnVlLFxuICogICBpc0V4dGdsb2I6IGZhbHNlLFxuICogICBpc0dsb2JzdGFyOiBmYWxzZSxcbiAqICAgbmVnYXRlZDogdHJ1ZSB9XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIEdsb2IgcGF0dGVybiB0byBzY2FuLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5zY2FuID0gKGlucHV0LCBvcHRpb25zKSA9PiBzY2FuKGlucHV0LCBvcHRpb25zKTtcblxuLyoqXG4gKiBDb21waWxlIGEgcmVndWxhciBleHByZXNzaW9uIGZyb20gdGhlIGBzdGF0ZWAgb2JqZWN0IHJldHVybmVkIGJ5IHRoZVxuICogW3BhcnNlKCldKCNwYXJzZSkgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBgc3RhdGVgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGByZXR1cm5PdXRwdXRgIEludGVuZGVkIGZvciBpbXBsZW1lbnRvcnMsIHRoaXMgYXJndW1lbnQgYWxsb3dzIHlvdSB0byByZXR1cm4gdGhlIHJhdyBvdXRwdXQgZnJvbSB0aGUgcGFyc2VyLlxuICogQHBhcmFtIHtCb29sZWFufSBgcmV0dXJuU3RhdGVgIEFkZHMgdGhlIHN0YXRlIHRvIGEgYHN0YXRlYCBwcm9wZXJ0eSBvbiB0aGUgcmV0dXJuZWQgcmVnZXguIFVzZWZ1bCBmb3IgaW1wbGVtZW50b3JzIGFuZCBkZWJ1Z2dpbmcuXG4gKiBAcmV0dXJuIHtSZWdFeHB9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5jb21waWxlUmUgPSAoc3RhdGUsIG9wdGlvbnMsIHJldHVybk91dHB1dCA9IGZhbHNlLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmIChyZXR1cm5PdXRwdXQgPT09IHRydWUpIHtcbiAgICByZXR1cm4gc3RhdGUub3V0cHV0O1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHByZXBlbmQgPSBvcHRzLmNvbnRhaW5zID8gJycgOiAnXic7XG4gIGNvbnN0IGFwcGVuZCA9IG9wdHMuY29udGFpbnMgPyAnJyA6ICckJztcblxuICBsZXQgc291cmNlID0gYCR7cHJlcGVuZH0oPzoke3N0YXRlLm91dHB1dH0pJHthcHBlbmR9YDtcbiAgaWYgKHN0YXRlICYmIHN0YXRlLm5lZ2F0ZWQgPT09IHRydWUpIHtcbiAgICBzb3VyY2UgPSBgXig/ISR7c291cmNlfSkuKiRgO1xuICB9XG5cbiAgY29uc3QgcmVnZXggPSBwaWNvbWF0Y2gudG9SZWdleChzb3VyY2UsIG9wdGlvbnMpO1xuICBpZiAocmV0dXJuU3RhdGUgPT09IHRydWUpIHtcbiAgICByZWdleC5zdGF0ZSA9IHN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIHJlZ2V4O1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSBhIHBhcnNlZCBnbG9iIHBhdHRlcm4uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBwaWNvbWF0Y2gucGFyc2UoJyouanMnKTtcbiAqIC8vIHBpY29tYXRjaC5jb21waWxlUmUoc3RhdGVbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLmNvbXBpbGVSZShzdGF0ZSkpO1xuICogLy89PiAvXig/Oig/IVxcLikoPz0uKVteL10qP1xcLmpzKSQvXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgc3RhdGVgIFRoZSBvYmplY3QgcmV0dXJuZWQgZnJvbSB0aGUgYC5wYXJzZWAgbWV0aG9kLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHBhcmFtIHtCb29sZWFufSBgcmV0dXJuT3V0cHV0YCBJbXBsZW1lbnRvcnMgbWF5IHVzZSB0aGlzIGFyZ3VtZW50IHRvIHJldHVybiB0aGUgY29tcGlsZWQgb3V0cHV0LCBpbnN0ZWFkIG9mIGEgcmVndWxhciBleHByZXNzaW9uLiBUaGlzIGlzIG5vdCBleHBvc2VkIG9uIHRoZSBvcHRpb25zIHRvIHByZXZlbnQgZW5kLXVzZXJzIGZyb20gbXV0YXRpbmcgdGhlIHJlc3VsdC5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gYHJldHVyblN0YXRlYCBJbXBsZW1lbnRvcnMgbWF5IHVzZSB0aGlzIGFyZ3VtZW50IHRvIHJldHVybiB0aGUgc3RhdGUgZnJvbSB0aGUgcGFyc2VkIGdsb2Igd2l0aCB0aGUgcmV0dXJuZWQgcmVndWxhciBleHByZXNzaW9uLlxuICogQHJldHVybiB7UmVnRXhwfSBSZXR1cm5zIGEgcmVnZXggY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2gubWFrZVJlID0gKGlucHV0LCBvcHRpb25zID0ge30sIHJldHVybk91dHB1dCA9IGZhbHNlLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmICghaW5wdXQgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgbGV0IHBhcnNlZCA9IHsgbmVnYXRlZDogZmFsc2UsIGZhc3RwYXRoczogdHJ1ZSB9O1xuXG4gIGlmIChvcHRpb25zLmZhc3RwYXRocyAhPT0gZmFsc2UgJiYgKGlucHV0WzBdID09PSAnLicgfHwgaW5wdXRbMF0gPT09ICcqJykpIHtcbiAgICBwYXJzZWQub3V0cHV0ID0gcGFyc2UuZmFzdHBhdGhzKGlucHV0LCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmICghcGFyc2VkLm91dHB1dCkge1xuICAgIHBhcnNlZCA9IHBhcnNlKGlucHV0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiBwaWNvbWF0Y2guY29tcGlsZVJlKHBhcnNlZCwgb3B0aW9ucywgcmV0dXJuT3V0cHV0LCByZXR1cm5TdGF0ZSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcm9tIHRoZSBnaXZlbiByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC50b1JlZ2V4KHNvdXJjZVssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zdCB7IG91dHB1dCB9ID0gcGljb21hdGNoLnBhcnNlKCcqLmpzJyk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gudG9SZWdleChvdXRwdXQpKTtcbiAqIC8vPT4gL14oPzooPyFcXC4pKD89LilbXi9dKj9cXC5qcykkL1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHNvdXJjZWAgUmVndWxhciBleHByZXNzaW9uIHNvdXJjZSBzdHJpbmcuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtSZWdFeHB9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC50b1JlZ2V4ID0gKHNvdXJjZSwgb3B0aW9ucykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHNvdXJjZSwgb3B0cy5mbGFncyB8fCAob3B0cy5ub2Nhc2UgPyAnaScgOiAnJykpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnID09PSB0cnVlKSB0aHJvdyBlcnI7XG4gICAgcmV0dXJuIC8kXi87XG4gIH1cbn07XG5cbi8qKlxuICogUGljb21hdGNoIGNvbnN0YW50cy5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuXG5waWNvbWF0Y2guY29uc3RhbnRzID0gY29uc3RhbnRzO1xuXG4vKipcbiAqIEV4cG9zZSBcInBpY29tYXRjaFwiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBwaWNvbWF0Y2g7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvcGljb21hdGNoJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5jb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbmNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKCdwaWNvbWF0Y2gvbGliL3V0aWxzJyk7XG5jb25zdCBpc0VtcHR5U3RyaW5nID0gdmFsID0+IHZhbCA9PT0gJycgfHwgdmFsID09PSAnLi8nO1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0aGF0IG1hdGNoIG9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0obGlzdCwgcGF0dGVybnNbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0oWydhLmpzJywgJ2EudHh0J10sIFsnKi5qcyddKSk7XG4gKiAvLz0+IFsgJ2EuanMnIF1cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXk8c3RyaW5nPn0gYGxpc3RgIExpc3Qgb2Ygc3RyaW5ncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5PHN0cmluZz59IGBwYXR0ZXJuc2AgT25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucyB0byB1c2UgZm9yIG1hdGNoaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucylcbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIGFuIGFycmF5IG9mIG1hdGNoZXNcbiAqIEBzdW1tYXJ5IGZhbHNlXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IG1pY3JvbWF0Y2ggPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgcGF0dGVybnMgPSBbXS5jb25jYXQocGF0dGVybnMpO1xuICBsaXN0ID0gW10uY29uY2F0KGxpc3QpO1xuXG4gIGxldCBvbWl0ID0gbmV3IFNldCgpO1xuICBsZXQga2VlcCA9IG5ldyBTZXQoKTtcbiAgbGV0IGl0ZW1zID0gbmV3IFNldCgpO1xuICBsZXQgbmVnYXRpdmVzID0gMDtcblxuICBsZXQgb25SZXN1bHQgPSBzdGF0ZSA9PiB7XG4gICAgaXRlbXMuYWRkKHN0YXRlLm91dHB1dCk7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5vblJlc3VsdCkge1xuICAgICAgb3B0aW9ucy5vblJlc3VsdChzdGF0ZSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0dGVybnMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaXNNYXRjaCA9IHBpY29tYXRjaChTdHJpbmcocGF0dGVybnNbaV0pLCB7IC4uLm9wdGlvbnMsIG9uUmVzdWx0IH0sIHRydWUpO1xuICAgIGxldCBuZWdhdGVkID0gaXNNYXRjaC5zdGF0ZS5uZWdhdGVkIHx8IGlzTWF0Y2guc3RhdGUubmVnYXRlZEV4dGdsb2I7XG4gICAgaWYgKG5lZ2F0ZWQpIG5lZ2F0aXZlcysrO1xuXG4gICAgZm9yIChsZXQgaXRlbSBvZiBsaXN0KSB7XG4gICAgICBsZXQgbWF0Y2hlZCA9IGlzTWF0Y2goaXRlbSwgdHJ1ZSk7XG5cbiAgICAgIGxldCBtYXRjaCA9IG5lZ2F0ZWQgPyAhbWF0Y2hlZC5pc01hdGNoIDogbWF0Y2hlZC5pc01hdGNoO1xuICAgICAgaWYgKCFtYXRjaCkgY29udGludWU7XG5cbiAgICAgIGlmIChuZWdhdGVkKSB7XG4gICAgICAgIG9taXQuYWRkKG1hdGNoZWQub3V0cHV0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9taXQuZGVsZXRlKG1hdGNoZWQub3V0cHV0KTtcbiAgICAgICAga2VlcC5hZGQobWF0Y2hlZC5vdXRwdXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCByZXN1bHQgPSBuZWdhdGl2ZXMgPT09IHBhdHRlcm5zLmxlbmd0aCA/IFsuLi5pdGVtc10gOiBbLi4ua2VlcF07XG4gIGxldCBtYXRjaGVzID0gcmVzdWx0LmZpbHRlcihpdGVtID0+ICFvbWl0LmhhcyhpdGVtKSk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICBpZiAob3B0aW9ucy5mYWlsZ2xvYiA9PT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtYXRjaGVzIGZvdW5kIGZvciBcIiR7cGF0dGVybnMuam9pbignLCAnKX1cImApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm5vbnVsbCA9PT0gdHJ1ZSB8fCBvcHRpb25zLm51bGxnbG9iID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy51bmVzY2FwZSA/IHBhdHRlcm5zLm1hcChwID0+IHAucmVwbGFjZSgvXFxcXC9nLCAnJykpIDogcGF0dGVybnM7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1hdGNoZXM7XG59O1xuXG4vKipcbiAqIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gKi9cblxubWljcm9tYXRjaC5tYXRjaCA9IG1pY3JvbWF0Y2g7XG5cbi8qKlxuICogUmV0dXJucyBhIG1hdGNoZXIgZnVuY3Rpb24gZnJvbSB0aGUgZ2l2ZW4gZ2xvYiBgcGF0dGVybmAgYW5kIGBvcHRpb25zYC5cbiAqIFRoZSByZXR1cm5lZCBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyB0byBtYXRjaCBhcyBpdHMgb25seSBhcmd1bWVudCBhbmQgcmV0dXJuc1xuICogdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgbWF0Y2guXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0ubWF0Y2hlcihwYXR0ZXJuWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IGlzTWF0Y2ggPSBtbS5tYXRjaGVyKCcqLiEoKmEpJyk7XG4gKiBjb25zb2xlLmxvZyhpc01hdGNoKCdhLmEnKSk7IC8vPT4gZmFsc2VcbiAqIGNvbnNvbGUubG9nKGlzTWF0Y2goJ2EuYicpKTsgLy89PiB0cnVlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmAgR2xvYiBwYXR0ZXJuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gUmV0dXJucyBhIG1hdGNoZXIgZnVuY3Rpb24uXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gubWF0Y2hlciA9IChwYXR0ZXJuLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybiwgb3B0aW9ucyk7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmICoqYW55Kiogb2YgdGhlIGdpdmVuIGdsb2IgYHBhdHRlcm5zYCBtYXRjaCB0aGUgc3BlY2lmaWVkIGBzdHJpbmdgLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLmlzTWF0Y2goc3RyaW5nLCBwYXR0ZXJuc1ssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbS5pc01hdGNoKCdhLmEnLCBbJ2IuKicsICcqLmEnXSkpOyAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKG1tLmlzTWF0Y2goJ2EuYScsICdiLionKSk7IC8vPT4gZmFsc2VcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgIFRoZSBzdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgcGF0dGVybnNgIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgW29wdGlvbnNdYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucykuXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYW55IHBhdHRlcm5zIG1hdGNoIGBzdHJgXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guaXNNYXRjaCA9IChzdHIsIHBhdHRlcm5zLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybnMsIG9wdGlvbnMpKHN0cik7XG5cbi8qKlxuICogQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAqL1xuXG5taWNyb21hdGNoLmFueSA9IG1pY3JvbWF0Y2guaXNNYXRjaDtcblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgXyoqZG8gbm90IG1hdGNoIGFueSoqXyBvZiB0aGUgZ2l2ZW4gYHBhdHRlcm5zYC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgbW0gPSByZXF1aXJlKCdtaWNyb21hdGNoJyk7XG4gKiAvLyBtbS5ub3QobGlzdCwgcGF0dGVybnNbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0ubm90KFsnYS5hJywgJ2IuYicsICdjLmMnXSwgJyouYScpKTtcbiAqIC8vPT4gWydiLmInLCAnYy5jJ11cbiAqIGBgYFxuICogQHBhcmFtIHtBcnJheX0gYGxpc3RgIEFycmF5IG9mIHN0cmluZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYHBhdHRlcm5zYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm4gdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgKipkbyBub3QgbWF0Y2gqKiB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gubm90ID0gKGxpc3QsIHBhdHRlcm5zLCBvcHRpb25zID0ge30pID0+IHtcbiAgcGF0dGVybnMgPSBbXS5jb25jYXQocGF0dGVybnMpLm1hcChTdHJpbmcpO1xuICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpO1xuICBsZXQgaXRlbXMgPSBbXTtcblxuICBsZXQgb25SZXN1bHQgPSBzdGF0ZSA9PiB7XG4gICAgaWYgKG9wdGlvbnMub25SZXN1bHQpIG9wdGlvbnMub25SZXN1bHQoc3RhdGUpO1xuICAgIGl0ZW1zLnB1c2goc3RhdGUub3V0cHV0KTtcbiAgfTtcblxuICBsZXQgbWF0Y2hlcyA9IG1pY3JvbWF0Y2gobGlzdCwgcGF0dGVybnMsIHsgLi4ub3B0aW9ucywgb25SZXN1bHQgfSk7XG5cbiAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykge1xuICAgIGlmICghbWF0Y2hlcy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgcmVzdWx0LmFkZChpdGVtKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFsuLi5yZXN1bHRdO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGBzdHJpbmdgIGNvbnRhaW5zIHRoZSBnaXZlbiBwYXR0ZXJuLiBTaW1pbGFyXG4gKiB0byBbLmlzTWF0Y2hdKCNpc01hdGNoKSBidXQgdGhlIHBhdHRlcm4gY2FuIG1hdGNoIGFueSBwYXJ0IG9mIHRoZSBzdHJpbmcuXG4gKlxuICogYGBganNcbiAqIHZhciBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLmNvbnRhaW5zKHN0cmluZywgcGF0dGVyblssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbS5jb250YWlucygnYWEvYmIvY2MnLCAnKmInKSk7XG4gKiAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKG1tLmNvbnRhaW5zKCdhYS9iYi9jYycsICcqZCcpKTtcbiAqIC8vPT4gZmFsc2VcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgIFRoZSBzdHJpbmcgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYHBhdHRlcm5zYCBHbG9iIHBhdHRlcm4gdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYW55IG9mIHRoZSBwYXR0ZXJucyBtYXRjaGVzIGFueSBwYXJ0IG9mIGBzdHJgLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLmNvbnRhaW5zID0gKHN0ciwgcGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIHN0cmluZzogXCIke3V0aWwuaW5zcGVjdChzdHIpfVwiYCk7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLnNvbWUocCA9PiBtaWNyb21hdGNoLmNvbnRhaW5zKHN0ciwgcCwgb3B0aW9ucykpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgIGlmIChpc0VtcHR5U3RyaW5nKHN0cikgfHwgaXNFbXB0eVN0cmluZyhwYXR0ZXJuKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzdHIuaW5jbHVkZXMocGF0dGVybikgfHwgKHN0ci5zdGFydHNXaXRoKCcuLycpICYmIHN0ci5zbGljZSgyKS5pbmNsdWRlcyhwYXR0ZXJuKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaWNyb21hdGNoLmlzTWF0Y2goc3RyLCBwYXR0ZXJuLCB7IC4uLm9wdGlvbnMsIGNvbnRhaW5zOiB0cnVlIH0pO1xufTtcblxuLyoqXG4gKiBGaWx0ZXIgdGhlIGtleXMgb2YgdGhlIGdpdmVuIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBgZ2xvYmAgcGF0dGVyblxuICogYW5kIGBvcHRpb25zYC4gRG9lcyBub3QgYXR0ZW1wdCB0byBtYXRjaCBuZXN0ZWQga2V5cy4gSWYgeW91IG5lZWQgdGhpcyBmZWF0dXJlLFxuICogdXNlIFtnbG9iLW9iamVjdF1bXSBpbnN0ZWFkLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLm1hdGNoS2V5cyhvYmplY3QsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IG9iaiA9IHsgYWE6ICdhJywgYWI6ICdiJywgYWM6ICdjJyB9O1xuICogY29uc29sZS5sb2cobW0ubWF0Y2hLZXlzKG9iaiwgJypiJykpO1xuICogLy89PiB7IGFiOiAnYicgfVxuICogYGBgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9iamVjdGAgVGhlIG9iamVjdCB3aXRoIGtleXMgdG8gZmlsdGVyLlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBwYXR0ZXJuc2AgT25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucyB0byB1c2UgZm9yIG1hdGNoaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucykgZm9yIGNoYW5naW5nIGhvdyBtYXRjaGVzIGFyZSBwZXJmb3JtZWRcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBvbmx5IGtleXMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gubWF0Y2hLZXlzID0gKG9iaiwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCcpO1xuICB9XG4gIGxldCBrZXlzID0gbWljcm9tYXRjaChPYmplY3Qua2V5cyhvYmopLCBwYXR0ZXJucywgb3B0aW9ucyk7XG4gIGxldCByZXMgPSB7fTtcbiAgZm9yIChsZXQga2V5IG9mIGtleXMpIHJlc1trZXldID0gb2JqW2tleV07XG4gIHJldHVybiByZXM7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBzb21lIG9mIHRoZSBzdHJpbmdzIGluIHRoZSBnaXZlbiBgbGlzdGAgbWF0Y2ggYW55IG9mIHRoZSBnaXZlbiBnbG9iIGBwYXR0ZXJuc2AuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uc29tZShsaXN0LCBwYXR0ZXJuc1ssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbS5zb21lKFsnZm9vLmpzJywgJ2Jhci5qcyddLCBbJyouanMnLCAnIWZvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKiBjb25zb2xlLmxvZyhtbS5zb21lKFsnZm9vLmpzJ10sIFsnKi5qcycsICchZm9vLmpzJ10pKTtcbiAqIC8vIGZhbHNlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgbGlzdGAgVGhlIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIHRvIHRlc3QuIFJldHVybnMgYXMgc29vbiBhcyB0aGUgZmlyc3QgbWF0Y2ggaXMgZm91bmQuXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYHBhdHRlcm5zYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm5zIHRvIHVzZSBmb3IgbWF0Y2hpbmcuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgIFNlZSBhdmFpbGFibGUgW29wdGlvbnNdKCNvcHRpb25zKSBmb3IgY2hhbmdpbmcgaG93IG1hdGNoZXMgYXJlIHBlcmZvcm1lZFxuICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGFueSBgcGF0dGVybnNgIG1hdGNoZXMgYW55IG9mIHRoZSBzdHJpbmdzIGluIGBsaXN0YFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLnNvbWUgPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IGl0ZW1zID0gW10uY29uY2F0KGxpc3QpO1xuXG4gIGZvciAobGV0IHBhdHRlcm4gb2YgW10uY29uY2F0KHBhdHRlcm5zKSkge1xuICAgIGxldCBpc01hdGNoID0gcGljb21hdGNoKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucyk7XG4gICAgaWYgKGl0ZW1zLnNvbWUoaXRlbSA9PiBpc01hdGNoKGl0ZW0pKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGV2ZXJ5IHN0cmluZyBpbiB0aGUgZ2l2ZW4gYGxpc3RgIG1hdGNoZXNcbiAqIGFueSBvZiB0aGUgZ2l2ZW4gZ2xvYiBgcGF0dGVybnNgLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLmV2ZXJ5KGxpc3QsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnNvbGUubG9nKG1tLmV2ZXJ5KCdmb28uanMnLCBbJ2Zvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKiBjb25zb2xlLmxvZyhtbS5ldmVyeShbJ2Zvby5qcycsICdiYXIuanMnXSwgWycqLmpzJ10pKTtcbiAqIC8vIHRydWVcbiAqIGNvbnNvbGUubG9nKG1tLmV2ZXJ5KFsnZm9vLmpzJywgJ2Jhci5qcyddLCBbJyouanMnLCAnIWZvby5qcyddKSk7XG4gKiAvLyBmYWxzZVxuICogY29uc29sZS5sb2cobW0uZXZlcnkoWydmb28uanMnXSwgWycqLmpzJywgJyFmb28uanMnXSkpO1xuICogLy8gZmFsc2VcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBsaXN0YCBUaGUgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MgdG8gdGVzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgcGF0dGVybnNgIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYWxsIGBwYXR0ZXJuc2AgbWF0Y2hlcyBhbGwgb2YgdGhlIHN0cmluZ3MgaW4gYGxpc3RgXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guZXZlcnkgPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IGl0ZW1zID0gW10uY29uY2F0KGxpc3QpO1xuXG4gIGZvciAobGV0IHBhdHRlcm4gb2YgW10uY29uY2F0KHBhdHRlcm5zKSkge1xuICAgIGxldCBpc01hdGNoID0gcGljb21hdGNoKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucyk7XG4gICAgaWYgKCFpdGVtcy5ldmVyeShpdGVtID0+IGlzTWF0Y2goaXRlbSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgKiphbGwqKiBvZiB0aGUgZ2l2ZW4gYHBhdHRlcm5zYCBtYXRjaFxuICogdGhlIHNwZWNpZmllZCBzdHJpbmcuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uYWxsKHN0cmluZywgcGF0dGVybnNbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0uYWxsKCdmb28uanMnLCBbJ2Zvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKlxuICogY29uc29sZS5sb2cobW0uYWxsKCdmb28uanMnLCBbJyouanMnLCAnIWZvby5qcyddKSk7XG4gKiAvLyBmYWxzZVxuICpcbiAqIGNvbnNvbGUubG9nKG1tLmFsbCgnZm9vLmpzJywgWycqLmpzJywgJ2Zvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKlxuICogY29uc29sZS5sb2cobW0uYWxsKCdmb28uanMnLCBbJyouanMnLCAnZionLCAnKm8qJywgJypvLmpzJ10pKTtcbiAqIC8vIHRydWVcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBzdHJgIFRoZSBzdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgcGF0dGVybnNgIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYW55IHBhdHRlcm5zIG1hdGNoIGBzdHJgXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guYWxsID0gKHN0ciwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBzdHJpbmc6IFwiJHt1dGlsLmluc3BlY3Qoc3RyKX1cImApO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChwYXR0ZXJucykuZXZlcnkocCA9PiBwaWNvbWF0Y2gocCwgb3B0aW9ucykoc3RyKSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2YgbWF0Y2hlcyBjYXB0dXJlZCBieSBgcGF0dGVybmAgaW4gYHN0cmluZywgb3IgYG51bGxgIGlmIHRoZSBwYXR0ZXJuIGRpZCBub3QgbWF0Y2guXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uY2FwdHVyZShwYXR0ZXJuLCBzdHJpbmdbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0uY2FwdHVyZSgndGVzdC8qLmpzJywgJ3Rlc3QvZm9vLmpzJykpO1xuICogLy89PiBbJ2ZvbyddXG4gKiBjb25zb2xlLmxvZyhtbS5jYXB0dXJlKCd0ZXN0LyouanMnLCAnZm9vL2Jhci5jc3MnKSk7XG4gKiAvLz0+IG51bGxcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBnbG9iYCBHbG9iIHBhdHRlcm4gdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIFN0cmluZyB0byBtYXRjaFxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucykgZm9yIGNoYW5naW5nIGhvdyBtYXRjaGVzIGFyZSBwZXJmb3JtZWRcbiAqIEByZXR1cm4ge0FycmF5fG51bGx9IFJldHVybnMgYW4gYXJyYXkgb2YgY2FwdHVyZXMgaWYgdGhlIGlucHV0IG1hdGNoZXMgdGhlIGdsb2IgcGF0dGVybiwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxubWljcm9tYXRjaC5jYXB0dXJlID0gKGdsb2IsIGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGxldCBwb3NpeCA9IHV0aWxzLmlzV2luZG93cyhvcHRpb25zKTtcbiAgbGV0IHJlZ2V4ID0gcGljb21hdGNoLm1ha2VSZShTdHJpbmcoZ2xvYiksIHsgLi4ub3B0aW9ucywgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgbGV0IG1hdGNoID0gcmVnZXguZXhlYyhwb3NpeCA/IHV0aWxzLnRvUG9zaXhTbGFzaGVzKGlucHV0KSA6IGlucHV0KTtcblxuICBpZiAobWF0Y2gpIHtcbiAgICByZXR1cm4gbWF0Y2guc2xpY2UoMSkubWFwKHYgPT4gdiA9PT0gdm9pZCAwID8gJycgOiB2KTtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSB0aGUgZ2l2ZW4gZ2xvYiBgcGF0dGVybmAuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0ubWFrZVJlKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0ubWFrZVJlKCcqLmpzJykpO1xuICogLy89PiAvXig/OihcXC5bXFxcXFxcL10pPyg/IVxcLikoPz0uKVteXFwvXSo/XFwuanMpJC9cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBwYXR0ZXJuYCBBIGdsb2IgcGF0dGVybiB0byBjb252ZXJ0IHRvIHJlZ2V4LlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7UmVnRXhwfSBSZXR1cm5zIGEgcmVnZXggY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLm1ha2VSZSA9ICguLi5hcmdzKSA9PiBwaWNvbWF0Y2gubWFrZVJlKC4uLmFyZ3MpO1xuXG4vKipcbiAqIFNjYW4gYSBnbG9iIHBhdHRlcm4gdG8gc2VwYXJhdGUgdGhlIHBhdHRlcm4gaW50byBzZWdtZW50cy4gVXNlZFxuICogYnkgdGhlIFtzcGxpdF0oI3NwbGl0KSBtZXRob2QuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBtbS5zY2FuKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLnNjYW4gPSAoLi4uYXJncykgPT4gcGljb21hdGNoLnNjYW4oLi4uYXJncyk7XG5cbi8qKlxuICogUGFyc2UgYSBnbG9iIHBhdHRlcm4gdG8gY3JlYXRlIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBhIHJlZ3VsYXJcbiAqIGV4cHJlc3Npb24uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBtbShwYXR0ZXJuWywgb3B0aW9uc10pO1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGdsb2JgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggdXNlZnVsIHByb3BlcnRpZXMgYW5kIG91dHB1dCB0byBiZSB1c2VkIGFzIHJlZ2V4IHNvdXJjZSBzdHJpbmcuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gucGFyc2UgPSAocGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IHJlcyA9IFtdO1xuICBmb3IgKGxldCBwYXR0ZXJuIG9mIFtdLmNvbmNhdChwYXR0ZXJucyB8fCBbXSkpIHtcbiAgICBmb3IgKGxldCBzdHIgb2YgYnJhY2VzKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucykpIHtcbiAgICAgIHJlcy5wdXNoKHBpY29tYXRjaC5wYXJzZShzdHIsIG9wdGlvbnMpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogUHJvY2VzcyB0aGUgZ2l2ZW4gYnJhY2UgYHBhdHRlcm5gLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCB7IGJyYWNlcyB9ID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogY29uc29sZS5sb2coYnJhY2VzKCdmb28ve2EsYixjfS9iYXInKSk7XG4gKiAvLz0+IFsgJ2Zvby8oYXxifGMpL2JhcicgXVxuICpcbiAqIGNvbnNvbGUubG9nKGJyYWNlcygnZm9vL3thLGIsY30vYmFyJywgeyBleHBhbmQ6IHRydWUgfSkpO1xuICogLy89PiBbICdmb28vYS9iYXInLCAnZm9vL2IvYmFyJywgJ2Zvby9jL2JhcicgXVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHBhdHRlcm5gIFN0cmluZyB3aXRoIGJyYWNlIHBhdHRlcm4gdG8gcHJvY2Vzcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgQW55IFtvcHRpb25zXSgjb3B0aW9ucykgdG8gY2hhbmdlIGhvdyBleHBhbnNpb24gaXMgcGVyZm9ybWVkLiBTZWUgdGhlIFticmFjZXNdW10gbGlicmFyeSBmb3IgYWxsIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guYnJhY2VzID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgaWYgKChvcHRpb25zICYmIG9wdGlvbnMubm9icmFjZSA9PT0gdHJ1ZSkgfHwgIS9cXHsuKlxcfS8udGVzdChwYXR0ZXJuKSkge1xuICAgIHJldHVybiBbcGF0dGVybl07XG4gIH1cbiAgcmV0dXJuIGJyYWNlcyhwYXR0ZXJuLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogRXhwYW5kIGJyYWNlc1xuICovXG5cbm1pY3JvbWF0Y2guYnJhY2VFeHBhbmQgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIHN0cmluZycpO1xuICByZXR1cm4gbWljcm9tYXRjaC5icmFjZXMocGF0dGVybiwgeyAuLi5vcHRpb25zLCBleHBhbmQ6IHRydWUgfSk7XG59O1xuXG4vKipcbiAqIEV4cG9zZSBtaWNyb21hdGNoXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBtaWNyb21hdGNoO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm1hdGNoQW55ID0gZXhwb3J0cy5jb252ZXJ0UGF0dGVybnNUb1JlID0gZXhwb3J0cy5tYWtlUmUgPSBleHBvcnRzLmdldFBhdHRlcm5QYXJ0cyA9IGV4cG9ydHMuZXhwYW5kQnJhY2VFeHBhbnNpb24gPSBleHBvcnRzLmV4cGFuZFBhdHRlcm5zV2l0aEJyYWNlRXhwYW5zaW9uID0gZXhwb3J0cy5pc0FmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybiA9IGV4cG9ydHMuZW5kc1dpdGhTbGFzaEdsb2JTdGFyID0gZXhwb3J0cy5oYXNHbG9iU3RhciA9IGV4cG9ydHMuZ2V0QmFzZURpcmVjdG9yeSA9IGV4cG9ydHMuaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5ID0gZXhwb3J0cy5nZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5ID0gZXhwb3J0cy5nZXRQYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnkgPSBleHBvcnRzLmdldFBvc2l0aXZlUGF0dGVybnMgPSBleHBvcnRzLmdldE5lZ2F0aXZlUGF0dGVybnMgPSBleHBvcnRzLmlzUG9zaXRpdmVQYXR0ZXJuID0gZXhwb3J0cy5pc05lZ2F0aXZlUGF0dGVybiA9IGV4cG9ydHMuY29udmVydFRvTmVnYXRpdmVQYXR0ZXJuID0gZXhwb3J0cy5jb252ZXJ0VG9Qb3NpdGl2ZVBhdHRlcm4gPSBleHBvcnRzLmlzRHluYW1pY1BhdHRlcm4gPSBleHBvcnRzLmlzU3RhdGljUGF0dGVybiA9IHZvaWQgMDtcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmNvbnN0IGdsb2JQYXJlbnQgPSByZXF1aXJlKFwiZ2xvYi1wYXJlbnRcIik7XG5jb25zdCBtaWNyb21hdGNoID0gcmVxdWlyZShcIm1pY3JvbWF0Y2hcIik7XG5jb25zdCBHTE9CU1RBUiA9ICcqKic7XG5jb25zdCBFU0NBUEVfU1lNQk9MID0gJ1xcXFwnO1xuY29uc3QgQ09NTU9OX0dMT0JfU1lNQk9MU19SRSA9IC9bKj9dfF4hLztcbmNvbnN0IFJFR0VYX0NIQVJBQ1RFUl9DTEFTU19TWU1CT0xTX1JFID0gL1xcW1teW10qXS87XG5jb25zdCBSRUdFWF9HUk9VUF9TWU1CT0xTX1JFID0gLyg/Ol58W14hKis/QF0pXFwoW14oXSpcXHxbXnxdKlxcKS87XG5jb25zdCBHTE9CX0VYVEVOU0lPTl9TWU1CT0xTX1JFID0gL1shKis/QF1cXChbXihdKlxcKS87XG5jb25zdCBCUkFDRV9FWFBBTlNJT05fU0VQQVJBVE9SU19SRSA9IC8sfFxcLlxcLi87XG5mdW5jdGlvbiBpc1N0YXRpY1BhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuICFpc0R5bmFtaWNQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMpO1xufVxuZXhwb3J0cy5pc1N0YXRpY1BhdHRlcm4gPSBpc1N0YXRpY1BhdHRlcm47XG5mdW5jdGlvbiBpc0R5bmFtaWNQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkge1xuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbCBjYXNlIHdpdGggYW4gZW1wdHkgc3RyaW5nIGlzIG5lY2Vzc2FyeSBmb3IgbWF0Y2hpbmcgcGF0dGVybnMgdGhhdCBzdGFydCB3aXRoIGEgZm9yd2FyZCBzbGFzaC5cbiAgICAgKiBBbiBlbXB0eSBzdHJpbmcgY2Fubm90IGJlIGEgZHluYW1pYyBwYXR0ZXJuLlxuICAgICAqIEZvciBleGFtcGxlLCB0aGUgcGF0dGVybiBgL2xpYi8qYCB3aWxsIGJlIHNwcmVhZCBpbnRvIHBhcnRzOiAnJywgJ2xpYicsICcqJy5cbiAgICAgKi9cbiAgICBpZiAocGF0dGVybiA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIHRoZSBgY2FzZVNlbnNpdGl2ZU1hdGNoYCBvcHRpb24gaXMgZGlzYWJsZWQsIGFsbCBwYXR0ZXJucyBtdXN0IGJlIG1hcmtlZCBhcyBkeW5hbWljLCBiZWNhdXNlIHdlIGNhbm5vdCBjaGVja1xuICAgICAqIGZpbGVwYXRoIGRpcmVjdGx5ICh3aXRob3V0IHJlYWQgZGlyZWN0b3J5KS5cbiAgICAgKi9cbiAgICBpZiAob3B0aW9ucy5jYXNlU2Vuc2l0aXZlTWF0Y2ggPT09IGZhbHNlIHx8IHBhdHRlcm4uaW5jbHVkZXMoRVNDQVBFX1NZTUJPTCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChDT01NT05fR0xPQl9TWU1CT0xTX1JFLnRlc3QocGF0dGVybikgfHwgUkVHRVhfQ0hBUkFDVEVSX0NMQVNTX1NZTUJPTFNfUkUudGVzdChwYXR0ZXJuKSB8fCBSRUdFWF9HUk9VUF9TWU1CT0xTX1JFLnRlc3QocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmV4dGdsb2IgIT09IGZhbHNlICYmIEdMT0JfRVhURU5TSU9OX1NZTUJPTFNfUkUudGVzdChwYXR0ZXJuKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYnJhY2VFeHBhbnNpb24gIT09IGZhbHNlICYmIGhhc0JyYWNlRXhwYW5zaW9uKHBhdHRlcm4pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnRzLmlzRHluYW1pY1BhdHRlcm4gPSBpc0R5bmFtaWNQYXR0ZXJuO1xuZnVuY3Rpb24gaGFzQnJhY2VFeHBhbnNpb24ocGF0dGVybikge1xuICAgIGNvbnN0IG9wZW5pbmdCcmFjZUluZGV4ID0gcGF0dGVybi5pbmRleE9mKCd7Jyk7XG4gICAgaWYgKG9wZW5pbmdCcmFjZUluZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNsb3NpbmdCcmFjZUluZGV4ID0gcGF0dGVybi5pbmRleE9mKCd9Jywgb3BlbmluZ0JyYWNlSW5kZXggKyAxKTtcbiAgICBpZiAoY2xvc2luZ0JyYWNlSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYnJhY2VDb250ZW50ID0gcGF0dGVybi5zbGljZShvcGVuaW5nQnJhY2VJbmRleCwgY2xvc2luZ0JyYWNlSW5kZXgpO1xuICAgIHJldHVybiBCUkFDRV9FWFBBTlNJT05fU0VQQVJBVE9SU19SRS50ZXN0KGJyYWNlQ29udGVudCk7XG59XG5mdW5jdGlvbiBjb252ZXJ0VG9Qb3NpdGl2ZVBhdHRlcm4ocGF0dGVybikge1xuICAgIHJldHVybiBpc05lZ2F0aXZlUGF0dGVybihwYXR0ZXJuKSA/IHBhdHRlcm4uc2xpY2UoMSkgOiBwYXR0ZXJuO1xufVxuZXhwb3J0cy5jb252ZXJ0VG9Qb3NpdGl2ZVBhdHRlcm4gPSBjb252ZXJ0VG9Qb3NpdGl2ZVBhdHRlcm47XG5mdW5jdGlvbiBjb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4ocGF0dGVybikge1xuICAgIHJldHVybiAnIScgKyBwYXR0ZXJuO1xufVxuZXhwb3J0cy5jb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4gPSBjb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm47XG5mdW5jdGlvbiBpc05lZ2F0aXZlUGF0dGVybihwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpICYmIHBhdHRlcm5bMV0gIT09ICcoJztcbn1cbmV4cG9ydHMuaXNOZWdhdGl2ZVBhdHRlcm4gPSBpc05lZ2F0aXZlUGF0dGVybjtcbmZ1bmN0aW9uIGlzUG9zaXRpdmVQYXR0ZXJuKHBhdHRlcm4pIHtcbiAgICByZXR1cm4gIWlzTmVnYXRpdmVQYXR0ZXJuKHBhdHRlcm4pO1xufVxuZXhwb3J0cy5pc1Bvc2l0aXZlUGF0dGVybiA9IGlzUG9zaXRpdmVQYXR0ZXJuO1xuZnVuY3Rpb24gZ2V0TmVnYXRpdmVQYXR0ZXJucyhwYXR0ZXJucykge1xuICAgIHJldHVybiBwYXR0ZXJucy5maWx0ZXIoaXNOZWdhdGl2ZVBhdHRlcm4pO1xufVxuZXhwb3J0cy5nZXROZWdhdGl2ZVBhdHRlcm5zID0gZ2V0TmVnYXRpdmVQYXR0ZXJucztcbmZ1bmN0aW9uIGdldFBvc2l0aXZlUGF0dGVybnMocGF0dGVybnMpIHtcbiAgICByZXR1cm4gcGF0dGVybnMuZmlsdGVyKGlzUG9zaXRpdmVQYXR0ZXJuKTtcbn1cbmV4cG9ydHMuZ2V0UG9zaXRpdmVQYXR0ZXJucyA9IGdldFBvc2l0aXZlUGF0dGVybnM7XG4vKipcbiAqIFJldHVybnMgcGF0dGVybnMgdGhhdCBjYW4gYmUgYXBwbGllZCBpbnNpZGUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBbJy4vKicsICcqJywgJ2EvKiddXG4gKiBnZXRQYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnkoWycuLyonLCAnKicsICdhLyonLCAnLi4vKicsICcuLy4uLyonXSlcbiAqL1xuZnVuY3Rpb24gZ2V0UGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5KHBhdHRlcm5zKSB7XG4gICAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcigocGF0dGVybikgPT4gIWlzUGF0dGVyblJlbGF0ZWRUb1BhcmVudERpcmVjdG9yeShwYXR0ZXJuKSk7XG59XG5leHBvcnRzLmdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeSA9IGdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeTtcbi8qKlxuICogUmV0dXJucyBwYXR0ZXJucyB0byBiZSBleHBhbmRlZCByZWxhdGl2ZSB0byAob3V0c2lkZSkgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBbJy4uLyonLCAnLi8uLi8qJ11cbiAqIGdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeShbJy4vKicsICcqJywgJ2EvKicsICcuLi8qJywgJy4vLi4vKiddKVxuICovXG5mdW5jdGlvbiBnZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5KHBhdHRlcm5zKSB7XG4gICAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcihpc1BhdHRlcm5SZWxhdGVkVG9QYXJlbnREaXJlY3RvcnkpO1xufVxuZXhwb3J0cy5nZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5ID0gZ2V0UGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeTtcbmZ1bmN0aW9uIGlzUGF0dGVyblJlbGF0ZWRUb1BhcmVudERpcmVjdG9yeShwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uc3RhcnRzV2l0aCgnLi4nKSB8fCBwYXR0ZXJuLnN0YXJ0c1dpdGgoJy4vLi4nKTtcbn1cbmV4cG9ydHMuaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5ID0gaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5O1xuZnVuY3Rpb24gZ2V0QmFzZURpcmVjdG9yeShwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIGdsb2JQYXJlbnQocGF0dGVybiwgeyBmbGlwQmFja3NsYXNoZXM6IGZhbHNlIH0pO1xufVxuZXhwb3J0cy5nZXRCYXNlRGlyZWN0b3J5ID0gZ2V0QmFzZURpcmVjdG9yeTtcbmZ1bmN0aW9uIGhhc0dsb2JTdGFyKHBhdHRlcm4pIHtcbiAgICByZXR1cm4gcGF0dGVybi5pbmNsdWRlcyhHTE9CU1RBUik7XG59XG5leHBvcnRzLmhhc0dsb2JTdGFyID0gaGFzR2xvYlN0YXI7XG5mdW5jdGlvbiBlbmRzV2l0aFNsYXNoR2xvYlN0YXIocGF0dGVybikge1xuICAgIHJldHVybiBwYXR0ZXJuLmVuZHNXaXRoKCcvJyArIEdMT0JTVEFSKTtcbn1cbmV4cG9ydHMuZW5kc1dpdGhTbGFzaEdsb2JTdGFyID0gZW5kc1dpdGhTbGFzaEdsb2JTdGFyO1xuZnVuY3Rpb24gaXNBZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm4ocGF0dGVybikge1xuICAgIGNvbnN0IGJhc2VuYW1lID0gcGF0aC5iYXNlbmFtZShwYXR0ZXJuKTtcbiAgICByZXR1cm4gZW5kc1dpdGhTbGFzaEdsb2JTdGFyKHBhdHRlcm4pIHx8IGlzU3RhdGljUGF0dGVybihiYXNlbmFtZSk7XG59XG5leHBvcnRzLmlzQWZmZWN0RGVwdGhPZlJlYWRpbmdQYXR0ZXJuID0gaXNBZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm47XG5mdW5jdGlvbiBleHBhbmRQYXR0ZXJuc1dpdGhCcmFjZUV4cGFuc2lvbihwYXR0ZXJucykge1xuICAgIHJldHVybiBwYXR0ZXJucy5yZWR1Y2UoKGNvbGxlY3Rpb24sIHBhdHRlcm4pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uY29uY2F0KGV4cGFuZEJyYWNlRXhwYW5zaW9uKHBhdHRlcm4pKTtcbiAgICB9LCBbXSk7XG59XG5leHBvcnRzLmV4cGFuZFBhdHRlcm5zV2l0aEJyYWNlRXhwYW5zaW9uID0gZXhwYW5kUGF0dGVybnNXaXRoQnJhY2VFeHBhbnNpb247XG5mdW5jdGlvbiBleHBhbmRCcmFjZUV4cGFuc2lvbihwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIG1pY3JvbWF0Y2guYnJhY2VzKHBhdHRlcm4sIHtcbiAgICAgICAgZXhwYW5kOiB0cnVlLFxuICAgICAgICBub2R1cGVzOiB0cnVlXG4gICAgfSk7XG59XG5leHBvcnRzLmV4cGFuZEJyYWNlRXhwYW5zaW9uID0gZXhwYW5kQnJhY2VFeHBhbnNpb247XG5mdW5jdGlvbiBnZXRQYXR0ZXJuUGFydHMocGF0dGVybiwgb3B0aW9ucykge1xuICAgIGxldCB7IHBhcnRzIH0gPSBtaWNyb21hdGNoLnNjYW4ocGF0dGVybiwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSwgeyBwYXJ0czogdHJ1ZSB9KSk7XG4gICAgLyoqXG4gICAgICogVGhlIHNjYW4gbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgYXJyYXkgaW4gc29tZSBjYXNlcy5cbiAgICAgKiBTZWUgbWljcm9tYXRjaC9waWNvbWF0Y2gjNTggZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKi9cbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHBhcnRzID0gW3BhdHRlcm5dO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgc2NhbiBtZXRob2QgZG9lcyBub3QgcmV0dXJuIGFuIGVtcHR5IHBhcnQgZm9yIHRoZSBwYXR0ZXJuIHdpdGggYSBmb3J3YXJkIHNsYXNoLlxuICAgICAqIFRoaXMgaXMgYW5vdGhlciBwYXJ0IG9mIG1pY3JvbWF0Y2gvcGljb21hdGNoIzU4LlxuICAgICAqL1xuICAgIGlmIChwYXJ0c1swXS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5zbGljZSgxKTtcbiAgICAgICAgcGFydHMudW5zaGlmdCgnJyk7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0cztcbn1cbmV4cG9ydHMuZ2V0UGF0dGVyblBhcnRzID0gZ2V0UGF0dGVyblBhcnRzO1xuZnVuY3Rpb24gbWFrZVJlKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbWljcm9tYXRjaC5tYWtlUmUocGF0dGVybiwgb3B0aW9ucyk7XG59XG5leHBvcnRzLm1ha2VSZSA9IG1ha2VSZTtcbmZ1bmN0aW9uIGNvbnZlcnRQYXR0ZXJuc1RvUmUocGF0dGVybnMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gcGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBtYWtlUmUocGF0dGVybiwgb3B0aW9ucykpO1xufVxuZXhwb3J0cy5jb252ZXJ0UGF0dGVybnNUb1JlID0gY29udmVydFBhdHRlcm5zVG9SZTtcbmZ1bmN0aW9uIG1hdGNoQW55KGVudHJ5LCBwYXR0ZXJuc1JlKSB7XG4gICAgcmV0dXJuIHBhdHRlcm5zUmUuc29tZSgocGF0dGVyblJlKSA9PiBwYXR0ZXJuUmUudGVzdChlbnRyeSkpO1xufVxuZXhwb3J0cy5tYXRjaEFueSA9IG1hdGNoQW55O1xuIiwiJ3VzZSBzdHJpY3QnXG4vKlxuICogbWVyZ2UyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdGVhbWJpdGlvbi9tZXJnZTJcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMCBUZWFtYml0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cbmNvbnN0IFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG5jb25zdCBQYXNzVGhyb3VnaCA9IFN0cmVhbS5QYXNzVGhyb3VnaFxuY29uc3Qgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTJcblxuZnVuY3Rpb24gbWVyZ2UyICgpIHtcbiAgY29uc3Qgc3RyZWFtc1F1ZXVlID0gW11cbiAgY29uc3QgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKVxuICBsZXQgbWVyZ2luZyA9IGZhbHNlXG4gIGxldCBvcHRpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdXG5cbiAgaWYgKG9wdGlvbnMgJiYgIUFycmF5LmlzQXJyYXkob3B0aW9ucykgJiYgb3B0aW9ucy5waXBlID09IG51bGwpIHtcbiAgICBhcmdzLnBvcCgpXG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICBjb25zdCBkb0VuZCA9IG9wdGlvbnMuZW5kICE9PSBmYWxzZVxuICBjb25zdCBkb1BpcGVFcnJvciA9IG9wdGlvbnMucGlwZUVycm9yID09PSB0cnVlXG4gIGlmIChvcHRpb25zLm9iamVjdE1vZGUgPT0gbnVsbCkge1xuICAgIG9wdGlvbnMub2JqZWN0TW9kZSA9IHRydWVcbiAgfVxuICBpZiAob3B0aW9ucy5oaWdoV2F0ZXJNYXJrID09IG51bGwpIHtcbiAgICBvcHRpb25zLmhpZ2hXYXRlck1hcmsgPSA2NCAqIDEwMjRcbiAgfVxuICBjb25zdCBtZXJnZWRTdHJlYW0gPSBQYXNzVGhyb3VnaChvcHRpb25zKVxuXG4gIGZ1bmN0aW9uIGFkZFN0cmVhbSAoKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgc3RyZWFtc1F1ZXVlLnB1c2gocGF1c2VTdHJlYW1zKGFyZ3VtZW50c1tpXSwgb3B0aW9ucykpXG4gICAgfVxuICAgIG1lcmdlU3RyZWFtKClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2VTdHJlYW0gKCkge1xuICAgIGlmIChtZXJnaW5nKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgbWVyZ2luZyA9IHRydWVcblxuICAgIGxldCBzdHJlYW1zID0gc3RyZWFtc1F1ZXVlLnNoaWZ0KClcbiAgICBpZiAoIXN0cmVhbXMpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW5kU3RyZWFtKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghQXJyYXkuaXNBcnJheShzdHJlYW1zKSkge1xuICAgICAgc3RyZWFtcyA9IFtzdHJlYW1zXVxuICAgIH1cblxuICAgIGxldCBwaXBlc0NvdW50ID0gc3RyZWFtcy5sZW5ndGggKyAxXG5cbiAgICBmdW5jdGlvbiBuZXh0ICgpIHtcbiAgICAgIGlmICgtLXBpcGVzQ291bnQgPiAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgbWVyZ2luZyA9IGZhbHNlXG4gICAgICBtZXJnZVN0cmVhbSgpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGlwZSAoc3RyZWFtKSB7XG4gICAgICBmdW5jdGlvbiBvbmVuZCAoKSB7XG4gICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignbWVyZ2UyVW5waXBlRW5kJywgb25lbmQpXG4gICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpXG4gICAgICAgIGlmIChkb1BpcGVFcnJvcikge1xuICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKVxuICAgICAgICB9XG4gICAgICAgIG5leHQoKVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gb25lcnJvciAoZXJyKSB7XG4gICAgICAgIG1lcmdlZFN0cmVhbS5lbWl0KCdlcnJvcicsIGVycilcbiAgICAgIH1cbiAgICAgIC8vIHNraXAgZW5kZWQgc3RyZWFtXG4gICAgICBpZiAoc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKVxuICAgICAgfVxuXG4gICAgICBzdHJlYW0ub24oJ21lcmdlMlVucGlwZUVuZCcsIG9uZW5kKVxuICAgICAgc3RyZWFtLm9uKCdlbmQnLCBvbmVuZClcblxuICAgICAgaWYgKGRvUGlwZUVycm9yKSB7XG4gICAgICAgIHN0cmVhbS5vbignZXJyb3InLCBvbmVycm9yKVxuICAgICAgfVxuXG4gICAgICBzdHJlYW0ucGlwZShtZXJnZWRTdHJlYW0sIHsgZW5kOiBmYWxzZSB9KVxuICAgICAgLy8gY29tcGF0aWJsZSBmb3Igb2xkIHN0cmVhbVxuICAgICAgc3RyZWFtLnJlc3VtZSgpXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJlYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwaXBlKHN0cmVhbXNbaV0pXG4gICAgfVxuXG4gICAgbmV4dCgpXG4gIH1cblxuICBmdW5jdGlvbiBlbmRTdHJlYW0gKCkge1xuICAgIG1lcmdpbmcgPSBmYWxzZVxuICAgIC8vIGVtaXQgJ3F1ZXVlRHJhaW4nIHdoZW4gYWxsIHN0cmVhbXMgbWVyZ2VkLlxuICAgIG1lcmdlZFN0cmVhbS5lbWl0KCdxdWV1ZURyYWluJylcbiAgICBpZiAoZG9FbmQpIHtcbiAgICAgIG1lcmdlZFN0cmVhbS5lbmQoKVxuICAgIH1cbiAgfVxuXG4gIG1lcmdlZFN0cmVhbS5zZXRNYXhMaXN0ZW5lcnMoMClcbiAgbWVyZ2VkU3RyZWFtLmFkZCA9IGFkZFN0cmVhbVxuICBtZXJnZWRTdHJlYW0ub24oJ3VucGlwZScsIGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgICBzdHJlYW0uZW1pdCgnbWVyZ2UyVW5waXBlRW5kJylcbiAgfSlcblxuICBpZiAoYXJncy5sZW5ndGgpIHtcbiAgICBhZGRTdHJlYW0uYXBwbHkobnVsbCwgYXJncylcbiAgfVxuICByZXR1cm4gbWVyZ2VkU3RyZWFtXG59XG5cbi8vIGNoZWNrIGFuZCBwYXVzZSBzdHJlYW1zIGZvciBwaXBlLlxuZnVuY3Rpb24gcGF1c2VTdHJlYW1zIChzdHJlYW1zLCBvcHRpb25zKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShzdHJlYW1zKSkge1xuICAgIC8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBvbGQtc3R5bGUgc3RyZWFtc1xuICAgIGlmICghc3RyZWFtcy5fcmVhZGFibGVTdGF0ZSAmJiBzdHJlYW1zLnBpcGUpIHtcbiAgICAgIHN0cmVhbXMgPSBzdHJlYW1zLnBpcGUoUGFzc1Rocm91Z2gob3B0aW9ucykpXG4gICAgfVxuICAgIGlmICghc3RyZWFtcy5fcmVhZGFibGVTdGF0ZSB8fCAhc3RyZWFtcy5wYXVzZSB8fCAhc3RyZWFtcy5waXBlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09ubHkgcmVhZGFibGUgc3RyZWFtIGNhbiBiZSBtZXJnZWQuJylcbiAgICB9XG4gICAgc3RyZWFtcy5wYXVzZSgpXG4gIH0gZWxzZSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHN0cmVhbXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHN0cmVhbXNbaV0gPSBwYXVzZVN0cmVhbXMoc3RyZWFtc1tpXSwgb3B0aW9ucylcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cmVhbXNcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tZXJnZSA9IHZvaWQgMDtcbmNvbnN0IG1lcmdlMiA9IHJlcXVpcmUoXCJtZXJnZTJcIik7XG5mdW5jdGlvbiBtZXJnZShzdHJlYW1zKSB7XG4gICAgY29uc3QgbWVyZ2VkU3RyZWFtID0gbWVyZ2UyKHN0cmVhbXMpO1xuICAgIHN0cmVhbXMuZm9yRWFjaCgoc3RyZWFtKSA9PiB7XG4gICAgICAgIHN0cmVhbS5vbmNlKCdlcnJvcicsIChlcnJvcikgPT4gbWVyZ2VkU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyb3IpKTtcbiAgICB9KTtcbiAgICBtZXJnZWRTdHJlYW0ub25jZSgnY2xvc2UnLCAoKSA9PiBwcm9wYWdhdGVDbG9zZUV2ZW50VG9Tb3VyY2VzKHN0cmVhbXMpKTtcbiAgICBtZXJnZWRTdHJlYW0ub25jZSgnZW5kJywgKCkgPT4gcHJvcGFnYXRlQ2xvc2VFdmVudFRvU291cmNlcyhzdHJlYW1zKSk7XG4gICAgcmV0dXJuIG1lcmdlZFN0cmVhbTtcbn1cbmV4cG9ydHMubWVyZ2UgPSBtZXJnZTtcbmZ1bmN0aW9uIHByb3BhZ2F0ZUNsb3NlRXZlbnRUb1NvdXJjZXMoc3RyZWFtcykge1xuICAgIHN0cmVhbXMuZm9yRWFjaCgoc3RyZWFtKSA9PiBzdHJlYW0uZW1pdCgnY2xvc2UnKSk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNFbXB0eSA9IGV4cG9ydHMuaXNTdHJpbmcgPSB2b2lkIDA7XG5mdW5jdGlvbiBpc1N0cmluZyhpbnB1dCkge1xuICAgIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuZnVuY3Rpb24gaXNFbXB0eShpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dCA9PT0gJyc7XG59XG5leHBvcnRzLmlzRW1wdHkgPSBpc0VtcHR5O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnN0cmluZyA9IGV4cG9ydHMuc3RyZWFtID0gZXhwb3J0cy5wYXR0ZXJuID0gZXhwb3J0cy5wYXRoID0gZXhwb3J0cy5mcyA9IGV4cG9ydHMuZXJybm8gPSBleHBvcnRzLmFycmF5ID0gdm9pZCAwO1xuY29uc3QgYXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheVwiKTtcbmV4cG9ydHMuYXJyYXkgPSBhcnJheTtcbmNvbnN0IGVycm5vID0gcmVxdWlyZShcIi4vZXJybm9cIik7XG5leHBvcnRzLmVycm5vID0gZXJybm87XG5jb25zdCBmcyA9IHJlcXVpcmUoXCIuL2ZzXCIpO1xuZXhwb3J0cy5mcyA9IGZzO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCIuL3BhdGhcIik7XG5leHBvcnRzLnBhdGggPSBwYXRoO1xuY29uc3QgcGF0dGVybiA9IHJlcXVpcmUoXCIuL3BhdHRlcm5cIik7XG5leHBvcnRzLnBhdHRlcm4gPSBwYXR0ZXJuO1xuY29uc3Qgc3RyZWFtID0gcmVxdWlyZShcIi4vc3RyZWFtXCIpO1xuZXhwb3J0cy5zdHJlYW0gPSBzdHJlYW07XG5jb25zdCBzdHJpbmcgPSByZXF1aXJlKFwiLi9zdHJpbmdcIik7XG5leHBvcnRzLnN0cmluZyA9IHN0cmluZztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jb252ZXJ0UGF0dGVybkdyb3VwVG9UYXNrID0gZXhwb3J0cy5jb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3MgPSBleHBvcnRzLmdyb3VwUGF0dGVybnNCeUJhc2VEaXJlY3RvcnkgPSBleHBvcnRzLmdldE5lZ2F0aXZlUGF0dGVybnNBc1Bvc2l0aXZlID0gZXhwb3J0cy5nZXRQb3NpdGl2ZVBhdHRlcm5zID0gZXhwb3J0cy5jb252ZXJ0UGF0dGVybnNUb1Rhc2tzID0gZXhwb3J0cy5nZW5lcmF0ZSA9IHZvaWQgMDtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuZnVuY3Rpb24gZ2VuZXJhdGUocGF0dGVybnMsIHNldHRpbmdzKSB7XG4gICAgY29uc3QgcG9zaXRpdmVQYXR0ZXJucyA9IGdldFBvc2l0aXZlUGF0dGVybnMocGF0dGVybnMpO1xuICAgIGNvbnN0IG5lZ2F0aXZlUGF0dGVybnMgPSBnZXROZWdhdGl2ZVBhdHRlcm5zQXNQb3NpdGl2ZShwYXR0ZXJucywgc2V0dGluZ3MuaWdub3JlKTtcbiAgICBjb25zdCBzdGF0aWNQYXR0ZXJucyA9IHBvc2l0aXZlUGF0dGVybnMuZmlsdGVyKChwYXR0ZXJuKSA9PiB1dGlscy5wYXR0ZXJuLmlzU3RhdGljUGF0dGVybihwYXR0ZXJuLCBzZXR0aW5ncykpO1xuICAgIGNvbnN0IGR5bmFtaWNQYXR0ZXJucyA9IHBvc2l0aXZlUGF0dGVybnMuZmlsdGVyKChwYXR0ZXJuKSA9PiB1dGlscy5wYXR0ZXJuLmlzRHluYW1pY1BhdHRlcm4ocGF0dGVybiwgc2V0dGluZ3MpKTtcbiAgICBjb25zdCBzdGF0aWNUYXNrcyA9IGNvbnZlcnRQYXR0ZXJuc1RvVGFza3Moc3RhdGljUGF0dGVybnMsIG5lZ2F0aXZlUGF0dGVybnMsIC8qIGR5bmFtaWMgKi8gZmFsc2UpO1xuICAgIGNvbnN0IGR5bmFtaWNUYXNrcyA9IGNvbnZlcnRQYXR0ZXJuc1RvVGFza3MoZHluYW1pY1BhdHRlcm5zLCBuZWdhdGl2ZVBhdHRlcm5zLCAvKiBkeW5hbWljICovIHRydWUpO1xuICAgIHJldHVybiBzdGF0aWNUYXNrcy5jb25jYXQoZHluYW1pY1Rhc2tzKTtcbn1cbmV4cG9ydHMuZ2VuZXJhdGUgPSBnZW5lcmF0ZTtcbi8qKlxuICogUmV0dXJucyB0YXNrcyBncm91cGVkIGJ5IGJhc2ljIHBhdHRlcm4gZGlyZWN0b3JpZXMuXG4gKlxuICogUGF0dGVybnMgdGhhdCBjYW4gYmUgZm91bmQgaW5zaWRlIChgLi9gKSBhbmQgb3V0c2lkZSAoYC4uL2ApIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5LlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBkaXJlY3RvcnkgdHJhdmVyc2FsIHN0YXJ0cyBhdCB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIGdvZXMgZGVlcGVyLlxuICovXG5mdW5jdGlvbiBjb252ZXJ0UGF0dGVybnNUb1Rhc2tzKHBvc2l0aXZlLCBuZWdhdGl2ZSwgZHluYW1pYykge1xuICAgIGNvbnN0IHRhc2tzID0gW107XG4gICAgY29uc3QgcGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeSA9IHV0aWxzLnBhdHRlcm4uZ2V0UGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeShwb3NpdGl2ZSk7XG4gICAgY29uc3QgcGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5ID0gdXRpbHMucGF0dGVybi5nZXRQYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnkocG9zaXRpdmUpO1xuICAgIGNvbnN0IG91dHNpZGVDdXJyZW50RGlyZWN0b3J5R3JvdXAgPSBncm91cFBhdHRlcm5zQnlCYXNlRGlyZWN0b3J5KHBhdHRlcm5zT3V0c2lkZUN1cnJlbnREaXJlY3RvcnkpO1xuICAgIGNvbnN0IGluc2lkZUN1cnJlbnREaXJlY3RvcnlHcm91cCA9IGdyb3VwUGF0dGVybnNCeUJhc2VEaXJlY3RvcnkocGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5KTtcbiAgICB0YXNrcy5wdXNoKC4uLmNvbnZlcnRQYXR0ZXJuR3JvdXBzVG9UYXNrcyhvdXRzaWRlQ3VycmVudERpcmVjdG9yeUdyb3VwLCBuZWdhdGl2ZSwgZHluYW1pYykpO1xuICAgIC8qXG4gICAgICogRm9yIHRoZSBzYWtlIG9mIHJlZHVjaW5nIGZ1dHVyZSBhY2Nlc3NlcyB0byB0aGUgZmlsZSBzeXN0ZW0sIHdlIG1lcmdlIGFsbCB0YXNrcyB3aXRoaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XG4gICAgICogaW50byBhIGdsb2JhbCB0YXNrLCBpZiBhdCBsZWFzdCBvbmUgcGF0dGVybiByZWZlcnMgdG8gdGhlIHJvb3QgKGAuYCkuIEluIHRoaXMgY2FzZSwgdGhlIGdsb2JhbCB0YXNrIGNvdmVycyB0aGUgcmVzdC5cbiAgICAgKi9cbiAgICBpZiAoJy4nIGluIGluc2lkZUN1cnJlbnREaXJlY3RvcnlHcm91cCkge1xuICAgICAgICB0YXNrcy5wdXNoKGNvbnZlcnRQYXR0ZXJuR3JvdXBUb1Rhc2soJy4nLCBwYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnksIG5lZ2F0aXZlLCBkeW5hbWljKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0YXNrcy5wdXNoKC4uLmNvbnZlcnRQYXR0ZXJuR3JvdXBzVG9UYXNrcyhpbnNpZGVDdXJyZW50RGlyZWN0b3J5R3JvdXAsIG5lZ2F0aXZlLCBkeW5hbWljKSk7XG4gICAgfVxuICAgIHJldHVybiB0YXNrcztcbn1cbmV4cG9ydHMuY29udmVydFBhdHRlcm5zVG9UYXNrcyA9IGNvbnZlcnRQYXR0ZXJuc1RvVGFza3M7XG5mdW5jdGlvbiBnZXRQb3NpdGl2ZVBhdHRlcm5zKHBhdHRlcm5zKSB7XG4gICAgcmV0dXJuIHV0aWxzLnBhdHRlcm4uZ2V0UG9zaXRpdmVQYXR0ZXJucyhwYXR0ZXJucyk7XG59XG5leHBvcnRzLmdldFBvc2l0aXZlUGF0dGVybnMgPSBnZXRQb3NpdGl2ZVBhdHRlcm5zO1xuZnVuY3Rpb24gZ2V0TmVnYXRpdmVQYXR0ZXJuc0FzUG9zaXRpdmUocGF0dGVybnMsIGlnbm9yZSkge1xuICAgIGNvbnN0IG5lZ2F0aXZlID0gdXRpbHMucGF0dGVybi5nZXROZWdhdGl2ZVBhdHRlcm5zKHBhdHRlcm5zKS5jb25jYXQoaWdub3JlKTtcbiAgICBjb25zdCBwb3NpdGl2ZSA9IG5lZ2F0aXZlLm1hcCh1dGlscy5wYXR0ZXJuLmNvbnZlcnRUb1Bvc2l0aXZlUGF0dGVybik7XG4gICAgcmV0dXJuIHBvc2l0aXZlO1xufVxuZXhwb3J0cy5nZXROZWdhdGl2ZVBhdHRlcm5zQXNQb3NpdGl2ZSA9IGdldE5lZ2F0aXZlUGF0dGVybnNBc1Bvc2l0aXZlO1xuZnVuY3Rpb24gZ3JvdXBQYXR0ZXJuc0J5QmFzZURpcmVjdG9yeShwYXR0ZXJucykge1xuICAgIGNvbnN0IGdyb3VwID0ge307XG4gICAgcmV0dXJuIHBhdHRlcm5zLnJlZHVjZSgoY29sbGVjdGlvbiwgcGF0dGVybikgPT4ge1xuICAgICAgICBjb25zdCBiYXNlID0gdXRpbHMucGF0dGVybi5nZXRCYXNlRGlyZWN0b3J5KHBhdHRlcm4pO1xuICAgICAgICBpZiAoYmFzZSBpbiBjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uW2Jhc2VdLnB1c2gocGF0dGVybik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uW2Jhc2VdID0gW3BhdHRlcm5dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH0sIGdyb3VwKTtcbn1cbmV4cG9ydHMuZ3JvdXBQYXR0ZXJuc0J5QmFzZURpcmVjdG9yeSA9IGdyb3VwUGF0dGVybnNCeUJhc2VEaXJlY3Rvcnk7XG5mdW5jdGlvbiBjb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3MocG9zaXRpdmUsIG5lZ2F0aXZlLCBkeW5hbWljKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHBvc2l0aXZlKS5tYXAoKGJhc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRQYXR0ZXJuR3JvdXBUb1Rhc2soYmFzZSwgcG9zaXRpdmVbYmFzZV0sIG5lZ2F0aXZlLCBkeW5hbWljKTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuY29udmVydFBhdHRlcm5Hcm91cHNUb1Rhc2tzID0gY29udmVydFBhdHRlcm5Hcm91cHNUb1Rhc2tzO1xuZnVuY3Rpb24gY29udmVydFBhdHRlcm5Hcm91cFRvVGFzayhiYXNlLCBwb3NpdGl2ZSwgbmVnYXRpdmUsIGR5bmFtaWMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBkeW5hbWljLFxuICAgICAgICBwb3NpdGl2ZSxcbiAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgIGJhc2UsXG4gICAgICAgIHBhdHRlcm5zOiBbXS5jb25jYXQocG9zaXRpdmUsIG5lZ2F0aXZlLm1hcCh1dGlscy5wYXR0ZXJuLmNvbnZlcnRUb05lZ2F0aXZlUGF0dGVybikpXG4gICAgfTtcbn1cbmV4cG9ydHMuY29udmVydFBhdHRlcm5Hcm91cFRvVGFzayA9IGNvbnZlcnRQYXR0ZXJuR3JvdXBUb1Rhc2s7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmVtb3ZlRHVwbGljYXRlU2xhc2hlcyA9IGV4cG9ydHMudHJhbnNmb3JtID0gdm9pZCAwO1xuLyoqXG4gKiBNYXRjaGVzIGEgc2VxdWVuY2Ugb2YgdHdvIG9yIG1vcmUgY29uc2VjdXRpdmUgc2xhc2hlcywgZXhjbHVkaW5nIHRoZSBmaXJzdCB0d28gc2xhc2hlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuXG4gKiBUaGUgbGF0dGVyIGlzIGR1ZSB0byB0aGUgcHJlc2VuY2Ugb2YgdGhlIGRldmljZSBwYXRoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIFVOQyBwYXRoLlxuICogQHRvZG8gcmV3cml0ZSB0byBuZWdhdGl2ZSBsb29rYmVoaW5kIHdpdGggdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAqL1xuY29uc3QgRE9VQkxFX1NMQVNIX1JFID0gLyg/IV4pXFwvezIsfS9nO1xuZnVuY3Rpb24gdHJhbnNmb3JtKHBhdHRlcm5zKSB7XG4gICAgcmV0dXJuIHBhdHRlcm5zLm1hcCgocGF0dGVybikgPT4gcmVtb3ZlRHVwbGljYXRlU2xhc2hlcyhwYXR0ZXJuKSk7XG59XG5leHBvcnRzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbi8qKlxuICogVGhpcyBwYWNrYWdlIG9ubHkgd29ya3Mgd2l0aCBmb3J3YXJkIHNsYXNoZXMgYXMgYSBwYXRoIHNlcGFyYXRvci5cbiAqIEJlY2F1c2Ugb2YgdGhpcywgd2UgY2Fubm90IHVzZSB0aGUgc3RhbmRhcmQgYHBhdGgubm9ybWFsaXplYCBtZXRob2QsIGJlY2F1c2Ugb24gV2luZG93cyBwbGF0Zm9ybSBpdCB3aWxsIHVzZSBvZiBiYWNrc2xhc2hlcy5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRHVwbGljYXRlU2xhc2hlcyhwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4ucmVwbGFjZShET1VCTEVfU0xBU0hfUkUsICcvJyk7XG59XG5leHBvcnRzLnJlbW92ZUR1cGxpY2F0ZVNsYXNoZXMgPSByZW1vdmVEdXBsaWNhdGVTbGFzaGVzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5yZWFkID0gdm9pZCAwO1xyXG5mdW5jdGlvbiByZWFkKHBhdGgsIHNldHRpbmdzLCBjYWxsYmFjaykge1xyXG4gICAgc2V0dGluZ3MuZnMubHN0YXQocGF0aCwgKGxzdGF0RXJyb3IsIGxzdGF0KSA9PiB7XHJcbiAgICAgICAgaWYgKGxzdGF0RXJyb3IgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIGxzdGF0RXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWxzdGF0LmlzU3ltYm9saWNMaW5rKCkgfHwgIXNldHRpbmdzLmZvbGxvd1N5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgbHN0YXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXR0aW5ncy5mcy5zdGF0KHBhdGgsIChzdGF0RXJyb3IsIHN0YXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHN0YXRFcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBzdGF0RXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2ssIGxzdGF0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MubWFya1N5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICAgICAgc3RhdC5pc1N5bWJvbGljTGluayA9ICgpID0+IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgc3RhdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufVxyXG5leHBvcnRzLnJlYWQgPSByZWFkO1xyXG5mdW5jdGlvbiBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBlcnJvcikge1xyXG4gICAgY2FsbGJhY2soZXJyb3IpO1xyXG59XHJcbmZ1bmN0aW9uIGNhbGxTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2ssIHJlc3VsdCkge1xyXG4gICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxufVxyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLnJlYWQgPSB2b2lkIDA7XHJcbmZ1bmN0aW9uIHJlYWQocGF0aCwgc2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IGxzdGF0ID0gc2V0dGluZ3MuZnMubHN0YXRTeW5jKHBhdGgpO1xyXG4gICAgaWYgKCFsc3RhdC5pc1N5bWJvbGljTGluaygpIHx8ICFzZXR0aW5ncy5mb2xsb3dTeW1ib2xpY0xpbmspIHtcclxuICAgICAgICByZXR1cm4gbHN0YXQ7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHN0YXQgPSBzZXR0aW5ncy5mcy5zdGF0U3luYyhwYXRoKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3MubWFya1N5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICBzdGF0LmlzU3ltYm9saWNMaW5rID0gKCkgPT4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0YXQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBpZiAoIXNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICByZXR1cm4gbHN0YXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMucmVhZCA9IHJlYWQ7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIgPSBleHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVIgPSB2b2lkIDA7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5leHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVIgPSB7XHJcbiAgICBsc3RhdDogZnMubHN0YXQsXHJcbiAgICBzdGF0OiBmcy5zdGF0LFxyXG4gICAgbHN0YXRTeW5jOiBmcy5sc3RhdFN5bmMsXHJcbiAgICBzdGF0U3luYzogZnMuc3RhdFN5bmNcclxufTtcclxuZnVuY3Rpb24gY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIoZnNNZXRob2RzKSB7XHJcbiAgICBpZiAoZnNNZXRob2RzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSKSwgZnNNZXRob2RzKTtcclxufVxyXG5leHBvcnRzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyID0gY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXI7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcIi4vYWRhcHRlcnMvZnNcIik7XHJcbmNsYXNzIFNldHRpbmdzIHtcclxuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zID0ge30pIHtcclxuICAgICAgICB0aGlzLl9vcHRpb25zID0gX29wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dTeW1ib2xpY0xpbmsgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmZvbGxvd1N5bWJvbGljTGluaywgdHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5mcyA9IGZzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyKHRoaXMuX29wdGlvbnMuZnMpO1xyXG4gICAgICAgIHRoaXMubWFya1N5bWJvbGljTGluayA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMubWFya1N5bWJvbGljTGluaywgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmssIHRydWUpO1xyXG4gICAgfVxyXG4gICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gb3B0aW9uICE9PSBudWxsICYmIG9wdGlvbiAhPT0gdm9pZCAwID8gb3B0aW9uIDogdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gU2V0dGluZ3M7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuc3RhdFN5bmMgPSBleHBvcnRzLnN0YXQgPSBleHBvcnRzLlNldHRpbmdzID0gdm9pZCAwO1xyXG5jb25zdCBhc3luYyA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9hc3luY1wiKTtcclxuY29uc3Qgc3luYyA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9zeW5jXCIpO1xyXG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XHJcbmV4cG9ydHMuU2V0dGluZ3MgPSBzZXR0aW5nc18xLmRlZmF1bHQ7XHJcbmZ1bmN0aW9uIHN0YXQocGF0aCwgb3B0aW9uc09yU2V0dGluZ3NPckNhbGxiYWNrLCBjYWxsYmFjaykge1xyXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICByZXR1cm4gYXN5bmMucmVhZChwYXRoLCBnZXRTZXR0aW5ncygpLCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgYXN5bmMucmVhZChwYXRoLCBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spLCBjYWxsYmFjayk7XHJcbn1cclxuZXhwb3J0cy5zdGF0ID0gc3RhdDtcclxuZnVuY3Rpb24gc3RhdFN5bmMocGF0aCwgb3B0aW9uc09yU2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3Mob3B0aW9uc09yU2V0dGluZ3MpO1xyXG4gICAgcmV0dXJuIHN5bmMucmVhZChwYXRoLCBzZXR0aW5ncyk7XHJcbn1cclxuZXhwb3J0cy5zdGF0U3luYyA9IHN0YXRTeW5jO1xyXG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhzZXR0aW5nc09yT3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpZiAoc2V0dGluZ3NPck9wdGlvbnMgaW5zdGFuY2VvZiBzZXR0aW5nc18xLmRlZmF1bHQpIHtcclxuICAgICAgICByZXR1cm4gc2V0dGluZ3NPck9wdGlvbnM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IHNldHRpbmdzXzEuZGVmYXVsdChzZXR0aW5nc09yT3B0aW9ucyk7XHJcbn1cclxuIiwiLyohIHF1ZXVlLW1pY3JvdGFzay4gTUlUIExpY2Vuc2UuIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZy9vcGVuc291cmNlPiAqL1xubGV0IHByb21pc2VcblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgcXVldWVNaWNyb3Rhc2sgPT09ICdmdW5jdGlvbidcbiAgPyBxdWV1ZU1pY3JvdGFzay5iaW5kKGdsb2JhbFRoaXMpXG4gIC8vIHJldXNlIHJlc29sdmVkIHByb21pc2UsIGFuZCBhbGxvY2F0ZSBpdCBsYXppbHlcbiAgOiBjYiA9PiAocHJvbWlzZSB8fCAocHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpKSlcbiAgICAudGhlbihjYilcbiAgICAuY2F0Y2goZXJyID0+IHNldFRpbWVvdXQoKCkgPT4geyB0aHJvdyBlcnIgfSwgMCkpXG4iLCIvKiEgcnVuLXBhcmFsbGVsLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG5tb2R1bGUuZXhwb3J0cyA9IHJ1blBhcmFsbGVsXG5cbmNvbnN0IHF1ZXVlTWljcm90YXNrID0gcmVxdWlyZSgncXVldWUtbWljcm90YXNrJylcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwgKHRhc2tzLCBjYikge1xuICBsZXQgcmVzdWx0cywgcGVuZGluZywga2V5c1xuICBsZXQgaXNTeW5jID0gdHJ1ZVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHRhc2tzKSkge1xuICAgIHJlc3VsdHMgPSBbXVxuICAgIHBlbmRpbmcgPSB0YXNrcy5sZW5ndGhcbiAgfSBlbHNlIHtcbiAgICBrZXlzID0gT2JqZWN0LmtleXModGFza3MpXG4gICAgcmVzdWx0cyA9IHt9XG4gICAgcGVuZGluZyA9IGtleXMubGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiBkb25lIChlcnIpIHtcbiAgICBmdW5jdGlvbiBlbmQgKCkge1xuICAgICAgaWYgKGNiKSBjYihlcnIsIHJlc3VsdHMpXG4gICAgICBjYiA9IG51bGxcbiAgICB9XG4gICAgaWYgKGlzU3luYykgcXVldWVNaWNyb3Rhc2soZW5kKVxuICAgIGVsc2UgZW5kKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVhY2ggKGksIGVyciwgcmVzdWx0KSB7XG4gICAgcmVzdWx0c1tpXSA9IHJlc3VsdFxuICAgIGlmICgtLXBlbmRpbmcgPT09IDAgfHwgZXJyKSB7XG4gICAgICBkb25lKGVycilcbiAgICB9XG4gIH1cblxuICBpZiAoIXBlbmRpbmcpIHtcbiAgICAvLyBlbXB0eVxuICAgIGRvbmUobnVsbClcbiAgfSBlbHNlIGlmIChrZXlzKSB7XG4gICAgLy8gb2JqZWN0XG4gICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHRhc2tzW2tleV0oZnVuY3Rpb24gKGVyciwgcmVzdWx0KSB7IGVhY2goa2V5LCBlcnIsIHJlc3VsdCkgfSlcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIC8vIGFycmF5XG4gICAgdGFza3MuZm9yRWFjaChmdW5jdGlvbiAodGFzaywgaSkge1xuICAgICAgdGFzayhmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHsgZWFjaChpLCBlcnIsIHJlc3VsdCkgfSlcbiAgICB9KVxuICB9XG5cbiAgaXNTeW5jID0gZmFsc2Vcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuSVNfU1VQUE9SVF9SRUFERElSX1dJVEhfRklMRV9UWVBFUyA9IHZvaWQgMDtcclxuY29uc3QgTk9ERV9QUk9DRVNTX1ZFUlNJT05fUEFSVFMgPSBwcm9jZXNzLnZlcnNpb25zLm5vZGUuc3BsaXQoJy4nKTtcclxuY29uc3QgTUFKT1JfVkVSU0lPTiA9IHBhcnNlSW50KE5PREVfUFJPQ0VTU19WRVJTSU9OX1BBUlRTWzBdLCAxMCk7XHJcbmNvbnN0IE1JTk9SX1ZFUlNJT04gPSBwYXJzZUludChOT0RFX1BST0NFU1NfVkVSU0lPTl9QQVJUU1sxXSwgMTApO1xyXG5jb25zdCBTVVBQT1JURURfTUFKT1JfVkVSU0lPTiA9IDEwO1xyXG5jb25zdCBTVVBQT1JURURfTUlOT1JfVkVSU0lPTiA9IDEwO1xyXG5jb25zdCBJU19NQVRDSEVEX0JZX01BSk9SID0gTUFKT1JfVkVSU0lPTiA+IFNVUFBPUlRFRF9NQUpPUl9WRVJTSU9OO1xyXG5jb25zdCBJU19NQVRDSEVEX0JZX01BSk9SX0FORF9NSU5PUiA9IE1BSk9SX1ZFUlNJT04gPT09IFNVUFBPUlRFRF9NQUpPUl9WRVJTSU9OICYmIE1JTk9SX1ZFUlNJT04gPj0gU1VQUE9SVEVEX01JTk9SX1ZFUlNJT047XHJcbi8qKlxyXG4gKiBJUyBgdHJ1ZWAgZm9yIE5vZGUuanMgMTAuMTAgYW5kIGdyZWF0ZXIuXHJcbiAqL1xyXG5leHBvcnRzLklTX1NVUFBPUlRfUkVBRERJUl9XSVRIX0ZJTEVfVFlQRVMgPSBJU19NQVRDSEVEX0JZX01BSk9SIHx8IElTX01BVENIRURfQllfTUFKT1JfQU5EX01JTk9SO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLmNyZWF0ZURpcmVudEZyb21TdGF0cyA9IHZvaWQgMDtcclxuY2xhc3MgRGlyZW50RnJvbVN0YXRzIHtcclxuICAgIGNvbnN0cnVjdG9yKG5hbWUsIHN0YXRzKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmlzQmxvY2tEZXZpY2UgPSBzdGF0cy5pc0Jsb2NrRGV2aWNlLmJpbmQoc3RhdHMpO1xyXG4gICAgICAgIHRoaXMuaXNDaGFyYWN0ZXJEZXZpY2UgPSBzdGF0cy5pc0NoYXJhY3RlckRldmljZS5iaW5kKHN0YXRzKTtcclxuICAgICAgICB0aGlzLmlzRGlyZWN0b3J5ID0gc3RhdHMuaXNEaXJlY3RvcnkuYmluZChzdGF0cyk7XHJcbiAgICAgICAgdGhpcy5pc0ZJRk8gPSBzdGF0cy5pc0ZJRk8uYmluZChzdGF0cyk7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBzdGF0cy5pc0ZpbGUuYmluZChzdGF0cyk7XHJcbiAgICAgICAgdGhpcy5pc1NvY2tldCA9IHN0YXRzLmlzU29ja2V0LmJpbmQoc3RhdHMpO1xyXG4gICAgICAgIHRoaXMuaXNTeW1ib2xpY0xpbmsgPSBzdGF0cy5pc1N5bWJvbGljTGluay5iaW5kKHN0YXRzKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVEaXJlbnRGcm9tU3RhdHMobmFtZSwgc3RhdHMpIHtcclxuICAgIHJldHVybiBuZXcgRGlyZW50RnJvbVN0YXRzKG5hbWUsIHN0YXRzKTtcclxufVxyXG5leHBvcnRzLmNyZWF0ZURpcmVudEZyb21TdGF0cyA9IGNyZWF0ZURpcmVudEZyb21TdGF0cztcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5mcyA9IHZvaWQgMDtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiLi9mc1wiKTtcclxuZXhwb3J0cy5mcyA9IGZzO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLmpvaW5QYXRoU2VnbWVudHMgPSB2b2lkIDA7XHJcbmZ1bmN0aW9uIGpvaW5QYXRoU2VnbWVudHMoYSwgYiwgc2VwYXJhdG9yKSB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjb3JyZWN0IGhhbmRsaW5nIG9mIGNhc2VzIHdoZW4gdGhlIGZpcnN0IHNlZ21lbnQgaXMgYSByb290IChgL2AsIGBDOi9gKSBvciBVTkMgcGF0aCAoYC8vPy9DOi9gKS5cclxuICAgICAqL1xyXG4gICAgaWYgKGEuZW5kc1dpdGgoc2VwYXJhdG9yKSkge1xyXG4gICAgICAgIHJldHVybiBhICsgYjtcclxuICAgIH1cclxuICAgIHJldHVybiBhICsgc2VwYXJhdG9yICsgYjtcclxufVxyXG5leHBvcnRzLmpvaW5QYXRoU2VnbWVudHMgPSBqb2luUGF0aFNlZ21lbnRzO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLnJlYWRkaXIgPSBleHBvcnRzLnJlYWRkaXJXaXRoRmlsZVR5cGVzID0gZXhwb3J0cy5yZWFkID0gdm9pZCAwO1xyXG5jb25zdCBmc1N0YXQgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc3RhdFwiKTtcclxuY29uc3QgcnBsID0gcmVxdWlyZShcInJ1bi1wYXJhbGxlbFwiKTtcclxuY29uc3QgY29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzXCIpO1xyXG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcclxuY29uc3QgY29tbW9uID0gcmVxdWlyZShcIi4vY29tbW9uXCIpO1xyXG5mdW5jdGlvbiByZWFkKGRpcmVjdG9yeSwgc2V0dGluZ3MsIGNhbGxiYWNrKSB7XHJcbiAgICBpZiAoIXNldHRpbmdzLnN0YXRzICYmIGNvbnN0YW50c18xLklTX1NVUFBPUlRfUkVBRERJUl9XSVRIX0ZJTEVfVFlQRVMpIHtcclxuICAgICAgICByZXR1cm4gcmVhZGRpcldpdGhGaWxlVHlwZXMoZGlyZWN0b3J5LCBzZXR0aW5ncywgY2FsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlYWRkaXIoZGlyZWN0b3J5LCBzZXR0aW5ncywgY2FsbGJhY2spO1xyXG59XHJcbmV4cG9ydHMucmVhZCA9IHJlYWQ7XHJcbmZ1bmN0aW9uIHJlYWRkaXJXaXRoRmlsZVR5cGVzKGRpcmVjdG9yeSwgc2V0dGluZ3MsIGNhbGxiYWNrKSB7XHJcbiAgICBzZXR0aW5ncy5mcy5yZWFkZGlyKGRpcmVjdG9yeSwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0sIChyZWFkZGlyRXJyb3IsIGRpcmVudHMpID0+IHtcclxuICAgICAgICBpZiAocmVhZGRpckVycm9yICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCByZWFkZGlyRXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBlbnRyaWVzID0gZGlyZW50cy5tYXAoKGRpcmVudCkgPT4gKHtcclxuICAgICAgICAgICAgZGlyZW50LFxyXG4gICAgICAgICAgICBuYW1lOiBkaXJlbnQubmFtZSxcclxuICAgICAgICAgICAgcGF0aDogY29tbW9uLmpvaW5QYXRoU2VnbWVudHMoZGlyZWN0b3J5LCBkaXJlbnQubmFtZSwgc2V0dGluZ3MucGF0aFNlZ21lbnRTZXBhcmF0b3IpXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIGlmICghc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rcykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgZW50cmllcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhc2tzID0gZW50cmllcy5tYXAoKGVudHJ5KSA9PiBtYWtlUnBsVGFza0VudHJ5KGVudHJ5LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIHJwbCh0YXNrcywgKHJwbEVycm9yLCBycGxFbnRyaWVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChycGxFcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIHJwbEVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBycGxFbnRyaWVzKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbmV4cG9ydHMucmVhZGRpcldpdGhGaWxlVHlwZXMgPSByZWFkZGlyV2l0aEZpbGVUeXBlcztcclxuZnVuY3Rpb24gbWFrZVJwbFRhc2tFbnRyeShlbnRyeSwgc2V0dGluZ3MpIHtcclxuICAgIHJldHVybiAoZG9uZSkgPT4ge1xyXG4gICAgICAgIGlmICghZW50cnkuZGlyZW50LmlzU3ltYm9saWNMaW5rKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgZW50cnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXR0aW5ncy5mcy5zdGF0KGVudHJ5LnBhdGgsIChzdGF0RXJyb3IsIHN0YXRzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzdGF0RXJyb3IgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmspIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShzdGF0RXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgZW50cnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVudHJ5LmRpcmVudCA9IHV0aWxzLmZzLmNyZWF0ZURpcmVudEZyb21TdGF0cyhlbnRyeS5uYW1lLCBzdGF0cyk7XHJcbiAgICAgICAgICAgIHJldHVybiBkb25lKG51bGwsIGVudHJ5KTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcmVhZGRpcihkaXJlY3RvcnksIHNldHRpbmdzLCBjYWxsYmFjaykge1xyXG4gICAgc2V0dGluZ3MuZnMucmVhZGRpcihkaXJlY3RvcnksIChyZWFkZGlyRXJyb3IsIG5hbWVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlYWRkaXJFcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgcmVhZGRpckVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZmlsZXBhdGhzID0gbmFtZXMubWFwKChuYW1lKSA9PiBjb21tb24uam9pblBhdGhTZWdtZW50cyhkaXJlY3RvcnksIG5hbWUsIHNldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKSk7XHJcbiAgICAgICAgY29uc3QgdGFza3MgPSBmaWxlcGF0aHMubWFwKChmaWxlcGF0aCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKGRvbmUpID0+IGZzU3RhdC5zdGF0KGZpbGVwYXRoLCBzZXR0aW5ncy5mc1N0YXRTZXR0aW5ncywgZG9uZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcnBsKHRhc2tzLCAocnBsRXJyb3IsIHJlc3VsdHMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJwbEVycm9yICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgcnBsRXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcclxuICAgICAgICAgICAgbmFtZXMuZm9yRWFjaCgobmFtZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gcmVzdWx0c1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGZpbGVwYXRoc1tpbmRleF0sXHJcbiAgICAgICAgICAgICAgICAgICAgZGlyZW50OiB1dGlscy5mcy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMobmFtZSwgc3RhdHMpXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLnN0YXRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50cnkuc3RhdHMgPSBzdGF0cztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChlbnRyeSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBlbnRyaWVzKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbmV4cG9ydHMucmVhZGRpciA9IHJlYWRkaXI7XHJcbmZ1bmN0aW9uIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIGVycm9yKSB7XHJcbiAgICBjYWxsYmFjayhlcnJvcik7XHJcbn1cclxuZnVuY3Rpb24gY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgcmVzdWx0KSB7XHJcbiAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xyXG59XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMucmVhZGRpciA9IGV4cG9ydHMucmVhZGRpcldpdGhGaWxlVHlwZXMgPSBleHBvcnRzLnJlYWQgPSB2b2lkIDA7XHJcbmNvbnN0IGZzU3RhdCA9IHJlcXVpcmUoXCJAbm9kZWxpYi9mcy5zdGF0XCIpO1xyXG5jb25zdCBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHNcIik7XHJcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xyXG5jb25zdCBjb21tb24gPSByZXF1aXJlKFwiLi9jb21tb25cIik7XHJcbmZ1bmN0aW9uIHJlYWQoZGlyZWN0b3J5LCBzZXR0aW5ncykge1xyXG4gICAgaWYgKCFzZXR0aW5ncy5zdGF0cyAmJiBjb25zdGFudHNfMS5JU19TVVBQT1JUX1JFQURESVJfV0lUSF9GSUxFX1RZUEVTKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlYWRkaXJXaXRoRmlsZVR5cGVzKGRpcmVjdG9yeSwgc2V0dGluZ3MpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlYWRkaXIoZGlyZWN0b3J5LCBzZXR0aW5ncyk7XHJcbn1cclxuZXhwb3J0cy5yZWFkID0gcmVhZDtcclxuZnVuY3Rpb24gcmVhZGRpcldpdGhGaWxlVHlwZXMoZGlyZWN0b3J5LCBzZXR0aW5ncykge1xyXG4gICAgY29uc3QgZGlyZW50cyA9IHNldHRpbmdzLmZzLnJlYWRkaXJTeW5jKGRpcmVjdG9yeSwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xyXG4gICAgcmV0dXJuIGRpcmVudHMubWFwKChkaXJlbnQpID0+IHtcclxuICAgICAgICBjb25zdCBlbnRyeSA9IHtcclxuICAgICAgICAgICAgZGlyZW50LFxyXG4gICAgICAgICAgICBuYW1lOiBkaXJlbnQubmFtZSxcclxuICAgICAgICAgICAgcGF0aDogY29tbW9uLmpvaW5QYXRoU2VnbWVudHMoZGlyZWN0b3J5LCBkaXJlbnQubmFtZSwgc2V0dGluZ3MucGF0aFNlZ21lbnRTZXBhcmF0b3IpXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoZW50cnkuZGlyZW50LmlzU3ltYm9saWNMaW5rKCkgJiYgc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rcykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBzZXR0aW5ncy5mcy5zdGF0U3luYyhlbnRyeS5wYXRoKTtcclxuICAgICAgICAgICAgICAgIGVudHJ5LmRpcmVudCA9IHV0aWxzLmZzLmNyZWF0ZURpcmVudEZyb21TdGF0cyhlbnRyeS5uYW1lLCBzdGF0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVudHJ5O1xyXG4gICAgfSk7XHJcbn1cclxuZXhwb3J0cy5yZWFkZGlyV2l0aEZpbGVUeXBlcyA9IHJlYWRkaXJXaXRoRmlsZVR5cGVzO1xyXG5mdW5jdGlvbiByZWFkZGlyKGRpcmVjdG9yeSwgc2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IG5hbWVzID0gc2V0dGluZ3MuZnMucmVhZGRpclN5bmMoZGlyZWN0b3J5KTtcclxuICAgIHJldHVybiBuYW1lcy5tYXAoKG5hbWUpID0+IHtcclxuICAgICAgICBjb25zdCBlbnRyeVBhdGggPSBjb21tb24uam9pblBhdGhTZWdtZW50cyhkaXJlY3RvcnksIG5hbWUsIHNldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcclxuICAgICAgICBjb25zdCBzdGF0cyA9IGZzU3RhdC5zdGF0U3luYyhlbnRyeVBhdGgsIHNldHRpbmdzLmZzU3RhdFNldHRpbmdzKTtcclxuICAgICAgICBjb25zdCBlbnRyeSA9IHtcclxuICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgcGF0aDogZW50cnlQYXRoLFxyXG4gICAgICAgICAgICBkaXJlbnQ6IHV0aWxzLmZzLmNyZWF0ZURpcmVudEZyb21TdGF0cyhuYW1lLCBzdGF0cylcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChzZXR0aW5ncy5zdGF0cykge1xyXG4gICAgICAgICAgICBlbnRyeS5zdGF0cyA9IHN0YXRzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZW50cnk7XHJcbiAgICB9KTtcclxufVxyXG5leHBvcnRzLnJlYWRkaXIgPSByZWFkZGlyO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyID0gZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSID0gdm9pZCAwO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSID0ge1xyXG4gICAgbHN0YXQ6IGZzLmxzdGF0LFxyXG4gICAgc3RhdDogZnMuc3RhdCxcclxuICAgIGxzdGF0U3luYzogZnMubHN0YXRTeW5jLFxyXG4gICAgc3RhdFN5bmM6IGZzLnN0YXRTeW5jLFxyXG4gICAgcmVhZGRpcjogZnMucmVhZGRpcixcclxuICAgIHJlYWRkaXJTeW5jOiBmcy5yZWFkZGlyU3luY1xyXG59O1xyXG5mdW5jdGlvbiBjcmVhdGVGaWxlU3lzdGVtQWRhcHRlcihmc01ldGhvZHMpIHtcclxuICAgIGlmIChmc01ldGhvZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBleHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBleHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVIpLCBmc01ldGhvZHMpO1xyXG59XHJcbmV4cG9ydHMuY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIgPSBjcmVhdGVGaWxlU3lzdGVtQWRhcHRlcjtcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xyXG5jb25zdCBmc1N0YXQgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc3RhdFwiKTtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiLi9hZGFwdGVycy9mc1wiKTtcclxuY2xhc3MgU2V0dGluZ3Mge1xyXG4gICAgY29uc3RydWN0b3IoX29wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBfb3B0aW9ucztcclxuICAgICAgICB0aGlzLmZvbGxvd1N5bWJvbGljTGlua3MgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmZvbGxvd1N5bWJvbGljTGlua3MsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLmZzID0gZnMuY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIodGhpcy5fb3B0aW9ucy5mcyk7XHJcbiAgICAgICAgdGhpcy5wYXRoU2VnbWVudFNlcGFyYXRvciA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMucGF0aFNlZ21lbnRTZXBhcmF0b3IsIHBhdGguc2VwKTtcclxuICAgICAgICB0aGlzLnN0YXRzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdGF0cywgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmssIHRydWUpO1xyXG4gICAgICAgIHRoaXMuZnNTdGF0U2V0dGluZ3MgPSBuZXcgZnNTdGF0LlNldHRpbmdzKHtcclxuICAgICAgICAgICAgZm9sbG93U3ltYm9saWNMaW5rOiB0aGlzLmZvbGxvd1N5bWJvbGljTGlua3MsXHJcbiAgICAgICAgICAgIGZzOiB0aGlzLmZzLFxyXG4gICAgICAgICAgICB0aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbms6IHRoaXMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfZ2V0VmFsdWUob3B0aW9uLCB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBvcHRpb24gIT09IG51bGwgJiYgb3B0aW9uICE9PSB2b2lkIDAgPyBvcHRpb24gOiB2YWx1ZTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBTZXR0aW5ncztcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5TZXR0aW5ncyA9IGV4cG9ydHMuc2NhbmRpclN5bmMgPSBleHBvcnRzLnNjYW5kaXIgPSB2b2lkIDA7XHJcbmNvbnN0IGFzeW5jID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL2FzeW5jXCIpO1xyXG5jb25zdCBzeW5jID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL3N5bmNcIik7XHJcbmNvbnN0IHNldHRpbmdzXzEgPSByZXF1aXJlKFwiLi9zZXR0aW5nc1wiKTtcclxuZXhwb3J0cy5TZXR0aW5ncyA9IHNldHRpbmdzXzEuZGVmYXVsdDtcclxuZnVuY3Rpb24gc2NhbmRpcihwYXRoLCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2ssIGNhbGxiYWNrKSB7XHJcbiAgICBpZiAodHlwZW9mIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiBhc3luYy5yZWFkKHBhdGgsIGdldFNldHRpbmdzKCksIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBhc3luYy5yZWFkKHBhdGgsIGdldFNldHRpbmdzKG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayksIGNhbGxiYWNrKTtcclxufVxyXG5leHBvcnRzLnNjYW5kaXIgPSBzY2FuZGlyO1xyXG5mdW5jdGlvbiBzY2FuZGlyU3luYyhwYXRoLCBvcHRpb25zT3JTZXR0aW5ncykge1xyXG4gICAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5ncyk7XHJcbiAgICByZXR1cm4gc3luYy5yZWFkKHBhdGgsIHNldHRpbmdzKTtcclxufVxyXG5leHBvcnRzLnNjYW5kaXJTeW5jID0gc2NhbmRpclN5bmM7XHJcbmZ1bmN0aW9uIGdldFNldHRpbmdzKHNldHRpbmdzT3JPcHRpb25zID0ge30pIHtcclxuICAgIGlmIChzZXR0aW5nc09yT3B0aW9ucyBpbnN0YW5jZW9mIHNldHRpbmdzXzEuZGVmYXVsdCkge1xyXG4gICAgICAgIHJldHVybiBzZXR0aW5nc09yT3B0aW9ucztcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgc2V0dGluZ3NfMS5kZWZhdWx0KHNldHRpbmdzT3JPcHRpb25zKTtcclxufVxyXG4iLCIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gcmV1c2lmeSAoQ29uc3RydWN0b3IpIHtcbiAgdmFyIGhlYWQgPSBuZXcgQ29uc3RydWN0b3IoKVxuICB2YXIgdGFpbCA9IGhlYWRcblxuICBmdW5jdGlvbiBnZXQgKCkge1xuICAgIHZhciBjdXJyZW50ID0gaGVhZFxuXG4gICAgaWYgKGN1cnJlbnQubmV4dCkge1xuICAgICAgaGVhZCA9IGN1cnJlbnQubmV4dFxuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkID0gbmV3IENvbnN0cnVjdG9yKClcbiAgICAgIHRhaWwgPSBoZWFkXG4gICAgfVxuXG4gICAgY3VycmVudC5uZXh0ID0gbnVsbFxuXG4gICAgcmV0dXJuIGN1cnJlbnRcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbGVhc2UgKG9iaikge1xuICAgIHRhaWwubmV4dCA9IG9ialxuICAgIHRhaWwgPSBvYmpcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ2V0OiBnZXQsXG4gICAgcmVsZWFzZTogcmVsZWFzZVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmV1c2lmeVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciByZXVzaWZ5ID0gcmVxdWlyZSgncmV1c2lmeScpXG5cbmZ1bmN0aW9uIGZhc3RxdWV1ZSAoY29udGV4dCwgd29ya2VyLCBjb25jdXJyZW5jeSkge1xuICBpZiAodHlwZW9mIGNvbnRleHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25jdXJyZW5jeSA9IHdvcmtlclxuICAgIHdvcmtlciA9IGNvbnRleHRcbiAgICBjb250ZXh0ID0gbnVsbFxuICB9XG5cbiAgaWYgKGNvbmN1cnJlbmN5IDwgMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFzdHF1ZXVlIGNvbmN1cnJlbmN5IG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKVxuICB9XG5cbiAgdmFyIGNhY2hlID0gcmV1c2lmeShUYXNrKVxuICB2YXIgcXVldWVIZWFkID0gbnVsbFxuICB2YXIgcXVldWVUYWlsID0gbnVsbFxuICB2YXIgX3J1bm5pbmcgPSAwXG4gIHZhciBlcnJvckhhbmRsZXIgPSBudWxsXG5cbiAgdmFyIHNlbGYgPSB7XG4gICAgcHVzaDogcHVzaCxcbiAgICBkcmFpbjogbm9vcCxcbiAgICBzYXR1cmF0ZWQ6IG5vb3AsXG4gICAgcGF1c2U6IHBhdXNlLFxuICAgIHBhdXNlZDogZmFsc2UsXG4gICAgY29uY3VycmVuY3k6IGNvbmN1cnJlbmN5LFxuICAgIHJ1bm5pbmc6IHJ1bm5pbmcsXG4gICAgcmVzdW1lOiByZXN1bWUsXG4gICAgaWRsZTogaWRsZSxcbiAgICBsZW5ndGg6IGxlbmd0aCxcbiAgICBnZXRRdWV1ZTogZ2V0UXVldWUsXG4gICAgdW5zaGlmdDogdW5zaGlmdCxcbiAgICBlbXB0eTogbm9vcCxcbiAgICBraWxsOiBraWxsLFxuICAgIGtpbGxBbmREcmFpbjoga2lsbEFuZERyYWluLFxuICAgIGVycm9yOiBlcnJvclxuICB9XG5cbiAgcmV0dXJuIHNlbGZcblxuICBmdW5jdGlvbiBydW5uaW5nICgpIHtcbiAgICByZXR1cm4gX3J1bm5pbmdcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdXNlICgpIHtcbiAgICBzZWxmLnBhdXNlZCA9IHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGxlbmd0aCAoKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBxdWV1ZUhlYWRcbiAgICB2YXIgY291bnRlciA9IDBcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0XG4gICAgICBjb3VudGVyKytcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRlclxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0UXVldWUgKCkge1xuICAgIHZhciBjdXJyZW50ID0gcXVldWVIZWFkXG4gICAgdmFyIHRhc2tzID0gW11cblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICB0YXNrcy5wdXNoKGN1cnJlbnQudmFsdWUpXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhc2tzXG4gIH1cblxuICBmdW5jdGlvbiByZXN1bWUgKCkge1xuICAgIGlmICghc2VsZi5wYXVzZWQpIHJldHVyblxuICAgIHNlbGYucGF1c2VkID0gZmFsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYuY29uY3VycmVuY3k7IGkrKykge1xuICAgICAgX3J1bm5pbmcrK1xuICAgICAgcmVsZWFzZSgpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaWRsZSAoKSB7XG4gICAgcmV0dXJuIF9ydW5uaW5nID09PSAwICYmIHNlbGYubGVuZ3RoKCkgPT09IDBcbiAgfVxuXG4gIGZ1bmN0aW9uIHB1c2ggKHZhbHVlLCBkb25lKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBjYWNoZS5nZXQoKVxuXG4gICAgY3VycmVudC5jb250ZXh0ID0gY29udGV4dFxuICAgIGN1cnJlbnQucmVsZWFzZSA9IHJlbGVhc2VcbiAgICBjdXJyZW50LnZhbHVlID0gdmFsdWVcbiAgICBjdXJyZW50LmNhbGxiYWNrID0gZG9uZSB8fCBub29wXG4gICAgY3VycmVudC5lcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXJcblxuICAgIGlmIChfcnVubmluZyA9PT0gc2VsZi5jb25jdXJyZW5jeSB8fCBzZWxmLnBhdXNlZCkge1xuICAgICAgaWYgKHF1ZXVlVGFpbCkge1xuICAgICAgICBxdWV1ZVRhaWwubmV4dCA9IGN1cnJlbnRcbiAgICAgICAgcXVldWVUYWlsID0gY3VycmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVIZWFkID0gY3VycmVudFxuICAgICAgICBxdWV1ZVRhaWwgPSBjdXJyZW50XG4gICAgICAgIHNlbGYuc2F0dXJhdGVkKClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3J1bm5pbmcrK1xuICAgICAgd29ya2VyLmNhbGwoY29udGV4dCwgY3VycmVudC52YWx1ZSwgY3VycmVudC53b3JrZWQpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdW5zaGlmdCAodmFsdWUsIGRvbmUpIHtcbiAgICB2YXIgY3VycmVudCA9IGNhY2hlLmdldCgpXG5cbiAgICBjdXJyZW50LmNvbnRleHQgPSBjb250ZXh0XG4gICAgY3VycmVudC5yZWxlYXNlID0gcmVsZWFzZVxuICAgIGN1cnJlbnQudmFsdWUgPSB2YWx1ZVxuICAgIGN1cnJlbnQuY2FsbGJhY2sgPSBkb25lIHx8IG5vb3BcblxuICAgIGlmIChfcnVubmluZyA9PT0gc2VsZi5jb25jdXJyZW5jeSB8fCBzZWxmLnBhdXNlZCkge1xuICAgICAgaWYgKHF1ZXVlSGVhZCkge1xuICAgICAgICBjdXJyZW50Lm5leHQgPSBxdWV1ZUhlYWRcbiAgICAgICAgcXVldWVIZWFkID0gY3VycmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVIZWFkID0gY3VycmVudFxuICAgICAgICBxdWV1ZVRhaWwgPSBjdXJyZW50XG4gICAgICAgIHNlbGYuc2F0dXJhdGVkKClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3J1bm5pbmcrK1xuICAgICAgd29ya2VyLmNhbGwoY29udGV4dCwgY3VycmVudC52YWx1ZSwgY3VycmVudC53b3JrZWQpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVsZWFzZSAoaG9sZGVyKSB7XG4gICAgaWYgKGhvbGRlcikge1xuICAgICAgY2FjaGUucmVsZWFzZShob2xkZXIpXG4gICAgfVxuICAgIHZhciBuZXh0ID0gcXVldWVIZWFkXG4gICAgaWYgKG5leHQpIHtcbiAgICAgIGlmICghc2VsZi5wYXVzZWQpIHtcbiAgICAgICAgaWYgKHF1ZXVlVGFpbCA9PT0gcXVldWVIZWFkKSB7XG4gICAgICAgICAgcXVldWVUYWlsID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSGVhZCA9IG5leHQubmV4dFxuICAgICAgICBuZXh0Lm5leHQgPSBudWxsXG4gICAgICAgIHdvcmtlci5jYWxsKGNvbnRleHQsIG5leHQudmFsdWUsIG5leHQud29ya2VkKVxuICAgICAgICBpZiAocXVldWVUYWlsID09PSBudWxsKSB7XG4gICAgICAgICAgc2VsZi5lbXB0eSgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9ydW5uaW5nLS1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKC0tX3J1bm5pbmcgPT09IDApIHtcbiAgICAgIHNlbGYuZHJhaW4oKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGtpbGwgKCkge1xuICAgIHF1ZXVlSGVhZCA9IG51bGxcbiAgICBxdWV1ZVRhaWwgPSBudWxsXG4gICAgc2VsZi5kcmFpbiA9IG5vb3BcbiAgfVxuXG4gIGZ1bmN0aW9uIGtpbGxBbmREcmFpbiAoKSB7XG4gICAgcXVldWVIZWFkID0gbnVsbFxuICAgIHF1ZXVlVGFpbCA9IG51bGxcbiAgICBzZWxmLmRyYWluKClcbiAgICBzZWxmLmRyYWluID0gbm9vcFxuICB9XG5cbiAgZnVuY3Rpb24gZXJyb3IgKGhhbmRsZXIpIHtcbiAgICBlcnJvckhhbmRsZXIgPSBoYW5kbGVyXG4gIH1cbn1cblxuZnVuY3Rpb24gbm9vcCAoKSB7fVxuXG5mdW5jdGlvbiBUYXNrICgpIHtcbiAgdGhpcy52YWx1ZSA9IG51bGxcbiAgdGhpcy5jYWxsYmFjayA9IG5vb3BcbiAgdGhpcy5uZXh0ID0gbnVsbFxuICB0aGlzLnJlbGVhc2UgPSBub29wXG4gIHRoaXMuY29udGV4dCA9IG51bGxcbiAgdGhpcy5lcnJvckhhbmRsZXIgPSBudWxsXG5cbiAgdmFyIHNlbGYgPSB0aGlzXG5cbiAgdGhpcy53b3JrZWQgPSBmdW5jdGlvbiB3b3JrZWQgKGVyciwgcmVzdWx0KSB7XG4gICAgdmFyIGNhbGxiYWNrID0gc2VsZi5jYWxsYmFja1xuICAgIHZhciBlcnJvckhhbmRsZXIgPSBzZWxmLmVycm9ySGFuZGxlclxuICAgIHZhciB2YWwgPSBzZWxmLnZhbHVlXG4gICAgc2VsZi52YWx1ZSA9IG51bGxcbiAgICBzZWxmLmNhbGxiYWNrID0gbm9vcFxuICAgIGlmIChzZWxmLmVycm9ySGFuZGxlcikge1xuICAgICAgZXJyb3JIYW5kbGVyKGVyciwgdmFsKVxuICAgIH1cbiAgICBjYWxsYmFjay5jYWxsKHNlbGYuY29udGV4dCwgZXJyLCByZXN1bHQpXG4gICAgc2VsZi5yZWxlYXNlKHNlbGYpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmYXN0cXVldWVcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuam9pblBhdGhTZWdtZW50cyA9IGV4cG9ydHMucmVwbGFjZVBhdGhTZWdtZW50U2VwYXJhdG9yID0gZXhwb3J0cy5pc0FwcGxpZWRGaWx0ZXIgPSBleHBvcnRzLmlzRmF0YWxFcnJvciA9IHZvaWQgMDtcclxuZnVuY3Rpb24gaXNGYXRhbEVycm9yKHNldHRpbmdzLCBlcnJvcikge1xyXG4gICAgaWYgKHNldHRpbmdzLmVycm9yRmlsdGVyID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXNldHRpbmdzLmVycm9yRmlsdGVyKGVycm9yKTtcclxufVxyXG5leHBvcnRzLmlzRmF0YWxFcnJvciA9IGlzRmF0YWxFcnJvcjtcclxuZnVuY3Rpb24gaXNBcHBsaWVkRmlsdGVyKGZpbHRlciwgdmFsdWUpIHtcclxuICAgIHJldHVybiBmaWx0ZXIgPT09IG51bGwgfHwgZmlsdGVyKHZhbHVlKTtcclxufVxyXG5leHBvcnRzLmlzQXBwbGllZEZpbHRlciA9IGlzQXBwbGllZEZpbHRlcjtcclxuZnVuY3Rpb24gcmVwbGFjZVBhdGhTZWdtZW50U2VwYXJhdG9yKGZpbGVwYXRoLCBzZXBhcmF0b3IpIHtcclxuICAgIHJldHVybiBmaWxlcGF0aC5zcGxpdCgvWy9cXFxcXS8pLmpvaW4oc2VwYXJhdG9yKTtcclxufVxyXG5leHBvcnRzLnJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvciA9IHJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvcjtcclxuZnVuY3Rpb24gam9pblBhdGhTZWdtZW50cyhhLCBiLCBzZXBhcmF0b3IpIHtcclxuICAgIGlmIChhID09PSAnJykge1xyXG4gICAgICAgIHJldHVybiBiO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29ycmVjdCBoYW5kbGluZyBvZiBjYXNlcyB3aGVuIHRoZSBmaXJzdCBzZWdtZW50IGlzIGEgcm9vdCAoYC9gLCBgQzovYCkgb3IgVU5DIHBhdGggKGAvLz8vQzovYCkuXHJcbiAgICAgKi9cclxuICAgIGlmIChhLmVuZHNXaXRoKHNlcGFyYXRvcikpIHtcclxuICAgICAgICByZXR1cm4gYSArIGI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYSArIHNlcGFyYXRvciArIGI7XHJcbn1cclxuZXhwb3J0cy5qb2luUGF0aFNlZ21lbnRzID0gam9pblBhdGhTZWdtZW50cztcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgY29tbW9uID0gcmVxdWlyZShcIi4vY29tbW9uXCIpO1xyXG5jbGFzcyBSZWFkZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9yb290ID0gY29tbW9uLnJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvcihfcm9vdCwgX3NldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBSZWFkZXI7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IGV2ZW50c18xID0gcmVxdWlyZShcImV2ZW50c1wiKTtcclxuY29uc3QgZnNTY2FuZGlyID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnNjYW5kaXJcIik7XHJcbmNvbnN0IGZhc3RxID0gcmVxdWlyZShcImZhc3RxXCIpO1xyXG5jb25zdCBjb21tb24gPSByZXF1aXJlKFwiLi9jb21tb25cIik7XHJcbmNvbnN0IHJlYWRlcl8xID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xyXG5jbGFzcyBBc3luY1JlYWRlciBleHRlbmRzIHJlYWRlcl8xLmRlZmF1bHQge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHN1cGVyKF9yb290LCBfc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xyXG4gICAgICAgIHRoaXMuX3NjYW5kaXIgPSBmc1NjYW5kaXIuc2NhbmRpcjtcclxuICAgICAgICB0aGlzLl9lbWl0dGVyID0gbmV3IGV2ZW50c18xLkV2ZW50RW1pdHRlcigpO1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlID0gZmFzdHEodGhpcy5fd29ya2VyLmJpbmQodGhpcyksIHRoaXMuX3NldHRpbmdzLmNvbmN1cnJlbmN5KTtcclxuICAgICAgICB0aGlzLl9pc0ZhdGFsRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9pc0Rlc3Ryb3llZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlLmRyYWluID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzRmF0YWxFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdHRlci5lbWl0KCdlbmQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZWFkKCkge1xyXG4gICAgICAgIHRoaXMuX2lzRmF0YWxFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2lzRGVzdHJveWVkID0gZmFsc2U7XHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fcHVzaFRvUXVldWUodGhpcy5fcm9vdCwgdGhpcy5fc2V0dGluZ3MuYmFzZVBhdGgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbWl0dGVyO1xyXG4gICAgfVxyXG4gICAgZ2V0IGlzRGVzdHJveWVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Rlc3Ryb3llZDtcclxuICAgIH1cclxuICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzRGVzdHJveWVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHJlYWRlciBpcyBhbHJlYWR5IGRlc3Ryb3llZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pc0Rlc3Ryb3llZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fcXVldWUua2lsbEFuZERyYWluKCk7XHJcbiAgICB9XHJcbiAgICBvbkVudHJ5KGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdGhpcy5fZW1pdHRlci5vbignZW50cnknLCBjYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBvbkVycm9yKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdGhpcy5fZW1pdHRlci5vbmNlKCdlcnJvcicsIGNhbGxiYWNrKTtcclxuICAgIH1cclxuICAgIG9uRW5kKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdGhpcy5fZW1pdHRlci5vbmNlKCdlbmQnLCBjYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBfcHVzaFRvUXVldWUoZGlyZWN0b3J5LCBiYXNlKSB7XHJcbiAgICAgICAgY29uc3QgcXVldWVJdGVtID0geyBkaXJlY3RvcnksIGJhc2UgfTtcclxuICAgICAgICB0aGlzLl9xdWV1ZS5wdXNoKHF1ZXVlSXRlbSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfd29ya2VyKGl0ZW0sIGRvbmUpIHtcclxuICAgICAgICB0aGlzLl9zY2FuZGlyKGl0ZW0uZGlyZWN0b3J5LCB0aGlzLl9zZXR0aW5ncy5mc1NjYW5kaXJTZXR0aW5ncywgKGVycm9yLCBlbnRyaWVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyb3IsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVFbnRyeShlbnRyeSwgaXRlbS5iYXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkb25lKG51bGwsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfaGFuZGxlRXJyb3IoZXJyb3IpIHtcclxuICAgICAgICBpZiAodGhpcy5faXNEZXN0cm95ZWQgfHwgIWNvbW1vbi5pc0ZhdGFsRXJyb3IodGhpcy5fc2V0dGluZ3MsIGVycm9yKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2lzRmF0YWxFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5faXNEZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2VtaXR0ZXIuZW1pdCgnZXJyb3InLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgICBfaGFuZGxlRW50cnkoZW50cnksIGJhc2UpIHtcclxuICAgICAgICBpZiAodGhpcy5faXNEZXN0cm95ZWQgfHwgdGhpcy5faXNGYXRhbEVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZnVsbHBhdGggPSBlbnRyeS5wYXRoO1xyXG4gICAgICAgIGlmIChiYXNlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZW50cnkucGF0aCA9IGNvbW1vbi5qb2luUGF0aFNlZ21lbnRzKGJhc2UsIGVudHJ5Lm5hbWUsIHRoaXMuX3NldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbW1vbi5pc0FwcGxpZWRGaWx0ZXIodGhpcy5fc2V0dGluZ3MuZW50cnlGaWx0ZXIsIGVudHJ5KSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lbWl0RW50cnkoZW50cnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZW50cnkuZGlyZW50LmlzRGlyZWN0b3J5KCkgJiYgY29tbW9uLmlzQXBwbGllZEZpbHRlcih0aGlzLl9zZXR0aW5ncy5kZWVwRmlsdGVyLCBlbnRyeSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHVzaFRvUXVldWUoZnVsbHBhdGgsIGVudHJ5LnBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9lbWl0RW50cnkoZW50cnkpIHtcclxuICAgICAgICB0aGlzLl9lbWl0dGVyLmVtaXQoJ2VudHJ5JywgZW50cnkpO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IEFzeW5jUmVhZGVyO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCBhc3luY18xID0gcmVxdWlyZShcIi4uL3JlYWRlcnMvYXN5bmNcIik7XHJcbmNsYXNzIEFzeW5jUHJvdmlkZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgYXN5bmNfMS5kZWZhdWx0KHRoaXMuX3Jvb3QsIHRoaXMuX3NldHRpbmdzKTtcclxuICAgICAgICB0aGlzLl9zdG9yYWdlID0gbmV3IFNldCgpO1xyXG4gICAgfVxyXG4gICAgcmVhZChjYWxsYmFjaykge1xyXG4gICAgICAgIHRoaXMuX3JlYWRlci5vbkVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fcmVhZGVyLm9uRW50cnkoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2UuYWRkKGVudHJ5KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9yZWFkZXIub25FbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBbLi4udGhpcy5fc3RvcmFnZV0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX3JlYWRlci5yZWFkKCk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gQXN5bmNQcm92aWRlcjtcclxuZnVuY3Rpb24gY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgZXJyb3IpIHtcclxuICAgIGNhbGxiYWNrKGVycm9yKTtcclxufVxyXG5mdW5jdGlvbiBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBlbnRyaWVzKSB7XHJcbiAgICBjYWxsYmFjayhudWxsLCBlbnRyaWVzKTtcclxufVxyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCBzdHJlYW1fMSA9IHJlcXVpcmUoXCJzdHJlYW1cIik7XHJcbmNvbnN0IGFzeW5jXzEgPSByZXF1aXJlKFwiLi4vcmVhZGVycy9hc3luY1wiKTtcclxuY2xhc3MgU3RyZWFtUHJvdmlkZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgYXN5bmNfMS5kZWZhdWx0KHRoaXMuX3Jvb3QsIHRoaXMuX3NldHRpbmdzKTtcclxuICAgICAgICB0aGlzLl9zdHJlYW0gPSBuZXcgc3RyZWFtXzEuUmVhZGFibGUoe1xyXG4gICAgICAgICAgICBvYmplY3RNb2RlOiB0cnVlLFxyXG4gICAgICAgICAgICByZWFkOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICAgIGRlc3Ryb3k6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fcmVhZGVyLmlzRGVzdHJveWVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVhZGVyLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmVhZCgpIHtcclxuICAgICAgICB0aGlzLl9yZWFkZXIub25FcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX3JlYWRlci5vbkVudHJ5KChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9zdHJlYW0ucHVzaChlbnRyeSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fcmVhZGVyLm9uRW5kKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fc3RyZWFtLnB1c2gobnVsbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fcmVhZGVyLnJlYWQoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RyZWFtO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IFN0cmVhbVByb3ZpZGVyO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCBmc1NjYW5kaXIgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc2NhbmRpclwiKTtcclxuY29uc3QgY29tbW9uID0gcmVxdWlyZShcIi4vY29tbW9uXCIpO1xyXG5jb25zdCByZWFkZXJfMSA9IHJlcXVpcmUoXCIuL3JlYWRlclwiKTtcclxuY2xhc3MgU3luY1JlYWRlciBleHRlbmRzIHJlYWRlcl8xLmRlZmF1bHQge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICB0aGlzLl9zY2FuZGlyID0gZnNTY2FuZGlyLnNjYW5kaXJTeW5jO1xyXG4gICAgICAgIHRoaXMuX3N0b3JhZ2UgPSBuZXcgU2V0KCk7XHJcbiAgICAgICAgdGhpcy5fcXVldWUgPSBuZXcgU2V0KCk7XHJcbiAgICB9XHJcbiAgICByZWFkKCkge1xyXG4gICAgICAgIHRoaXMuX3B1c2hUb1F1ZXVlKHRoaXMuX3Jvb3QsIHRoaXMuX3NldHRpbmdzLmJhc2VQYXRoKTtcclxuICAgICAgICB0aGlzLl9oYW5kbGVRdWV1ZSgpO1xyXG4gICAgICAgIHJldHVybiBbLi4udGhpcy5fc3RvcmFnZV07XHJcbiAgICB9XHJcbiAgICBfcHVzaFRvUXVldWUoZGlyZWN0b3J5LCBiYXNlKSB7XHJcbiAgICAgICAgdGhpcy5fcXVldWUuYWRkKHsgZGlyZWN0b3J5LCBiYXNlIH0pO1xyXG4gICAgfVxyXG4gICAgX2hhbmRsZVF1ZXVlKCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9xdWV1ZS52YWx1ZXMoKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVEaXJlY3RvcnkoaXRlbS5kaXJlY3RvcnksIGl0ZW0uYmFzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgX2hhbmRsZURpcmVjdG9yeShkaXJlY3RvcnksIGJhc2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gdGhpcy5fc2NhbmRpcihkaXJlY3RvcnksIHRoaXMuX3NldHRpbmdzLmZzU2NhbmRpclNldHRpbmdzKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVFbnRyeShlbnRyeSwgYmFzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfaGFuZGxlRXJyb3IoZXJyb3IpIHtcclxuICAgICAgICBpZiAoIWNvbW1vbi5pc0ZhdGFsRXJyb3IodGhpcy5fc2V0dGluZ3MsIGVycm9yKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfVxyXG4gICAgX2hhbmRsZUVudHJ5KGVudHJ5LCBiYXNlKSB7XHJcbiAgICAgICAgY29uc3QgZnVsbHBhdGggPSBlbnRyeS5wYXRoO1xyXG4gICAgICAgIGlmIChiYXNlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZW50cnkucGF0aCA9IGNvbW1vbi5qb2luUGF0aFNlZ21lbnRzKGJhc2UsIGVudHJ5Lm5hbWUsIHRoaXMuX3NldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbW1vbi5pc0FwcGxpZWRGaWx0ZXIodGhpcy5fc2V0dGluZ3MuZW50cnlGaWx0ZXIsIGVudHJ5KSkge1xyXG4gICAgICAgICAgICB0aGlzLl9wdXNoVG9TdG9yYWdlKGVudHJ5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVudHJ5LmRpcmVudC5pc0RpcmVjdG9yeSgpICYmIGNvbW1vbi5pc0FwcGxpZWRGaWx0ZXIodGhpcy5fc2V0dGluZ3MuZGVlcEZpbHRlciwgZW50cnkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3B1c2hUb1F1ZXVlKGZ1bGxwYXRoLCBlbnRyeS5wYXRoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfcHVzaFRvU3RvcmFnZShlbnRyeSkge1xyXG4gICAgICAgIHRoaXMuX3N0b3JhZ2UuYWRkKGVudHJ5KTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBTeW5jUmVhZGVyO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCBzeW5jXzEgPSByZXF1aXJlKFwiLi4vcmVhZGVycy9zeW5jXCIpO1xyXG5jbGFzcyBTeW5jUHJvdmlkZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgc3luY18xLmRlZmF1bHQodGhpcy5fcm9vdCwgdGhpcy5fc2V0dGluZ3MpO1xyXG4gICAgfVxyXG4gICAgcmVhZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLnJlYWQoKTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBTeW5jUHJvdmlkZXI7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZnNTY2FuZGlyID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnNjYW5kaXJcIik7XHJcbmNsYXNzIFNldHRpbmdzIHtcclxuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zID0ge30pIHtcclxuICAgICAgICB0aGlzLl9vcHRpb25zID0gX29wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5iYXNlUGF0aCA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuYmFzZVBhdGgsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGhpcy5jb25jdXJyZW5jeSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuY29uY3VycmVuY3ksIEluZmluaXR5KTtcclxuICAgICAgICB0aGlzLmRlZXBGaWx0ZXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRlZXBGaWx0ZXIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMuZW50cnlGaWx0ZXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmVudHJ5RmlsdGVyLCBudWxsKTtcclxuICAgICAgICB0aGlzLmVycm9yRmlsdGVyID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5lcnJvckZpbHRlciwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5wYXRoU2VnbWVudFNlcGFyYXRvciA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMucGF0aFNlZ21lbnRTZXBhcmF0b3IsIHBhdGguc2VwKTtcclxuICAgICAgICB0aGlzLmZzU2NhbmRpclNldHRpbmdzID0gbmV3IGZzU2NhbmRpci5TZXR0aW5ncyh7XHJcbiAgICAgICAgICAgIGZvbGxvd1N5bWJvbGljTGlua3M6IHRoaXMuX29wdGlvbnMuZm9sbG93U3ltYm9saWNMaW5rcyxcclxuICAgICAgICAgICAgZnM6IHRoaXMuX29wdGlvbnMuZnMsXHJcbiAgICAgICAgICAgIHBhdGhTZWdtZW50U2VwYXJhdG9yOiB0aGlzLl9vcHRpb25zLnBhdGhTZWdtZW50U2VwYXJhdG9yLFxyXG4gICAgICAgICAgICBzdGF0czogdGhpcy5fb3B0aW9ucy5zdGF0cyxcclxuICAgICAgICAgICAgdGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rOiB0aGlzLl9vcHRpb25zLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGlua1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gb3B0aW9uICE9PSBudWxsICYmIG9wdGlvbiAhPT0gdm9pZCAwID8gb3B0aW9uIDogdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gU2V0dGluZ3M7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuU2V0dGluZ3MgPSBleHBvcnRzLndhbGtTdHJlYW0gPSBleHBvcnRzLndhbGtTeW5jID0gZXhwb3J0cy53YWxrID0gdm9pZCAwO1xyXG5jb25zdCBhc3luY18xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL2FzeW5jXCIpO1xyXG5jb25zdCBzdHJlYW1fMSA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9zdHJlYW1cIik7XHJcbmNvbnN0IHN5bmNfMSA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9zeW5jXCIpO1xyXG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XHJcbmV4cG9ydHMuU2V0dGluZ3MgPSBzZXR0aW5nc18xLmRlZmF1bHQ7XHJcbmZ1bmN0aW9uIHdhbGsoZGlyZWN0b3J5LCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2ssIGNhbGxiYWNrKSB7XHJcbiAgICBpZiAodHlwZW9mIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiBuZXcgYXN5bmNfMS5kZWZhdWx0KGRpcmVjdG9yeSwgZ2V0U2V0dGluZ3MoKSkucmVhZChvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgbmV3IGFzeW5jXzEuZGVmYXVsdChkaXJlY3RvcnksIGdldFNldHRpbmdzKG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjaykpLnJlYWQoY2FsbGJhY2spO1xyXG59XHJcbmV4cG9ydHMud2FsayA9IHdhbGs7XHJcbmZ1bmN0aW9uIHdhbGtTeW5jKGRpcmVjdG9yeSwgb3B0aW9uc09yU2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3Mob3B0aW9uc09yU2V0dGluZ3MpO1xyXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgc3luY18xLmRlZmF1bHQoZGlyZWN0b3J5LCBzZXR0aW5ncyk7XHJcbiAgICByZXR1cm4gcHJvdmlkZXIucmVhZCgpO1xyXG59XHJcbmV4cG9ydHMud2Fsa1N5bmMgPSB3YWxrU3luYztcclxuZnVuY3Rpb24gd2Fsa1N0cmVhbShkaXJlY3RvcnksIG9wdGlvbnNPclNldHRpbmdzKSB7XHJcbiAgICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKG9wdGlvbnNPclNldHRpbmdzKTtcclxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IHN0cmVhbV8xLmRlZmF1bHQoZGlyZWN0b3J5LCBzZXR0aW5ncyk7XHJcbiAgICByZXR1cm4gcHJvdmlkZXIucmVhZCgpO1xyXG59XHJcbmV4cG9ydHMud2Fsa1N0cmVhbSA9IHdhbGtTdHJlYW07XHJcbmZ1bmN0aW9uIGdldFNldHRpbmdzKHNldHRpbmdzT3JPcHRpb25zID0ge30pIHtcclxuICAgIGlmIChzZXR0aW5nc09yT3B0aW9ucyBpbnN0YW5jZW9mIHNldHRpbmdzXzEuZGVmYXVsdCkge1xyXG4gICAgICAgIHJldHVybiBzZXR0aW5nc09yT3B0aW9ucztcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgc2V0dGluZ3NfMS5kZWZhdWx0KHNldHRpbmdzT3JPcHRpb25zKTtcclxufVxyXG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmNvbnN0IGZzU3RhdCA9IHJlcXVpcmUoXCJAbm9kZWxpYi9mcy5zdGF0XCIpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG5jbGFzcyBSZWFkZXIge1xuICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgICAgdGhpcy5fZnNTdGF0U2V0dGluZ3MgPSBuZXcgZnNTdGF0LlNldHRpbmdzKHtcbiAgICAgICAgICAgIGZvbGxvd1N5bWJvbGljTGluazogdGhpcy5fc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rcyxcbiAgICAgICAgICAgIGZzOiB0aGlzLl9zZXR0aW5ncy5mcyxcbiAgICAgICAgICAgIHRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluazogdGhpcy5fc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rc1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2dldEZ1bGxFbnRyeVBhdGgoZmlsZXBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLl9zZXR0aW5ncy5jd2QsIGZpbGVwYXRoKTtcbiAgICB9XG4gICAgX21ha2VFbnRyeShzdGF0cywgcGF0dGVybikge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgICAgICAgIG5hbWU6IHBhdHRlcm4sXG4gICAgICAgICAgICBwYXRoOiBwYXR0ZXJuLFxuICAgICAgICAgICAgZGlyZW50OiB1dGlscy5mcy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMocGF0dGVybiwgc3RhdHMpXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5zdGF0cykge1xuICAgICAgICAgICAgZW50cnkuc3RhdHMgPSBzdGF0cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgfVxuICAgIF9pc0ZhdGFsRXJyb3IoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuICF1dGlscy5lcnJuby5pc0Vub2VudENvZGVFcnJvcihlcnJvcikgJiYgIXRoaXMuX3NldHRpbmdzLnN1cHByZXNzRXJyb3JzO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IFJlYWRlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuY29uc3QgZnNTdGF0ID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnN0YXRcIik7XG5jb25zdCBmc1dhbGsgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMud2Fsa1wiKTtcbmNvbnN0IHJlYWRlcl8xID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xuY2xhc3MgUmVhZGVyU3RyZWFtIGV4dGVuZHMgcmVhZGVyXzEuZGVmYXVsdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX3dhbGtTdHJlYW0gPSBmc1dhbGsud2Fsa1N0cmVhbTtcbiAgICAgICAgdGhpcy5fc3RhdCA9IGZzU3RhdC5zdGF0O1xuICAgIH1cbiAgICBkeW5hbWljKHJvb3QsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dhbGtTdHJlYW0ocm9vdCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN0YXRpYyhwYXR0ZXJucywgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBmaWxlcGF0aHMgPSBwYXR0ZXJucy5tYXAodGhpcy5fZ2V0RnVsbEVudHJ5UGF0aCwgdGhpcyk7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBzdHJlYW1fMS5QYXNzVGhyb3VnaCh7IG9iamVjdE1vZGU6IHRydWUgfSk7XG4gICAgICAgIHN0cmVhbS5fd3JpdGUgPSAoaW5kZXgsIF9lbmMsIGRvbmUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRFbnRyeShmaWxlcGF0aHNbaW5kZXhdLCBwYXR0ZXJuc1tpbmRleF0sIG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5ICE9PSBudWxsICYmIG9wdGlvbnMuZW50cnlGaWx0ZXIoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbS5wdXNoKGVudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBmaWxlcGF0aHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBzdHJlYW0uZW5kKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGRvbmUpO1xuICAgICAgICB9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVwYXRocy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3RyZWFtLndyaXRlKGkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJlYW07XG4gICAgfVxuICAgIF9nZXRFbnRyeShmaWxlcGF0aCwgcGF0dGVybiwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U3RhdChmaWxlcGF0aClcbiAgICAgICAgICAgIC50aGVuKChzdGF0cykgPT4gdGhpcy5fbWFrZUVudHJ5KHN0YXRzLCBwYXR0ZXJuKSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVycm9yRmlsdGVyKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZ2V0U3RhdChmaWxlcGF0aCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3RhdChmaWxlcGF0aCwgdGhpcy5fZnNTdGF0U2V0dGluZ3MsIChlcnJvciwgc3RhdHMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IgPT09IG51bGwgPyByZXNvbHZlKHN0YXRzKSA6IHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUmVhZGVyU3RyZWFtO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi91dGlsc1wiKTtcbmNsYXNzIE1hdGNoZXIge1xuICAgIGNvbnN0cnVjdG9yKF9wYXR0ZXJucywgX3NldHRpbmdzLCBfbWljcm9tYXRjaE9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fcGF0dGVybnMgPSBfcGF0dGVybnM7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xuICAgICAgICB0aGlzLl9taWNyb21hdGNoT3B0aW9ucyA9IF9taWNyb21hdGNoT3B0aW9ucztcbiAgICAgICAgdGhpcy5fc3RvcmFnZSA9IFtdO1xuICAgICAgICB0aGlzLl9maWxsU3RvcmFnZSgpO1xuICAgIH1cbiAgICBfZmlsbFN0b3JhZ2UoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgb3JpZ2luYWwgcGF0dGVybiBtYXkgaW5jbHVkZSBgeywqLCoqLGEvKn1gLCB3aGljaCB3aWxsIGxlYWQgdG8gcHJvYmxlbXMgd2l0aCBtYXRjaGluZyAodW5yZXNvbHZlZCBsZXZlbCkuXG4gICAgICAgICAqIFNvLCBiZWZvcmUgZXhwYW5kIHBhdHRlcm5zIHdpdGggYnJhY2UgZXhwYW5zaW9uIGludG8gc2VwYXJhdGVkIHBhdHRlcm5zLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcGF0dGVybnMgPSB1dGlscy5wYXR0ZXJuLmV4cGFuZFBhdHRlcm5zV2l0aEJyYWNlRXhwYW5zaW9uKHRoaXMuX3BhdHRlcm5zKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgICAgICAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMuX2dldFBhdHRlcm5TZWdtZW50cyhwYXR0ZXJuKTtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25zID0gdGhpcy5fc3BsaXRTZWdtZW50c0ludG9TZWN0aW9ucyhzZWdtZW50cyk7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBzZWN0aW9ucy5sZW5ndGggPD0gMSxcbiAgICAgICAgICAgICAgICBwYXR0ZXJuLFxuICAgICAgICAgICAgICAgIHNlZ21lbnRzLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfZ2V0UGF0dGVyblNlZ21lbnRzKHBhdHRlcm4pIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSB1dGlscy5wYXR0ZXJuLmdldFBhdHRlcm5QYXJ0cyhwYXR0ZXJuLCB0aGlzLl9taWNyb21hdGNoT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBwYXJ0cy5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtaWMgPSB1dGlscy5wYXR0ZXJuLmlzRHluYW1pY1BhdHRlcm4ocGFydCwgdGhpcy5fc2V0dGluZ3MpO1xuICAgICAgICAgICAgaWYgKCFkeW5hbWljKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZHluYW1pYzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHBhcnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkeW5hbWljOiB0cnVlLFxuICAgICAgICAgICAgICAgIHBhdHRlcm46IHBhcnQsXG4gICAgICAgICAgICAgICAgcGF0dGVyblJlOiB1dGlscy5wYXR0ZXJuLm1ha2VSZShwYXJ0LCB0aGlzLl9taWNyb21hdGNoT3B0aW9ucylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfc3BsaXRTZWdtZW50c0ludG9TZWN0aW9ucyhzZWdtZW50cykge1xuICAgICAgICByZXR1cm4gdXRpbHMuYXJyYXkuc3BsaXRXaGVuKHNlZ21lbnRzLCAoc2VnbWVudCkgPT4gc2VnbWVudC5keW5hbWljICYmIHV0aWxzLnBhdHRlcm4uaGFzR2xvYlN0YXIoc2VnbWVudC5wYXR0ZXJuKSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gTWF0Y2hlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgbWF0Y2hlcl8xID0gcmVxdWlyZShcIi4vbWF0Y2hlclwiKTtcbmNsYXNzIFBhcnRpYWxNYXRjaGVyIGV4dGVuZHMgbWF0Y2hlcl8xLmRlZmF1bHQge1xuICAgIG1hdGNoKGZpbGVwYXRoKSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gZmlsZXBhdGguc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgbGV2ZWxzID0gcGFydHMubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXR0ZXJucyA9IHRoaXMuX3N0b3JhZ2UuZmlsdGVyKChpbmZvKSA9PiAhaW5mby5jb21wbGV0ZSB8fCBpbmZvLnNlZ21lbnRzLmxlbmd0aCA+IGxldmVscyk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHBhdHRlcm4uc2VjdGlvbnNbMF07XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEluIHRoaXMgY2FzZSwgdGhlIHBhdHRlcm4gaGFzIGEgZ2xvYnN0YXIgYW5kIHdlIG11c3QgcmVhZCBhbGwgZGlyZWN0b3JpZXMgdW5jb25kaXRpb25hbGx5LFxuICAgICAgICAgICAgICogYnV0IG9ubHkgaWYgdGhlIGxldmVsIGhhcyByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGZpcnN0IGdyb3VwLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIGZpeHR1cmVzL3thLGJ9LyoqXG4gICAgICAgICAgICAgKiAgXiB0cnVlL2ZhbHNlICBeIGFsd2F5cyB0cnVlXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKCFwYXR0ZXJuLmNvbXBsZXRlICYmIGxldmVscyA+IHNlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHBhcnRzLmV2ZXJ5KChwYXJ0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnQgPSBwYXR0ZXJuLnNlZ21lbnRzW2luZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAoc2VnbWVudC5keW5hbWljICYmIHNlZ21lbnQucGF0dGVyblJlLnRlc3QocGFydCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghc2VnbWVudC5keW5hbWljICYmIHNlZ21lbnQucGF0dGVybiA9PT0gcGFydCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUGFydGlhbE1hdGNoZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzXCIpO1xuY29uc3QgcGFydGlhbF8xID0gcmVxdWlyZShcIi4uL21hdGNoZXJzL3BhcnRpYWxcIik7XG5jbGFzcyBEZWVwRmlsdGVyIHtcbiAgICBjb25zdHJ1Y3Rvcihfc2V0dGluZ3MsIF9taWNyb21hdGNoT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgICAgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMgPSBfbWljcm9tYXRjaE9wdGlvbnM7XG4gICAgfVxuICAgIGdldEZpbHRlcihiYXNlUGF0aCwgcG9zaXRpdmUsIG5lZ2F0aXZlKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXIgPSB0aGlzLl9nZXRNYXRjaGVyKHBvc2l0aXZlKTtcbiAgICAgICAgY29uc3QgbmVnYXRpdmVSZSA9IHRoaXMuX2dldE5lZ2F0aXZlUGF0dGVybnNSZShuZWdhdGl2ZSk7XG4gICAgICAgIHJldHVybiAoZW50cnkpID0+IHRoaXMuX2ZpbHRlcihiYXNlUGF0aCwgZW50cnksIG1hdGNoZXIsIG5lZ2F0aXZlUmUpO1xuICAgIH1cbiAgICBfZ2V0TWF0Y2hlcihwYXR0ZXJucykge1xuICAgICAgICByZXR1cm4gbmV3IHBhcnRpYWxfMS5kZWZhdWx0KHBhdHRlcm5zLCB0aGlzLl9zZXR0aW5ncywgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xuICAgIH1cbiAgICBfZ2V0TmVnYXRpdmVQYXR0ZXJuc1JlKHBhdHRlcm5zKSB7XG4gICAgICAgIGNvbnN0IGFmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybnMgPSBwYXR0ZXJucy5maWx0ZXIodXRpbHMucGF0dGVybi5pc0FmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybik7XG4gICAgICAgIHJldHVybiB1dGlscy5wYXR0ZXJuLmNvbnZlcnRQYXR0ZXJuc1RvUmUoYWZmZWN0RGVwdGhPZlJlYWRpbmdQYXR0ZXJucywgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xuICAgIH1cbiAgICBfZmlsdGVyKGJhc2VQYXRoLCBlbnRyeSwgbWF0Y2hlciwgbmVnYXRpdmVSZSkge1xuICAgICAgICBpZiAodGhpcy5faXNTa2lwcGVkQnlEZWVwKGJhc2VQYXRoLCBlbnRyeS5wYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pc1NraXBwZWRTeW1ib2xpY0xpbmsoZW50cnkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZXBhdGggPSB1dGlscy5wYXRoLnJlbW92ZUxlYWRpbmdEb3RTZWdtZW50KGVudHJ5LnBhdGgpO1xuICAgICAgICBpZiAodGhpcy5faXNTa2lwcGVkQnlQb3NpdGl2ZVBhdHRlcm5zKGZpbGVwYXRoLCBtYXRjaGVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1NraXBwZWRCeU5lZ2F0aXZlUGF0dGVybnMoZmlsZXBhdGgsIG5lZ2F0aXZlUmUpO1xuICAgIH1cbiAgICBfaXNTa2lwcGVkQnlEZWVwKGJhc2VQYXRoLCBlbnRyeVBhdGgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF2b2lkIHVubmVjZXNzYXJ5IGRlcHRoIGNhbGN1bGF0aW9ucyB3aGVuIGl0IGRvZXNuJ3QgbWF0dGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLmRlZXAgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEVudHJ5TGV2ZWwoYmFzZVBhdGgsIGVudHJ5UGF0aCkgPj0gdGhpcy5fc2V0dGluZ3MuZGVlcDtcbiAgICB9XG4gICAgX2dldEVudHJ5TGV2ZWwoYmFzZVBhdGgsIGVudHJ5UGF0aCkge1xuICAgICAgICBjb25zdCBlbnRyeVBhdGhEZXB0aCA9IGVudHJ5UGF0aC5zcGxpdCgnLycpLmxlbmd0aDtcbiAgICAgICAgaWYgKGJhc2VQYXRoID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5UGF0aERlcHRoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJhc2VQYXRoRGVwdGggPSBiYXNlUGF0aC5zcGxpdCgnLycpLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGVudHJ5UGF0aERlcHRoIC0gYmFzZVBhdGhEZXB0aDtcbiAgICB9XG4gICAgX2lzU2tpcHBlZFN5bWJvbGljTGluayhlbnRyeSkge1xuICAgICAgICByZXR1cm4gIXRoaXMuX3NldHRpbmdzLmZvbGxvd1N5bWJvbGljTGlua3MgJiYgZW50cnkuZGlyZW50LmlzU3ltYm9saWNMaW5rKCk7XG4gICAgfVxuICAgIF9pc1NraXBwZWRCeVBvc2l0aXZlUGF0dGVybnMoZW50cnlQYXRoLCBtYXRjaGVyKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5fc2V0dGluZ3MuYmFzZU5hbWVNYXRjaCAmJiAhbWF0Y2hlci5tYXRjaChlbnRyeVBhdGgpO1xuICAgIH1cbiAgICBfaXNTa2lwcGVkQnlOZWdhdGl2ZVBhdHRlcm5zKGVudHJ5UGF0aCwgcGF0dGVybnNSZSkge1xuICAgICAgICByZXR1cm4gIXV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZW50cnlQYXRoLCBwYXR0ZXJuc1JlKTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBEZWVwRmlsdGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi91dGlsc1wiKTtcbmNsYXNzIEVudHJ5RmlsdGVyIHtcbiAgICBjb25zdHJ1Y3Rvcihfc2V0dGluZ3MsIF9taWNyb21hdGNoT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgICAgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMgPSBfbWljcm9tYXRjaE9wdGlvbnM7XG4gICAgICAgIHRoaXMuaW5kZXggPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGdldEZpbHRlcihwb3NpdGl2ZSwgbmVnYXRpdmUpIHtcbiAgICAgICAgY29uc3QgcG9zaXRpdmVSZSA9IHV0aWxzLnBhdHRlcm4uY29udmVydFBhdHRlcm5zVG9SZShwb3NpdGl2ZSwgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xuICAgICAgICBjb25zdCBuZWdhdGl2ZVJlID0gdXRpbHMucGF0dGVybi5jb252ZXJ0UGF0dGVybnNUb1JlKG5lZ2F0aXZlLCB0aGlzLl9taWNyb21hdGNoT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAoZW50cnkpID0+IHRoaXMuX2ZpbHRlcihlbnRyeSwgcG9zaXRpdmVSZSwgbmVnYXRpdmVSZSk7XG4gICAgfVxuICAgIF9maWx0ZXIoZW50cnksIHBvc2l0aXZlUmUsIG5lZ2F0aXZlUmUpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLnVuaXF1ZSAmJiB0aGlzLl9pc0R1cGxpY2F0ZUVudHJ5KGVudHJ5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9vbmx5RmlsZUZpbHRlcihlbnRyeSkgfHwgdGhpcy5fb25seURpcmVjdG9yeUZpbHRlcihlbnRyeSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faXNTa2lwcGVkQnlBYnNvbHV0ZU5lZ2F0aXZlUGF0dGVybnMoZW50cnkucGF0aCwgbmVnYXRpdmVSZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWxlcGF0aCA9IHRoaXMuX3NldHRpbmdzLmJhc2VOYW1lTWF0Y2ggPyBlbnRyeS5uYW1lIDogZW50cnkucGF0aDtcbiAgICAgICAgY29uc3QgaXNNYXRjaGVkID0gdGhpcy5faXNNYXRjaFRvUGF0dGVybnMoZmlsZXBhdGgsIHBvc2l0aXZlUmUpICYmICF0aGlzLl9pc01hdGNoVG9QYXR0ZXJucyhlbnRyeS5wYXRoLCBuZWdhdGl2ZVJlKTtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLnVuaXF1ZSAmJiBpc01hdGNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUluZGV4UmVjb3JkKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNNYXRjaGVkO1xuICAgIH1cbiAgICBfaXNEdXBsaWNhdGVFbnRyeShlbnRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleC5oYXMoZW50cnkucGF0aCk7XG4gICAgfVxuICAgIF9jcmVhdGVJbmRleFJlY29yZChlbnRyeSkge1xuICAgICAgICB0aGlzLmluZGV4LnNldChlbnRyeS5wYXRoLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBfb25seUZpbGVGaWx0ZXIoZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzLm9ubHlGaWxlcyAmJiAhZW50cnkuZGlyZW50LmlzRmlsZSgpO1xuICAgIH1cbiAgICBfb25seURpcmVjdG9yeUZpbHRlcihlbnRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3Mub25seURpcmVjdG9yaWVzICYmICFlbnRyeS5kaXJlbnQuaXNEaXJlY3RvcnkoKTtcbiAgICB9XG4gICAgX2lzU2tpcHBlZEJ5QWJzb2x1dGVOZWdhdGl2ZVBhdHRlcm5zKGVudHJ5UGF0aCwgcGF0dGVybnNSZSkge1xuICAgICAgICBpZiAoIXRoaXMuX3NldHRpbmdzLmFic29sdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZnVsbHBhdGggPSB1dGlscy5wYXRoLm1ha2VBYnNvbHV0ZSh0aGlzLl9zZXR0aW5ncy5jd2QsIGVudHJ5UGF0aCk7XG4gICAgICAgIHJldHVybiB1dGlscy5wYXR0ZXJuLm1hdGNoQW55KGZ1bGxwYXRoLCBwYXR0ZXJuc1JlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmlyc3QsIGp1c3QgdHJ5aW5nIHRvIGFwcGx5IHBhdHRlcm5zIHRvIHRoZSBwYXRoLlxuICAgICAqIFNlY29uZCwgdHJ5aW5nIHRvIGFwcGx5IHBhdHRlcm5zIHRvIHRoZSBwYXRoIHdpdGggZmluYWwgc2xhc2guXG4gICAgICovXG4gICAgX2lzTWF0Y2hUb1BhdHRlcm5zKGVudHJ5UGF0aCwgcGF0dGVybnNSZSkge1xuICAgICAgICBjb25zdCBmaWxlcGF0aCA9IHV0aWxzLnBhdGgucmVtb3ZlTGVhZGluZ0RvdFNlZ21lbnQoZW50cnlQYXRoKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZmlsZXBhdGgsIHBhdHRlcm5zUmUpIHx8IHV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZmlsZXBhdGggKyAnLycsIHBhdHRlcm5zUmUpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IEVudHJ5RmlsdGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi91dGlsc1wiKTtcbmNsYXNzIEVycm9yRmlsdGVyIHtcbiAgICBjb25zdHJ1Y3Rvcihfc2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgfVxuICAgIGdldEZpbHRlcigpIHtcbiAgICAgICAgcmV0dXJuIChlcnJvcikgPT4gdGhpcy5faXNOb25GYXRhbEVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgX2lzTm9uRmF0YWxFcnJvcihlcnJvcikge1xuICAgICAgICByZXR1cm4gdXRpbHMuZXJybm8uaXNFbm9lbnRDb2RlRXJyb3IoZXJyb3IpIHx8IHRoaXMuX3NldHRpbmdzLnN1cHByZXNzRXJyb3JzO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IEVycm9yRmlsdGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi91dGlsc1wiKTtcbmNsYXNzIEVudHJ5VHJhbnNmb3JtZXIge1xuICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICB9XG4gICAgZ2V0VHJhbnNmb3JtZXIoKSB7XG4gICAgICAgIHJldHVybiAoZW50cnkpID0+IHRoaXMuX3RyYW5zZm9ybShlbnRyeSk7XG4gICAgfVxuICAgIF90cmFuc2Zvcm0oZW50cnkpIHtcbiAgICAgICAgbGV0IGZpbGVwYXRoID0gZW50cnkucGF0aDtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLmFic29sdXRlKSB7XG4gICAgICAgICAgICBmaWxlcGF0aCA9IHV0aWxzLnBhdGgubWFrZUFic29sdXRlKHRoaXMuX3NldHRpbmdzLmN3ZCwgZmlsZXBhdGgpO1xuICAgICAgICAgICAgZmlsZXBhdGggPSB1dGlscy5wYXRoLnVuaXhpZnkoZmlsZXBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5tYXJrRGlyZWN0b3JpZXMgJiYgZW50cnkuZGlyZW50LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgIGZpbGVwYXRoICs9ICcvJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX3NldHRpbmdzLm9iamVjdE1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlcGF0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbnRyeSksIHsgcGF0aDogZmlsZXBhdGggfSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gRW50cnlUcmFuc2Zvcm1lcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuY29uc3QgZGVlcF8xID0gcmVxdWlyZShcIi4vZmlsdGVycy9kZWVwXCIpO1xuY29uc3QgZW50cnlfMSA9IHJlcXVpcmUoXCIuL2ZpbHRlcnMvZW50cnlcIik7XG5jb25zdCBlcnJvcl8xID0gcmVxdWlyZShcIi4vZmlsdGVycy9lcnJvclwiKTtcbmNvbnN0IGVudHJ5XzIgPSByZXF1aXJlKFwiLi90cmFuc2Zvcm1lcnMvZW50cnlcIik7XG5jbGFzcyBQcm92aWRlciB7XG4gICAgY29uc3RydWN0b3IoX3NldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xuICAgICAgICB0aGlzLmVycm9yRmlsdGVyID0gbmV3IGVycm9yXzEuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuZW50cnlGaWx0ZXIgPSBuZXcgZW50cnlfMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzLCB0aGlzLl9nZXRNaWNyb21hdGNoT3B0aW9ucygpKTtcbiAgICAgICAgdGhpcy5kZWVwRmlsdGVyID0gbmV3IGRlZXBfMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzLCB0aGlzLl9nZXRNaWNyb21hdGNoT3B0aW9ucygpKTtcbiAgICAgICAgdGhpcy5lbnRyeVRyYW5zZm9ybWVyID0gbmV3IGVudHJ5XzIuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgfVxuICAgIF9nZXRSb290RGlyZWN0b3J5KHRhc2spIHtcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLl9zZXR0aW5ncy5jd2QsIHRhc2suYmFzZSk7XG4gICAgfVxuICAgIF9nZXRSZWFkZXJPcHRpb25zKHRhc2spIHtcbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSB0YXNrLmJhc2UgPT09ICcuJyA/ICcnIDogdGFzay5iYXNlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmFzZVBhdGgsXG4gICAgICAgICAgICBwYXRoU2VnbWVudFNlcGFyYXRvcjogJy8nLFxuICAgICAgICAgICAgY29uY3VycmVuY3k6IHRoaXMuX3NldHRpbmdzLmNvbmN1cnJlbmN5LFxuICAgICAgICAgICAgZGVlcEZpbHRlcjogdGhpcy5kZWVwRmlsdGVyLmdldEZpbHRlcihiYXNlUGF0aCwgdGFzay5wb3NpdGl2ZSwgdGFzay5uZWdhdGl2ZSksXG4gICAgICAgICAgICBlbnRyeUZpbHRlcjogdGhpcy5lbnRyeUZpbHRlci5nZXRGaWx0ZXIodGFzay5wb3NpdGl2ZSwgdGFzay5uZWdhdGl2ZSksXG4gICAgICAgICAgICBlcnJvckZpbHRlcjogdGhpcy5lcnJvckZpbHRlci5nZXRGaWx0ZXIoKSxcbiAgICAgICAgICAgIGZvbGxvd1N5bWJvbGljTGlua3M6IHRoaXMuX3NldHRpbmdzLmZvbGxvd1N5bWJvbGljTGlua3MsXG4gICAgICAgICAgICBmczogdGhpcy5fc2V0dGluZ3MuZnMsXG4gICAgICAgICAgICBzdGF0czogdGhpcy5fc2V0dGluZ3Muc3RhdHMsXG4gICAgICAgICAgICB0aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbms6IHRoaXMuX3NldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluayxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdGhpcy5lbnRyeVRyYW5zZm9ybWVyLmdldFRyYW5zZm9ybWVyKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2dldE1pY3JvbWF0Y2hPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZG90OiB0aGlzLl9zZXR0aW5ncy5kb3QsXG4gICAgICAgICAgICBtYXRjaEJhc2U6IHRoaXMuX3NldHRpbmdzLmJhc2VOYW1lTWF0Y2gsXG4gICAgICAgICAgICBub2JyYWNlOiAhdGhpcy5fc2V0dGluZ3MuYnJhY2VFeHBhbnNpb24sXG4gICAgICAgICAgICBub2Nhc2U6ICF0aGlzLl9zZXR0aW5ncy5jYXNlU2Vuc2l0aXZlTWF0Y2gsXG4gICAgICAgICAgICBub2V4dDogIXRoaXMuX3NldHRpbmdzLmV4dGdsb2IsXG4gICAgICAgICAgICBub2dsb2JzdGFyOiAhdGhpcy5fc2V0dGluZ3MuZ2xvYnN0YXIsXG4gICAgICAgICAgICBwb3NpeDogdHJ1ZSxcbiAgICAgICAgICAgIHN0cmljdFNsYXNoZXM6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUHJvdmlkZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IHN0cmVhbV8xID0gcmVxdWlyZShcIi4uL3JlYWRlcnMvc3RyZWFtXCIpO1xuY29uc3QgcHJvdmlkZXJfMSA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVyXCIpO1xuY2xhc3MgUHJvdmlkZXJBc3luYyBleHRlbmRzIHByb3ZpZGVyXzEuZGVmYXVsdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX3JlYWRlciA9IG5ldyBzdHJlYW1fMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcbiAgICB9XG4gICAgcmVhZCh0YXNrKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9nZXRSb290RGlyZWN0b3J5KHRhc2spO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0UmVhZGVyT3B0aW9ucyh0YXNrKTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RyZWFtID0gdGhpcy5hcGkocm9vdCwgdGFzaywgb3B0aW9ucyk7XG4gICAgICAgICAgICBzdHJlYW0ub25jZSgnZXJyb3InLCByZWplY3QpO1xuICAgICAgICAgICAgc3RyZWFtLm9uKCdkYXRhJywgKGVudHJ5KSA9PiBlbnRyaWVzLnB1c2gob3B0aW9ucy50cmFuc2Zvcm0oZW50cnkpKSk7XG4gICAgICAgICAgICBzdHJlYW0ub25jZSgnZW5kJywgKCkgPT4gcmVzb2x2ZShlbnRyaWVzKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhcGkocm9vdCwgdGFzaywgb3B0aW9ucykge1xuICAgICAgICBpZiAodGFzay5keW5hbWljKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLmR5bmFtaWMocm9vdCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRlci5zdGF0aWModGFzay5wYXR0ZXJucywgb3B0aW9ucyk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUHJvdmlkZXJBc3luYztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuY29uc3Qgc3RyZWFtXzIgPSByZXF1aXJlKFwiLi4vcmVhZGVycy9zdHJlYW1cIik7XG5jb25zdCBwcm92aWRlcl8xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJcIik7XG5jbGFzcyBQcm92aWRlclN0cmVhbSBleHRlbmRzIHByb3ZpZGVyXzEuZGVmYXVsdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX3JlYWRlciA9IG5ldyBzdHJlYW1fMi5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcbiAgICB9XG4gICAgcmVhZCh0YXNrKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9nZXRSb290RGlyZWN0b3J5KHRhc2spO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0UmVhZGVyT3B0aW9ucyh0YXNrKTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5hcGkocm9vdCwgdGFzaywgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gbmV3IHN0cmVhbV8xLlJlYWRhYmxlKHsgb2JqZWN0TW9kZTogdHJ1ZSwgcmVhZDogKCkgPT4geyB9IH0pO1xuICAgICAgICBzb3VyY2VcbiAgICAgICAgICAgIC5vbmNlKCdlcnJvcicsIChlcnJvcikgPT4gZGVzdGluYXRpb24uZW1pdCgnZXJyb3InLCBlcnJvcikpXG4gICAgICAgICAgICAub24oJ2RhdGEnLCAoZW50cnkpID0+IGRlc3RpbmF0aW9uLmVtaXQoJ2RhdGEnLCBvcHRpb25zLnRyYW5zZm9ybShlbnRyeSkpKVxuICAgICAgICAgICAgLm9uY2UoJ2VuZCcsICgpID0+IGRlc3RpbmF0aW9uLmVtaXQoJ2VuZCcpKTtcbiAgICAgICAgZGVzdGluYXRpb25cbiAgICAgICAgICAgIC5vbmNlKCdjbG9zZScsICgpID0+IHNvdXJjZS5kZXN0cm95KCkpO1xuICAgICAgICByZXR1cm4gZGVzdGluYXRpb247XG4gICAgfVxuICAgIGFwaShyb290LCB0YXNrLCBvcHRpb25zKSB7XG4gICAgICAgIGlmICh0YXNrLmR5bmFtaWMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWFkZXIuZHluYW1pYyhyb290LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLnN0YXRpYyh0YXNrLnBhdHRlcm5zLCBvcHRpb25zKTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBQcm92aWRlclN0cmVhbTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgZnNTdGF0ID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnN0YXRcIik7XG5jb25zdCBmc1dhbGsgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMud2Fsa1wiKTtcbmNvbnN0IHJlYWRlcl8xID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xuY2xhc3MgUmVhZGVyU3luYyBleHRlbmRzIHJlYWRlcl8xLmRlZmF1bHQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLl93YWxrU3luYyA9IGZzV2Fsay53YWxrU3luYztcbiAgICAgICAgdGhpcy5fc3RhdFN5bmMgPSBmc1N0YXQuc3RhdFN5bmM7XG4gICAgfVxuICAgIGR5bmFtaWMocm9vdCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2Fsa1N5bmMocm9vdCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN0YXRpYyhwYXR0ZXJucywgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgICAgICAgICAgY29uc3QgZmlsZXBhdGggPSB0aGlzLl9nZXRGdWxsRW50cnlQYXRoKHBhdHRlcm4pO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9nZXRFbnRyeShmaWxlcGF0aCwgcGF0dGVybiwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoZW50cnkgPT09IG51bGwgfHwgIW9wdGlvbnMuZW50cnlGaWx0ZXIoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnRyaWVzO1xuICAgIH1cbiAgICBfZ2V0RW50cnkoZmlsZXBhdGgsIHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gdGhpcy5fZ2V0U3RhdChmaWxlcGF0aCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFrZUVudHJ5KHN0YXRzLCBwYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVycm9yRmlsdGVyKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2dldFN0YXQoZmlsZXBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRTeW5jKGZpbGVwYXRoLCB0aGlzLl9mc1N0YXRTZXR0aW5ncyk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUmVhZGVyU3luYztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3Qgc3luY18xID0gcmVxdWlyZShcIi4uL3JlYWRlcnMvc3luY1wiKTtcbmNvbnN0IHByb3ZpZGVyXzEgPSByZXF1aXJlKFwiLi9wcm92aWRlclwiKTtcbmNsYXNzIFByb3ZpZGVyU3luYyBleHRlbmRzIHByb3ZpZGVyXzEuZGVmYXVsdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX3JlYWRlciA9IG5ldyBzeW5jXzEuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgfVxuICAgIHJlYWQodGFzaykge1xuICAgICAgICBjb25zdCByb290ID0gdGhpcy5fZ2V0Um9vdERpcmVjdG9yeSh0YXNrKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldFJlYWRlck9wdGlvbnModGFzayk7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLmFwaShyb290LCB0YXNrLCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIGVudHJpZXMubWFwKG9wdGlvbnMudHJhbnNmb3JtKTtcbiAgICB9XG4gICAgYXBpKHJvb3QsIHRhc2ssIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHRhc2suZHluYW1pYykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRlci5keW5hbWljKHJvb3QsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkZXIuc3RhdGljKHRhc2sucGF0dGVybnMsIG9wdGlvbnMpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IFByb3ZpZGVyU3luYztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5ERUZBVUxUX0ZJTEVfU1lTVEVNX0FEQVBURVIgPSB2b2lkIDA7XG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbmNvbnN0IG9zID0gcmVxdWlyZShcIm9zXCIpO1xuLyoqXG4gKiBUaGUgYG9zLmNwdXNgIG1ldGhvZCBjYW4gcmV0dXJuIHplcm8uIFdlIGV4cGVjdCB0aGUgbnVtYmVyIG9mIGNvcmVzIHRvIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvN2ZhZWRkZjIzYTk4YzUzODk2ZjhiNTc0YTZlNjY1ODllOGZiMWViOC9saWIvb3MuanMjTDEwNi1MMTA3XG4gKi9cbmNvbnN0IENQVV9DT1VOVCA9IE1hdGgubWF4KG9zLmNwdXMoKS5sZW5ndGgsIDEpO1xuZXhwb3J0cy5ERUZBVUxUX0ZJTEVfU1lTVEVNX0FEQVBURVIgPSB7XG4gICAgbHN0YXQ6IGZzLmxzdGF0LFxuICAgIGxzdGF0U3luYzogZnMubHN0YXRTeW5jLFxuICAgIHN0YXQ6IGZzLnN0YXQsXG4gICAgc3RhdFN5bmM6IGZzLnN0YXRTeW5jLFxuICAgIHJlYWRkaXI6IGZzLnJlYWRkaXIsXG4gICAgcmVhZGRpclN5bmM6IGZzLnJlYWRkaXJTeW5jXG59O1xuY2xhc3MgU2V0dGluZ3Mge1xuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IF9vcHRpb25zO1xuICAgICAgICB0aGlzLmFic29sdXRlID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5hYnNvbHV0ZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmJhc2VOYW1lTWF0Y2ggPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmJhc2VOYW1lTWF0Y2gsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5icmFjZUV4cGFuc2lvbiA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuYnJhY2VFeHBhbnNpb24sIHRydWUpO1xuICAgICAgICB0aGlzLmNhc2VTZW5zaXRpdmVNYXRjaCA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuY2FzZVNlbnNpdGl2ZU1hdGNoLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jb25jdXJyZW5jeSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuY29uY3VycmVuY3ksIENQVV9DT1VOVCk7XG4gICAgICAgIHRoaXMuY3dkID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5jd2QsIHByb2Nlc3MuY3dkKCkpO1xuICAgICAgICB0aGlzLmRlZXAgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRlZXAsIEluZmluaXR5KTtcbiAgICAgICAgdGhpcy5kb3QgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRvdCwgZmFsc2UpO1xuICAgICAgICB0aGlzLmV4dGdsb2IgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmV4dGdsb2IsIHRydWUpO1xuICAgICAgICB0aGlzLmZvbGxvd1N5bWJvbGljTGlua3MgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmZvbGxvd1N5bWJvbGljTGlua3MsIHRydWUpO1xuICAgICAgICB0aGlzLmZzID0gdGhpcy5fZ2V0RmlsZVN5c3RlbU1ldGhvZHModGhpcy5fb3B0aW9ucy5mcyk7XG4gICAgICAgIHRoaXMuZ2xvYnN0YXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmdsb2JzdGFyLCB0cnVlKTtcbiAgICAgICAgdGhpcy5pZ25vcmUgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmlnbm9yZSwgW10pO1xuICAgICAgICB0aGlzLm1hcmtEaXJlY3RvcmllcyA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMubWFya0RpcmVjdG9yaWVzLCBmYWxzZSk7XG4gICAgICAgIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMub2JqZWN0TW9kZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLm9ubHlEaXJlY3RvcmllcyA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMub25seURpcmVjdG9yaWVzLCBmYWxzZSk7XG4gICAgICAgIHRoaXMub25seUZpbGVzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5vbmx5RmlsZXMsIHRydWUpO1xuICAgICAgICB0aGlzLnN0YXRzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdGF0cywgZmFsc2UpO1xuICAgICAgICB0aGlzLnN1cHByZXNzRXJyb3JzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdXBwcmVzc0Vycm9ycywgZmFsc2UpO1xuICAgICAgICB0aGlzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluayA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rLCBmYWxzZSk7XG4gICAgICAgIHRoaXMudW5pcXVlID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy51bmlxdWUsIHRydWUpO1xuICAgICAgICBpZiAodGhpcy5vbmx5RGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIHRoaXMub25seUZpbGVzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc3RhdHMpIHtcbiAgICAgICAgICAgIHRoaXMub2JqZWN0TW9kZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiA9PT0gdW5kZWZpbmVkID8gdmFsdWUgOiBvcHRpb247XG4gICAgfVxuICAgIF9nZXRGaWxlU3lzdGVtTWV0aG9kcyhtZXRob2RzID0ge30pIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXhwb3J0cy5ERUZBVUxUX0ZJTEVfU1lTVEVNX0FEQVBURVIpLCBtZXRob2RzKTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBTZXR0aW5ncztcbiIsIlwidXNlIHN0cmljdFwiO1xuY29uc3QgdGFza01hbmFnZXIgPSByZXF1aXJlKFwiLi9tYW5hZ2Vycy90YXNrc1wiKTtcbmNvbnN0IHBhdHRlcm5NYW5hZ2VyID0gcmVxdWlyZShcIi4vbWFuYWdlcnMvcGF0dGVybnNcIik7XG5jb25zdCBhc3luY18xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL2FzeW5jXCIpO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwiLi9wcm92aWRlcnMvc3RyZWFtXCIpO1xuY29uc3Qgc3luY18xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL3N5bmNcIik7XG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xuYXN5bmMgZnVuY3Rpb24gRmFzdEdsb2Ioc291cmNlLCBvcHRpb25zKSB7XG4gICAgYXNzZXJ0UGF0dGVybnNJbnB1dChzb3VyY2UpO1xuICAgIGNvbnN0IHdvcmtzID0gZ2V0V29ya3Moc291cmNlLCBhc3luY18xLmRlZmF1bHQsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKHdvcmtzKTtcbiAgICByZXR1cm4gdXRpbHMuYXJyYXkuZmxhdHRlbihyZXN1bHQpO1xufVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXNsaW50L2lzc3Vlcy82MFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxuKGZ1bmN0aW9uIChGYXN0R2xvYikge1xuICAgIGZ1bmN0aW9uIHN5bmMoc291cmNlLCBvcHRpb25zKSB7XG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcbiAgICAgICAgY29uc3Qgd29ya3MgPSBnZXRXb3Jrcyhzb3VyY2UsIHN5bmNfMS5kZWZhdWx0LCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLmFycmF5LmZsYXR0ZW4od29ya3MpO1xuICAgIH1cbiAgICBGYXN0R2xvYi5zeW5jID0gc3luYztcbiAgICBmdW5jdGlvbiBzdHJlYW0oc291cmNlLCBvcHRpb25zKSB7XG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcbiAgICAgICAgY29uc3Qgd29ya3MgPSBnZXRXb3Jrcyhzb3VyY2UsIHN0cmVhbV8xLmRlZmF1bHQsIG9wdGlvbnMpO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHN0cmVhbSByZXR1cm5lZCBieSB0aGUgcHJvdmlkZXIgY2Fubm90IHdvcmsgd2l0aCBhbiBhc3luY2hyb25vdXMgaXRlcmF0b3IuXG4gICAgICAgICAqIFRvIHN1cHBvcnQgYXN5bmNocm9ub3VzIGl0ZXJhdG9ycywgcmVnYXJkbGVzcyBvZiB0aGUgbnVtYmVyIG9mIHRhc2tzLCB3ZSBhbHdheXMgbXVsdGlwbGV4IHN0cmVhbXMuXG4gICAgICAgICAqIFRoaXMgYWZmZWN0cyBwZXJmb3JtYW5jZSAoKzI1JSkuIEkgZG9uJ3Qgc2VlIGJlc3Qgc29sdXRpb24gcmlnaHQgbm93LlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIHV0aWxzLnN0cmVhbS5tZXJnZSh3b3Jrcyk7XG4gICAgfVxuICAgIEZhc3RHbG9iLnN0cmVhbSA9IHN0cmVhbTtcbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVRhc2tzKHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgICBhc3NlcnRQYXR0ZXJuc0lucHV0KHNvdXJjZSk7XG4gICAgICAgIGNvbnN0IHBhdHRlcm5zID0gcGF0dGVybk1hbmFnZXIudHJhbnNmb3JtKFtdLmNvbmNhdChzb3VyY2UpKTtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSBuZXcgc2V0dGluZ3NfMS5kZWZhdWx0KG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGFza01hbmFnZXIuZ2VuZXJhdGUocGF0dGVybnMsIHNldHRpbmdzKTtcbiAgICB9XG4gICAgRmFzdEdsb2IuZ2VuZXJhdGVUYXNrcyA9IGdlbmVyYXRlVGFza3M7XG4gICAgZnVuY3Rpb24gaXNEeW5hbWljUGF0dGVybihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgICAgYXNzZXJ0UGF0dGVybnNJbnB1dChzb3VyY2UpO1xuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IG5ldyBzZXR0aW5nc18xLmRlZmF1bHQob3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB1dGlscy5wYXR0ZXJuLmlzRHluYW1pY1BhdHRlcm4oc291cmNlLCBzZXR0aW5ncyk7XG4gICAgfVxuICAgIEZhc3RHbG9iLmlzRHluYW1pY1BhdHRlcm4gPSBpc0R5bmFtaWNQYXR0ZXJuO1xuICAgIGZ1bmN0aW9uIGVzY2FwZVBhdGgoc291cmNlKSB7XG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnBhdGguZXNjYXBlKHNvdXJjZSk7XG4gICAgfVxuICAgIEZhc3RHbG9iLmVzY2FwZVBhdGggPSBlc2NhcGVQYXRoO1xufSkoRmFzdEdsb2IgfHwgKEZhc3RHbG9iID0ge30pKTtcbmZ1bmN0aW9uIGdldFdvcmtzKHNvdXJjZSwgX1Byb3ZpZGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgcGF0dGVybnMgPSBwYXR0ZXJuTWFuYWdlci50cmFuc2Zvcm0oW10uY29uY2F0KHNvdXJjZSkpO1xuICAgIGNvbnN0IHNldHRpbmdzID0gbmV3IHNldHRpbmdzXzEuZGVmYXVsdChvcHRpb25zKTtcbiAgICBjb25zdCB0YXNrcyA9IHRhc2tNYW5hZ2VyLmdlbmVyYXRlKHBhdHRlcm5zLCBzZXR0aW5ncyk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgX1Byb3ZpZGVyKHNldHRpbmdzKTtcbiAgICByZXR1cm4gdGFza3MubWFwKHByb3ZpZGVyLnJlYWQsIHByb3ZpZGVyKTtcbn1cbmZ1bmN0aW9uIGFzc2VydFBhdHRlcm5zSW5wdXQoaW5wdXQpIHtcbiAgICBjb25zdCBzb3VyY2UgPSBbXS5jb25jYXQoaW5wdXQpO1xuICAgIGNvbnN0IGlzVmFsaWRTb3VyY2UgPSBzb3VyY2UuZXZlcnkoKGl0ZW0pID0+IHV0aWxzLnN0cmluZy5pc1N0cmluZyhpdGVtKSAmJiAhdXRpbHMuc3RyaW5nLmlzRW1wdHkoaXRlbSkpO1xuICAgIGlmICghaXNWYWxpZFNvdXJjZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXR0ZXJucyBtdXN0IGJlIGEgc3RyaW5nIChub24gZW1wdHkpIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MnKTtcbiAgICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IEZhc3RHbG9iO1xuIiwiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHsgaXNOb2RlQnVpbHRpbiwgaXNWYWxpZE5vZGVJbXBvcnQgfSBmcm9tICdtbGx5J1xuaW1wb3J0IHR5cGUgeyBEZXBzSGFuZGxpbmdPcHRpb25zIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IHNsYXNoIH0gZnJvbSAnLi91dGlscydcblxuY29uc3QgRVNNX0VYVF9SRSA9IC9cXC4oZXN8ZXNtfGVzbS1icm93c2VyfGVzbS1idW5kbGVyfGVzNnxtb2R1bGUpXFwuanMkL1xuY29uc3QgRVNNX0ZPTERFUl9SRSA9IC9cXC9lc21cXC8oLipcXC5qcykkL1xuXG5jb25zdCBkZWZhdWx0SW5saW5lID0gW1xuICAvdmlydHVhbDovLFxuICAvXFwudHMkLyxcbiAgRVNNX0VYVF9SRSxcbiAgRVNNX0ZPTERFUl9SRSxcbl1cblxuY29uc3QgZGVwc0V4dGVybmFsID0gW1xuICAvXFwuY2pzXFwuanMkLyxcbiAgL1xcLm1qcyQvLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gZ3Vlc3NDSlN2ZXJzaW9uKGlkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoaWQubWF0Y2goRVNNX0VYVF9SRSkpIHtcbiAgICBmb3IgKGNvbnN0IGkgb2YgW1xuICAgICAgaWQucmVwbGFjZShFU01fRVhUX1JFLCAnLm1qcycpLFxuICAgICAgaWQucmVwbGFjZShFU01fRVhUX1JFLCAnLnVtZC5qcycpLFxuICAgICAgaWQucmVwbGFjZShFU01fRVhUX1JFLCAnLmNqcy5qcycpLFxuICAgICAgaWQucmVwbGFjZShFU01fRVhUX1JFLCAnLmpzJyksXG4gICAgXSkge1xuICAgICAgaWYgKGV4aXN0c1N5bmMoaSkpXG4gICAgICAgIHJldHVybiBpXG4gICAgfVxuICB9XG4gIGlmIChpZC5tYXRjaChFU01fRk9MREVSX1JFKSkge1xuICAgIGZvciAoY29uc3QgaSBvZiBbXG4gICAgICBpZC5yZXBsYWNlKEVTTV9GT0xERVJfUkUsICcvdW1kLyQxJyksXG4gICAgICBpZC5yZXBsYWNlKEVTTV9GT0xERVJfUkUsICcvY2pzLyQxJyksXG4gICAgICBpZC5yZXBsYWNlKEVTTV9GT0xERVJfUkUsICcvJDEnKSxcbiAgICBdKSB7XG4gICAgICBpZiAoZXhpc3RzU3luYyhpKSlcbiAgICAgICAgcmV0dXJuIGlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3VsZEV4dGVybmFsaXplKFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zPzogRGVwc0hhbmRsaW5nT3B0aW9ucyxcbiAgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxzdHJpbmcgfCBmYWxzZT4+KCksXG4pIHtcbiAgaWYgKCFjYWNoZS5oYXMoaWQpKVxuICAgIGNhY2hlLnNldChpZCwgX3Nob3VsZEV4dGVybmFsaXplKGlkLCBvcHRpb25zKSlcbiAgcmV0dXJuIGNhY2hlLmdldChpZCkhXG59XG5cbmFzeW5jIGZ1bmN0aW9uIF9zaG91bGRFeHRlcm5hbGl6ZShcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IERlcHNIYW5kbGluZ09wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZyB8IGZhbHNlPiB7XG4gIGlmIChpc05vZGVCdWlsdGluKGlkKSlcbiAgICByZXR1cm4gaWRcblxuICBpZCA9IHBhdGNoV2luZG93c0ltcG9ydFBhdGgoaWQpXG5cbiAgaWYgKG1hdGNoRXh0ZXJuYWxpemVQYXR0ZXJuKGlkLCBvcHRpb25zPy5pbmxpbmUpKVxuICAgIHJldHVybiBmYWxzZVxuICBpZiAobWF0Y2hFeHRlcm5hbGl6ZVBhdHRlcm4oaWQsIG9wdGlvbnM/LmV4dGVybmFsKSlcbiAgICByZXR1cm4gaWRcblxuICBjb25zdCBpc05vZGVNb2R1bGUgPSBpZC5pbmNsdWRlcygnL25vZGVfbW9kdWxlcy8nKVxuXG4gIGlkID0gaXNOb2RlTW9kdWxlID8gZ3Vlc3NDSlN2ZXJzaW9uKGlkKSB8fCBpZCA6IGlkXG5cbiAgaWYgKG1hdGNoRXh0ZXJuYWxpemVQYXR0ZXJuKGlkLCBkZWZhdWx0SW5saW5lKSlcbiAgICByZXR1cm4gZmFsc2VcbiAgaWYgKG1hdGNoRXh0ZXJuYWxpemVQYXR0ZXJuKGlkLCBkZXBzRXh0ZXJuYWwpKVxuICAgIHJldHVybiBpZFxuXG4gIGlmIChpc05vZGVNb2R1bGUgJiYgYXdhaXQgaXNWYWxpZE5vZGVJbXBvcnQoaWQpKVxuICAgIHJldHVybiBpZFxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBtYXRjaEV4dGVybmFsaXplUGF0dGVybihpZDogc3RyaW5nLCBwYXR0ZXJucz86IChzdHJpbmcgfCBSZWdFeHApW10pIHtcbiAgaWYgKCFwYXR0ZXJucylcbiAgICByZXR1cm4gZmFsc2VcbiAgZm9yIChjb25zdCBleCBvZiBwYXR0ZXJucykge1xuICAgIGlmICh0eXBlb2YgZXggPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoaWQuaW5jbHVkZXMoYC9ub2RlX21vZHVsZXMvJHtleH0vYCkpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYgKGV4LnRlc3QoaWQpKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGF0Y2hXaW5kb3dzSW1wb3J0UGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgaWYgKHBhdGgubWF0Y2goL15cXHc6XFxcXC8pKVxuICAgIHJldHVybiBgZmlsZTovLy8ke3NsYXNoKHBhdGgpfWBcbiAgZWxzZSBpZiAocGF0aC5tYXRjaCgvXlxcdzpcXC8vKSlcbiAgICByZXR1cm4gYGZpbGU6Ly8vJHtwYXRofWBcbiAgZWxzZVxuICAgIHJldHVybiBwYXRoXG59XG4iLCJpbXBvcnQgdHlwZSB7IFRyYW5zZm9ybVJlc3VsdCwgVml0ZURldlNlcnZlciB9IGZyb20gJ3ZpdGUnXG5pbXBvcnQgdHlwZSB7IEZldGNoUmVzdWx0LCBSYXdTb3VyY2VNYXAsIFZpdGVOb2RlUmVzb2x2ZUlkLCBWaXRlTm9kZVNlcnZlck9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgc2hvdWxkRXh0ZXJuYWxpemUgfSBmcm9tICcuL2V4dGVybmFsaXplJ1xuaW1wb3J0IHsgdG9GaWxlUGF0aCwgd2l0aElubGluZVNvdXJjZW1hcCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCAqIGZyb20gJy4vZXh0ZXJuYWxpemUnXG5cbmV4cG9ydCBjbGFzcyBWaXRlTm9kZVNlcnZlciB7XG4gIHByaXZhdGUgZmV0Y2hQcm9taXNlTWFwID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8RmV0Y2hSZXN1bHQ+PigpXG4gIHByaXZhdGUgdHJhbnNmb3JtUHJvbWlzZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPFRyYW5zZm9ybVJlc3VsdCB8IG51bGwgfCB1bmRlZmluZWQ+PigpXG5cbiAgZmV0Y2hDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCB7XG4gICAgdGltZXN0YW1wOiBudW1iZXJcbiAgICByZXN1bHQ6IEZldGNoUmVzdWx0XG4gIH0+KClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmVyOiBWaXRlRGV2U2VydmVyLFxuICAgIHB1YmxpYyBvcHRpb25zOiBWaXRlTm9kZVNlcnZlck9wdGlvbnMgPSB7fSxcbiAgKSB7fVxuXG4gIHNob3VsZEV4dGVybmFsaXplKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc2hvdWxkRXh0ZXJuYWxpemUoaWQsIHRoaXMub3B0aW9ucy5kZXBzKVxuICB9XG5cbiAgYXN5bmMgcmVzb2x2ZUlkKGlkOiBzdHJpbmcsIGltcG9ydGVyPzogc3RyaW5nKTogUHJvbWlzZTxWaXRlTm9kZVJlc29sdmVJZCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXIucGx1Z2luQ29udGFpbmVyLnJlc29sdmVJZChpZCwgaW1wb3J0ZXIsIHsgc3NyOiB0cnVlIH0pXG4gIH1cblxuICBhc3luYyBmZXRjaE1vZHVsZShpZDogc3RyaW5nKTogUHJvbWlzZTxGZXRjaFJlc3VsdD4ge1xuICAgIC8vIHJldXNlIHRyYW5zZm9ybSBmb3IgY29uY3VycmVudCByZXF1ZXN0c1xuICAgIGlmICghdGhpcy5mZXRjaFByb21pc2VNYXAuaGFzKGlkKSkge1xuICAgICAgdGhpcy5mZXRjaFByb21pc2VNYXAuc2V0KGlkLFxuICAgICAgICB0aGlzLl9mZXRjaE1vZHVsZShpZClcbiAgICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zb3VyY2VtYXAgIT09IHRydWUgPyB7IC4uLnIsIG1hcDogdW5kZWZpbmVkIH0gOiByXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZldGNoUHJvbWlzZU1hcC5kZWxldGUoaWQpXG4gICAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZldGNoUHJvbWlzZU1hcC5nZXQoaWQpIVxuICB9XG5cbiAgYXN5bmMgdHJhbnNmb3JtUmVxdWVzdChpZDogc3RyaW5nKSB7XG4gICAgLy8gcmV1c2UgdHJhbnNmb3JtIGZvciBjb25jdXJyZW50IHJlcXVlc3RzXG4gICAgaWYgKCF0aGlzLnRyYW5zZm9ybVByb21pc2VNYXAuaGFzKGlkKSkge1xuICAgICAgdGhpcy50cmFuc2Zvcm1Qcm9taXNlTWFwLnNldChpZCxcbiAgICAgICAgdGhpcy5fdHJhbnNmb3JtUmVxdWVzdChpZClcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zZm9ybVByb21pc2VNYXAuZGVsZXRlKGlkKVxuICAgICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Qcm9taXNlTWFwLmdldChpZCkhXG4gIH1cblxuICBnZXRUcmFuc2Zvcm1Nb2RlKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCB3aXRob3V0UXVlcnkgPSBpZC5zcGxpdCgnPycpWzBdXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnRyYW5zZm9ybU1vZGU/LndlYj8uc29tZShyID0+IHdpdGhvdXRRdWVyeS5tYXRjaChyKSkpXG4gICAgICByZXR1cm4gJ3dlYidcbiAgICBpZiAodGhpcy5vcHRpb25zLnRyYW5zZm9ybU1vZGU/LnNzcj8uc29tZShyID0+IHdpdGhvdXRRdWVyeS5tYXRjaChyKSkpXG4gICAgICByZXR1cm4gJ3NzcidcblxuICAgIGlmICh3aXRob3V0UXVlcnkubWF0Y2goL1xcLihbY21dP1tqdF1zeD98anNvbikkLykpXG4gICAgICByZXR1cm4gJ3NzcidcbiAgICByZXR1cm4gJ3dlYidcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2ZldGNoTW9kdWxlKGlkOiBzdHJpbmcpOiBQcm9taXNlPEZldGNoUmVzdWx0PiB7XG4gICAgbGV0IHJlc3VsdDogRmV0Y2hSZXN1bHRcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdG9GaWxlUGF0aChpZCwgdGhpcy5zZXJ2ZXIuY29uZmlnLnJvb3QpXG5cbiAgICBjb25zdCBtb2R1bGUgPSB0aGlzLnNlcnZlci5tb2R1bGVHcmFwaC5nZXRNb2R1bGVCeUlkKGlkKVxuICAgIGNvbnN0IHRpbWVzdGFtcCA9IG1vZHVsZT8ubGFzdEhNUlRpbWVzdGFtcCB8fCBEYXRlLm5vdygpXG4gICAgY29uc3QgY2FjaGUgPSB0aGlzLmZldGNoQ2FjaGUuZ2V0KGZpbGVQYXRoKVxuICAgIGlmICh0aW1lc3RhbXAgJiYgY2FjaGUgJiYgY2FjaGUudGltZXN0YW1wID49IHRpbWVzdGFtcClcbiAgICAgIHJldHVybiBjYWNoZS5yZXN1bHRcblxuICAgIGNvbnN0IGV4dGVybmFsaXplID0gYXdhaXQgdGhpcy5zaG91bGRFeHRlcm5hbGl6ZShmaWxlUGF0aClcbiAgICBpZiAoZXh0ZXJuYWxpemUpIHtcbiAgICAgIHJlc3VsdCA9IHsgZXh0ZXJuYWxpemUgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHIgPSBhd2FpdCB0aGlzLl90cmFuc2Zvcm1SZXF1ZXN0KGlkKVxuICAgICAgcmVzdWx0ID0geyBjb2RlOiByPy5jb2RlLCBtYXA6IHI/Lm1hcCBhcyB1bmtub3duIGFzIFJhd1NvdXJjZU1hcCB9XG4gICAgfVxuXG4gICAgdGhpcy5mZXRjaENhY2hlLnNldChmaWxlUGF0aCwge1xuICAgICAgdGltZXN0YW1wLFxuICAgICAgcmVzdWx0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF90cmFuc2Zvcm1SZXF1ZXN0KGlkOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzdWx0OiBUcmFuc2Zvcm1SZXN1bHQgfCBudWxsID0gbnVsbFxuXG4gICAgaWYgKHRoaXMuZ2V0VHJhbnNmb3JtTW9kZShpZCkgPT09ICd3ZWInKSB7XG4gICAgICAvLyBmb3IgY29tcG9uZW50cyBsaWtlIFZ1ZSwgd2Ugd2FudCB0byB1c2UgdGhlIGNsaWVudCBzaWRlXG4gICAgICAvLyBwbHVnaW5zIGJ1dCB0aGVuIGNvdmVydCB0aGUgY29kZSB0byBiZSBjb25zdW1lZCBieSB0aGUgc2VydmVyXG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnNlcnZlci50cmFuc2Zvcm1SZXF1ZXN0KGlkKVxuICAgICAgaWYgKHJlc3VsdClcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZXJ2ZXIuc3NyVHJhbnNmb3JtKHJlc3VsdC5jb2RlLCByZXN1bHQubWFwLCBpZClcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnNlcnZlci50cmFuc2Zvcm1SZXF1ZXN0KGlkLCB7IHNzcjogdHJ1ZSB9KVxuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZW1hcCA9IHRoaXMub3B0aW9ucy5zb3VyY2VtYXAgPz8gJ2lubGluZSdcbiAgICBpZiAoc291cmNlbWFwID09PSAnaW5saW5lJyAmJiByZXN1bHQgJiYgIWlkLmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSlcbiAgICAgIHdpdGhJbmxpbmVTb3VyY2VtYXAocmVzdWx0KVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFJlc29sdmVkQ29uZmlnLCBTbmFwc2hvdFJlc3VsdCwgU25hcHNob3RTdGF0ZU9wdGlvbnMsIFNuYXBzaG90U3VtbWFyeSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5leHBvcnQgY2xhc3MgU25hcHNob3RNYW5hZ2VyIHtcbiAgc3VtbWFyeTogU25hcHNob3RTdW1tYXJ5ID0gdW5kZWZpbmVkIVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFJlc29sdmVkQ29uZmlnKSB7XG4gICAgdGhpcy5jbGVhcigpXG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnN1bW1hcnkgPSBlbXB0eVN1bW1hcnkodGhpcy5jb25maWcuc25hcHNob3RPcHRpb25zKVxuICB9XG5cbiAgYWRkKHJlc3VsdDogU25hcHNob3RSZXN1bHQpIHtcbiAgICBhZGRTbmFwc2hvdFJlc3VsdCh0aGlzLnN1bW1hcnksIHJlc3VsdClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW1wdHlTdW1tYXJ5KG9wdGlvbnM6IFNuYXBzaG90U3RhdGVPcHRpb25zKTogU25hcHNob3RTdW1tYXJ5IHtcbiAgY29uc3Qgc3VtbWFyeSA9IHtcbiAgICBhZGRlZDogMCxcbiAgICBmYWlsdXJlOiBmYWxzZSxcbiAgICBmaWxlc0FkZGVkOiAwLFxuICAgIGZpbGVzUmVtb3ZlZDogMCxcbiAgICBmaWxlc1JlbW92ZWRMaXN0OiBbXSxcbiAgICBmaWxlc1VubWF0Y2hlZDogMCxcbiAgICBmaWxlc1VwZGF0ZWQ6IDAsXG4gICAgbWF0Y2hlZDogMCxcbiAgICB0b3RhbDogMCxcbiAgICB1bmNoZWNrZWQ6IDAsXG4gICAgdW5jaGVja2VkS2V5c0J5RmlsZTogW10sXG4gICAgdW5tYXRjaGVkOiAwLFxuICAgIHVwZGF0ZWQ6IDAsXG4gICAgZGlkVXBkYXRlOiBvcHRpb25zLnVwZGF0ZVNuYXBzaG90ID09PSAnYWxsJyxcbiAgfVxuICByZXR1cm4gc3VtbWFyeVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkU25hcHNob3RSZXN1bHQoc3VtbWFyeTogU25hcHNob3RTdW1tYXJ5LCByZXN1bHQ6IFNuYXBzaG90UmVzdWx0KTogdm9pZCB7XG4gIGlmIChyZXN1bHQuYWRkZWQpXG4gICAgc3VtbWFyeS5maWxlc0FkZGVkKytcbiAgaWYgKHJlc3VsdC5maWxlRGVsZXRlZClcbiAgICBzdW1tYXJ5LmZpbGVzUmVtb3ZlZCsrXG4gIGlmIChyZXN1bHQudW5tYXRjaGVkKVxuICAgIHN1bW1hcnkuZmlsZXNVbm1hdGNoZWQrK1xuICBpZiAocmVzdWx0LnVwZGF0ZWQpXG4gICAgc3VtbWFyeS5maWxlc1VwZGF0ZWQrK1xuXG4gIHN1bW1hcnkuYWRkZWQgKz0gcmVzdWx0LmFkZGVkXG4gIHN1bW1hcnkubWF0Y2hlZCArPSByZXN1bHQubWF0Y2hlZFxuICBzdW1tYXJ5LnVuY2hlY2tlZCArPSByZXN1bHQudW5jaGVja2VkXG4gIGlmIChyZXN1bHQudW5jaGVja2VkS2V5cyAmJiByZXN1bHQudW5jaGVja2VkS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgc3VtbWFyeS51bmNoZWNrZWRLZXlzQnlGaWxlLnB1c2goe1xuICAgICAgZmlsZVBhdGg6IHJlc3VsdC5maWxlcGF0aCxcbiAgICAgIGtleXM6IHJlc3VsdC51bmNoZWNrZWRLZXlzLFxuICAgIH0pXG4gIH1cblxuICBzdW1tYXJ5LnVubWF0Y2hlZCArPSByZXN1bHQudW5tYXRjaGVkXG4gIHN1bW1hcnkudXBkYXRlZCArPSByZXN1bHQudXBkYXRlZFxuICBzdW1tYXJ5LnRvdGFsICs9IHJlc3VsdC5hZGRlZCArIHJlc3VsdC5tYXRjaGVkICsgcmVzdWx0LnVubWF0Y2hlZCArIHJlc3VsdC51cGRhdGVkXG59XG4iLCJpbXBvcnQgeyBleGlzdHNTeW5jLCBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gJ21vZHVsZSdcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICd1cmwnXG5pbXBvcnQgdHlwZSB7IFByb2ZpbGVyIH0gZnJvbSAnaW5zcGVjdG9yJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBSYXdTb3VyY2VNYXAgfSBmcm9tICd2aXRlLW5vZGUnXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4uL25vZGUnXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEM4T3B0aW9ucywgUmVzb2x2ZWRDOE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGNvdmVyYWdlQ29uZmlnRGVmYXVsdHMgfSBmcm9tICcuLi9jb25zdGFudHMnXG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQzhPcHRpb25zKG9wdGlvbnM6IEM4T3B0aW9ucywgcm9vdDogc3RyaW5nKTogUmVzb2x2ZWRDOE9wdGlvbnMge1xuICBjb25zdCByZXNvbHZlZDogUmVzb2x2ZWRDOE9wdGlvbnMgPSB7XG4gICAgLi4uY292ZXJhZ2VDb25maWdEZWZhdWx0cyxcbiAgICAuLi5vcHRpb25zIGFzIGFueSxcbiAgfVxuXG4gIHJlc29sdmVkLnJlcG9ydGVyID0gdG9BcnJheShyZXNvbHZlZC5yZXBvcnRlcilcbiAgcmVzb2x2ZWQucmVwb3J0c0RpcmVjdG9yeSA9IHJlc29sdmUocm9vdCwgcmVzb2x2ZWQucmVwb3J0c0RpcmVjdG9yeSlcbiAgcmVzb2x2ZWQudGVtcERpcmVjdG9yeSA9IHByb2Nlc3MuZW52Lk5PREVfVjhfQ09WRVJBR0UgfHwgcmVzb2x2ZShyZXNvbHZlZC5yZXBvcnRzRGlyZWN0b3J5LCAndG1wJylcblxuICByZXR1cm4gcmVzb2x2ZWQgYXMgUmVzb2x2ZWRDOE9wdGlvbnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsZWFuQ292ZXJhZ2Uob3B0aW9uczogUmVzb2x2ZWRDOE9wdGlvbnMsIGNsZWFuID0gdHJ1ZSkge1xuICBpZiAoY2xlYW4gJiYgZXhpc3RzU3luYyhvcHRpb25zLnJlcG9ydHNEaXJlY3RvcnkpKVxuICAgIGF3YWl0IGZzLnJtKG9wdGlvbnMucmVwb3J0c0RpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG5cbiAgaWYgKCFleGlzdHNTeW5jKG9wdGlvbnMudGVtcERpcmVjdG9yeSkpXG4gICAgYXdhaXQgZnMubWtkaXIob3B0aW9ucy50ZW1wRGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxufVxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBvcnRDb3ZlcmFnZShjdHg6IFZpdGVzdCkge1xuICAvLyBGbHVzaCBjb3ZlcmFnZSB0byBkaXNrXG4gIGNvbnN0IHY4ID0gcmVxdWlyZSgndjgnKVxuICBpZiAodjgudGFrZUNvdmVyYWdlID09IG51bGwpXG4gICAgY29uc29sZS53YXJuKCdbVml0ZXN0XSB0YWtlQ292ZXJhZ2UgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIE5vZGVKcyB2ZXJzaW9uLlxcbkNvdmVyYWdlIGNvdWxkIGJlIGluY29tcGxldGUuIFVwZGF0ZSB0byBOb2RlSnMgMTQuMTguJylcbiAgZWxzZVxuICAgIHY4LnRha2VDb3ZlcmFnZSgpXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgY29uc3QgY3JlYXRlUmVwb3J0ID0gcmVxdWlyZSgnYzgvbGliL3JlcG9ydCcpXG4gIGNvbnN0IHJlcG9ydCA9IGNyZWF0ZVJlcG9ydChjdHguY29uZmlnLmNvdmVyYWdlKVxuXG4gIC8vIGFkZCBzb3VyY2UgbWFwc1xuICBjb25zdCBzb3VyY2VNYXBNYXRhOiBSZWNvcmQ8c3RyaW5nLCB7IG1hcDogUmF3U291cmNlTWFwOyBzb3VyY2U6IHN0cmluZyB8IHVuZGVmaW5lZCB9PiA9IHt9XG4gIGF3YWl0IFByb21pc2UuYWxsKEFycmF5XG4gICAgLmZyb20oY3R4LnZpdGVub2RlLmZldGNoQ2FjaGUuZW50cmllcygpKVxuICAgIC5maWx0ZXIoaSA9PiAhaVswXS5pbmNsdWRlcygnL25vZGVfbW9kdWxlcy8nKSlcbiAgICAubWFwKGFzeW5jKFtmaWxlLCB7IHJlc3VsdCB9XSkgPT4ge1xuICAgICAgY29uc3QgbWFwID0gcmVzdWx0Lm1hcFxuICAgICAgaWYgKCFtYXApXG4gICAgICAgIHJldHVyblxuXG4gICAgICBjb25zdCB1cmwgPSBwYXRoVG9GaWxlVVJMKGZpbGUpLmhyZWZcblxuICAgICAgbGV0IGNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29kZSA9IChhd2FpdCBmcy5yZWFkRmlsZShmaWxlKSkudG9TdHJpbmcoKVxuICAgICAgfVxuICAgICAgY2F0Y2gge31cblxuICAgICAgLy8gVml0ZSBkb2VzIG5vdCByZXBvcnQgZnVsbCBwYXRoIGluIHNvdXJjZW1hcCBzb3VyY2VzXG4gICAgICAvLyBzbyB1c2UgYW4gYWN0dWFsIGZpbGUgcGF0aFxuICAgICAgY29uc3Qgc291cmNlcyA9IFt1cmxdXG5cbiAgICAgIHNvdXJjZU1hcE1hdGFbdXJsXSA9IHtcbiAgICAgICAgc291cmNlOiByZXN1bHQuY29kZSxcbiAgICAgICAgbWFwOiB7XG4gICAgICAgICAgc291cmNlc0NvbnRlbnQ6IGNvZGUgPyBbY29kZV0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgLi4ubWFwLFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfSkpXG5cbiAgLy8gVGhpcyBpcyBhIG1hZ2ljIG51bWJlci4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGFtb3VudCBvZiBjb2RlXG4gIC8vIHRoYXQgd2UgYWRkIGluIHBhY2thZ2VzL3ZpdGUtbm9kZS9zcmMvY2xpZW50LnRzOjExNCAodm0ucnVuSW5UaGlzQ29udGV4dClcbiAgLy8gVE9ETzogSW5jbHVkZSBvdXIgdHJhbnNmb3JtYXRpb25zIGluIHNvdWNlbWFwc1xuICBjb25zdCBvZmZzZXQgPSAxOTBcblxuICByZXBvcnQuX2dldFNvdXJjZU1hcCA9IChjb3ZlcmFnZTogUHJvZmlsZXIuU2NyaXB0Q292ZXJhZ2UpID0+IHtcbiAgICBjb25zdCBwYXRoID0gcGF0aFRvRmlsZVVSTChjb3ZlcmFnZS51cmwpLmhyZWZcbiAgICBjb25zdCBkYXRhID0gc291cmNlTWFwTWF0YVtwYXRoXVxuXG4gICAgaWYgKCFkYXRhKVxuICAgICAgcmV0dXJuIHt9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlTWFwOiB7XG4gICAgICAgIHNvdXJjZW1hcDogZGF0YS5tYXAsXG4gICAgICB9LFxuICAgICAgc291cmNlOiBBcnJheShvZmZzZXQpLmZpbGwoJy4nKS5qb2luKCcnKSArIGRhdGEuc291cmNlLFxuICAgIH1cbiAgfVxuXG4gIGF3YWl0IHJlcG9ydC5ydW4oKVxufVxuIiwiaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGlzQWJzb2x1dGUsIHJlbGF0aXZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgYyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IHN0cmlwQW5zaSBmcm9tICdzdHJpcC1hbnNpJ1xuaW1wb3J0IHR5cGUgeyBTbmFwc2hvdFN1bW1hcnksIFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IHNsYXNoIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBGX0NIRUNLLCBGX0NST1NTLCBGX0RPVCwgRl9ET1dOLCBGX0RPV05fUklHSFQsIEZfTE9OR19EQVNILCBGX1BPSU5URVIgfSBmcm9tICcuL2ZpZ3VyZXMnXG5cbmV4cG9ydCBjb25zdCBzcGlubmVyTWFwID0gbmV3IFdlYWtNYXA8VGFzaywgKCkgPT4gc3RyaW5nPigpXG5leHBvcnQgY29uc3QgcG9pbnRlciA9IGMueWVsbG93KEZfUE9JTlRFUilcbmV4cG9ydCBjb25zdCBza2lwcGVkID0gYy5kaW0oYy5ncmF5KEZfRE9XTikpXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xzKGRlbHRhID0gMCkge1xuICBsZXQgbGVuZ3RoID0gcHJvY2Vzcy5zdGRvdXQuY29sdW1uc1xuICBpZiAoIWxlbmd0aCB8fCBpc05hTihsZW5ndGgpKVxuICAgIGxlbmd0aCA9IDMwXG4gIHJldHVybiBNYXRoLm1heChsZW5ndGggKyBkZWx0YSwgMClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZXIodGV4dD86IHN0cmluZywgbGVmdD86IG51bWJlciwgcmlnaHQ/OiBudW1iZXIpIHtcbiAgY29uc3QgY29scyA9IGdldENvbHMoKVxuXG4gIGlmICh0ZXh0KSB7XG4gICAgY29uc3QgdGV4dExlbmd0aCA9IHN0cmlwQW5zaSh0ZXh0KS5sZW5ndGhcbiAgICBpZiAobGVmdCA9PSBudWxsICYmIHJpZ2h0ICE9IG51bGwpIHtcbiAgICAgIGxlZnQgPSBjb2xzIC0gdGV4dExlbmd0aCAtIHJpZ2h0XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbGVmdCA9IGxlZnQgPz8gTWF0aC5mbG9vcigoY29scyAtIHRleHRMZW5ndGgpIC8gMilcbiAgICAgIHJpZ2h0ID0gY29scyAtIHRleHRMZW5ndGggLSBsZWZ0XG4gICAgfVxuICAgIGxlZnQgPSBNYXRoLm1heCgwLCBsZWZ0KVxuICAgIHJpZ2h0ID0gTWF0aC5tYXgoMCwgcmlnaHQpXG4gICAgcmV0dXJuIGAke0ZfTE9OR19EQVNILnJlcGVhdChsZWZ0KX0ke3RleHR9JHtGX0xPTkdfREFTSC5yZXBlYXQocmlnaHQpfWBcbiAgfVxuICByZXR1cm4gRl9MT05HX0RBU0gucmVwZWF0KGNvbHMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUZXN0UGF0aChyb290OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBpZiAoaXNBYnNvbHV0ZShwYXRoKSlcbiAgICBwYXRoID0gcmVsYXRpdmUocm9vdCwgcGF0aClcblxuICBjb25zdCBkaXIgPSBkaXJuYW1lKHBhdGgpXG4gIGNvbnN0IGV4dCA9IHBhdGgubWF0Y2goLyhcXC4oc3BlY3x0ZXN0KVxcLltjbV0/W3RqXXN4PykkLyk/LlswXSB8fCAnJ1xuICBjb25zdCBiYXNlID0gYmFzZW5hbWUocGF0aCwgZXh0KVxuXG4gIHJldHVybiBzbGFzaChjLmRpbShgJHtkaXJ9L2ApICsgYy5ib2xkKGJhc2UpKSArIGMuZGltKGV4dClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclNuYXBzaG90U3VtbWFyeShyb290RGlyOiBzdHJpbmcsIHNuYXBzaG90czogU25hcHNob3RTdW1tYXJ5KSB7XG4gIGNvbnN0IHN1bW1hcnk6IHN0cmluZ1tdID0gW11cblxuICBpZiAoc25hcHNob3RzLmFkZGVkKVxuICAgIHN1bW1hcnkucHVzaChjLmJvbGQoYy5ncmVlbihgJHtzbmFwc2hvdHMuYWRkZWR9IHdyaXR0ZW5gKSkpXG4gIGlmIChzbmFwc2hvdHMudW5tYXRjaGVkKVxuICAgIHN1bW1hcnkucHVzaChjLmJvbGQoYy5yZWQoYCR7c25hcHNob3RzLnVubWF0Y2hlZH0gZmFpbGVkYCkpKVxuICBpZiAoc25hcHNob3RzLnVwZGF0ZWQpXG4gICAgc3VtbWFyeS5wdXNoKGMuYm9sZChjLmdyZWVuKGAke3NuYXBzaG90cy51cGRhdGVkfSB1cGRhdGVkIGApKSlcblxuICBpZiAoc25hcHNob3RzLmZpbGVzUmVtb3ZlZCkge1xuICAgIGlmIChzbmFwc2hvdHMuZGlkVXBkYXRlKVxuICAgICAgc3VtbWFyeS5wdXNoKGMuYm9sZChjLmdyZWVuKGAke3NuYXBzaG90cy5maWxlc1JlbW92ZWR9IGZpbGVzIHJlbW92ZWQgYCkpKVxuXG4gICAgZWxzZVxuICAgICAgc3VtbWFyeS5wdXNoKGMuYm9sZChjLnllbGxvdyhgJHtzbmFwc2hvdHMuZmlsZXNSZW1vdmVkfSBmaWxlcyBvYnNvbGV0ZSBgKSkpXG4gIH1cblxuICBpZiAoc25hcHNob3RzLmZpbGVzUmVtb3ZlZExpc3QgJiYgc25hcHNob3RzLmZpbGVzUmVtb3ZlZExpc3QubGVuZ3RoKSB7XG4gICAgY29uc3QgW2hlYWQsIC4uLnRhaWxdID0gc25hcHNob3RzLmZpbGVzUmVtb3ZlZExpc3RcbiAgICBzdW1tYXJ5LnB1c2goYCR7Yy5ncmF5KEZfRE9XTl9SSUdIVCl9ICR7Zm9ybWF0VGVzdFBhdGgocm9vdERpciwgaGVhZCl9YClcblxuICAgIHRhaWwuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBzdW1tYXJ5LnB1c2goYCAgJHtjLmdyYXkoRl9ET1QpfSAke2Zvcm1hdFRlc3RQYXRoKHJvb3REaXIsIGtleSl9YClcbiAgICB9KVxuICB9XG5cbiAgaWYgKHNuYXBzaG90cy51bmNoZWNrZWQpIHtcbiAgICBpZiAoc25hcHNob3RzLmRpZFVwZGF0ZSlcbiAgICAgIHN1bW1hcnkucHVzaChjLmJvbGQoYy5ncmVlbihgJHtzbmFwc2hvdHMudW5jaGVja2VkfSByZW1vdmVkYCkpKVxuXG4gICAgZWxzZVxuICAgICAgc3VtbWFyeS5wdXNoKGMuYm9sZChjLnllbGxvdyhgJHtzbmFwc2hvdHMudW5jaGVja2VkfSBvYnNvbGV0ZWApKSlcblxuICAgIHNuYXBzaG90cy51bmNoZWNrZWRLZXlzQnlGaWxlLmZvckVhY2goKHVuY2hlY2tlZEZpbGUpID0+IHtcbiAgICAgIHN1bW1hcnkucHVzaChgJHtjLmdyYXkoRl9ET1dOX1JJR0hUKX0gJHtmb3JtYXRUZXN0UGF0aChyb290RGlyLCB1bmNoZWNrZWRGaWxlLmZpbGVQYXRoKX1gKVxuICAgICAgdW5jaGVja2VkRmlsZS5rZXlzLmZvckVhY2goa2V5ID0+IHN1bW1hcnkucHVzaChgICAke2MuZ3JheShGX0RPVCl9ICR7a2V5fWApKVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gc3VtbWFyeVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGVTdHJpbmcodGFza3M6IFRhc2tbXSwgbmFtZSA9ICd0ZXN0cycpIHtcbiAgaWYgKHRhc2tzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gYy5kaW0oYG5vICR7bmFtZX1gKVxuXG4gIGNvbnN0IHBhc3NlZCA9IHRhc2tzLmZpbHRlcihpID0+IGkucmVzdWx0Py5zdGF0ZSA9PT0gJ3Bhc3MnKVxuICBjb25zdCBmYWlsZWQgPSB0YXNrcy5maWx0ZXIoaSA9PiBpLnJlc3VsdD8uc3RhdGUgPT09ICdmYWlsJylcbiAgY29uc3Qgc2tpcHBlZCA9IHRhc2tzLmZpbHRlcihpID0+IGkubW9kZSA9PT0gJ3NraXAnKVxuICBjb25zdCB0b2RvID0gdGFza3MuZmlsdGVyKGkgPT4gaS5tb2RlID09PSAndG9kbycpXG5cbiAgcmV0dXJuIFtcbiAgICBmYWlsZWQubGVuZ3RoID8gYy5ib2xkKGMucmVkKGAke2ZhaWxlZC5sZW5ndGh9IGZhaWxlZGApKSA6IG51bGwsXG4gICAgcGFzc2VkLmxlbmd0aCA/IGMuYm9sZChjLmdyZWVuKGAke3Bhc3NlZC5sZW5ndGh9IHBhc3NlZGApKSA6IG51bGwsXG4gICAgc2tpcHBlZC5sZW5ndGggPyBjLnllbGxvdyhgJHtza2lwcGVkLmxlbmd0aH0gc2tpcHBlZGApIDogbnVsbCxcbiAgICB0b2RvLmxlbmd0aCA/IGMuZ3JheShgJHt0b2RvLmxlbmd0aH0gdG9kb2ApIDogbnVsbCxcbiAgXS5maWx0ZXIoQm9vbGVhbikuam9pbihjLmRpbSgnIHwgJykpICsgYy5ncmF5KGAgKCR7dGFza3MubGVuZ3RofSlgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGVTeW1ib2wodGFzazogVGFzaykge1xuICBpZiAodGFzay5tb2RlID09PSAnc2tpcCcgfHwgdGFzay5tb2RlID09PSAndG9kbycpXG4gICAgcmV0dXJuIHNraXBwZWRcblxuICBpZiAoIXRhc2sucmVzdWx0KVxuICAgIHJldHVybiBjLmdyYXkoJ8K3JylcblxuICAvLyBwZW5kaW5nXG4gIGlmICh0YXNrLnJlc3VsdC5zdGF0ZSA9PT0gJ3J1bicpIHtcbiAgICBpZiAodGFzay50eXBlID09PSAnc3VpdGUnKVxuICAgICAgcmV0dXJuIHBvaW50ZXJcbiAgICBsZXQgc3Bpbm5lciA9IHNwaW5uZXJNYXAuZ2V0KHRhc2spXG4gICAgaWYgKCFzcGlubmVyKSB7XG4gICAgICBzcGlubmVyID0gZWxlZ2FudFNwaW5uZXIoKVxuICAgICAgc3Bpbm5lck1hcC5zZXQodGFzaywgc3Bpbm5lcilcbiAgICB9XG4gICAgcmV0dXJuIGMueWVsbG93KHNwaW5uZXIoKSlcbiAgfVxuXG4gIGlmICh0YXNrLnJlc3VsdC5zdGF0ZSA9PT0gJ3Bhc3MnKVxuICAgIHJldHVybiBjLmdyZWVuKEZfQ0hFQ0spXG5cbiAgaWYgKHRhc2sucmVzdWx0LnN0YXRlID09PSAnZmFpbCcpIHtcbiAgICByZXR1cm4gdGFzay50eXBlID09PSAnc3VpdGUnXG4gICAgICA/IHBvaW50ZXJcbiAgICAgIDogYy5yZWQoRl9DUk9TUylcbiAgfVxuXG4gIHJldHVybiAnICdcbn1cblxuZXhwb3J0IGNvbnN0IHNwaW5uZXJGcmFtZXMgPSBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInXG4gID8gWyctJywgJ1xcXFwnLCAnfCcsICcvJ11cbiAgOiBbJ+KgiycsICfioJknLCAn4qC5JywgJ+KguCcsICfioLwnLCAn4qC0JywgJ+KgpicsICfioKcnLCAn4qCHJywgJ+KgjyddXG5cbmV4cG9ydCBmdW5jdGlvbiBlbGVnYW50U3Bpbm5lcigpIHtcbiAgbGV0IGluZGV4ID0gMFxuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgaW5kZXggPSArK2luZGV4ICUgc3Bpbm5lckZyYW1lcy5sZW5ndGhcbiAgICByZXR1cm4gc3Bpbm5lckZyYW1lc1tpbmRleF1cbiAgfVxufVxuIiwiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdwZXJmX2hvb2tzJ1xuaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tICdwYXRoZSdcbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgdHlwZSB7IEVycm9yV2l0aERpZmYsIEZpbGUsIFJlcG9ydGVyLCBUYXNrLCBUYXNrUmVzdWx0UGFjaywgVXNlckNvbnNvbGVMb2cgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IGdldEZ1bGxOYW1lLCBnZXRTdWl0ZXMsIGdldFRlc3RzLCBoYXNGYWlsZWQsIGhhc0ZhaWxlZFNuYXBzaG90IH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4uLy4uL25vZGUnXG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnLi9yZW5kZXJlcnMvZGlmZidcbmltcG9ydCB7IEZfUklHSFQgfSBmcm9tICcuL3JlbmRlcmVycy9maWd1cmVzJ1xuaW1wb3J0IHsgZGl2aWRlciwgZ2V0U3RhdGVTdHJpbmcsIGdldFN0YXRlU3ltYm9sLCByZW5kZXJTbmFwc2hvdFN1bW1hcnkgfSBmcm9tICcuL3JlbmRlcmVycy91dGlscydcblxuY29uc3QgQkFER0VfUEFERElORyA9ICcgICAgICAgJ1xuY29uc3QgSEVMUF9ISU5UID0gYCR7Yy5kaW0oJ3ByZXNzICcpfSR7Yy5ib2xkKCdoJyl9JHtjLmRpbSgnIHRvIHNob3cgaGVscCcpfWBcbmNvbnN0IEhFTFBfVVBEQVRFX1NOQVAgPSBjLmRpbSgncHJlc3MgJykgKyBjLmJvbGQoYy55ZWxsb3coJ3UnKSkgKyBjLmRpbSgnIHRvIHVwZGF0ZSBzbmFwc2hvdCcpXG5jb25zdCBIRUxQX1FVSVRFID0gYCR7Yy5kaW0oJ3ByZXNzICcpfSR7Yy5ib2xkKCdxJyl9JHtjLmRpbSgnIHRvIHF1aXQnKX1gXG5cbmNvbnN0IFdBSVRfRk9SX0NIQU5HRV9QQVNTID0gYFxcbiR7Yy5ib2xkKGMuaW52ZXJzZShjLmdyZWVuKCcgUEFTUyAnKSkpfSR7Yy5ncmVlbignIFdhaXRpbmcgZm9yIGZpbGUgY2hhbmdlcy4uLicpfWBcbmNvbnN0IFdBSVRfRk9SX0NIQU5HRV9GQUlMID0gYFxcbiR7Yy5ib2xkKGMuaW52ZXJzZShjLnJlZCgnIEZBSUwgJykpKX0ke2MucmVkKCcgVGVzdHMgZmFpbGVkLiBXYXRjaGluZyBmb3IgZmlsZSBjaGFuZ2VzLi4uJyl9YFxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlcG9ydGVyIGltcGxlbWVudHMgUmVwb3J0ZXIge1xuICBzdGFydCA9IDBcbiAgZW5kID0gMFxuICB3YXRjaEZpbHRlcnM/OiBzdHJpbmdbXVxuICBpc1RUWSA9IHByb2Nlc3Muc3Rkb3V0LmlzVFRZICYmICFwcm9jZXNzLmVudi5DSVxuICBjdHg6IFZpdGVzdCA9IHVuZGVmaW5lZCFcblxuICBvbkluaXQoY3R4OiBWaXRlc3QpIHtcbiAgICB0aGlzLmN0eCA9IGN0eFxuICAgIGNvbnN0IG1vZGUgPSB0aGlzLmN0eC5jb25maWcud2F0Y2hcbiAgICAgID8gYy5ibHVlKCcgV0FUQ0ggJylcbiAgICAgIDogYy5jeWFuKCcgUlVOICcpXG4gICAgdGhpcy5jdHgubG9nKGBcXG4ke2MuaW52ZXJzZShjLmJvbGQobW9kZSkpfSAke2MuZ3JheSh0aGlzLmN0eC5jb25maWcucm9vdCl9XFxuYClcbiAgICB0aGlzLnN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgfVxuXG4gIHJlbGF0aXZlKHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiByZWxhdGl2ZSh0aGlzLmN0eC5jb25maWcucm9vdCwgcGF0aClcbiAgfVxuXG4gIGFzeW5jIG9uRmluaXNoZWQoZmlsZXMgPSB0aGlzLmN0eC5zdGF0ZS5nZXRGaWxlcygpKSB7XG4gICAgdGhpcy5lbmQgPSBwZXJmb3JtYW5jZS5ub3coKVxuICAgIGF3YWl0IHRoaXMucmVwb3J0U3VtbWFyeShmaWxlcylcbiAgfVxuXG4gIG9uVGFza1VwZGF0ZShwYWNrczogVGFza1Jlc3VsdFBhY2tbXSkge1xuICAgIGlmICh0aGlzLmlzVFRZKVxuICAgICAgcmV0dXJuXG4gICAgZm9yIChjb25zdCBwYWNrIG9mIHBhY2tzKSB7XG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5jdHguc3RhdGUuaWRNYXAuZ2V0KHBhY2tbMF0pXG4gICAgICBpZiAodGFzayAmJiB0YXNrLnR5cGUgPT09ICd0ZXN0JyAmJiB0YXNrLnJlc3VsdD8uc3RhdGUgJiYgdGFzay5yZXN1bHQ/LnN0YXRlICE9PSAncnVuJykge1xuICAgICAgICB0aGlzLmN0eC5sb2coYCAke2dldFN0YXRlU3ltYm9sKHRhc2spfSAke2dldEZ1bGxOYW1lKHRhc2spfWApXG4gICAgICAgIGlmICh0YXNrLnJlc3VsdC5zdGF0ZSA9PT0gJ2ZhaWwnKVxuICAgICAgICAgIHRoaXMuY3R4LmxvZyhjLnJlZChgICAgJHtGX1JJR0hUfSAkeyh0YXNrLnJlc3VsdC5lcnJvciBhcyBhbnkpPy5tZXNzYWdlfWApKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uV2F0Y2hlclN0YXJ0KCkge1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKVxuICAgIGNvbnN0IGZhaWxlZCA9IGhhc0ZhaWxlZChmaWxlcylcbiAgICBjb25zdCBmYWlsZWRTbmFwID0gaGFzRmFpbGVkU25hcHNob3QoZmlsZXMpXG4gICAgaWYgKGZhaWxlZClcbiAgICAgIHRoaXMuY3R4LmxvZyhXQUlUX0ZPUl9DSEFOR0VfRkFJTClcbiAgICBlbHNlXG4gICAgICB0aGlzLmN0eC5sb2coV0FJVF9GT1JfQ0hBTkdFX1BBU1MpXG5cbiAgICBjb25zdCBoaW50cyA9IFtIRUxQX0hJTlRdXG4gICAgaWYgKGZhaWxlZFNuYXApXG4gICAgICBoaW50cy51bnNoaWZ0KEhFTFBfVVBEQVRFX1NOQVApXG4gICAgZWxzZVxuICAgICAgaGludHMucHVzaChIRUxQX1FVSVRFKVxuXG4gICAgdGhpcy5jdHgubG9nKEJBREdFX1BBRERJTkcgKyBoaW50cy5qb2luKGMuZGltKCcsICcpKSlcbiAgfVxuXG4gIGFzeW5jIG9uV2F0Y2hlclJlcnVuKGZpbGVzOiBzdHJpbmdbXSwgdHJpZ2dlcj86IHN0cmluZykge1xuICAgIHRoaXMud2F0Y2hGaWx0ZXJzID0gZmlsZXNcblxuICAgIHRoaXMuY3R4LmNvbnNvbGUuY2xlYXIoKVxuICAgIHRoaXMuY3R4LmxvZyhjLmJsdWUoJ1JlLXJ1bm5pbmcgdGVzdHMuLi4nKSArICh0cmlnZ2VyID8gYy5kaW0oYCBbICR7dGhpcy5yZWxhdGl2ZSh0cmlnZ2VyKX0gXVxcbmApIDogJycpKVxuICAgIHRoaXMuc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKVxuICB9XG5cbiAgb25Vc2VyQ29uc29sZUxvZyhsb2c6IFVzZXJDb25zb2xlTG9nKSB7XG4gICAgaWYgKHRoaXMuY3R4LmNvbmZpZy5zaWxlbnQpXG4gICAgICByZXR1cm5cbiAgICBjb25zdCB0YXNrID0gbG9nLnRhc2tJZCA/IHRoaXMuY3R4LnN0YXRlLmlkTWFwLmdldChsb2cudGFza0lkKSA6IHVuZGVmaW5lZFxuICAgIHRoaXMuY3R4LmxvZyhjLmdyYXkobG9nLnR5cGUgKyBjLmRpbShgIHwgJHt0YXNrID8gZ2V0RnVsbE5hbWUodGFzaykgOiAndW5rbm93biB0ZXN0J31gKSkpXG4gICAgcHJvY2Vzc1tsb2cudHlwZV0ud3JpdGUoYCR7bG9nLmNvbnRlbnR9XFxuYClcbiAgfVxuXG4gIG9uU2VydmVyUmVzdGFydCgpIHtcbiAgICB0aGlzLmN0eC5sb2coYy5jeWFuKCdSZXN0YXJ0ZWQgZHVlIHRvIGNvbmZpZyBjaGFuZ2VzLi4uJykpXG4gIH1cblxuICBhc3luYyByZXBvcnRTdW1tYXJ5KGZpbGVzOiBGaWxlW10pIHtcbiAgICBjb25zdCBzdWl0ZXMgPSBnZXRTdWl0ZXMoZmlsZXMpXG4gICAgY29uc3QgdGVzdHMgPSBnZXRUZXN0cyhmaWxlcylcblxuICAgIGNvbnN0IGZhaWxlZFN1aXRlcyA9IHN1aXRlcy5maWx0ZXIoaSA9PiBpLnJlc3VsdD8uZXJyb3IpXG4gICAgY29uc3QgZmFpbGVkVGVzdHMgPSB0ZXN0cy5maWx0ZXIoaSA9PiBpLnJlc3VsdD8uc3RhdGUgPT09ICdmYWlsJylcbiAgICBjb25zdCBmYWlsZWRUb3RhbCA9IGZhaWxlZFN1aXRlcy5sZW5ndGggKyBmYWlsZWRUZXN0cy5sZW5ndGhcblxuICAgIGxldCBjdXJyZW50ID0gMVxuXG4gICAgY29uc3QgZXJyb3JEaXZpZGVyID0gKCkgPT4gdGhpcy5jdHguZXJyb3IoYCR7Yy5yZWQoYy5kaW0oZGl2aWRlcihgWyR7Y3VycmVudCsrfS8ke2ZhaWxlZFRvdGFsfV1gLCB1bmRlZmluZWQsIDEpKSl9XFxuYClcblxuICAgIGlmIChmYWlsZWRTdWl0ZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN0eC5lcnJvcihjLnJlZChkaXZpZGVyKGMuYm9sZChjLmludmVyc2UoYCBGYWlsZWQgU3VpdGVzICR7ZmFpbGVkU3VpdGVzLmxlbmd0aH0gYCkpKSkpXG4gICAgICB0aGlzLmN0eC5lcnJvcigpXG4gICAgICBhd2FpdCB0aGlzLnByaW50VGFza0Vycm9ycyhmYWlsZWRTdWl0ZXMsIGVycm9yRGl2aWRlcilcbiAgICB9XG5cbiAgICBpZiAoZmFpbGVkVGVzdHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN0eC5lcnJvcihjLnJlZChkaXZpZGVyKGMuYm9sZChjLmludmVyc2UoYCBGYWlsZWQgVGVzdHMgJHtmYWlsZWRUZXN0cy5sZW5ndGh9IGApKSkpKVxuICAgICAgdGhpcy5jdHguZXJyb3IoKVxuXG4gICAgICBhd2FpdCB0aGlzLnByaW50VGFza0Vycm9ycyhmYWlsZWRUZXN0cywgZXJyb3JEaXZpZGVyKVxuICAgIH1cblxuICAgIGNvbnN0IGV4ZWN1dGlvblRpbWUgPSB0aGlzLmVuZCAtIHRoaXMuc3RhcnRcbiAgICBjb25zdCB0aHJlYWRUaW1lID0gZmlsZXMucmVkdWNlKChhY2MsIHRlc3QpID0+IGFjYyArICh0ZXN0LnJlc3VsdD8uZHVyYXRpb24gfHwgMCkgKyAodGVzdC5jb2xsZWN0RHVyYXRpb24gfHwgMCksIDApXG5cbiAgICBjb25zdCBwYWRUaXRsZSA9IChzdHI6IHN0cmluZykgPT4gYy5kaW0oYCR7c3RyLnBhZFN0YXJ0KDEwKX0gYClcbiAgICBjb25zdCB0aW1lID0gKHRpbWU6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKHRpbWUgPiAxMDAwKVxuICAgICAgICByZXR1cm4gYCR7KHRpbWUgLyAxMDAwKS50b0ZpeGVkKDIpfXNgXG4gICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZCh0aW1lKX1tc2BcbiAgICB9XG5cbiAgICBjb25zdCBzbmFwc2hvdE91dHB1dCA9IHJlbmRlclNuYXBzaG90U3VtbWFyeSh0aGlzLmN0eC5jb25maWcucm9vdCwgdGhpcy5jdHguc25hcHNob3Quc3VtbWFyeSlcbiAgICBpZiAoc25hcHNob3RPdXRwdXQubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN0eC5sb2coc25hcHNob3RPdXRwdXQubWFwKCh0LCBpKSA9PiBpID09PSAwXG4gICAgICAgID8gYCR7cGFkVGl0bGUoJ1NuYXBzaG90cycpfSAke3R9YFxuICAgICAgICA6IGAke3BhZFRpdGxlKCcnKX0gJHt0fWAsXG4gICAgICApLmpvaW4oJ1xcbicpKVxuICAgICAgaWYgKHNuYXBzaG90T3V0cHV0Lmxlbmd0aCA+IDEpXG4gICAgICAgIHRoaXMuY3R4LmxvZygpXG4gICAgfVxuXG4gICAgdGhpcy5jdHgubG9nKHBhZFRpdGxlKCdUZXN0IEZpbGVzJyksIGdldFN0YXRlU3RyaW5nKGZpbGVzKSlcbiAgICB0aGlzLmN0eC5sb2cocGFkVGl0bGUoJ1Rlc3RzJyksIGdldFN0YXRlU3RyaW5nKHRlc3RzKSlcbiAgICBpZiAodGhpcy53YXRjaEZpbHRlcnMpXG4gICAgICB0aGlzLmN0eC5sb2cocGFkVGl0bGUoJ1RpbWUnKSwgdGltZSh0aHJlYWRUaW1lKSlcblxuICAgIGVsc2VcbiAgICAgIHRoaXMuY3R4LmxvZyhwYWRUaXRsZSgnVGltZScpLCB0aW1lKGV4ZWN1dGlvblRpbWUpICsgYy5ncmF5KGAgKGluIHRocmVhZCAke3RpbWUodGhyZWFkVGltZSl9LCAkeyhleGVjdXRpb25UaW1lIC8gdGhyZWFkVGltZSAqIDEwMCkudG9GaXhlZCgyKX0lKWApKVxuXG4gICAgdGhpcy5jdHgubG9nKClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJpbnRUYXNrRXJyb3JzKHRhc2tzOiBUYXNrW10sIGVycm9yRGl2aWRlcjogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGVycm9yc1F1ZXVlOiBbZXJyb3I6IEVycm9yV2l0aERpZmYgfCB1bmRlZmluZWQsIHRlc3RzOiBUYXNrW11dW10gPSBbXVxuICAgIGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuICAgICAgLy8gbWVyZ2UgaWRlbnRpY2FsIGVycm9yc1xuICAgICAgY29uc3QgZXJyb3IgPSB0YXNrLnJlc3VsdD8uZXJyb3JcbiAgICAgIGNvbnN0IGVycm9ySXRlbSA9IGVycm9yPy5zdGFja1N0ciAmJiBlcnJvcnNRdWV1ZS5maW5kKGkgPT4gaVswXT8uc3RhY2tTdHIgPT09IGVycm9yLnN0YWNrU3RyKVxuICAgICAgaWYgKGVycm9ySXRlbSlcbiAgICAgICAgZXJyb3JJdGVtWzFdLnB1c2godGFzaylcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3JzUXVldWUucHVzaChbZXJyb3IsIFt0YXNrXV0pXG4gICAgfVxuICAgIGZvciAoY29uc3QgW2Vycm9yLCB0YXNrc10gb2YgZXJyb3JzUXVldWUpIHtcbiAgICAgIGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuICAgICAgICBjb25zdCBmaWxlcGF0aCA9ICh0YXNrIGFzIEZpbGUpPy5maWxlcGF0aCB8fCAnJ1xuICAgICAgICBsZXQgbmFtZSA9IGdldEZ1bGxOYW1lKHRhc2spXG4gICAgICAgIGlmIChmaWxlcGF0aClcbiAgICAgICAgICBuYW1lID0gYCR7bmFtZX0gJHtjLmRpbShgWyAke3RoaXMucmVsYXRpdmUoZmlsZXBhdGgpfSBdYCl9YFxuXG4gICAgICAgIHRoaXMuY3R4LmVycm9yKGAke2MucmVkKGMuYm9sZChjLmludmVyc2UoJyBGQUlMICcpKSl9ICR7bmFtZX1gKVxuICAgICAgfVxuICAgICAgYXdhaXQgcHJpbnRFcnJvcihlcnJvciwgdGhpcy5jdHgpXG4gICAgICBlcnJvckRpdmlkZXIoKVxuICAgIH1cbiAgfVxufVxuIiwiY29uc3QgRVNDID0gJ1xcdTAwMUJbJztcbmNvbnN0IE9TQyA9ICdcXHUwMDFCXSc7XG5jb25zdCBCRUwgPSAnXFx1MDAwNyc7XG5jb25zdCBTRVAgPSAnOyc7XG5jb25zdCBpc1Rlcm1pbmFsQXBwID0gcHJvY2Vzcy5lbnYuVEVSTV9QUk9HUkFNID09PSAnQXBwbGVfVGVybWluYWwnO1xuXG5jb25zdCBhbnNpRXNjYXBlcyA9IHt9O1xuXG5hbnNpRXNjYXBlcy5jdXJzb3JUbyA9ICh4LCB5KSA9PiB7XG5cdGlmICh0eXBlb2YgeCAhPT0gJ251bWJlcicpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgYHhgIGFyZ3VtZW50IGlzIHJlcXVpcmVkJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIHkgIT09ICdudW1iZXInKSB7XG5cdFx0cmV0dXJuIEVTQyArICh4ICsgMSkgKyAnRyc7XG5cdH1cblxuXHRyZXR1cm4gRVNDICsgKHkgKyAxKSArICc7JyArICh4ICsgMSkgKyAnSCc7XG59O1xuXG5hbnNpRXNjYXBlcy5jdXJzb3JNb3ZlID0gKHgsIHkpID0+IHtcblx0aWYgKHR5cGVvZiB4ICE9PSAnbnVtYmVyJykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBgeGAgYXJndW1lbnQgaXMgcmVxdWlyZWQnKTtcblx0fVxuXG5cdGxldCByZXR1cm5WYWx1ZSA9ICcnO1xuXG5cdGlmICh4IDwgMCkge1xuXHRcdHJldHVyblZhbHVlICs9IEVTQyArICgteCkgKyAnRCc7XG5cdH0gZWxzZSBpZiAoeCA+IDApIHtcblx0XHRyZXR1cm5WYWx1ZSArPSBFU0MgKyB4ICsgJ0MnO1xuXHR9XG5cblx0aWYgKHkgPCAwKSB7XG5cdFx0cmV0dXJuVmFsdWUgKz0gRVNDICsgKC15KSArICdBJztcblx0fSBlbHNlIGlmICh5ID4gMCkge1xuXHRcdHJldHVyblZhbHVlICs9IEVTQyArIHkgKyAnQic7XG5cdH1cblxuXHRyZXR1cm4gcmV0dXJuVmFsdWU7XG59O1xuXG5hbnNpRXNjYXBlcy5jdXJzb3JVcCA9IChjb3VudCA9IDEpID0+IEVTQyArIGNvdW50ICsgJ0EnO1xuYW5zaUVzY2FwZXMuY3Vyc29yRG93biA9IChjb3VudCA9IDEpID0+IEVTQyArIGNvdW50ICsgJ0InO1xuYW5zaUVzY2FwZXMuY3Vyc29yRm9yd2FyZCA9IChjb3VudCA9IDEpID0+IEVTQyArIGNvdW50ICsgJ0MnO1xuYW5zaUVzY2FwZXMuY3Vyc29yQmFja3dhcmQgPSAoY291bnQgPSAxKSA9PiBFU0MgKyBjb3VudCArICdEJztcblxuYW5zaUVzY2FwZXMuY3Vyc29yTGVmdCA9IEVTQyArICdHJztcbmFuc2lFc2NhcGVzLmN1cnNvclNhdmVQb3NpdGlvbiA9IGlzVGVybWluYWxBcHAgPyAnXFx1MDAxQjcnIDogRVNDICsgJ3MnO1xuYW5zaUVzY2FwZXMuY3Vyc29yUmVzdG9yZVBvc2l0aW9uID0gaXNUZXJtaW5hbEFwcCA/ICdcXHUwMDFCOCcgOiBFU0MgKyAndSc7XG5hbnNpRXNjYXBlcy5jdXJzb3JHZXRQb3NpdGlvbiA9IEVTQyArICc2bic7XG5hbnNpRXNjYXBlcy5jdXJzb3JOZXh0TGluZSA9IEVTQyArICdFJztcbmFuc2lFc2NhcGVzLmN1cnNvclByZXZMaW5lID0gRVNDICsgJ0YnO1xuYW5zaUVzY2FwZXMuY3Vyc29ySGlkZSA9IEVTQyArICc/MjVsJztcbmFuc2lFc2NhcGVzLmN1cnNvclNob3cgPSBFU0MgKyAnPzI1aCc7XG5cbmFuc2lFc2NhcGVzLmVyYXNlTGluZXMgPSBjb3VudCA9PiB7XG5cdGxldCBjbGVhciA9ICcnO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuXHRcdGNsZWFyICs9IGFuc2lFc2NhcGVzLmVyYXNlTGluZSArIChpIDwgY291bnQgLSAxID8gYW5zaUVzY2FwZXMuY3Vyc29yVXAoKSA6ICcnKTtcblx0fVxuXG5cdGlmIChjb3VudCkge1xuXHRcdGNsZWFyICs9IGFuc2lFc2NhcGVzLmN1cnNvckxlZnQ7XG5cdH1cblxuXHRyZXR1cm4gY2xlYXI7XG59O1xuXG5hbnNpRXNjYXBlcy5lcmFzZUVuZExpbmUgPSBFU0MgKyAnSyc7XG5hbnNpRXNjYXBlcy5lcmFzZVN0YXJ0TGluZSA9IEVTQyArICcxSyc7XG5hbnNpRXNjYXBlcy5lcmFzZUxpbmUgPSBFU0MgKyAnMksnO1xuYW5zaUVzY2FwZXMuZXJhc2VEb3duID0gRVNDICsgJ0onO1xuYW5zaUVzY2FwZXMuZXJhc2VVcCA9IEVTQyArICcxSic7XG5hbnNpRXNjYXBlcy5lcmFzZVNjcmVlbiA9IEVTQyArICcySic7XG5hbnNpRXNjYXBlcy5zY3JvbGxVcCA9IEVTQyArICdTJztcbmFuc2lFc2NhcGVzLnNjcm9sbERvd24gPSBFU0MgKyAnVCc7XG5cbmFuc2lFc2NhcGVzLmNsZWFyU2NyZWVuID0gJ1xcdTAwMUJjJztcblxuYW5zaUVzY2FwZXMuY2xlYXJUZXJtaW5hbCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgP1xuXHRgJHthbnNpRXNjYXBlcy5lcmFzZVNjcmVlbn0ke0VTQ30wZmAgOlxuXHQvLyAxLiBFcmFzZXMgdGhlIHNjcmVlbiAoT25seSBkb25lIGluIGNhc2UgYDJgIGlzIG5vdCBzdXBwb3J0ZWQpXG5cdC8vIDIuIEVyYXNlcyB0aGUgd2hvbGUgc2NyZWVuIGluY2x1ZGluZyBzY3JvbGxiYWNrIGJ1ZmZlclxuXHQvLyAzLiBNb3ZlcyBjdXJzb3IgdG8gdGhlIHRvcC1sZWZ0IHBvc2l0aW9uXG5cdC8vIE1vcmUgaW5mbzogaHR0cHM6Ly93d3cucmVhbC13b3JsZC1zeXN0ZW1zLmNvbS9kb2NzL0FOU0ljb2RlLmh0bWxcblx0YCR7YW5zaUVzY2FwZXMuZXJhc2VTY3JlZW59JHtFU0N9M0oke0VTQ31IYDtcblxuYW5zaUVzY2FwZXMuYmVlcCA9IEJFTDtcblxuYW5zaUVzY2FwZXMubGluayA9ICh0ZXh0LCB1cmwpID0+IHtcblx0cmV0dXJuIFtcblx0XHRPU0MsXG5cdFx0JzgnLFxuXHRcdFNFUCxcblx0XHRTRVAsXG5cdFx0dXJsLFxuXHRcdEJFTCxcblx0XHR0ZXh0LFxuXHRcdE9TQyxcblx0XHQnOCcsXG5cdFx0U0VQLFxuXHRcdFNFUCxcblx0XHRCRUxcblx0XS5qb2luKCcnKTtcbn07XG5cbmFuc2lFc2NhcGVzLmltYWdlID0gKGJ1ZmZlciwgb3B0aW9ucyA9IHt9KSA9PiB7XG5cdGxldCByZXR1cm5WYWx1ZSA9IGAke09TQ30xMzM3O0ZpbGU9aW5saW5lPTFgO1xuXG5cdGlmIChvcHRpb25zLndpZHRoKSB7XG5cdFx0cmV0dXJuVmFsdWUgKz0gYDt3aWR0aD0ke29wdGlvbnMud2lkdGh9YDtcblx0fVxuXG5cdGlmIChvcHRpb25zLmhlaWdodCkge1xuXHRcdHJldHVyblZhbHVlICs9IGA7aGVpZ2h0PSR7b3B0aW9ucy5oZWlnaHR9YDtcblx0fVxuXG5cdGlmIChvcHRpb25zLnByZXNlcnZlQXNwZWN0UmF0aW8gPT09IGZhbHNlKSB7XG5cdFx0cmV0dXJuVmFsdWUgKz0gJztwcmVzZXJ2ZUFzcGVjdFJhdGlvPTAnO1xuXHR9XG5cblx0cmV0dXJuIHJldHVyblZhbHVlICsgJzonICsgYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSArIEJFTDtcbn07XG5cbmFuc2lFc2NhcGVzLmlUZXJtID0ge1xuXHRzZXRDd2Q6IChjd2QgPSBwcm9jZXNzLmN3ZCgpKSA9PiBgJHtPU0N9NTA7Q3VycmVudERpcj0ke2N3ZH0ke0JFTH1gLFxuXG5cdGFubm90YXRpb246IChtZXNzYWdlLCBvcHRpb25zID0ge30pID0+IHtcblx0XHRsZXQgcmV0dXJuVmFsdWUgPSBgJHtPU0N9MTMzNztgO1xuXG5cdFx0Y29uc3QgaGFzWCA9IHR5cGVvZiBvcHRpb25zLnggIT09ICd1bmRlZmluZWQnO1xuXHRcdGNvbnN0IGhhc1kgPSB0eXBlb2Ygb3B0aW9ucy55ICE9PSAndW5kZWZpbmVkJztcblx0XHRpZiAoKGhhc1ggfHwgaGFzWSkgJiYgIShoYXNYICYmIGhhc1kgJiYgdHlwZW9mIG9wdGlvbnMubGVuZ3RoICE9PSAndW5kZWZpbmVkJykpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignYHhgLCBgeWAgYW5kIGBsZW5ndGhgIG11c3QgYmUgZGVmaW5lZCB3aGVuIGB4YCBvciBgeWAgaXMgZGVmaW5lZCcpO1xuXHRcdH1cblxuXHRcdG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL1xcfC9nLCAnJyk7XG5cblx0XHRyZXR1cm5WYWx1ZSArPSBvcHRpb25zLmlzSGlkZGVuID8gJ0FkZEhpZGRlbkFubm90YXRpb249JyA6ICdBZGRBbm5vdGF0aW9uPSc7XG5cblx0XHRpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRyZXR1cm5WYWx1ZSArPVxuXHRcdFx0XHRcdChoYXNYID9cblx0XHRcdFx0XHRcdFttZXNzYWdlLCBvcHRpb25zLmxlbmd0aCwgb3B0aW9ucy54LCBvcHRpb25zLnldIDpcblx0XHRcdFx0XHRcdFtvcHRpb25zLmxlbmd0aCwgbWVzc2FnZV0pLmpvaW4oJ3wnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuVmFsdWUgKz0gbWVzc2FnZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0dXJuVmFsdWUgKyBCRUw7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFuc2lFc2NhcGVzO1xuIiwiaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCBvbmV0aW1lIGZyb20gJ29uZXRpbWUnO1xuaW1wb3J0IHNpZ25hbEV4aXQgZnJvbSAnc2lnbmFsLWV4aXQnO1xuXG5jb25zdCByZXN0b3JlQ3Vyc29yID0gb25ldGltZSgoKSA9PiB7XG5cdHNpZ25hbEV4aXQoKCkgPT4ge1xuXHRcdHByb2Nlc3Muc3RkZXJyLndyaXRlKCdcXHUwMDFCWz8yNWgnKTtcblx0fSwge2Fsd2F5c0xhc3Q6IHRydWV9KTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCByZXN0b3JlQ3Vyc29yO1xuIiwiaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCByZXN0b3JlQ3Vyc29yIGZyb20gJ3Jlc3RvcmUtY3Vyc29yJztcblxubGV0IGlzSGlkZGVuID0gZmFsc2U7XG5cbmNvbnN0IGNsaUN1cnNvciA9IHt9O1xuXG5jbGlDdXJzb3Iuc2hvdyA9ICh3cml0YWJsZVN0cmVhbSA9IHByb2Nlc3Muc3RkZXJyKSA9PiB7XG5cdGlmICghd3JpdGFibGVTdHJlYW0uaXNUVFkpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpc0hpZGRlbiA9IGZhbHNlO1xuXHR3cml0YWJsZVN0cmVhbS53cml0ZSgnXFx1MDAxQls/MjVoJyk7XG59O1xuXG5jbGlDdXJzb3IuaGlkZSA9ICh3cml0YWJsZVN0cmVhbSA9IHByb2Nlc3Muc3RkZXJyKSA9PiB7XG5cdGlmICghd3JpdGFibGVTdHJlYW0uaXNUVFkpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRyZXN0b3JlQ3Vyc29yKCk7XG5cdGlzSGlkZGVuID0gdHJ1ZTtcblx0d3JpdGFibGVTdHJlYW0ud3JpdGUoJ1xcdTAwMUJbPzI1bCcpO1xufTtcblxuY2xpQ3Vyc29yLnRvZ2dsZSA9IChmb3JjZSwgd3JpdGFibGVTdHJlYW0pID0+IHtcblx0aWYgKGZvcmNlICE9PSB1bmRlZmluZWQpIHtcblx0XHRpc0hpZGRlbiA9IGZvcmNlO1xuXHR9XG5cblx0aWYgKGlzSGlkZGVuKSB7XG5cdFx0Y2xpQ3Vyc29yLnNob3cod3JpdGFibGVTdHJlYW0pO1xuXHR9IGVsc2Uge1xuXHRcdGNsaUN1cnNvci5oaWRlKHdyaXRhYmxlU3RyZWFtKTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xpQ3Vyc29yO1xuIiwiaW1wb3J0IHN0cmluZ1dpZHRoIGZyb20gJ3N0cmluZy13aWR0aCc7XG5pbXBvcnQgc3RyaXBBbnNpIGZyb20gJ3N0cmlwLWFuc2knO1xuaW1wb3J0IGFuc2lTdHlsZXMgZnJvbSAnYW5zaS1zdHlsZXMnO1xuXG5jb25zdCBFU0NBUEVTID0gbmV3IFNldChbXG5cdCdcXHUwMDFCJyxcblx0J1xcdTAwOUInLFxuXSk7XG5cbmNvbnN0IEVORF9DT0RFID0gMzk7XG5jb25zdCBBTlNJX0VTQ0FQRV9CRUxMID0gJ1xcdTAwMDcnO1xuY29uc3QgQU5TSV9DU0kgPSAnWyc7XG5jb25zdCBBTlNJX09TQyA9ICddJztcbmNvbnN0IEFOU0lfU0dSX1RFUk1JTkFUT1IgPSAnbSc7XG5jb25zdCBBTlNJX0VTQ0FQRV9MSU5LID0gYCR7QU5TSV9PU0N9ODs7YDtcblxuY29uc3Qgd3JhcEFuc2lDb2RlID0gY29kZSA9PiBgJHtFU0NBUEVTLnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke0FOU0lfQ1NJfSR7Y29kZX0ke0FOU0lfU0dSX1RFUk1JTkFUT1J9YDtcbmNvbnN0IHdyYXBBbnNpSHlwZXJsaW5rID0gdXJpID0+IGAke0VTQ0FQRVMudmFsdWVzKCkubmV4dCgpLnZhbHVlfSR7QU5TSV9FU0NBUEVfTElOS30ke3VyaX0ke0FOU0lfRVNDQVBFX0JFTEx9YDtcblxuLy8gQ2FsY3VsYXRlIHRoZSBsZW5ndGggb2Ygd29yZHMgc3BsaXQgb24gJyAnLCBpZ25vcmluZ1xuLy8gdGhlIGV4dHJhIGNoYXJhY3RlcnMgYWRkZWQgYnkgYW5zaSBlc2NhcGUgY29kZXNcbmNvbnN0IHdvcmRMZW5ndGhzID0gc3RyaW5nID0+IHN0cmluZy5zcGxpdCgnICcpLm1hcChjaGFyYWN0ZXIgPT4gc3RyaW5nV2lkdGgoY2hhcmFjdGVyKSk7XG5cbi8vIFdyYXAgYSBsb25nIHdvcmQgYWNyb3NzIG11bHRpcGxlIHJvd3Ncbi8vIEFuc2kgZXNjYXBlIGNvZGVzIGRvIG5vdCBjb3VudCB0b3dhcmRzIGxlbmd0aFxuY29uc3Qgd3JhcFdvcmQgPSAocm93cywgd29yZCwgY29sdW1ucykgPT4ge1xuXHRjb25zdCBjaGFyYWN0ZXJzID0gWy4uLndvcmRdO1xuXG5cdGxldCBpc0luc2lkZUVzY2FwZSA9IGZhbHNlO1xuXHRsZXQgaXNJbnNpZGVMaW5rRXNjYXBlID0gZmFsc2U7XG5cdGxldCB2aXNpYmxlID0gc3RyaW5nV2lkdGgoc3RyaXBBbnNpKHJvd3Nbcm93cy5sZW5ndGggLSAxXSkpO1xuXG5cdGZvciAoY29uc3QgW2luZGV4LCBjaGFyYWN0ZXJdIG9mIGNoYXJhY3RlcnMuZW50cmllcygpKSB7XG5cdFx0Y29uc3QgY2hhcmFjdGVyTGVuZ3RoID0gc3RyaW5nV2lkdGgoY2hhcmFjdGVyKTtcblxuXHRcdGlmICh2aXNpYmxlICsgY2hhcmFjdGVyTGVuZ3RoIDw9IGNvbHVtbnMpIHtcblx0XHRcdHJvd3Nbcm93cy5sZW5ndGggLSAxXSArPSBjaGFyYWN0ZXI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJvd3MucHVzaChjaGFyYWN0ZXIpO1xuXHRcdFx0dmlzaWJsZSA9IDA7XG5cdFx0fVxuXG5cdFx0aWYgKEVTQ0FQRVMuaGFzKGNoYXJhY3RlcikpIHtcblx0XHRcdGlzSW5zaWRlRXNjYXBlID0gdHJ1ZTtcblx0XHRcdGlzSW5zaWRlTGlua0VzY2FwZSA9IGNoYXJhY3RlcnMuc2xpY2UoaW5kZXggKyAxKS5qb2luKCcnKS5zdGFydHNXaXRoKEFOU0lfRVNDQVBFX0xJTkspO1xuXHRcdH1cblxuXHRcdGlmIChpc0luc2lkZUVzY2FwZSkge1xuXHRcdFx0aWYgKGlzSW5zaWRlTGlua0VzY2FwZSkge1xuXHRcdFx0XHRpZiAoY2hhcmFjdGVyID09PSBBTlNJX0VTQ0FQRV9CRUxMKSB7XG5cdFx0XHRcdFx0aXNJbnNpZGVFc2NhcGUgPSBmYWxzZTtcblx0XHRcdFx0XHRpc0luc2lkZUxpbmtFc2NhcGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IEFOU0lfU0dSX1RFUk1JTkFUT1IpIHtcblx0XHRcdFx0aXNJbnNpZGVFc2NhcGUgPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0dmlzaWJsZSArPSBjaGFyYWN0ZXJMZW5ndGg7XG5cblx0XHRpZiAodmlzaWJsZSA9PT0gY29sdW1ucyAmJiBpbmRleCA8IGNoYXJhY3RlcnMubGVuZ3RoIC0gMSkge1xuXHRcdFx0cm93cy5wdXNoKCcnKTtcblx0XHRcdHZpc2libGUgPSAwO1xuXHRcdH1cblx0fVxuXG5cdC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgbGFzdCByb3cgd2UgY29weSBvdmVyIGlzIG9ubHlcblx0Ly8gYW5zaSBlc2NhcGUgY2hhcmFjdGVycywgaGFuZGxlIHRoaXMgZWRnZS1jYXNlXG5cdGlmICghdmlzaWJsZSAmJiByb3dzW3Jvd3MubGVuZ3RoIC0gMV0ubGVuZ3RoID4gMCAmJiByb3dzLmxlbmd0aCA+IDEpIHtcblx0XHRyb3dzW3Jvd3MubGVuZ3RoIC0gMl0gKz0gcm93cy5wb3AoKTtcblx0fVxufTtcblxuLy8gVHJpbXMgc3BhY2VzIGZyb20gYSBzdHJpbmcgaWdub3JpbmcgaW52aXNpYmxlIHNlcXVlbmNlc1xuY29uc3Qgc3RyaW5nVmlzaWJsZVRyaW1TcGFjZXNSaWdodCA9IHN0cmluZyA9PiB7XG5cdGNvbnN0IHdvcmRzID0gc3RyaW5nLnNwbGl0KCcgJyk7XG5cdGxldCBsYXN0ID0gd29yZHMubGVuZ3RoO1xuXG5cdHdoaWxlIChsYXN0ID4gMCkge1xuXHRcdGlmIChzdHJpbmdXaWR0aCh3b3Jkc1tsYXN0IC0gMV0pID4gMCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0bGFzdC0tO1xuXHR9XG5cblx0aWYgKGxhc3QgPT09IHdvcmRzLmxlbmd0aCkge1xuXHRcdHJldHVybiBzdHJpbmc7XG5cdH1cblxuXHRyZXR1cm4gd29yZHMuc2xpY2UoMCwgbGFzdCkuam9pbignICcpICsgd29yZHMuc2xpY2UobGFzdCkuam9pbignJyk7XG59O1xuXG4vLyBUaGUgd3JhcC1hbnNpIG1vZHVsZSBjYW4gYmUgaW52b2tlZCBpbiBlaXRoZXIgJ2hhcmQnIG9yICdzb2Z0JyB3cmFwIG1vZGVcbi8vXG4vLyAnaGFyZCcgd2lsbCBuZXZlciBhbGxvdyBhIHN0cmluZyB0byB0YWtlIHVwIG1vcmUgdGhhbiBjb2x1bW5zIGNoYXJhY3RlcnNcbi8vXG4vLyAnc29mdCcgYWxsb3dzIGxvbmcgd29yZHMgdG8gZXhwYW5kIHBhc3QgdGhlIGNvbHVtbiBsZW5ndGhcbmNvbnN0IGV4ZWMgPSAoc3RyaW5nLCBjb2x1bW5zLCBvcHRpb25zID0ge30pID0+IHtcblx0aWYgKG9wdGlvbnMudHJpbSAhPT0gZmFsc2UgJiYgc3RyaW5nLnRyaW0oKSA9PT0gJycpIHtcblx0XHRyZXR1cm4gJyc7XG5cdH1cblxuXHRsZXQgcmV0dXJuVmFsdWUgPSAnJztcblx0bGV0IGVzY2FwZUNvZGU7XG5cdGxldCBlc2NhcGVVcmw7XG5cblx0Y29uc3QgbGVuZ3RocyA9IHdvcmRMZW5ndGhzKHN0cmluZyk7XG5cdGxldCByb3dzID0gWycnXTtcblxuXHRmb3IgKGNvbnN0IFtpbmRleCwgd29yZF0gb2Ygc3RyaW5nLnNwbGl0KCcgJykuZW50cmllcygpKSB7XG5cdFx0aWYgKG9wdGlvbnMudHJpbSAhPT0gZmFsc2UpIHtcblx0XHRcdHJvd3Nbcm93cy5sZW5ndGggLSAxXSA9IHJvd3Nbcm93cy5sZW5ndGggLSAxXS50cmltU3RhcnQoKTtcblx0XHR9XG5cblx0XHRsZXQgcm93TGVuZ3RoID0gc3RyaW5nV2lkdGgocm93c1tyb3dzLmxlbmd0aCAtIDFdKTtcblxuXHRcdGlmIChpbmRleCAhPT0gMCkge1xuXHRcdFx0aWYgKHJvd0xlbmd0aCA+PSBjb2x1bW5zICYmIChvcHRpb25zLndvcmRXcmFwID09PSBmYWxzZSB8fCBvcHRpb25zLnRyaW0gPT09IGZhbHNlKSkge1xuXHRcdFx0XHQvLyBJZiB3ZSBzdGFydCB3aXRoIGEgbmV3IHdvcmQgYnV0IHRoZSBjdXJyZW50IHJvdyBsZW5ndGggZXF1YWxzIHRoZSBsZW5ndGggb2YgdGhlIGNvbHVtbnMsIGFkZCBhIG5ldyByb3dcblx0XHRcdFx0cm93cy5wdXNoKCcnKTtcblx0XHRcdFx0cm93TGVuZ3RoID0gMDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHJvd0xlbmd0aCA+IDAgfHwgb3B0aW9ucy50cmltID09PSBmYWxzZSkge1xuXHRcdFx0XHRyb3dzW3Jvd3MubGVuZ3RoIC0gMV0gKz0gJyAnO1xuXHRcdFx0XHRyb3dMZW5ndGgrKztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJbiAnaGFyZCcgd3JhcCBtb2RlLCB0aGUgbGVuZ3RoIG9mIGEgbGluZSBpcyBuZXZlciBhbGxvd2VkIHRvIGV4dGVuZCBwYXN0ICdjb2x1bW5zJ1xuXHRcdGlmIChvcHRpb25zLmhhcmQgJiYgbGVuZ3Roc1tpbmRleF0gPiBjb2x1bW5zKSB7XG5cdFx0XHRjb25zdCByZW1haW5pbmdDb2x1bW5zID0gKGNvbHVtbnMgLSByb3dMZW5ndGgpO1xuXHRcdFx0Y29uc3QgYnJlYWtzU3RhcnRpbmdUaGlzTGluZSA9IDEgKyBNYXRoLmZsb29yKChsZW5ndGhzW2luZGV4XSAtIHJlbWFpbmluZ0NvbHVtbnMgLSAxKSAvIGNvbHVtbnMpO1xuXHRcdFx0Y29uc3QgYnJlYWtzU3RhcnRpbmdOZXh0TGluZSA9IE1hdGguZmxvb3IoKGxlbmd0aHNbaW5kZXhdIC0gMSkgLyBjb2x1bW5zKTtcblx0XHRcdGlmIChicmVha3NTdGFydGluZ05leHRMaW5lIDwgYnJlYWtzU3RhcnRpbmdUaGlzTGluZSkge1xuXHRcdFx0XHRyb3dzLnB1c2goJycpO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwV29yZChyb3dzLCB3b3JkLCBjb2x1bW5zKTtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGlmIChyb3dMZW5ndGggKyBsZW5ndGhzW2luZGV4XSA+IGNvbHVtbnMgJiYgcm93TGVuZ3RoID4gMCAmJiBsZW5ndGhzW2luZGV4XSA+IDApIHtcblx0XHRcdGlmIChvcHRpb25zLndvcmRXcmFwID09PSBmYWxzZSAmJiByb3dMZW5ndGggPCBjb2x1bW5zKSB7XG5cdFx0XHRcdHdyYXBXb3JkKHJvd3MsIHdvcmQsIGNvbHVtbnMpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0cm93cy5wdXNoKCcnKTtcblx0XHR9XG5cblx0XHRpZiAocm93TGVuZ3RoICsgbGVuZ3Roc1tpbmRleF0gPiBjb2x1bW5zICYmIG9wdGlvbnMud29yZFdyYXAgPT09IGZhbHNlKSB7XG5cdFx0XHR3cmFwV29yZChyb3dzLCB3b3JkLCBjb2x1bW5zKTtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdHJvd3Nbcm93cy5sZW5ndGggLSAxXSArPSB3b3JkO1xuXHR9XG5cblx0aWYgKG9wdGlvbnMudHJpbSAhPT0gZmFsc2UpIHtcblx0XHRyb3dzID0gcm93cy5tYXAocm93ID0+IHN0cmluZ1Zpc2libGVUcmltU3BhY2VzUmlnaHQocm93KSk7XG5cdH1cblxuXHRjb25zdCBwcmUgPSBbLi4ucm93cy5qb2luKCdcXG4nKV07XG5cblx0Zm9yIChjb25zdCBbaW5kZXgsIGNoYXJhY3Rlcl0gb2YgcHJlLmVudHJpZXMoKSkge1xuXHRcdHJldHVyblZhbHVlICs9IGNoYXJhY3RlcjtcblxuXHRcdGlmIChFU0NBUEVTLmhhcyhjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjb25zdCB7Z3JvdXBzfSA9IG5ldyBSZWdFeHAoYCg/OlxcXFwke0FOU0lfQ1NJfSg/PGNvZGU+XFxcXGQrKW18XFxcXCR7QU5TSV9FU0NBUEVfTElOS30oPzx1cmk+LiopJHtBTlNJX0VTQ0FQRV9CRUxMfSlgKS5leGVjKHByZS5zbGljZShpbmRleCkuam9pbignJykpIHx8IHtncm91cHM6IHt9fTtcblx0XHRcdGlmIChncm91cHMuY29kZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNvbnN0IGNvZGUgPSBOdW1iZXIucGFyc2VGbG9hdChncm91cHMuY29kZSk7XG5cdFx0XHRcdGVzY2FwZUNvZGUgPSBjb2RlID09PSBFTkRfQ09ERSA/IHVuZGVmaW5lZCA6IGNvZGU7XG5cdFx0XHR9IGVsc2UgaWYgKGdyb3Vwcy51cmkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRlc2NhcGVVcmwgPSBncm91cHMudXJpLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IGdyb3Vwcy51cmk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29kZSA9IGFuc2lTdHlsZXMuY29kZXMuZ2V0KE51bWJlcihlc2NhcGVDb2RlKSk7XG5cblx0XHRpZiAocHJlW2luZGV4ICsgMV0gPT09ICdcXG4nKSB7XG5cdFx0XHRpZiAoZXNjYXBlVXJsKSB7XG5cdFx0XHRcdHJldHVyblZhbHVlICs9IHdyYXBBbnNpSHlwZXJsaW5rKCcnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGVzY2FwZUNvZGUgJiYgY29kZSkge1xuXHRcdFx0XHRyZXR1cm5WYWx1ZSArPSB3cmFwQW5zaUNvZGUoY29kZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09ICdcXG4nKSB7XG5cdFx0XHRpZiAoZXNjYXBlQ29kZSAmJiBjb2RlKSB7XG5cdFx0XHRcdHJldHVyblZhbHVlICs9IHdyYXBBbnNpQ29kZShlc2NhcGVDb2RlKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGVzY2FwZVVybCkge1xuXHRcdFx0XHRyZXR1cm5WYWx1ZSArPSB3cmFwQW5zaUh5cGVybGluayhlc2NhcGVVcmwpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXR1cm5WYWx1ZTtcbn07XG5cbi8vIEZvciBlYWNoIG5ld2xpbmUsIGludm9rZSB0aGUgbWV0aG9kIHNlcGFyYXRlbHlcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdyYXBBbnNpKHN0cmluZywgY29sdW1ucywgb3B0aW9ucykge1xuXHRyZXR1cm4gU3RyaW5nKHN0cmluZylcblx0XHQubm9ybWFsaXplKClcblx0XHQucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKVxuXHRcdC5zcGxpdCgnXFxuJylcblx0XHQubWFwKGxpbmUgPT4gZXhlYyhsaW5lLCBjb2x1bW5zLCBvcHRpb25zKSlcblx0XHQuam9pbignXFxuJyk7XG59XG4iLCJpbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IGFuc2lFc2NhcGVzIGZyb20gJ2Fuc2ktZXNjYXBlcyc7XG5pbXBvcnQgY2xpQ3Vyc29yIGZyb20gJ2NsaS1jdXJzb3InO1xuaW1wb3J0IHdyYXBBbnNpIGZyb20gJ3dyYXAtYW5zaSc7XG5pbXBvcnQgc2xpY2VBbnNpIGZyb20gJ3NsaWNlLWFuc2knO1xuXG5jb25zdCBkZWZhdWx0VGVybWluYWxIZWlnaHQgPSAyNDtcblxuY29uc3QgZ2V0V2lkdGggPSBzdHJlYW0gPT4ge1xuXHRjb25zdCB7Y29sdW1uc30gPSBzdHJlYW07XG5cblx0aWYgKCFjb2x1bW5zKSB7XG5cdFx0cmV0dXJuIDgwO1xuXHR9XG5cblx0cmV0dXJuIGNvbHVtbnM7XG59O1xuXG5jb25zdCBmaXRUb1Rlcm1pbmFsSGVpZ2h0ID0gKHN0cmVhbSwgdGV4dCkgPT4ge1xuXHRjb25zdCB0ZXJtaW5hbEhlaWdodCA9IHN0cmVhbS5yb3dzIHx8IGRlZmF1bHRUZXJtaW5hbEhlaWdodDtcblx0Y29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KCdcXG4nKTtcblxuXHRjb25zdCB0b1JlbW92ZSA9IGxpbmVzLmxlbmd0aCAtIHRlcm1pbmFsSGVpZ2h0O1xuXHRpZiAodG9SZW1vdmUgPD0gMCkge1xuXHRcdHJldHVybiB0ZXh0O1xuXHR9XG5cblx0cmV0dXJuIHNsaWNlQW5zaShcblx0XHR0ZXh0LFxuXHRcdGxpbmVzLnNsaWNlKDAsIHRvUmVtb3ZlKS5qb2luKCdcXG4nKS5sZW5ndGggKyAxLFxuXHRcdHRleHQubGVuZ3RoKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dVcGRhdGUoc3RyZWFtLCB7c2hvd0N1cnNvciA9IGZhbHNlfSA9IHt9KSB7XG5cdGxldCBwcmV2aW91c0xpbmVDb3VudCA9IDA7XG5cdGxldCBwcmV2aW91c1dpZHRoID0gZ2V0V2lkdGgoc3RyZWFtKTtcblx0bGV0IHByZXZpb3VzT3V0cHV0ID0gJyc7XG5cblx0Y29uc3QgcmVuZGVyID0gKC4uLmFyZ3VtZW50c18pID0+IHtcblx0XHRpZiAoIXNob3dDdXJzb3IpIHtcblx0XHRcdGNsaUN1cnNvci5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0bGV0IG91dHB1dCA9IGFyZ3VtZW50c18uam9pbignICcpICsgJ1xcbic7XG5cdFx0b3V0cHV0ID0gZml0VG9UZXJtaW5hbEhlaWdodChzdHJlYW0sIG91dHB1dCk7XG5cdFx0Y29uc3Qgd2lkdGggPSBnZXRXaWR0aChzdHJlYW0pO1xuXHRcdGlmIChvdXRwdXQgPT09IHByZXZpb3VzT3V0cHV0ICYmIHByZXZpb3VzV2lkdGggPT09IHdpZHRoKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cHJldmlvdXNPdXRwdXQgPSBvdXRwdXQ7XG5cdFx0cHJldmlvdXNXaWR0aCA9IHdpZHRoO1xuXHRcdG91dHB1dCA9IHdyYXBBbnNpKG91dHB1dCwgd2lkdGgsIHtcblx0XHRcdHRyaW06IGZhbHNlLFxuXHRcdFx0aGFyZDogdHJ1ZSxcblx0XHRcdHdvcmRXcmFwOiBmYWxzZSxcblx0XHR9KTtcblx0XHRzdHJlYW0ud3JpdGUoYW5zaUVzY2FwZXMuZXJhc2VMaW5lcyhwcmV2aW91c0xpbmVDb3VudCkgKyBvdXRwdXQpO1xuXHRcdHByZXZpb3VzTGluZUNvdW50ID0gb3V0cHV0LnNwbGl0KCdcXG4nKS5sZW5ndGg7XG5cdH07XG5cblx0cmVuZGVyLmNsZWFyID0gKCkgPT4ge1xuXHRcdHN0cmVhbS53cml0ZShhbnNpRXNjYXBlcy5lcmFzZUxpbmVzKHByZXZpb3VzTGluZUNvdW50KSk7XG5cdFx0cHJldmlvdXNPdXRwdXQgPSAnJztcblx0XHRwcmV2aW91c1dpZHRoID0gZ2V0V2lkdGgoc3RyZWFtKTtcblx0XHRwcmV2aW91c0xpbmVDb3VudCA9IDA7XG5cdH07XG5cblx0cmVuZGVyLmRvbmUgPSAoKSA9PiB7XG5cdFx0cHJldmlvdXNPdXRwdXQgPSAnJztcblx0XHRwcmV2aW91c1dpZHRoID0gZ2V0V2lkdGgoc3RyZWFtKTtcblx0XHRwcmV2aW91c0xpbmVDb3VudCA9IDA7XG5cblx0XHRpZiAoIXNob3dDdXJzb3IpIHtcblx0XHRcdGNsaUN1cnNvci5zaG93KCk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiByZW5kZXI7XG59XG5cbmNvbnN0IGxvZ1VwZGF0ZSA9IGNyZWF0ZUxvZ1VwZGF0ZShwcm9jZXNzLnN0ZG91dCk7XG5leHBvcnQgZGVmYXVsdCBsb2dVcGRhdGU7XG5cbmV4cG9ydCBjb25zdCBsb2dVcGRhdGVTdGRlcnIgPSBjcmVhdGVMb2dVcGRhdGUocHJvY2Vzcy5zdGRlcnIpO1xuIiwiaW1wb3J0IHsgY3JlYXRlTG9nVXBkYXRlIH0gZnJvbSAnbG9nLXVwZGF0ZSdcbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgY2xpVHJ1bmNhdGUgZnJvbSAnY2xpLXRydW5jYXRlJ1xuaW1wb3J0IHN0cmlwQW5zaSBmcm9tICdzdHJpcC1hbnNpJ1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRUZXN0cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgRl9SSUdIVCB9IGZyb20gJy4vZmlndXJlcydcbmltcG9ydCB7IGdldENvbHMsIGdldFN0YXRlU3ltYm9sIH0gZnJvbSAnLi91dGlscydcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UmVuZGVyZXJPcHRpb25zIHtcbiAgcmVuZGVyU3VjY2VlZD86IGJvb2xlYW5cbiAgb3V0cHV0U3RyZWFtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW1cbn1cblxuY29uc3QgRFVSQVRJT05fTE9ORyA9IDMwMFxuXG5jb25zdCBvdXRwdXRNYXAgPSBuZXcgV2Vha01hcDxUYXNrLCBzdHJpbmc+KClcblxuZnVuY3Rpb24gZm9ybWF0RmlsZXBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGxhc3RTbGFzaCA9IE1hdGgubWF4KHBhdGgubGFzdEluZGV4T2YoJy8nKSArIDEsIDApXG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aC5zbGljZShsYXN0U2xhc2gpXG4gIGxldCBmaXJzdERvdCA9IGJhc2VuYW1lLmluZGV4T2YoJy4nKVxuICBpZiAoZmlyc3REb3QgPCAwKVxuICAgIGZpcnN0RG90ID0gYmFzZW5hbWUubGVuZ3RoXG4gIGZpcnN0RG90ICs9IGxhc3RTbGFzaFxuXG4gIHJldHVybiBjLmRpbShwYXRoLnNsaWNlKDAsIGxhc3RTbGFzaCkpICsgcGF0aC5zbGljZShsYXN0U2xhc2gsIGZpcnN0RG90KSArIGMuZGltKHBhdGguc2xpY2UoZmlyc3REb3QpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyVHJlZSh0YXNrczogVGFza1tdLCBvcHRpb25zOiBMaXN0UmVuZGVyZXJPcHRpb25zLCBsZXZlbCA9IDApIHtcbiAgbGV0IG91dHB1dDogc3RyaW5nW10gPSBbXVxuXG4gIGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuICAgIGxldCBzdWZmaXggPSAnJ1xuICAgIGNvbnN0IHByZWZpeCA9IGAgJHtnZXRTdGF0ZVN5bWJvbCh0YXNrKX0gYFxuXG4gICAgaWYgKHRhc2sudHlwZSA9PT0gJ3N1aXRlJylcbiAgICAgIHN1ZmZpeCArPSBjLmRpbShgICgke2dldFRlc3RzKHRhc2spLmxlbmd0aH0pYClcblxuICAgIGlmICh0YXNrLm1vZGUgPT09ICdza2lwJyB8fCB0YXNrLm1vZGUgPT09ICd0b2RvJylcbiAgICAgIHN1ZmZpeCArPSBgICR7Yy5kaW0oYy5ncmF5KCdbc2tpcHBlZF0nKSl9YFxuXG4gICAgaWYgKHRhc2sucmVzdWx0Py5kdXJhdGlvbiAhPSBudWxsKSB7XG4gICAgICBpZiAodGFzay5yZXN1bHQuZHVyYXRpb24gPiBEVVJBVElPTl9MT05HKVxuICAgICAgICBzdWZmaXggKz0gYy55ZWxsb3coYCAke01hdGgucm91bmQodGFzay5yZXN1bHQuZHVyYXRpb24pfSR7Yy5kaW0oJ21zJyl9YClcbiAgICB9XG5cbiAgICBsZXQgbmFtZSA9IHRhc2submFtZVxuICAgIGlmIChsZXZlbCA9PT0gMClcbiAgICAgIG5hbWUgPSBmb3JtYXRGaWxlcGF0aChuYW1lKVxuICAgIG91dHB1dC5wdXNoKCcgICcucmVwZWF0KGxldmVsKSArIHByZWZpeCArIG5hbWUgKyBzdWZmaXgpXG5cbiAgICBpZiAoKHRhc2sucmVzdWx0Py5zdGF0ZSAhPT0gJ3Bhc3MnKSAmJiBvdXRwdXRNYXAuZ2V0KHRhc2spICE9IG51bGwpIHtcbiAgICAgIGxldCBkYXRhOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvdXRwdXRNYXAuZ2V0KHRhc2spXG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZGF0YSA9IHN0cmlwQW5zaShkYXRhLnRyaW0oKS5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pLnBvcCgpISlcbiAgICAgICAgaWYgKGRhdGEgPT09ICcnKVxuICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBvdXQgPSBgJHsnICAnLnJlcGVhdChsZXZlbCl9JHtGX1JJR0hUfSAke2RhdGF9YFxuICAgICAgICBvdXRwdXQucHVzaChgICAgJHtjLmdyYXkoY2xpVHJ1bmNhdGUob3V0LCBnZXRDb2xzKC0zKSkpfWApXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0YXNrLnR5cGUgPT09ICdzdWl0ZScgJiYgdGFzay50YXNrcy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoKHRhc2sucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnIHx8IHRhc2sucmVzdWx0Py5zdGF0ZSA9PT0gJ3J1bicgfHwgb3B0aW9ucy5yZW5kZXJTdWNjZWVkKSlcbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmNvbmNhdChyZW5kZXJUcmVlKHRhc2sudGFza3MsIG9wdGlvbnMsIGxldmVsICsgMSkpXG4gICAgfVxuICB9XG5cbiAgLy8gVE9ETzogbW92aW5nIHdpbmRvd3NcbiAgcmV0dXJuIG91dHB1dC5qb2luKCdcXG4nKVxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlTGlzdFJlbmRlcmVyID0gKF90YXNrczogVGFza1tdLCBvcHRpb25zOiBMaXN0UmVuZGVyZXJPcHRpb25zKSA9PiB7XG4gIGxldCB0YXNrcyA9IF90YXNrc1xuICBsZXQgdGltZXI6IGFueVxuXG4gIGNvbnN0IGxvZyA9IGNyZWF0ZUxvZ1VwZGF0ZShvcHRpb25zLm91dHB1dFN0cmVhbSlcblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgbG9nKHJlbmRlclRyZWUodGFza3MsIG9wdGlvbnMpKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydCgpIHtcbiAgICAgIGlmICh0aW1lcilcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwodXBkYXRlLCAyMDApXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0sXG4gICAgdXBkYXRlKF90YXNrczogVGFza1tdKSB7XG4gICAgICB0YXNrcyA9IF90YXNrc1xuICAgICAgdXBkYXRlKClcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcbiAgICBhc3luYyBzdG9wKCkge1xuICAgICAgaWYgKHRpbWVyKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpXG4gICAgICAgIHRpbWVyID0gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBsb2cuY2xlYXIoKVxuICAgICAgb3B0aW9ucy5vdXRwdXRTdHJlYW0ud3JpdGUoYCR7cmVuZGVyVHJlZSh0YXNrcywgb3B0aW9ucyl9XFxuYClcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGxvZy5jbGVhcigpXG4gICAgfSxcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBVc2VyQ29uc29sZUxvZyB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgQmFzZVJlcG9ydGVyIH0gZnJvbSAnLi9iYXNlJ1xuaW1wb3J0IHR5cGUgeyBMaXN0UmVuZGVyZXJPcHRpb25zIH0gZnJvbSAnLi9yZW5kZXJlcnMvbGlzdFJlbmRlcmVyJ1xuaW1wb3J0IHsgY3JlYXRlTGlzdFJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlcnMvbGlzdFJlbmRlcmVyJ1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFJlcG9ydGVyIGV4dGVuZHMgQmFzZVJlcG9ydGVyIHtcbiAgcmVuZGVyZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVMaXN0UmVuZGVyZXI+XG4gIHJlbmRlcmVyT3B0aW9uczogTGlzdFJlbmRlcmVyT3B0aW9ucyA9IHt9IGFzIGFueVxuXG4gIG9uQ29sbGVjdGVkKCkge1xuICAgIGlmICh0aGlzLmlzVFRZKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyT3B0aW9ucy5vdXRwdXRTdHJlYW0gPSB0aGlzLmN0eC5vdXRwdXRTdHJlYW1cbiAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXModGhpcy53YXRjaEZpbHRlcnMpXG4gICAgICBpZiAoIXRoaXMucmVuZGVyZXIpXG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSBjcmVhdGVMaXN0UmVuZGVyZXIoZmlsZXMsIHRoaXMucmVuZGVyZXJPcHRpb25zKS5zdGFydCgpXG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMucmVuZGVyZXIudXBkYXRlKGZpbGVzKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uRmluaXNoZWQoZmlsZXMgPSB0aGlzLmN0eC5zdGF0ZS5nZXRGaWxlcygpKSB7XG4gICAgYXdhaXQgdGhpcy5zdG9wTGlzdFJlbmRlcigpXG4gICAgdGhpcy5jdHgubG9nKClcbiAgICBhd2FpdCBzdXBlci5vbkZpbmlzaGVkKGZpbGVzKVxuICB9XG5cbiAgYXN5bmMgb25XYXRjaGVyU3RhcnQoKSB7XG4gICAgYXdhaXQgdGhpcy5zdG9wTGlzdFJlbmRlcigpXG4gICAgc3VwZXIub25XYXRjaGVyU3RhcnQoKVxuICB9XG5cbiAgYXN5bmMgc3RvcExpc3RSZW5kZXIoKSB7XG4gICAgYXdhaXQgdGhpcy5yZW5kZXJlcj8uc3RvcCgpXG4gICAgdGhpcy5yZW5kZXJlciA9IHVuZGVmaW5lZFxuICB9XG5cbiAgYXN5bmMgb25XYXRjaGVyUmVydW4oZmlsZXM6IHN0cmluZ1tdLCB0cmlnZ2VyPzogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5zdG9wTGlzdFJlbmRlcigpXG4gICAgYXdhaXQgc3VwZXIub25XYXRjaGVyUmVydW4oZmlsZXMsIHRyaWdnZXIpXG4gIH1cblxuICBvblVzZXJDb25zb2xlTG9nKGxvZzogVXNlckNvbnNvbGVMb2cpIHtcbiAgICB0aGlzLnJlbmRlcmVyPy5jbGVhcigpXG4gICAgc3VwZXIub25Vc2VyQ29uc29sZUxvZyhsb2cpXG4gIH1cbn1cbiIsImltcG9ydCB7IGNyZWF0ZUxvZ1VwZGF0ZSB9IGZyb20gJ2xvZy11cGRhdGUnXG5pbXBvcnQgYyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRUZXN0cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIERvdFJlbmRlcmVyT3B0aW9ucyB7XG4gIG91dHB1dFN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtXG59XG5cbmNvbnN0IGNoZWNrID0gYy5ncmVlbignwrcnKVxuY29uc3QgY3Jvc3MgPSBjLnJlZCgneCcpXG5jb25zdCBwZW5kaW5nID0gYy55ZWxsb3coJyonKVxuY29uc3Qgc2tpcCA9IGMuZGltKGMuZ3JheSgnLScpKVxuXG5mdW5jdGlvbiByZW5kZXIodGFza3M6IFRhc2tbXSkge1xuICBjb25zdCBhbGwgPSBnZXRUZXN0cyh0YXNrcylcbiAgcmV0dXJuIGFsbC5tYXAoKGkpID0+IHtcbiAgICBpZiAoaS5tb2RlID09PSAnc2tpcCcgfHwgaS5tb2RlID09PSAndG9kbycpXG4gICAgICByZXR1cm4gc2tpcFxuICAgIHN3aXRjaCAoaS5yZXN1bHQ/LnN0YXRlKSB7XG4gICAgICBjYXNlICdwYXNzJzpcbiAgICAgICAgcmV0dXJuIGNoZWNrXG4gICAgICBjYXNlICdmYWlsJzpcbiAgICAgICAgcmV0dXJuIGNyb3NzXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcGVuZGluZ1xuICAgIH1cbiAgfSkuam9pbignJylcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURvdFJlbmRlcmVyID0gKF90YXNrczogVGFza1tdLCBvcHRpb25zOiBEb3RSZW5kZXJlck9wdGlvbnMpID0+IHtcbiAgbGV0IHRhc2tzID0gX3Rhc2tzXG4gIGxldCB0aW1lcjogYW55XG5cbiAgY29uc3QgbG9nID0gY3JlYXRlTG9nVXBkYXRlKG9wdGlvbnMub3V0cHV0U3RyZWFtKVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBsb2cocmVuZGVyKHRhc2tzKSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhcnQoKSB7XG4gICAgICBpZiAodGltZXIpXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB0aW1lciA9IHNldEludGVydmFsKHVwZGF0ZSwgMjAwKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9LFxuICAgIHVwZGF0ZShfdGFza3M6IFRhc2tbXSkge1xuICAgICAgdGFza3MgPSBfdGFza3NcbiAgICAgIHVwZGF0ZSgpXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0sXG4gICAgYXN5bmMgc3RvcCgpIHtcbiAgICAgIGlmICh0aW1lcikge1xuICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKVxuICAgICAgICB0aW1lciA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgbG9nLmNsZWFyKClcbiAgICAgIG9wdGlvbnMub3V0cHV0U3RyZWFtLndyaXRlKGAke3JlbmRlcih0YXNrcyl9XFxuYClcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGxvZy5jbGVhcigpXG4gICAgfSxcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBVc2VyQ29uc29sZUxvZyB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgQmFzZVJlcG9ydGVyIH0gZnJvbSAnLi9iYXNlJ1xuaW1wb3J0IHsgY3JlYXRlRG90UmVuZGVyZXIgfSBmcm9tICcuL3JlbmRlcmVycy9kb3RSZW5kZXJlcidcbmltcG9ydCB0eXBlIHsgY3JlYXRlTGlzdFJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlcnMvbGlzdFJlbmRlcmVyJ1xuXG5leHBvcnQgY2xhc3MgRG90UmVwb3J0ZXIgZXh0ZW5kcyBCYXNlUmVwb3J0ZXIge1xuICByZW5kZXJlcj86IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUxpc3RSZW5kZXJlcj5cblxuICBvbkNvbGxlY3RlZCgpIHtcbiAgICBpZiAodGhpcy5pc1RUWSkge1xuICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmN0eC5zdGF0ZS5nZXRGaWxlcyh0aGlzLndhdGNoRmlsdGVycylcbiAgICAgIGlmICghdGhpcy5yZW5kZXJlcilcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IGNyZWF0ZURvdFJlbmRlcmVyKGZpbGVzLCB7IG91dHB1dFN0cmVhbTogdGhpcy5jdHgub3V0cHV0U3RyZWFtIH0pLnN0YXJ0KClcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5yZW5kZXJlci51cGRhdGUoZmlsZXMpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25GaW5pc2hlZChmaWxlcyA9IHRoaXMuY3R4LnN0YXRlLmdldEZpbGVzKCkpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BMaXN0UmVuZGVyKClcbiAgICB0aGlzLmN0eC5sb2coKVxuICAgIGF3YWl0IHN1cGVyLm9uRmluaXNoZWQoZmlsZXMpXG4gIH1cblxuICBhc3luYyBvbldhdGNoZXJTdGFydCgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BMaXN0UmVuZGVyKClcbiAgICBzdXBlci5vbldhdGNoZXJTdGFydCgpXG4gIH1cblxuICBhc3luYyBzdG9wTGlzdFJlbmRlcigpIHtcbiAgICB0aGlzLnJlbmRlcmVyPy5zdG9wKClcbiAgICB0aGlzLnJlbmRlcmVyID0gdW5kZWZpbmVkXG4gICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwKSlcbiAgfVxuXG4gIGFzeW5jIG9uV2F0Y2hlclJlcnVuKGZpbGVzOiBzdHJpbmdbXSwgdHJpZ2dlcj86IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuc3RvcExpc3RSZW5kZXIoKVxuICAgIGF3YWl0IHN1cGVyLm9uV2F0Y2hlclJlcnVuKGZpbGVzLCB0cmlnZ2VyKVxuICB9XG5cbiAgb25Vc2VyQ29uc29sZUxvZyhsb2c6IFVzZXJDb25zb2xlTG9nKSB7XG4gICAgdGhpcy5yZW5kZXJlcj8uY2xlYXIoKVxuICAgIHN1cGVyLm9uVXNlckNvbnNvbGVMb2cobG9nKVxuICB9XG59XG4iLCJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBWaXRlc3QgfSBmcm9tICcuLi8uLi9ub2RlJ1xuaW1wb3J0IHR5cGUgeyBGaWxlLCBSZXBvcnRlciB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0U3VpdGVzLCBnZXRUZXN0cyB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuXG4vLyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB0aGUgcmVwb3J0ZXIgcHJvZHVjZXMgYSBKU09OIHNpbWlsYXIgdG8gdGhlIG9uZSBwcm9kdWNlZCBieSB0aGUgSmVzdCBKU09OIHJlcG9ydGVyXG4vLyB0aGUgZm9sbG93aW5nIHR5cGVzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgSmVzdCByZXBvc2l0b3J5IChhbmQgc2ltcGxpZmllZClcbmludGVyZmFjZSBUZXN0UmVzdWx0IHtcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmdcbiAgZmFpbHVyZU1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsXG4gIHNraXBwZWQ6IGJvb2xlYW5cbiAgc3RhdHVzPzogc3RyaW5nXG4gIHRlc3RGaWxlUGF0aD86IHN0cmluZ1xufVxuaW50ZXJmYWNlIEFnZ3JlZ2F0ZWRSZXN1bHQge1xuICBudW1GYWlsZWRUZXN0czogbnVtYmVyXG4gIG51bUZhaWxlZFRlc3RTdWl0ZXM6IG51bWJlclxuICBudW1QYXNzZWRUZXN0czogbnVtYmVyXG4gIG51bVBhc3NlZFRlc3RTdWl0ZXM6IG51bWJlclxuICBudW1QZW5kaW5nVGVzdHM6IG51bWJlclxuICBudW1Ub2RvVGVzdHM6IG51bWJlclxuICBudW1QZW5kaW5nVGVzdFN1aXRlczogbnVtYmVyXG4gIG51bVRvdGFsVGVzdHM6IG51bWJlclxuICBudW1Ub3RhbFRlc3RTdWl0ZXM6IG51bWJlclxuICBzdGFydFRpbWU6IG51bWJlclxuICBzdWNjZXNzOiBib29sZWFuXG4gIHRlc3RSZXN1bHRzOiBBcnJheTxUZXN0UmVzdWx0PlxufVxuXG5leHBvcnQgY2xhc3MgSnNvblJlcG9ydGVyIGltcGxlbWVudHMgUmVwb3J0ZXIge1xuICBzdGFydCA9IDBcbiAgY3R4ITogVml0ZXN0XG5cbiAgb25Jbml0KGN0eDogVml0ZXN0KTogdm9pZCB7XG4gICAgdGhpcy5jdHggPSBjdHhcbiAgICB0aGlzLnN0YXJ0ID0gRGF0ZS5ub3coKVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGxvZ1Rhc2tzKGZpbGVzOiBGaWxlW10pIHtcbiAgICBjb25zdCBzdWl0ZXMgPSBnZXRTdWl0ZXMoZmlsZXMpXG4gICAgY29uc3QgbnVtVG90YWxUZXN0U3VpdGVzID0gc3VpdGVzLmxlbmd0aFxuICAgIGNvbnN0IHRlc3RzID0gZ2V0VGVzdHMoZmlsZXMpXG4gICAgY29uc3QgbnVtVG90YWxUZXN0cyA9IHRlc3RzLmxlbmd0aFxuXG4gICAgY29uc3QgbnVtRmFpbGVkVGVzdFN1aXRlcyA9IHN1aXRlcy5maWx0ZXIocyA9PiBzLnJlc3VsdD8uZXJyb3IpLmxlbmd0aFxuICAgIGNvbnN0IG51bVBhc3NlZFRlc3RTdWl0ZXMgPSBudW1Ub3RhbFRlc3RTdWl0ZXMgLSBudW1GYWlsZWRUZXN0U3VpdGVzXG4gICAgY29uc3QgbnVtUGVuZGluZ1Rlc3RTdWl0ZXMgPSBzdWl0ZXMuZmlsdGVyKHMgPT4gcy5yZXN1bHQ/LnN0YXRlID09PSAncnVuJykubGVuZ3RoXG4gICAgY29uc3QgbnVtRmFpbGVkVGVzdHMgPSB0ZXN0cy5maWx0ZXIodCA9PiB0LnJlc3VsdD8uc3RhdGUgPT09ICdmYWlsJykubGVuZ3RoXG4gICAgY29uc3QgbnVtUGFzc2VkVGVzdHMgPSBudW1Ub3RhbFRlc3RzIC0gbnVtRmFpbGVkVGVzdHNcbiAgICBjb25zdCBudW1QZW5kaW5nVGVzdHMgPSB0ZXN0cy5maWx0ZXIodCA9PiB0LnJlc3VsdD8uc3RhdGUgPT09ICdydW4nKS5sZW5ndGhcbiAgICBjb25zdCBudW1Ub2RvVGVzdHMgPSB0ZXN0cy5maWx0ZXIodCA9PiB0Lm1vZGUgPT09ICd0b2RvJykubGVuZ3RoXG5cbiAgICBjb25zdCBzdWNjZXNzID0gbnVtRmFpbGVkVGVzdFN1aXRlcyA9PT0gMCAmJiBudW1GYWlsZWRUZXN0cyA9PT0gMFxuXG4gICAgY29uc3QgdGVzdFJlc3VsdHM6IEFycmF5PFRlc3RSZXN1bHQ+ID0gdGVzdHMubWFwKHQgPT4gKHtcbiAgICAgIGRpc3BsYXlOYW1lOiB0Lm5hbWUsXG4gICAgICBmYWlsdXJlTWVzc2FnZTogdC5yZXN1bHQ/LmVycm9yPy5tZXNzYWdlLFxuICAgICAgc2tpcHBlZDogdC5yZXN1bHQ/LnN0YXRlID09PSAnc2tpcCcsXG4gICAgICBzdGF0dXM6IHQucmVzdWx0Py5zdGF0ZSxcbiAgICAgIHRlc3RGaWxlUGF0aDogdC5maWxlPy5maWxlcGF0aCxcbiAgICB9KSlcblxuICAgIGNvbnN0IHJlc3VsdDogQWdncmVnYXRlZFJlc3VsdCA9IHsgbnVtVG90YWxUZXN0U3VpdGVzLCBudW1QYXNzZWRUZXN0U3VpdGVzLCBudW1GYWlsZWRUZXN0U3VpdGVzLCBudW1QZW5kaW5nVGVzdFN1aXRlcywgbnVtVG90YWxUZXN0cywgbnVtUGFzc2VkVGVzdHMsIG51bUZhaWxlZFRlc3RzLCBudW1QZW5kaW5nVGVzdHMsIG51bVRvZG9UZXN0cywgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0LCBzdWNjZXNzLCB0ZXN0UmVzdWx0cyB9XG5cbiAgICBhd2FpdCB0aGlzLndyaXRlUmVwb3J0KEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikpXG4gIH1cblxuICBhc3luYyBvbkZpbmlzaGVkKGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKSkge1xuICAgIGF3YWl0IHRoaXMubG9nVGFza3MoZmlsZXMpXG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSByZXBvcnQgdG8gYW4gb3V0cHV0IGZpbGUgaWYgc3BlY2lmaWVkIGluIHRoZSBjb25maWcsXG4gICAqIG9yIGxvZ3MgaXQgdG8gdGhlIGNvbnNvbGUgb3RoZXJ3aXNlLlxuICAgKiBAcGFyYW0gcmVwb3J0XG4gICAqL1xuICBhc3luYyB3cml0ZVJlcG9ydChyZXBvcnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmN0eC5jb25maWcub3V0cHV0RmlsZSkge1xuICAgICAgY29uc3QgcmVwb3J0RmlsZSA9IHJlc29sdmUodGhpcy5jdHguY29uZmlnLnJvb3QsIHRoaXMuY3R4LmNvbmZpZy5vdXRwdXRGaWxlKVxuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHJlcG9ydEZpbGUsIHJlcG9ydCwgJ3V0Zi04JylcbiAgICAgIHRoaXMuY3R4LmxvZyhgSlNPTiByZXBvcnQgd3JpdHRlbiB0byAke3JlcG9ydEZpbGV9YClcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmN0eC5sb2cocmVwb3J0KVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgRGVmYXVsdFJlcG9ydGVyIH0gZnJvbSAnLi9kZWZhdWx0J1xuXG5leHBvcnQgY2xhc3MgVmVyYm9zZVJlcG9ydGVyIGV4dGVuZHMgRGVmYXVsdFJlcG9ydGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMucmVuZGVyZXJPcHRpb25zLnJlbmRlclN1Y2NlZWQgPSB0cnVlXG4gIH1cbn1cbiIsImV4cG9ydCBjbGFzcyBJbmRlbnRlZExvZ2dlcjxUID0gYW55PiB7XG4gIHByaXZhdGUgY3VycmVudEluZGVudCA9ICcnXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYXNlTG9nOiAodGV4dDogc3RyaW5nKSA9PiBUKSB7XG4gIH1cblxuICBpbmRlbnQoKSB7XG4gICAgdGhpcy5jdXJyZW50SW5kZW50ICs9ICcgICAgJ1xuICB9XG5cbiAgdW5pbmRlbnQoKSB7XG4gICAgdGhpcy5jdXJyZW50SW5kZW50ID0gdGhpcy5jdXJyZW50SW5kZW50LnN1YnN0cmluZygwLCB0aGlzLmN1cnJlbnRJbmRlbnQubGVuZ3RoIC0gNClcbiAgfVxuXG4gIGxvZyh0ZXh0OiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlTG9nKHRoaXMuY3VycmVudEluZGVudCArIHRleHQpXG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgVml0ZXN0IH0gZnJvbSAnLi4vLi4vbm9kZSdcbmltcG9ydCB0eXBlIHsgUGFyc2VkU3RhY2ssIFJlcG9ydGVyLCBUYXNrIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVN0YWNrdHJhY2UgfSBmcm9tICcuLi8uLi91dGlscy9zb3VyY2UtbWFwJ1xuaW1wb3J0IHsgSW5kZW50ZWRMb2dnZXIgfSBmcm9tICcuL3V0aWxzL2luZGVudGVkLWxvZ2dlcidcblxuZnVuY3Rpb24geWFtbFN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgXCIke3N0ci5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJyl9XCJgXG59XG5cbmZ1bmN0aW9uIHRhcFN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFRlc3QgbmFtZSBjYW5ub3QgY29udGFpbiAjXG4gIC8vIFRlc3QgbmFtZSBjYW5ub3Qgc3RhcnQgd2l0aCBudW1iZXJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8jL2csICc/JykucmVwbGFjZSgvXlswLTldKy8sICc/Jylcbn1cblxuZXhwb3J0IGNsYXNzIFRhcFJlcG9ydGVyIGltcGxlbWVudHMgUmVwb3J0ZXIge1xuICBwcm90ZWN0ZWQgY3R4ITogVml0ZXN0XG4gIHByaXZhdGUgbG9nZ2VyITogSW5kZW50ZWRMb2dnZXJcblxuICBvbkluaXQoY3R4OiBWaXRlc3QpOiB2b2lkIHtcbiAgICB0aGlzLmN0eCA9IGN0eFxuICAgIHRoaXMubG9nZ2VyID0gbmV3IEluZGVudGVkTG9nZ2VyKHRoaXMuY3R4LmxvZy5iaW5kKHRoaXMuY3R4KSlcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb21tZW50KHRhc2s6IFRhc2spOiBzdHJpbmcge1xuICAgIGlmICh0YXNrLm1vZGUgPT09ICdza2lwJylcbiAgICAgIHJldHVybiAnICMgU0tJUCdcbiAgICBlbHNlIGlmICh0YXNrLm1vZGUgPT09ICd0b2RvJylcbiAgICAgIHJldHVybiAnICMgVE9ETydcbiAgICBlbHNlIGlmICh0YXNrLnJlc3VsdD8uZHVyYXRpb24gIT0gbnVsbClcbiAgICAgIHJldHVybiBgICMgdGltZT0ke3Rhc2sucmVzdWx0LmR1cmF0aW9uLnRvRml4ZWQoMil9bXNgXG4gICAgZWxzZVxuICAgICAgcmV0dXJuICcnXG4gIH1cblxuICBwcml2YXRlIGxvZ0Vycm9yRGV0YWlscyhlcnJvcjogRXJyb3IsIHN0YWNrPzogUGFyc2VkU3RhY2spIHtcbiAgICB0aGlzLmxvZ2dlci5sb2coYG5hbWU6ICR7eWFtbFN0cmluZyhlcnJvci5uYW1lKX1gKVxuICAgIHRoaXMubG9nZ2VyLmxvZyhgbWVzc2FnZTogJHt5YW1sU3RyaW5nKGVycm9yLm1lc3NhZ2UpfWApXG5cbiAgICBpZiAoc3RhY2spIHtcbiAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggdGFwLW1vY2hhLXJlcG90ZXJcbiAgICAgIHRoaXMubG9nZ2VyLmxvZyhgc3RhY2s6ICR7eWFtbFN0cmluZyhgJHtzdGFjay5maWxlfToke3N0YWNrLmxpbmV9OiR7c3RhY2suY29sdW1ufWApfWApXG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGxvZ1Rhc2tzKHRhc2tzOiBUYXNrW10pIHtcbiAgICB0aGlzLmxvZ2dlci5sb2coYDEuLiR7dGFza3MubGVuZ3RofWApXG5cbiAgICBmb3IgKGNvbnN0IFtpLCB0YXNrXSBvZiB0YXNrcy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IGlkID0gaSArIDFcblxuICAgICAgY29uc3Qgb2sgPSB0YXNrLnJlc3VsdD8uc3RhdGUgPT09ICdwYXNzJyB8fCB0YXNrLm1vZGUgPT09ICdza2lwJyB8fCB0YXNrLm1vZGUgPT09ICd0b2RvJyA/ICdvaycgOiAnbm90IG9rJ1xuXG4gICAgICBjb25zdCBjb21tZW50ID0gVGFwUmVwb3J0ZXIuZ2V0Q29tbWVudCh0YXNrKVxuXG4gICAgICBpZiAodGFzay50eXBlID09PSAnc3VpdGUnICYmIHRhc2sudGFza3MubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYCR7b2t9ICR7aWR9IC0gJHt0YXBTdHJpbmcodGFzay5uYW1lKX0ke2NvbW1lbnR9IHtgKVxuXG4gICAgICAgIHRoaXMubG9nZ2VyLmluZGVudCgpXG4gICAgICAgIHRoaXMubG9nVGFza3ModGFzay50YXNrcylcbiAgICAgICAgdGhpcy5sb2dnZXIudW5pbmRlbnQoKVxuXG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZygnfScpXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKGAke29rfSAke2lkfSAtICR7dGFwU3RyaW5nKHRhc2submFtZSl9JHtjb21tZW50fWApXG5cbiAgICAgICAgaWYgKHRhc2sucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnICYmIHRhc2sucmVzdWx0LmVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5kZW50KClcblxuICAgICAgICAgIGNvbnN0IGVycm9yID0gdGFzay5yZXN1bHQuZXJyb3JcbiAgICAgICAgICBjb25zdCBzdGFja3MgPSBwYXJzZVN0YWNrdHJhY2UoZXJyb3IpXG4gICAgICAgICAgY29uc3Qgc3RhY2sgPSBzdGFja3NbMF1cblxuICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZygnLS0tJylcbiAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coJ2Vycm9yOicpXG5cbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmRlbnQoKVxuICAgICAgICAgIHRoaXMubG9nRXJyb3JEZXRhaWxzKGVycm9yKVxuICAgICAgICAgIHRoaXMubG9nZ2VyLnVuaW5kZW50KClcblxuICAgICAgICAgIGlmIChzdGFjaylcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgYXQ6ICR7eWFtbFN0cmluZyhgJHtzdGFjay5maWxlfToke3N0YWNrLmxpbmV9OiR7c3RhY2suY29sdW1ufWApfWApXG5cbiAgICAgICAgICBpZiAoZXJyb3Iuc2hvd0RpZmYpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgYWN0dWFsOiAke3lhbWxTdHJpbmcoZXJyb3IuYWN0dWFsKX1gKVxuICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBleHBlY3RlZDogJHt5YW1sU3RyaW5nKGVycm9yLmV4cGVjdGVkKX1gKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZygnLi4uJylcbiAgICAgICAgICB0aGlzLmxvZ2dlci51bmluZGVudCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBvbkZpbmlzaGVkKGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKSkge1xuICAgIHRoaXMubG9nZ2VyLmxvZygnVEFQIHZlcnNpb24gMTMnKVxuXG4gICAgdGhpcy5sb2dUYXNrcyhmaWxlcylcbiAgfVxufVxuIiwiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcydcbmltcG9ydCB7IGhvc3RuYW1lIH0gZnJvbSAnb3MnXG5pbXBvcnQgeyByZWxhdGl2ZSwgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4uLy4uL25vZGUnXG5pbXBvcnQgdHlwZSB7IEVycm9yV2l0aERpZmYsIFJlcG9ydGVyLCBUYXNrIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVN0YWNrdHJhY2UgfSBmcm9tICcuLi8uLi91dGlscy9zb3VyY2UtbWFwJ1xuaW1wb3J0IHsgRl9QT0lOVEVSIH0gZnJvbSAnLi9yZW5kZXJlcnMvZmlndXJlcydcbmltcG9ydCB7IEluZGVudGVkTG9nZ2VyIH0gZnJvbSAnLi91dGlscy9pbmRlbnRlZC1sb2dnZXInXG5cbmZ1bmN0aW9uIGZsYXR0ZW5UYXNrcyh0YXNrOiBUYXNrLCBiYXNlTmFtZSA9ICcnKTogVGFza1tdIHtcbiAgY29uc3QgYmFzZSA9IGJhc2VOYW1lID8gYCR7YmFzZU5hbWV9ID4gYCA6ICcnXG5cbiAgaWYgKHRhc2sudHlwZSA9PT0gJ3N1aXRlJykge1xuICAgIHJldHVybiB0YXNrLnRhc2tzLmZsYXRNYXAoY2hpbGQgPT4gZmxhdHRlblRhc2tzKGNoaWxkLCBgJHtiYXNlfSR7dGFzay5uYW1lfWApKVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiBbe1xuICAgICAgLi4udGFzayxcbiAgICAgIG5hbWU6IGAke2Jhc2V9JHt0YXNrLm5hbWV9YCxcbiAgICB9XVxuICB9XG59XG5cbmZ1bmN0aW9uIGVzY2FwZVhNTCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcbiAgICAucmVwbGFjZSgvJy9nLCAnJmFwb3M7JylcbiAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxufVxuXG5mdW5jdGlvbiBnZXREdXJhdGlvbih0YXNrOiBUYXNrKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHRhc2sucmVzdWx0Py5kdXJhdGlvbiA/ICh0YXNrLnJlc3VsdC5kdXJhdGlvbiAvIDEwMDApLnRvRml4ZWQoMTApIDogdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjbGFzcyBKVW5pdFJlcG9ydGVyIGltcGxlbWVudHMgUmVwb3J0ZXIge1xuICBwcml2YXRlIGN0eCE6IFZpdGVzdFxuICBwcml2YXRlIHJlcG9ydEZpbGU/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiYXNlTG9nITogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBwcml2YXRlIGxvZ2dlciE6IEluZGVudGVkTG9nZ2VyPFByb21pc2U8dm9pZD4+XG5cbiAgYXN5bmMgb25Jbml0KGN0eDogVml0ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdHggPSBjdHhcblxuICAgIGlmICh0aGlzLmN0eC5jb25maWcub3V0cHV0RmlsZSkge1xuICAgICAgdGhpcy5yZXBvcnRGaWxlID0gcmVzb2x2ZSh0aGlzLmN0eC5jb25maWcucm9vdCwgdGhpcy5jdHguY29uZmlnLm91dHB1dEZpbGUpXG4gICAgICBjb25zdCBmaWxlRmQgPSBhd2FpdCBmcy5vcGVuKHRoaXMucmVwb3J0RmlsZSwgJ3crJylcblxuICAgICAgdGhpcy5iYXNlTG9nID0gYXN5bmModGV4dDogc3RyaW5nKSA9PiBhd2FpdCBmcy53cml0ZUZpbGUoZmlsZUZkLCBgJHt0ZXh0fVxcbmApXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5iYXNlTG9nID0gYXN5bmModGV4dDogc3RyaW5nKSA9PiB0aGlzLmN0eC5sb2codGV4dClcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBJbmRlbnRlZExvZ2dlcih0aGlzLmJhc2VMb2cpXG4gIH1cblxuICBhc3luYyB3cml0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCBhdHRyczogUmVjb3JkPHN0cmluZywgYW55PiwgY2hpbGRyZW46ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICBjb25zdCBwYWlycyA9IFtdXG4gICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cnMpIHtcbiAgICAgIGNvbnN0IGF0dHIgPSBhdHRyc1trZXldXG4gICAgICBpZiAoYXR0ciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICBjb250aW51ZVxuXG4gICAgICBwYWlycy5wdXNoKGAke2tleX09XCIke2VzY2FwZVhNTChhdHRyKX1cImApXG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIubG9nKGA8JHtuYW1lfSR7cGFpcnMubGVuZ3RoID8gYCAke3BhaXJzLmpvaW4oJyAnKX1gIDogJyd9PmApXG4gICAgdGhpcy5sb2dnZXIuaW5kZW50KClcbiAgICBhd2FpdCBjaGlsZHJlbi5jYWxsKHRoaXMpXG4gICAgdGhpcy5sb2dnZXIudW5pbmRlbnQoKVxuXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIubG9nKGA8LyR7bmFtZX0+YClcbiAgfVxuXG4gIGFzeW5jIHdyaXRlRXJyb3JEZXRhaWxzKGVycm9yOiBFcnJvcldpdGhEaWZmKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZXJyb3JOYW1lID0gZXJyb3IubmFtZSA/PyBlcnJvci5uYW1lU3RyID8/ICdVbmtub3duIEVycm9yJ1xuICAgIGF3YWl0IHRoaXMuYmFzZUxvZyhgJHtlcnJvck5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YClcblxuICAgIGNvbnN0IHN0YWNrID0gcGFyc2VTdGFja3RyYWNlKGVycm9yKVxuXG4gICAgLy8gVE9ETzogVGhpcyBpcyBzYW1lIGFzIHByaW50U3RhY2sgYnV0IHdpdGhvdXQgY29sb3JzLiBGaW5kIGEgd2F5IHRvIHJldXNlIGNvZGUuXG4gICAgZm9yIChjb25zdCBmcmFtZSBvZiBzdGFjaykge1xuICAgICAgY29uc3QgcG9zID0gZnJhbWUuc291cmNlUG9zID8/IGZyYW1lXG4gICAgICBjb25zdCBwYXRoID0gcmVsYXRpdmUodGhpcy5jdHguY29uZmlnLnJvb3QsIGZyYW1lLmZpbGUpXG5cbiAgICAgIGF3YWl0IHRoaXMuYmFzZUxvZyhgICR7Rl9QT0lOVEVSfSAke1tmcmFtZS5tZXRob2QsIGAke3BhdGh9OiR7cG9zLmxpbmV9OiR7cG9zLmNvbHVtbn1gXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpfWApXG5cbiAgICAgIC8vIHJlYWNoZWQgYXQgdGVzdCBmaWxlLCBza2lwIHRoZSBmb2xsb3cgc3RhY2tcbiAgICAgIGlmIChmcmFtZS5maWxlIGluIHRoaXMuY3R4LnN0YXRlLmZpbGVzTWFwKVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHdyaXRlTG9ncyh0YXNrOiBUYXNrLCB0eXBlOiAnZXJyJyB8ICdvdXQnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRhc2subG9ncyA9PSBudWxsIHx8IHRhc2subG9ncy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm5cblxuICAgIGNvbnN0IGxvZ1R5cGUgPSB0eXBlID09PSAnZXJyJyA/ICdzdGRlcnInIDogJ3N0ZG91dCdcbiAgICBjb25zdCBsb2dzID0gdGFzay5sb2dzLmZpbHRlcihsb2cgPT4gbG9nLnR5cGUgPT09IGxvZ1R5cGUpXG5cbiAgICBpZiAobG9ncy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm5cblxuICAgIGF3YWl0IHRoaXMud3JpdGVFbGVtZW50KGBzeXN0ZW0tJHt0eXBlfWAsIHt9LCBhc3luYygpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbG9nIG9mIGxvZ3MpXG4gICAgICAgIGF3YWl0IHRoaXMuYmFzZUxvZyhlc2NhcGVYTUwobG9nLmNvbnRlbnQpKVxuICAgIH0pXG4gIH1cblxuICBhc3luYyB3cml0ZVRhc2tzKHRhc2tzOiBUYXNrW10sIGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IHRhc2sgb2YgdGFza3MpIHtcbiAgICAgIGF3YWl0IHRoaXMud3JpdGVFbGVtZW50KCd0ZXN0Y2FzZScsIHtcbiAgICAgICAgY2xhc3NuYW1lOiBmaWxlbmFtZSxcbiAgICAgICAgbmFtZTogdGFzay5uYW1lLFxuICAgICAgICB0aW1lOiBnZXREdXJhdGlvbih0YXNrKSxcbiAgICAgIH0sIGFzeW5jKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLndyaXRlTG9ncyh0YXNrLCAnb3V0JylcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZUxvZ3ModGFzaywgJ2VycicpXG5cbiAgICAgICAgaWYgKHRhc2subW9kZSA9PT0gJ3NraXAnIHx8IHRhc2subW9kZSA9PT0gJ3RvZG8nKVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZygnPHNraXBwZWQvPicpXG5cbiAgICAgICAgaWYgKHRhc2sucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSB0YXNrLnJlc3VsdC5lcnJvclxuXG4gICAgICAgICAgYXdhaXQgdGhpcy53cml0ZUVsZW1lbnQoJ2ZhaWx1cmUnLCB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvcj8ubWVzc2FnZSxcbiAgICAgICAgICAgIHR5cGU6IGVycm9yPy5uYW1lID8/IGVycm9yPy5uYW1lU3RyLFxuICAgICAgICAgIH0sIGFzeW5jKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFlcnJvcilcbiAgICAgICAgICAgICAgcmV0dXJuXG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMud3JpdGVFcnJvckRldGFpbHMoZXJyb3IpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBvbkZpbmlzaGVkKGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKSkge1xuICAgIGF3YWl0IHRoaXMubG9nZ2VyLmxvZygnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIiA/PicpXG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IGZpbGVzXG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gZmlsZS50YXNrcy5mbGF0TWFwKHRhc2sgPT4gZmxhdHRlblRhc2tzKHRhc2spKVxuXG4gICAgICAgIGNvbnN0IHN0YXRzID0gdGFza3MucmVkdWNlKChzdGF0cywgdGFzaykgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYXNzZWQ6IHN0YXRzLnBhc3NlZCArIE51bWJlcih0YXNrLnJlc3VsdD8uc3RhdGUgPT09ICdwYXNzJyksXG4gICAgICAgICAgICBmYWlsdXJlczogc3RhdHMuZmFpbHVyZXMgKyBOdW1iZXIodGFzay5yZXN1bHQ/LnN0YXRlID09PSAnZmFpbCcpLFxuICAgICAgICAgICAgc2tpcHBlZDogc3RhdHMuc2tpcHBlZCArIE51bWJlcih0YXNrLm1vZGUgPT09ICdza2lwJyB8fCB0YXNrLm1vZGUgPT09ICd0b2RvJyksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFzc2VkOiAwLFxuICAgICAgICAgIGZhaWx1cmVzOiAwLFxuICAgICAgICAgIHNraXBwZWQ6IDAsXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5maWxlLFxuICAgICAgICAgIHRhc2tzLFxuICAgICAgICAgIHN0YXRzLFxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgYXdhaXQgdGhpcy53cml0ZUVsZW1lbnQoJ3Rlc3RzdWl0ZXMnLCB7fSwgYXN5bmMoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgdHJhbnNmb3JtZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZUVsZW1lbnQoJ3Rlc3RzdWl0ZScsIHtcbiAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgdGltZXN0YW1wOiAobmV3IERhdGUoKSkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBob3N0bmFtZTogaG9zdG5hbWUoKSxcbiAgICAgICAgICB0ZXN0czogZmlsZS50YXNrcy5sZW5ndGgsXG4gICAgICAgICAgZmFpbHVyZXM6IGZpbGUuc3RhdHMuZmFpbHVyZXMsXG4gICAgICAgICAgZXJyb3JzOiAwLCAvLyBBbiBlcnJvcmVkIHRlc3QgaXMgb25lIHRoYXQgaGFkIGFuIHVuYW50aWNpcGF0ZWQgcHJvYmxlbS4gV2UgY2Fubm90IGRldGVjdCB0aG9zZS5cbiAgICAgICAgICBza2lwcGVkOiBmaWxlLnN0YXRzLnNraXBwZWQsXG4gICAgICAgICAgdGltZTogZ2V0RHVyYXRpb24oZmlsZSksXG4gICAgICAgIH0sIGFzeW5jKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHRoaXMud3JpdGVUYXNrcyhmaWxlLnRhc2tzLCBmaWxlLm5hbWUpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmICh0aGlzLnJlcG9ydEZpbGUpXG4gICAgICB0aGlzLmN0eC5sb2coYEpVTklUIHJlcG9ydCB3cml0dGVuIHRvICR7dGhpcy5yZXBvcnRGaWxlfWApXG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgVml0ZXN0IH0gZnJvbSAnLi4vLi4vbm9kZSdcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgVGFwUmVwb3J0ZXIgfSBmcm9tICcuL3RhcCdcblxuZnVuY3Rpb24gZmxhdHRlblRhc2tzKHRhc2s6IFRhc2ssIGJhc2VOYW1lID0gJycpOiBUYXNrW10ge1xuICBjb25zdCBiYXNlID0gYmFzZU5hbWUgPyBgJHtiYXNlTmFtZX0gPiBgIDogJydcblxuICBpZiAodGFzay50eXBlID09PSAnc3VpdGUnICYmIHRhc2sudGFza3MubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB0YXNrLnRhc2tzLmZsYXRNYXAoY2hpbGQgPT4gZmxhdHRlblRhc2tzKGNoaWxkLCBgJHtiYXNlfSR7dGFzay5uYW1lfWApKVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiBbe1xuICAgICAgLi4udGFzayxcbiAgICAgIG5hbWU6IGAke2Jhc2V9JHt0YXNrLm5hbWV9YCxcbiAgICB9XVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYXBGbGF0UmVwb3J0ZXIgZXh0ZW5kcyBUYXBSZXBvcnRlciB7XG4gIG9uSW5pdChjdHg6IFZpdGVzdCk6IHZvaWQge1xuICAgIHN1cGVyLm9uSW5pdChjdHgpXG4gIH1cblxuICBhc3luYyBvbkZpbmlzaGVkKGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKSkge1xuICAgIHRoaXMuY3R4LmxvZygnVEFQIHZlcnNpb24gMTMnKVxuXG4gICAgY29uc3QgZmxhdFRhc2tzID0gZmlsZXMuZmxhdE1hcCh0YXNrID0+IGZsYXR0ZW5UYXNrcyh0YXNrKSlcblxuICAgIHRoaXMubG9nVGFza3MoZmxhdFRhc2tzKVxuICB9XG59XG4iLCJpbXBvcnQgeyBEZWZhdWx0UmVwb3J0ZXIgfSBmcm9tICcuL2RlZmF1bHQnXG5pbXBvcnQgeyBEb3RSZXBvcnRlciB9IGZyb20gJy4vZG90J1xuaW1wb3J0IHsgSnNvblJlcG9ydGVyIH0gZnJvbSAnLi9qc29uJ1xuaW1wb3J0IHsgVmVyYm9zZVJlcG9ydGVyIH0gZnJvbSAnLi92ZXJib3NlJ1xuaW1wb3J0IHsgVGFwUmVwb3J0ZXIgfSBmcm9tICcuL3RhcCdcbmltcG9ydCB7IEpVbml0UmVwb3J0ZXIgfSBmcm9tICcuL2p1bml0J1xuaW1wb3J0IHsgVGFwRmxhdFJlcG9ydGVyIH0gZnJvbSAnLi90YXAtZmxhdCdcblxuZXhwb3J0IHsgRGVmYXVsdFJlcG9ydGVyIH1cblxuZXhwb3J0IGNvbnN0IFJlcG9ydGVyc01hcCA9IHtcbiAgJ2RlZmF1bHQnOiBEZWZhdWx0UmVwb3J0ZXIsXG4gICd2ZXJib3NlJzogVmVyYm9zZVJlcG9ydGVyLFxuICAnZG90JzogRG90UmVwb3J0ZXIsXG4gICdqc29uJzogSnNvblJlcG9ydGVyLFxuICAndGFwJzogVGFwUmVwb3J0ZXIsXG4gICd0YXAtZmxhdCc6IFRhcEZsYXRSZXBvcnRlcixcbiAgJ2p1bml0JzogSlVuaXRSZXBvcnRlcixcbn1cblxuZXhwb3J0IHR5cGUgQnVpbHRpblJlcG9ydGVycyA9IGtleW9mIHR5cGVvZiBSZXBvcnRlcnNNYXBcbiIsImltcG9ydCB7IE1lc3NhZ2VDaGFubmVsIH0gZnJvbSAnd29ya2VyX3RocmVhZHMnXG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSAndXJsJ1xuaW1wb3J0IHsgY3B1cyB9IGZyb20gJ29zJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFRpbnlwb29sT3B0aW9ucyB9IGZyb20gJ3Rpbnlwb29sJ1xuaW1wb3J0IHsgVGlueXBvb2wgfSBmcm9tICd0aW55cG9vbCdcbmltcG9ydCB7IGNyZWF0ZUJpcnBjIH0gZnJvbSAnYmlycGMnXG5pbXBvcnQgdHlwZSB7IFJhd1NvdXJjZU1hcCB9IGZyb20gJ3ZpdGUtbm9kZSdcbmltcG9ydCB0eXBlIHsgV29ya2VyQ29udGV4dCwgV29ya2VyUlBDIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBkaXN0RGlyIH0gZnJvbSAnLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBWaXRlc3QgfSBmcm9tICcuL2NvcmUnXG5cbmV4cG9ydCB0eXBlIFJ1bldpdGhGaWxlcyA9IChmaWxlczogc3RyaW5nW10sIGludmFsaWRhdGVzPzogc3RyaW5nW10pID0+IFByb21pc2U8dm9pZD5cblxuZXhwb3J0IGludGVyZmFjZSBXb3JrZXJQb29sIHtcbiAgcnVuVGVzdHM6IFJ1bldpdGhGaWxlc1xuICBjb2xsZWN0VGVzdHM6IFJ1bldpdGhGaWxlc1xuICBjbG9zZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9vbChjdHg6IFZpdGVzdCk6IFdvcmtlclBvb2wge1xuICBpZiAoY3R4LmNvbmZpZy50aHJlYWRzKVxuICAgIHJldHVybiBjcmVhdGVXb3JrZXJQb29sKGN0eClcbiAgZWxzZVxuICAgIHJldHVybiBjcmVhdGVGYWtlUG9vbChjdHgpXG59XG5cbmNvbnN0IHdvcmtlclBhdGggPSBwYXRoVG9GaWxlVVJMKHJlc29sdmUoZGlzdERpciwgJy4vd29ya2VyLmpzJykpLmhyZWZcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZha2VQb29sKGN0eDogVml0ZXN0KTogV29ya2VyUG9vbCB7XG4gIGNvbnN0IHJ1bldpdGhGaWxlcyA9IChuYW1lOiAncnVuJyB8ICdjb2xsZWN0Jyk6IFJ1bldpdGhGaWxlcyA9PiB7XG4gICAgcmV0dXJuIGFzeW5jKGZpbGVzLCBpbnZhbGlkYXRlcykgPT4ge1xuICAgICAgY29uc3Qgd29ya2VyID0gYXdhaXQgaW1wb3J0KHdvcmtlclBhdGgpXG5cbiAgICAgIGNvbnN0IHsgd29ya2VyUG9ydCwgcG9ydCB9ID0gY3JlYXRlQ2hhbm5lbChjdHgpXG5cbiAgICAgIGNvbnN0IGRhdGE6IFdvcmtlckNvbnRleHQgPSB7XG4gICAgICAgIHBvcnQ6IHdvcmtlclBvcnQsXG4gICAgICAgIGNvbmZpZzogY3R4LmdldENvbmZpZygpLFxuICAgICAgICBmaWxlcyxcbiAgICAgICAgaW52YWxpZGF0ZXMsXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHdvcmtlcltuYW1lXShkYXRhLCB7IHRyYW5zZmVyTGlzdDogW3dvcmtlclBvcnRdIH0pXG5cbiAgICAgIHBvcnQuY2xvc2UoKVxuICAgICAgd29ya2VyUG9ydC5jbG9zZSgpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBydW5UZXN0czogcnVuV2l0aEZpbGVzKCdydW4nKSxcbiAgICBjb2xsZWN0VGVzdHM6IHJ1bldpdGhGaWxlcygnY29sbGVjdCcpLFxuICAgIGNsb3NlOiBhc3luYygpID0+IHt9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXb3JrZXJQb29sKGN0eDogVml0ZXN0KTogV29ya2VyUG9vbCB7XG4gIGNvbnN0IHRocmVhZHNDb3VudCA9IGN0eC5jb25maWcud2F0Y2hcbiAgICA/IE1hdGgubWF4KGNwdXMoKS5sZW5ndGggLyAyLCAxKVxuICAgIDogTWF0aC5tYXgoY3B1cygpLmxlbmd0aCAtIDEsIDEpXG5cbiAgY29uc3Qgb3B0aW9uczogVGlueXBvb2xPcHRpb25zID0ge1xuICAgIGZpbGVuYW1lOiB3b3JrZXJQYXRoLFxuICAgIC8vIERpc2FibGUgdGhpcyBmb3Igbm93LCBmb3IgV2ViQ29udGFpbmVyIGNhcGFiaWxpdHlcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdml0ZXN0LWRldi92aXRlc3QvaXNzdWVzLzkzXG4gICAgLy8gSW4gZnV0dXJlIHdlIGNvdWxkIGNvbmRpdGlvbmFsbHkgZW5hYmxlIGl0IGJhc2VkIG9uIHRoZSBlbnZcbiAgICB1c2VBdG9taWNzOiBmYWxzZSxcblxuICAgIG1heFRocmVhZHM6IGN0eC5jb25maWcubWF4VGhyZWFkcyA/PyB0aHJlYWRzQ291bnQsXG4gICAgbWluVGhyZWFkczogY3R4LmNvbmZpZy5taW5UaHJlYWRzID8/IHRocmVhZHNDb3VudCxcbiAgfVxuICBpZiAoY3R4LmNvbmZpZy5pc29sYXRlKSB7XG4gICAgb3B0aW9ucy5pc29sYXRlV29ya2VycyA9IHRydWVcbiAgICBvcHRpb25zLmNvbmN1cnJlbnRUYXNrc1BlcldvcmtlciA9IDFcbiAgfVxuXG4gIGNvbnN0IHBvb2wgPSBuZXcgVGlueXBvb2wob3B0aW9ucylcblxuICBjb25zdCBydW5XaXRoRmlsZXMgPSAobmFtZTogc3RyaW5nKTogUnVuV2l0aEZpbGVzID0+IHtcbiAgICByZXR1cm4gYXN5bmMoZmlsZXMsIGludmFsaWRhdGVzKSA9PiB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoYXN5bmMoZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCB7IHdvcmtlclBvcnQsIHBvcnQgfSA9IGNyZWF0ZUNoYW5uZWwoY3R4KVxuXG4gICAgICAgIGNvbnN0IGRhdGE6IFdvcmtlckNvbnRleHQgPSB7XG4gICAgICAgICAgcG9ydDogd29ya2VyUG9ydCxcbiAgICAgICAgICBjb25maWc6IGN0eC5nZXRDb25maWcoKSxcbiAgICAgICAgICBmaWxlczogW2ZpbGVdLFxuICAgICAgICAgIGludmFsaWRhdGVzLFxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgcG9vbC5ydW4oZGF0YSwgeyB0cmFuc2Zlckxpc3Q6IFt3b3JrZXJQb3J0XSwgbmFtZSB9KVxuICAgICAgICBwb3J0LmNsb3NlKClcbiAgICAgICAgd29ya2VyUG9ydC5jbG9zZSgpXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHJ1blRlc3RzOiBydW5XaXRoRmlsZXMoJ3J1bicpLFxuICAgIGNvbGxlY3RUZXN0czogcnVuV2l0aEZpbGVzKCdjb2xsZWN0JyksXG4gICAgY2xvc2U6IGFzeW5jKCkgPT4ge30sIC8vIFRPRE86IG5vdCBzdXJlIHdoeSB0aGlzIHdpbGwgY2F1c2UgTm9kZSBjcmFzaDogcG9vbC5kZXN0cm95KCksXG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2hhbm5lbChjdHg6IFZpdGVzdCkge1xuICBjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKClcbiAgY29uc3QgcG9ydCA9IGNoYW5uZWwucG9ydDJcbiAgY29uc3Qgd29ya2VyUG9ydCA9IGNoYW5uZWwucG9ydDFcblxuICBjcmVhdGVCaXJwYzx7fSwgV29ya2VyUlBDPihcbiAgICB7XG4gICAgICBvbldvcmtlckV4aXQoY29kZSkge1xuICAgICAgICBwcm9jZXNzLmV4aXQoY29kZSB8fCAxKVxuICAgICAgfSxcbiAgICAgIHNuYXBzaG90U2F2ZWQoc25hcHNob3QpIHtcbiAgICAgICAgY3R4LnNuYXBzaG90LmFkZChzbmFwc2hvdClcbiAgICAgIH0sXG4gICAgICBhc3luYyBnZXRTb3VyY2VNYXAoaWQsIGZvcmNlKSB7XG4gICAgICAgIGlmIChmb3JjZSkge1xuICAgICAgICAgIGNvbnN0IG1vZCA9IGN0eC5zZXJ2ZXIubW9kdWxlR3JhcGguZ2V0TW9kdWxlQnlJZChpZClcbiAgICAgICAgICBpZiAobW9kKVxuICAgICAgICAgICAgY3R4LnNlcnZlci5tb2R1bGVHcmFwaC5pbnZhbGlkYXRlTW9kdWxlKG1vZClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByID0gYXdhaXQgY3R4LnZpdGVub2RlLnRyYW5zZm9ybVJlcXVlc3QoaWQpXG4gICAgICAgIHJldHVybiByPy5tYXAgYXMgUmF3U291cmNlTWFwIHwgdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgZmV0Y2goaWQpIHtcbiAgICAgICAgcmV0dXJuIGN0eC52aXRlbm9kZS5mZXRjaE1vZHVsZShpZClcbiAgICAgIH0sXG4gICAgICByZXNvbHZlSWQoaWQsIGltcG9ydGVyKSB7XG4gICAgICAgIHJldHVybiBjdHgudml0ZW5vZGUucmVzb2x2ZUlkKGlkLCBpbXBvcnRlcilcbiAgICAgIH0sXG4gICAgICBvbkNvbGxlY3RlZChmaWxlcykge1xuICAgICAgICBjdHguc3RhdGUuY29sbGVjdEZpbGVzKGZpbGVzKVxuICAgICAgICBjdHgucmVwb3J0KCdvbkNvbGxlY3RlZCcsIGZpbGVzKVxuICAgICAgfSxcbiAgICAgIG9uVGFza1VwZGF0ZShwYWNrcykge1xuICAgICAgICBjdHguc3RhdGUudXBkYXRlVGFza3MocGFja3MpXG4gICAgICAgIGN0eC5yZXBvcnQoJ29uVGFza1VwZGF0ZScsIHBhY2tzKVxuICAgICAgfSxcbiAgICAgIG9uVXNlckNvbnNvbGVMb2cobG9nKSB7XG4gICAgICAgIGN0eC5zdGF0ZS51cGRhdGVVc2VyTG9nKGxvZylcbiAgICAgICAgY3R4LnJlcG9ydCgnb25Vc2VyQ29uc29sZUxvZycsIGxvZylcbiAgICAgIH0sXG4gICAgICBvbkZpbmlzaGVkKGZpbGVzKSB7XG4gICAgICAgIGN0eC5yZXBvcnQoJ29uRmluaXNoZWQnLCBmaWxlcylcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwb3N0KHYpIHtcbiAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh2KVxuICAgICAgfSxcbiAgICAgIG9uKGZuKSB7XG4gICAgICAgIHBvcnQub24oJ21lc3NhZ2UnLCBmbilcbiAgICAgIH0sXG4gICAgfSxcbiAgKVxuXG4gIHJldHVybiB7IHdvcmtlclBvcnQsIHBvcnQgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBGaWxlLCBUYXNrLCBUYXNrUmVzdWx0UGFjaywgVXNlckNvbnNvbGVMb2cgfSBmcm9tICcuLi90eXBlcydcblxuZXhwb3J0IGNsYXNzIFN0YXRlTWFuYWdlciB7XG4gIGZpbGVzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEZpbGU+KClcbiAgaWRNYXAgPSBuZXcgTWFwPHN0cmluZywgVGFzaz4oKVxuICB0YXNrRmlsZU1hcCA9IG5ldyBXZWFrTWFwPFRhc2ssIEZpbGU+KClcblxuICBnZXRGaWxlcyhrZXlzPzogc3RyaW5nW10pOiBGaWxlW10ge1xuICAgIGlmIChrZXlzKVxuICAgICAgcmV0dXJuIGtleXMubWFwKGtleSA9PiB0aGlzLmZpbGVzTWFwLmdldChrZXkpISlcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZpbGVzTWFwLnZhbHVlcygpKVxuICB9XG5cbiAgZ2V0RmlsZXBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZpbGVzTWFwLmtleXMoKSlcbiAgfVxuXG4gIGdldEZhaWxlZEZpbGVwYXRocygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWxlcygpXG4gICAgICAuZmlsdGVyKGkgPT4gaS5yZXN1bHQ/LnN0YXRlID09PSAnZmFpbCcpXG4gICAgICAubWFwKGkgPT4gaS5maWxlcGF0aClcbiAgfVxuXG4gIGNvbGxlY3RGaWxlcyhmaWxlczogRmlsZVtdID0gW10pIHtcbiAgICBmaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICB0aGlzLmZpbGVzTWFwLnNldChmaWxlLmZpbGVwYXRoLCBmaWxlKVxuICAgICAgdGhpcy51cGRhdGVJZChmaWxlKVxuICAgIH0pXG4gIH1cblxuICB1cGRhdGVJZCh0YXNrOiBUYXNrKSB7XG4gICAgaWYgKHRoaXMuaWRNYXAuZ2V0KHRhc2suaWQpID09PSB0YXNrKVxuICAgICAgcmV0dXJuXG4gICAgdGhpcy5pZE1hcC5zZXQodGFzay5pZCwgdGFzaylcbiAgICBpZiAodGFzay50eXBlID09PSAnc3VpdGUnKSB7XG4gICAgICB0YXNrLnRhc2tzLmZvckVhY2goKHRhc2spID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVJZCh0YXNrKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB1cGRhdGVUYXNrcyhwYWNrczogVGFza1Jlc3VsdFBhY2tbXSkge1xuICAgIGZvciAoY29uc3QgW2lkLCByZXN1bHRdIG9mIHBhY2tzKSB7XG4gICAgICBpZiAodGhpcy5pZE1hcC5oYXMoaWQpKVxuICAgICAgICB0aGlzLmlkTWFwLmdldChpZCkhLnJlc3VsdCA9IHJlc3VsdFxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVVzZXJMb2cobG9nOiBVc2VyQ29uc29sZUxvZykge1xuICAgIGNvbnN0IHRhc2sgPSBsb2cudGFza0lkICYmIHRoaXMuaWRNYXAuZ2V0KGxvZy50YXNrSWQpXG4gICAgaWYgKHRhc2spIHtcbiAgICAgIGlmICghdGFzay5sb2dzKVxuICAgICAgICB0YXNrLmxvZ3MgPSBbXVxuICAgICAgdGFzay5sb2dzLnB1c2gobG9nKVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBSZXNvbHZlZENvbmZpZyBhcyBSZXNvbHZlZFZpdGVDb25maWcgfSBmcm9tICd2aXRlJ1xuXG5pbXBvcnQgdHlwZSB7IEFwaUNvbmZpZywgUmVzb2x2ZWRDb25maWcsIFVzZXJDb25maWcgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGNvbmZpZ0RlZmF1bHRzLCBkZWZhdWx0UG9ydCB9IGZyb20gJy4uL2NvbnN0YW50cydcbmltcG9ydCB7IHJlc29sdmVDOE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvY292ZXJhZ2UnXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnLi4vdXRpbHMnXG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQXBpQ29uZmlnPE9wdGlvbnMgZXh0ZW5kcyBBcGlDb25maWcgJiBVc2VyQ29uZmlnPihcbiAgb3B0aW9uczogT3B0aW9ucyxcbik6IEFwaUNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGxldCBhcGk6IEFwaUNvbmZpZyB8IHVuZGVmaW5lZFxuXG4gIGlmIChvcHRpb25zLnVpICYmICFvcHRpb25zLmFwaSlcbiAgICBhcGkgPSB7IHBvcnQ6IGRlZmF1bHRQb3J0IH1cbiAgZWxzZSBpZiAob3B0aW9ucy5hcGkgPT09IHRydWUpXG4gICAgYXBpID0geyBwb3J0OiBkZWZhdWx0UG9ydCB9XG4gIGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmFwaSA9PT0gJ251bWJlcicpXG4gICAgYXBpID0geyBwb3J0OiBvcHRpb25zLmFwaSB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmFwaSA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoYXBpKSB7XG4gICAgICBpZiAob3B0aW9ucy5hcGkucG9ydClcbiAgICAgICAgYXBpLnBvcnQgPSBvcHRpb25zLmFwaS5wb3J0XG4gICAgICBpZiAob3B0aW9ucy5hcGkuc3RyaWN0UG9ydClcbiAgICAgICAgYXBpLnN0cmljdFBvcnQgPSBvcHRpb25zLmFwaS5zdHJpY3RQb3J0XG4gICAgICBpZiAob3B0aW9ucy5hcGkuaG9zdClcbiAgICAgICAgYXBpLmhvc3QgPSBvcHRpb25zLmFwaS5ob3N0XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYXBpID0geyAuLi5vcHRpb25zLmFwaSB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGFwaSkge1xuICAgIGlmICghYXBpLnBvcnQpXG4gICAgICBhcGkucG9ydCA9IGRlZmF1bHRQb3J0XG4gIH1cblxuICByZXR1cm4gYXBpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ29uZmlnKFxuICBvcHRpb25zOiBVc2VyQ29uZmlnLFxuICB2aXRlQ29uZmlnOiBSZXNvbHZlZFZpdGVDb25maWcsXG4pOiBSZXNvbHZlZENvbmZpZyB7XG4gIGlmIChvcHRpb25zLmRvbSlcbiAgICBvcHRpb25zLmVudmlyb25tZW50ID0gJ2hhcHB5LWRvbSdcblxuICBjb25zdCBnbG9iYWxzID0gb3B0aW9ucz8uZ2xvYmFsID8/IG9wdGlvbnMuZ2xvYmFsc1xuXG4gIGNvbnN0IHJlc29sdmVkID0ge1xuICAgIC4uLmNvbmZpZ0RlZmF1bHRzLFxuICAgIC4uLm9wdGlvbnMsXG4gICAgcm9vdDogdml0ZUNvbmZpZy5yb290LFxuICAgIGdsb2JhbHMsXG4gICAgZ2xvYmFsOiBnbG9iYWxzLFxuICB9IGFzIFJlc29sdmVkQ29uZmlnXG5cbiAgaWYgKHZpdGVDb25maWcuYmFzZSAhPT0gJy8nKVxuICAgIHJlc29sdmVkLmJhc2UgPSB2aXRlQ29uZmlnLmJhc2VcblxuICByZXNvbHZlZC5jb3ZlcmFnZSA9IHJlc29sdmVDOE9wdGlvbnMob3B0aW9ucy5jb3ZlcmFnZSB8fCB7fSwgcmVzb2x2ZWQucm9vdClcblxuICByZXNvbHZlZC5kZXBzID0gcmVzb2x2ZWQuZGVwcyB8fCB7fVxuICAvLyB2aXRlbm9kZSB3aWxsIHRyeSB0byBpbXBvcnQgc3VjaCBmaWxlIHdpdGggbmF0aXZlIG5vZGUsXG4gIC8vIGJ1dCB0aGVuIG91ciBtb2NrZXIgd2lsbCBub3Qgd29yayBwcm9wZXJseVxuICByZXNvbHZlZC5kZXBzLmlubGluZSA/Pz0gW11cbiAgcmVzb2x2ZWQuZGVwcy5pbmxpbmUucHVzaChcbiAgICAvXig/IS4qKD86bm9kZV9tb2R1bGVzKSkuKlxcLm1qcyQvLFxuICAgIC9eKD8hLiooPzpub2RlX21vZHVsZXMpKS4qXFwuY2pzXFwuanMkLyxcbiAgICAvXFwvdml0ZXN0XFwvZGlzdFxcLy8sXG4gICAgLy8geWFybidzIC5zdG9yZSBmb2xkZXJcbiAgICAvdml0ZXN0LXZpcnR1YWwtXFx3K1xcL2Rpc3QvLFxuICApXG5cbiAgcmVzb2x2ZWQudGVzdE5hbWVQYXR0ZXJuID0gcmVzb2x2ZWQudGVzdE5hbWVQYXR0ZXJuXG4gICAgPyByZXNvbHZlZC50ZXN0TmFtZVBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHBcbiAgICAgID8gcmVzb2x2ZWQudGVzdE5hbWVQYXR0ZXJuXG4gICAgICA6IG5ldyBSZWdFeHAocmVzb2x2ZWQudGVzdE5hbWVQYXR0ZXJuKVxuICAgIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgQ0kgPSAhIXByb2Nlc3MuZW52LkNJXG4gIGNvbnN0IFVQREFURV9TTkFQU0hPVCA9IHJlc29sdmVkLnVwZGF0ZSB8fCBwcm9jZXNzLmVudi5VUERBVEVfU05BUFNIT1RcbiAgcmVzb2x2ZWQuc25hcHNob3RPcHRpb25zID0ge1xuICAgIHNuYXBzaG90Rm9ybWF0OiByZXNvbHZlZC5zbmFwc2hvdEZvcm1hdCB8fCB7fSxcbiAgICB1cGRhdGVTbmFwc2hvdDogQ0kgJiYgIVVQREFURV9TTkFQU0hPVFxuICAgICAgPyAnbm9uZSdcbiAgICAgIDogVVBEQVRFX1NOQVBTSE9UXG4gICAgICAgID8gJ2FsbCdcbiAgICAgICAgOiAnbmV3JyxcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5WSVRFU1RfTUFYX1RIUkVBRFMpXG4gICAgcmVzb2x2ZWQubWF4VGhyZWFkcyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LlZJVEVTVF9NQVhfVEhSRUFEUylcblxuICBpZiAocHJvY2Vzcy5lbnYuVklURVNUX01JTl9USFJFQURTKVxuICAgIHJlc29sdmVkLm1pblRocmVhZHMgPSBwYXJzZUludChwcm9jZXNzLmVudi5WSVRFU1RfTUlOX1RIUkVBRFMpXG5cbiAgcmVzb2x2ZWQuc2V0dXBGaWxlcyA9IHRvQXJyYXkocmVzb2x2ZWQuc2V0dXBGaWxlcyB8fCBbXSkubWFwKGZpbGUgPT4gcmVzb2x2ZShyZXNvbHZlZC5yb290LCBmaWxlKSlcblxuICAvLyB0aGUgc2VydmVyIGhhcyBiZWVuIGNyZWF0ZWQsIHdlIGRvbid0IG5lZWQgdG8gb3ZlcnJpZGUgdml0ZS5zZXJ2ZXIgb3B0aW9uc1xuICByZXNvbHZlZC5hcGkgPSByZXNvbHZlQXBpQ29uZmlnKG9wdGlvbnMpXG5cbiAgaWYgKG9wdGlvbnMucmVsYXRlZClcbiAgICByZXNvbHZlZC5yZWxhdGVkID0gdG9BcnJheShvcHRpb25zLnJlbGF0ZWQpLm1hcChmaWxlID0+IHJlc29sdmUocmVzb2x2ZWQucm9vdCwgZmlsZSkpXG5cbiAgcmVzb2x2ZWQucmVwb3J0ZXJzID0gQXJyYXkuZnJvbShuZXcgU2V0KFtcbiAgICAuLi50b0FycmF5KHJlc29sdmVkLnJlcG9ydGVycyksXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBmcm9tIENMSVxuICAgIC4uLnRvQXJyYXkocmVzb2x2ZWQucmVwb3J0ZXIpLFxuICBdKSkuZmlsdGVyKEJvb2xlYW4pXG4gIGlmICghcmVzb2x2ZWQucmVwb3J0ZXJzLmxlbmd0aClcbiAgICByZXNvbHZlZC5yZXBvcnRlcnMucHVzaCgnZGVmYXVsdCcpXG5cbiAgcmV0dXJuIHJlc29sdmVkXG59XG4iLCJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnZnMnXG5pbXBvcnQgdHlwZSB7IFZpdGVEZXZTZXJ2ZXIgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IGZnIGZyb20gJ2Zhc3QtZ2xvYidcbmltcG9ydCBtbSBmcm9tICdtaWNyb21hdGNoJ1xuaW1wb3J0IGMgZnJvbSAncGljb2NvbG9ycydcbmltcG9ydCB7IFZpdGVOb2RlU2VydmVyIH0gZnJvbSAndml0ZS1ub2RlL3NlcnZlcidcbmltcG9ydCB0eXBlIHsgQXJndW1lbnRzVHlwZSwgUmVwb3J0ZXIsIFJlc29sdmVkQ29uZmlnLCBVc2VyQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBTbmFwc2hvdE1hbmFnZXIgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvc25hcHNob3QvbWFuYWdlcidcbmltcG9ydCB7IGRlZXBNZXJnZSwgaGFzRmFpbGVkLCBub29wLCBzbGFzaCwgdG9BcnJheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgY2xlYW5Db3ZlcmFnZSwgcmVwb3J0Q292ZXJhZ2UgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvY292ZXJhZ2UnXG5pbXBvcnQgeyBSZXBvcnRlcnNNYXAgfSBmcm9tICcuL3JlcG9ydGVycydcbmltcG9ydCB7IGNyZWF0ZVBvb2wgfSBmcm9tICcuL3Bvb2wnXG5pbXBvcnQgdHlwZSB7IFdvcmtlclBvb2wgfSBmcm9tICcuL3Bvb2wnXG5pbXBvcnQgeyBTdGF0ZU1hbmFnZXIgfSBmcm9tICcuL3N0YXRlJ1xuaW1wb3J0IHsgcmVzb2x2ZUNvbmZpZyB9IGZyb20gJy4vY29uZmlnJ1xuXG5jb25zdCBXQVRDSEVSX0RFQk9VTkNFID0gMTAwXG5jb25zdCBDTE9TRV9USU1FT1VUID0gMV8wMDBcblxuZXhwb3J0IGNsYXNzIFZpdGVzdCB7XG4gIGNvbmZpZzogUmVzb2x2ZWRDb25maWcgPSB1bmRlZmluZWQhXG4gIGNvbmZpZ092ZXJyaWRlOiBQYXJ0aWFsPFJlc29sdmVkQ29uZmlnPiB8IHVuZGVmaW5lZFxuXG4gIHNlcnZlcjogVml0ZURldlNlcnZlciA9IHVuZGVmaW5lZCFcbiAgc3RhdGU6IFN0YXRlTWFuYWdlciA9IHVuZGVmaW5lZCFcbiAgc25hcHNob3Q6IFNuYXBzaG90TWFuYWdlciA9IHVuZGVmaW5lZCFcbiAgcmVwb3J0ZXJzOiBSZXBvcnRlcltdID0gdW5kZWZpbmVkIVxuICBjb25zb2xlOiBDb25zb2xlXG4gIHBvb2w6IFdvcmtlclBvb2wgfCB1bmRlZmluZWRcblxuICBvdXRwdXRTdHJlYW0gPSBwcm9jZXNzLnN0ZG91dFxuICBlcnJvclN0cmVhbSA9IHByb2Nlc3Muc3RkZXJyXG5cbiAgdml0ZW5vZGU6IFZpdGVOb2RlU2VydmVyID0gdW5kZWZpbmVkIVxuXG4gIGludmFsaWRhdGVzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKVxuICBjaGFuZ2VkVGVzdHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpXG4gIHJ1bm5pbmdQcm9taXNlPzogUHJvbWlzZTx2b2lkPlxuICBjbG9zaW5nUHJvbWlzZT86IFByb21pc2U8dm9pZD5cblxuICBpc0ZpcnN0UnVuID0gdHJ1ZVxuICByZXN0YXJ0c0NvdW50ID0gMFxuXG4gIHByaXZhdGUgX29uUmVzdGFydExpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29uc29sZSA9IGdsb2JhbFRoaXMuY29uc29sZVxuICB9XG5cbiAgYXN5bmMgc2V0U2VydmVyKG9wdGlvbnM6IFVzZXJDb25maWcsIHNlcnZlcjogVml0ZURldlNlcnZlcikge1xuICAgIHRoaXMudW5yZWdpc3RlcldhdGNoZXI/LigpXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3JlcnVuVGltZXIpXG4gICAgdGhpcy5yZXN0YXJ0c0NvdW50ICs9IDFcbiAgICB0aGlzLnBvb2w/LmNsb3NlKClcbiAgICB0aGlzLnBvb2wgPSB1bmRlZmluZWRcblxuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUNvbmZpZyhvcHRpb25zLCBzZXJ2ZXIuY29uZmlnKVxuXG4gICAgdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXJcbiAgICB0aGlzLmNvbmZpZyA9IHJlc29sdmVkXG4gICAgdGhpcy5zdGF0ZSA9IG5ldyBTdGF0ZU1hbmFnZXIoKVxuICAgIHRoaXMuc25hcHNob3QgPSBuZXcgU25hcHNob3RNYW5hZ2VyKHJlc29sdmVkKVxuICAgIHRoaXMucmVwb3J0ZXJzID0gcmVzb2x2ZWQucmVwb3J0ZXJzXG4gICAgICAubWFwKChpKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgaSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBSZXBvcnRlciA9IFJlcG9ydGVyc01hcFtpXVxuICAgICAgICAgIGlmICghUmVwb3J0ZXIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVwb3J0ZXI6ICR7aX1gKVxuICAgICAgICAgIHJldHVybiBuZXcgUmVwb3J0ZXIoKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpXG4gICAgICB9KVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLndhdGNoKVxuICAgICAgdGhpcy5yZWdpc3RlcldhdGNoZXIoKVxuXG4gICAgdGhpcy52aXRlbm9kZSA9IG5ldyBWaXRlTm9kZVNlcnZlcihzZXJ2ZXIsIHRoaXMuY29uZmlnKVxuXG4gICAgdGhpcy5ydW5uaW5nUHJvbWlzZSA9IHVuZGVmaW5lZFxuXG4gICAgdGhpcy5fb25SZXN0YXJ0TGlzdGVuZXJzLmZvckVhY2goZm4gPT4gZm4oKSlcblxuICAgIGlmIChyZXNvbHZlZC5jb3ZlcmFnZS5lbmFibGVkKVxuICAgICAgYXdhaXQgY2xlYW5Db3ZlcmFnZShyZXNvbHZlZC5jb3ZlcmFnZSwgcmVzb2x2ZWQuY292ZXJhZ2UuY2xlYW4pXG4gIH1cblxuICBnZXRDb25maWcoKSB7XG4gICAgY29uc3QgaGFzQ3VzdG9tUmVwb3J0ZXIgPSB0b0FycmF5KHRoaXMuY29uZmlnLnJlcG9ydGVycylcbiAgICAgIC5zb21lKHJlcG9ydGVyID0+IHR5cGVvZiByZXBvcnRlciAhPT0gJ3N0cmluZycpXG5cbiAgICBpZiAoIWhhc0N1c3RvbVJlcG9ydGVyICYmICF0aGlzLmNvbmZpZ092ZXJyaWRlKVxuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnXG5cbiAgICBjb25zdCBjb25maWcgPSBkZWVwTWVyZ2Uoe30sIHRoaXMuY29uZmlnKVxuXG4gICAgaWYgKHRoaXMuY29uZmlnT3ZlcnJpZGUpXG4gICAgICBkZWVwTWVyZ2UoY29uZmlnLCB0aGlzLmNvbmZpZ092ZXJyaWRlKVxuXG4gICAgLy8gQ3VzdG9tIHJlcG9ydGVycyBjYW5ub3QgYmUgc2VyaWFsaXplZCBmb3Igc2VuZGluZyB0byB3b3JrZXJzICM2MTRcbiAgICAvLyBidXQgd29ya2VycyBkb24ndCBuZWVkIHJlcG9ydGVycyBhbnl3YXlcbiAgICBpZiAoaGFzQ3VzdG9tUmVwb3J0ZXIpXG4gICAgICBjb25maWcucmVwb3J0ZXJzID0gW11cblxuICAgIHJldHVybiBjb25maWcgYXMgUmVzb2x2ZWRDb25maWdcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0KGZpbHRlcnM/OiBzdHJpbmdbXSkge1xuICAgIGF3YWl0IHRoaXMucmVwb3J0KCdvbkluaXQnLCB0aGlzKVxuXG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCB0aGlzLmZpbHRlclRlc3RzQnlTb3VyY2UoXG4gICAgICBhd2FpdCB0aGlzLmdsb2JUZXN0RmlsZXMoZmlsdGVycyksXG4gICAgKVxuXG4gICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wYXNzV2l0aE5vVGVzdHMpXG4gICAgICAgIHRoaXMubG9nKCdObyB0ZXN0IGZpbGVzIGZvdW5kXFxuJylcblxuICAgICAgZWxzZVxuICAgICAgICB0aGlzLmVycm9yKGMucmVkKCdObyB0ZXN0IGZpbGVzIGZvdW5kXFxuJykpXG4gICAgICBwcm9jZXNzLmV4aXQodGhpcy5jb25maWcucGFzc1dpdGhOb1Rlc3RzID8gMCA6IDEpXG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5ydW5GaWxlcyhmaWxlcylcblxuICAgIGlmICh0aGlzLmNvbmZpZy5jb3ZlcmFnZS5lbmFibGVkKVxuICAgICAgYXdhaXQgcmVwb3J0Q292ZXJhZ2UodGhpcylcblxuICAgIGlmICh0aGlzLmNvbmZpZy53YXRjaClcbiAgICAgIGF3YWl0IHRoaXMucmVwb3J0KCdvbldhdGNoZXJTdGFydCcpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFRlc3REZXBlbmRlbmNpZXMoZmlsZXBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGRlcHMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gICAgY29uc3QgYWRkSW1wb3J0cyA9IGFzeW5jKGZpbGVwYXRoOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkID0gYXdhaXQgdGhpcy52aXRlbm9kZS50cmFuc2Zvcm1SZXF1ZXN0KGZpbGVwYXRoKVxuICAgICAgaWYgKCF0cmFuc2Zvcm1lZClcbiAgICAgICAgcmV0dXJuXG4gICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBbLi4udHJhbnNmb3JtZWQuZGVwcyB8fCBbXSwgLi4udHJhbnNmb3JtZWQuZHluYW1pY0RlcHMgfHwgW11dXG4gICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGF3YWl0IHRoaXMuc2VydmVyLnBsdWdpbkNvbnRhaW5lci5yZXNvbHZlSWQoZGVwLCBmaWxlcGF0aCwgeyBzc3I6IHRydWUgfSlcbiAgICAgICAgY29uc3QgZnNQYXRoID0gcGF0aCAmJiAhcGF0aC5leHRlcm5hbCAmJiBwYXRoLmlkLnNwbGl0KCc/JylbMF1cbiAgICAgICAgaWYgKGZzUGF0aCAmJiAhZnNQYXRoLmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSAmJiAhZGVwcy5oYXMoZnNQYXRoKSAmJiBleGlzdHNTeW5jKGZzUGF0aCkpIHtcbiAgICAgICAgICBkZXBzLmFkZChmc1BhdGgpXG5cbiAgICAgICAgICBhd2FpdCBhZGRJbXBvcnRzKGZzUGF0aClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IGFkZEltcG9ydHMoZmlsZXBhdGgpXG5cbiAgICByZXR1cm4gZGVwc1xuICB9XG5cbiAgYXN5bmMgZmlsdGVyVGVzdHNCeVNvdXJjZSh0ZXN0czogc3RyaW5nW10pIHtcbiAgICBjb25zdCByZWxhdGVkID0gdGhpcy5jb25maWcucmVsYXRlZFxuICAgIGlmICghcmVsYXRlZClcbiAgICAgIHJldHVybiB0ZXN0c1xuXG4gICAgLy8gZG9uJ3QgcnVuIGFueXRoaW5nIGlmIG5vIHJlbGF0ZWQgc291cmNlcyBhcmUgZm91bmRcbiAgICBpZiAoIXJlbGF0ZWQubGVuZ3RoKVxuICAgICAgcmV0dXJuIFtdXG5cbiAgICBjb25zdCB0ZXN0RGVwcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGVzdHMubWFwKGFzeW5jKGZpbGVwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlcHMgPSBhd2FpdCB0aGlzLmdldFRlc3REZXBlbmRlbmNpZXMoZmlsZXBhdGgpXG4gICAgICAgIHJldHVybiBbZmlsZXBhdGgsIGRlcHNdIGFzIGNvbnN0XG4gICAgICB9KSxcbiAgICApXG5cbiAgICBjb25zdCBydW5uaW5nVGVzdHMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBbZmlsZXBhdGgsIGRlcHNdIG9mIHRlc3REZXBzKSB7XG4gICAgICBpZiAoZGVwcy5zaXplICYmIHJlbGF0ZWQuc29tZShwYXRoID0+IGRlcHMuaGFzKHBhdGgpKSlcbiAgICAgICAgcnVubmluZ1Rlc3RzLnB1c2goZmlsZXBhdGgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bm5pbmdUZXN0c1xuICB9XG5cbiAgYXN5bmMgcnVuRmlsZXMoZmlsZXM6IHN0cmluZ1tdKSB7XG4gICAgYXdhaXQgdGhpcy5ydW5uaW5nUHJvbWlzZVxuXG4gICAgdGhpcy5ydW5uaW5nUHJvbWlzZSA9IChhc3luYygpID0+IHtcbiAgICAgIGlmICghdGhpcy5wb29sKVxuICAgICAgICB0aGlzLnBvb2wgPSBjcmVhdGVQb29sKHRoaXMpXG5cbiAgICAgIGNvbnN0IGludmFsaWRhdGVzID0gQXJyYXkuZnJvbSh0aGlzLmludmFsaWRhdGVzKVxuICAgICAgdGhpcy5pbnZhbGlkYXRlcy5jbGVhcigpXG4gICAgICBhd2FpdCB0aGlzLnBvb2wucnVuVGVzdHMoZmlsZXMsIGludmFsaWRhdGVzKVxuXG4gICAgICBpZiAoaGFzRmFpbGVkKHRoaXMuc3RhdGUuZ2V0RmlsZXMoKSkpXG4gICAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxXG5cbiAgICAgIGF3YWl0IHRoaXMucmVwb3J0KCdvbkZpbmlzaGVkJywgdGhpcy5zdGF0ZS5nZXRGaWxlcygpKVxuICAgIH0pKClcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5ydW5uaW5nUHJvbWlzZSA9IHVuZGVmaW5lZFxuICAgICAgfSlcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnJ1bm5pbmdQcm9taXNlXG4gIH1cblxuICBhc3luYyByZXJ1bkZpbGVzKGZpbGVzOiBzdHJpbmdbXSA9IHRoaXMuc3RhdGUuZ2V0RmlsZXBhdGhzKCksIHRyaWdnZXI/OiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLnJlcG9ydCgnb25XYXRjaGVyUmVydW4nLCBmaWxlcywgdHJpZ2dlcilcbiAgICBhd2FpdCB0aGlzLnJ1bkZpbGVzKGZpbGVzKVxuICAgIGF3YWl0IHRoaXMucmVwb3J0KCdvbldhdGNoZXJTdGFydCcpXG4gIH1cblxuICBhc3luYyByZXR1cm5GYWlsZWQoKSB7XG4gICAgYXdhaXQgdGhpcy5yZXJ1bkZpbGVzKHRoaXMuc3RhdGUuZ2V0RmFpbGVkRmlsZXBhdGhzKCksICdyZXJ1biBmYWlsZWQnKVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlU25hcHNob3QoZmlsZXM/OiBzdHJpbmdbXSkge1xuICAgIC8vIGRlZmF1bHQgdG8gZmFpbGVkIGZpbGVzXG4gICAgZmlsZXMgPSBmaWxlcyB8fCB0aGlzLnN0YXRlLmdldEZhaWxlZEZpbGVwYXRocygpXG5cbiAgICB0aGlzLmNvbmZpZ092ZXJyaWRlID0ge1xuICAgICAgc25hcHNob3RPcHRpb25zOiB7XG4gICAgICAgIHVwZGF0ZVNuYXBzaG90OiAnYWxsJyxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucmVydW5GaWxlcyhmaWxlcywgJ3VwZGF0ZSBzbmFwc2hvdCcpXG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5jb25maWdPdmVycmlkZSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIGxvZyguLi5hcmdzOiBhbnlbXSkge1xuICAgIHRoaXMuY29uc29sZS5sb2coLi4uYXJncylcbiAgfVxuXG4gIGVycm9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgdGhpcy5jb25zb2xlLmVycm9yKC4uLmFyZ3MpXG4gIH1cblxuICBwcml2YXRlIF9yZXJ1blRpbWVyOiBhbnlcbiAgcHJpdmF0ZSBhc3luYyBzY2hlZHVsZVJlcnVuKHRyaWdnZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY3VycmVudENvdW50ID0gdGhpcy5yZXN0YXJ0c0NvdW50XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3JlcnVuVGltZXIpXG4gICAgYXdhaXQgdGhpcy5ydW5uaW5nUHJvbWlzZVxuICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXJ1blRpbWVyKVxuXG4gICAgLy8gc2VydmVyIHJlc3RhcnRlZFxuICAgIGlmICh0aGlzLnJlc3RhcnRzQ291bnQgIT09IGN1cnJlbnRDb3VudClcbiAgICAgIHJldHVyblxuXG4gICAgdGhpcy5fcmVydW5UaW1lciA9IHNldFRpbWVvdXQoYXN5bmMoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jaGFuZ2VkVGVzdHMuc2l6ZSA9PT0gMCkge1xuICAgICAgICB0aGlzLmludmFsaWRhdGVzLmNsZWFyKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIHNlcnZlciByZXN0YXJ0ZWRcbiAgICAgIGlmICh0aGlzLnJlc3RhcnRzQ291bnQgIT09IGN1cnJlbnRDb3VudClcbiAgICAgICAgcmV0dXJuXG5cbiAgICAgIHRoaXMuaXNGaXJzdFJ1biA9IGZhbHNlXG5cbiAgICAgIC8vIGFkZCBwcmV2aW91c2x5IGZhaWxlZCBmaWxlc1xuICAgICAgLy8gaWYgKFJFUlVOX0ZBSUxFRCkge1xuICAgICAgLy8gICBjdHguc3RhdGUuZ2V0RmlsZXMoKS5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICAvLyAgICAgaWYgKGZpbGUucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnKVxuICAgICAgLy8gICAgICAgY2hhbmdlZFRlc3RzLmFkZChmaWxlLmZpbGVwYXRoKVxuICAgICAgLy8gICB9KVxuICAgICAgLy8gfVxuICAgICAgdGhpcy5zbmFwc2hvdC5jbGVhcigpXG4gICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odGhpcy5jaGFuZ2VkVGVzdHMpXG4gICAgICB0aGlzLmNoYW5nZWRUZXN0cy5jbGVhcigpXG5cbiAgICAgIHRoaXMubG9nKCdyZXR1cm4nKVxuICAgICAgaWYgKHRoaXMuY29uZmlnLmNvdmVyYWdlLmVuYWJsZWQgJiYgdGhpcy5jb25maWcuY292ZXJhZ2UuY2xlYW5PblJlcnVuKVxuICAgICAgICBhd2FpdCBjbGVhbkNvdmVyYWdlKHRoaXMuY29uZmlnLmNvdmVyYWdlKVxuXG4gICAgICBhd2FpdCB0aGlzLnJlcG9ydCgnb25XYXRjaGVyUmVydW4nLCBmaWxlcywgdHJpZ2dlcklkKVxuXG4gICAgICBhd2FpdCB0aGlzLnJ1bkZpbGVzKGZpbGVzKVxuXG4gICAgICBpZiAodGhpcy5jb25maWcuY292ZXJhZ2UuZW5hYmxlZClcbiAgICAgICAgYXdhaXQgcmVwb3J0Q292ZXJhZ2UodGhpcylcblxuICAgICAgYXdhaXQgdGhpcy5yZXBvcnQoJ29uV2F0Y2hlclN0YXJ0JylcbiAgICB9LCBXQVRDSEVSX0RFQk9VTkNFKVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyV2F0Y2hlciA9IG5vb3BcbiAgcHJpdmF0ZSByZWdpc3RlcldhdGNoZXIoKSB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgaWQgPSBzbGFzaChpZClcbiAgICAgIGNvbnN0IG5lZWRzUmVydW4gPSB0aGlzLmhhbmRsZUZpbGVDaGFuZ2VkKGlkKVxuICAgICAgaWYgKG5lZWRzUmVydW4pXG4gICAgICAgIHRoaXMuc2NoZWR1bGVSZXJ1bihpZClcbiAgICB9XG4gICAgY29uc3Qgb25VbmxpbmsgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgaWQgPSBzbGFzaChpZClcbiAgICAgIHRoaXMuaW52YWxpZGF0ZXMuYWRkKGlkKVxuXG4gICAgICBpZiAodGhpcy5zdGF0ZS5maWxlc01hcC5oYXMoaWQpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUuZmlsZXNNYXAuZGVsZXRlKGlkKVxuICAgICAgICB0aGlzLmNoYW5nZWRUZXN0cy5kZWxldGUoaWQpXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG9uQWRkID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgIGlkID0gc2xhc2goaWQpXG4gICAgICBpZiAodGhpcy5pc1RhcmdldEZpbGUoaWQpKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlZFRlc3RzLmFkZChpZClcbiAgICAgICAgdGhpcy5zY2hlZHVsZVJlcnVuKGlkKVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB3YXRjaGVyID0gdGhpcy5zZXJ2ZXIud2F0Y2hlclxuICAgIHdhdGNoZXIub24oJ2NoYW5nZScsIG9uQ2hhbmdlKVxuICAgIHdhdGNoZXIub24oJ3VubGluaycsIG9uVW5saW5rKVxuICAgIHdhdGNoZXIub24oJ2FkZCcsIG9uQWRkKVxuXG4gICAgdGhpcy51bnJlZ2lzdGVyV2F0Y2hlciA9ICgpID0+IHtcbiAgICAgIHdhdGNoZXIub2ZmKCdjaGFuZ2UnLCBvbkNoYW5nZSlcbiAgICAgIHdhdGNoZXIub2ZmKCd1bmxpbmsnLCBvblVubGluaylcbiAgICAgIHdhdGNoZXIub2ZmKCdhZGQnLCBvbkFkZClcbiAgICAgIHRoaXMudW5yZWdpc3RlcldhdGNoZXIgPSBub29wXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIEEgdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHJlcnVuIGlzIG5lZWRlZCAoY2hhbmdlZFRlc3RzIHdhcyBtdXRhdGVkKVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVGaWxlQ2hhbmdlZChpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY2hhbmdlZFRlc3RzLmhhcyhpZCkgfHwgdGhpcy5pbnZhbGlkYXRlcy5oYXMoaWQpIHx8IHRoaXMuY29uZmlnLndhdGNoSWdub3JlLnNvbWUoaSA9PiBpZC5tYXRjaChpKSkpXG4gICAgICByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IG1vZCA9IHRoaXMuc2VydmVyLm1vZHVsZUdyYXBoLmdldE1vZHVsZUJ5SWQoaWQpXG4gICAgaWYgKCFtb2QpXG4gICAgICByZXR1cm4gZmFsc2VcblxuICAgIHRoaXMuaW52YWxpZGF0ZXMuYWRkKGlkKVxuXG4gICAgaWYgKHRoaXMuc3RhdGUuZmlsZXNNYXAuaGFzKGlkKSkge1xuICAgICAgdGhpcy5jaGFuZ2VkVGVzdHMuYWRkKGlkKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBsZXQgcmVydW4gPSBmYWxzZVxuICAgIG1vZC5pbXBvcnRlcnMuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgaWYgKCFpLmlkKVxuICAgICAgICByZXR1cm5cblxuICAgICAgY29uc3QgaGVlZHNSZXJ1biA9IHRoaXMuaGFuZGxlRmlsZUNoYW5nZWQoaS5pZClcbiAgICAgIGlmIChoZWVkc1JlcnVuKVxuICAgICAgICByZXJ1biA9IHRydWVcbiAgICB9KVxuXG4gICAgcmV0dXJuIHJlcnVuXG4gIH1cblxuICBhc3luYyBjbG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuY2xvc2luZ1Byb21pc2UpIHtcbiAgICAgIHRoaXMuY2xvc2luZ1Byb21pc2UgPSBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgICB0aGlzLnBvb2w/LmNsb3NlKCksXG4gICAgICAgIHRoaXMuc2VydmVyLmNsb3NlKCksXG4gICAgICBdLmZpbHRlcihCb29sZWFuKSkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAncmVqZWN0ZWQnKS5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yKCdlcnJvciBkdXJpbmcgY2xvc2UnLCAoZXJyIGFzIFByb21pc2VSZWplY3RlZFJlc3VsdCkucmVhc29uKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvc2luZ1Byb21pc2VcbiAgfVxuXG4gIGFzeW5jIGV4aXQoZm9yY2UgPSBmYWxzZSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc29sZS53YXJuKGBjbG9zZSB0aW1lZCBvdXQgYWZ0ZXIgJHtDTE9TRV9USU1FT1VUfW1zYClcbiAgICAgIHByb2Nlc3MuZXhpdCgpXG4gICAgfSwgQ0xPU0VfVElNRU9VVCkudW5yZWYoKVxuXG4gICAgYXdhaXQgdGhpcy5jbG9zZSgpXG4gICAgaWYgKGZvcmNlKVxuICAgICAgcHJvY2Vzcy5leGl0KClcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydDxUIGV4dGVuZHMga2V5b2YgUmVwb3J0ZXI+KG5hbWU6IFQsIC4uLmFyZ3M6IEFyZ3VtZW50c1R5cGU8UmVwb3J0ZXJbVF0+KSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5yZXBvcnRlcnMubWFwKHIgPT4gcltuYW1lXT8uKFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBsZXQgbWUgZ29cbiAgICAgIC4uLmFyZ3MsXG4gICAgKSkpXG4gIH1cblxuICBhc3luYyBnbG9iVGVzdEZpbGVzKGZpbHRlcnM/OiBzdHJpbmdbXSkge1xuICAgIGxldCBmaWxlcyA9IGF3YWl0IGZnKFxuICAgICAgdGhpcy5jb25maWcuaW5jbHVkZSxcbiAgICAgIHtcbiAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgIGN3ZDogdGhpcy5jb25maWcucm9vdCxcbiAgICAgICAgaWdub3JlOiB0aGlzLmNvbmZpZy5leGNsdWRlLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBpZiAoZmlsdGVycz8ubGVuZ3RoKVxuICAgICAgZmlsZXMgPSBmaWxlcy5maWx0ZXIoaSA9PiBmaWx0ZXJzLnNvbWUoZiA9PiBpLmluY2x1ZGVzKGYpKSlcblxuICAgIHJldHVybiBmaWxlc1xuICB9XG5cbiAgaXNUYXJnZXRGaWxlKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAobW0uaXNNYXRjaChpZCwgdGhpcy5jb25maWcuZXhjbHVkZSkpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gbW0uaXNNYXRjaChpZCwgdGhpcy5jb25maWcuaW5jbHVkZSlcbiAgfVxuXG4gIG9uU2VydmVyUmVzdGFydGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fb25SZXN0YXJ0TGlzdGVuZXJzLnB1c2goZm4pXG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAndml0ZSdcbmltcG9ydCB7IFZpdGVOb2RlUnVubmVyIH0gZnJvbSAndml0ZS1ub2RlL2NsaWVudCdcbmltcG9ydCB0eXBlIHsgVml0ZXN0IH0gZnJvbSAnLi4vY29yZSdcbmltcG9ydCB7IHRvQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscydcblxuaW50ZXJmYWNlIEdsb2JhbFNldHVwRmlsZSB7XG4gIGZpbGU6IHN0cmluZ1xuICBzZXR1cD86ICgpID0+IFByb21pc2U8RnVuY3Rpb258dm9pZD58dm9pZFxuICB0ZWFyZG93bj86IEZ1bmN0aW9uXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRHbG9iYWxTZXR1cEZpbGVzKGN0eDogVml0ZXN0KTogUHJvbWlzZTxHbG9iYWxTZXR1cEZpbGVbXT4ge1xuICBjb25zdCBub2RlID0gY3R4LnZpdGVub2RlXG4gIGNvbnN0IHNlcnZlciA9IGN0eC5zZXJ2ZXJcbiAgY29uc3QgcnVubmVyID0gbmV3IFZpdGVOb2RlUnVubmVyKHtcbiAgICByb290OiBzZXJ2ZXIuY29uZmlnLnJvb3QsXG4gICAgYmFzZTogc2VydmVyLmNvbmZpZy5iYXNlLFxuICAgIGZldGNoTW9kdWxlKGlkKSB7XG4gICAgICByZXR1cm4gbm9kZS5mZXRjaE1vZHVsZShpZClcbiAgICB9LFxuICB9KVxuICBjb25zdCBnbG9iYWxTZXR1cEZpbGVzID0gdG9BcnJheShzZXJ2ZXIuY29uZmlnLnRlc3Q/Lmdsb2JhbFNldHVwKVxuICByZXR1cm4gUHJvbWlzZS5hbGwoZ2xvYmFsU2V0dXBGaWxlcy5tYXAoZmlsZSA9PiBsb2FkR2xvYmFsU2V0dXBGaWxlKGZpbGUsIHJ1bm5lcikpKVxufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkR2xvYmFsU2V0dXBGaWxlKGZpbGU6IHN0cmluZywgcnVubmVyOiBWaXRlTm9kZVJ1bm5lcik6IFByb21pc2U8R2xvYmFsU2V0dXBGaWxlPiB7XG4gIGNvbnN0IG0gPSBhd2FpdCBydW5uZXIuZXhlY3V0ZUZpbGUoZmlsZSlcbiAgZm9yIChjb25zdCBleHAgb2YgWydkZWZhdWx0JywgJ3NldHVwJywgJ3RlYXJkb3duJ10pIHtcbiAgICBpZiAobVtleHBdICE9IG51bGwgJiYgdHlwZW9mIG1bZXhwXSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBleHBvcnQgaW4gZ2xvYmFsU2V0dXAgZmlsZSAke2ZpbGV9OiAke2V4cH0gbXVzdCBiZSBhIGZ1bmN0aW9uYClcbiAgfVxuICBpZiAobS5kZWZhdWx0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGUsXG4gICAgICBzZXR1cDogbS5kZWZhdWx0LFxuICAgIH1cbiAgfVxuICBlbHNlIGlmIChtLnNldHVwIHx8IG0udGVhcmRvd24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZSxcbiAgICAgIHNldHVwOiBtLnNldHVwLFxuICAgICAgdGVhcmRvd246IG0udGVhcmRvd24sXG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBnbG9iYWxTZXR1cCBmaWxlICR7ZmlsZX0uIE11c3QgZXhwb3J0IHNldHVwLCB0ZWFyZG93biBvciBoYXZlIGEgZGVmYXVsdCBleHBvcnRgKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBHbG9iYWxTZXR1cFBsdWdpbiA9IChjdHg6IFZpdGVzdCk6IFBsdWdpbiA9PiB7XG4gIGxldCBnbG9iYWxTZXR1cEZpbGVzOiBHbG9iYWxTZXR1cEZpbGVbXVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlc3Q6Z2xvYmFsLXNldHVwLXBsdWdpbicsXG4gICAgZW5mb3JjZTogJ3ByZScsXG5cbiAgICBhc3luYyBidWlsZFN0YXJ0KCkge1xuICAgICAgaWYgKCFjdHguc2VydmVyLmNvbmZpZy50ZXN0Py5nbG9iYWxTZXR1cClcbiAgICAgICAgcmV0dXJuXG5cbiAgICAgIGdsb2JhbFNldHVwRmlsZXMgPSBhd2FpdCBsb2FkR2xvYmFsU2V0dXBGaWxlcyhjdHgpXG4gICAgICBmb3IgKGNvbnN0IGdsb2JhbFNldHVwRmlsZSBvZiBnbG9iYWxTZXR1cEZpbGVzKSB7XG4gICAgICAgIGNvbnN0IHRlYXJkb3duID0gYXdhaXQgZ2xvYmFsU2V0dXBGaWxlLnNldHVwPy4oKVxuICAgICAgICBpZiAodGVhcmRvd24gPT0gbnVsbCB8fCAhIWdsb2JhbFNldHVwRmlsZS50ZWFyZG93bilcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICBpZiAodHlwZW9mIHRlYXJkb3duICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCByZXR1cm4gdmFsdWUgaW4gZ2xvYmFsU2V0dXAgZmlsZSAke2dsb2JhbFNldHVwRmlsZS5maWxlfS4gTXVzdCByZXR1cm4gYSBmdW5jdGlvbmApXG4gICAgICAgIGdsb2JhbFNldHVwRmlsZS50ZWFyZG93biA9IHRlYXJkb3duXG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIGJ1aWxkRW5kKCkge1xuICAgICAgaWYgKGdsb2JhbFNldHVwRmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGdsb2JhbFNldHVwRmlsZSBvZiBnbG9iYWxTZXR1cEZpbGVzLnJldmVyc2UoKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBnbG9iYWxTZXR1cEZpbGUudGVhcmRvd24/LigpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgZXJyb3IgZHVyaW5nIGdsb2JhbCB0ZWFyZG93biBvZiAke2dsb2JhbFNldHVwRmlsZS5maWxlfWAsIGVycm9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAndml0ZSdcbmltcG9ydCBNYWdpY1N0cmluZyBmcm9tICdtYWdpYy1zdHJpbmcnXG5pbXBvcnQgeyBnZXRDYWxsTGFzdEluZGV4IH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5cbmNvbnN0IGhvaXN0UmVnZXhwID0gL14gKlxcYigoPzp2aXRlc3R8dmkpXFxzKi5cXHMqKG1vY2t8dW5tb2NrKVxcKFtcImAnXFxzXSsoLipbQFxcd18tXSspW1wiYCdcXHNdKylbKSxdezF9Oz8vZ21cbmNvbnN0IHZpdGVzdFJlZ2V4cCA9IC9pbXBvcnQge1tefV0qfS4qKD89W1wiJ2Bddml0ZXN0W1wiYCddKS4qL2dtXG5cbmV4cG9ydCBmdW5jdGlvbiBob2lzdE1vY2tzKGNvZGU6IHN0cmluZykge1xuICBsZXQgbTogTWFnaWNTdHJpbmcgfCB1bmRlZmluZWRcbiAgY29uc3QgbW9ja3MgPSBjb2RlLm1hdGNoQWxsKGhvaXN0UmVnZXhwKVxuXG4gIGZvciAoY29uc3QgbW9ja1Jlc3VsdCBvZiBtb2Nrcykge1xuICAgIGNvbnN0IGxhc3RJbmRleCA9IGdldE1vY2tMYXN0SW5kZXgoY29kZS5zbGljZShtb2NrUmVzdWx0LmluZGV4ISkpXG5cbiAgICBpZiAobGFzdEluZGV4ID09PSBudWxsKSBjb250aW51ZVxuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IG1vY2tSZXN1bHQuaW5kZXghXG5cbiAgICBjb25zdCB7IGluc2lkZUNvbW1lbnQsIGluc2lkZVN0cmluZyB9ID0gZ2V0SW5kZXhTdGF0dXMoY29kZSwgc3RhcnRJbmRleClcblxuICAgIGlmIChpbnNpZGVDb21tZW50IHx8IGluc2lkZVN0cmluZylcbiAgICAgIGNvbnRpbnVlXG5cbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBsYXN0SW5kZXhcblxuICAgIG0gPz89IG5ldyBNYWdpY1N0cmluZyhjb2RlKVxuXG4gICAgbS5wcmVwZW5kKGAke20uc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpfVxcbmApXG4gICAgbS5yZW1vdmUoc3RhcnRJbmRleCwgZW5kSW5kZXgpXG4gIH1cblxuICByZXR1cm4gbVxufVxuXG5leHBvcnQgY29uc3QgTW9ja3NQbHVnaW4gPSAoKTogUGx1Z2luID0+IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAndml0ZXN0Om1vY2stcGx1Z2luJyxcbiAgICBlbmZvcmNlOiAncG9zdCcsXG4gICAgYXN5bmMgdHJhbnNmb3JtKGNvZGUpIHtcbiAgICAgIGNvbnN0IG0gPSBob2lzdE1vY2tzKGNvZGUpXG5cbiAgICAgIGlmIChtKSB7XG4gICAgICAgIC8vIGhvaXN0IHZpdGVzdCBpbXBvcnRzIGluIGNhc2UgaXQgd2FzIHVzZWQgaW5zaWRlIHZpLm1vY2sgZmFjdG9yeSAjNDI1XG4gICAgICAgIGNvbnN0IHZpdGVzdEltcG9ydHMgPSBjb2RlLm1hdGNoQWxsKHZpdGVzdFJlZ2V4cClcbiAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiB2aXRlc3RJbXBvcnRzKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXhTdGFydCA9IG1hdGNoLmluZGV4IVxuICAgICAgICAgIGNvbnN0IGluZGV4RW5kID0gbWF0Y2hbMF0ubGVuZ3RoICsgaW5kZXhTdGFydFxuICAgICAgICAgIG0ucmVtb3ZlKGluZGV4U3RhcnQsIGluZGV4RW5kKVxuICAgICAgICAgIG0ucHJlcGVuZChgJHttYXRjaFswXX1cXG5gKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29kZTogbS50b1N0cmluZygpLFxuICAgICAgICAgIG1hcDogbS5nZW5lcmF0ZU1hcCh7IGhpcmVzOiB0cnVlIH0pLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRNb2NrTGFzdEluZGV4KGNvZGU6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xuICBjb25zdCBpbmRleCA9IGdldENhbGxMYXN0SW5kZXgoY29kZSlcbiAgaWYgKGluZGV4ID09PSBudWxsKVxuICAgIHJldHVybiBudWxsXG4gIHJldHVybiBjb2RlW2luZGV4ICsgMV0gPT09ICc7JyA/IGluZGV4ICsgMiA6IGluZGV4ICsgMVxufVxuXG5mdW5jdGlvbiBnZXRJbmRleFN0YXR1cyhjb2RlOiBzdHJpbmcsIGZyb206IG51bWJlcikge1xuICBsZXQgaW5kZXggPSAwXG4gIGxldCBjb21tZW50U3RhcnRlZCA9IGZhbHNlXG4gIGxldCBjb21tZW50RW5kZWQgPSB0cnVlXG4gIGxldCBtdWx0aWxpbmVDb21tZW50U3RhcnRlZCA9IGZhbHNlXG4gIGxldCBtdWx0aWxpbmVDb21tZW50RW5kZWQgPSB0cnVlXG4gIGxldCBpblN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgbGV0IGJlZm9yZUNoYXI6IHN0cmluZyB8IG51bGwgPSBudWxsXG5cbiAgd2hpbGUgKGluZGV4IDw9IGZyb20pIHtcbiAgICBjb25zdCBjaGFyID0gY29kZVtpbmRleF1cbiAgICBjb25zdCBzdWIgPSBjb2RlW2luZGV4XSArIGNvZGVbaW5kZXggKyAxXVxuXG4gICAgaWYgKCFpblN0cmluZykge1xuICAgICAgaWYgKHN1YiA9PT0gJy8qJykge1xuICAgICAgICBtdWx0aWxpbmVDb21tZW50U3RhcnRlZCA9IHRydWVcbiAgICAgICAgbXVsdGlsaW5lQ29tbWVudEVuZGVkID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGlmIChzdWIgPT09ICcqLycgJiYgbXVsdGlsaW5lQ29tbWVudFN0YXJ0ZWQpIHtcbiAgICAgICAgbXVsdGlsaW5lQ29tbWVudFN0YXJ0ZWQgPSBmYWxzZVxuICAgICAgICBtdWx0aWxpbmVDb21tZW50RW5kZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoc3ViID09PSAnLy8nKSB7XG4gICAgICAgIGNvbW1lbnRTdGFydGVkID0gdHJ1ZVxuICAgICAgICBjb21tZW50RW5kZWQgPSBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKChjaGFyID09PSAnXFxuJyB8fCBzdWIgPT09ICdcXHJcXG4nKSAmJiBjb21tZW50U3RhcnRlZCkge1xuICAgICAgICBjb21tZW50U3RhcnRlZCA9IGZhbHNlXG4gICAgICAgIGNvbW1lbnRFbmRlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW11bHRpbGluZUNvbW1lbnRTdGFydGVkICYmICFjb21tZW50U3RhcnRlZCkge1xuICAgICAgY29uc3QgaXNDaGFyU3RyaW5nID0gY2hhciA9PT0gJ1wiJyB8fCBjaGFyID09PSAnXFwnJyB8fCBjaGFyID09PSAnYCdcblxuICAgICAgaWYgKGlzQ2hhclN0cmluZyAmJiBiZWZvcmVDaGFyICE9PSAnXFxcXCcpIHtcbiAgICAgICAgaWYgKGluU3RyaW5nID09PSBjaGFyKVxuICAgICAgICAgIGluU3RyaW5nID0gbnVsbFxuICAgICAgICBlbHNlIGlmICghaW5TdHJpbmcpXG4gICAgICAgICAgaW5TdHJpbmcgPSBjaGFyXG4gICAgICB9XG4gICAgfVxuXG4gICAgYmVmb3JlQ2hhciA9IGNvZGVbaW5kZXhdXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpbnNpZGVDb21tZW50OiAhbXVsdGlsaW5lQ29tbWVudEVuZGVkIHx8ICFjb21tZW50RW5kZWQsXG4gICAgaW5zaWRlU3RyaW5nOiBpblN0cmluZyAhPT0gbnVsbCxcbiAgfVxufVxuIiwiaW1wb3J0IE1hZ2ljU3RyaW5nIGZyb20gJ21hZ2ljLXN0cmluZydcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAndml0ZSdcblxuZXhwb3J0IGNvbnN0IEVudlJlcGxhY2VyUGx1Z2luID0gKCk6IFBsdWdpbiA9PiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3ZpdGVzdDplbnYtcmVwbGFjZXInLFxuICAgIGVuZm9yY2U6ICdwcmUnLFxuICAgIHRyYW5zZm9ybShjb2RlKSB7XG4gICAgICBsZXQgczogTWFnaWNTdHJpbmcgfCBudWxsID0gbnVsbFxuXG4gICAgICBjb25zdCBlbnZzID0gY29kZS5tYXRjaEFsbCgvXFxiaW1wb3J0XFwubWV0YVxcLmVudlxcYi9nKVxuXG4gICAgICBmb3IgKGNvbnN0IGVudiBvZiBlbnZzKSB7XG4gICAgICAgIHMgfHw9IG5ldyBNYWdpY1N0cmluZyhjb2RlKVxuXG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBlbnYuaW5kZXghXG4gICAgICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGVudlswXS5sZW5ndGhcblxuICAgICAgICBzLm92ZXJ3cml0ZShzdGFydEluZGV4LCBlbmRJbmRleCwgJ3Byb2Nlc3MuZW52JylcbiAgICAgIH1cblxuICAgICAgaWYgKHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2RlOiBzLnRvU3RyaW5nKCksXG4gICAgICAgICAgbWFwOiBzLmdlbmVyYXRlTWFwKHsgaGlyZXM6IHRydWUgfSksXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbiBhcyBWaXRlUGx1Z2luIH0gZnJvbSAndml0ZSdcbmltcG9ydCB7IGNvbmZpZ0RlZmF1bHRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBkZWVwTWVyZ2UsIGVuc3VyZVBhY2thZ2VJbnN0YWxsZWQsIG5vdE51bGxpc2ggfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IHJlc29sdmVBcGlDb25maWcgfSBmcm9tICcuLi9jb25maWcnXG5pbXBvcnQgeyBWaXRlc3QgfSBmcm9tICcuLi9jb3JlJ1xuaW1wb3J0IHsgR2xvYmFsU2V0dXBQbHVnaW4gfSBmcm9tICcuL2dsb2JhbFNldHVwJ1xuaW1wb3J0IHsgTW9ja3NQbHVnaW4gfSBmcm9tICcuL21vY2snXG5pbXBvcnQgeyBFbnZSZXBsYWNlclBsdWdpbiB9IGZyb20gJy4vZW52UmVwbGFjZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBWaXRlc3RQbHVnaW4ob3B0aW9uczogVXNlckNvbmZpZyA9IHt9LCBjdHggPSBuZXcgVml0ZXN0KCkpOiBQcm9taXNlPFZpdGVQbHVnaW5bXT4ge1xuICBsZXQgaGF2ZVN0YXJ0ZWQgPSBmYWxzZVxuXG4gIGFzeW5jIGZ1bmN0aW9uIFVJUGx1Z2luKCkge1xuICAgIGF3YWl0IGVuc3VyZVBhY2thZ2VJbnN0YWxsZWQoJ0B2aXRlc3QvdWknKVxuICAgIHJldHVybiAoYXdhaXQgaW1wb3J0KCdAdml0ZXN0L3VpJykpLmRlZmF1bHQob3B0aW9ucy51aUJhc2UpXG4gIH1cblxuICByZXR1cm4gW1xuICAgIDxWaXRlUGx1Z2luPntcbiAgICAgIG5hbWU6ICd2aXRlc3QnLFxuICAgICAgZW5mb3JjZTogJ3ByZScsXG4gICAgICBjb25maWcodml0ZUNvbmZpZzogYW55KSB7XG4gICAgICAgIC8vIHByZWxpbWluYXJ5IG1lcmdlIG9mIG9wdGlvbnMgdG8gYmUgYWJsZSB0byBjcmVhdGUgc2VydmVyIG9wdGlvbnMgZm9yIHZpdGVcbiAgICAgICAgLy8gaG93ZXZlciB0byBhbGxvdyB2aXRlc3QgcGx1Z2lucyB0byBtb2RpZnkgdml0ZXN0IGNvbmZpZyB2YWx1ZXNcbiAgICAgICAgLy8gdGhpcyBpcyByZXBlYXRlZCBpbiBjb25maWdSZXNvbHZlZCB3aGVyZSB0aGUgY29uZmlnIGlzIGZpbmFsXG4gICAgICAgIGNvbnN0IHByZU9wdGlvbnMgPSBkZWVwTWVyZ2Uoe30sIG9wdGlvbnMsIHZpdGVDb25maWcudGVzdCA/PyB7fSlcbiAgICAgICAgcHJlT3B0aW9ucy5hcGkgPSByZXNvbHZlQXBpQ29uZmlnKHByZU9wdGlvbnMpXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAvLyB3ZSBhcmUgc2V0dGluZyBOT0RFX0VOViB3aGVuIHJ1bm5pbmcgQ0xJIHRvICd0ZXN0JyxcbiAgICAgICAgICAvLyBidXQgaXQgY2FuIGJlIG92ZXJyaWRlblxuICAgICAgICAgIG1vZGU6IHZpdGVDb25maWcubW9kZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViB8fCAndGVzdCcsXG4gICAgICAgICAgY2xlYXJTY3JlZW46IGZhbHNlLFxuICAgICAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgICAgIC8vIGJ5IGRlZmF1bHQgVml0ZSByZXNvbHZlcyBgbW9kdWxlYCBmaWVsZCwgd2hpY2ggbm90IGFsd2F5cyBhIG5hdGl2ZSBFU00gbW9kdWxlXG4gICAgICAgICAgICAvLyBzZXR0aW5nIHRoaXMgb3B0aW9uIGNhbiBieXBhc3MgdGhhdCBhbmQgZmFsbGJhY2sgdG8gY2pzIHZlcnNpb25cbiAgICAgICAgICAgIG1haW5GaWVsZHM6IFtdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VydmVyOiB7XG4gICAgICAgICAgICAuLi5wcmVPcHRpb25zLmFwaSxcbiAgICAgICAgICAgIG9wZW46IHByZU9wdGlvbnMudWkgJiYgcHJlT3B0aW9ucy5vcGVuXG4gICAgICAgICAgICAgID8gcHJlT3B0aW9ucy51aUJhc2UgPz8gJy9fX3ZpdGVzdF9fLydcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwcmVUcmFuc2Zvcm1SZXF1ZXN0czogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBkaXNhYmxlIGRlcHMgb3B0aW1pemF0aW9uXG4gICAgICAgICAgY2FjaGVEaXI6IHVuZGVmaW5lZCxcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFzeW5jIGNvbmZpZ1Jlc29sdmVkKHZpdGVDb25maWcpIHtcbiAgICAgICAgLy8gdml0ZUNvbmZpZy50ZXN0IGlzIGZpbmFsIG5vdywgbWVyZ2UgaXQgZm9yIHJlYWxcbiAgICAgICAgb3B0aW9ucyA9IGRlZXBNZXJnZShcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBjb25maWdEZWZhdWx0cyxcbiAgICAgICAgICAodml0ZUNvbmZpZy50ZXN0IGFzIGFueSkgfHwge30sXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgICBvcHRpb25zLmFwaSA9IHJlc29sdmVBcGlDb25maWcob3B0aW9ucylcbiAgICAgICAgb3B0aW9ucy53YXRjaCA9IG9wdGlvbnMud2F0Y2ggJiYgIW9wdGlvbnMucnVuXG5cbiAgICAgICAgcHJvY2Vzcy5lbnYuQkFTRV9VUkwgPz89IHZpdGVDb25maWcuYmFzZVxuICAgICAgICBwcm9jZXNzLmVudi5NT0RFID8/PSB2aXRlQ29uZmlnLm1vZGVcbiAgICAgICAgLy8gcHJvY2Vzcy5lbnYgY2FuIGhhdmUgb25seSBzdHJpbmcgdmFsdWVzIGFuZCB3aWxsIGNhc3Qgc3RyaW5nIG9uIGl0IGlmIHdlIHBhc3Mgb3RoZXIgdHlwZSxcbiAgICAgICAgLy8gc28gd2UgYXJlIG1ha2luZyB0aGVtIHRydXRoeVxuICAgICAgICBwcm9jZXNzLmVudi5QUk9EID8/PSB2aXRlQ29uZmlnLmVudi5QUk9EID8gJzEnIDogJydcbiAgICAgICAgcHJvY2Vzcy5lbnYuREVWID8/PSB2aXRlQ29uZmlnLmVudi5ERVYgPyAnMScgOiAnJ1xuICAgICAgICBwcm9jZXNzLmVudi5TU1IgPz89ICcxJ1xuXG4gICAgICAgIC8vIGFjY291bnQgZm9yIHVzZXIgZW52IGRlZmluZXNcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdml0ZUNvbmZpZy5kZWZpbmUpIHtcbiAgICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2ltcG9ydC5tZXRhLmVudi4nKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gdml0ZUNvbmZpZy5kZWZpbmVba2V5XVxuICAgICAgICAgICAgY29uc3QgZW52S2V5ID0ga2V5LnNsaWNlKCdpbXBvcnQubWV0YS5lbnYuJy5sZW5ndGgpXG4gICAgICAgICAgICBwcm9jZXNzLmVudltlbnZLZXldID0gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHZhbCkgOiB2YWxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBjb25maWd1cmVTZXJ2ZXIoc2VydmVyKSB7XG4gICAgICAgIGlmIChoYXZlU3RhcnRlZClcbiAgICAgICAgICBhd2FpdCBjdHgucmVwb3J0KCdvblNlcnZlclJlc3RhcnQnKVxuICAgICAgICBhd2FpdCBjdHguc2V0U2VydmVyKG9wdGlvbnMsIHNlcnZlcilcbiAgICAgICAgaGF2ZVN0YXJ0ZWQgPSB0cnVlXG4gICAgICAgIGlmIChvcHRpb25zLmFwaSlcbiAgICAgICAgICAoYXdhaXQgaW1wb3J0KCcuLi8uLi9hcGkvc2V0dXAnKSkuc2V0dXAoY3R4KVxuXG4gICAgICAgIC8vICM0MTUsIGluIHJ1biBtb2RlIHdlIGRvbid0IG5lZWQgdGhlIHdhdGNoZXIsIGNsb3NlIGl0IHdvdWxkIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlXG4gICAgICAgIGlmICghb3B0aW9ucy53YXRjaClcbiAgICAgICAgICBhd2FpdCBzZXJ2ZXIud2F0Y2hlci5jbG9zZSgpXG4gICAgICB9LFxuICAgIH0sXG4gICAgRW52UmVwbGFjZXJQbHVnaW4oKSxcbiAgICBNb2Nrc1BsdWdpbigpLFxuICAgIEdsb2JhbFNldHVwUGx1Z2luKGN0eCksXG4gICAgb3B0aW9ucy51aVxuICAgICAgPyBhd2FpdCBVSVBsdWdpbigpXG4gICAgICA6IG51bGwsXG4gIF1cbiAgICAuZmlsdGVyKG5vdE51bGxpc2gpXG59XG4iLCJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIsIG1lcmdlQ29uZmlnIH0gZnJvbSAndml0ZSdcbmltcG9ydCB0eXBlIHsgSW5saW5lQ29uZmlnIGFzIFZpdGVJbmxpbmVDb25maWcsIFVzZXJDb25maWcgYXMgVml0ZVVzZXJDb25maWcgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHsgZmluZFVwIH0gZnJvbSAnZmluZC11cCdcbmltcG9ydCB0eXBlIHsgVXNlckNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgY29uZmlnRmlsZXMgfSBmcm9tICcuLi9jb25zdGFudHMnXG5pbXBvcnQgeyBWaXRlc3QgfSBmcm9tICcuL2NvcmUnXG5pbXBvcnQgeyBWaXRlc3RQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVWaXRlc3Qob3B0aW9uczogVXNlckNvbmZpZywgdml0ZU92ZXJyaWRlczogVml0ZVVzZXJDb25maWcgPSB7fSkge1xuICBjb25zdCBjdHggPSBuZXcgVml0ZXN0KClcbiAgY29uc3Qgcm9vdCA9IHJlc29sdmUob3B0aW9ucy5yb290IHx8IHByb2Nlc3MuY3dkKCkpXG5cbiAgY29uc3QgY29uZmlnUGF0aCA9IG9wdGlvbnMuY29uZmlnXG4gICAgPyByZXNvbHZlKHJvb3QsIG9wdGlvbnMuY29uZmlnKVxuICAgIDogYXdhaXQgZmluZFVwKGNvbmZpZ0ZpbGVzLCB7IGN3ZDogcm9vdCB9IGFzIGFueSlcblxuICBjb25zdCBjb25maWc6IFZpdGVJbmxpbmVDb25maWcgPSB7XG4gICAgcm9vdCxcbiAgICBsb2dMZXZlbDogJ2Vycm9yJyxcbiAgICBjb25maWdGaWxlOiBjb25maWdQYXRoLFxuICAgIHBsdWdpbnM6IGF3YWl0IFZpdGVzdFBsdWdpbihvcHRpb25zLCBjdHgpLFxuICB9XG5cbiAgY29uc3Qgc2VydmVyID0gYXdhaXQgY3JlYXRlU2VydmVyKG1lcmdlQ29uZmlnKGNvbmZpZywgdml0ZU92ZXJyaWRlcykpXG5cbiAgaWYgKGN0eC5jb25maWcuYXBpPy5wb3J0KVxuICAgIGF3YWl0IHNlcnZlci5saXN0ZW4oKVxuICBlbHNlXG4gICAgYXdhaXQgc2VydmVyLnBsdWdpbkNvbnRhaW5lci5idWlsZFN0YXJ0KHt9KVxuXG4gIHJldHVybiBjdHhcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwiZnNQcm9taXNlcyIsInBhdGgiLCJhcnJheSIsImVycm5vIiwiZnMiLCJEaXJlbnRGcm9tU3RhdHMiLCJjcmVhdGVEaXJlbnRGcm9tU3RhdHMiLCJwYXRoXzEiLCJyZXF1aXJlJCQwIiwiaXNFeHRnbG9iIiwiaXNHbG9iIiwicmVxdWlyZSQkMSIsInJlcXVpcmUkJDIiLCJnbG9iUGFyZW50IiwidXRpbHMiLCJzdHJpbmdpZnkiLCJpc051bWJlciIsInRvUmVnZXhSYW5nZSIsInV0aWwiLCJpc09iamVjdCIsInRyYW5zZm9ybSIsImZpbGwiLCJjb21waWxlIiwiZXhwYW5kIiwiY29uc3RhbnRzIiwiTUFYX0xFTkdUSCIsIkNIQVJfQ09NTUEiLCJDSEFSX0RPVCIsIkNIQVJfTEVGVF9QQVJFTlRIRVNFUyIsIkNIQVJfUklHSFRfUEFSRU5USEVTRVMiLCJDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UiLCJDSEFSX1JJR0hUX0NVUkxZX0JSQUNFIiwiQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUIiwiQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCIsInBhcnNlIiwicGFyc2VfMSIsInJlcXVpcmUkJDMiLCJicmFjZXMiLCJQT1NJWF9SRUdFWF9TT1VSQ0UiLCJzY2FuIiwicmVxdWlyZSQkNCIsInBpY29tYXRjaCIsIm1pY3JvbWF0Y2giLCJwYXR0ZXJuIiwiZ2V0UG9zaXRpdmVQYXR0ZXJucyIsIm1lcmdlMiIsInN0cmVhbSIsInN0cmluZyIsInJlcXVpcmUkJDUiLCJyZXF1aXJlJCQ2IiwiYXN5bmMiLCJyZWFkIiwiY2FsbEZhaWx1cmVDYWxsYmFjayIsImNhbGxTdWNjZXNzQ2FsbGJhY2siLCJzeW5jIiwic2V0dGluZ3MiLCJTZXR0aW5ncyIsIm91dCIsInNldHRpbmdzXzEiLCJnZXRTZXR0aW5ncyIsInF1ZXVlTWljcm90YXNrIiwiY29tbW9uIiwiam9pblBhdGhTZWdtZW50cyIsImZzU3RhdCIsImNvbnN0YW50c18xIiwicmVhZGRpcldpdGhGaWxlVHlwZXMiLCJyZWFkZGlyIiwicmV1c2lmeSIsInJlYWRlciIsIlJlYWRlciIsImZzU2NhbmRpciIsInJlYWRlcl8xIiwiYXN5bmNfMSIsInN0cmVhbV8xIiwic3luY18xIiwiZnNXYWxrIiwiZW50cnkiLCJwcm92aWRlcl8xIiwic2xhc2giLCJfX2RlZlByb3AiLCJfX2RlZlByb3BzIiwiX19nZXRPd25Qcm9wRGVzY3MiLCJfX2dldE93blByb3BTeW1ib2xzIiwiX19oYXNPd25Qcm9wIiwiX19wcm9wSXNFbnVtIiwiX19kZWZOb3JtYWxQcm9wIiwiX19zcHJlYWRWYWx1ZXMiLCJfX3NwcmVhZFByb3BzIiwiZmxhdHRlblRhc2tzIiwibm9vcCIsImZnIiwibW0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQztBQUNYLENBQUMsS0FBSyxDQUFDO0FBQ1AsQ0FBQyxJQUFJLENBQUM7QUFDTjtBQUNBLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtBQUNwQixFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLEVBQUU7QUFDRixDQUFDO0FBQ0Q7QUFDZSxNQUFNLEtBQUssQ0FBQztBQUMzQixDQUFDLEtBQUssQ0FBQztBQUNQLENBQUMsS0FBSyxDQUFDO0FBQ1AsQ0FBQyxLQUFLLENBQUM7QUFDUDtBQUNBLENBQUMsV0FBVyxHQUFHO0FBQ2YsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDZixFQUFFO0FBQ0Y7QUFDQSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDaEIsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQjtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ2xCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRyxNQUFNO0FBQ1QsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUNyQixHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2YsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxPQUFPLEdBQUc7QUFDWCxFQUFFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDN0IsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2hCLEdBQUcsT0FBTztBQUNWLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztBQUMvQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNmLEVBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ3ZCLEVBQUU7QUFDRjtBQUNBLENBQUMsS0FBSyxHQUFHO0FBQ1QsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztBQUN6QixFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO0FBQ3pCLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDakIsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxJQUFJLElBQUksR0FBRztBQUNaLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3BCLEVBQUU7QUFDRjtBQUNBLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUc7QUFDdkIsRUFBRSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzNCO0FBQ0EsRUFBRSxPQUFPLE9BQU8sRUFBRTtBQUNsQixHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQztBQUN2QixHQUFHLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQzFCLEdBQUc7QUFDSCxFQUFFO0FBQ0Y7O0FDaEVlLFNBQVMsTUFBTSxDQUFDLFdBQVcsRUFBRTtBQUM1QyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxLQUFLLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDeEcsRUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7QUFDN0UsRUFBRTtBQUNGO0FBQ0EsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBQzNCLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCO0FBQ0EsQ0FBQyxNQUFNLElBQUksR0FBRyxNQUFNO0FBQ3BCLEVBQUUsV0FBVyxFQUFFLENBQUM7QUFDaEI7QUFDQSxFQUFFLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7QUFDdEIsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztBQUNyQixHQUFHO0FBQ0gsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLE1BQU0sR0FBRyxHQUFHLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEtBQUs7QUFDMUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUNoQjtBQUNBLEVBQUUsTUFBTSxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDN0M7QUFDQSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQjtBQUNBLEVBQUUsSUFBSTtBQUNOLEdBQUcsTUFBTSxNQUFNLENBQUM7QUFDaEIsR0FBRyxDQUFDLE1BQU0sRUFBRTtBQUNaO0FBQ0EsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNULEVBQUUsQ0FBQztBQUNIO0FBQ0EsQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxLQUFLO0FBQ3hDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEQ7QUFDQSxFQUFFLENBQUMsWUFBWTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMzQjtBQUNBLEdBQUcsSUFBSSxXQUFXLEdBQUcsV0FBVyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO0FBQ3BELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7QUFDdEIsSUFBSTtBQUNKLEdBQUcsR0FBRyxDQUFDO0FBQ1AsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSTtBQUMzRCxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLEVBQUUsQ0FBQyxDQUFDO0FBQ0o7QUFDQSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUU7QUFDcEMsRUFBRSxXQUFXLEVBQUU7QUFDZixHQUFHLEdBQUcsRUFBRSxNQUFNLFdBQVc7QUFDekIsR0FBRztBQUNILEVBQUUsWUFBWSxFQUFFO0FBQ2hCLEdBQUcsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFDLElBQUk7QUFDeEIsR0FBRztBQUNILEVBQUUsVUFBVSxFQUFFO0FBQ2QsR0FBRyxLQUFLLEVBQUUsTUFBTTtBQUNoQixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQixJQUFJO0FBQ0osR0FBRztBQUNILEVBQUUsQ0FBQyxDQUFDO0FBQ0o7QUFDQSxDQUFDLE9BQU8sU0FBUyxDQUFDO0FBQ2xCOztBQ2pFQSxNQUFNLFFBQVEsU0FBUyxLQUFLLENBQUM7QUFDN0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO0FBQ3BCLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDVixFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLEVBQUU7QUFDRixDQUFDO0FBQ0Q7QUFDQTtBQUNBLE1BQU0sV0FBVyxHQUFHLE9BQU8sT0FBTyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQztBQUNyRTtBQUNBO0FBQ0EsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLElBQUk7QUFDaEMsQ0FBQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDekIsRUFBRSxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEVBQUU7QUFDRjtBQUNBLENBQUMsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDLENBQUM7QUFDRjtBQUNlLGVBQWUsT0FBTztBQUNyQyxDQUFDLFFBQVE7QUFDVCxDQUFDLE1BQU07QUFDUCxDQUFDO0FBQ0QsRUFBRSxXQUFXLEdBQUcsTUFBTSxDQUFDLGlCQUFpQjtBQUN4QyxFQUFFLGFBQWEsR0FBRyxJQUFJO0FBQ3RCLEVBQUUsR0FBRyxFQUFFO0FBQ1AsRUFBRTtBQUNGLENBQUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25DO0FBQ0E7QUFDQSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RjtBQUNBO0FBQ0EsQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN6RTtBQUNBLENBQUMsSUFBSTtBQUNMLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLEVBQUUsQ0FBQyxPQUFPLEtBQUssRUFBRTtBQUNqQixFQUFFLElBQUksS0FBSyxZQUFZLFFBQVEsRUFBRTtBQUNqQyxHQUFHLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQztBQUN0QixHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ2QsRUFBRTtBQUNGOztBQzFDQSxNQUFNLFlBQVksR0FBRztBQUNyQixDQUFDLFNBQVMsRUFBRSxhQUFhO0FBQ3pCLENBQUMsSUFBSSxFQUFFLFFBQVE7QUFDZixDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRTtBQUN6QixDQUFDLElBQUksSUFBSSxJQUFJLFlBQVksRUFBRTtBQUMzQixFQUFFLE9BQU87QUFDVCxFQUFFO0FBQ0Y7QUFDQSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUNEO0FBQ0EsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDbkY7QUFDTyxlQUFlLFVBQVU7QUFDaEMsQ0FBQyxLQUFLO0FBQ04sQ0FBQztBQUNELEVBQUUsR0FBRyxHQUFHQSxTQUFPLENBQUMsR0FBRyxFQUFFO0FBQ3JCLEVBQUUsSUFBSSxHQUFHLE1BQU07QUFDZixFQUFFLGFBQWEsR0FBRyxJQUFJO0FBQ3RCLEVBQUUsV0FBVztBQUNiLEVBQUUsYUFBYTtBQUNmLEVBQUUsR0FBRyxFQUFFO0FBQ1AsRUFBRTtBQUNGLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pCO0FBQ0EsQ0FBQyxNQUFNLFlBQVksR0FBRyxhQUFhLEdBQUdDLFFBQVUsQ0FBQyxJQUFJLEdBQUdBLFFBQVUsQ0FBQyxLQUFLLENBQUM7QUFDekU7QUFDQSxDQUFDLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSTtBQUN0QyxFQUFFLElBQUk7QUFDTixHQUFHLE1BQU0sSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDQyxNQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzdELEdBQUcsT0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLEdBQUcsQ0FBQyxNQUFNO0FBQ1YsR0FBRyxPQUFPLEtBQUssQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDbEM7O0FDdkNPLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMvQztBQUNPLGVBQWUsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFO0FBQ3pELENBQUMsSUFBSSxTQUFTLEdBQUdBLE1BQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNqRCxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBR0EsTUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN0QyxDQUFDLE1BQU0sTUFBTSxHQUFHQSxNQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ2hFLENBQUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsaUJBQWlCLENBQUM7QUFDekQsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdCO0FBQ0EsQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLGFBQWEsSUFBSTtBQUMzQyxFQUFFLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFFO0FBQ2xDLEdBQUcsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzNDLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xELEVBQUUsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7QUFDckMsR0FBRyxPQUFPLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ2pELEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxTQUFTLENBQUM7QUFDbkIsRUFBRSxDQUFDO0FBQ0g7QUFDQSxDQUFDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNwQjtBQUNBLENBQUMsT0FBTyxJQUFJLEVBQUU7QUFDZDtBQUNBLEVBQUUsTUFBTSxTQUFTLEdBQUcsTUFBTSxVQUFVLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNuRTtBQUNBLEVBQUUsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFO0FBQ2hDLEdBQUcsTUFBTTtBQUNULEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxTQUFTLEVBQUU7QUFDakIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDQSxNQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3BELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxTQUFTLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxFQUFFO0FBQ3ZELEdBQUcsTUFBTTtBQUNULEdBQUc7QUFDSDtBQUNBLEVBQUUsU0FBUyxHQUFHQSxNQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3RDLEVBQUU7QUFDRjtBQUNBLENBQUMsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQztBQTRDRDtBQUNPLGVBQWUsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFO0FBQ2pELENBQUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQjs7Ozs7Ozs7QUM5RkEsTUFBTSxDQUFDLGNBQWMsQ0FBQ0MsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUM3QyxrQkFBa0IsR0FBRyxLQUFLLEVBQUU7QUFDN0MsU0FBUyxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQ3hCLElBQUksT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvRSxDQUFDO2VBQ2MsR0FBRyxRQUFRO0FBQzFCLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDckMsSUFBSSxNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7QUFDOUIsUUFBUSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM3QixZQUFZLFVBQVUsRUFBRSxDQUFDO0FBQ3pCLFlBQVksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQyxTQUFTO0FBQ1QsYUFBYTtBQUNiLFlBQVksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQyxTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztpQkFDZ0IsR0FBRyxTQUFTOzs7O0FDcEI3QixNQUFNLENBQUMsY0FBYyxDQUFDQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7eUJBQ3JDLEdBQUcsS0FBSyxFQUFFO0FBQ25DLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO0FBQ2xDLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUNuQyxDQUFDO3lCQUN3QixHQUFHLGlCQUFpQjs7OztBQ0w3QyxNQUFNLENBQUMsY0FBYyxDQUFDQyxJQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7MEJBQ2pDLEdBQUcsS0FBSyxFQUFFO0FBQ3ZDLE1BQU1DLGlCQUFlLENBQUM7QUFDdEIsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUM3QixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLFFBQVEsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RCxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6RCxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0MsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9DLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRCxRQUFRLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0QsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTQyx1QkFBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQzVDLElBQUksT0FBTyxJQUFJRCxpQkFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1QyxDQUFDOzBCQUM0QixHQUFHQyx1QkFBcUI7Ozs7QUNqQnJELE1BQU0sQ0FBQyxjQUFjLENBQUNDLE1BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzs4QkFDL0IsZ0JBQWlCLHNCQUF1QixpQkFBa0IsR0FBRyxLQUFLLEVBQUU7QUFDbkcsTUFBTU4sTUFBSSxHQUFHTyxNQUFlLENBQUM7QUFDN0IsTUFBTSxvQ0FBb0MsR0FBRyxDQUFDLENBQUM7QUFDL0MsTUFBTSx5QkFBeUIsR0FBRyxxQ0FBcUMsQ0FBQztBQUN4RTtBQUNBO0FBQ0E7QUFDQSxTQUFTLE9BQU8sQ0FBQyxRQUFRLEVBQUU7QUFDM0IsSUFBSSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7Y0FDYyxHQUFHLFFBQVE7QUFDMUIsU0FBUyxZQUFZLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRTtBQUNyQyxJQUFJLE9BQU9QLE1BQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7bUJBQ21CLEdBQUcsYUFBYTtBQUNwQyxTQUFTLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDekIsSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDOUQsQ0FBQzthQUNhLEdBQUcsT0FBTztBQUN4QixTQUFTLHVCQUF1QixDQUFDLEtBQUssRUFBRTtBQUN4QztBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ2pDLFFBQVEsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELFFBQVEsSUFBSSxnQkFBZ0IsS0FBSyxHQUFHLElBQUksZ0JBQWdCLEtBQUssSUFBSSxFQUFFO0FBQ25FLFlBQVksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFDckUsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7OEJBQzhCLEdBQUcsdUJBQXVCOzs7Ozs7Ozs7OztJQ3pCekRRLFdBQWMsR0FBRyxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUU7QUFDekMsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO0FBQzdDLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQztBQUNaLEVBQUUsUUFBUSxLQUFLLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0FBQ3ZELElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDOUIsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQzs7Ozs7Ozs7O0FDWkQsSUFBSSxTQUFTLEdBQUdELFdBQXFCLENBQUM7QUFDdEMsSUFBSSxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVDLElBQUksV0FBVyxHQUFHLFNBQVMsR0FBRyxFQUFFO0FBQ2hDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckIsRUFBRSxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0IsRUFBRSxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzQixFQUFFLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFCLEVBQUUsT0FBTyxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRTtBQUM3QixJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUM1QixNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzlELE1BQU0sT0FBTyxJQUFJLENBQUM7QUFDbEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLGdCQUFnQixLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDakYsTUFBTSxJQUFJLGdCQUFnQixHQUFHLEtBQUssRUFBRTtBQUNwQyxRQUFRLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25ELE9BQU87QUFDUCxNQUFNLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxFQUFFO0FBQ3BDLFFBQVEsSUFBSSxjQUFjLEtBQUssQ0FBQyxDQUFDLElBQUksY0FBYyxHQUFHLGdCQUFnQixFQUFFO0FBQ3hFLFVBQVUsT0FBTyxJQUFJLENBQUM7QUFDdEIsU0FBUztBQUNULFFBQVEsY0FBYyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xELFFBQVEsSUFBSSxjQUFjLEtBQUssQ0FBQyxDQUFDLElBQUksY0FBYyxHQUFHLGdCQUFnQixFQUFFO0FBQ3hFLFVBQVUsT0FBTyxJQUFJLENBQUM7QUFDdEIsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksZUFBZSxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDaEYsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEQsTUFBTSxJQUFJLGVBQWUsR0FBRyxLQUFLLEVBQUU7QUFDbkMsUUFBUSxjQUFjLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEQsUUFBUSxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxjQUFjLEdBQUcsZUFBZSxFQUFFO0FBQ3ZFLFVBQVUsT0FBTyxJQUFJLENBQUM7QUFDdEIsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksZUFBZSxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDMUksTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEQsTUFBTSxJQUFJLGVBQWUsR0FBRyxLQUFLLEVBQUU7QUFDbkMsUUFBUSxjQUFjLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEQsUUFBUSxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxjQUFjLEdBQUcsZUFBZSxFQUFFO0FBQ3ZFLFVBQVUsT0FBTyxJQUFJLENBQUM7QUFDdEIsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDMUUsTUFBTSxJQUFJLFNBQVMsR0FBRyxLQUFLLEVBQUU7QUFDN0IsUUFBUSxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUMsT0FBTztBQUNQLE1BQU0sSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDMUQsUUFBUSxlQUFlLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdEQsUUFBUSxJQUFJLGVBQWUsR0FBRyxTQUFTLEVBQUU7QUFDekMsVUFBVSxjQUFjLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDeEQsVUFBVSxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxjQUFjLEdBQUcsZUFBZSxFQUFFO0FBQ3pFLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDN0IsTUFBTSxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztBQUNqQixNQUFNLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QjtBQUNBLE1BQU0sSUFBSSxLQUFLLEVBQUU7QUFDakIsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ3RCLFVBQVUsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEIsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQzlCLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsT0FBTztBQUNQLEtBQUssTUFBTTtBQUNYLE1BQU0sS0FBSyxFQUFFLENBQUM7QUFDZCxLQUFLO0FBQ0wsR0FBRztBQUNILEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFDRjtBQUNBLElBQUksWUFBWSxHQUFHLFNBQVMsR0FBRyxFQUFFO0FBQ2pDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLEVBQUUsT0FBTyxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRTtBQUM3QixJQUFJLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUN4QyxNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQ2xCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO0FBQzdCLE1BQU0sSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDakIsTUFBTSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUI7QUFDQSxNQUFNLElBQUksS0FBSyxFQUFFO0FBQ2pCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUN0QixVQUFVLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUM5QixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLE9BQU87QUFDUCxLQUFLLE1BQU07QUFDWCxNQUFNLEtBQUssRUFBRSxDQUFDO0FBQ2QsS0FBSztBQUNMLEdBQUc7QUFDSCxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7SUFDQUUsUUFBYyxHQUFHLFNBQVMsTUFBTSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUU7QUFDL0MsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO0FBQzdDLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN0QixJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDO0FBQzFCO0FBQ0E7QUFDQSxFQUFFLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO0FBQzNDLElBQUksS0FBSyxHQUFHLFlBQVksQ0FBQztBQUN6QixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7O0FDbkpELElBQUksTUFBTSxHQUFHRixRQUFrQixDQUFDO0FBQ2hDLElBQUksZ0JBQWdCLEdBQUdHLE1BQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQ3JELElBQUksT0FBTyxHQUFHQyxVQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssT0FBTyxDQUFDO0FBQ25EO0FBQ0EsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2hCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztBQUN0QixJQUFJLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQUNsQyxJQUFJLE1BQU0sR0FBRyw2QkFBNkIsQ0FBQztBQUMzQyxJQUFJLE9BQU8sR0FBRyw2QkFBNkIsQ0FBQztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNBQyxZQUFjLEdBQUcsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRTtBQUNoRCxFQUFFLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0Q7QUFDQTtBQUNBLEVBQUUsSUFBSSxPQUFPLENBQUMsZUFBZSxJQUFJLE9BQU8sSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNwRSxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN4QyxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQzNCLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQztBQUNiO0FBQ0E7QUFDQSxFQUFFLEdBQUc7QUFDTCxJQUFJLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQyxHQUFHLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDNUM7QUFDQTtBQUNBLEVBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwQyxDQUFDOzs7OztBQ3hDRDtBQUNBLG9CQUFvQixHQUFHLElBQUk7QUFDM0IsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtBQUMvQixJQUFJLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxHQUFHO0FBQ0gsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQ3BELElBQUksT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLEdBQUc7QUFDSCxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsS0FBSyxLQUFLO0FBQ3RELEVBQUUsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ3BDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ3ZFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUs7QUFDN0MsRUFBRSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPO0FBQ3BCO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO0FBQ3JGLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtBQUMvQixNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDckMsTUFBTSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUMxQixLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsSUFBSSxJQUFJO0FBQy9CLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxPQUFPLEtBQUssQ0FBQztBQUMxQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbkQsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUN4QixJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFLLElBQUk7QUFDbEMsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQzNDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQzFELEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUNyRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtBQUNuRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3pCLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLElBQUksSUFBSTtBQUNoQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7QUFDckQsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixHQUFHO0FBQ0gsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLO0FBQ3RELEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqRCxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7QUFDaEQsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsQ0FBQyxHQUFHLElBQUksS0FBSztBQUMvQixFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNwQixFQUFFLE1BQU0sSUFBSSxHQUFHLEdBQUcsSUFBSTtBQUN0QixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLE1BQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBVyxDQUFDLEdBQUcsR0FBRyxLQUFLLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEYsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsR0FBRyxDQUFDO0FBQ0osRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDYixFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7OztBQzdHRCxNQUFNQyxPQUFLLEdBQUdOLE9BQWtCLENBQUM7QUFDakM7SUFDQU8sV0FBYyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxFQUFFLEtBQUs7QUFDeEMsRUFBRSxJQUFJLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxLQUFLO0FBQ3pDLElBQUksSUFBSSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsSUFBSUQsT0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3RSxJQUFJLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDO0FBQzlFLElBQUksSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDcEIsTUFBTSxJQUFJLENBQUMsWUFBWSxJQUFJLFdBQVcsS0FBS0EsT0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN0RSxRQUFRLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDakMsT0FBTztBQUNQLE1BQU0sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3hCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3BCLE1BQU0sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3hCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3BCLE1BQU0sS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3BDLFFBQVEsTUFBTSxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQyxPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7Ozs7Ozs7O0FDdEJEO0lBQ0FFLFVBQWMsR0FBRyxTQUFTLEdBQUcsRUFBRTtBQUMvQixFQUFFLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO0FBQy9CLElBQUksT0FBTyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUMzQixHQUFHO0FBQ0gsRUFBRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQ3BELElBQUksT0FBTyxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRSxHQUFHO0FBQ0gsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7Ozs7Ozs7O0FDVEQ7QUFDQSxNQUFNQSxVQUFRLEdBQUdSLFVBQW9CLENBQUM7QUFDdEM7QUFDQSxNQUFNUyxjQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sS0FBSztBQUM1QyxFQUFFLElBQUlELFVBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDL0IsSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7QUFDcEYsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUcsS0FBSyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFO0FBQ3JDLElBQUksT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJQSxVQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxFQUFFO0FBQy9CLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0FBQ3RGLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDOUMsRUFBRSxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUU7QUFDN0MsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssS0FBSyxDQUFDO0FBQ2pELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN0QyxFQUFFLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekMsRUFBRSxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3JDLEVBQUUsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMvQixFQUFFLElBQUksUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLEdBQUcsU0FBUyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDNUU7QUFDQSxFQUFFLElBQUlDLGNBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ25ELElBQUksT0FBT0EsY0FBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDL0MsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM3QixFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM3QixJQUFJLElBQUksTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2pDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ3RCLE1BQU0sT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsS0FBSztBQUNMLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtBQUM3QixNQUFNLE9BQU8sTUFBTSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwRCxFQUFFLElBQUksS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDakMsRUFBRSxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDckIsRUFBRSxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDckI7QUFDQSxFQUFFLElBQUksUUFBUSxFQUFFO0FBQ2hCLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7QUFDOUIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQzVDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ2IsSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLElBQUksU0FBUyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDZCxJQUFJLFNBQVMsR0FBRyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkQsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUM5QixFQUFFLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQzlCLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsU0FBUyxFQUFFLFNBQWUsQ0FBQyxDQUFDO0FBQzdEO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzdCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtBQUMvRSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QyxHQUFHO0FBQ0g7QUFDQSxFQUFFQSxjQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxFQUFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN0QixDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO0FBQzVDLEVBQUUsSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN6RSxFQUFFLElBQUksWUFBWSxHQUFHLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEUsRUFBRSxJQUFJLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3hFLEVBQUUsSUFBSSxXQUFXLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDMUUsRUFBRSxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUNEO0FBQ0EsU0FBUyxhQUFhLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUNqQyxFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNoQixFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNoQjtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwQyxFQUFFLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QjtBQUNBLEVBQUUsT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUU7QUFDckMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BCLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztBQUNmLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEMsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDO0FBQ0EsRUFBRSxPQUFPLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtBQUNwQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQ2YsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUNyQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEIsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDOUMsRUFBRSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7QUFDdEIsSUFBSSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNwRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEMsRUFBRSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQzdCLEVBQUUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ25CLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ25DLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUM7QUFDQSxJQUFJLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtBQUNsQyxNQUFNLE9BQU8sSUFBSSxVQUFVLENBQUM7QUFDNUI7QUFDQSxLQUFLLE1BQU0sSUFBSSxVQUFVLEtBQUssR0FBRyxJQUFJLFNBQVMsS0FBSyxHQUFHLEVBQUU7QUFDeEQsTUFBTSxPQUFPLElBQUksZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFNBQWtCLENBQUMsQ0FBQztBQUNsRTtBQUNBLEtBQUssTUFBTTtBQUNYLE1BQU0sS0FBSyxFQUFFLENBQUM7QUFDZCxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssRUFBRTtBQUNiLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEtBQUssSUFBSSxHQUFHLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDNUQsR0FBRztBQUNIO0FBQ0EsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzdDLENBQUM7QUFDRDtBQUNBLFNBQVMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUNqRCxFQUFFLElBQUksTUFBTSxHQUFHLGFBQWEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkMsRUFBRSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDbEIsRUFBRSxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUM7QUFDbEIsRUFBRSxJQUFJLElBQUksQ0FBQztBQUNYO0FBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxQyxJQUFJLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QixJQUFJLElBQUksR0FBRyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2xFLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQy9ELE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDakMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtBQUN0QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxQyxLQUFLO0FBQ0w7QUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsSUFBSSxLQUFLLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNwQixJQUFJLElBQUksR0FBRyxHQUFHLENBQUM7QUFDZixHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFDRDtBQUNBLFNBQVMsY0FBYyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUU7QUFDeEUsRUFBRSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDbEI7QUFDQSxFQUFFLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO0FBQ3ZCLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUN6QjtBQUNBO0FBQ0EsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7QUFDbEUsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUNuQyxLQUFLO0FBQ0w7QUFDQTtBQUNBLElBQUksSUFBSSxZQUFZLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7QUFDaEUsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUNuQyxLQUFLO0FBQ0wsR0FBRztBQUNILEVBQUUsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25CLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2YsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFDRDtBQUNBLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDdkIsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFDRDtBQUNBLFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2pDLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUM5QixFQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDcEMsRUFBRSxPQUFPLE9BQU8sSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFlBQVksQ0FBQyxNQUFNLEVBQUU7QUFDOUIsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3RDLEVBQUUsSUFBSSxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtBQUN6QixJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25ELEdBQUc7QUFDSCxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUNEO0FBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRTtBQUN6QyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN6QixFQUFFLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRTtBQUN2QyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO0FBQ3JCLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pELEVBQUUsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUM7QUFDM0M7QUFDQSxFQUFFLFFBQVEsSUFBSTtBQUNkLElBQUksS0FBSyxDQUFDO0FBQ1YsTUFBTSxPQUFPLEVBQUUsQ0FBQztBQUNoQixJQUFJLEtBQUssQ0FBQztBQUNWLE1BQU0sT0FBTyxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNoQyxJQUFJLEtBQUssQ0FBQztBQUNWLE1BQU0sT0FBTyxLQUFLLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLFNBQVM7QUFDYixNQUFNLE9BQU8sS0FBSyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkQsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBQSxjQUFZLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUN4QkEsY0FBWSxDQUFDLFVBQVUsR0FBRyxPQUFPQSxjQUFZLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQSxjQUFjLEdBQUdBLGNBQVk7Ozs7Ozs7O0FDdlI3QjtBQUNBLE1BQU1DLE1BQUksR0FBR1YsWUFBZSxDQUFDO0FBQzdCLE1BQU0sWUFBWSxHQUFHRyxjQUF5QixDQUFDO0FBQy9DO0FBQ0EsTUFBTVEsVUFBUSxHQUFHLEdBQUcsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkY7QUFDQSxNQUFNQyxXQUFTLEdBQUcsUUFBUSxJQUFJO0FBQzlCLEVBQUUsT0FBTyxLQUFLLElBQUksUUFBUSxLQUFLLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BFLENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxZQUFZLEdBQUcsS0FBSyxJQUFJO0FBQzlCLEVBQUUsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLEtBQUssT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNsRixDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sUUFBUSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0M7QUFDQSxNQUFNLEtBQUssR0FBRyxLQUFLLElBQUk7QUFDdkIsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN6QixFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9DLEVBQUUsSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2xDLEVBQUUsT0FBTyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNqQyxFQUFFLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU1MLFdBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxLQUFLO0FBQzNDLEVBQUUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO0FBQzVELElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsT0FBTyxPQUFPLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEtBQUs7QUFDNUMsRUFBRSxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUU7QUFDckIsSUFBSSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7QUFDM0MsSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxJQUFJLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsU0FBUyxHQUFHLENBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzRSxHQUFHO0FBQ0gsRUFBRSxJQUFJLFFBQVEsS0FBSyxLQUFLLEVBQUU7QUFDMUIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixHQUFHO0FBQ0gsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxLQUFLO0FBQ3ZDLEVBQUUsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQzdDLEVBQUUsSUFBSSxRQUFRLEVBQUU7QUFDaEIsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDdkQsRUFBRSxPQUFPLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sS0FBSztBQUN2QyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdELEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0Q7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUMzQyxFQUFFLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNyQixFQUFFLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUNyQixFQUFFLElBQUksTUFBTSxDQUFDO0FBQ2I7QUFDQSxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7QUFDOUIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUMsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO0FBQzlCLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxTQUFTLElBQUksU0FBUyxFQUFFO0FBQzlCLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDekMsR0FBRyxNQUFNO0FBQ1QsSUFBSSxNQUFNLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQztBQUNwQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNwQixJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sS0FBSztBQUM5QyxFQUFFLElBQUksU0FBUyxFQUFFO0FBQ2pCLElBQUksT0FBTyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzNELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEtBQUssQ0FBQztBQUM1QjtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxLQUFLO0FBQ3pDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzVCLElBQUksSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7QUFDckMsSUFBSSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDN0MsSUFBSSxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEUsR0FBRztBQUNILEVBQUUsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLEtBQUs7QUFDaEMsRUFBRSxPQUFPLElBQUksVUFBVSxDQUFDLDJCQUEyQixHQUFHRyxNQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3RSxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEtBQUs7QUFDOUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEUsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxLQUFLO0FBQ3ZDLEVBQUUsSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtBQUNyQyxJQUFJLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUNsRSxHQUFHO0FBQ0gsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMsQ0FBQztBQUNGO0FBQ0EsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLEVBQUUsS0FBSztBQUM1RCxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QjtBQUNBLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3BELElBQUksSUFBSSxPQUFPLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLElBQUksT0FBTyxFQUFFLENBQUM7QUFDZCxHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQjtBQUNBLEVBQUUsSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixFQUFFLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxFQUFFLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QixFQUFFLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckM7QUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNFLEVBQUUsSUFBSSxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUYsRUFBRSxJQUFJLFFBQVEsR0FBRyxNQUFNLEtBQUssS0FBSyxJQUFJSCxXQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUM7QUFDOUUsRUFBRSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJSyxXQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEQ7QUFDQSxFQUFFLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFO0FBQ3JDLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNsRixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDL0MsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkYsRUFBRSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDakIsRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDaEI7QUFDQSxFQUFFLE9BQU8sVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN2QyxJQUFJLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtBQUM5QyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNkLEtBQUssTUFBTTtBQUNYLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMxRCxLQUFLO0FBQ0wsSUFBSSxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN6QyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBQ1osR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQ2hDLElBQUksT0FBTyxJQUFJLEdBQUcsQ0FBQztBQUNuQixRQUFRLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO0FBQ2xDLFFBQVEsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUMxRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsRUFBRSxLQUFLO0FBQzVELEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDcEYsSUFBSSxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakM7QUFDQSxFQUFFLElBQUksVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsRUFBRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQixFQUFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNCO0FBQ0EsRUFBRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtBQUNyQyxJQUFJLE9BQU8sT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCO0FBQ0EsRUFBRSxPQUFPLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqQyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3pDLElBQUksS0FBSyxFQUFFLENBQUM7QUFDWixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDaEMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzFELEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU1DLE1BQUksR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sR0FBRyxFQUFFLEtBQUs7QUFDakQsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25CLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNsRCxJQUFJLE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0MsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRTtBQUNsQyxJQUFJLE9BQU9BLE1BQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3BELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSUYsVUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3RCLElBQUksT0FBT0UsTUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQzVCLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUM5QyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDaEM7QUFDQSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdkIsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0YsVUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RSxJQUFJLE9BQU9FLE1BQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUN4QyxJQUFJLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxXQUFXLENBQUMsS0FBSyxF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RyxDQUFDLEtBQUssQ0FBQztBQUN2RCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO0FBQzdELE1BQU0sSUFBSSxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQzlCLE1BQU0sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDcEQsTUFBTSxPQUFPO0FBQ2IsS0FBSztBQUNMO0FBQ0EsSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNwQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2YsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssS0FBSztBQUN2QyxJQUFJLE1BQU0sS0FBSyxHQUFHLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEU7QUFDQSxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ2hDLElBQUksTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQztB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Q0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsRCxVQUFVLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN2QixVQUFVLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7QUFDdkMsWUFBWSxNQUFNO0FBQ2xCLFdBQVc7QUFDWCxVQUFVLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7QUFDdEMsWUFBWSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0EsUUFBUSxNQUFNLEdBQUcsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxQyxRQUFRLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQy9CLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtBQUN2RCxRQUFRLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDN0QsUUFBUSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDM0QsUUFBUSxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQzNDLFFBQVEsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDL0IsUUFBUSxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUMzQixRQUFRLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQzlCLFVBQVUsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMs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RixNQUFNLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztBQUM3RixNQUFNLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDeEUsUUFBUSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRCxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO0FBQ3pDLFFBQVEsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsUUFBUSxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ3BDLFVBQVUsTUFBTTtBQUNoQixTQUFTO0FBQ1QsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixRQUFRLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxFQUFFO0FBQ3pDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7QUFDL0IsUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQztBQUM1QixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLFFBQVEsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFD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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQXdDLFdBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sS0FBS0EsV0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsV0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEtBQUs7QUFDeEMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSUEsV0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNuRixFQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLFdBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsV0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxHQUFHLEtBQUssRUFBRSxXQUFXLEdBQUcsS0FBSyxLQUFLO0FBQ3JGLEVBQUUsSUFBSSxZQUFZ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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsWUFBVSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxLQUFLO0FBQy9DLEVBQUUsSUFBSSxLQUFLLEdBQUc1QixPQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZDLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM1RSxFQUFFLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHQSxPQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3RFO0FBQ0EsRUFBRSxJQUFJLEtBQUssRUFBRTtBQUNiLElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxRCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBNEIsWUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsWUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsSUFB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LENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLO0FBQ3JDLElBQUksSUFBSSxFQUFFLENBQUM7QUFDWCxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxNQUFNLE1BQU0sQ0FBQztBQUNwRSxHQUFHLENBQUMsQ0FBQztBQUNMLEVBQUUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSztBQUNyQyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ1gsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssTUFBTSxNQUFNLENBQUM7QUFDcEUsR0FBRyxDQUFDLENBQUM7QUFDTCxFQUFFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztBQUMxRCxFQUFFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztBQUN0RCxFQUFFLE9BQU87QUFDVCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJO0FBQ25FLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUk7QUFDckUsSUFBSSxRQUFRLENBQUMsTUFBTSxH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QUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4RSxRQUFRLElBQUksSUFBSSxLQUFLLEVBQUU7QUFDdkIsVUFBVSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDeEIsT0FBTztBQUNQLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO0FBQ3hCLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDOUQsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsT0FBTztBQUNQLEtBQUs7QUFDTCxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3hELE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxDQUFDLGFBQWE7QUFDNUosUUFBUSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFD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
9221
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWYzM2JmYjM0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0veW9jdG8tcXVldWVAMS4wLjAvbm9kZV9tb2R1bGVzL3lvY3RvLXF1ZXVlL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3AtbGltaXRANC4wLjAvbm9kZV9tb2R1bGVzL3AtbGltaXQvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcC1sb2NhdGVANi4wLjAvbm9kZV9tb2R1bGVzL3AtbG9jYXRlL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2xvY2F0ZS1wYXRoQDcuMC4wL25vZGVfbW9kdWxlcy9sb2NhdGUtcGF0aC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9maW5kLXVwQDYuMi4wL25vZGVfbW9kdWxlcy9maW5kLXVwL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvYXJyYXkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9lcnJuby5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3V0aWxzL2ZzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvdXRpbHMvcGF0aC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9pcy1leHRnbG9iQDIuMS4xL25vZGVfbW9kdWxlcy9pcy1leHRnbG9iL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2lzLWdsb2JANC4wLjMvbm9kZV9tb2R1bGVzL2lzLWdsb2IvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZ2xvYi1wYXJlbnRANS4xLjIvbm9kZV9tb2R1bGVzL2dsb2ItcGFyZW50L2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2JyYWNlc0AzLjAuMi9ub2RlX21vZHVsZXMvYnJhY2VzL2xpYi91dGlscy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9icmFjZXNAMy4wLjIvbm9kZV9tb2R1bGVzL2JyYWNlcy9saWIvc3RyaW5naWZ5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2lzLW51bWJlckA3LjAuMC9ub2RlX21vZHVsZXMvaXMtbnVtYmVyL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3RvLXJlZ2V4LXJhbmdlQDUuMC4xL25vZGVfbW9kdWxlcy90by1yZWdleC1yYW5nZS9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9maWxsLXJhbmdlQDcuMC4xL25vZGVfbW9kdWxlcy9maWxsLXJhbmdlL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2JyYWNlc0AzLjAuMi9ub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9jb21waWxlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2JyYWNlc0AzLjAuMi9ub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9leHBhbmQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vYnJhY2VzQDMuMC4yL25vZGVfbW9kdWxlcy9icmFjZXMvbGliL2NvbnN0YW50cy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9icmFjZXNAMy4wLjIvbm9kZV9tb2R1bGVzL2JyYWNlcy9saWIvcGFyc2UuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vYnJhY2VzQDMuMC4yL25vZGVfbW9kdWxlcy9icmFjZXMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcGljb21hdGNoQDIuMy4wL25vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL2NvbnN0YW50cy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9waWNvbWF0Y2hAMi4zLjAvbm9kZV9tb2R1bGVzL3BpY29tYXRjaC9saWIvdXRpbHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcGljb21hdGNoQDIuMy4wL25vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL3NjYW4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcGljb21hdGNoQDIuMy4wL25vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL3BhcnNlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3BpY29tYXRjaEAyLjMuMC9ub2RlX21vZHVsZXMvcGljb21hdGNoL2xpYi9waWNvbWF0Y2guanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcGljb21hdGNoQDIuMy4wL25vZGVfbW9kdWxlcy9waWNvbWF0Y2gvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbWljcm9tYXRjaEA0LjAuNC9ub2RlX21vZHVsZXMvbWljcm9tYXRjaC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3V0aWxzL3BhdHRlcm4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbWVyZ2UyQDEuNC4xL25vZGVfbW9kdWxlcy9tZXJnZTIvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9zdHJlYW0uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9zdHJpbmcuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC91dGlscy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L21hbmFnZXJzL3Rhc2tzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvbWFuYWdlcnMvcGF0dGVybnMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQG5vZGVsaWIrZnMuc3RhdEAyLjAuNC9ub2RlX21vZHVsZXMvQG5vZGVsaWIvZnMuc3RhdC9vdXQvcHJvdmlkZXJzL2FzeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnN0YXRAMi4wLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L3Byb3ZpZGVycy9zeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnN0YXRAMi4wLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L2FkYXB0ZXJzL2ZzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnN0YXRAMi4wLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L3NldHRpbmdzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnN0YXRAMi4wLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnN0YXQvb3V0L2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3F1ZXVlLW1pY3JvdGFza0AxLjIuMi9ub2RlX21vZHVsZXMvcXVldWUtbWljcm90YXNrL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3J1bi1wYXJhbGxlbEAxLjIuMC9ub2RlX21vZHVsZXMvcnVuLXBhcmFsbGVsL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnNjYW5kaXJAMi4xLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnNjYW5kaXIvb3V0L2NvbnN0YW50cy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC91dGlscy9mcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC91dGlscy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9wcm92aWRlcnMvY29tbW9uLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLnNjYW5kaXJAMi4xLjQvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLnNjYW5kaXIvb3V0L3Byb3ZpZGVycy9hc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9wcm92aWRlcnMvc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9hZGFwdGVycy9mcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9zZXR0aW5ncy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy5zY2FuZGlyQDIuMS40L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy5zY2FuZGlyL291dC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9yZXVzaWZ5QDEuMC40L25vZGVfbW9kdWxlcy9yZXVzaWZ5L3JldXNpZnkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdHFAMS4xMC4xL25vZGVfbW9kdWxlcy9mYXN0cS9xdWV1ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL2NvbW1vbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL3JlYWRlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9yZWFkZXJzL2FzeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLndhbGtAMS4yLjYvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLndhbGsvb3V0L3Byb3ZpZGVycy9hc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9wcm92aWRlcnMvc3RyZWFtLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bub2RlbGliK2ZzLndhbGtAMS4yLjYvbm9kZV9tb2R1bGVzL0Bub2RlbGliL2ZzLndhbGsvb3V0L3JlYWRlcnMvc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9wcm92aWRlcnMvc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9zZXR0aW5ncy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Abm9kZWxpYitmcy53YWxrQDEuMi42L25vZGVfbW9kdWxlcy9Abm9kZWxpYi9mcy53YWxrL291dC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3JlYWRlcnMvcmVhZGVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcmVhZGVycy9zdHJlYW0uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvbWF0Y2hlcnMvbWF0Y2hlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9tYXRjaGVycy9wYXJ0aWFsLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL2ZpbHRlcnMvZGVlcC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9maWx0ZXJzL2VudHJ5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL2ZpbHRlcnMvZXJyb3IuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9wcm92aWRlcnMvdHJhbnNmb3JtZXJzL2VudHJ5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL3Byb3ZpZGVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL2FzeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvcHJvdmlkZXJzL3N0cmVhbS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3JlYWRlcnMvc3luYy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9mYXN0LWdsb2JAMy4yLjExL25vZGVfbW9kdWxlcy9mYXN0LWdsb2Ivb3V0L3Byb3ZpZGVycy9zeW5jLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtZ2xvYkAzLjIuMTEvbm9kZV9tb2R1bGVzL2Zhc3QtZ2xvYi9vdXQvc2V0dGluZ3MuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC1nbG9iQDMuMi4xMS9ub2RlX21vZHVsZXMvZmFzdC1nbG9iL291dC9pbmRleC5qcyIsIi4uLy4uL3ZpdGUtbm9kZS9zcmMvZXh0ZXJuYWxpemUudHMiLCIuLi8uLi92aXRlLW5vZGUvc3JjL3NlcnZlci50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvc25hcHNob3QvbWFuYWdlci50cyIsIi4uL3NyYy9pbnRlZ3JhdGlvbnMvY292ZXJhZ2UudHMiLCIuLi9zcmMvbm9kZS9yZXBvcnRlcnMvcmVuZGVyZXJzL3V0aWxzLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL2Jhc2UudHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vYW5zaS1lc2NhcGVzQDUuMC4wL25vZGVfbW9kdWxlcy9hbnNpLWVzY2FwZXMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcmVzdG9yZS1jdXJzb3JANC4wLjAvbm9kZV9tb2R1bGVzL3Jlc3RvcmUtY3Vyc29yL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NsaS1jdXJzb3JANC4wLjAvbm9kZV9tb2R1bGVzL2NsaS1jdXJzb3IvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vd3JhcC1hbnNpQDguMC4xL25vZGVfbW9kdWxlcy93cmFwLWFuc2kvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vbG9nLXVwZGF0ZUA1LjAuMC9ub2RlX21vZHVsZXMvbG9nLXVwZGF0ZS9pbmRleC5qcyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy9yZW5kZXJlcnMvbGlzdFJlbmRlcmVyLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL2RlZmF1bHQudHMiLCIuLi9zcmMvbm9kZS9yZXBvcnRlcnMvcmVuZGVyZXJzL2RvdFJlbmRlcmVyLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL2RvdC50cyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy9qc29uLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL3ZlcmJvc2UudHMiLCIuLi9zcmMvbm9kZS9yZXBvcnRlcnMvdXRpbHMvaW5kZW50ZWQtbG9nZ2VyLnRzIiwiLi4vc3JjL25vZGUvcmVwb3J0ZXJzL3RhcC50cyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy9qdW5pdC50cyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy90YXAtZmxhdC50cyIsIi4uL3NyYy9ub2RlL3JlcG9ydGVycy9pbmRleC50cyIsIi4uL3NyYy9ub2RlL3Bvb2wudHMiLCIuLi9zcmMvbm9kZS9zdGF0ZS50cyIsIi4uL3NyYy9ub2RlL2NvbmZpZy50cyIsIi4uL3NyYy9ub2RlL2NvcmUudHMiLCIuLi9zcmMvbm9kZS9wbHVnaW5zL2dsb2JhbFNldHVwLnRzIiwiLi4vc3JjL25vZGUvcGx1Z2lucy9tb2NrLnRzIiwiLi4vc3JjL25vZGUvcGx1Z2lucy9lbnZSZXBsYWNlci50cyIsIi4uL3NyYy9ub2RlL3BsdWdpbnMvaW5kZXgudHMiLCIuLi9zcmMvbm9kZS9jcmVhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkhvdyBpdCB3b3JrczpcbmB0aGlzLiNoZWFkYCBpcyBhbiBpbnN0YW5jZSBvZiBgTm9kZWAgd2hpY2gga2VlcHMgdHJhY2sgb2YgaXRzIGN1cnJlbnQgdmFsdWUgYW5kIG5lc3RzIGFub3RoZXIgaW5zdGFuY2Ugb2YgYE5vZGVgIHRoYXQga2VlcHMgdGhlIHZhbHVlIHRoYXQgY29tZXMgYWZ0ZXIgaXQuIFdoZW4gYSB2YWx1ZSBpcyBwcm92aWRlZCB0byBgLmVucXVldWUoKWAsIHRoZSBjb2RlIG5lZWRzIHRvIGl0ZXJhdGUgdGhyb3VnaCBgdGhpcy4jaGVhZGAsIGdvaW5nIGRlZXBlciBhbmQgZGVlcGVyIHRvIGZpbmQgdGhlIGxhc3QgdmFsdWUuIEhvd2V2ZXIsIGl0ZXJhdGluZyB0aHJvdWdoIGV2ZXJ5IHNpbmdsZSBpdGVtIGlzIHNsb3cuIFRoaXMgcHJvYmxlbSBpcyBzb2x2ZWQgYnkgc2F2aW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBsYXN0IHZhbHVlIGFzIGB0aGlzLiN0YWlsYCBzbyB0aGF0IGl0IGNhbiByZWZlcmVuY2UgaXQgdG8gYWRkIGEgbmV3IHZhbHVlLlxuKi9cblxuY2xhc3MgTm9kZSB7XG5cdHZhbHVlO1xuXHRuZXh0O1xuXG5cdGNvbnN0cnVjdG9yKHZhbHVlKSB7XG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFF1ZXVlIHtcblx0I2hlYWQ7XG5cdCN0YWlsO1xuXHQjc2l6ZTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmNsZWFyKCk7XG5cdH1cblxuXHRlbnF1ZXVlKHZhbHVlKSB7XG5cdFx0Y29uc3Qgbm9kZSA9IG5ldyBOb2RlKHZhbHVlKTtcblxuXHRcdGlmICh0aGlzLiNoZWFkKSB7XG5cdFx0XHR0aGlzLiN0YWlsLm5leHQgPSBub2RlO1xuXHRcdFx0dGhpcy4jdGFpbCA9IG5vZGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuI2hlYWQgPSBub2RlO1xuXHRcdFx0dGhpcy4jdGFpbCA9IG5vZGU7XG5cdFx0fVxuXG5cdFx0dGhpcy4jc2l6ZSsrO1xuXHR9XG5cblx0ZGVxdWV1ZSgpIHtcblx0XHRjb25zdCBjdXJyZW50ID0gdGhpcy4jaGVhZDtcblx0XHRpZiAoIWN1cnJlbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLiNoZWFkID0gdGhpcy4jaGVhZC5uZXh0O1xuXHRcdHRoaXMuI3NpemUtLTtcblx0XHRyZXR1cm4gY3VycmVudC52YWx1ZTtcblx0fVxuXG5cdGNsZWFyKCkge1xuXHRcdHRoaXMuI2hlYWQgPSB1bmRlZmluZWQ7XG5cdFx0dGhpcy4jdGFpbCA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLiNzaXplID0gMDtcblx0fVxuXG5cdGdldCBzaXplKCkge1xuXHRcdHJldHVybiB0aGlzLiNzaXplO1xuXHR9XG5cblx0KiBbU3ltYm9sLml0ZXJhdG9yXSgpIHtcblx0XHRsZXQgY3VycmVudCA9IHRoaXMuI2hlYWQ7XG5cblx0XHR3aGlsZSAoY3VycmVudCkge1xuXHRcdFx0eWllbGQgY3VycmVudC52YWx1ZTtcblx0XHRcdGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG5cdFx0fVxuXHR9XG59XG4iLCJpbXBvcnQgUXVldWUgZnJvbSAneW9jdG8tcXVldWUnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwTGltaXQoY29uY3VycmVuY3kpIHtcblx0aWYgKCEoKE51bWJlci5pc0ludGVnZXIoY29uY3VycmVuY3kpIHx8IGNvbmN1cnJlbmN5ID09PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpICYmIGNvbmN1cnJlbmN5ID4gMCkpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBgY29uY3VycmVuY3lgIHRvIGJlIGEgbnVtYmVyIGZyb20gMSBhbmQgdXAnKTtcblx0fVxuXG5cdGNvbnN0IHF1ZXVlID0gbmV3IFF1ZXVlKCk7XG5cdGxldCBhY3RpdmVDb3VudCA9IDA7XG5cblx0Y29uc3QgbmV4dCA9ICgpID0+IHtcblx0XHRhY3RpdmVDb3VudC0tO1xuXG5cdFx0aWYgKHF1ZXVlLnNpemUgPiAwKSB7XG5cdFx0XHRxdWV1ZS5kZXF1ZXVlKCkoKTtcblx0XHR9XG5cdH07XG5cblx0Y29uc3QgcnVuID0gYXN5bmMgKGZuLCByZXNvbHZlLCBhcmdzKSA9PiB7XG5cdFx0YWN0aXZlQ291bnQrKztcblxuXHRcdGNvbnN0IHJlc3VsdCA9IChhc3luYyAoKSA9PiBmbiguLi5hcmdzKSkoKTtcblxuXHRcdHJlc29sdmUocmVzdWx0KTtcblxuXHRcdHRyeSB7XG5cdFx0XHRhd2FpdCByZXN1bHQ7XG5cdFx0fSBjYXRjaCB7fVxuXG5cdFx0bmV4dCgpO1xuXHR9O1xuXG5cdGNvbnN0IGVucXVldWUgPSAoZm4sIHJlc29sdmUsIGFyZ3MpID0+IHtcblx0XHRxdWV1ZS5lbnF1ZXVlKHJ1bi5iaW5kKHVuZGVmaW5lZCwgZm4sIHJlc29sdmUsIGFyZ3MpKTtcblxuXHRcdChhc3luYyAoKSA9PiB7XG5cdFx0XHQvLyBUaGlzIGZ1bmN0aW9uIG5lZWRzIHRvIHdhaXQgdW50aWwgdGhlIG5leHQgbWljcm90YXNrIGJlZm9yZSBjb21wYXJpbmdcblx0XHRcdC8vIGBhY3RpdmVDb3VudGAgdG8gYGNvbmN1cnJlbmN5YCwgYmVjYXVzZSBgYWN0aXZlQ291bnRgIGlzIHVwZGF0ZWQgYXN5bmNocm9ub3VzbHlcblx0XHRcdC8vIHdoZW4gdGhlIHJ1biBmdW5jdGlvbiBpcyBkZXF1ZXVlZCBhbmQgY2FsbGVkLiBUaGUgY29tcGFyaXNvbiBpbiB0aGUgaWYtc3RhdGVtZW50XG5cdFx0XHQvLyBuZWVkcyB0byBoYXBwZW4gYXN5bmNocm9ub3VzbHkgYXMgd2VsbCB0byBnZXQgYW4gdXAtdG8tZGF0ZSB2YWx1ZSBmb3IgYGFjdGl2ZUNvdW50YC5cblx0XHRcdGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuXG5cdFx0XHRpZiAoYWN0aXZlQ291bnQgPCBjb25jdXJyZW5jeSAmJiBxdWV1ZS5zaXplID4gMCkge1xuXHRcdFx0XHRxdWV1ZS5kZXF1ZXVlKCkoKTtcblx0XHRcdH1cblx0XHR9KSgpO1xuXHR9O1xuXG5cdGNvbnN0IGdlbmVyYXRvciA9IChmbiwgLi4uYXJncykgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG5cdFx0ZW5xdWV1ZShmbiwgcmVzb2x2ZSwgYXJncyk7XG5cdH0pO1xuXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGdlbmVyYXRvciwge1xuXHRcdGFjdGl2ZUNvdW50OiB7XG5cdFx0XHRnZXQ6ICgpID0+IGFjdGl2ZUNvdW50LFxuXHRcdH0sXG5cdFx0cGVuZGluZ0NvdW50OiB7XG5cdFx0XHRnZXQ6ICgpID0+IHF1ZXVlLnNpemUsXG5cdFx0fSxcblx0XHRjbGVhclF1ZXVlOiB7XG5cdFx0XHR2YWx1ZTogKCkgPT4ge1xuXHRcdFx0XHRxdWV1ZS5jbGVhcigpO1xuXHRcdFx0fSxcblx0XHR9LFxuXHR9KTtcblxuXHRyZXR1cm4gZ2VuZXJhdG9yO1xufVxuIiwiaW1wb3J0IHBMaW1pdCBmcm9tICdwLWxpbWl0JztcblxuY2xhc3MgRW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdGNvbnN0cnVjdG9yKHZhbHVlKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XG5cdH1cbn1cblxuLy8gVGhlIGlucHV0IGNhbiBhbHNvIGJlIGEgcHJvbWlzZSwgc28gd2UgYXdhaXQgaXQuXG5jb25zdCB0ZXN0RWxlbWVudCA9IGFzeW5jIChlbGVtZW50LCB0ZXN0ZXIpID0+IHRlc3Rlcihhd2FpdCBlbGVtZW50KTtcblxuLy8gVGhlIGlucHV0IGNhbiBhbHNvIGJlIGEgcHJvbWlzZSwgc28gd2UgYFByb21pc2UuYWxsKClgIHRoZW0gYm90aC5cbmNvbnN0IGZpbmRlciA9IGFzeW5jIGVsZW1lbnQgPT4ge1xuXHRjb25zdCB2YWx1ZXMgPSBhd2FpdCBQcm9taXNlLmFsbChlbGVtZW50KTtcblx0aWYgKHZhbHVlc1sxXSA9PT0gdHJ1ZSkge1xuXHRcdHRocm93IG5ldyBFbmRFcnJvcih2YWx1ZXNbMF0pO1xuXHR9XG5cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcExvY2F0ZShcblx0aXRlcmFibGUsXG5cdHRlc3Rlcixcblx0e1xuXHRcdGNvbmN1cnJlbmN5ID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFxuXHRcdHByZXNlcnZlT3JkZXIgPSB0cnVlLFxuXHR9ID0ge30sXG4pIHtcblx0Y29uc3QgbGltaXQgPSBwTGltaXQoY29uY3VycmVuY3kpO1xuXG5cdC8vIFN0YXJ0IGFsbCB0aGUgcHJvbWlzZXMgY29uY3VycmVudGx5IHdpdGggb3B0aW9uYWwgbGltaXQuXG5cdGNvbnN0IGl0ZW1zID0gWy4uLml0ZXJhYmxlXS5tYXAoZWxlbWVudCA9PiBbZWxlbWVudCwgbGltaXQodGVzdEVsZW1lbnQsIGVsZW1lbnQsIHRlc3RlcildKTtcblxuXHQvLyBDaGVjayB0aGUgcHJvbWlzZXMgZWl0aGVyIHNlcmlhbGx5IG9yIGNvbmN1cnJlbnRseS5cblx0Y29uc3QgY2hlY2tMaW1pdCA9IHBMaW1pdChwcmVzZXJ2ZU9yZGVyID8gMSA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG5cblx0dHJ5IHtcblx0XHRhd2FpdCBQcm9taXNlLmFsbChpdGVtcy5tYXAoZWxlbWVudCA9PiBjaGVja0xpbWl0KGZpbmRlciwgZWxlbWVudCkpKTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRpZiAoZXJyb3IgaW5zdGFuY2VvZiBFbmRFcnJvcikge1xuXHRcdFx0cmV0dXJuIGVycm9yLnZhbHVlO1xuXHRcdH1cblxuXHRcdHRocm93IGVycm9yO1xuXHR9XG59XG4iLCJpbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBmcywge3Byb21pc2VzIGFzIGZzUHJvbWlzZXN9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBMb2NhdGUgZnJvbSAncC1sb2NhdGUnO1xuXG5jb25zdCB0eXBlTWFwcGluZ3MgPSB7XG5cdGRpcmVjdG9yeTogJ2lzRGlyZWN0b3J5Jyxcblx0ZmlsZTogJ2lzRmlsZScsXG59O1xuXG5mdW5jdGlvbiBjaGVja1R5cGUodHlwZSkge1xuXHRpZiAodHlwZSBpbiB0eXBlTWFwcGluZ3MpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZSBzcGVjaWZpZWQ6ICR7dHlwZX1gKTtcbn1cblxuY29uc3QgbWF0Y2hUeXBlID0gKHR5cGUsIHN0YXQpID0+IHR5cGUgPT09IHVuZGVmaW5lZCB8fCBzdGF0W3R5cGVNYXBwaW5nc1t0eXBlXV0oKTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvY2F0ZVBhdGgoXG5cdHBhdGhzLFxuXHR7XG5cdFx0Y3dkID0gcHJvY2Vzcy5jd2QoKSxcblx0XHR0eXBlID0gJ2ZpbGUnLFxuXHRcdGFsbG93U3ltbGlua3MgPSB0cnVlLFxuXHRcdGNvbmN1cnJlbmN5LFxuXHRcdHByZXNlcnZlT3JkZXIsXG5cdH0gPSB7fSxcbikge1xuXHRjaGVja1R5cGUodHlwZSk7XG5cblx0Y29uc3Qgc3RhdEZ1bmN0aW9uID0gYWxsb3dTeW1saW5rcyA/IGZzUHJvbWlzZXMuc3RhdCA6IGZzUHJvbWlzZXMubHN0YXQ7XG5cblx0cmV0dXJuIHBMb2NhdGUocGF0aHMsIGFzeW5jIHBhdGhfID0+IHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3Qgc3RhdCA9IGF3YWl0IHN0YXRGdW5jdGlvbihwYXRoLnJlc29sdmUoY3dkLCBwYXRoXykpO1xuXHRcdFx0cmV0dXJuIG1hdGNoVHlwZSh0eXBlLCBzdGF0KTtcblx0XHR9IGNhdGNoIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0sIHtjb25jdXJyZW5jeSwgcHJlc2VydmVPcmRlcn0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9jYXRlUGF0aFN5bmMoXG5cdHBhdGhzLFxuXHR7XG5cdFx0Y3dkID0gcHJvY2Vzcy5jd2QoKSxcblx0XHR0eXBlID0gJ2ZpbGUnLFxuXHRcdGFsbG93U3ltbGlua3MgPSB0cnVlLFxuXHR9ID0ge30sXG4pIHtcblx0Y2hlY2tUeXBlKHR5cGUpO1xuXG5cdGNvbnN0IHN0YXRGdW5jdGlvbiA9IGFsbG93U3ltbGlua3MgPyBmcy5zdGF0U3luYyA6IGZzLmxzdGF0U3luYztcblxuXHRmb3IgKGNvbnN0IHBhdGhfIG9mIHBhdGhzKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHN0YXQgPSBzdGF0RnVuY3Rpb24ocGF0aC5yZXNvbHZlKGN3ZCwgcGF0aF8pKTtcblxuXHRcdFx0aWYgKG1hdGNoVHlwZSh0eXBlLCBzdGF0KSkge1xuXHRcdFx0XHRyZXR1cm4gcGF0aF87XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCB7fVxuXHR9XG59XG4iLCJpbXBvcnQgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHtsb2NhdGVQYXRoLCBsb2NhdGVQYXRoU3luY30gZnJvbSAnbG9jYXRlLXBhdGgnO1xuXG5leHBvcnQgY29uc3QgZmluZFVwU3RvcCA9IFN5bWJvbCgnZmluZFVwU3RvcCcpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFVwTXVsdGlwbGUobmFtZSwgb3B0aW9ucyA9IHt9KSB7XG5cdGxldCBkaXJlY3RvcnkgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5jd2QgfHwgJycpO1xuXHRjb25zdCB7cm9vdH0gPSBwYXRoLnBhcnNlKGRpcmVjdG9yeSk7XG5cdGNvbnN0IHN0b3BBdCA9IHBhdGgucmVzb2x2ZShkaXJlY3RvcnksIG9wdGlvbnMuc3RvcEF0IHx8IHJvb3QpO1xuXHRjb25zdCBsaW1pdCA9IG9wdGlvbnMubGltaXQgfHwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuXHRjb25zdCBwYXRocyA9IFtuYW1lXS5mbGF0KCk7XG5cblx0Y29uc3QgcnVuTWF0Y2hlciA9IGFzeW5jIGxvY2F0ZU9wdGlvbnMgPT4ge1xuXHRcdGlmICh0eXBlb2YgbmFtZSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0cmV0dXJuIGxvY2F0ZVBhdGgocGF0aHMsIGxvY2F0ZU9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZvdW5kUGF0aCA9IGF3YWl0IG5hbWUobG9jYXRlT3B0aW9ucy5jd2QpO1xuXHRcdGlmICh0eXBlb2YgZm91bmRQYXRoID09PSAnc3RyaW5nJykge1xuXHRcdFx0cmV0dXJuIGxvY2F0ZVBhdGgoW2ZvdW5kUGF0aF0sIGxvY2F0ZU9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmb3VuZFBhdGg7XG5cdH07XG5cblx0Y29uc3QgbWF0Y2hlcyA9IFtdO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG5cdHdoaWxlICh0cnVlKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3Bcblx0XHRjb25zdCBmb3VuZFBhdGggPSBhd2FpdCBydW5NYXRjaGVyKHsuLi5vcHRpb25zLCBjd2Q6IGRpcmVjdG9yeX0pO1xuXG5cdFx0aWYgKGZvdW5kUGF0aCA9PT0gZmluZFVwU3RvcCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0aWYgKGZvdW5kUGF0aCkge1xuXHRcdFx0bWF0Y2hlcy5wdXNoKHBhdGgucmVzb2x2ZShkaXJlY3RvcnksIGZvdW5kUGF0aCkpO1xuXHRcdH1cblxuXHRcdGlmIChkaXJlY3RvcnkgPT09IHN0b3BBdCB8fCBtYXRjaGVzLmxlbmd0aCA+PSBsaW1pdCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0ZGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lKGRpcmVjdG9yeSk7XG5cdH1cblxuXHRyZXR1cm4gbWF0Y2hlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRVcE11bHRpcGxlU3luYyhuYW1lLCBvcHRpb25zID0ge30pIHtcblx0bGV0IGRpcmVjdG9yeSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLmN3ZCB8fCAnJyk7XG5cdGNvbnN0IHtyb290fSA9IHBhdGgucGFyc2UoZGlyZWN0b3J5KTtcblx0Y29uc3Qgc3RvcEF0ID0gb3B0aW9ucy5zdG9wQXQgfHwgcm9vdDtcblx0Y29uc3QgbGltaXQgPSBvcHRpb25zLmxpbWl0IHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcblx0Y29uc3QgcGF0aHMgPSBbbmFtZV0uZmxhdCgpO1xuXG5cdGNvbnN0IHJ1bk1hdGNoZXIgPSBsb2NhdGVPcHRpb25zID0+IHtcblx0XHRpZiAodHlwZW9mIG5hbWUgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHJldHVybiBsb2NhdGVQYXRoU3luYyhwYXRocywgbG9jYXRlT3B0aW9ucyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZm91bmRQYXRoID0gbmFtZShsb2NhdGVPcHRpb25zLmN3ZCk7XG5cdFx0aWYgKHR5cGVvZiBmb3VuZFBhdGggPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gbG9jYXRlUGF0aFN5bmMoW2ZvdW5kUGF0aF0sIGxvY2F0ZU9wdGlvbnMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmb3VuZFBhdGg7XG5cdH07XG5cblx0Y29uc3QgbWF0Y2hlcyA9IFtdO1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG5cdHdoaWxlICh0cnVlKSB7XG5cdFx0Y29uc3QgZm91bmRQYXRoID0gcnVuTWF0Y2hlcih7Li4ub3B0aW9ucywgY3dkOiBkaXJlY3Rvcnl9KTtcblxuXHRcdGlmIChmb3VuZFBhdGggPT09IGZpbmRVcFN0b3ApIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGlmIChmb3VuZFBhdGgpIHtcblx0XHRcdG1hdGNoZXMucHVzaChwYXRoLnJlc29sdmUoZGlyZWN0b3J5LCBmb3VuZFBhdGgpKTtcblx0XHR9XG5cblx0XHRpZiAoZGlyZWN0b3J5ID09PSBzdG9wQXQgfHwgbWF0Y2hlcy5sZW5ndGggPj0gbGltaXQpIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdGRpcmVjdG9yeSA9IHBhdGguZGlybmFtZShkaXJlY3RvcnkpO1xuXHR9XG5cblx0cmV0dXJuIG1hdGNoZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kVXAobmFtZSwgb3B0aW9ucyA9IHt9KSB7XG5cdGNvbnN0IG1hdGNoZXMgPSBhd2FpdCBmaW5kVXBNdWx0aXBsZShuYW1lLCB7Li4ub3B0aW9ucywgbGltaXQ6IDF9KTtcblx0cmV0dXJuIG1hdGNoZXNbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kVXBTeW5jKG5hbWUsIG9wdGlvbnMgPSB7fSkge1xuXHRjb25zdCBtYXRjaGVzID0gZmluZFVwTXVsdGlwbGVTeW5jKG5hbWUsIHsuLi5vcHRpb25zLCBsaW1pdDogMX0pO1xuXHRyZXR1cm4gbWF0Y2hlc1swXTtcbn1cblxuZXhwb3J0IHtcblx0cGF0aEV4aXN0cyxcblx0cGF0aEV4aXN0c1N5bmMsXG59IGZyb20gJ3BhdGgtZXhpc3RzJztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zcGxpdFdoZW4gPSBleHBvcnRzLmZsYXR0ZW4gPSB2b2lkIDA7XG5mdW5jdGlvbiBmbGF0dGVuKGl0ZW1zKSB7XG4gICAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgoY29sbGVjdGlvbiwgaXRlbSkgPT4gW10uY29uY2F0KGNvbGxlY3Rpb24sIGl0ZW0pLCBbXSk7XG59XG5leHBvcnRzLmZsYXR0ZW4gPSBmbGF0dGVuO1xuZnVuY3Rpb24gc3BsaXRXaGVuKGl0ZW1zLCBwcmVkaWNhdGUpIHtcbiAgICBjb25zdCByZXN1bHQgPSBbW11dO1xuICAgIGxldCBncm91cEluZGV4ID0gMDtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgaWYgKHByZWRpY2F0ZShpdGVtKSkge1xuICAgICAgICAgICAgZ3JvdXBJbmRleCsrO1xuICAgICAgICAgICAgcmVzdWx0W2dyb3VwSW5kZXhdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRbZ3JvdXBJbmRleF0ucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5zcGxpdFdoZW4gPSBzcGxpdFdoZW47XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNFbm9lbnRDb2RlRXJyb3IgPSB2b2lkIDA7XG5mdW5jdGlvbiBpc0Vub2VudENvZGVFcnJvcihlcnJvcikge1xuICAgIHJldHVybiBlcnJvci5jb2RlID09PSAnRU5PRU5UJztcbn1cbmV4cG9ydHMuaXNFbm9lbnRDb2RlRXJyb3IgPSBpc0Vub2VudENvZGVFcnJvcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMgPSB2b2lkIDA7XG5jbGFzcyBEaXJlbnRGcm9tU3RhdHMge1xuICAgIGNvbnN0cnVjdG9yKG5hbWUsIHN0YXRzKSB7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuaXNCbG9ja0RldmljZSA9IHN0YXRzLmlzQmxvY2tEZXZpY2UuYmluZChzdGF0cyk7XG4gICAgICAgIHRoaXMuaXNDaGFyYWN0ZXJEZXZpY2UgPSBzdGF0cy5pc0NoYXJhY3RlckRldmljZS5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc0RpcmVjdG9yeSA9IHN0YXRzLmlzRGlyZWN0b3J5LmJpbmQoc3RhdHMpO1xuICAgICAgICB0aGlzLmlzRklGTyA9IHN0YXRzLmlzRklGTy5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBzdGF0cy5pc0ZpbGUuYmluZChzdGF0cyk7XG4gICAgICAgIHRoaXMuaXNTb2NrZXQgPSBzdGF0cy5pc1NvY2tldC5iaW5kKHN0YXRzKTtcbiAgICAgICAgdGhpcy5pc1N5bWJvbGljTGluayA9IHN0YXRzLmlzU3ltYm9saWNMaW5rLmJpbmQoc3RhdHMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZURpcmVudEZyb21TdGF0cyhuYW1lLCBzdGF0cykge1xuICAgIHJldHVybiBuZXcgRGlyZW50RnJvbVN0YXRzKG5hbWUsIHN0YXRzKTtcbn1cbmV4cG9ydHMuY3JlYXRlRGlyZW50RnJvbVN0YXRzID0gY3JlYXRlRGlyZW50RnJvbVN0YXRzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlbW92ZUxlYWRpbmdEb3RTZWdtZW50ID0gZXhwb3J0cy5lc2NhcGUgPSBleHBvcnRzLm1ha2VBYnNvbHV0ZSA9IGV4cG9ydHMudW5peGlmeSA9IHZvaWQgMDtcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmNvbnN0IExFQURJTkdfRE9UX1NFR01FTlRfQ0hBUkFDVEVSU19DT1VOVCA9IDI7IC8vIC4vIG9yIC5cXFxcXG5jb25zdCBVTkVTQ0FQRURfR0xPQl9TWU1CT0xTX1JFID0gLyhcXFxcPykoWygpKj9bXFxde3x9XXxeIXxbIStAXSg/PVxcKCkpL2c7XG4vKipcbiAqIERlc2lnbmVkIHRvIHdvcmsgb25seSB3aXRoIHNpbXBsZSBwYXRoczogYGRpclxcXFxmaWxlYC5cbiAqL1xuZnVuY3Rpb24gdW5peGlmeShmaWxlcGF0aCkge1xuICAgIHJldHVybiBmaWxlcGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG59XG5leHBvcnRzLnVuaXhpZnkgPSB1bml4aWZ5O1xuZnVuY3Rpb24gbWFrZUFic29sdXRlKGN3ZCwgZmlsZXBhdGgpIHtcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKGN3ZCwgZmlsZXBhdGgpO1xufVxuZXhwb3J0cy5tYWtlQWJzb2x1dGUgPSBtYWtlQWJzb2x1dGU7XG5mdW5jdGlvbiBlc2NhcGUocGF0dGVybikge1xuICAgIHJldHVybiBwYXR0ZXJuLnJlcGxhY2UoVU5FU0NBUEVEX0dMT0JfU1lNQk9MU19SRSwgJ1xcXFwkMicpO1xufVxuZXhwb3J0cy5lc2NhcGUgPSBlc2NhcGU7XG5mdW5jdGlvbiByZW1vdmVMZWFkaW5nRG90U2VnbWVudChlbnRyeSkge1xuICAgIC8vIFdlIGRvIG5vdCB1c2UgYHN0YXJ0c1dpdGhgIGJlY2F1c2UgdGhpcyBpcyAxMHggc2xvd2VyIHRoYW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiBmb3Igc29tZSBjYXNlcy5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1zdHJpbmctc3RhcnRzLWVuZHMtd2l0aFxuICAgIGlmIChlbnRyeS5jaGFyQXQoMCkgPT09ICcuJykge1xuICAgICAgICBjb25zdCBzZWNvbmRDaGFyYWN0ZXJ5ID0gZW50cnkuY2hhckF0KDEpO1xuICAgICAgICBpZiAoc2Vjb25kQ2hhcmFjdGVyeSA9PT0gJy8nIHx8IHNlY29uZENoYXJhY3RlcnkgPT09ICdcXFxcJykge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnNsaWNlKExFQURJTkdfRE9UX1NFR01FTlRfQ0hBUkFDVEVSU19DT1VOVCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xufVxuZXhwb3J0cy5yZW1vdmVMZWFkaW5nRG90U2VnbWVudCA9IHJlbW92ZUxlYWRpbmdEb3RTZWdtZW50O1xuIiwiLyohXG4gKiBpcy1leHRnbG9iIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1leHRnbG9iPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE2LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzRXh0Z2xvYihzdHIpIHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnIHx8IHN0ciA9PT0gJycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgbWF0Y2g7XG4gIHdoaWxlICgobWF0Y2ggPSAvKFxcXFwpLnwoW0A/ISsqXVxcKC4qXFwpKS9nLmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobWF0Y2hbMl0pIHJldHVybiB0cnVlO1xuICAgIHN0ciA9IHN0ci5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwiLyohXG4gKiBpcy1nbG9iIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1nbG9iPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG52YXIgaXNFeHRnbG9iID0gcmVxdWlyZSgnaXMtZXh0Z2xvYicpO1xudmFyIGNoYXJzID0geyAneyc6ICd9JywgJygnOiAnKScsICdbJzogJ10nfTtcbnZhciBzdHJpY3RDaGVjayA9IGZ1bmN0aW9uKHN0cikge1xuICBpZiAoc3RyWzBdID09PSAnIScpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgcGlwZUluZGV4ID0gLTI7XG4gIHZhciBjbG9zZVNxdWFyZUluZGV4ID0gLTI7XG4gIHZhciBjbG9zZUN1cmx5SW5kZXggPSAtMjtcbiAgdmFyIGNsb3NlUGFyZW5JbmRleCA9IC0yO1xuICB2YXIgYmFja1NsYXNoSW5kZXggPSAtMjtcbiAgd2hpbGUgKGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgIGlmIChzdHJbaW5kZXhdID09PSAnKicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdHJbaW5kZXggKyAxXSA9PT0gJz8nICYmIC9bXFxdLispXS8udGVzdChzdHJbaW5kZXhdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNsb3NlU3F1YXJlSW5kZXggIT09IC0xICYmIHN0cltpbmRleF0gPT09ICdbJyAmJiBzdHJbaW5kZXggKyAxXSAhPT0gJ10nKSB7XG4gICAgICBpZiAoY2xvc2VTcXVhcmVJbmRleCA8IGluZGV4KSB7XG4gICAgICAgIGNsb3NlU3F1YXJlSW5kZXggPSBzdHIuaW5kZXhPZignXScsIGluZGV4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjbG9zZVNxdWFyZUluZGV4ID4gaW5kZXgpIHtcbiAgICAgICAgaWYgKGJhY2tTbGFzaEluZGV4ID09PSAtMSB8fCBiYWNrU2xhc2hJbmRleCA+IGNsb3NlU3F1YXJlSW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBiYWNrU2xhc2hJbmRleCA9IHN0ci5pbmRleE9mKCdcXFxcJywgaW5kZXgpO1xuICAgICAgICBpZiAoYmFja1NsYXNoSW5kZXggPT09IC0xIHx8IGJhY2tTbGFzaEluZGV4ID4gY2xvc2VTcXVhcmVJbmRleCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsb3NlQ3VybHlJbmRleCAhPT0gLTEgJiYgc3RyW2luZGV4XSA9PT0gJ3snICYmIHN0cltpbmRleCArIDFdICE9PSAnfScpIHtcbiAgICAgIGNsb3NlQ3VybHlJbmRleCA9IHN0ci5pbmRleE9mKCd9JywgaW5kZXgpO1xuICAgICAgaWYgKGNsb3NlQ3VybHlJbmRleCA+IGluZGV4KSB7XG4gICAgICAgIGJhY2tTbGFzaEluZGV4ID0gc3RyLmluZGV4T2YoJ1xcXFwnLCBpbmRleCk7XG4gICAgICAgIGlmIChiYWNrU2xhc2hJbmRleCA9PT0gLTEgfHwgYmFja1NsYXNoSW5kZXggPiBjbG9zZUN1cmx5SW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbG9zZVBhcmVuSW5kZXggIT09IC0xICYmIHN0cltpbmRleF0gPT09ICcoJyAmJiBzdHJbaW5kZXggKyAxXSA9PT0gJz8nICYmIC9bOiE9XS8udGVzdChzdHJbaW5kZXggKyAyXSkgJiYgc3RyW2luZGV4ICsgM10gIT09ICcpJykge1xuICAgICAgY2xvc2VQYXJlbkluZGV4ID0gc3RyLmluZGV4T2YoJyknLCBpbmRleCk7XG4gICAgICBpZiAoY2xvc2VQYXJlbkluZGV4ID4gaW5kZXgpIHtcbiAgICAgICAgYmFja1NsYXNoSW5kZXggPSBzdHIuaW5kZXhPZignXFxcXCcsIGluZGV4KTtcbiAgICAgICAgaWYgKGJhY2tTbGFzaEluZGV4ID09PSAtMSB8fCBiYWNrU2xhc2hJbmRleCA+IGNsb3NlUGFyZW5JbmRleCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBpcGVJbmRleCAhPT0gLTEgJiYgc3RyW2luZGV4XSA9PT0gJygnICYmIHN0cltpbmRleCArIDFdICE9PSAnfCcpIHtcbiAgICAgIGlmIChwaXBlSW5kZXggPCBpbmRleCkge1xuICAgICAgICBwaXBlSW5kZXggPSBzdHIuaW5kZXhPZignfCcsIGluZGV4KTtcbiAgICAgIH1cbiAgICAgIGlmIChwaXBlSW5kZXggIT09IC0xICYmIHN0cltwaXBlSW5kZXggKyAxXSAhPT0gJyknKSB7XG4gICAgICAgIGNsb3NlUGFyZW5JbmRleCA9IHN0ci5pbmRleE9mKCcpJywgcGlwZUluZGV4KTtcbiAgICAgICAgaWYgKGNsb3NlUGFyZW5JbmRleCA+IHBpcGVJbmRleCkge1xuICAgICAgICAgIGJhY2tTbGFzaEluZGV4ID0gc3RyLmluZGV4T2YoJ1xcXFwnLCBwaXBlSW5kZXgpO1xuICAgICAgICAgIGlmIChiYWNrU2xhc2hJbmRleCA9PT0gLTEgfHwgYmFja1NsYXNoSW5kZXggPiBjbG9zZVBhcmVuSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdHJbaW5kZXhdID09PSAnXFxcXCcpIHtcbiAgICAgIHZhciBvcGVuID0gc3RyW2luZGV4ICsgMV07XG4gICAgICBpbmRleCArPSAyO1xuICAgICAgdmFyIGNsb3NlID0gY2hhcnNbb3Blbl07XG5cbiAgICAgIGlmIChjbG9zZSkge1xuICAgICAgICB2YXIgbiA9IHN0ci5pbmRleE9mKGNsb3NlLCBpbmRleCk7XG4gICAgICAgIGlmIChuICE9PSAtMSkge1xuICAgICAgICAgIGluZGV4ID0gbiArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0cltpbmRleF0gPT09ICchJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxudmFyIHJlbGF4ZWRDaGVjayA9IGZ1bmN0aW9uKHN0cikge1xuICBpZiAoc3RyWzBdID09PSAnIScpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgaW5kZXggPSAwO1xuICB3aGlsZSAoaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgaWYgKC9bKj97fSgpW1xcXV0vLnRlc3Qoc3RyW2luZGV4XSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdHJbaW5kZXhdID09PSAnXFxcXCcpIHtcbiAgICAgIHZhciBvcGVuID0gc3RyW2luZGV4ICsgMV07XG4gICAgICBpbmRleCArPSAyO1xuICAgICAgdmFyIGNsb3NlID0gY2hhcnNbb3Blbl07XG5cbiAgICAgIGlmIChjbG9zZSkge1xuICAgICAgICB2YXIgbiA9IHN0ci5pbmRleE9mKGNsb3NlLCBpbmRleCk7XG4gICAgICAgIGlmIChuICE9PSAtMSkge1xuICAgICAgICAgIGluZGV4ID0gbiArIDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0cltpbmRleF0gPT09ICchJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0dsb2Ioc3RyLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCBzdHIgPT09ICcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzRXh0Z2xvYihzdHIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YXIgY2hlY2sgPSBzdHJpY3RDaGVjaztcblxuICAvLyBvcHRpb25hbGx5IHJlbGF4IGNoZWNrXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc3RyaWN0ID09PSBmYWxzZSkge1xuICAgIGNoZWNrID0gcmVsYXhlZENoZWNrO1xuICB9XG5cbiAgcmV0dXJuIGNoZWNrKHN0cik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNHbG9iID0gcmVxdWlyZSgnaXMtZ2xvYicpO1xudmFyIHBhdGhQb3NpeERpcm5hbWUgPSByZXF1aXJlKCdwYXRoJykucG9zaXguZGlybmFtZTtcbnZhciBpc1dpbjMyID0gcmVxdWlyZSgnb3MnKS5wbGF0Zm9ybSgpID09PSAnd2luMzInO1xuXG52YXIgc2xhc2ggPSAnLyc7XG52YXIgYmFja3NsYXNoID0gL1xcXFwvZztcbnZhciBlbmNsb3N1cmUgPSAvW1xce1xcW10uKltcXH1cXF1dJC87XG52YXIgZ2xvYmJ5ID0gLyhefFteXFxcXF0pKFtcXHtcXFtdfFxcKFteXFwpXSskKS87XG52YXIgZXNjYXBlZCA9IC9cXFxcKFtcXCFcXCpcXD9cXHxcXFtcXF1cXChcXClcXHtcXH1dKS9nO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsaXBCYWNrc2xhc2hlcz10cnVlXVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnbG9iUGFyZW50KHN0ciwgb3B0cykge1xuICB2YXIgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oeyBmbGlwQmFja3NsYXNoZXM6IHRydWUgfSwgb3B0cyk7XG5cbiAgLy8gZmxpcCB3aW5kb3dzIHBhdGggc2VwYXJhdG9yc1xuICBpZiAob3B0aW9ucy5mbGlwQmFja3NsYXNoZXMgJiYgaXNXaW4zMiAmJiBzdHIuaW5kZXhPZihzbGFzaCkgPCAwKSB7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoYmFja3NsYXNoLCBzbGFzaCk7XG4gIH1cblxuICAvLyBzcGVjaWFsIGNhc2UgZm9yIHN0cmluZ3MgZW5kaW5nIGluIGVuY2xvc3VyZSBjb250YWluaW5nIHBhdGggc2VwYXJhdG9yXG4gIGlmIChlbmNsb3N1cmUudGVzdChzdHIpKSB7XG4gICAgc3RyICs9IHNsYXNoO1xuICB9XG5cbiAgLy8gcHJlc2VydmVzIGZ1bGwgcGF0aCBpbiBjYXNlIG9mIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yXG4gIHN0ciArPSAnYSc7XG5cbiAgLy8gcmVtb3ZlIHBhdGggcGFydHMgdGhhdCBhcmUgZ2xvYmJ5XG4gIGRvIHtcbiAgICBzdHIgPSBwYXRoUG9zaXhEaXJuYW1lKHN0cik7XG4gIH0gd2hpbGUgKGlzR2xvYihzdHIpIHx8IGdsb2JieS50ZXN0KHN0cikpO1xuXG4gIC8vIHJlbW92ZSBlc2NhcGUgY2hhcnMgYW5kIHJldHVybiByZXN1bHRcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGVzY2FwZWQsICckMScpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5pc0ludGVnZXIgPSBudW0gPT4ge1xuICBpZiAodHlwZW9mIG51bSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihudW0pO1xuICB9XG4gIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJyAmJiBudW0udHJpbSgpICE9PSAnJykge1xuICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKE51bWJlcihudW0pKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIEZpbmQgYSBub2RlIG9mIHRoZSBnaXZlbiB0eXBlXG4gKi9cblxuZXhwb3J0cy5maW5kID0gKG5vZGUsIHR5cGUpID0+IG5vZGUubm9kZXMuZmluZChub2RlID0+IG5vZGUudHlwZSA9PT0gdHlwZSk7XG5cbi8qKlxuICogRmluZCBhIG5vZGUgb2YgdGhlIGdpdmVuIHR5cGVcbiAqL1xuXG5leHBvcnRzLmV4Y2VlZHNMaW1pdCA9IChtaW4sIG1heCwgc3RlcCA9IDEsIGxpbWl0KSA9PiB7XG4gIGlmIChsaW1pdCA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgaWYgKCFleHBvcnRzLmlzSW50ZWdlcihtaW4pIHx8ICFleHBvcnRzLmlzSW50ZWdlcihtYXgpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiAoKE51bWJlcihtYXgpIC0gTnVtYmVyKG1pbikpIC8gTnVtYmVyKHN0ZXApKSA+PSBsaW1pdDtcbn07XG5cbi8qKlxuICogRXNjYXBlIHRoZSBnaXZlbiBub2RlIHdpdGggJ1xcXFwnIGJlZm9yZSBub2RlLnZhbHVlXG4gKi9cblxuZXhwb3J0cy5lc2NhcGVOb2RlID0gKGJsb2NrLCBuID0gMCwgdHlwZSkgPT4ge1xuICBsZXQgbm9kZSA9IGJsb2NrLm5vZGVzW25dO1xuICBpZiAoIW5vZGUpIHJldHVybjtcblxuICBpZiAoKHR5cGUgJiYgbm9kZS50eXBlID09PSB0eXBlKSB8fCBub2RlLnR5cGUgPT09ICdvcGVuJyB8fCBub2RlLnR5cGUgPT09ICdjbG9zZScpIHtcbiAgICBpZiAobm9kZS5lc2NhcGVkICE9PSB0cnVlKSB7XG4gICAgICBub2RlLnZhbHVlID0gJ1xcXFwnICsgbm9kZS52YWx1ZTtcbiAgICAgIG5vZGUuZXNjYXBlZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYnJhY2Ugbm9kZSBzaG91bGQgYmUgZW5jbG9zZWQgaW4gbGl0ZXJhbCBicmFjZXNcbiAqL1xuXG5leHBvcnRzLmVuY2xvc2VCcmFjZSA9IG5vZGUgPT4ge1xuICBpZiAobm9kZS50eXBlICE9PSAnYnJhY2UnKSByZXR1cm4gZmFsc2U7XG4gIGlmICgobm9kZS5jb21tYXMgPj4gMCArIG5vZGUucmFuZ2VzID4+IDApID09PSAwKSB7XG4gICAgbm9kZS5pbnZhbGlkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhIGJyYWNlIG5vZGUgaXMgaW52YWxpZC5cbiAqL1xuXG5leHBvcnRzLmlzSW52YWxpZEJyYWNlID0gYmxvY2sgPT4ge1xuICBpZiAoYmxvY2sudHlwZSAhPT0gJ2JyYWNlJykgcmV0dXJuIGZhbHNlO1xuICBpZiAoYmxvY2suaW52YWxpZCA9PT0gdHJ1ZSB8fCBibG9jay5kb2xsYXIpIHJldHVybiB0cnVlO1xuICBpZiAoKGJsb2NrLmNvbW1hcyA+PiAwICsgYmxvY2sucmFuZ2VzID4+IDApID09PSAwKSB7XG4gICAgYmxvY2suaW52YWxpZCA9IHRydWU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGJsb2NrLm9wZW4gIT09IHRydWUgfHwgYmxvY2suY2xvc2UgIT09IHRydWUpIHtcbiAgICBibG9jay5pbnZhbGlkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhIG5vZGUgaXMgYW4gb3BlbiBvciBjbG9zZSBub2RlXG4gKi9cblxuZXhwb3J0cy5pc09wZW5PckNsb3NlID0gbm9kZSA9PiB7XG4gIGlmIChub2RlLnR5cGUgPT09ICdvcGVuJyB8fCBub2RlLnR5cGUgPT09ICdjbG9zZScpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gbm9kZS5vcGVuID09PSB0cnVlIHx8IG5vZGUuY2xvc2UgPT09IHRydWU7XG59O1xuXG4vKipcbiAqIFJlZHVjZSBhbiBhcnJheSBvZiB0ZXh0IG5vZGVzLlxuICovXG5cbmV4cG9ydHMucmVkdWNlID0gbm9kZXMgPT4gbm9kZXMucmVkdWNlKChhY2MsIG5vZGUpID0+IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ3RleHQnKSBhY2MucHVzaChub2RlLnZhbHVlKTtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ3JhbmdlJykgbm9kZS50eXBlID0gJ3RleHQnO1xuICByZXR1cm4gYWNjO1xufSwgW10pO1xuXG4vKipcbiAqIEZsYXR0ZW4gYW4gYXJyYXlcbiAqL1xuXG5leHBvcnRzLmZsYXR0ZW4gPSAoLi4uYXJncykgPT4ge1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgY29uc3QgZmxhdCA9IGFyciA9PiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBlbGUgPSBhcnJbaV07XG4gICAgICBBcnJheS5pc0FycmF5KGVsZSkgPyBmbGF0KGVsZSwgcmVzdWx0KSA6IGVsZSAhPT0gdm9pZCAwICYmIHJlc3VsdC5wdXNoKGVsZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIGZsYXQoYXJncyk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoYXN0LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IHN0cmluZ2lmeSA9IChub2RlLCBwYXJlbnQgPSB7fSkgPT4ge1xuICAgIGxldCBpbnZhbGlkQmxvY2sgPSBvcHRpb25zLmVzY2FwZUludmFsaWQgJiYgdXRpbHMuaXNJbnZhbGlkQnJhY2UocGFyZW50KTtcbiAgICBsZXQgaW52YWxpZE5vZGUgPSBub2RlLmludmFsaWQgPT09IHRydWUgJiYgb3B0aW9ucy5lc2NhcGVJbnZhbGlkID09PSB0cnVlO1xuICAgIGxldCBvdXRwdXQgPSAnJztcblxuICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICBpZiAoKGludmFsaWRCbG9jayB8fCBpbnZhbGlkTm9kZSkgJiYgdXRpbHMuaXNPcGVuT3JDbG9zZShub2RlKSkge1xuICAgICAgICByZXR1cm4gJ1xcXFwnICsgbm9kZS52YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2Rlcykge1xuICAgICAgZm9yIChsZXQgY2hpbGQgb2Ygbm9kZS5ub2Rlcykge1xuICAgICAgICBvdXRwdXQgKz0gc3RyaW5naWZ5KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc3RyaW5naWZ5KGFzdCk7XG59O1xuXG4iLCIvKiFcbiAqIGlzLW51bWJlciA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtbnVtYmVyPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obnVtKSB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBudW0gLSBudW0gPT09IDA7XG4gIH1cbiAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnICYmIG51bS50cmltKCkgIT09ICcnKSB7XG4gICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSA/IE51bWJlci5pc0Zpbml0ZSgrbnVtKSA6IGlzRmluaXRlKCtudW0pO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG4iLCIvKiFcbiAqIHRvLXJlZ2V4LXJhbmdlIDxodHRwczovL2dpdGh1Yi5jb20vbWljcm9tYXRjaC90by1yZWdleC1yYW5nZT5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBpc051bWJlciA9IHJlcXVpcmUoJ2lzLW51bWJlcicpO1xuXG5jb25zdCB0b1JlZ2V4UmFuZ2UgPSAobWluLCBtYXgsIG9wdGlvbnMpID0+IHtcbiAgaWYgKGlzTnVtYmVyKG1pbikgPT09IGZhbHNlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndG9SZWdleFJhbmdlOiBleHBlY3RlZCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gYmUgYSBudW1iZXInKTtcbiAgfVxuXG4gIGlmIChtYXggPT09IHZvaWQgMCB8fCBtaW4gPT09IG1heCkge1xuICAgIHJldHVybiBTdHJpbmcobWluKTtcbiAgfVxuXG4gIGlmIChpc051bWJlcihtYXgpID09PSBmYWxzZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3RvUmVnZXhSYW5nZTogZXhwZWN0ZWQgdGhlIHNlY29uZCBhcmd1bWVudCB0byBiZSBhIG51bWJlci4nKTtcbiAgfVxuXG4gIGxldCBvcHRzID0geyByZWxheFplcm9zOiB0cnVlLCAuLi5vcHRpb25zIH07XG4gIGlmICh0eXBlb2Ygb3B0cy5zdHJpY3RaZXJvcyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgb3B0cy5yZWxheFplcm9zID0gb3B0cy5zdHJpY3RaZXJvcyA9PT0gZmFsc2U7XG4gIH1cblxuICBsZXQgcmVsYXggPSBTdHJpbmcob3B0cy5yZWxheFplcm9zKTtcbiAgbGV0IHNob3J0aGFuZCA9IFN0cmluZyhvcHRzLnNob3J0aGFuZCk7XG4gIGxldCBjYXB0dXJlID0gU3RyaW5nKG9wdHMuY2FwdHVyZSk7XG4gIGxldCB3cmFwID0gU3RyaW5nKG9wdHMud3JhcCk7XG4gIGxldCBjYWNoZUtleSA9IG1pbiArICc6JyArIG1heCArICc9JyArIHJlbGF4ICsgc2hvcnRoYW5kICsgY2FwdHVyZSArIHdyYXA7XG5cbiAgaWYgKHRvUmVnZXhSYW5nZS5jYWNoZS5oYXNPd25Qcm9wZXJ0eShjYWNoZUtleSkpIHtcbiAgICByZXR1cm4gdG9SZWdleFJhbmdlLmNhY2hlW2NhY2hlS2V5XS5yZXN1bHQ7XG4gIH1cblxuICBsZXQgYSA9IE1hdGgubWluKG1pbiwgbWF4KTtcbiAgbGV0IGIgPSBNYXRoLm1heChtaW4sIG1heCk7XG5cbiAgaWYgKE1hdGguYWJzKGEgLSBiKSA9PT0gMSkge1xuICAgIGxldCByZXN1bHQgPSBtaW4gKyAnfCcgKyBtYXg7XG4gICAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgICAgcmV0dXJuIGAoJHtyZXN1bHR9KWA7XG4gICAgfVxuICAgIGlmIChvcHRzLndyYXAgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gYCg/OiR7cmVzdWx0fSlgO1xuICB9XG5cbiAgbGV0IGlzUGFkZGVkID0gaGFzUGFkZGluZyhtaW4pIHx8IGhhc1BhZGRpbmcobWF4KTtcbiAgbGV0IHN0YXRlID0geyBtaW4sIG1heCwgYSwgYiB9O1xuICBsZXQgcG9zaXRpdmVzID0gW107XG4gIGxldCBuZWdhdGl2ZXMgPSBbXTtcblxuICBpZiAoaXNQYWRkZWQpIHtcbiAgICBzdGF0ZS5pc1BhZGRlZCA9IGlzUGFkZGVkO1xuICAgIHN0YXRlLm1heExlbiA9IFN0cmluZyhzdGF0ZS5tYXgpLmxlbmd0aDtcbiAgfVxuXG4gIGlmIChhIDwgMCkge1xuICAgIGxldCBuZXdNaW4gPSBiIDwgMCA/IE1hdGguYWJzKGIpIDogMTtcbiAgICBuZWdhdGl2ZXMgPSBzcGxpdFRvUGF0dGVybnMobmV3TWluLCBNYXRoLmFicyhhKSwgc3RhdGUsIG9wdHMpO1xuICAgIGEgPSBzdGF0ZS5hID0gMDtcbiAgfVxuXG4gIGlmIChiID49IDApIHtcbiAgICBwb3NpdGl2ZXMgPSBzcGxpdFRvUGF0dGVybnMoYSwgYiwgc3RhdGUsIG9wdHMpO1xuICB9XG5cbiAgc3RhdGUubmVnYXRpdmVzID0gbmVnYXRpdmVzO1xuICBzdGF0ZS5wb3NpdGl2ZXMgPSBwb3NpdGl2ZXM7XG4gIHN0YXRlLnJlc3VsdCA9IGNvbGxhdGVQYXR0ZXJucyhuZWdhdGl2ZXMsIHBvc2l0aXZlcywgb3B0cyk7XG5cbiAgaWYgKG9wdHMuY2FwdHVyZSA9PT0gdHJ1ZSkge1xuICAgIHN0YXRlLnJlc3VsdCA9IGAoJHtzdGF0ZS5yZXN1bHR9KWA7XG4gIH0gZWxzZSBpZiAob3B0cy53cmFwICE9PSBmYWxzZSAmJiAocG9zaXRpdmVzLmxlbmd0aCArIG5lZ2F0aXZlcy5sZW5ndGgpID4gMSkge1xuICAgIHN0YXRlLnJlc3VsdCA9IGAoPzoke3N0YXRlLnJlc3VsdH0pYDtcbiAgfVxuXG4gIHRvUmVnZXhSYW5nZS5jYWNoZVtjYWNoZUtleV0gPSBzdGF0ZTtcbiAgcmV0dXJuIHN0YXRlLnJlc3VsdDtcbn07XG5cbmZ1bmN0aW9uIGNvbGxhdGVQYXR0ZXJucyhuZWcsIHBvcywgb3B0aW9ucykge1xuICBsZXQgb25seU5lZ2F0aXZlID0gZmlsdGVyUGF0dGVybnMobmVnLCBwb3MsICctJywgZmFsc2UsIG9wdGlvbnMpIHx8IFtdO1xuICBsZXQgb25seVBvc2l0aXZlID0gZmlsdGVyUGF0dGVybnMocG9zLCBuZWcsICcnLCBmYWxzZSwgb3B0aW9ucykgfHwgW107XG4gIGxldCBpbnRlcnNlY3RlZCA9IGZpbHRlclBhdHRlcm5zKG5lZywgcG9zLCAnLT8nLCB0cnVlLCBvcHRpb25zKSB8fCBbXTtcbiAgbGV0IHN1YnBhdHRlcm5zID0gb25seU5lZ2F0aXZlLmNvbmNhdChpbnRlcnNlY3RlZCkuY29uY2F0KG9ubHlQb3NpdGl2ZSk7XG4gIHJldHVybiBzdWJwYXR0ZXJucy5qb2luKCd8Jyk7XG59XG5cbmZ1bmN0aW9uIHNwbGl0VG9SYW5nZXMobWluLCBtYXgpIHtcbiAgbGV0IG5pbmVzID0gMTtcbiAgbGV0IHplcm9zID0gMTtcblxuICBsZXQgc3RvcCA9IGNvdW50TmluZXMobWluLCBuaW5lcyk7XG4gIGxldCBzdG9wcyA9IG5ldyBTZXQoW21heF0pO1xuXG4gIHdoaWxlIChtaW4gPD0gc3RvcCAmJiBzdG9wIDw9IG1heCkge1xuICAgIHN0b3BzLmFkZChzdG9wKTtcbiAgICBuaW5lcyArPSAxO1xuICAgIHN0b3AgPSBjb3VudE5pbmVzKG1pbiwgbmluZXMpO1xuICB9XG5cbiAgc3RvcCA9IGNvdW50WmVyb3MobWF4ICsgMSwgemVyb3MpIC0gMTtcblxuICB3aGlsZSAobWluIDwgc3RvcCAmJiBzdG9wIDw9IG1heCkge1xuICAgIHN0b3BzLmFkZChzdG9wKTtcbiAgICB6ZXJvcyArPSAxO1xuICAgIHN0b3AgPSBjb3VudFplcm9zKG1heCArIDEsIHplcm9zKSAtIDE7XG4gIH1cblxuICBzdG9wcyA9IFsuLi5zdG9wc107XG4gIHN0b3BzLnNvcnQoY29tcGFyZSk7XG4gIHJldHVybiBzdG9wcztcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcmFuZ2UgdG8gYSByZWdleCBwYXR0ZXJuXG4gKiBAcGFyYW0ge051bWJlcn0gYHN0YXJ0YFxuICogQHBhcmFtIHtOdW1iZXJ9IGBzdG9wYFxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIHJhbmdlVG9QYXR0ZXJuKHN0YXJ0LCBzdG9wLCBvcHRpb25zKSB7XG4gIGlmIChzdGFydCA9PT0gc3RvcCkge1xuICAgIHJldHVybiB7IHBhdHRlcm46IHN0YXJ0LCBjb3VudDogW10sIGRpZ2l0czogMCB9O1xuICB9XG5cbiAgbGV0IHppcHBlZCA9IHppcChzdGFydCwgc3RvcCk7XG4gIGxldCBkaWdpdHMgPSB6aXBwZWQubGVuZ3RoO1xuICBsZXQgcGF0dGVybiA9ICcnO1xuICBsZXQgY291bnQgPSAwO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlnaXRzOyBpKyspIHtcbiAgICBsZXQgW3N0YXJ0RGlnaXQsIHN0b3BEaWdpdF0gPSB6aXBwZWRbaV07XG5cbiAgICBpZiAoc3RhcnREaWdpdCA9PT0gc3RvcERpZ2l0KSB7XG4gICAgICBwYXR0ZXJuICs9IHN0YXJ0RGlnaXQ7XG5cbiAgICB9IGVsc2UgaWYgKHN0YXJ0RGlnaXQgIT09ICcwJyB8fCBzdG9wRGlnaXQgIT09ICc5Jykge1xuICAgICAgcGF0dGVybiArPSB0b0NoYXJhY3RlckNsYXNzKHN0YXJ0RGlnaXQsIHN0b3BEaWdpdCwgb3B0aW9ucyk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gIH1cblxuICBpZiAoY291bnQpIHtcbiAgICBwYXR0ZXJuICs9IG9wdGlvbnMuc2hvcnRoYW5kID09PSB0cnVlID8gJ1xcXFxkJyA6ICdbMC05XSc7XG4gIH1cblxuICByZXR1cm4geyBwYXR0ZXJuLCBjb3VudDogW2NvdW50XSwgZGlnaXRzIH07XG59XG5cbmZ1bmN0aW9uIHNwbGl0VG9QYXR0ZXJucyhtaW4sIG1heCwgdG9rLCBvcHRpb25zKSB7XG4gIGxldCByYW5nZXMgPSBzcGxpdFRvUmFuZ2VzKG1pbiwgbWF4KTtcbiAgbGV0IHRva2VucyA9IFtdO1xuICBsZXQgc3RhcnQgPSBtaW47XG4gIGxldCBwcmV2O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IG1heCA9IHJhbmdlc1tpXTtcbiAgICBsZXQgb2JqID0gcmFuZ2VUb1BhdHRlcm4oU3RyaW5nKHN0YXJ0KSwgU3RyaW5nKG1heCksIG9wdGlvbnMpO1xuICAgIGxldCB6ZXJvcyA9ICcnO1xuXG4gICAgaWYgKCF0b2suaXNQYWRkZWQgJiYgcHJldiAmJiBwcmV2LnBhdHRlcm4gPT09IG9iai5wYXR0ZXJuKSB7XG4gICAgICBpZiAocHJldi5jb3VudC5sZW5ndGggPiAxKSB7XG4gICAgICAgIHByZXYuY291bnQucG9wKCk7XG4gICAgICB9XG5cbiAgICAgIHByZXYuY291bnQucHVzaChvYmouY291bnRbMF0pO1xuICAgICAgcHJldi5zdHJpbmcgPSBwcmV2LnBhdHRlcm4gKyB0b1F1YW50aWZpZXIocHJldi5jb3VudCk7XG4gICAgICBzdGFydCA9IG1heCArIDE7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodG9rLmlzUGFkZGVkKSB7XG4gICAgICB6ZXJvcyA9IHBhZFplcm9zKG1heCwgdG9rLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBvYmouc3RyaW5nID0gemVyb3MgKyBvYmoucGF0dGVybiArIHRvUXVhbnRpZmllcihvYmouY291bnQpO1xuICAgIHRva2Vucy5wdXNoKG9iaik7XG4gICAgc3RhcnQgPSBtYXggKyAxO1xuICAgIHByZXYgPSBvYmo7XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJQYXR0ZXJucyhhcnIsIGNvbXBhcmlzb24sIHByZWZpeCwgaW50ZXJzZWN0aW9uLCBvcHRpb25zKSB7XG4gIGxldCByZXN1bHQgPSBbXTtcblxuICBmb3IgKGxldCBlbGUgb2YgYXJyKSB7XG4gICAgbGV0IHsgc3RyaW5nIH0gPSBlbGU7XG5cbiAgICAvLyBvbmx5IHB1c2ggaWYgX2JvdGhfIGFyZSBuZWdhdGl2ZS4uLlxuICAgIGlmICghaW50ZXJzZWN0aW9uICYmICFjb250YWlucyhjb21wYXJpc29uLCAnc3RyaW5nJywgc3RyaW5nKSkge1xuICAgICAgcmVzdWx0LnB1c2gocHJlZml4ICsgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvLyBvciBfYm90aF8gYXJlIHBvc2l0aXZlXG4gICAgaWYgKGludGVyc2VjdGlvbiAmJiBjb250YWlucyhjb21wYXJpc29uLCAnc3RyaW5nJywgc3RyaW5nKSkge1xuICAgICAgcmVzdWx0LnB1c2gocHJlZml4ICsgc3RyaW5nKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBaaXAgc3RyaW5nc1xuICovXG5cbmZ1bmN0aW9uIHppcChhLCBiKSB7XG4gIGxldCBhcnIgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSBhcnIucHVzaChbYVtpXSwgYltpXV0pO1xuICByZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBjb21wYXJlKGEsIGIpIHtcbiAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAwO1xufVxuXG5mdW5jdGlvbiBjb250YWlucyhhcnIsIGtleSwgdmFsKSB7XG4gIHJldHVybiBhcnIuc29tZShlbGUgPT4gZWxlW2tleV0gPT09IHZhbCk7XG59XG5cbmZ1bmN0aW9uIGNvdW50TmluZXMobWluLCBsZW4pIHtcbiAgcmV0dXJuIE51bWJlcihTdHJpbmcobWluKS5zbGljZSgwLCAtbGVuKSArICc5Jy5yZXBlYXQobGVuKSk7XG59XG5cbmZ1bmN0aW9uIGNvdW50WmVyb3MoaW50ZWdlciwgemVyb3MpIHtcbiAgcmV0dXJuIGludGVnZXIgLSAoaW50ZWdlciAlIE1hdGgucG93KDEwLCB6ZXJvcykpO1xufVxuXG5mdW5jdGlvbiB0b1F1YW50aWZpZXIoZGlnaXRzKSB7XG4gIGxldCBbc3RhcnQgPSAwLCBzdG9wID0gJyddID0gZGlnaXRzO1xuICBpZiAoc3RvcCB8fCBzdGFydCA+IDEpIHtcbiAgICByZXR1cm4gYHske3N0YXJ0ICsgKHN0b3AgPyAnLCcgKyBzdG9wIDogJycpfX1gO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gdG9DaGFyYWN0ZXJDbGFzcyhhLCBiLCBvcHRpb25zKSB7XG4gIHJldHVybiBgWyR7YX0keyhiIC0gYSA9PT0gMSkgPyAnJyA6ICctJ30ke2J9XWA7XG59XG5cbmZ1bmN0aW9uIGhhc1BhZGRpbmcoc3RyKSB7XG4gIHJldHVybiAvXi0/KDArKVxcZC8udGVzdChzdHIpO1xufVxuXG5mdW5jdGlvbiBwYWRaZXJvcyh2YWx1ZSwgdG9rLCBvcHRpb25zKSB7XG4gIGlmICghdG9rLmlzUGFkZGVkKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbGV0IGRpZmYgPSBNYXRoLmFicyh0b2subWF4TGVuIC0gU3RyaW5nKHZhbHVlKS5sZW5ndGgpO1xuICBsZXQgcmVsYXggPSBvcHRpb25zLnJlbGF4WmVyb3MgIT09IGZhbHNlO1xuXG4gIHN3aXRjaCAoZGlmZikge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiAnJztcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gcmVsYXggPyAnMD8nIDogJzAnO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiByZWxheCA/ICcwezAsMn0nIDogJzAwJztcbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gcmVsYXggPyBgMHswLCR7ZGlmZn19YCA6IGAweyR7ZGlmZn19YDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDYWNoZVxuICovXG5cbnRvUmVnZXhSYW5nZS5jYWNoZSA9IHt9O1xudG9SZWdleFJhbmdlLmNsZWFyQ2FjaGUgPSAoKSA9PiAodG9SZWdleFJhbmdlLmNhY2hlID0ge30pO1xuXG4vKipcbiAqIEV4cG9zZSBgdG9SZWdleFJhbmdlYFxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gdG9SZWdleFJhbmdlO1xuIiwiLyohXG4gKiBmaWxsLXJhbmdlIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9maWxsLXJhbmdlPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5jb25zdCB0b1JlZ2V4UmFuZ2UgPSByZXF1aXJlKCd0by1yZWdleC1yYW5nZScpO1xuXG5jb25zdCBpc09iamVjdCA9IHZhbCA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsKTtcblxuY29uc3QgdHJhbnNmb3JtID0gdG9OdW1iZXIgPT4ge1xuICByZXR1cm4gdmFsdWUgPT4gdG9OdW1iZXIgPT09IHRydWUgPyBOdW1iZXIodmFsdWUpIDogU3RyaW5nKHZhbHVlKTtcbn07XG5cbmNvbnN0IGlzVmFsaWRWYWx1ZSA9IHZhbHVlID0+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUgIT09ICcnKTtcbn07XG5cbmNvbnN0IGlzTnVtYmVyID0gbnVtID0+IE51bWJlci5pc0ludGVnZXIoK251bSk7XG5cbmNvbnN0IHplcm9zID0gaW5wdXQgPT4ge1xuICBsZXQgdmFsdWUgPSBgJHtpbnB1dH1gO1xuICBsZXQgaW5kZXggPSAtMTtcbiAgaWYgKHZhbHVlWzBdID09PSAnLScpIHZhbHVlID0gdmFsdWUuc2xpY2UoMSk7XG4gIGlmICh2YWx1ZSA9PT0gJzAnKSByZXR1cm4gZmFsc2U7XG4gIHdoaWxlICh2YWx1ZVsrK2luZGV4XSA9PT0gJzAnKTtcbiAgcmV0dXJuIGluZGV4ID4gMDtcbn07XG5cbmNvbnN0IHN0cmluZ2lmeSA9IChzdGFydCwgZW5kLCBvcHRpb25zKSA9PiB7XG4gIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnMuc3RyaW5naWZ5ID09PSB0cnVlO1xufTtcblxuY29uc3QgcGFkID0gKGlucHV0LCBtYXhMZW5ndGgsIHRvTnVtYmVyKSA9PiB7XG4gIGlmIChtYXhMZW5ndGggPiAwKSB7XG4gICAgbGV0IGRhc2ggPSBpbnB1dFswXSA9PT0gJy0nID8gJy0nIDogJyc7XG4gICAgaWYgKGRhc2gpIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgaW5wdXQgPSAoZGFzaCArIGlucHV0LnBhZFN0YXJ0KGRhc2ggPyBtYXhMZW5ndGggLSAxIDogbWF4TGVuZ3RoLCAnMCcpKTtcbiAgfVxuICBpZiAodG9OdW1iZXIgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIFN0cmluZyhpbnB1dCk7XG4gIH1cbiAgcmV0dXJuIGlucHV0O1xufTtcblxuY29uc3QgdG9NYXhMZW4gPSAoaW5wdXQsIG1heExlbmd0aCkgPT4ge1xuICBsZXQgbmVnYXRpdmUgPSBpbnB1dFswXSA9PT0gJy0nID8gJy0nIDogJyc7XG4gIGlmIChuZWdhdGl2ZSkge1xuICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMSk7XG4gICAgbWF4TGVuZ3RoLS07XG4gIH1cbiAgd2hpbGUgKGlucHV0Lmxlbmd0aCA8IG1heExlbmd0aCkgaW5wdXQgPSAnMCcgKyBpbnB1dDtcbiAgcmV0dXJuIG5lZ2F0aXZlID8gKCctJyArIGlucHV0KSA6IGlucHV0O1xufTtcblxuY29uc3QgdG9TZXF1ZW5jZSA9IChwYXJ0cywgb3B0aW9ucykgPT4ge1xuICBwYXJ0cy5uZWdhdGl2ZXMuc29ydCgoYSwgYikgPT4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApO1xuICBwYXJ0cy5wb3NpdGl2ZXMuc29ydCgoYSwgYikgPT4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApO1xuXG4gIGxldCBwcmVmaXggPSBvcHRpb25zLmNhcHR1cmUgPyAnJyA6ICc/Oic7XG4gIGxldCBwb3NpdGl2ZXMgPSAnJztcbiAgbGV0IG5lZ2F0aXZlcyA9ICcnO1xuICBsZXQgcmVzdWx0O1xuXG4gIGlmIChwYXJ0cy5wb3NpdGl2ZXMubGVuZ3RoKSB7XG4gICAgcG9zaXRpdmVzID0gcGFydHMucG9zaXRpdmVzLmpvaW4oJ3wnKTtcbiAgfVxuXG4gIGlmIChwYXJ0cy5uZWdhdGl2ZXMubGVuZ3RoKSB7XG4gICAgbmVnYXRpdmVzID0gYC0oJHtwcmVmaXh9JHtwYXJ0cy5uZWdhdGl2ZXMuam9pbignfCcpfSlgO1xuICB9XG5cbiAgaWYgKHBvc2l0aXZlcyAmJiBuZWdhdGl2ZXMpIHtcbiAgICByZXN1bHQgPSBgJHtwb3NpdGl2ZXN9fCR7bmVnYXRpdmVzfWA7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gcG9zaXRpdmVzIHx8IG5lZ2F0aXZlcztcbiAgfVxuXG4gIGlmIChvcHRpb25zLndyYXApIHtcbiAgICByZXR1cm4gYCgke3ByZWZpeH0ke3Jlc3VsdH0pYDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCB0b1JhbmdlID0gKGEsIGIsIGlzTnVtYmVycywgb3B0aW9ucykgPT4ge1xuICBpZiAoaXNOdW1iZXJzKSB7XG4gICAgcmV0dXJuIHRvUmVnZXhSYW5nZShhLCBiLCB7IHdyYXA6IGZhbHNlLCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgbGV0IHN0YXJ0ID0gU3RyaW5nLmZyb21DaGFyQ29kZShhKTtcbiAgaWYgKGEgPT09IGIpIHJldHVybiBzdGFydDtcblxuICBsZXQgc3RvcCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYik7XG4gIHJldHVybiBgWyR7c3RhcnR9LSR7c3RvcH1dYDtcbn07XG5cbmNvbnN0IHRvUmVnZXggPSAoc3RhcnQsIGVuZCwgb3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzdGFydCkpIHtcbiAgICBsZXQgd3JhcCA9IG9wdGlvbnMud3JhcCA9PT0gdHJ1ZTtcbiAgICBsZXQgcHJlZml4ID0gb3B0aW9ucy5jYXB0dXJlID8gJycgOiAnPzonO1xuICAgIHJldHVybiB3cmFwID8gYCgke3ByZWZpeH0ke3N0YXJ0LmpvaW4oJ3wnKX0pYCA6IHN0YXJ0LmpvaW4oJ3wnKTtcbiAgfVxuICByZXR1cm4gdG9SZWdleFJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbnMpO1xufTtcblxuY29uc3QgcmFuZ2VFcnJvciA9ICguLi5hcmdzKSA9PiB7XG4gIHJldHVybiBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCByYW5nZSBhcmd1bWVudHM6ICcgKyB1dGlsLmluc3BlY3QoLi4uYXJncykpO1xufTtcblxuY29uc3QgaW52YWxpZFJhbmdlID0gKHN0YXJ0LCBlbmQsIG9wdGlvbnMpID0+IHtcbiAgaWYgKG9wdGlvbnMuc3RyaWN0UmFuZ2VzID09PSB0cnVlKSB0aHJvdyByYW5nZUVycm9yKFtzdGFydCwgZW5kXSk7XG4gIHJldHVybiBbXTtcbn07XG5cbmNvbnN0IGludmFsaWRTdGVwID0gKHN0ZXAsIG9wdGlvbnMpID0+IHtcbiAgaWYgKG9wdGlvbnMuc3RyaWN0UmFuZ2VzID09PSB0cnVlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgc3RlcCBcIiR7c3RlcH1cIiB0byBiZSBhIG51bWJlcmApO1xuICB9XG4gIHJldHVybiBbXTtcbn07XG5cbmNvbnN0IGZpbGxOdW1iZXJzID0gKHN0YXJ0LCBlbmQsIHN0ZXAgPSAxLCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IGEgPSBOdW1iZXIoc3RhcnQpO1xuICBsZXQgYiA9IE51bWJlcihlbmQpO1xuXG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihhKSB8fCAhTnVtYmVyLmlzSW50ZWdlcihiKSkge1xuICAgIGlmIChvcHRpb25zLnN0cmljdFJhbmdlcyA9PT0gdHJ1ZSkgdGhyb3cgcmFuZ2VFcnJvcihbc3RhcnQsIGVuZF0pO1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIGZpeCBuZWdhdGl2ZSB6ZXJvXG4gIGlmIChhID09PSAwKSBhID0gMDtcbiAgaWYgKGIgPT09IDApIGIgPSAwO1xuXG4gIGxldCBkZXNjZW5kaW5nID0gYSA+IGI7XG4gIGxldCBzdGFydFN0cmluZyA9IFN0cmluZyhzdGFydCk7XG4gIGxldCBlbmRTdHJpbmcgPSBTdHJpbmcoZW5kKTtcbiAgbGV0IHN0ZXBTdHJpbmcgPSBTdHJpbmcoc3RlcCk7XG4gIHN0ZXAgPSBNYXRoLm1heChNYXRoLmFicyhzdGVwKSwgMSk7XG5cbiAgbGV0IHBhZGRlZCA9IHplcm9zKHN0YXJ0U3RyaW5nKSB8fCB6ZXJvcyhlbmRTdHJpbmcpIHx8IHplcm9zKHN0ZXBTdHJpbmcpO1xuICBsZXQgbWF4TGVuID0gcGFkZGVkID8gTWF0aC5tYXgoc3RhcnRTdHJpbmcubGVuZ3RoLCBlbmRTdHJpbmcubGVuZ3RoLCBzdGVwU3RyaW5nLmxlbmd0aCkgOiAwO1xuICBsZXQgdG9OdW1iZXIgPSBwYWRkZWQgPT09IGZhbHNlICYmIHN0cmluZ2lmeShzdGFydCwgZW5kLCBvcHRpb25zKSA9PT0gZmFsc2U7XG4gIGxldCBmb3JtYXQgPSBvcHRpb25zLnRyYW5zZm9ybSB8fCB0cmFuc2Zvcm0odG9OdW1iZXIpO1xuXG4gIGlmIChvcHRpb25zLnRvUmVnZXggJiYgc3RlcCA9PT0gMSkge1xuICAgIHJldHVybiB0b1JhbmdlKHRvTWF4TGVuKHN0YXJ0LCBtYXhMZW4pLCB0b01heExlbihlbmQsIG1heExlbiksIHRydWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgbGV0IHBhcnRzID0geyBuZWdhdGl2ZXM6IFtdLCBwb3NpdGl2ZXM6IFtdIH07XG4gIGxldCBwdXNoID0gbnVtID0+IHBhcnRzW251bSA8IDAgPyAnbmVnYXRpdmVzJyA6ICdwb3NpdGl2ZXMnXS5wdXNoKE1hdGguYWJzKG51bSkpO1xuICBsZXQgcmFuZ2UgPSBbXTtcbiAgbGV0IGluZGV4ID0gMDtcblxuICB3aGlsZSAoZGVzY2VuZGluZyA/IGEgPj0gYiA6IGEgPD0gYikge1xuICAgIGlmIChvcHRpb25zLnRvUmVnZXggPT09IHRydWUgJiYgc3RlcCA+IDEpIHtcbiAgICAgIHB1c2goYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJhbmdlLnB1c2gocGFkKGZvcm1hdChhLCBpbmRleCksIG1heExlbiwgdG9OdW1iZXIpKTtcbiAgICB9XG4gICAgYSA9IGRlc2NlbmRpbmcgPyBhIC0gc3RlcCA6IGEgKyBzdGVwO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBpZiAob3B0aW9ucy50b1JlZ2V4ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHN0ZXAgPiAxXG4gICAgICA/IHRvU2VxdWVuY2UocGFydHMsIG9wdGlvbnMpXG4gICAgICA6IHRvUmVnZXgocmFuZ2UsIG51bGwsIHsgd3JhcDogZmFsc2UsIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICByZXR1cm4gcmFuZ2U7XG59O1xuXG5jb25zdCBmaWxsTGV0dGVycyA9IChzdGFydCwgZW5kLCBzdGVwID0gMSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmICgoIWlzTnVtYmVyKHN0YXJ0KSAmJiBzdGFydC5sZW5ndGggPiAxKSB8fCAoIWlzTnVtYmVyKGVuZCkgJiYgZW5kLmxlbmd0aCA+IDEpKSB7XG4gICAgcmV0dXJuIGludmFsaWRSYW5nZShzdGFydCwgZW5kLCBvcHRpb25zKTtcbiAgfVxuXG5cbiAgbGV0IGZvcm1hdCA9IG9wdGlvbnMudHJhbnNmb3JtIHx8ICh2YWwgPT4gU3RyaW5nLmZyb21DaGFyQ29kZSh2YWwpKTtcbiAgbGV0IGEgPSBgJHtzdGFydH1gLmNoYXJDb2RlQXQoMCk7XG4gIGxldCBiID0gYCR7ZW5kfWAuY2hhckNvZGVBdCgwKTtcblxuICBsZXQgZGVzY2VuZGluZyA9IGEgPiBiO1xuICBsZXQgbWluID0gTWF0aC5taW4oYSwgYik7XG4gIGxldCBtYXggPSBNYXRoLm1heChhLCBiKTtcblxuICBpZiAob3B0aW9ucy50b1JlZ2V4ICYmIHN0ZXAgPT09IDEpIHtcbiAgICByZXR1cm4gdG9SYW5nZShtaW4sIG1heCwgZmFsc2UsIG9wdGlvbnMpO1xuICB9XG5cbiAgbGV0IHJhbmdlID0gW107XG4gIGxldCBpbmRleCA9IDA7XG5cbiAgd2hpbGUgKGRlc2NlbmRpbmcgPyBhID49IGIgOiBhIDw9IGIpIHtcbiAgICByYW5nZS5wdXNoKGZvcm1hdChhLCBpbmRleCkpO1xuICAgIGEgPSBkZXNjZW5kaW5nID8gYSAtIHN0ZXAgOiBhICsgc3RlcDtcbiAgICBpbmRleCsrO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMudG9SZWdleCA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiB0b1JlZ2V4KHJhbmdlLCBudWxsLCB7IHdyYXA6IGZhbHNlLCBvcHRpb25zIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJhbmdlO1xufTtcblxuY29uc3QgZmlsbCA9IChzdGFydCwgZW5kLCBzdGVwLCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKGVuZCA9PSBudWxsICYmIGlzVmFsaWRWYWx1ZShzdGFydCkpIHtcbiAgICByZXR1cm4gW3N0YXJ0XTtcbiAgfVxuXG4gIGlmICghaXNWYWxpZFZhbHVlKHN0YXJ0KSB8fCAhaXNWYWxpZFZhbHVlKGVuZCkpIHtcbiAgICByZXR1cm4gaW52YWxpZFJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBzdGVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGZpbGwoc3RhcnQsIGVuZCwgMSwgeyB0cmFuc2Zvcm06IHN0ZXAgfSk7XG4gIH1cblxuICBpZiAoaXNPYmplY3Qoc3RlcCkpIHtcbiAgICByZXR1cm4gZmlsbChzdGFydCwgZW5kLCAwLCBzdGVwKTtcbiAgfVxuXG4gIGxldCBvcHRzID0geyAuLi5vcHRpb25zIH07XG4gIGlmIChvcHRzLmNhcHR1cmUgPT09IHRydWUpIG9wdHMud3JhcCA9IHRydWU7XG4gIHN0ZXAgPSBzdGVwIHx8IG9wdHMuc3RlcCB8fCAxO1xuXG4gIGlmICghaXNOdW1iZXIoc3RlcCkpIHtcbiAgICBpZiAoc3RlcCAhPSBudWxsICYmICFpc09iamVjdChzdGVwKSkgcmV0dXJuIGludmFsaWRTdGVwKHN0ZXAsIG9wdHMpO1xuICAgIHJldHVybiBmaWxsKHN0YXJ0LCBlbmQsIDEsIHN0ZXApO1xuICB9XG5cbiAgaWYgKGlzTnVtYmVyKHN0YXJ0KSAmJiBpc051bWJlcihlbmQpKSB7XG4gICAgcmV0dXJuIGZpbGxOdW1iZXJzKHN0YXJ0LCBlbmQsIHN0ZXAsIG9wdHMpO1xuICB9XG5cbiAgcmV0dXJuIGZpbGxMZXR0ZXJzKHN0YXJ0LCBlbmQsIE1hdGgubWF4KE1hdGguYWJzKHN0ZXApLCAxKSwgb3B0cyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbGw7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZpbGwgPSByZXF1aXJlKCdmaWxsLXJhbmdlJyk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuY29uc3QgY29tcGlsZSA9IChhc3QsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBsZXQgd2FsayA9IChub2RlLCBwYXJlbnQgPSB7fSkgPT4ge1xuICAgIGxldCBpbnZhbGlkQmxvY2sgPSB1dGlscy5pc0ludmFsaWRCcmFjZShwYXJlbnQpO1xuICAgIGxldCBpbnZhbGlkTm9kZSA9IG5vZGUuaW52YWxpZCA9PT0gdHJ1ZSAmJiBvcHRpb25zLmVzY2FwZUludmFsaWQgPT09IHRydWU7XG4gICAgbGV0IGludmFsaWQgPSBpbnZhbGlkQmxvY2sgPT09IHRydWUgfHwgaW52YWxpZE5vZGUgPT09IHRydWU7XG4gICAgbGV0IHByZWZpeCA9IG9wdGlvbnMuZXNjYXBlSW52YWxpZCA9PT0gdHJ1ZSA/ICdcXFxcJyA6ICcnO1xuICAgIGxldCBvdXRwdXQgPSAnJztcblxuICAgIGlmIChub2RlLmlzT3BlbiA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIHByZWZpeCArIG5vZGUudmFsdWU7XG4gICAgfVxuICAgIGlmIChub2RlLmlzQ2xvc2UgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiBwcmVmaXggKyBub2RlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLnR5cGUgPT09ICdvcGVuJykge1xuICAgICAgcmV0dXJuIGludmFsaWQgPyAocHJlZml4ICsgbm9kZS52YWx1ZSkgOiAnKCc7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgICAgcmV0dXJuIGludmFsaWQgPyAocHJlZml4ICsgbm9kZS52YWx1ZSkgOiAnKSc7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2NvbW1hJykge1xuICAgICAgcmV0dXJuIG5vZGUucHJldi50eXBlID09PSAnY29tbWEnID8gJycgOiAoaW52YWxpZCA/IG5vZGUudmFsdWUgOiAnfCcpO1xuICAgIH1cblxuICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2RlcyAmJiBub2RlLnJhbmdlcyA+IDApIHtcbiAgICAgIGxldCBhcmdzID0gdXRpbHMucmVkdWNlKG5vZGUubm9kZXMpO1xuICAgICAgbGV0IHJhbmdlID0gZmlsbCguLi5hcmdzLCB7IC4uLm9wdGlvbnMsIHdyYXA6IGZhbHNlLCB0b1JlZ2V4OiB0cnVlIH0pO1xuXG4gICAgICBpZiAocmFuZ2UubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA+IDEgJiYgcmFuZ2UubGVuZ3RoID4gMSA/IGAoJHtyYW5nZX0pYCA6IHJhbmdlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzKSB7XG4gICAgICBmb3IgKGxldCBjaGlsZCBvZiBub2RlLm5vZGVzKSB7XG4gICAgICAgIG91dHB1dCArPSB3YWxrKGNoaWxkLCBub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gd2Fsayhhc3QpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb21waWxlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBmaWxsID0gcmVxdWlyZSgnZmlsbC1yYW5nZScpO1xuY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9zdHJpbmdpZnknKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5jb25zdCBhcHBlbmQgPSAocXVldWUgPSAnJywgc3Rhc2ggPSAnJywgZW5jbG9zZSA9IGZhbHNlKSA9PiB7XG4gIGxldCByZXN1bHQgPSBbXTtcblxuICBxdWV1ZSA9IFtdLmNvbmNhdChxdWV1ZSk7XG4gIHN0YXNoID0gW10uY29uY2F0KHN0YXNoKTtcblxuICBpZiAoIXN0YXNoLmxlbmd0aCkgcmV0dXJuIHF1ZXVlO1xuICBpZiAoIXF1ZXVlLmxlbmd0aCkge1xuICAgIHJldHVybiBlbmNsb3NlID8gdXRpbHMuZmxhdHRlbihzdGFzaCkubWFwKGVsZSA9PiBgeyR7ZWxlfX1gKSA6IHN0YXNoO1xuICB9XG5cbiAgZm9yIChsZXQgaXRlbSBvZiBxdWV1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICBmb3IgKGxldCB2YWx1ZSBvZiBpdGVtKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGFwcGVuZCh2YWx1ZSwgc3Rhc2gsIGVuY2xvc2UpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgZWxlIG9mIHN0YXNoKSB7XG4gICAgICAgIGlmIChlbmNsb3NlID09PSB0cnVlICYmIHR5cGVvZiBlbGUgPT09ICdzdHJpbmcnKSBlbGUgPSBgeyR7ZWxlfX1gO1xuICAgICAgICByZXN1bHQucHVzaChBcnJheS5pc0FycmF5KGVsZSkgPyBhcHBlbmQoaXRlbSwgZWxlLCBlbmNsb3NlKSA6IChpdGVtICsgZWxlKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB1dGlscy5mbGF0dGVuKHJlc3VsdCk7XG59O1xuXG5jb25zdCBleHBhbmQgPSAoYXN0LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IHJhbmdlTGltaXQgPSBvcHRpb25zLnJhbmdlTGltaXQgPT09IHZvaWQgMCA/IDEwMDAgOiBvcHRpb25zLnJhbmdlTGltaXQ7XG5cbiAgbGV0IHdhbGsgPSAobm9kZSwgcGFyZW50ID0ge30pID0+IHtcbiAgICBub2RlLnF1ZXVlID0gW107XG5cbiAgICBsZXQgcCA9IHBhcmVudDtcbiAgICBsZXQgcSA9IHBhcmVudC5xdWV1ZTtcblxuICAgIHdoaWxlIChwLnR5cGUgIT09ICdicmFjZScgJiYgcC50eXBlICE9PSAncm9vdCcgJiYgcC5wYXJlbnQpIHtcbiAgICAgIHAgPSBwLnBhcmVudDtcbiAgICAgIHEgPSBwLnF1ZXVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLmludmFsaWQgfHwgbm9kZS5kb2xsYXIpIHtcbiAgICAgIHEucHVzaChhcHBlbmQocS5wb3AoKSwgc3RyaW5naWZ5KG5vZGUsIG9wdGlvbnMpKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2JyYWNlJyAmJiBub2RlLmludmFsaWQgIT09IHRydWUgJiYgbm9kZS5ub2Rlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHEucHVzaChhcHBlbmQocS5wb3AoKSwgWyd7fSddKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5vZGUubm9kZXMgJiYgbm9kZS5yYW5nZXMgPiAwKSB7XG4gICAgICBsZXQgYXJncyA9IHV0aWxzLnJlZHVjZShub2RlLm5vZGVzKTtcblxuICAgICAgaWYgKHV0aWxzLmV4Y2VlZHNMaW1pdCguLi5hcmdzLCBvcHRpb25zLnN0ZXAsIHJhbmdlTGltaXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdleHBhbmRlZCBhcnJheSBsZW5ndGggZXhjZWVkcyByYW5nZSBsaW1pdC4gVXNlIG9wdGlvbnMucmFuZ2VMaW1pdCB0byBpbmNyZWFzZSBvciBkaXNhYmxlIHRoZSBsaW1pdC4nKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHJhbmdlID0gZmlsbCguLi5hcmdzLCBvcHRpb25zKTtcbiAgICAgIGlmIChyYW5nZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmFuZ2UgPSBzdHJpbmdpZnkobm9kZSwgb3B0aW9ucyk7XG4gICAgICB9XG5cbiAgICAgIHEucHVzaChhcHBlbmQocS5wb3AoKSwgcmFuZ2UpKTtcbiAgICAgIG5vZGUubm9kZXMgPSBbXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgZW5jbG9zZSA9IHV0aWxzLmVuY2xvc2VCcmFjZShub2RlKTtcbiAgICBsZXQgcXVldWUgPSBub2RlLnF1ZXVlO1xuICAgIGxldCBibG9jayA9IG5vZGU7XG5cbiAgICB3aGlsZSAoYmxvY2sudHlwZSAhPT0gJ2JyYWNlJyAmJiBibG9jay50eXBlICE9PSAncm9vdCcgJiYgYmxvY2sucGFyZW50KSB7XG4gICAgICBibG9jayA9IGJsb2NrLnBhcmVudDtcbiAgICAgIHF1ZXVlID0gYmxvY2sucXVldWU7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLm5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2hpbGQgPSBub2RlLm5vZGVzW2ldO1xuXG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2NvbW1hJyAmJiBub2RlLnR5cGUgPT09ICdicmFjZScpIHtcbiAgICAgICAgaWYgKGkgPT09IDEpIHF1ZXVlLnB1c2goJycpO1xuICAgICAgICBxdWV1ZS5wdXNoKCcnKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAnY2xvc2UnKSB7XG4gICAgICAgIHEucHVzaChhcHBlbmQocS5wb3AoKSwgcXVldWUsIGVuY2xvc2UpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZC52YWx1ZSAmJiBjaGlsZC50eXBlICE9PSAnb3BlbicpIHtcbiAgICAgICAgcXVldWUucHVzaChhcHBlbmQocXVldWUucG9wKCksIGNoaWxkLnZhbHVlKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hpbGQubm9kZXMpIHtcbiAgICAgICAgd2FsayhjaGlsZCwgbm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXVlO1xuICB9O1xuXG4gIHJldHVybiB1dGlscy5mbGF0dGVuKHdhbGsoYXN0KSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cGFuZDtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIE1BWF9MRU5HVEg6IDEwMjQgKiA2NCxcblxuICAvLyBEaWdpdHNcbiAgQ0hBUl8wOiAnMCcsIC8qIDAgKi9cbiAgQ0hBUl85OiAnOScsIC8qIDkgKi9cblxuICAvLyBBbHBoYWJldCBjaGFycy5cbiAgQ0hBUl9VUFBFUkNBU0VfQTogJ0EnLCAvKiBBICovXG4gIENIQVJfTE9XRVJDQVNFX0E6ICdhJywgLyogYSAqL1xuICBDSEFSX1VQUEVSQ0FTRV9aOiAnWicsIC8qIFogKi9cbiAgQ0hBUl9MT1dFUkNBU0VfWjogJ3onLCAvKiB6ICovXG5cbiAgQ0hBUl9MRUZUX1BBUkVOVEhFU0VTOiAnKCcsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUzogJyknLCAvKiApICovXG5cbiAgQ0hBUl9BU1RFUklTSzogJyonLCAvKiAqICovXG5cbiAgLy8gTm9uLWFscGhhYmV0aWMgY2hhcnMuXG4gIENIQVJfQU1QRVJTQU5EOiAnJicsIC8qICYgKi9cbiAgQ0hBUl9BVDogJ0AnLCAvKiBAICovXG4gIENIQVJfQkFDS1NMQVNIOiAnXFxcXCcsIC8qIFxcICovXG4gIENIQVJfQkFDS1RJQ0s6ICdgJywgLyogYCAqL1xuICBDSEFSX0NBUlJJQUdFX1JFVFVSTjogJ1xccicsIC8qIFxcciAqL1xuICBDSEFSX0NJUkNVTUZMRVhfQUNDRU5UOiAnXicsIC8qIF4gKi9cbiAgQ0hBUl9DT0xPTjogJzonLCAvKiA6ICovXG4gIENIQVJfQ09NTUE6ICcsJywgLyogLCAqL1xuICBDSEFSX0RPTExBUjogJyQnLCAvKiAuICovXG4gIENIQVJfRE9UOiAnLicsIC8qIC4gKi9cbiAgQ0hBUl9ET1VCTEVfUVVPVEU6ICdcIicsIC8qIFwiICovXG4gIENIQVJfRVFVQUw6ICc9JywgLyogPSAqL1xuICBDSEFSX0VYQ0xBTUFUSU9OX01BUks6ICchJywgLyogISAqL1xuICBDSEFSX0ZPUk1fRkVFRDogJ1xcZicsIC8qIFxcZiAqL1xuICBDSEFSX0ZPUldBUkRfU0xBU0g6ICcvJywgLyogLyAqL1xuICBDSEFSX0hBU0g6ICcjJywgLyogIyAqL1xuICBDSEFSX0hZUEhFTl9NSU5VUzogJy0nLCAvKiAtICovXG4gIENIQVJfTEVGVF9BTkdMRV9CUkFDS0VUOiAnPCcsIC8qIDwgKi9cbiAgQ0hBUl9MRUZUX0NVUkxZX0JSQUNFOiAneycsIC8qIHsgKi9cbiAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUOiAnWycsIC8qIFsgKi9cbiAgQ0hBUl9MSU5FX0ZFRUQ6ICdcXG4nLCAvKiBcXG4gKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRTogJ1xcdTAwQTAnLCAvKiBcXHUwMEEwICovXG4gIENIQVJfUEVSQ0VOVDogJyUnLCAvKiAlICovXG4gIENIQVJfUExVUzogJysnLCAvKiArICovXG4gIENIQVJfUVVFU1RJT05fTUFSSzogJz8nLCAvKiA/ICovXG4gIENIQVJfUklHSFRfQU5HTEVfQlJBQ0tFVDogJz4nLCAvKiA+ICovXG4gIENIQVJfUklHSFRfQ1VSTFlfQlJBQ0U6ICd9JywgLyogfSAqL1xuICBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUOiAnXScsIC8qIF0gKi9cbiAgQ0hBUl9TRU1JQ09MT046ICc7JywgLyogOyAqL1xuICBDSEFSX1NJTkdMRV9RVU9URTogJ1xcJycsIC8qICcgKi9cbiAgQ0hBUl9TUEFDRTogJyAnLCAvKiAgICovXG4gIENIQVJfVEFCOiAnXFx0JywgLyogXFx0ICovXG4gIENIQVJfVU5ERVJTQ09SRTogJ18nLCAvKiBfICovXG4gIENIQVJfVkVSVElDQUxfTElORTogJ3wnLCAvKiB8ICovXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFOiAnXFx1RkVGRicgLyogXFx1RkVGRiAqL1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9zdHJpbmdpZnknKTtcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCB7XG4gIE1BWF9MRU5HVEgsXG4gIENIQVJfQkFDS1NMQVNILCAvKiBcXCAqL1xuICBDSEFSX0JBQ0tUSUNLLCAvKiBgICovXG4gIENIQVJfQ09NTUEsIC8qICwgKi9cbiAgQ0hBUl9ET1QsIC8qIC4gKi9cbiAgQ0hBUl9MRUZUX1BBUkVOVEhFU0VTLCAvKiAoICovXG4gIENIQVJfUklHSFRfUEFSRU5USEVTRVMsIC8qICkgKi9cbiAgQ0hBUl9MRUZUX0NVUkxZX0JSQUNFLCAvKiB7ICovXG4gIENIQVJfUklHSFRfQ1VSTFlfQlJBQ0UsIC8qIH0gKi9cbiAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VULCAvKiBbICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQsIC8qIF0gKi9cbiAgQ0hBUl9ET1VCTEVfUVVPVEUsIC8qIFwiICovXG4gIENIQVJfU0lOR0xFX1FVT1RFLCAvKiAnICovXG4gIENIQVJfTk9fQlJFQUtfU1BBQ0UsXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFXG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcblxuLyoqXG4gKiBwYXJzZVxuICovXG5cbmNvbnN0IHBhcnNlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIHN0cmluZycpO1xuICB9XG5cbiAgbGV0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICBsZXQgbWF4ID0gdHlwZW9mIG9wdHMubWF4TGVuZ3RoID09PSAnbnVtYmVyJyA/IE1hdGgubWluKE1BWF9MRU5HVEgsIG9wdHMubWF4TGVuZ3RoKSA6IE1BWF9MRU5HVEg7XG4gIGlmIChpbnB1dC5sZW5ndGggPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYElucHV0IGxlbmd0aCAoJHtpbnB1dC5sZW5ndGh9KSwgZXhjZWVkcyBtYXggY2hhcmFjdGVycyAoJHttYXh9KWApO1xuICB9XG5cbiAgbGV0IGFzdCA9IHsgdHlwZTogJ3Jvb3QnLCBpbnB1dCwgbm9kZXM6IFtdIH07XG4gIGxldCBzdGFjayA9IFthc3RdO1xuICBsZXQgYmxvY2sgPSBhc3Q7XG4gIGxldCBwcmV2ID0gYXN0O1xuICBsZXQgYnJhY2tldHMgPSAwO1xuICBsZXQgbGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICBsZXQgaW5kZXggPSAwO1xuICBsZXQgZGVwdGggPSAwO1xuICBsZXQgdmFsdWU7XG4gIGxldCBtZW1vID0ge307XG5cbiAgLyoqXG4gICAqIEhlbHBlcnNcbiAgICovXG5cbiAgY29uc3QgYWR2YW5jZSA9ICgpID0+IGlucHV0W2luZGV4KytdO1xuICBjb25zdCBwdXNoID0gbm9kZSA9PiB7XG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ3RleHQnICYmIHByZXYudHlwZSA9PT0gJ2RvdCcpIHtcbiAgICAgIHByZXYudHlwZSA9ICd0ZXh0JztcbiAgICB9XG5cbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICd0ZXh0JyAmJiBub2RlLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgcHJldi52YWx1ZSArPSBub2RlLnZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGJsb2NrLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgbm9kZS5wYXJlbnQgPSBibG9jaztcbiAgICBub2RlLnByZXYgPSBwcmV2O1xuICAgIHByZXYgPSBub2RlO1xuICAgIHJldHVybiBub2RlO1xuICB9O1xuXG4gIHB1c2goeyB0eXBlOiAnYm9zJyB9KTtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBibG9jayA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgIHZhbHVlID0gYWR2YW5jZSgpO1xuXG4gICAgLyoqXG4gICAgICogSW52YWxpZCBjaGFyc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX1pFUk9fV0lEVEhfTk9CUkVBS19TUEFDRSB8fCB2YWx1ZSA9PT0gQ0hBUl9OT19CUkVBS19TUEFDRSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXNjYXBlZCBjaGFyc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0JBQ0tTTEFTSCkge1xuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWU6IChvcHRpb25zLmtlZXBFc2NhcGluZyA/IHZhbHVlIDogJycpICsgYWR2YW5jZSgpIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmlnaHQgc3F1YXJlIGJyYWNrZXQgKGxpdGVyYWwpOiAnXSdcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWU6ICdcXFxcJyArIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGVmdCBzcXVhcmUgYnJhY2tldDogJ1snXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgYnJhY2tldHMrKztcblxuICAgICAgbGV0IGNsb3NlZCA9IHRydWU7XG4gICAgICBsZXQgbmV4dDtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoICYmIChuZXh0ID0gYWR2YW5jZSgpKSkge1xuICAgICAgICB2YWx1ZSArPSBuZXh0O1xuXG4gICAgICAgIGlmIChuZXh0ID09PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICBicmFja2V0cysrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1NMQVNIKSB7XG4gICAgICAgICAgdmFsdWUgKz0gYWR2YW5jZSgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICBicmFja2V0cy0tO1xuXG4gICAgICAgICAgaWYgKGJyYWNrZXRzID09PSAwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJlbnRoZXNlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0xFRlRfUEFSRU5USEVTRVMpIHtcbiAgICAgIGJsb2NrID0gcHVzaCh7IHR5cGU6ICdwYXJlbicsIG5vZGVzOiBbXSB9KTtcbiAgICAgIHN0YWNrLnB1c2goYmxvY2spO1xuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfUklHSFRfUEFSRU5USEVTRVMpIHtcbiAgICAgIGlmIChibG9jay50eXBlICE9PSAncGFyZW4nKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJsb2NrID0gc3RhY2sucG9wKCk7XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGJsb2NrID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBRdW90ZXM6ICd8XCJ8YFxuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0RPVUJMRV9RVU9URSB8fCB2YWx1ZSA9PT0gQ0hBUl9TSU5HTEVfUVVPVEUgfHwgdmFsdWUgPT09IENIQVJfQkFDS1RJQ0spIHtcbiAgICAgIGxldCBvcGVuID0gdmFsdWU7XG4gICAgICBsZXQgbmV4dDtcblxuICAgICAgaWYgKG9wdGlvbnMua2VlcFF1b3RlcyAhPT0gdHJ1ZSkge1xuICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgKG5leHQgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgIGlmIChuZXh0ID09PSBDSEFSX0JBQ0tTTEFTSCkge1xuICAgICAgICAgIHZhbHVlICs9IG5leHQgKyBhZHZhbmNlKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCA9PT0gb3Blbikge1xuICAgICAgICAgIGlmIChvcHRpb25zLmtlZXBRdW90ZXMgPT09IHRydWUpIHZhbHVlICs9IG5leHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZSArPSBuZXh0O1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExlZnQgY3VybHkgYnJhY2U6ICd7J1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgIGRlcHRoKys7XG5cbiAgICAgIGxldCBkb2xsYXIgPSBwcmV2LnZhbHVlICYmIHByZXYudmFsdWUuc2xpY2UoLTEpID09PSAnJCcgfHwgYmxvY2suZG9sbGFyID09PSB0cnVlO1xuICAgICAgbGV0IGJyYWNlID0ge1xuICAgICAgICB0eXBlOiAnYnJhY2UnLFxuICAgICAgICBvcGVuOiB0cnVlLFxuICAgICAgICBjbG9zZTogZmFsc2UsXG4gICAgICAgIGRvbGxhcixcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGNvbW1hczogMCxcbiAgICAgICAgcmFuZ2VzOiAwLFxuICAgICAgICBub2RlczogW11cbiAgICAgIH07XG5cbiAgICAgIGJsb2NrID0gcHVzaChicmFjZSk7XG4gICAgICBzdGFjay5wdXNoKGJsb2NrKTtcbiAgICAgIHB1c2goeyB0eXBlOiAnb3BlbicsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmlnaHQgY3VybHkgYnJhY2U6ICd9J1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX1JJR0hUX0NVUkxZX0JSQUNFKSB7XG4gICAgICBpZiAoYmxvY2sudHlwZSAhPT0gJ2JyYWNlJykge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxldCB0eXBlID0gJ2Nsb3NlJztcbiAgICAgIGJsb2NrID0gc3RhY2sucG9wKCk7XG4gICAgICBibG9jay5jbG9zZSA9IHRydWU7XG5cbiAgICAgIHB1c2goeyB0eXBlLCB2YWx1ZSB9KTtcbiAgICAgIGRlcHRoLS07XG5cbiAgICAgIGJsb2NrID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tYTogJywnXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfQ09NTUEgJiYgZGVwdGggPiAwKSB7XG4gICAgICBpZiAoYmxvY2sucmFuZ2VzID4gMCkge1xuICAgICAgICBibG9jay5yYW5nZXMgPSAwO1xuICAgICAgICBsZXQgb3BlbiA9IGJsb2NrLm5vZGVzLnNoaWZ0KCk7XG4gICAgICAgIGJsb2NrLm5vZGVzID0gW29wZW4sIHsgdHlwZTogJ3RleHQnLCB2YWx1ZTogc3RyaW5naWZ5KGJsb2NrKSB9XTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdjb21tYScsIHZhbHVlIH0pO1xuICAgICAgYmxvY2suY29tbWFzKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3Q6ICcuJ1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX0RPVCAmJiBkZXB0aCA+IDAgJiYgYmxvY2suY29tbWFzID09PSAwKSB7XG4gICAgICBsZXQgc2libGluZ3MgPSBibG9jay5ub2RlcztcblxuICAgICAgaWYgKGRlcHRoID09PSAwIHx8IHNpYmxpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmV2LnR5cGUgPT09ICdkb3QnKSB7XG4gICAgICAgIGJsb2NrLnJhbmdlID0gW107XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgIHByZXYudHlwZSA9ICdyYW5nZSc7XG5cbiAgICAgICAgaWYgKGJsb2NrLm5vZGVzLmxlbmd0aCAhPT0gMyAmJiBibG9jay5ub2Rlcy5sZW5ndGggIT09IDUpIHtcbiAgICAgICAgICBibG9jay5pbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBibG9jay5yYW5nZXMgPSAwO1xuICAgICAgICAgIHByZXYudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJsb2NrLnJhbmdlcysrO1xuICAgICAgICBibG9jay5hcmdzID0gW107XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldi50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIHNpYmxpbmdzLnBvcCgpO1xuXG4gICAgICAgIGxldCBiZWZvcmUgPSBzaWJsaW5nc1tzaWJsaW5ncy5sZW5ndGggLSAxXTtcbiAgICAgICAgYmVmb3JlLnZhbHVlICs9IHByZXYudmFsdWUgKyB2YWx1ZTtcbiAgICAgICAgcHJldiA9IGJlZm9yZTtcbiAgICAgICAgYmxvY2sucmFuZ2VzLS07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2RvdCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGV4dFxuICAgICAqL1xuXG4gICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gIH1cblxuICAvLyBNYXJrIGltYmFsYW5jZWQgYnJhY2VzIGFuZCBicmFja2V0cyBhcyBpbnZhbGlkXG4gIGRvIHtcbiAgICBibG9jayA9IHN0YWNrLnBvcCgpO1xuXG4gICAgaWYgKGJsb2NrLnR5cGUgIT09ICdyb290Jykge1xuICAgICAgYmxvY2subm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgaWYgKCFub2RlLm5vZGVzKSB7XG4gICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ29wZW4nKSBub2RlLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykgbm9kZS5pc0Nsb3NlID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoIW5vZGUubm9kZXMpIG5vZGUudHlwZSA9ICd0ZXh0JztcbiAgICAgICAgICBub2RlLmludmFsaWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gZ2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgYmxvY2sgb24gcGFyZW50Lm5vZGVzIChibG9jaydzIHNpYmxpbmdzKVxuICAgICAgbGV0IHBhcmVudCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgbGV0IGluZGV4ID0gcGFyZW50Lm5vZGVzLmluZGV4T2YoYmxvY2spO1xuICAgICAgLy8gcmVwbGFjZSB0aGUgKGludmFsaWQpIGJsb2NrIHdpdGggaXQncyBub2Rlc1xuICAgICAgcGFyZW50Lm5vZGVzLnNwbGljZShpbmRleCwgMSwgLi4uYmxvY2subm9kZXMpO1xuICAgIH1cbiAgfSB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCk7XG5cbiAgcHVzaCh7IHR5cGU6ICdlb3MnIH0pO1xuICByZXR1cm4gYXN0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9saWIvc3RyaW5naWZ5Jyk7XG5jb25zdCBjb21waWxlID0gcmVxdWlyZSgnLi9saWIvY29tcGlsZScpO1xuY29uc3QgZXhwYW5kID0gcmVxdWlyZSgnLi9saWIvZXhwYW5kJyk7XG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vbGliL3BhcnNlJyk7XG5cbi8qKlxuICogRXhwYW5kIHRoZSBnaXZlbiBwYXR0ZXJuIG9yIGNyZWF0ZSBhIHJlZ2V4LWNvbXBhdGlibGUgc3RyaW5nLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGNvbnNvbGUubG9nKGJyYWNlcygne2EsYixjfScsIHsgY29tcGlsZTogdHJ1ZSB9KSk7IC8vPT4gWycoYXxifGMpJ11cbiAqIGNvbnNvbGUubG9nKGJyYWNlcygne2EsYixjfScpKTsgLy89PiBbJ2EnLCAnYicsICdjJ11cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IGJyYWNlcyA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGxldCBvdXRwdXQgPSBbXTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICBmb3IgKGxldCBwYXR0ZXJuIG9mIGlucHV0KSB7XG4gICAgICBsZXQgcmVzdWx0ID0gYnJhY2VzLmNyZWF0ZShwYXR0ZXJuLCBvcHRpb25zKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgb3V0cHV0LnB1c2goLi4ucmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IFtdLmNvbmNhdChicmFjZXMuY3JlYXRlKGlucHV0LCBvcHRpb25zKSk7XG4gIH1cblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmV4cGFuZCA9PT0gdHJ1ZSAmJiBvcHRpb25zLm5vZHVwZXMgPT09IHRydWUpIHtcbiAgICBvdXRwdXQgPSBbLi4ubmV3IFNldChvdXRwdXQpXTtcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYHN0cmAgd2l0aCB0aGUgZ2l2ZW4gYG9wdGlvbnNgLlxuICpcbiAqIGBgYGpzXG4gKiAvLyBicmFjZXMucGFyc2UocGF0dGVybiwgWywgb3B0aW9uc10pO1xuICogY29uc3QgYXN0ID0gYnJhY2VzLnBhcnNlKCdhL3tiLGN9L2QnKTtcbiAqIGNvbnNvbGUubG9nKGFzdCk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXR0ZXJuIEJyYWNlIHBhdHRlcm4gdG8gcGFyc2VcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gQVNUXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5wYXJzZSA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiBwYXJzZShpbnB1dCwgb3B0aW9ucyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGJyYWNlcyBzdHJpbmcgZnJvbSBhbiBBU1QsIG9yIGFuIEFTVCBub2RlLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGxldCBhc3QgPSBicmFjZXMucGFyc2UoJ2Zvby97YSxifS9iYXInKTtcbiAqIGNvbnNvbGUubG9nKHN0cmluZ2lmeShhc3Qubm9kZXNbMl0pKTsgLy89PiAne2EsYn0nXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIEJyYWNlIHBhdHRlcm4gb3IgQVNULlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgYW4gYXJyYXkgb2YgZXhwYW5kZWQgdmFsdWVzLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5icmFjZXMuc3RyaW5naWZ5ID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gc3RyaW5naWZ5KGJyYWNlcy5wYXJzZShpbnB1dCwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICB9XG4gIHJldHVybiBzdHJpbmdpZnkoaW5wdXQsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBDb21waWxlcyBhIGJyYWNlIHBhdHRlcm4gaW50byBhIHJlZ2V4LWNvbXBhdGlibGUsIG9wdGltaXplZCBzdHJpbmcuXG4gKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIG1haW4gW2JyYWNlc10oI2JyYWNlcykgZnVuY3Rpb24gYnkgZGVmYXVsdC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYnJhY2VzID0gcmVxdWlyZSgnYnJhY2VzJyk7XG4gKiBjb25zb2xlLmxvZyhicmFjZXMuY29tcGlsZSgnYS97YixjfS9kJykpO1xuICogLy89PiBbJ2EvKGJ8YykvZCddXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIEJyYWNlIHBhdHRlcm4gb3IgQVNULlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgYW4gYXJyYXkgb2YgZXhwYW5kZWQgdmFsdWVzLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5icmFjZXMuY29tcGlsZSA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgaW5wdXQgPSBicmFjZXMucGFyc2UoaW5wdXQsIG9wdGlvbnMpO1xuICB9XG4gIHJldHVybiBjb21waWxlKGlucHV0LCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogRXhwYW5kcyBhIGJyYWNlIHBhdHRlcm4gaW50byBhbiBhcnJheS4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZVxuICogbWFpbiBbYnJhY2VzXSgjYnJhY2VzKSBmdW5jdGlvbiB3aGVuIGBvcHRpb25zLmV4cGFuZGAgaXMgdHJ1ZS4gQmVmb3JlXG4gKiB1c2luZyB0aGlzIG1ldGhvZCBpdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IHJlYWQgdGhlIFtwZXJmb3JtYW5jZSBub3Rlc10oI3BlcmZvcm1hbmNlKSlcbiAqIGFuZCBhZHZhbnRhZ2VzIG9mIHVzaW5nIFsuY29tcGlsZV0oI2NvbXBpbGUpIGluc3RlYWQuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuICogY29uc29sZS5sb2coYnJhY2VzLmV4cGFuZCgnYS97YixjfS9kJykpO1xuICogLy89PiBbJ2EvYi9kJywgJ2EvYy9kJ107XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmAgQnJhY2UgcGF0dGVyblxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7QXJyYXl9IFJldHVybnMgYW4gYXJyYXkgb2YgZXhwYW5kZWQgdmFsdWVzLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5icmFjZXMuZXhwYW5kID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBpbnB1dCA9IGJyYWNlcy5wYXJzZShpbnB1dCwgb3B0aW9ucyk7XG4gIH1cblxuICBsZXQgcmVzdWx0ID0gZXhwYW5kKGlucHV0LCBvcHRpb25zKTtcblxuICAvLyBmaWx0ZXIgb3V0IGVtcHR5IHN0cmluZ3MgaWYgc3BlY2lmaWVkXG4gIGlmIChvcHRpb25zLm5vZW1wdHkgPT09IHRydWUpIHtcbiAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKEJvb2xlYW4pO1xuICB9XG5cbiAgLy8gZmlsdGVyIG91dCBkdXBsaWNhdGVzIGlmIHNwZWNpZmllZFxuICBpZiAob3B0aW9ucy5ub2R1cGVzID09PSB0cnVlKSB7XG4gICAgcmVzdWx0ID0gWy4uLm5ldyBTZXQocmVzdWx0KV07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBQcm9jZXNzZXMgYSBicmFjZSBwYXR0ZXJuIGFuZCByZXR1cm5zIGVpdGhlciBhbiBleHBhbmRlZCBhcnJheVxuICogKGlmIGBvcHRpb25zLmV4cGFuZGAgaXMgdHJ1ZSksIGEgaGlnaGx5IG9wdGltaXplZCByZWdleC1jb21wYXRpYmxlIHN0cmluZy5cbiAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgbWFpbiBbYnJhY2VzXSgjYnJhY2VzKSBmdW5jdGlvbi5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYnJhY2VzID0gcmVxdWlyZSgnYnJhY2VzJyk7XG4gKiBjb25zb2xlLmxvZyhicmFjZXMuY3JlYXRlKCd1c2VyLXsyMDAuLjMwMH0vcHJvamVjdC17YSxiLGN9LXsxLi4xMH0nKSlcbiAqIC8vPT4gJ3VzZXItKDIwWzAtOV18MlsxLTldWzAtOV18MzAwKS9wcm9qZWN0LShhfGJ8YyktKFsxLTldfDEwKSdcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBwYXR0ZXJuYCBCcmFjZSBwYXR0ZXJuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5jcmVhdGUgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAoaW5wdXQgPT09ICcnIHx8IGlucHV0Lmxlbmd0aCA8IDMpIHtcbiAgICByZXR1cm4gW2lucHV0XTtcbiAgfVxuXG4gcmV0dXJuIG9wdGlvbnMuZXhwYW5kICE9PSB0cnVlXG4gICAgPyBicmFjZXMuY29tcGlsZShpbnB1dCwgb3B0aW9ucylcbiAgICA6IGJyYWNlcy5leHBhbmQoaW5wdXQsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBFeHBvc2UgXCJicmFjZXNcIlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gYnJhY2VzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgV0lOX1NMQVNIID0gJ1xcXFxcXFxcLyc7XG5jb25zdCBXSU5fTk9fU0xBU0ggPSBgW14ke1dJTl9TTEFTSH1dYDtcblxuLyoqXG4gKiBQb3NpeCBnbG9iIHJlZ2V4XG4gKi9cblxuY29uc3QgRE9UX0xJVEVSQUwgPSAnXFxcXC4nO1xuY29uc3QgUExVU19MSVRFUkFMID0gJ1xcXFwrJztcbmNvbnN0IFFNQVJLX0xJVEVSQUwgPSAnXFxcXD8nO1xuY29uc3QgU0xBU0hfTElURVJBTCA9ICdcXFxcLyc7XG5jb25zdCBPTkVfQ0hBUiA9ICcoPz0uKSc7XG5jb25zdCBRTUFSSyA9ICdbXi9dJztcbmNvbnN0IEVORF9BTkNIT1IgPSBgKD86JHtTTEFTSF9MSVRFUkFMfXwkKWA7XG5jb25zdCBTVEFSVF9BTkNIT1IgPSBgKD86Xnwke1NMQVNIX0xJVEVSQUx9KWA7XG5jb25zdCBET1RTX1NMQVNIID0gYCR7RE9UX0xJVEVSQUx9ezEsMn0ke0VORF9BTkNIT1J9YDtcbmNvbnN0IE5PX0RPVCA9IGAoPyEke0RPVF9MSVRFUkFMfSlgO1xuY29uc3QgTk9fRE9UUyA9IGAoPyEke1NUQVJUX0FOQ0hPUn0ke0RPVFNfU0xBU0h9KWA7XG5jb25zdCBOT19ET1RfU0xBU0ggPSBgKD8hJHtET1RfTElURVJBTH17MCwxfSR7RU5EX0FOQ0hPUn0pYDtcbmNvbnN0IE5PX0RPVFNfU0xBU0ggPSBgKD8hJHtET1RTX1NMQVNIfSlgO1xuY29uc3QgUU1BUktfTk9fRE9UID0gYFteLiR7U0xBU0hfTElURVJBTH1dYDtcbmNvbnN0IFNUQVIgPSBgJHtRTUFSS30qP2A7XG5cbmNvbnN0IFBPU0lYX0NIQVJTID0ge1xuICBET1RfTElURVJBTCxcbiAgUExVU19MSVRFUkFMLFxuICBRTUFSS19MSVRFUkFMLFxuICBTTEFTSF9MSVRFUkFMLFxuICBPTkVfQ0hBUixcbiAgUU1BUkssXG4gIEVORF9BTkNIT1IsXG4gIERPVFNfU0xBU0gsXG4gIE5PX0RPVCxcbiAgTk9fRE9UUyxcbiAgTk9fRE9UX1NMQVNILFxuICBOT19ET1RTX1NMQVNILFxuICBRTUFSS19OT19ET1QsXG4gIFNUQVIsXG4gIFNUQVJUX0FOQ0hPUlxufTtcblxuLyoqXG4gKiBXaW5kb3dzIGdsb2IgcmVnZXhcbiAqL1xuXG5jb25zdCBXSU5ET1dTX0NIQVJTID0ge1xuICAuLi5QT1NJWF9DSEFSUyxcblxuICBTTEFTSF9MSVRFUkFMOiBgWyR7V0lOX1NMQVNIfV1gLFxuICBRTUFSSzogV0lOX05PX1NMQVNILFxuICBTVEFSOiBgJHtXSU5fTk9fU0xBU0h9Kj9gLFxuICBET1RTX1NMQVNIOiBgJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpYCxcbiAgTk9fRE9UOiBgKD8hJHtET1RfTElURVJBTH0pYCxcbiAgTk9fRE9UUzogYCg/ISg/Ol58WyR7V0lOX1NMQVNIfV0pJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIE5PX0RPVF9TTEFTSDogYCg/ISR7RE9UX0xJVEVSQUx9ezAsMX0oPzpbJHtXSU5fU0xBU0h9XXwkKSlgLFxuICBOT19ET1RTX1NMQVNIOiBgKD8hJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIFFNQVJLX05PX0RPVDogYFteLiR7V0lOX1NMQVNIfV1gLFxuICBTVEFSVF9BTkNIT1I6IGAoPzpefFske1dJTl9TTEFTSH1dKWAsXG4gIEVORF9BTkNIT1I6IGAoPzpbJHtXSU5fU0xBU0h9XXwkKWBcbn07XG5cbi8qKlxuICogUE9TSVggQnJhY2tldCBSZWdleFxuICovXG5cbmNvbnN0IFBPU0lYX1JFR0VYX1NPVVJDRSA9IHtcbiAgYWxudW06ICdhLXpBLVowLTknLFxuICBhbHBoYTogJ2EtekEtWicsXG4gIGFzY2lpOiAnXFxcXHgwMC1cXFxceDdGJyxcbiAgYmxhbms6ICcgXFxcXHQnLFxuICBjbnRybDogJ1xcXFx4MDAtXFxcXHgxRlxcXFx4N0YnLFxuICBkaWdpdDogJzAtOScsXG4gIGdyYXBoOiAnXFxcXHgyMS1cXFxceDdFJyxcbiAgbG93ZXI6ICdhLXonLFxuICBwcmludDogJ1xcXFx4MjAtXFxcXHg3RSAnLFxuICBwdW5jdDogJ1xcXFwtIVwiIyQlJlxcJygpXFxcXCorLC4vOjs8PT4/QFtcXFxcXV5fYHt8fX4nLFxuICBzcGFjZTogJyBcXFxcdFxcXFxyXFxcXG5cXFxcdlxcXFxmJyxcbiAgdXBwZXI6ICdBLVonLFxuICB3b3JkOiAnQS1aYS16MC05XycsXG4gIHhkaWdpdDogJ0EtRmEtZjAtOSdcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBNQVhfTEVOR1RIOiAxMDI0ICogNjQsXG4gIFBPU0lYX1JFR0VYX1NPVVJDRSxcblxuICAvLyByZWd1bGFyIGV4cHJlc3Npb25zXG4gIFJFR0VYX0JBQ0tTTEFTSDogL1xcXFwoPyFbKis/XiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUzogL15bXkAhW1xcXS4sJCorP157fSgpfFxcXFwvXSsvLFxuICBSRUdFWF9TUEVDSUFMX0NIQVJTOiAvWy0qKz8uXiR7fSh8KVtcXF1dLyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGOiAvKFxcXFw/KSgoXFxXKShcXDMqKSkvZyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUw6IC8oWy0qKz8uXiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9SRU1PVkVfQkFDS1NMQVNIOiAvKD86XFxbLio/W15cXFxcXVxcXXxcXFxcKD89LikpL2csXG5cbiAgLy8gUmVwbGFjZSBnbG9icyB3aXRoIGVxdWl2YWxlbnQgcGF0dGVybnMgdG8gcmVkdWNlIHBhcnNpbmcgdGltZS5cbiAgUkVQTEFDRU1FTlRTOiB7XG4gICAgJyoqKic6ICcqJyxcbiAgICAnKiovKionOiAnKionLFxuICAgICcqKi8qKi8qKic6ICcqKidcbiAgfSxcblxuICAvLyBEaWdpdHNcbiAgQ0hBUl8wOiA0OCwgLyogMCAqL1xuICBDSEFSXzk6IDU3LCAvKiA5ICovXG5cbiAgLy8gQWxwaGFiZXQgY2hhcnMuXG4gIENIQVJfVVBQRVJDQVNFX0E6IDY1LCAvKiBBICovXG4gIENIQVJfTE9XRVJDQVNFX0E6IDk3LCAvKiBhICovXG4gIENIQVJfVVBQRVJDQVNFX1o6IDkwLCAvKiBaICovXG4gIENIQVJfTE9XRVJDQVNFX1o6IDEyMiwgLyogeiAqL1xuXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUzogNDAsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUzogNDEsIC8qICkgKi9cblxuICBDSEFSX0FTVEVSSVNLOiA0MiwgLyogKiAqL1xuXG4gIC8vIE5vbi1hbHBoYWJldGljIGNoYXJzLlxuICBDSEFSX0FNUEVSU0FORDogMzgsIC8qICYgKi9cbiAgQ0hBUl9BVDogNjQsIC8qIEAgKi9cbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSDogOTIsIC8qIFxcICovXG4gIENIQVJfQ0FSUklBR0VfUkVUVVJOOiAxMywgLyogXFxyICovXG4gIENIQVJfQ0lSQ1VNRkxFWF9BQ0NFTlQ6IDk0LCAvKiBeICovXG4gIENIQVJfQ09MT046IDU4LCAvKiA6ICovXG4gIENIQVJfQ09NTUE6IDQ0LCAvKiAsICovXG4gIENIQVJfRE9UOiA0NiwgLyogLiAqL1xuICBDSEFSX0RPVUJMRV9RVU9URTogMzQsIC8qIFwiICovXG4gIENIQVJfRVFVQUw6IDYxLCAvKiA9ICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSzogMzMsIC8qICEgKi9cbiAgQ0hBUl9GT1JNX0ZFRUQ6IDEyLCAvKiBcXGYgKi9cbiAgQ0hBUl9GT1JXQVJEX1NMQVNIOiA0NywgLyogLyAqL1xuICBDSEFSX0dSQVZFX0FDQ0VOVDogOTYsIC8qIGAgKi9cbiAgQ0hBUl9IQVNIOiAzNSwgLyogIyAqL1xuICBDSEFSX0hZUEhFTl9NSU5VUzogNDUsIC8qIC0gKi9cbiAgQ0hBUl9MRUZUX0FOR0xFX0JSQUNLRVQ6IDYwLCAvKiA8ICovXG4gIENIQVJfTEVGVF9DVVJMWV9CUkFDRTogMTIzLCAvKiB7ICovXG4gIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVDogOTEsIC8qIFsgKi9cbiAgQ0hBUl9MSU5FX0ZFRUQ6IDEwLCAvKiBcXG4gKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRTogMTYwLCAvKiBcXHUwMEEwICovXG4gIENIQVJfUEVSQ0VOVDogMzcsIC8qICUgKi9cbiAgQ0hBUl9QTFVTOiA0MywgLyogKyAqL1xuICBDSEFSX1FVRVNUSU9OX01BUks6IDYzLCAvKiA/ICovXG4gIENIQVJfUklHSFRfQU5HTEVfQlJBQ0tFVDogNjIsIC8qID4gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRTogMTI1LCAvKiB9ICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQ6IDkzLCAvKiBdICovXG4gIENIQVJfU0VNSUNPTE9OOiA1OSwgLyogOyAqL1xuICBDSEFSX1NJTkdMRV9RVU9URTogMzksIC8qICcgKi9cbiAgQ0hBUl9TUEFDRTogMzIsIC8qICAgKi9cbiAgQ0hBUl9UQUI6IDksIC8qIFxcdCAqL1xuICBDSEFSX1VOREVSU0NPUkU6IDk1LCAvKiBfICovXG4gIENIQVJfVkVSVElDQUxfTElORTogMTI0LCAvKiB8ICovXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFOiA2NTI3OSwgLyogXFx1RkVGRiAqL1xuXG4gIFNFUDogcGF0aC5zZXAsXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBFWFRHTE9CX0NIQVJTXG4gICAqL1xuXG4gIGV4dGdsb2JDaGFycyhjaGFycykge1xuICAgIHJldHVybiB7XG4gICAgICAnISc6IHsgdHlwZTogJ25lZ2F0ZScsIG9wZW46ICcoPzooPyEoPzonLCBjbG9zZTogYCkpJHtjaGFycy5TVEFSfSlgIH0sXG4gICAgICAnPyc6IHsgdHlwZTogJ3FtYXJrJywgb3BlbjogJyg/OicsIGNsb3NlOiAnKT8nIH0sXG4gICAgICAnKyc6IHsgdHlwZTogJ3BsdXMnLCBvcGVuOiAnKD86JywgY2xvc2U6ICcpKycgfSxcbiAgICAgICcqJzogeyB0eXBlOiAnc3RhcicsIG9wZW46ICcoPzonLCBjbG9zZTogJykqJyB9LFxuICAgICAgJ0AnOiB7IHR5cGU6ICdhdCcsIG9wZW46ICcoPzonLCBjbG9zZTogJyknIH1cbiAgICB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgR0xPQl9DSEFSU1xuICAgKi9cblxuICBnbG9iQ2hhcnMod2luMzIpIHtcbiAgICByZXR1cm4gd2luMzIgPT09IHRydWUgPyBXSU5ET1dTX0NIQVJTIDogUE9TSVhfQ0hBUlM7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCB3aW4zMiA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5jb25zdCB7XG4gIFJFR0VYX0JBQ0tTTEFTSCxcbiAgUkVHRVhfUkVNT1ZFX0JBQ0tTTEFTSCxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSUyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUxcbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG5leHBvcnRzLmlzT2JqZWN0ID0gdmFsID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuZXhwb3J0cy5oYXNSZWdleENoYXJzID0gc3RyID0+IFJFR0VYX1NQRUNJQUxfQ0hBUlMudGVzdChzdHIpO1xuZXhwb3J0cy5pc1JlZ2V4Q2hhciA9IHN0ciA9PiBzdHIubGVuZ3RoID09PSAxICYmIGV4cG9ydHMuaGFzUmVnZXhDaGFycyhzdHIpO1xuZXhwb3J0cy5lc2NhcGVSZWdleCA9IHN0ciA9PiBzdHIucmVwbGFjZShSRUdFWF9TUEVDSUFMX0NIQVJTX0dMT0JBTCwgJ1xcXFwkMScpO1xuZXhwb3J0cy50b1Bvc2l4U2xhc2hlcyA9IHN0ciA9PiBzdHIucmVwbGFjZShSRUdFWF9CQUNLU0xBU0gsICcvJyk7XG5cbmV4cG9ydHMucmVtb3ZlQmFja3NsYXNoZXMgPSBzdHIgPT4ge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoUkVHRVhfUkVNT1ZFX0JBQ0tTTEFTSCwgbWF0Y2ggPT4ge1xuICAgIHJldHVybiBtYXRjaCA9PT0gJ1xcXFwnID8gJycgOiBtYXRjaDtcbiAgfSk7XG59O1xuXG5leHBvcnRzLnN1cHBvcnRzTG9va2JlaGluZHMgPSAoKSA9PiB7XG4gIGNvbnN0IHNlZ3MgPSBwcm9jZXNzLnZlcnNpb24uc2xpY2UoMSkuc3BsaXQoJy4nKS5tYXAoTnVtYmVyKTtcbiAgaWYgKHNlZ3MubGVuZ3RoID09PSAzICYmIHNlZ3NbMF0gPj0gOSB8fCAoc2Vnc1swXSA9PT0gOCAmJiBzZWdzWzFdID49IDEwKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydHMuaXNXaW5kb3dzID0gb3B0aW9ucyA9PiB7XG4gIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLndpbmRvd3MgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBvcHRpb25zLndpbmRvd3M7XG4gIH1cbiAgcmV0dXJuIHdpbjMyID09PSB0cnVlIHx8IHBhdGguc2VwID09PSAnXFxcXCc7XG59O1xuXG5leHBvcnRzLmVzY2FwZUxhc3QgPSAoaW5wdXQsIGNoYXIsIGxhc3RJZHgpID0+IHtcbiAgY29uc3QgaWR4ID0gaW5wdXQubGFzdEluZGV4T2YoY2hhciwgbGFzdElkeCk7XG4gIGlmIChpZHggPT09IC0xKSByZXR1cm4gaW5wdXQ7XG4gIGlmIChpbnB1dFtpZHggLSAxXSA9PT0gJ1xcXFwnKSByZXR1cm4gZXhwb3J0cy5lc2NhcGVMYXN0KGlucHV0LCBjaGFyLCBpZHggLSAxKTtcbiAgcmV0dXJuIGAke2lucHV0LnNsaWNlKDAsIGlkeCl9XFxcXCR7aW5wdXQuc2xpY2UoaWR4KX1gO1xufTtcblxuZXhwb3J0cy5yZW1vdmVQcmVmaXggPSAoaW5wdXQsIHN0YXRlID0ge30pID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0O1xuICBpZiAob3V0cHV0LnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICBvdXRwdXQgPSBvdXRwdXQuc2xpY2UoMik7XG4gICAgc3RhdGUucHJlZml4ID0gJy4vJztcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuZXhwb3J0cy53cmFwT3V0cHV0ID0gKGlucHV0LCBzdGF0ZSA9IHt9LCBvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3QgcHJlcGVuZCA9IG9wdGlvbnMuY29udGFpbnMgPyAnJyA6ICdeJztcbiAgY29uc3QgYXBwZW5kID0gb3B0aW9ucy5jb250YWlucyA/ICcnIDogJyQnO1xuXG4gIGxldCBvdXRwdXQgPSBgJHtwcmVwZW5kfSg/OiR7aW5wdXR9KSR7YXBwZW5kfWA7XG4gIGlmIChzdGF0ZS5uZWdhdGVkID09PSB0cnVlKSB7XG4gICAgb3V0cHV0ID0gYCg/Ol4oPyEke291dHB1dH0pLiokKWA7XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3Qge1xuICBDSEFSX0FTVEVSSVNLLCAgICAgICAgICAgICAvKiAqICovXG4gIENIQVJfQVQsICAgICAgICAgICAgICAgICAgIC8qIEAgKi9cbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSCwgICAgICAgLyogXFwgKi9cbiAgQ0hBUl9DT01NQSwgICAgICAgICAgICAgICAgLyogLCAqL1xuICBDSEFSX0RPVCwgICAgICAgICAgICAgICAgICAvKiAuICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSywgICAgIC8qICEgKi9cbiAgQ0hBUl9GT1JXQVJEX1NMQVNILCAgICAgICAgLyogLyAqL1xuICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UsICAgICAvKiB7ICovXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUywgICAgIC8qICggKi9cbiAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VULCAgLyogWyAqL1xuICBDSEFSX1BMVVMsICAgICAgICAgICAgICAgICAvKiArICovXG4gIENIQVJfUVVFU1RJT05fTUFSSywgICAgICAgIC8qID8gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSwgICAgLyogfSAqL1xuICBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTLCAgICAvKiApICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgIC8qIF0gKi9cbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG5jb25zdCBpc1BhdGhTZXBhcmF0b3IgPSBjb2RlID0+IHtcbiAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCB8fCBjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIO1xufTtcblxuY29uc3QgZGVwdGggPSB0b2tlbiA9PiB7XG4gIGlmICh0b2tlbi5pc1ByZWZpeCAhPT0gdHJ1ZSkge1xuICAgIHRva2VuLmRlcHRoID0gdG9rZW4uaXNHbG9ic3RhciA/IEluZmluaXR5IDogMTtcbiAgfVxufTtcblxuLyoqXG4gKiBRdWlja2x5IHNjYW5zIGEgZ2xvYiBwYXR0ZXJuIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgaGFuZGZ1bCBvZlxuICogdXNlZnVsIHByb3BlcnRpZXMsIGxpa2UgYGlzR2xvYmAsIGBwYXRoYCAodGhlIGxlYWRpbmcgbm9uLWdsb2IsIGlmIGl0IGV4aXN0cyksXG4gKiBgZ2xvYmAgKHRoZSBhY3R1YWwgcGF0dGVybiksIGBuZWdhdGVkYCAodHJ1ZSBpZiB0aGUgcGF0aCBzdGFydHMgd2l0aCBgIWAgYnV0IG5vdFxuICogd2l0aCBgIShgKSBhbmQgYG5lZ2F0ZWRFeHRnbG9iYCAodHJ1ZSBpZiB0aGUgcGF0aCBzdGFydHMgd2l0aCBgIShgKS5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcG0gPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIGNvbnNvbGUubG9nKHBtLnNjYW4oJ2Zvby9iYXIvKi5qcycpKTtcbiAqIHsgaXNHbG9iOiB0cnVlLCBpbnB1dDogJ2Zvby9iYXIvKi5qcycsIGJhc2U6ICdmb28vYmFyJywgZ2xvYjogJyouanMnIH1cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggdG9rZW5zIGFuZCByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5jb25zdCBzY2FuID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGNvbnN0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aCAtIDE7XG4gIGNvbnN0IHNjYW5Ub0VuZCA9IG9wdHMucGFydHMgPT09IHRydWUgfHwgb3B0cy5zY2FuVG9FbmQgPT09IHRydWU7XG4gIGNvbnN0IHNsYXNoZXMgPSBbXTtcbiAgY29uc3QgdG9rZW5zID0gW107XG4gIGNvbnN0IHBhcnRzID0gW107XG5cbiAgbGV0IHN0ciA9IGlucHV0O1xuICBsZXQgaW5kZXggPSAtMTtcbiAgbGV0IHN0YXJ0ID0gMDtcbiAgbGV0IGxhc3RJbmRleCA9IDA7XG4gIGxldCBpc0JyYWNlID0gZmFsc2U7XG4gIGxldCBpc0JyYWNrZXQgPSBmYWxzZTtcbiAgbGV0IGlzR2xvYiA9IGZhbHNlO1xuICBsZXQgaXNFeHRnbG9iID0gZmFsc2U7XG4gIGxldCBpc0dsb2JzdGFyID0gZmFsc2U7XG4gIGxldCBicmFjZUVzY2FwZWQgPSBmYWxzZTtcbiAgbGV0IGJhY2tzbGFzaGVzID0gZmFsc2U7XG4gIGxldCBuZWdhdGVkID0gZmFsc2U7XG4gIGxldCBuZWdhdGVkRXh0Z2xvYiA9IGZhbHNlO1xuICBsZXQgZmluaXNoZWQgPSBmYWxzZTtcbiAgbGV0IGJyYWNlcyA9IDA7XG4gIGxldCBwcmV2O1xuICBsZXQgY29kZTtcbiAgbGV0IHRva2VuID0geyB2YWx1ZTogJycsIGRlcHRoOiAwLCBpc0dsb2I6IGZhbHNlIH07XG5cbiAgY29uc3QgZW9zID0gKCkgPT4gaW5kZXggPj0gbGVuZ3RoO1xuICBjb25zdCBwZWVrID0gKCkgPT4gc3RyLmNoYXJDb2RlQXQoaW5kZXggKyAxKTtcbiAgY29uc3QgYWR2YW5jZSA9ICgpID0+IHtcbiAgICBwcmV2ID0gY29kZTtcbiAgICByZXR1cm4gc3RyLmNoYXJDb2RlQXQoKytpbmRleCk7XG4gIH07XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY29kZSA9IGFkdmFuY2UoKTtcbiAgICBsZXQgbmV4dDtcblxuICAgIGlmIChjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgIGNvZGUgPSBhZHZhbmNlKCk7XG5cbiAgICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgICAgYnJhY2VFc2NhcGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChicmFjZUVzY2FwZWQgPT09IHRydWUgfHwgY29kZSA9PT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNFKSB7XG4gICAgICBicmFjZXMrKztcblxuICAgICAgd2hpbGUgKGVvcygpICE9PSB0cnVlICYmIChjb2RlID0gYWR2YW5jZSgpKSkge1xuICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICAgIGFkdmFuY2UoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgICAgICBicmFjZXMrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChicmFjZUVzY2FwZWQgIT09IHRydWUgJiYgY29kZSA9PT0gQ0hBUl9ET1QgJiYgKGNvZGUgPSBhZHZhbmNlKCkpID09PSBDSEFSX0RPVCkge1xuICAgICAgICAgIGlzQnJhY2UgPSB0b2tlbi5pc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJyYWNlRXNjYXBlZCAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0NPTU1BKSB7XG4gICAgICAgICAgaXNCcmFjZSA9IHRva2VuLmlzQnJhY2UgPSB0cnVlO1xuICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSkge1xuICAgICAgICAgIGJyYWNlcy0tO1xuXG4gICAgICAgICAgaWYgKGJyYWNlcyA9PT0gMCkge1xuICAgICAgICAgICAgYnJhY2VFc2NhcGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpc0JyYWNlID0gdG9rZW4uaXNCcmFjZSA9IHRydWU7XG4gICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgc2xhc2hlcy5wdXNoKGluZGV4KTtcbiAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcbiAgICAgIHRva2VuID0geyB2YWx1ZTogJycsIGRlcHRoOiAwLCBpc0dsb2I6IGZhbHNlIH07XG5cbiAgICAgIGlmIChmaW5pc2hlZCA9PT0gdHJ1ZSkgY29udGludWU7XG4gICAgICBpZiAocHJldiA9PT0gQ0hBUl9ET1QgJiYgaW5kZXggPT09IChzdGFydCArIDEpKSB7XG4gICAgICAgIHN0YXJ0ICs9IDI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5ub2V4dCAhPT0gdHJ1ZSkge1xuICAgICAgY29uc3QgaXNFeHRnbG9iQ2hhciA9IGNvZGUgPT09IENIQVJfUExVU1xuICAgICAgICB8fCBjb2RlID09PSBDSEFSX0FUXG4gICAgICAgIHx8IGNvZGUgPT09IENIQVJfQVNURVJJU0tcbiAgICAgICAgfHwgY29kZSA9PT0gQ0hBUl9RVUVTVElPTl9NQVJLXG4gICAgICAgIHx8IGNvZGUgPT09IENIQVJfRVhDTEFNQVRJT05fTUFSSztcblxuICAgICAgaWYgKGlzRXh0Z2xvYkNoYXIgPT09IHRydWUgJiYgcGVlaygpID09PSBDSEFSX0xFRlRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgaXNFeHRnbG9iID0gdG9rZW4uaXNFeHRnbG9iID0gdHJ1ZTtcbiAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9FWENMQU1BVElPTl9NQVJLICYmIGluZGV4ID09PSBzdGFydCkge1xuICAgICAgICAgIG5lZ2F0ZWRFeHRnbG9iID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKGNvZGUgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29kZSA9IGFkdmFuY2UoKTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTKSB7XG4gICAgICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBDSEFSX0FTVEVSSVNLKSB7XG4gICAgICBpZiAocHJldiA9PT0gQ0hBUl9BU1RFUklTSykgaXNHbG9ic3RhciA9IHRva2VuLmlzR2xvYnN0YXIgPSB0cnVlO1xuICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBDSEFSX1FVRVNUSU9OX01BUkspIHtcbiAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKG5leHQgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgIGlmIChuZXh0ID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgICAgYmFja3NsYXNoZXMgPSB0b2tlbi5iYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgICAgYWR2YW5jZSgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgICAgICBpc0JyYWNrZXQgPSB0b2tlbi5pc0JyYWNrZXQgPSB0cnVlO1xuICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChvcHRzLm5vbmVnYXRlICE9PSB0cnVlICYmIGNvZGUgPT09IENIQVJfRVhDTEFNQVRJT05fTUFSSyAmJiBpbmRleCA9PT0gc3RhcnQpIHtcbiAgICAgIG5lZ2F0ZWQgPSB0b2tlbi5uZWdhdGVkID0gdHJ1ZTtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAob3B0cy5ub3BhcmVuICE9PSB0cnVlICYmIGNvZGUgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKGNvZGUgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgICAgICAgYmFja3NsYXNoZXMgPSB0b2tlbi5iYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgICAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfUklHSFRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChpc0dsb2IgPT09IHRydWUpIHtcbiAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMubm9leHQgPT09IHRydWUpIHtcbiAgICBpc0V4dGdsb2IgPSBmYWxzZTtcbiAgICBpc0dsb2IgPSBmYWxzZTtcbiAgfVxuXG4gIGxldCBiYXNlID0gc3RyO1xuICBsZXQgcHJlZml4ID0gJyc7XG4gIGxldCBnbG9iID0gJyc7XG5cbiAgaWYgKHN0YXJ0ID4gMCkge1xuICAgIHByZWZpeCA9IHN0ci5zbGljZSgwLCBzdGFydCk7XG4gICAgc3RyID0gc3RyLnNsaWNlKHN0YXJ0KTtcbiAgICBsYXN0SW5kZXggLT0gc3RhcnQ7XG4gIH1cblxuICBpZiAoYmFzZSAmJiBpc0dsb2IgPT09IHRydWUgJiYgbGFzdEluZGV4ID4gMCkge1xuICAgIGJhc2UgPSBzdHIuc2xpY2UoMCwgbGFzdEluZGV4KTtcbiAgICBnbG9iID0gc3RyLnNsaWNlKGxhc3RJbmRleCk7XG4gIH0gZWxzZSBpZiAoaXNHbG9iID09PSB0cnVlKSB7XG4gICAgYmFzZSA9ICcnO1xuICAgIGdsb2IgPSBzdHI7XG4gIH0gZWxzZSB7XG4gICAgYmFzZSA9IHN0cjtcbiAgfVxuXG4gIGlmIChiYXNlICYmIGJhc2UgIT09ICcnICYmIGJhc2UgIT09ICcvJyAmJiBiYXNlICE9PSBzdHIpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGJhc2UuY2hhckNvZGVBdChiYXNlLmxlbmd0aCAtIDEpKSkge1xuICAgICAgYmFzZSA9IGJhc2Uuc2xpY2UoMCwgLTEpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLnVuZXNjYXBlID09PSB0cnVlKSB7XG4gICAgaWYgKGdsb2IpIGdsb2IgPSB1dGlscy5yZW1vdmVCYWNrc2xhc2hlcyhnbG9iKTtcblxuICAgIGlmIChiYXNlICYmIGJhY2tzbGFzaGVzID09PSB0cnVlKSB7XG4gICAgICBiYXNlID0gdXRpbHMucmVtb3ZlQmFja3NsYXNoZXMoYmFzZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RhdGUgPSB7XG4gICAgcHJlZml4LFxuICAgIGlucHV0LFxuICAgIHN0YXJ0LFxuICAgIGJhc2UsXG4gICAgZ2xvYixcbiAgICBpc0JyYWNlLFxuICAgIGlzQnJhY2tldCxcbiAgICBpc0dsb2IsXG4gICAgaXNFeHRnbG9iLFxuICAgIGlzR2xvYnN0YXIsXG4gICAgbmVnYXRlZCxcbiAgICBuZWdhdGVkRXh0Z2xvYlxuICB9O1xuXG4gIGlmIChvcHRzLnRva2VucyA9PT0gdHJ1ZSkge1xuICAgIHN0YXRlLm1heERlcHRoID0gMDtcbiAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgdG9rZW5zLnB1c2godG9rZW4pO1xuICAgIH1cbiAgICBzdGF0ZS50b2tlbnMgPSB0b2tlbnM7XG4gIH1cblxuICBpZiAob3B0cy5wYXJ0cyA9PT0gdHJ1ZSB8fCBvcHRzLnRva2VucyA9PT0gdHJ1ZSkge1xuICAgIGxldCBwcmV2SW5kZXg7XG5cbiAgICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBzbGFzaGVzLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgIGNvbnN0IG4gPSBwcmV2SW5kZXggPyBwcmV2SW5kZXggKyAxIDogc3RhcnQ7XG4gICAgICBjb25zdCBpID0gc2xhc2hlc1tpZHhdO1xuICAgICAgY29uc3QgdmFsdWUgPSBpbnB1dC5zbGljZShuLCBpKTtcbiAgICAgIGlmIChvcHRzLnRva2Vucykge1xuICAgICAgICBpZiAoaWR4ID09PSAwICYmIHN0YXJ0ICE9PSAwKSB7XG4gICAgICAgICAgdG9rZW5zW2lkeF0uaXNQcmVmaXggPSB0cnVlO1xuICAgICAgICAgIHRva2Vuc1tpZHhdLnZhbHVlID0gcHJlZml4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRva2Vuc1tpZHhdLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZGVwdGgodG9rZW5zW2lkeF0pO1xuICAgICAgICBzdGF0ZS5tYXhEZXB0aCArPSB0b2tlbnNbaWR4XS5kZXB0aDtcbiAgICAgIH1cbiAgICAgIGlmIChpZHggIT09IDAgfHwgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIHBhcnRzLnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgICAgcHJldkluZGV4ID0gaTtcbiAgICB9XG5cbiAgICBpZiAocHJldkluZGV4ICYmIHByZXZJbmRleCArIDEgPCBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQuc2xpY2UocHJldkluZGV4ICsgMSk7XG4gICAgICBwYXJ0cy5wdXNoKHZhbHVlKTtcblxuICAgICAgaWYgKG9wdHMudG9rZW5zKSB7XG4gICAgICAgIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgZGVwdGgodG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXSk7XG4gICAgICAgIHN0YXRlLm1heERlcHRoICs9IHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0uZGVwdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGUuc2xhc2hlcyA9IHNsYXNoZXM7XG4gICAgc3RhdGUucGFydHMgPSBwYXJ0cztcbiAgfVxuXG4gIHJldHVybiBzdGF0ZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gc2NhbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IHtcbiAgTUFYX0xFTkdUSCxcbiAgUE9TSVhfUkVHRVhfU09VUkNFLFxuICBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGLFxuICBSRVBMQUNFTUVOVFNcbn0gPSBjb25zdGFudHM7XG5cbi8qKlxuICogSGVscGVyc1xuICovXG5cbmNvbnN0IGV4cGFuZFJhbmdlID0gKGFyZ3MsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zLmV4cGFuZFJhbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuZXhwYW5kUmFuZ2UoLi4uYXJncywgb3B0aW9ucyk7XG4gIH1cblxuICBhcmdzLnNvcnQoKTtcbiAgY29uc3QgdmFsdWUgPSBgWyR7YXJncy5qb2luKCctJyl9XWA7XG5cbiAgdHJ5IHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3ICovXG4gICAgbmV3IFJlZ0V4cCh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmV0dXJuIGFyZ3MubWFwKHYgPT4gdXRpbHMuZXNjYXBlUmVnZXgodikpLmpvaW4oJy4uJyk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgbWVzc2FnZSBmb3IgYSBzeW50YXggZXJyb3JcbiAqL1xuXG5jb25zdCBzeW50YXhFcnJvciA9ICh0eXBlLCBjaGFyKSA9PiB7XG4gIHJldHVybiBgTWlzc2luZyAke3R5cGV9OiBcIiR7Y2hhcn1cIiAtIHVzZSBcIlxcXFxcXFxcJHtjaGFyfVwiIHRvIG1hdGNoIGxpdGVyYWwgY2hhcmFjdGVyc2A7XG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBpbnB1dCBzdHJpbmcuXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cblxuY29uc3QgcGFyc2UgPSAoaW5wdXQsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIHN0cmluZycpO1xuICB9XG5cbiAgaW5wdXQgPSBSRVBMQUNFTUVOVFNbaW5wdXRdIHx8IGlucHV0O1xuXG4gIGNvbnN0IG9wdHMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgY29uc3QgbWF4ID0gdHlwZW9mIG9wdHMubWF4TGVuZ3RoID09PSAnbnVtYmVyJyA/IE1hdGgubWluKE1BWF9MRU5HVEgsIG9wdHMubWF4TGVuZ3RoKSA6IE1BWF9MRU5HVEg7XG5cbiAgbGV0IGxlbiA9IGlucHV0Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IG1heCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW5wdXQgbGVuZ3RoOiAke2xlbn0sIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIGxlbmd0aDogJHttYXh9YCk7XG4gIH1cblxuICBjb25zdCBib3MgPSB7IHR5cGU6ICdib3MnLCB2YWx1ZTogJycsIG91dHB1dDogb3B0cy5wcmVwZW5kIHx8ICcnIH07XG4gIGNvbnN0IHRva2VucyA9IFtib3NdO1xuXG4gIGNvbnN0IGNhcHR1cmUgPSBvcHRzLmNhcHR1cmUgPyAnJyA6ICc/Oic7XG4gIGNvbnN0IHdpbjMyID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuXG4gIC8vIGNyZWF0ZSBjb25zdGFudHMgYmFzZWQgb24gcGxhdGZvcm0sIGZvciB3aW5kb3dzIG9yIHBvc2l4XG4gIGNvbnN0IFBMQVRGT1JNX0NIQVJTID0gY29uc3RhbnRzLmdsb2JDaGFycyh3aW4zMik7XG4gIGNvbnN0IEVYVEdMT0JfQ0hBUlMgPSBjb25zdGFudHMuZXh0Z2xvYkNoYXJzKFBMQVRGT1JNX0NIQVJTKTtcblxuICBjb25zdCB7XG4gICAgRE9UX0xJVEVSQUwsXG4gICAgUExVU19MSVRFUkFMLFxuICAgIFNMQVNIX0xJVEVSQUwsXG4gICAgT05FX0NIQVIsXG4gICAgRE9UU19TTEFTSCxcbiAgICBOT19ET1QsXG4gICAgTk9fRE9UX1NMQVNILFxuICAgIE5PX0RPVFNfU0xBU0gsXG4gICAgUU1BUkssXG4gICAgUU1BUktfTk9fRE9ULFxuICAgIFNUQVIsXG4gICAgU1RBUlRfQU5DSE9SXG4gIH0gPSBQTEFURk9STV9DSEFSUztcblxuICBjb25zdCBnbG9ic3RhciA9IG9wdHMgPT4ge1xuICAgIHJldHVybiBgKCR7Y2FwdHVyZX0oPzooPyEke1NUQVJUX0FOQ0hPUn0ke29wdHMuZG90ID8gRE9UU19TTEFTSCA6IERPVF9MSVRFUkFMfSkuKSo/KWA7XG4gIH07XG5cbiAgY29uc3Qgbm9kb3QgPSBvcHRzLmRvdCA/ICcnIDogTk9fRE9UO1xuICBjb25zdCBxbWFya05vRG90ID0gb3B0cy5kb3QgPyBRTUFSSyA6IFFNQVJLX05PX0RPVDtcbiAgbGV0IHN0YXIgPSBvcHRzLmJhc2ggPT09IHRydWUgPyBnbG9ic3RhcihvcHRzKSA6IFNUQVI7XG5cbiAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgIHN0YXIgPSBgKCR7c3Rhcn0pYDtcbiAgfVxuXG4gIC8vIG1pbmltYXRjaCBvcHRpb25zIHN1cHBvcnRcbiAgaWYgKHR5cGVvZiBvcHRzLm5vZXh0ID09PSAnYm9vbGVhbicpIHtcbiAgICBvcHRzLm5vZXh0Z2xvYiA9IG9wdHMubm9leHQ7XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICBpbnB1dCxcbiAgICBpbmRleDogLTEsXG4gICAgc3RhcnQ6IDAsXG4gICAgZG90OiBvcHRzLmRvdCA9PT0gdHJ1ZSxcbiAgICBjb25zdW1lZDogJycsXG4gICAgb3V0cHV0OiAnJyxcbiAgICBwcmVmaXg6ICcnLFxuICAgIGJhY2t0cmFjazogZmFsc2UsXG4gICAgbmVnYXRlZDogZmFsc2UsXG4gICAgYnJhY2tldHM6IDAsXG4gICAgYnJhY2VzOiAwLFxuICAgIHBhcmVuczogMCxcbiAgICBxdW90ZXM6IDAsXG4gICAgZ2xvYnN0YXI6IGZhbHNlLFxuICAgIHRva2Vuc1xuICB9O1xuXG4gIGlucHV0ID0gdXRpbHMucmVtb3ZlUHJlZml4KGlucHV0LCBzdGF0ZSk7XG4gIGxlbiA9IGlucHV0Lmxlbmd0aDtcblxuICBjb25zdCBleHRnbG9icyA9IFtdO1xuICBjb25zdCBicmFjZXMgPSBbXTtcbiAgY29uc3Qgc3RhY2sgPSBbXTtcbiAgbGV0IHByZXYgPSBib3M7XG4gIGxldCB2YWx1ZTtcblxuICAvKipcbiAgICogVG9rZW5pemluZyBoZWxwZXJzXG4gICAqL1xuXG4gIGNvbnN0IGVvcyA9ICgpID0+IHN0YXRlLmluZGV4ID09PSBsZW4gLSAxO1xuICBjb25zdCBwZWVrID0gc3RhdGUucGVlayA9IChuID0gMSkgPT4gaW5wdXRbc3RhdGUuaW5kZXggKyBuXTtcbiAgY29uc3QgYWR2YW5jZSA9IHN0YXRlLmFkdmFuY2UgPSAoKSA9PiBpbnB1dFsrK3N0YXRlLmluZGV4XSB8fCAnJztcbiAgY29uc3QgcmVtYWluaW5nID0gKCkgPT4gaW5wdXQuc2xpY2Uoc3RhdGUuaW5kZXggKyAxKTtcbiAgY29uc3QgY29uc3VtZSA9ICh2YWx1ZSA9ICcnLCBudW0gPSAwKSA9PiB7XG4gICAgc3RhdGUuY29uc3VtZWQgKz0gdmFsdWU7XG4gICAgc3RhdGUuaW5kZXggKz0gbnVtO1xuICB9O1xuXG4gIGNvbnN0IGFwcGVuZCA9IHRva2VuID0+IHtcbiAgICBzdGF0ZS5vdXRwdXQgKz0gdG9rZW4ub3V0cHV0ICE9IG51bGwgPyB0b2tlbi5vdXRwdXQgOiB0b2tlbi52YWx1ZTtcbiAgICBjb25zdW1lKHRva2VuLnZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBuZWdhdGUgPSAoKSA9PiB7XG4gICAgbGV0IGNvdW50ID0gMTtcblxuICAgIHdoaWxlIChwZWVrKCkgPT09ICchJyAmJiAocGVlaygyKSAhPT0gJygnIHx8IHBlZWsoMykgPT09ICc/JykpIHtcbiAgICAgIGFkdmFuY2UoKTtcbiAgICAgIHN0YXRlLnN0YXJ0Kys7XG4gICAgICBjb3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb3VudCAlIDIgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzdGF0ZS5uZWdhdGVkID0gdHJ1ZTtcbiAgICBzdGF0ZS5zdGFydCsrO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGNvbnN0IGluY3JlbWVudCA9IHR5cGUgPT4ge1xuICAgIHN0YXRlW3R5cGVdKys7XG4gICAgc3RhY2sucHVzaCh0eXBlKTtcbiAgfTtcblxuICBjb25zdCBkZWNyZW1lbnQgPSB0eXBlID0+IHtcbiAgICBzdGF0ZVt0eXBlXS0tO1xuICAgIHN0YWNrLnBvcCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQdXNoIHRva2VucyBvbnRvIHRoZSB0b2tlbnMgYXJyYXkuIFRoaXMgaGVscGVyIHNwZWVkcyB1cFxuICAgKiB0b2tlbml6aW5nIGJ5IDEpIGhlbHBpbmcgdXMgYXZvaWQgYmFja3RyYWNraW5nIGFzIG11Y2ggYXMgcG9zc2libGUsXG4gICAqIGFuZCAyKSBoZWxwaW5nIHVzIGF2b2lkIGNyZWF0aW5nIGV4dHJhIHRva2VucyB3aGVuIGNvbnNlY3V0aXZlXG4gICAqIGNoYXJhY3RlcnMgYXJlIHBsYWluIHRleHQuIFRoaXMgaW1wcm92ZXMgcGVyZm9ybWFuY2UgYW5kIHNpbXBsaWZpZXNcbiAgICogbG9va2JlaGluZHMuXG4gICAqL1xuXG4gIGNvbnN0IHB1c2ggPSB0b2sgPT4ge1xuICAgIGlmIChwcmV2LnR5cGUgPT09ICdnbG9ic3RhcicpIHtcbiAgICAgIGNvbnN0IGlzQnJhY2UgPSBzdGF0ZS5icmFjZXMgPiAwICYmICh0b2sudHlwZSA9PT0gJ2NvbW1hJyB8fCB0b2sudHlwZSA9PT0gJ2JyYWNlJyk7XG4gICAgICBjb25zdCBpc0V4dGdsb2IgPSB0b2suZXh0Z2xvYiA9PT0gdHJ1ZSB8fCAoZXh0Z2xvYnMubGVuZ3RoICYmICh0b2sudHlwZSA9PT0gJ3BpcGUnIHx8IHRvay50eXBlID09PSAncGFyZW4nKSk7XG5cbiAgICAgIGlmICh0b2sudHlwZSAhPT0gJ3NsYXNoJyAmJiB0b2sudHlwZSAhPT0gJ3BhcmVuJyAmJiAhaXNCcmFjZSAmJiAhaXNFeHRnbG9iKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtcHJldi5vdXRwdXQubGVuZ3RoKTtcbiAgICAgICAgcHJldi50eXBlID0gJ3N0YXInO1xuICAgICAgICBwcmV2LnZhbHVlID0gJyonO1xuICAgICAgICBwcmV2Lm91dHB1dCA9IHN0YXI7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBwcmV2Lm91dHB1dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXh0Z2xvYnMubGVuZ3RoICYmIHRvay50eXBlICE9PSAncGFyZW4nKSB7XG4gICAgICBleHRnbG9ic1tleHRnbG9icy5sZW5ndGggLSAxXS5pbm5lciArPSB0b2sudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRvay52YWx1ZSB8fCB0b2sub3V0cHV0KSBhcHBlbmQodG9rKTtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICd0ZXh0JyAmJiB0b2sudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBwcmV2LnZhbHVlICs9IHRvay52YWx1ZTtcbiAgICAgIHByZXYub3V0cHV0ID0gKHByZXYub3V0cHV0IHx8ICcnKSArIHRvay52YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2sucHJldiA9IHByZXY7XG4gICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICBwcmV2ID0gdG9rO1xuICB9O1xuXG4gIGNvbnN0IGV4dGdsb2JPcGVuID0gKHR5cGUsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdG9rZW4gPSB7IC4uLkVYVEdMT0JfQ0hBUlNbdmFsdWVdLCBjb25kaXRpb25zOiAxLCBpbm5lcjogJycgfTtcblxuICAgIHRva2VuLnByZXYgPSBwcmV2O1xuICAgIHRva2VuLnBhcmVucyA9IHN0YXRlLnBhcmVucztcbiAgICB0b2tlbi5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQ7XG4gICAgY29uc3Qgb3V0cHV0ID0gKG9wdHMuY2FwdHVyZSA/ICcoJyA6ICcnKSArIHRva2VuLm9wZW47XG5cbiAgICBpbmNyZW1lbnQoJ3BhcmVucycpO1xuICAgIHB1c2goeyB0eXBlLCB2YWx1ZSwgb3V0cHV0OiBzdGF0ZS5vdXRwdXQgPyAnJyA6IE9ORV9DSEFSIH0pO1xuICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCBleHRnbG9iOiB0cnVlLCB2YWx1ZTogYWR2YW5jZSgpLCBvdXRwdXQgfSk7XG4gICAgZXh0Z2xvYnMucHVzaCh0b2tlbik7XG4gIH07XG5cbiAgY29uc3QgZXh0Z2xvYkNsb3NlID0gdG9rZW4gPT4ge1xuICAgIGxldCBvdXRwdXQgPSB0b2tlbi5jbG9zZSArIChvcHRzLmNhcHR1cmUgPyAnKScgOiAnJyk7XG4gICAgbGV0IHJlc3Q7XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ25lZ2F0ZScpIHtcbiAgICAgIGxldCBleHRnbG9iU3RhciA9IHN0YXI7XG5cbiAgICAgIGlmICh0b2tlbi5pbm5lciAmJiB0b2tlbi5pbm5lci5sZW5ndGggPiAxICYmIHRva2VuLmlubmVyLmluY2x1ZGVzKCcvJykpIHtcbiAgICAgICAgZXh0Z2xvYlN0YXIgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dGdsb2JTdGFyICE9PSBzdGFyIHx8IGVvcygpIHx8IC9eXFwpKyQvLnRlc3QocmVtYWluaW5nKCkpKSB7XG4gICAgICAgIG91dHB1dCA9IHRva2VuLmNsb3NlID0gYCkkKSkke2V4dGdsb2JTdGFyfWA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlbi5pbm5lci5pbmNsdWRlcygnKicpICYmIChyZXN0ID0gcmVtYWluaW5nKCkpICYmIC9eXFwuW15cXFxcLy5dKyQvLnRlc3QocmVzdCkpIHtcbiAgICAgICAgb3V0cHV0ID0gdG9rZW4uY2xvc2UgPSBgKSR7cmVzdH0pJHtleHRnbG9iU3Rhcn0pYDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRva2VuLnByZXYudHlwZSA9PT0gJ2JvcycpIHtcbiAgICAgICAgc3RhdGUubmVnYXRlZEV4dGdsb2IgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCBleHRnbG9iOiB0cnVlLCB2YWx1ZSwgb3V0cHV0IH0pO1xuICAgIGRlY3JlbWVudCgncGFyZW5zJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZhc3QgcGF0aHNcbiAgICovXG5cbiAgaWYgKG9wdHMuZmFzdHBhdGhzICE9PSBmYWxzZSAmJiAhLyheWyohXXxbLygpW1xcXXt9XCJdKS8udGVzdChpbnB1dCkpIHtcbiAgICBsZXQgYmFja3NsYXNoZXMgPSBmYWxzZTtcblxuICAgIGxldCBvdXRwdXQgPSBpbnB1dC5yZXBsYWNlKFJFR0VYX1NQRUNJQUxfQ0hBUlNfQkFDS1JFRiwgKG0sIGVzYywgY2hhcnMsIGZpcnN0LCByZXN0LCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGZpcnN0ID09PSAnXFxcXCcpIHtcbiAgICAgICAgYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICByZXR1cm4gbTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0ID09PSAnPycpIHtcbiAgICAgICAgaWYgKGVzYykge1xuICAgICAgICAgIHJldHVybiBlc2MgKyBmaXJzdCArIChyZXN0ID8gUU1BUksucmVwZWF0KHJlc3QubGVuZ3RoKSA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gcW1hcmtOb0RvdCArIChyZXN0ID8gUU1BUksucmVwZWF0KHJlc3QubGVuZ3RoKSA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUU1BUksucmVwZWF0KGNoYXJzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaXJzdCA9PT0gJy4nKSB7XG4gICAgICAgIHJldHVybiBET1RfTElURVJBTC5yZXBlYXQoY2hhcnMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0ID09PSAnKicpIHtcbiAgICAgICAgaWYgKGVzYykge1xuICAgICAgICAgIHJldHVybiBlc2MgKyBmaXJzdCArIChyZXN0ID8gc3RhciA6ICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RhcjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlc2MgPyBtIDogYFxcXFwke219YDtcbiAgICB9KTtcblxuICAgIGlmIChiYWNrc2xhc2hlcyA9PT0gdHJ1ZSkge1xuICAgICAgaWYgKG9wdHMudW5lc2NhcGUgPT09IHRydWUpIHtcbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnJlcGxhY2UoL1xcXFwvZywgJycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnJlcGxhY2UoL1xcXFwrL2csIG0gPT4ge1xuICAgICAgICAgIHJldHVybiBtLmxlbmd0aCAlIDIgPT09IDAgPyAnXFxcXFxcXFwnIDogKG0gPyAnXFxcXCcgOiAnJyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvdXRwdXQgPT09IGlucHV0ICYmIG9wdHMuY29udGFpbnMgPT09IHRydWUpIHtcbiAgICAgIHN0YXRlLm91dHB1dCA9IGlucHV0O1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIHN0YXRlLm91dHB1dCA9IHV0aWxzLndyYXBPdXRwdXQob3V0cHV0LCBzdGF0ZSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRva2VuaXplIGlucHV0IHVudGlsIHdlIHJlYWNoIGVuZC1vZi1zdHJpbmdcbiAgICovXG5cbiAgd2hpbGUgKCFlb3MoKSkge1xuICAgIHZhbHVlID0gYWR2YW5jZSgpO1xuXG4gICAgaWYgKHZhbHVlID09PSAnXFx1MDAwMCcpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVzY2FwZWQgY2hhcmFjdGVyc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnXFxcXCcpIHtcbiAgICAgIGNvbnN0IG5leHQgPSBwZWVrKCk7XG5cbiAgICAgIGlmIChuZXh0ID09PSAnLycgJiYgb3B0cy5iYXNoICE9PSB0cnVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmV4dCA9PT0gJy4nIHx8IG5leHQgPT09ICc7Jykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFuZXh0KSB7XG4gICAgICAgIHZhbHVlICs9ICdcXFxcJztcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBjb2xsYXBzZSBzbGFzaGVzIHRvIHJlZHVjZSBwb3RlbnRpYWwgZm9yIGV4cGxvaXRzXG4gICAgICBjb25zdCBtYXRjaCA9IC9eXFxcXCsvLmV4ZWMocmVtYWluaW5nKCkpO1xuICAgICAgbGV0IHNsYXNoZXMgPSAwO1xuXG4gICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMF0ubGVuZ3RoID4gMikge1xuICAgICAgICBzbGFzaGVzID0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICBzdGF0ZS5pbmRleCArPSBzbGFzaGVzO1xuICAgICAgICBpZiAoc2xhc2hlcyAlIDIgIT09IDApIHtcbiAgICAgICAgICB2YWx1ZSArPSAnXFxcXCc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMudW5lc2NhcGUgPT09IHRydWUpIHtcbiAgICAgICAgdmFsdWUgPSBhZHZhbmNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSArPSBhZHZhbmNlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5icmFja2V0cyA9PT0gMCkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgd2UncmUgaW5zaWRlIGEgcmVnZXggY2hhcmFjdGVyIGNsYXNzLCBjb250aW51ZVxuICAgICAqIHVudGlsIHdlIHJlYWNoIHRoZSBjbG9zaW5nIGJyYWNrZXQuXG4gICAgICovXG5cbiAgICBpZiAoc3RhdGUuYnJhY2tldHMgPiAwICYmICh2YWx1ZSAhPT0gJ10nIHx8IHByZXYudmFsdWUgPT09ICdbJyB8fCBwcmV2LnZhbHVlID09PSAnW14nKSkge1xuICAgICAgaWYgKG9wdHMucG9zaXggIT09IGZhbHNlICYmIHZhbHVlID09PSAnOicpIHtcbiAgICAgICAgY29uc3QgaW5uZXIgPSBwcmV2LnZhbHVlLnNsaWNlKDEpO1xuICAgICAgICBpZiAoaW5uZXIuaW5jbHVkZXMoJ1snKSkge1xuICAgICAgICAgIHByZXYucG9zaXggPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKGlubmVyLmluY2x1ZGVzKCc6JykpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHByZXYudmFsdWUubGFzdEluZGV4T2YoJ1snKTtcbiAgICAgICAgICAgIGNvbnN0IHByZSA9IHByZXYudmFsdWUuc2xpY2UoMCwgaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3QgPSBwcmV2LnZhbHVlLnNsaWNlKGlkeCArIDIpO1xuICAgICAgICAgICAgY29uc3QgcG9zaXggPSBQT1NJWF9SRUdFWF9TT1VSQ0VbcmVzdF07XG4gICAgICAgICAgICBpZiAocG9zaXgpIHtcbiAgICAgICAgICAgICAgcHJldi52YWx1ZSA9IHByZSArIHBvc2l4O1xuICAgICAgICAgICAgICBzdGF0ZS5iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgICAgICAgICBhZHZhbmNlKCk7XG5cbiAgICAgICAgICAgICAgaWYgKCFib3Mub3V0cHV0ICYmIHRva2Vucy5pbmRleE9mKHByZXYpID09PSAxKSB7XG4gICAgICAgICAgICAgICAgYm9zLm91dHB1dCA9IE9ORV9DSEFSO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoKHZhbHVlID09PSAnWycgJiYgcGVlaygpICE9PSAnOicpIHx8ICh2YWx1ZSA9PT0gJy0nICYmIHBlZWsoKSA9PT0gJ10nKSkge1xuICAgICAgICB2YWx1ZSA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09ICddJyAmJiAocHJldi52YWx1ZSA9PT0gJ1snIHx8IHByZXYudmFsdWUgPT09ICdbXicpKSB7XG4gICAgICAgIHZhbHVlID0gYFxcXFwke3ZhbHVlfWA7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLnBvc2l4ID09PSB0cnVlICYmIHZhbHVlID09PSAnIScgJiYgcHJldi52YWx1ZSA9PT0gJ1snKSB7XG4gICAgICAgIHZhbHVlID0gJ14nO1xuICAgICAgfVxuXG4gICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgYXBwZW5kKHsgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB3ZSdyZSBpbnNpZGUgYSBxdW90ZWQgc3RyaW5nLCBjb250aW51ZVxuICAgICAqIHVudGlsIHdlIHJlYWNoIHRoZSBjbG9zaW5nIGRvdWJsZSBxdW90ZS5cbiAgICAgKi9cblxuICAgIGlmIChzdGF0ZS5xdW90ZXMgPT09IDEgJiYgdmFsdWUgIT09ICdcIicpIHtcbiAgICAgIHZhbHVlID0gdXRpbHMuZXNjYXBlUmVnZXgodmFsdWUpO1xuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgIGFwcGVuZCh7IHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRG91YmxlIHF1b3Rlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnXCInKSB7XG4gICAgICBzdGF0ZS5xdW90ZXMgPSBzdGF0ZS5xdW90ZXMgPT09IDEgPyAwIDogMTtcbiAgICAgIGlmIChvcHRzLmtlZXBRdW90ZXMgPT09IHRydWUpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXJlbnRoZXNlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnKCcpIHtcbiAgICAgIGluY3JlbWVudCgncGFyZW5zJyk7XG4gICAgICBwdXNoKHsgdHlwZTogJ3BhcmVuJywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICcpJykge1xuICAgICAgaWYgKHN0YXRlLnBhcmVucyA9PT0gMCAmJiBvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB7XG4gICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignb3BlbmluZycsICcoJykpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleHRnbG9iID0gZXh0Z2xvYnNbZXh0Z2xvYnMubGVuZ3RoIC0gMV07XG4gICAgICBpZiAoZXh0Z2xvYiAmJiBzdGF0ZS5wYXJlbnMgPT09IGV4dGdsb2IucGFyZW5zICsgMSkge1xuICAgICAgICBleHRnbG9iQ2xvc2UoZXh0Z2xvYnMucG9wKCkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdwYXJlbicsIHZhbHVlLCBvdXRwdXQ6IHN0YXRlLnBhcmVucyA/ICcpJyA6ICdcXFxcKScgfSk7XG4gICAgICBkZWNyZW1lbnQoJ3BhcmVucycpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3F1YXJlIGJyYWNrZXRzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICdbJykge1xuICAgICAgaWYgKG9wdHMubm9icmFja2V0ID09PSB0cnVlIHx8ICFyZW1haW5pbmcoKS5pbmNsdWRlcygnXScpKSB7XG4gICAgICAgIGlmIChvcHRzLm5vYnJhY2tldCAhPT0gdHJ1ZSAmJiBvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdjbG9zaW5nJywgJ10nKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZSA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5jcmVtZW50KCdicmFja2V0cycpO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2JyYWNrZXQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gJ10nKSB7XG4gICAgICBpZiAob3B0cy5ub2JyYWNrZXQgPT09IHRydWUgfHwgKHByZXYgJiYgcHJldi50eXBlID09PSAnYnJhY2tldCcgJiYgcHJldi52YWx1ZS5sZW5ndGggPT09IDEpKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlLCBvdXRwdXQ6IGBcXFxcJHt2YWx1ZX1gIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlLmJyYWNrZXRzID09PSAwKSB7XG4gICAgICAgIGlmIChvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdvcGVuaW5nJywgJ1snKSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSwgb3V0cHV0OiBgXFxcXCR7dmFsdWV9YCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGRlY3JlbWVudCgnYnJhY2tldHMnKTtcblxuICAgICAgY29uc3QgcHJldlZhbHVlID0gcHJldi52YWx1ZS5zbGljZSgxKTtcbiAgICAgIGlmIChwcmV2LnBvc2l4ICE9PSB0cnVlICYmIHByZXZWYWx1ZVswXSA9PT0gJ14nICYmICFwcmV2VmFsdWUuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICB2YWx1ZSA9IGAvJHt2YWx1ZX1gO1xuICAgICAgfVxuXG4gICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgYXBwZW5kKHsgdmFsdWUgfSk7XG5cbiAgICAgIC8vIHdoZW4gbGl0ZXJhbCBicmFja2V0cyBhcmUgZXhwbGljaXRseSBkaXNhYmxlZFxuICAgICAgLy8gYXNzdW1lIHdlIHNob3VsZCBtYXRjaCB3aXRoIGEgcmVnZXggY2hhcmFjdGVyIGNsYXNzXG4gICAgICBpZiAob3B0cy5saXRlcmFsQnJhY2tldHMgPT09IGZhbHNlIHx8IHV0aWxzLmhhc1JlZ2V4Q2hhcnMocHJldlZhbHVlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXNjYXBlZCA9IHV0aWxzLmVzY2FwZVJlZ2V4KHByZXYudmFsdWUpO1xuICAgICAgc3RhdGUub3V0cHV0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIC1wcmV2LnZhbHVlLmxlbmd0aCk7XG5cbiAgICAgIC8vIHdoZW4gbGl0ZXJhbCBicmFja2V0cyBhcmUgZXhwbGljaXRseSBlbmFibGVkXG4gICAgICAvLyBhc3N1bWUgd2Ugc2hvdWxkIGVzY2FwZSB0aGUgYnJhY2tldHMgdG8gbWF0Y2ggbGl0ZXJhbCBjaGFyYWN0ZXJzXG4gICAgICBpZiAob3B0cy5saXRlcmFsQnJhY2tldHMgPT09IHRydWUpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IGVzY2FwZWQ7XG4gICAgICAgIHByZXYudmFsdWUgPSBlc2NhcGVkO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gd2hlbiB0aGUgdXNlciBzcGVjaWZpZXMgbm90aGluZywgdHJ5IHRvIG1hdGNoIGJvdGhcbiAgICAgIHByZXYudmFsdWUgPSBgKCR7Y2FwdHVyZX0ke2VzY2FwZWR9fCR7cHJldi52YWx1ZX0pYDtcbiAgICAgIHN0YXRlLm91dHB1dCArPSBwcmV2LnZhbHVlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnJhY2VzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICd7JyAmJiBvcHRzLm5vYnJhY2UgIT09IHRydWUpIHtcbiAgICAgIGluY3JlbWVudCgnYnJhY2VzJyk7XG5cbiAgICAgIGNvbnN0IG9wZW4gPSB7XG4gICAgICAgIHR5cGU6ICdicmFjZScsXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvdXRwdXQ6ICcoJyxcbiAgICAgICAgb3V0cHV0SW5kZXg6IHN0YXRlLm91dHB1dC5sZW5ndGgsXG4gICAgICAgIHRva2Vuc0luZGV4OiBzdGF0ZS50b2tlbnMubGVuZ3RoXG4gICAgICB9O1xuXG4gICAgICBicmFjZXMucHVzaChvcGVuKTtcbiAgICAgIHB1c2gob3Blbik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICd9Jykge1xuICAgICAgY29uc3QgYnJhY2UgPSBicmFjZXNbYnJhY2VzLmxlbmd0aCAtIDFdO1xuXG4gICAgICBpZiAob3B0cy5ub2JyYWNlID09PSB0cnVlIHx8ICFicmFjZSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSwgb3V0cHV0OiB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxldCBvdXRwdXQgPSAnKSc7XG5cbiAgICAgIGlmIChicmFjZS5kb3RzID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IHRva2Vucy5zbGljZSgpO1xuICAgICAgICBjb25zdCByYW5nZSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBhcnIubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgICAgaWYgKGFycltpXS50eXBlID09PSAnYnJhY2UnKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFycltpXS50eXBlICE9PSAnZG90cycpIHtcbiAgICAgICAgICAgIHJhbmdlLnVuc2hpZnQoYXJyW2ldLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBvdXRwdXQgPSBleHBhbmRSYW5nZShyYW5nZSwgb3B0cyk7XG4gICAgICAgIHN0YXRlLmJhY2t0cmFjayA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChicmFjZS5jb21tYSAhPT0gdHJ1ZSAmJiBicmFjZS5kb3RzICE9PSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IG91dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCBicmFjZS5vdXRwdXRJbmRleCk7XG4gICAgICAgIGNvbnN0IHRva3MgPSBzdGF0ZS50b2tlbnMuc2xpY2UoYnJhY2UudG9rZW5zSW5kZXgpO1xuICAgICAgICBicmFjZS52YWx1ZSA9IGJyYWNlLm91dHB1dCA9ICdcXFxceyc7XG4gICAgICAgIHZhbHVlID0gb3V0cHV0ID0gJ1xcXFx9JztcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gb3V0O1xuICAgICAgICBmb3IgKGNvbnN0IHQgb2YgdG9rcykge1xuICAgICAgICAgIHN0YXRlLm91dHB1dCArPSAodC5vdXRwdXQgfHwgdC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdicmFjZScsIHZhbHVlLCBvdXRwdXQgfSk7XG4gICAgICBkZWNyZW1lbnQoJ2JyYWNlcycpO1xuICAgICAgYnJhY2VzLnBvcCgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGlwZXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ3wnKSB7XG4gICAgICBpZiAoZXh0Z2xvYnMubGVuZ3RoID4gMCkge1xuICAgICAgICBleHRnbG9ic1tleHRnbG9icy5sZW5ndGggLSAxXS5jb25kaXRpb25zKys7XG4gICAgICB9XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbW1hc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnLCcpIHtcbiAgICAgIGxldCBvdXRwdXQgPSB2YWx1ZTtcblxuICAgICAgY29uc3QgYnJhY2UgPSBicmFjZXNbYnJhY2VzLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGJyYWNlICYmIHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdID09PSAnYnJhY2VzJykge1xuICAgICAgICBicmFjZS5jb21tYSA9IHRydWU7XG4gICAgICAgIG91dHB1dCA9ICd8JztcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdjb21tYScsIHZhbHVlLCBvdXRwdXQgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTbGFzaGVzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICcvJykge1xuICAgICAgLy8gaWYgdGhlIGJlZ2lubmluZyBvZiB0aGUgZ2xvYiBpcyBcIi4vXCIsIGFkdmFuY2UgdGhlIHN0YXJ0XG4gICAgICAvLyB0byB0aGUgY3VycmVudCBpbmRleCwgYW5kIGRvbid0IGFkZCB0aGUgXCIuL1wiIGNoYXJhY3RlcnNcbiAgICAgIC8vIHRvIHRoZSBzdGF0ZS4gVGhpcyBncmVhdGx5IHNpbXBsaWZpZXMgbG9va2JlaGluZHMgd2hlblxuICAgICAgLy8gY2hlY2tpbmcgZm9yIEJPUyBjaGFyYWN0ZXJzIGxpa2UgXCIhXCIgYW5kIFwiLlwiIChub3QgXCIuL1wiKVxuICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ2RvdCcgJiYgc3RhdGUuaW5kZXggPT09IHN0YXRlLnN0YXJ0ICsgMSkge1xuICAgICAgICBzdGF0ZS5zdGFydCA9IHN0YXRlLmluZGV4ICsgMTtcbiAgICAgICAgc3RhdGUuY29uc3VtZWQgPSAnJztcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gJyc7XG4gICAgICAgIHRva2Vucy5wb3AoKTtcbiAgICAgICAgcHJldiA9IGJvczsgLy8gcmVzZXQgXCJwcmV2XCIgdG8gdGhlIGZpcnN0IHRva2VuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3NsYXNoJywgdmFsdWUsIG91dHB1dDogU0xBU0hfTElURVJBTCB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvdHNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJy4nKSB7XG4gICAgICBpZiAoc3RhdGUuYnJhY2VzID4gMCAmJiBwcmV2LnR5cGUgPT09ICdkb3QnKSB7XG4gICAgICAgIGlmIChwcmV2LnZhbHVlID09PSAnLicpIHByZXYub3V0cHV0ID0gRE9UX0xJVEVSQUw7XG4gICAgICAgIGNvbnN0IGJyYWNlID0gYnJhY2VzW2JyYWNlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgcHJldi50eXBlID0gJ2RvdHMnO1xuICAgICAgICBwcmV2Lm91dHB1dCArPSB2YWx1ZTtcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgYnJhY2UuZG90cyA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoKHN0YXRlLmJyYWNlcyArIHN0YXRlLnBhcmVucykgPT09IDAgJiYgcHJldi50eXBlICE9PSAnYm9zJyAmJiBwcmV2LnR5cGUgIT09ICdzbGFzaCcpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUsIG91dHB1dDogRE9UX0xJVEVSQUwgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2RvdCcsIHZhbHVlLCBvdXRwdXQ6IERPVF9MSVRFUkFMIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUXVlc3Rpb24gbWFya3NcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJz8nKSB7XG4gICAgICBjb25zdCBpc0dyb3VwID0gcHJldiAmJiBwcmV2LnZhbHVlID09PSAnKCc7XG4gICAgICBpZiAoIWlzR3JvdXAgJiYgb3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgcGVlaygpID09PSAnKCcgJiYgcGVlaygyKSAhPT0gJz8nKSB7XG4gICAgICAgIGV4dGdsb2JPcGVuKCdxbWFyaycsIHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ3BhcmVuJykge1xuICAgICAgICBjb25zdCBuZXh0ID0gcGVlaygpO1xuICAgICAgICBsZXQgb3V0cHV0ID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKG5leHQgPT09ICc8JyAmJiAhdXRpbHMuc3VwcG9ydHNMb29rYmVoaW5kcygpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb2RlLmpzIHYxMCBvciBoaWdoZXIgaXMgcmVxdWlyZWQgZm9yIHJlZ2V4IGxvb2tiZWhpbmRzJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHByZXYudmFsdWUgPT09ICcoJyAmJiAhL1shPTw6XS8udGVzdChuZXh0KSkgfHwgKG5leHQgPT09ICc8JyAmJiAhLzwoWyE9XXxcXHcrPikvLnRlc3QocmVtYWluaW5nKCkpKSkge1xuICAgICAgICAgIG91dHB1dCA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUsIG91dHB1dCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLmRvdCAhPT0gdHJ1ZSAmJiAocHJldi50eXBlID09PSAnc2xhc2gnIHx8IHByZXYudHlwZSA9PT0gJ2JvcycpKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAncW1hcmsnLCB2YWx1ZSwgb3V0cHV0OiBRTUFSS19OT19ET1QgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3FtYXJrJywgdmFsdWUsIG91dHB1dDogUU1BUksgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGNsYW1hdGlvblxuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnIScpIHtcbiAgICAgIGlmIChvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiBwZWVrKCkgPT09ICcoJykge1xuICAgICAgICBpZiAocGVlaygyKSAhPT0gJz8nIHx8ICEvWyE9PDpdLy50ZXN0KHBlZWsoMykpKSB7XG4gICAgICAgICAgZXh0Z2xvYk9wZW4oJ25lZ2F0ZScsIHZhbHVlKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy5ub25lZ2F0ZSAhPT0gdHJ1ZSAmJiBzdGF0ZS5pbmRleCA9PT0gMCkge1xuICAgICAgICBuZWdhdGUoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGx1c1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnKycpIHtcbiAgICAgIGlmIChvcHRzLm5vZXh0Z2xvYiAhPT0gdHJ1ZSAmJiBwZWVrKCkgPT09ICcoJyAmJiBwZWVrKDIpICE9PSAnPycpIHtcbiAgICAgICAgZXh0Z2xvYk9wZW4oJ3BsdXMnLCB2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoKHByZXYgJiYgcHJldi52YWx1ZSA9PT0gJygnKSB8fCBvcHRzLnJlZ2V4ID09PSBmYWxzZSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3BsdXMnLCB2YWx1ZSwgb3V0cHV0OiBQTFVTX0xJVEVSQUwgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoKHByZXYgJiYgKHByZXYudHlwZSA9PT0gJ2JyYWNrZXQnIHx8IHByZXYudHlwZSA9PT0gJ3BhcmVuJyB8fCBwcmV2LnR5cGUgPT09ICdicmFjZScpKSB8fCBzdGF0ZS5wYXJlbnMgPiAwKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAncGx1cycsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdwbHVzJywgdmFsdWU6IFBMVVNfTElURVJBTCB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBsYWluIHRleHRcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ0AnKSB7XG4gICAgICBpZiAob3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgcGVlaygpID09PSAnKCcgJiYgcGVlaygyKSAhPT0gJz8nKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAnYXQnLCBleHRnbG9iOiB0cnVlLCB2YWx1ZSwgb3V0cHV0OiAnJyB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGxhaW4gdGV4dFxuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlICE9PSAnKicpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJyQnIHx8IHZhbHVlID09PSAnXicpIHtcbiAgICAgICAgdmFsdWUgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWF0Y2ggPSBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUy5leGVjKHJlbWFpbmluZygpKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICB2YWx1ZSArPSBtYXRjaFswXTtcbiAgICAgICAgc3RhdGUuaW5kZXggKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0YXJzXG4gICAgICovXG5cbiAgICBpZiAocHJldiAmJiAocHJldi50eXBlID09PSAnZ2xvYnN0YXInIHx8IHByZXYuc3RhciA9PT0gdHJ1ZSkpIHtcbiAgICAgIHByZXYudHlwZSA9ICdzdGFyJztcbiAgICAgIHByZXYuc3RhciA9IHRydWU7XG4gICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgcHJldi5vdXRwdXQgPSBzdGFyO1xuICAgICAgc3RhdGUuYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgIGNvbnN1bWUodmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IHJlc3QgPSByZW1haW5pbmcoKTtcbiAgICBpZiAob3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgL15cXChbXj9dLy50ZXN0KHJlc3QpKSB7XG4gICAgICBleHRnbG9iT3Blbignc3RhcicsIHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChwcmV2LnR5cGUgPT09ICdzdGFyJykge1xuICAgICAgaWYgKG9wdHMubm9nbG9ic3RhciA9PT0gdHJ1ZSkge1xuICAgICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByaW9yID0gcHJldi5wcmV2O1xuICAgICAgY29uc3QgYmVmb3JlID0gcHJpb3IucHJldjtcbiAgICAgIGNvbnN0IGlzU3RhcnQgPSBwcmlvci50eXBlID09PSAnc2xhc2gnIHx8IHByaW9yLnR5cGUgPT09ICdib3MnO1xuICAgICAgY29uc3QgYWZ0ZXJTdGFyID0gYmVmb3JlICYmIChiZWZvcmUudHlwZSA9PT0gJ3N0YXInIHx8IGJlZm9yZS50eXBlID09PSAnZ2xvYnN0YXInKTtcblxuICAgICAgaWYgKG9wdHMuYmFzaCA9PT0gdHJ1ZSAmJiAoIWlzU3RhcnQgfHwgKHJlc3RbMF0gJiYgcmVzdFswXSAhPT0gJy8nKSkpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdzdGFyJywgdmFsdWUsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpc0JyYWNlID0gc3RhdGUuYnJhY2VzID4gMCAmJiAocHJpb3IudHlwZSA9PT0gJ2NvbW1hJyB8fCBwcmlvci50eXBlID09PSAnYnJhY2UnKTtcbiAgICAgIGNvbnN0IGlzRXh0Z2xvYiA9IGV4dGdsb2JzLmxlbmd0aCAmJiAocHJpb3IudHlwZSA9PT0gJ3BpcGUnIHx8IHByaW9yLnR5cGUgPT09ICdwYXJlbicpO1xuICAgICAgaWYgKCFpc1N0YXJ0ICYmIHByaW9yLnR5cGUgIT09ICdwYXJlbicgJiYgIWlzQnJhY2UgJiYgIWlzRXh0Z2xvYikge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3N0YXInLCB2YWx1ZSwgb3V0cHV0OiAnJyB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHN0cmlwIGNvbnNlY3V0aXZlIGAvKiovYFxuICAgICAgd2hpbGUgKHJlc3Quc2xpY2UoMCwgMykgPT09ICcvKionKSB7XG4gICAgICAgIGNvbnN0IGFmdGVyID0gaW5wdXRbc3RhdGUuaW5kZXggKyA0XTtcbiAgICAgICAgaWYgKGFmdGVyICYmIGFmdGVyICE9PSAnLycpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXN0ID0gcmVzdC5zbGljZSgzKTtcbiAgICAgICAgY29uc3VtZSgnLyoqJywgMyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmlvci50eXBlID09PSAnYm9zJyAmJiBlb3MoKSkge1xuICAgICAgICBwcmV2LnR5cGUgPSAnZ2xvYnN0YXInO1xuICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgICBwcmV2Lm91dHB1dCA9IGdsb2JzdGFyKG9wdHMpO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBwcmV2Lm91dHB1dDtcbiAgICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmlvci50eXBlID09PSAnc2xhc2gnICYmIHByaW9yLnByZXYudHlwZSAhPT0gJ2JvcycgJiYgIWFmdGVyU3RhciAmJiBlb3MoKSkge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLShwcmlvci5vdXRwdXQgKyBwcmV2Lm91dHB1dCkubGVuZ3RoKTtcbiAgICAgICAgcHJpb3Iub3V0cHV0ID0gYCg/OiR7cHJpb3Iub3V0cHV0fWA7XG5cbiAgICAgICAgcHJldi50eXBlID0gJ2dsb2JzdGFyJztcbiAgICAgICAgcHJldi5vdXRwdXQgPSBnbG9ic3RhcihvcHRzKSArIChvcHRzLnN0cmljdFNsYXNoZXMgPyAnKScgOiAnfCQpJyk7XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IHByaW9yLm91dHB1dCArIHByZXYub3V0cHV0O1xuICAgICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmlvci50eXBlID09PSAnc2xhc2gnICYmIHByaW9yLnByZXYudHlwZSAhPT0gJ2JvcycgJiYgcmVzdFswXSA9PT0gJy8nKSB7XG4gICAgICAgIGNvbnN0IGVuZCA9IHJlc3RbMV0gIT09IHZvaWQgMCA/ICd8JCcgOiAnJztcblxuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLShwcmlvci5vdXRwdXQgKyBwcmV2Lm91dHB1dCkubGVuZ3RoKTtcbiAgICAgICAgcHJpb3Iub3V0cHV0ID0gYCg/OiR7cHJpb3Iub3V0cHV0fWA7XG5cbiAgICAgICAgcHJldi50eXBlID0gJ2dsb2JzdGFyJztcbiAgICAgICAgcHJldi5vdXRwdXQgPSBgJHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9fCR7U0xBU0hfTElURVJBTH0ke2VuZH0pYDtcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcblxuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJpb3Iub3V0cHV0ICsgcHJldi5vdXRwdXQ7XG4gICAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcblxuICAgICAgICBjb25zdW1lKHZhbHVlICsgYWR2YW5jZSgpKTtcblxuICAgICAgICBwdXNoKHsgdHlwZTogJ3NsYXNoJywgdmFsdWU6ICcvJywgb3V0cHV0OiAnJyB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmlvci50eXBlID09PSAnYm9zJyAmJiByZXN0WzBdID09PSAnLycpIHtcbiAgICAgICAgcHJldi50eXBlID0gJ2dsb2JzdGFyJztcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgcHJldi5vdXRwdXQgPSBgKD86Xnwke1NMQVNIX0xJVEVSQUx9fCR7Z2xvYnN0YXIob3B0cyl9JHtTTEFTSF9MSVRFUkFMfSlgO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBwcmV2Lm91dHB1dDtcbiAgICAgICAgc3RhdGUuZ2xvYnN0YXIgPSB0cnVlO1xuICAgICAgICBjb25zdW1lKHZhbHVlICsgYWR2YW5jZSgpKTtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdzbGFzaCcsIHZhbHVlOiAnLycsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyByZW1vdmUgc2luZ2xlIHN0YXIgZnJvbSBvdXRwdXRcbiAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtcHJldi5vdXRwdXQubGVuZ3RoKTtcblxuICAgICAgLy8gcmVzZXQgcHJldmlvdXMgdG9rZW4gdG8gZ2xvYnN0YXJcbiAgICAgIHByZXYudHlwZSA9ICdnbG9ic3Rhcic7XG4gICAgICBwcmV2Lm91dHB1dCA9IGdsb2JzdGFyKG9wdHMpO1xuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcblxuICAgICAgLy8gcmVzZXQgb3V0cHV0IHdpdGggZ2xvYnN0YXJcbiAgICAgIHN0YXRlLm91dHB1dCArPSBwcmV2Lm91dHB1dDtcbiAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgIGNvbnN1bWUodmFsdWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW4gPSB7IHR5cGU6ICdzdGFyJywgdmFsdWUsIG91dHB1dDogc3RhciB9O1xuXG4gICAgaWYgKG9wdHMuYmFzaCA9PT0gdHJ1ZSkge1xuICAgICAgdG9rZW4ub3V0cHV0ID0gJy4qPyc7XG4gICAgICBpZiAocHJldi50eXBlID09PSAnYm9zJyB8fCBwcmV2LnR5cGUgPT09ICdzbGFzaCcpIHtcbiAgICAgICAgdG9rZW4ub3V0cHV0ID0gbm9kb3QgKyB0b2tlbi5vdXRwdXQ7XG4gICAgICB9XG4gICAgICBwdXNoKHRva2VuKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChwcmV2ICYmIChwcmV2LnR5cGUgPT09ICdicmFja2V0JyB8fCBwcmV2LnR5cGUgPT09ICdwYXJlbicpICYmIG9wdHMucmVnZXggPT09IHRydWUpIHtcbiAgICAgIHRva2VuLm91dHB1dCA9IHZhbHVlO1xuICAgICAgcHVzaCh0b2tlbik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuaW5kZXggPT09IHN0YXRlLnN0YXJ0IHx8IHByZXYudHlwZSA9PT0gJ3NsYXNoJyB8fCBwcmV2LnR5cGUgPT09ICdkb3QnKSB7XG4gICAgICBpZiAocHJldi50eXBlID09PSAnZG90Jykge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gTk9fRE9UX1NMQVNIO1xuICAgICAgICBwcmV2Lm91dHB1dCArPSBOT19ET1RfU0xBU0g7XG5cbiAgICAgIH0gZWxzZSBpZiAob3B0cy5kb3QgPT09IHRydWUpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IE5PX0RPVFNfU0xBU0g7XG4gICAgICAgIHByZXYub3V0cHV0ICs9IE5PX0RPVFNfU0xBU0g7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBub2RvdDtcbiAgICAgICAgcHJldi5vdXRwdXQgKz0gbm9kb3Q7XG4gICAgICB9XG5cbiAgICAgIGlmIChwZWVrKCkgIT09ICcqJykge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gT05FX0NIQVI7XG4gICAgICAgIHByZXYub3V0cHV0ICs9IE9ORV9DSEFSO1xuICAgICAgfVxuICAgIH1cblxuICAgIHB1c2godG9rZW4pO1xuICB9XG5cbiAgd2hpbGUgKHN0YXRlLmJyYWNrZXRzID4gMCkge1xuICAgIGlmIChvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ludGF4RXJyb3IoJ2Nsb3NpbmcnLCAnXScpKTtcbiAgICBzdGF0ZS5vdXRwdXQgPSB1dGlscy5lc2NhcGVMYXN0KHN0YXRlLm91dHB1dCwgJ1snKTtcbiAgICBkZWNyZW1lbnQoJ2JyYWNrZXRzJyk7XG4gIH1cblxuICB3aGlsZSAoc3RhdGUucGFyZW5zID4gMCkge1xuICAgIGlmIChvcHRzLnN0cmljdEJyYWNrZXRzID09PSB0cnVlKSB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ludGF4RXJyb3IoJ2Nsb3NpbmcnLCAnKScpKTtcbiAgICBzdGF0ZS5vdXRwdXQgPSB1dGlscy5lc2NhcGVMYXN0KHN0YXRlLm91dHB1dCwgJygnKTtcbiAgICBkZWNyZW1lbnQoJ3BhcmVucycpO1xuICB9XG5cbiAgd2hpbGUgKHN0YXRlLmJyYWNlcyA+IDApIHtcbiAgICBpZiAob3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdjbG9zaW5nJywgJ30nKSk7XG4gICAgc3RhdGUub3V0cHV0ID0gdXRpbHMuZXNjYXBlTGFzdChzdGF0ZS5vdXRwdXQsICd7Jyk7XG4gICAgZGVjcmVtZW50KCdicmFjZXMnKTtcbiAgfVxuXG4gIGlmIChvcHRzLnN0cmljdFNsYXNoZXMgIT09IHRydWUgJiYgKHByZXYudHlwZSA9PT0gJ3N0YXInIHx8IHByZXYudHlwZSA9PT0gJ2JyYWNrZXQnKSkge1xuICAgIHB1c2goeyB0eXBlOiAnbWF5YmVfc2xhc2gnLCB2YWx1ZTogJycsIG91dHB1dDogYCR7U0xBU0hfTElURVJBTH0/YCB9KTtcbiAgfVxuXG4gIC8vIHJlYnVpbGQgdGhlIG91dHB1dCBpZiB3ZSBoYWQgdG8gYmFja3RyYWNrIGF0IGFueSBwb2ludFxuICBpZiAoc3RhdGUuYmFja3RyYWNrID09PSB0cnVlKSB7XG4gICAgc3RhdGUub3V0cHV0ID0gJyc7XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHN0YXRlLnRva2Vucykge1xuICAgICAgc3RhdGUub3V0cHV0ICs9IHRva2VuLm91dHB1dCAhPSBudWxsID8gdG9rZW4ub3V0cHV0IDogdG9rZW4udmFsdWU7XG5cbiAgICAgIGlmICh0b2tlbi5zdWZmaXgpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IHRva2VuLnN1ZmZpeDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59O1xuXG4vKipcbiAqIEZhc3QgcGF0aHMgZm9yIGNyZWF0aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMgZm9yIGNvbW1vbiBnbG9iIHBhdHRlcm5zLlxuICogVGhpcyBjYW4gc2lnbmlmaWNhbnRseSBzcGVlZCB1cCBwcm9jZXNzaW5nIGFuZCBoYXMgdmVyeSBsaXR0bGUgZG93bnNpZGVcbiAqIGltcGFjdCB3aGVuIG5vbmUgb2YgdGhlIGZhc3QgcGF0aHMgbWF0Y2guXG4gKi9cblxucGFyc2UuZmFzdHBhdGhzID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IG9wdHMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgY29uc3QgbWF4ID0gdHlwZW9mIG9wdHMubWF4TGVuZ3RoID09PSAnbnVtYmVyJyA/IE1hdGgubWluKE1BWF9MRU5HVEgsIG9wdHMubWF4TGVuZ3RoKSA6IE1BWF9MRU5HVEg7XG4gIGNvbnN0IGxlbiA9IGlucHV0Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IG1heCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW5wdXQgbGVuZ3RoOiAke2xlbn0sIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIGxlbmd0aDogJHttYXh9YCk7XG4gIH1cblxuICBpbnB1dCA9IFJFUExBQ0VNRU5UU1tpbnB1dF0gfHwgaW5wdXQ7XG4gIGNvbnN0IHdpbjMyID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuXG4gIC8vIGNyZWF0ZSBjb25zdGFudHMgYmFzZWQgb24gcGxhdGZvcm0sIGZvciB3aW5kb3dzIG9yIHBvc2l4XG4gIGNvbnN0IHtcbiAgICBET1RfTElURVJBTCxcbiAgICBTTEFTSF9MSVRFUkFMLFxuICAgIE9ORV9DSEFSLFxuICAgIERPVFNfU0xBU0gsXG4gICAgTk9fRE9ULFxuICAgIE5PX0RPVFMsXG4gICAgTk9fRE9UU19TTEFTSCxcbiAgICBTVEFSLFxuICAgIFNUQVJUX0FOQ0hPUlxuICB9ID0gY29uc3RhbnRzLmdsb2JDaGFycyh3aW4zMik7XG5cbiAgY29uc3Qgbm9kb3QgPSBvcHRzLmRvdCA/IE5PX0RPVFMgOiBOT19ET1Q7XG4gIGNvbnN0IHNsYXNoRG90ID0gb3B0cy5kb3QgPyBOT19ET1RTX1NMQVNIIDogTk9fRE9UO1xuICBjb25zdCBjYXB0dXJlID0gb3B0cy5jYXB0dXJlID8gJycgOiAnPzonO1xuICBjb25zdCBzdGF0ZSA9IHsgbmVnYXRlZDogZmFsc2UsIHByZWZpeDogJycgfTtcbiAgbGV0IHN0YXIgPSBvcHRzLmJhc2ggPT09IHRydWUgPyAnLio/JyA6IFNUQVI7XG5cbiAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgIHN0YXIgPSBgKCR7c3Rhcn0pYDtcbiAgfVxuXG4gIGNvbnN0IGdsb2JzdGFyID0gb3B0cyA9PiB7XG4gICAgaWYgKG9wdHMubm9nbG9ic3RhciA9PT0gdHJ1ZSkgcmV0dXJuIHN0YXI7XG4gICAgcmV0dXJuIGAoJHtjYXB0dXJlfSg/Oig/ISR7U1RBUlRfQU5DSE9SfSR7b3B0cy5kb3QgPyBET1RTX1NMQVNIIDogRE9UX0xJVEVSQUx9KS4pKj8pYDtcbiAgfTtcblxuICBjb25zdCBjcmVhdGUgPSBzdHIgPT4ge1xuICAgIHN3aXRjaCAoc3RyKSB7XG4gICAgICBjYXNlICcqJzpcbiAgICAgICAgcmV0dXJuIGAke25vZG90fSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJy4qJzpcbiAgICAgICAgcmV0dXJuIGAke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyouKic6XG4gICAgICAgIHJldHVybiBgJHtub2RvdH0ke3N0YXJ9JHtET1RfTElURVJBTH0ke09ORV9DSEFSfSR7c3Rhcn1gO1xuXG4gICAgICBjYXNlICcqLyonOlxuICAgICAgICByZXR1cm4gYCR7bm9kb3R9JHtzdGFyfSR7U0xBU0hfTElURVJBTH0ke09ORV9DSEFSfSR7c2xhc2hEb3R9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyoqJzpcbiAgICAgICAgcmV0dXJuIG5vZG90ICsgZ2xvYnN0YXIob3B0cyk7XG5cbiAgICAgIGNhc2UgJyoqLyonOlxuICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke3NsYXNoRG90fSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyoqLyouKic6XG4gICAgICAgIHJldHVybiBgKD86JHtub2RvdH0ke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH0pPyR7c2xhc2hEb3R9JHtzdGFyfSR7RE9UX0xJVEVSQUx9JHtPTkVfQ0hBUn0ke3N0YXJ9YDtcblxuICAgICAgY2FzZSAnKiovLionOlxuICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXiguKj8pXFwuKFxcdyspJC8uZXhlYyhzdHIpO1xuICAgICAgICBpZiAoIW1hdGNoKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc291cmNlID0gY3JlYXRlKG1hdGNoWzFdKTtcbiAgICAgICAgaWYgKCFzb3VyY2UpIHJldHVybjtcblxuICAgICAgICByZXR1cm4gc291cmNlICsgRE9UX0xJVEVSQUwgKyBtYXRjaFsyXTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb3V0cHV0ID0gdXRpbHMucmVtb3ZlUHJlZml4KGlucHV0LCBzdGF0ZSk7XG4gIGxldCBzb3VyY2UgPSBjcmVhdGUob3V0cHV0KTtcblxuICBpZiAoc291cmNlICYmIG9wdHMuc3RyaWN0U2xhc2hlcyAhPT0gdHJ1ZSkge1xuICAgIHNvdXJjZSArPSBgJHtTTEFTSF9MSVRFUkFMfT9gO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBzY2FuID0gcmVxdWlyZSgnLi9zY2FuJyk7XG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcbmNvbnN0IGlzT2JqZWN0ID0gdmFsID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXRjaGVyIGZ1bmN0aW9uIGZyb20gb25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucy4gVGhlXG4gKiByZXR1cm5lZCBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyB0byBtYXRjaCBhcyBpdHMgZmlyc3QgYXJndW1lbnQsXG4gKiBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSBtYXRjaC4gVGhlIHJldHVybmVkIG1hdGNoZXJcbiAqIGZ1bmN0aW9uIGFsc28gdGFrZXMgYSBib29sZWFuIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdGhhdCwgd2hlbiB0cnVlLFxuICogcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaChnbG9iWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IGlzTWF0Y2ggPSBwaWNvbWF0Y2goJyouISgqYSknKTtcbiAqIGNvbnNvbGUubG9nKGlzTWF0Y2goJ2EuYScpKTsgLy89PiBmYWxzZVxuICogY29uc29sZS5sb2coaXNNYXRjaCgnYS5iJykpOyAvLz0+IHRydWVcbiAqIGBgYFxuICogQG5hbWUgcGljb21hdGNoXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYGdsb2JzYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm5zLlxuICogQHBhcmFtIHtPYmplY3Q9fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge0Z1bmN0aW9uPX0gUmV0dXJucyBhIG1hdGNoZXIgZnVuY3Rpb24uXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IHBpY29tYXRjaCA9IChnbG9iLCBvcHRpb25zLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGdsb2IpKSB7XG4gICAgY29uc3QgZm5zID0gZ2xvYi5tYXAoaW5wdXQgPT4gcGljb21hdGNoKGlucHV0LCBvcHRpb25zLCByZXR1cm5TdGF0ZSkpO1xuICAgIGNvbnN0IGFycmF5TWF0Y2hlciA9IHN0ciA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGlzTWF0Y2ggb2YgZm5zKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gaXNNYXRjaChzdHIpO1xuICAgICAgICBpZiAoc3RhdGUpIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheU1hdGNoZXI7XG4gIH1cblxuICBjb25zdCBpc1N0YXRlID0gaXNPYmplY3QoZ2xvYikgJiYgZ2xvYi50b2tlbnMgJiYgZ2xvYi5pbnB1dDtcblxuICBpZiAoZ2xvYiA9PT0gJycgfHwgKHR5cGVvZiBnbG9iICE9PSAnc3RyaW5nJyAmJiAhaXNTdGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBwYXR0ZXJuIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuICBjb25zdCByZWdleCA9IGlzU3RhdGVcbiAgICA/IHBpY29tYXRjaC5jb21waWxlUmUoZ2xvYiwgb3B0aW9ucylcbiAgICA6IHBpY29tYXRjaC5tYWtlUmUoZ2xvYiwgb3B0aW9ucywgZmFsc2UsIHRydWUpO1xuXG4gIGNvbnN0IHN0YXRlID0gcmVnZXguc3RhdGU7XG4gIGRlbGV0ZSByZWdleC5zdGF0ZTtcblxuICBsZXQgaXNJZ25vcmVkID0gKCkgPT4gZmFsc2U7XG4gIGlmIChvcHRzLmlnbm9yZSkge1xuICAgIGNvbnN0IGlnbm9yZU9wdHMgPSB7IC4uLm9wdGlvbnMsIGlnbm9yZTogbnVsbCwgb25NYXRjaDogbnVsbCwgb25SZXN1bHQ6IG51bGwgfTtcbiAgICBpc0lnbm9yZWQgPSBwaWNvbWF0Y2gob3B0cy5pZ25vcmUsIGlnbm9yZU9wdHMsIHJldHVyblN0YXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZXIgPSAoaW5wdXQsIHJldHVybk9iamVjdCA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgeyBpc01hdGNoLCBtYXRjaCwgb3V0cHV0IH0gPSBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXgsIG9wdGlvbnMsIHsgZ2xvYiwgcG9zaXggfSk7XG4gICAgY29uc3QgcmVzdWx0ID0geyBnbG9iLCBzdGF0ZSwgcmVnZXgsIHBvc2l4LCBpbnB1dCwgb3V0cHV0LCBtYXRjaCwgaXNNYXRjaCB9O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRzLm9uUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvcHRzLm9uUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGlzTWF0Y2ggPT09IGZhbHNlKSB7XG4gICAgICByZXN1bHQuaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdCA/IHJlc3VsdCA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChpc0lnbm9yZWQoaW5wdXQpKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMub25JZ25vcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb3B0cy5vbklnbm9yZShyZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMub25NYXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3B0cy5vbk1hdGNoKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiB0cnVlO1xuICB9O1xuXG4gIGlmIChyZXR1cm5TdGF0ZSkge1xuICAgIG1hdGNoZXIuc3RhdGUgPSBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVyO1xufTtcblxuLyoqXG4gKiBUZXN0IGBpbnB1dGAgd2l0aCB0aGUgZ2l2ZW4gYHJlZ2V4YC4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBtYWluXG4gKiBgcGljb21hdGNoKClgIGZ1bmN0aW9uIHRvIHRlc3QgdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXhbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLnRlc3QoJ2Zvby9iYXInLCAvXig/OihbXi9dKj8pXFwvKFteL10qPykpJC8pKTtcbiAqIC8vIHsgaXNNYXRjaDogdHJ1ZSwgbWF0Y2g6IFsgJ2Zvby8nLCAnZm9vJywgJ2JhcicgXSwgb3V0cHV0OiAnZm9vL2JhcicgfVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfSBgcmVnZXhgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggbWF0Y2hpbmcgaW5mby5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucGljb21hdGNoLnRlc3QgPSAoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCB7IGdsb2IsIHBvc2l4IH0gPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGlucHV0IHRvIGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAoaW5wdXQgPT09ICcnKSB7XG4gICAgcmV0dXJuIHsgaXNNYXRjaDogZmFsc2UsIG91dHB1dDogJycgfTtcbiAgfVxuXG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBmb3JtYXQgPSBvcHRzLmZvcm1hdCB8fCAocG9zaXggPyB1dGlscy50b1Bvc2l4U2xhc2hlcyA6IG51bGwpO1xuICBsZXQgbWF0Y2ggPSBpbnB1dCA9PT0gZ2xvYjtcbiAgbGV0IG91dHB1dCA9IChtYXRjaCAmJiBmb3JtYXQpID8gZm9ybWF0KGlucHV0KSA6IGlucHV0O1xuXG4gIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICBvdXRwdXQgPSBmb3JtYXQgPyBmb3JtYXQoaW5wdXQpIDogaW5wdXQ7XG4gICAgbWF0Y2ggPSBvdXRwdXQgPT09IGdsb2I7XG4gIH1cblxuICBpZiAobWF0Y2ggPT09IGZhbHNlIHx8IG9wdHMuY2FwdHVyZSA9PT0gdHJ1ZSkge1xuICAgIGlmIChvcHRzLm1hdGNoQmFzZSA9PT0gdHJ1ZSB8fCBvcHRzLmJhc2VuYW1lID09PSB0cnVlKSB7XG4gICAgICBtYXRjaCA9IHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCBwb3NpeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoID0gcmVnZXguZXhlYyhvdXRwdXQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGlzTWF0Y2g6IEJvb2xlYW4obWF0Y2gpLCBtYXRjaCwgb3V0cHV0IH07XG59O1xuXG4vKipcbiAqIE1hdGNoIHRoZSBiYXNlbmFtZSBvZiBhIGZpbGVwYXRoLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIGdsb2JbLCBvcHRpb25zXSk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gubWF0Y2hCYXNlKCdmb28vYmFyLmpzJywgJyouanMnKTsgLy8gdHJ1ZVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gYGdsb2JgIEdsb2IgcGF0dGVybiBvciByZWdleCBjcmVhdGVkIGJ5IFsubWFrZVJlXSgjbWFrZVJlKS5cbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5tYXRjaEJhc2UgPSAoaW5wdXQsIGdsb2IsIG9wdGlvbnMsIHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpKSA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gZ2xvYiBpbnN0YW5jZW9mIFJlZ0V4cCA/IGdsb2IgOiBwaWNvbWF0Y2gubWFrZVJlKGdsb2IsIG9wdGlvbnMpO1xuICByZXR1cm4gcmVnZXgudGVzdChwYXRoLmJhc2VuYW1lKGlucHV0KSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiAqKmFueSoqIG9mIHRoZSBnaXZlbiBnbG9iIGBwYXR0ZXJuc2AgbWF0Y2ggdGhlIHNwZWNpZmllZCBgc3RyaW5nYC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2guaXNNYXRjaChzdHJpbmcsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCBbJ2IuKicsICcqLmEnXSkpOyAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCAnYi4qJykpOyAvLz0+IGZhbHNlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBzdHIgVGhlIHN0cmluZyB0byB0ZXN0LlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHBhdHRlcm5zIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpLlxuICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGFueSBwYXR0ZXJucyBtYXRjaCBgc3RyYFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2guaXNNYXRjaCA9IChzdHIsIHBhdHRlcm5zLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybnMsIG9wdGlvbnMpKHN0cik7XG5cbi8qKlxuICogUGFyc2UgYSBnbG9iIHBhdHRlcm4gdG8gY3JlYXRlIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBhIHJlZ3VsYXJcbiAqIGV4cHJlc3Npb24uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3QgcmVzdWx0ID0gcGljb21hdGNoLnBhcnNlKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB1c2VmdWwgcHJvcGVydGllcyBhbmQgb3V0cHV0IHRvIGJlIHVzZWQgYXMgYSByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2gucGFyc2UgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkgcmV0dXJuIHBhdHRlcm4ubWFwKHAgPT4gcGljb21hdGNoLnBhcnNlKHAsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIHBhcnNlKHBhdHRlcm4sIHsgLi4ub3B0aW9ucywgZmFzdHBhdGhzOiBmYWxzZSB9KTtcbn07XG5cbi8qKlxuICogU2NhbiBhIGdsb2IgcGF0dGVybiB0byBzZXBhcmF0ZSB0aGUgcGF0dGVybiBpbnRvIHNlZ21lbnRzLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5zY2FuKGlucHV0Wywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IHBpY29tYXRjaC5zY2FuKCchLi9mb28vKi5qcycpO1xuICogY29uc29sZS5sb2cocmVzdWx0KTtcbiAqIHsgcHJlZml4OiAnIS4vJyxcbiAqICAgaW5wdXQ6ICchLi9mb28vKi5qcycsXG4gKiAgIHN0YXJ0OiAzLFxuICogICBiYXNlOiAnZm9vJyxcbiAqICAgZ2xvYjogJyouanMnLFxuICogICBpc0JyYWNlOiBmYWxzZSxcbiAqICAgaXNCcmFja2V0OiBmYWxzZSxcbiAqICAgaXNHbG9iOiB0cnVlLFxuICogICBpc0V4dGdsb2I6IGZhbHNlLFxuICogICBpc0dsb2JzdGFyOiBmYWxzZSxcbiAqICAgbmVnYXRlZDogdHJ1ZSB9XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIEdsb2IgcGF0dGVybiB0byBzY2FuLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5zY2FuID0gKGlucHV0LCBvcHRpb25zKSA9PiBzY2FuKGlucHV0LCBvcHRpb25zKTtcblxuLyoqXG4gKiBDb21waWxlIGEgcmVndWxhciBleHByZXNzaW9uIGZyb20gdGhlIGBzdGF0ZWAgb2JqZWN0IHJldHVybmVkIGJ5IHRoZVxuICogW3BhcnNlKCldKCNwYXJzZSkgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBgc3RhdGVgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGByZXR1cm5PdXRwdXRgIEludGVuZGVkIGZvciBpbXBsZW1lbnRvcnMsIHRoaXMgYXJndW1lbnQgYWxsb3dzIHlvdSB0byByZXR1cm4gdGhlIHJhdyBvdXRwdXQgZnJvbSB0aGUgcGFyc2VyLlxuICogQHBhcmFtIHtCb29sZWFufSBgcmV0dXJuU3RhdGVgIEFkZHMgdGhlIHN0YXRlIHRvIGEgYHN0YXRlYCBwcm9wZXJ0eSBvbiB0aGUgcmV0dXJuZWQgcmVnZXguIFVzZWZ1bCBmb3IgaW1wbGVtZW50b3JzIGFuZCBkZWJ1Z2dpbmcuXG4gKiBAcmV0dXJuIHtSZWdFeHB9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5jb21waWxlUmUgPSAoc3RhdGUsIG9wdGlvbnMsIHJldHVybk91dHB1dCA9IGZhbHNlLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmIChyZXR1cm5PdXRwdXQgPT09IHRydWUpIHtcbiAgICByZXR1cm4gc3RhdGUub3V0cHV0O1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHByZXBlbmQgPSBvcHRzLmNvbnRhaW5zID8gJycgOiAnXic7XG4gIGNvbnN0IGFwcGVuZCA9IG9wdHMuY29udGFpbnMgPyAnJyA6ICckJztcblxuICBsZXQgc291cmNlID0gYCR7cHJlcGVuZH0oPzoke3N0YXRlLm91dHB1dH0pJHthcHBlbmR9YDtcbiAgaWYgKHN0YXRlICYmIHN0YXRlLm5lZ2F0ZWQgPT09IHRydWUpIHtcbiAgICBzb3VyY2UgPSBgXig/ISR7c291cmNlfSkuKiRgO1xuICB9XG5cbiAgY29uc3QgcmVnZXggPSBwaWNvbWF0Y2gudG9SZWdleChzb3VyY2UsIG9wdGlvbnMpO1xuICBpZiAocmV0dXJuU3RhdGUgPT09IHRydWUpIHtcbiAgICByZWdleC5zdGF0ZSA9IHN0YXRlO1xuICB9XG5cbiAgcmV0dXJuIHJlZ2V4O1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSBhIHBhcnNlZCBnbG9iIHBhdHRlcm4uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBwaWNvbWF0Y2gucGFyc2UoJyouanMnKTtcbiAqIC8vIHBpY29tYXRjaC5jb21waWxlUmUoc3RhdGVbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLmNvbXBpbGVSZShzdGF0ZSkpO1xuICogLy89PiAvXig/Oig/IVxcLikoPz0uKVteL10qP1xcLmpzKSQvXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgc3RhdGVgIFRoZSBvYmplY3QgcmV0dXJuZWQgZnJvbSB0aGUgYC5wYXJzZWAgbWV0aG9kLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHBhcmFtIHtCb29sZWFufSBgcmV0dXJuT3V0cHV0YCBJbXBsZW1lbnRvcnMgbWF5IHVzZSB0aGlzIGFyZ3VtZW50IHRvIHJldHVybiB0aGUgY29tcGlsZWQgb3V0cHV0LCBpbnN0ZWFkIG9mIGEgcmVndWxhciBleHByZXNzaW9uLiBUaGlzIGlzIG5vdCBleHBvc2VkIG9uIHRoZSBvcHRpb25zIHRvIHByZXZlbnQgZW5kLXVzZXJzIGZyb20gbXV0YXRpbmcgdGhlIHJlc3VsdC5cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gYHJldHVyblN0YXRlYCBJbXBsZW1lbnRvcnMgbWF5IHVzZSB0aGlzIGFyZ3VtZW50IHRvIHJldHVybiB0aGUgc3RhdGUgZnJvbSB0aGUgcGFyc2VkIGdsb2Igd2l0aCB0aGUgcmV0dXJuZWQgcmVndWxhciBleHByZXNzaW9uLlxuICogQHJldHVybiB7UmVnRXhwfSBSZXR1cm5zIGEgcmVnZXggY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2gubWFrZVJlID0gKGlucHV0LCBvcHRpb25zID0ge30sIHJldHVybk91dHB1dCA9IGZhbHNlLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmICghaW5wdXQgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgbGV0IHBhcnNlZCA9IHsgbmVnYXRlZDogZmFsc2UsIGZhc3RwYXRoczogdHJ1ZSB9O1xuXG4gIGlmIChvcHRpb25zLmZhc3RwYXRocyAhPT0gZmFsc2UgJiYgKGlucHV0WzBdID09PSAnLicgfHwgaW5wdXRbMF0gPT09ICcqJykpIHtcbiAgICBwYXJzZWQub3V0cHV0ID0gcGFyc2UuZmFzdHBhdGhzKGlucHV0LCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmICghcGFyc2VkLm91dHB1dCkge1xuICAgIHBhcnNlZCA9IHBhcnNlKGlucHV0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiBwaWNvbWF0Y2guY29tcGlsZVJlKHBhcnNlZCwgb3B0aW9ucywgcmV0dXJuT3V0cHV0LCByZXR1cm5TdGF0ZSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcm9tIHRoZSBnaXZlbiByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC50b1JlZ2V4KHNvdXJjZVssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zdCB7IG91dHB1dCB9ID0gcGljb21hdGNoLnBhcnNlKCcqLmpzJyk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gudG9SZWdleChvdXRwdXQpKTtcbiAqIC8vPT4gL14oPzooPyFcXC4pKD89LilbXi9dKj9cXC5qcykkL1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHNvdXJjZWAgUmVndWxhciBleHByZXNzaW9uIHNvdXJjZSBzdHJpbmcuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtSZWdFeHB9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC50b1JlZ2V4ID0gKHNvdXJjZSwgb3B0aW9ucykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHNvdXJjZSwgb3B0cy5mbGFncyB8fCAob3B0cy5ub2Nhc2UgPyAnaScgOiAnJykpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnID09PSB0cnVlKSB0aHJvdyBlcnI7XG4gICAgcmV0dXJuIC8kXi87XG4gIH1cbn07XG5cbi8qKlxuICogUGljb21hdGNoIGNvbnN0YW50cy5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuXG5waWNvbWF0Y2guY29uc3RhbnRzID0gY29uc3RhbnRzO1xuXG4vKipcbiAqIEV4cG9zZSBcInBpY29tYXRjaFwiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBwaWNvbWF0Y2g7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvcGljb21hdGNoJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5jb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbmNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKCdwaWNvbWF0Y2gvbGliL3V0aWxzJyk7XG5jb25zdCBpc0VtcHR5U3RyaW5nID0gdmFsID0+IHZhbCA9PT0gJycgfHwgdmFsID09PSAnLi8nO1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0aGF0IG1hdGNoIG9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0obGlzdCwgcGF0dGVybnNbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0oWydhLmpzJywgJ2EudHh0J10sIFsnKi5qcyddKSk7XG4gKiAvLz0+IFsgJ2EuanMnIF1cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXk8c3RyaW5nPn0gYGxpc3RgIExpc3Qgb2Ygc3RyaW5ncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5PHN0cmluZz59IGBwYXR0ZXJuc2AgT25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucyB0byB1c2UgZm9yIG1hdGNoaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucylcbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIGFuIGFycmF5IG9mIG1hdGNoZXNcbiAqIEBzdW1tYXJ5IGZhbHNlXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IG1pY3JvbWF0Y2ggPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgcGF0dGVybnMgPSBbXS5jb25jYXQocGF0dGVybnMpO1xuICBsaXN0ID0gW10uY29uY2F0KGxpc3QpO1xuXG4gIGxldCBvbWl0ID0gbmV3IFNldCgpO1xuICBsZXQga2VlcCA9IG5ldyBTZXQoKTtcbiAgbGV0IGl0ZW1zID0gbmV3IFNldCgpO1xuICBsZXQgbmVnYXRpdmVzID0gMDtcblxuICBsZXQgb25SZXN1bHQgPSBzdGF0ZSA9PiB7XG4gICAgaXRlbXMuYWRkKHN0YXRlLm91dHB1dCk7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5vblJlc3VsdCkge1xuICAgICAgb3B0aW9ucy5vblJlc3VsdChzdGF0ZSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0dGVybnMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaXNNYXRjaCA9IHBpY29tYXRjaChTdHJpbmcocGF0dGVybnNbaV0pLCB7IC4uLm9wdGlvbnMsIG9uUmVzdWx0IH0sIHRydWUpO1xuICAgIGxldCBuZWdhdGVkID0gaXNNYXRjaC5zdGF0ZS5uZWdhdGVkIHx8IGlzTWF0Y2guc3RhdGUubmVnYXRlZEV4dGdsb2I7XG4gICAgaWYgKG5lZ2F0ZWQpIG5lZ2F0aXZlcysrO1xuXG4gICAgZm9yIChsZXQgaXRlbSBvZiBsaXN0KSB7XG4gICAgICBsZXQgbWF0Y2hlZCA9IGlzTWF0Y2goaXRlbSwgdHJ1ZSk7XG5cbiAgICAgIGxldCBtYXRjaCA9IG5lZ2F0ZWQgPyAhbWF0Y2hlZC5pc01hdGNoIDogbWF0Y2hlZC5pc01hdGNoO1xuICAgICAgaWYgKCFtYXRjaCkgY29udGludWU7XG5cbiAgICAgIGlmIChuZWdhdGVkKSB7XG4gICAgICAgIG9taXQuYWRkKG1hdGNoZWQub3V0cHV0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9taXQuZGVsZXRlKG1hdGNoZWQub3V0cHV0KTtcbiAgICAgICAga2VlcC5hZGQobWF0Y2hlZC5vdXRwdXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCByZXN1bHQgPSBuZWdhdGl2ZXMgPT09IHBhdHRlcm5zLmxlbmd0aCA/IFsuLi5pdGVtc10gOiBbLi4ua2VlcF07XG4gIGxldCBtYXRjaGVzID0gcmVzdWx0LmZpbHRlcihpdGVtID0+ICFvbWl0LmhhcyhpdGVtKSk7XG5cbiAgaWYgKG9wdGlvbnMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDApIHtcbiAgICBpZiAob3B0aW9ucy5mYWlsZ2xvYiA9PT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtYXRjaGVzIGZvdW5kIGZvciBcIiR7cGF0dGVybnMuam9pbignLCAnKX1cImApO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm5vbnVsbCA9PT0gdHJ1ZSB8fCBvcHRpb25zLm51bGxnbG9iID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy51bmVzY2FwZSA/IHBhdHRlcm5zLm1hcChwID0+IHAucmVwbGFjZSgvXFxcXC9nLCAnJykpIDogcGF0dGVybnM7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1hdGNoZXM7XG59O1xuXG4vKipcbiAqIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gKi9cblxubWljcm9tYXRjaC5tYXRjaCA9IG1pY3JvbWF0Y2g7XG5cbi8qKlxuICogUmV0dXJucyBhIG1hdGNoZXIgZnVuY3Rpb24gZnJvbSB0aGUgZ2l2ZW4gZ2xvYiBgcGF0dGVybmAgYW5kIGBvcHRpb25zYC5cbiAqIFRoZSByZXR1cm5lZCBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyB0byBtYXRjaCBhcyBpdHMgb25seSBhcmd1bWVudCBhbmQgcmV0dXJuc1xuICogdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgbWF0Y2guXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0ubWF0Y2hlcihwYXR0ZXJuWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IGlzTWF0Y2ggPSBtbS5tYXRjaGVyKCcqLiEoKmEpJyk7XG4gKiBjb25zb2xlLmxvZyhpc01hdGNoKCdhLmEnKSk7IC8vPT4gZmFsc2VcbiAqIGNvbnNvbGUubG9nKGlzTWF0Y2goJ2EuYicpKTsgLy89PiB0cnVlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmAgR2xvYiBwYXR0ZXJuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gUmV0dXJucyBhIG1hdGNoZXIgZnVuY3Rpb24uXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gubWF0Y2hlciA9IChwYXR0ZXJuLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybiwgb3B0aW9ucyk7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmICoqYW55Kiogb2YgdGhlIGdpdmVuIGdsb2IgYHBhdHRlcm5zYCBtYXRjaCB0aGUgc3BlY2lmaWVkIGBzdHJpbmdgLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLmlzTWF0Y2goc3RyaW5nLCBwYXR0ZXJuc1ssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbS5pc01hdGNoKCdhLmEnLCBbJ2IuKicsICcqLmEnXSkpOyAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKG1tLmlzTWF0Y2goJ2EuYScsICdiLionKSk7IC8vPT4gZmFsc2VcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgIFRoZSBzdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgcGF0dGVybnNgIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgW29wdGlvbnNdYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucykuXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYW55IHBhdHRlcm5zIG1hdGNoIGBzdHJgXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guaXNNYXRjaCA9IChzdHIsIHBhdHRlcm5zLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybnMsIG9wdGlvbnMpKHN0cik7XG5cbi8qKlxuICogQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAqL1xuXG5taWNyb21hdGNoLmFueSA9IG1pY3JvbWF0Y2guaXNNYXRjaDtcblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBzdHJpbmdzIHRoYXQgXyoqZG8gbm90IG1hdGNoIGFueSoqXyBvZiB0aGUgZ2l2ZW4gYHBhdHRlcm5zYC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgbW0gPSByZXF1aXJlKCdtaWNyb21hdGNoJyk7XG4gKiAvLyBtbS5ub3QobGlzdCwgcGF0dGVybnNbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0ubm90KFsnYS5hJywgJ2IuYicsICdjLmMnXSwgJyouYScpKTtcbiAqIC8vPT4gWydiLmInLCAnYy5jJ11cbiAqIGBgYFxuICogQHBhcmFtIHtBcnJheX0gYGxpc3RgIEFycmF5IG9mIHN0cmluZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYHBhdHRlcm5zYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm4gdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgKipkbyBub3QgbWF0Y2gqKiB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gubm90ID0gKGxpc3QsIHBhdHRlcm5zLCBvcHRpb25zID0ge30pID0+IHtcbiAgcGF0dGVybnMgPSBbXS5jb25jYXQocGF0dGVybnMpLm1hcChTdHJpbmcpO1xuICBsZXQgcmVzdWx0ID0gbmV3IFNldCgpO1xuICBsZXQgaXRlbXMgPSBbXTtcblxuICBsZXQgb25SZXN1bHQgPSBzdGF0ZSA9PiB7XG4gICAgaWYgKG9wdGlvbnMub25SZXN1bHQpIG9wdGlvbnMub25SZXN1bHQoc3RhdGUpO1xuICAgIGl0ZW1zLnB1c2goc3RhdGUub3V0cHV0KTtcbiAgfTtcblxuICBsZXQgbWF0Y2hlcyA9IG1pY3JvbWF0Y2gobGlzdCwgcGF0dGVybnMsIHsgLi4ub3B0aW9ucywgb25SZXN1bHQgfSk7XG5cbiAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykge1xuICAgIGlmICghbWF0Y2hlcy5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgcmVzdWx0LmFkZChpdGVtKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFsuLi5yZXN1bHRdO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGBzdHJpbmdgIGNvbnRhaW5zIHRoZSBnaXZlbiBwYXR0ZXJuLiBTaW1pbGFyXG4gKiB0byBbLmlzTWF0Y2hdKCNpc01hdGNoKSBidXQgdGhlIHBhdHRlcm4gY2FuIG1hdGNoIGFueSBwYXJ0IG9mIHRoZSBzdHJpbmcuXG4gKlxuICogYGBganNcbiAqIHZhciBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLmNvbnRhaW5zKHN0cmluZywgcGF0dGVyblssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbS5jb250YWlucygnYWEvYmIvY2MnLCAnKmInKSk7XG4gKiAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKG1tLmNvbnRhaW5zKCdhYS9iYi9jYycsICcqZCcpKTtcbiAqIC8vPT4gZmFsc2VcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgIFRoZSBzdHJpbmcgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYHBhdHRlcm5zYCBHbG9iIHBhdHRlcm4gdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYW55IG9mIHRoZSBwYXR0ZXJucyBtYXRjaGVzIGFueSBwYXJ0IG9mIGBzdHJgLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLmNvbnRhaW5zID0gKHN0ciwgcGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIHN0cmluZzogXCIke3V0aWwuaW5zcGVjdChzdHIpfVwiYCk7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLnNvbWUocCA9PiBtaWNyb21hdGNoLmNvbnRhaW5zKHN0ciwgcCwgb3B0aW9ucykpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgIGlmIChpc0VtcHR5U3RyaW5nKHN0cikgfHwgaXNFbXB0eVN0cmluZyhwYXR0ZXJuKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzdHIuaW5jbHVkZXMocGF0dGVybikgfHwgKHN0ci5zdGFydHNXaXRoKCcuLycpICYmIHN0ci5zbGljZSgyKS5pbmNsdWRlcyhwYXR0ZXJuKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtaWNyb21hdGNoLmlzTWF0Y2goc3RyLCBwYXR0ZXJuLCB7IC4uLm9wdGlvbnMsIGNvbnRhaW5zOiB0cnVlIH0pO1xufTtcblxuLyoqXG4gKiBGaWx0ZXIgdGhlIGtleXMgb2YgdGhlIGdpdmVuIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBgZ2xvYmAgcGF0dGVyblxuICogYW5kIGBvcHRpb25zYC4gRG9lcyBub3QgYXR0ZW1wdCB0byBtYXRjaCBuZXN0ZWQga2V5cy4gSWYgeW91IG5lZWQgdGhpcyBmZWF0dXJlLFxuICogdXNlIFtnbG9iLW9iamVjdF1bXSBpbnN0ZWFkLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLm1hdGNoS2V5cyhvYmplY3QsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IG9iaiA9IHsgYWE6ICdhJywgYWI6ICdiJywgYWM6ICdjJyB9O1xuICogY29uc29sZS5sb2cobW0ubWF0Y2hLZXlzKG9iaiwgJypiJykpO1xuICogLy89PiB7IGFiOiAnYicgfVxuICogYGBgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9iamVjdGAgVGhlIG9iamVjdCB3aXRoIGtleXMgdG8gZmlsdGVyLlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBwYXR0ZXJuc2AgT25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucyB0byB1c2UgZm9yIG1hdGNoaW5nLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucykgZm9yIGNoYW5naW5nIGhvdyBtYXRjaGVzIGFyZSBwZXJmb3JtZWRcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCBvbmx5IGtleXMgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGF0dGVybnMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gubWF0Y2hLZXlzID0gKG9iaiwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgaWYgKCF1dGlscy5pc09iamVjdChvYmopKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCcpO1xuICB9XG4gIGxldCBrZXlzID0gbWljcm9tYXRjaChPYmplY3Qua2V5cyhvYmopLCBwYXR0ZXJucywgb3B0aW9ucyk7XG4gIGxldCByZXMgPSB7fTtcbiAgZm9yIChsZXQga2V5IG9mIGtleXMpIHJlc1trZXldID0gb2JqW2tleV07XG4gIHJldHVybiByZXM7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBzb21lIG9mIHRoZSBzdHJpbmdzIGluIHRoZSBnaXZlbiBgbGlzdGAgbWF0Y2ggYW55IG9mIHRoZSBnaXZlbiBnbG9iIGBwYXR0ZXJuc2AuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uc29tZShsaXN0LCBwYXR0ZXJuc1ssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhtbS5zb21lKFsnZm9vLmpzJywgJ2Jhci5qcyddLCBbJyouanMnLCAnIWZvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKiBjb25zb2xlLmxvZyhtbS5zb21lKFsnZm9vLmpzJ10sIFsnKi5qcycsICchZm9vLmpzJ10pKTtcbiAqIC8vIGZhbHNlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgbGlzdGAgVGhlIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIHRvIHRlc3QuIFJldHVybnMgYXMgc29vbiBhcyB0aGUgZmlyc3QgbWF0Y2ggaXMgZm91bmQuXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYHBhdHRlcm5zYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm5zIHRvIHVzZSBmb3IgbWF0Y2hpbmcuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgIFNlZSBhdmFpbGFibGUgW29wdGlvbnNdKCNvcHRpb25zKSBmb3IgY2hhbmdpbmcgaG93IG1hdGNoZXMgYXJlIHBlcmZvcm1lZFxuICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGFueSBgcGF0dGVybnNgIG1hdGNoZXMgYW55IG9mIHRoZSBzdHJpbmdzIGluIGBsaXN0YFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLnNvbWUgPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IGl0ZW1zID0gW10uY29uY2F0KGxpc3QpO1xuXG4gIGZvciAobGV0IHBhdHRlcm4gb2YgW10uY29uY2F0KHBhdHRlcm5zKSkge1xuICAgIGxldCBpc01hdGNoID0gcGljb21hdGNoKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucyk7XG4gICAgaWYgKGl0ZW1zLnNvbWUoaXRlbSA9PiBpc01hdGNoKGl0ZW0pKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGV2ZXJ5IHN0cmluZyBpbiB0aGUgZ2l2ZW4gYGxpc3RgIG1hdGNoZXNcbiAqIGFueSBvZiB0aGUgZ2l2ZW4gZ2xvYiBgcGF0dGVybnNgLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtbSA9IHJlcXVpcmUoJ21pY3JvbWF0Y2gnKTtcbiAqIC8vIG1tLmV2ZXJ5KGxpc3QsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnNvbGUubG9nKG1tLmV2ZXJ5KCdmb28uanMnLCBbJ2Zvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKiBjb25zb2xlLmxvZyhtbS5ldmVyeShbJ2Zvby5qcycsICdiYXIuanMnXSwgWycqLmpzJ10pKTtcbiAqIC8vIHRydWVcbiAqIGNvbnNvbGUubG9nKG1tLmV2ZXJ5KFsnZm9vLmpzJywgJ2Jhci5qcyddLCBbJyouanMnLCAnIWZvby5qcyddKSk7XG4gKiAvLyBmYWxzZVxuICogY29uc29sZS5sb2cobW0uZXZlcnkoWydmb28uanMnXSwgWycqLmpzJywgJyFmb28uanMnXSkpO1xuICogLy8gZmFsc2VcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBsaXN0YCBUaGUgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MgdG8gdGVzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgcGF0dGVybnNgIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYWxsIGBwYXR0ZXJuc2AgbWF0Y2hlcyBhbGwgb2YgdGhlIHN0cmluZ3MgaW4gYGxpc3RgXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guZXZlcnkgPSAobGlzdCwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IGl0ZW1zID0gW10uY29uY2F0KGxpc3QpO1xuXG4gIGZvciAobGV0IHBhdHRlcm4gb2YgW10uY29uY2F0KHBhdHRlcm5zKSkge1xuICAgIGxldCBpc01hdGNoID0gcGljb21hdGNoKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucyk7XG4gICAgaWYgKCFpdGVtcy5ldmVyeShpdGVtID0+IGlzTWF0Y2goaXRlbSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgKiphbGwqKiBvZiB0aGUgZ2l2ZW4gYHBhdHRlcm5zYCBtYXRjaFxuICogdGhlIHNwZWNpZmllZCBzdHJpbmcuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uYWxsKHN0cmluZywgcGF0dGVybnNbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0uYWxsKCdmb28uanMnLCBbJ2Zvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKlxuICogY29uc29sZS5sb2cobW0uYWxsKCdmb28uanMnLCBbJyouanMnLCAnIWZvby5qcyddKSk7XG4gKiAvLyBmYWxzZVxuICpcbiAqIGNvbnNvbGUubG9nKG1tLmFsbCgnZm9vLmpzJywgWycqLmpzJywgJ2Zvby5qcyddKSk7XG4gKiAvLyB0cnVlXG4gKlxuICogY29uc29sZS5sb2cobW0uYWxsKCdmb28uanMnLCBbJyouanMnLCAnZionLCAnKm8qJywgJypvLmpzJ10pKTtcbiAqIC8vIHRydWVcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGBzdHJgIFRoZSBzdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBgcGF0dGVybnNgIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpIGZvciBjaGFuZ2luZyBob3cgbWF0Y2hlcyBhcmUgcGVyZm9ybWVkXG4gKiBAcmV0dXJuIHtCb29sZWFufSBSZXR1cm5zIHRydWUgaWYgYW55IHBhdHRlcm5zIG1hdGNoIGBzdHJgXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guYWxsID0gKHN0ciwgcGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBzdHJpbmc6IFwiJHt1dGlsLmluc3BlY3Qoc3RyKX1cImApO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChwYXR0ZXJucykuZXZlcnkocCA9PiBwaWNvbWF0Y2gocCwgb3B0aW9ucykoc3RyKSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2YgbWF0Y2hlcyBjYXB0dXJlZCBieSBgcGF0dGVybmAgaW4gYHN0cmluZywgb3IgYG51bGxgIGlmIHRoZSBwYXR0ZXJuIGRpZCBub3QgbWF0Y2guXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0uY2FwdHVyZShwYXR0ZXJuLCBzdHJpbmdbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0uY2FwdHVyZSgndGVzdC8qLmpzJywgJ3Rlc3QvZm9vLmpzJykpO1xuICogLy89PiBbJ2ZvbyddXG4gKiBjb25zb2xlLmxvZyhtbS5jYXB0dXJlKCd0ZXN0LyouanMnLCAnZm9vL2Jhci5jc3MnKSk7XG4gKiAvLz0+IG51bGxcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBnbG9iYCBHbG9iIHBhdHRlcm4gdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIFN0cmluZyB0byBtYXRjaFxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYCBTZWUgYXZhaWxhYmxlIFtvcHRpb25zXSgjb3B0aW9ucykgZm9yIGNoYW5naW5nIGhvdyBtYXRjaGVzIGFyZSBwZXJmb3JtZWRcbiAqIEByZXR1cm4ge0FycmF5fG51bGx9IFJldHVybnMgYW4gYXJyYXkgb2YgY2FwdHVyZXMgaWYgdGhlIGlucHV0IG1hdGNoZXMgdGhlIGdsb2IgcGF0dGVybiwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxubWljcm9tYXRjaC5jYXB0dXJlID0gKGdsb2IsIGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGxldCBwb3NpeCA9IHV0aWxzLmlzV2luZG93cyhvcHRpb25zKTtcbiAgbGV0IHJlZ2V4ID0gcGljb21hdGNoLm1ha2VSZShTdHJpbmcoZ2xvYiksIHsgLi4ub3B0aW9ucywgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgbGV0IG1hdGNoID0gcmVnZXguZXhlYyhwb3NpeCA/IHV0aWxzLnRvUG9zaXhTbGFzaGVzKGlucHV0KSA6IGlucHV0KTtcblxuICBpZiAobWF0Y2gpIHtcbiAgICByZXR1cm4gbWF0Y2guc2xpY2UoMSkubWFwKHYgPT4gdiA9PT0gdm9pZCAwID8gJycgOiB2KTtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSB0aGUgZ2l2ZW4gZ2xvYiBgcGF0dGVybmAuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogLy8gbW0ubWFrZVJlKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cobW0ubWFrZVJlKCcqLmpzJykpO1xuICogLy89PiAvXig/OihcXC5bXFxcXFxcL10pPyg/IVxcLikoPz0uKVteXFwvXSo/XFwuanMpJC9cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBwYXR0ZXJuYCBBIGdsb2IgcGF0dGVybiB0byBjb252ZXJ0IHRvIHJlZ2V4LlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7UmVnRXhwfSBSZXR1cm5zIGEgcmVnZXggY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLm1ha2VSZSA9ICguLi5hcmdzKSA9PiBwaWNvbWF0Y2gubWFrZVJlKC4uLmFyZ3MpO1xuXG4vKipcbiAqIFNjYW4gYSBnbG9iIHBhdHRlcm4gdG8gc2VwYXJhdGUgdGhlIHBhdHRlcm4gaW50byBzZWdtZW50cy4gVXNlZFxuICogYnkgdGhlIFtzcGxpdF0oI3NwbGl0KSBtZXRob2QuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBtbS5zY2FuKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5taWNyb21hdGNoLnNjYW4gPSAoLi4uYXJncykgPT4gcGljb21hdGNoLnNjYW4oLi4uYXJncyk7XG5cbi8qKlxuICogUGFyc2UgYSBnbG9iIHBhdHRlcm4gdG8gY3JlYXRlIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBhIHJlZ3VsYXJcbiAqIGV4cHJlc3Npb24uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IG1tID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBtbShwYXR0ZXJuWywgb3B0aW9uc10pO1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGdsb2JgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggdXNlZnVsIHByb3BlcnRpZXMgYW5kIG91dHB1dCB0byBiZSB1c2VkIGFzIHJlZ2V4IHNvdXJjZSBzdHJpbmcuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2gucGFyc2UgPSAocGF0dGVybnMsIG9wdGlvbnMpID0+IHtcbiAgbGV0IHJlcyA9IFtdO1xuICBmb3IgKGxldCBwYXR0ZXJuIG9mIFtdLmNvbmNhdChwYXR0ZXJucyB8fCBbXSkpIHtcbiAgICBmb3IgKGxldCBzdHIgb2YgYnJhY2VzKFN0cmluZyhwYXR0ZXJuKSwgb3B0aW9ucykpIHtcbiAgICAgIHJlcy5wdXNoKHBpY29tYXRjaC5wYXJzZShzdHIsIG9wdGlvbnMpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cbi8qKlxuICogUHJvY2VzcyB0aGUgZ2l2ZW4gYnJhY2UgYHBhdHRlcm5gLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCB7IGJyYWNlcyB9ID0gcmVxdWlyZSgnbWljcm9tYXRjaCcpO1xuICogY29uc29sZS5sb2coYnJhY2VzKCdmb28ve2EsYixjfS9iYXInKSk7XG4gKiAvLz0+IFsgJ2Zvby8oYXxifGMpL2JhcicgXVxuICpcbiAqIGNvbnNvbGUubG9nKGJyYWNlcygnZm9vL3thLGIsY30vYmFyJywgeyBleHBhbmQ6IHRydWUgfSkpO1xuICogLy89PiBbICdmb28vYS9iYXInLCAnZm9vL2IvYmFyJywgJ2Zvby9jL2JhcicgXVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHBhdHRlcm5gIFN0cmluZyB3aXRoIGJyYWNlIHBhdHRlcm4gdG8gcHJvY2Vzcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgQW55IFtvcHRpb25zXSgjb3B0aW9ucykgdG8gY2hhbmdlIGhvdyBleHBhbnNpb24gaXMgcGVyZm9ybWVkLiBTZWUgdGhlIFticmFjZXNdW10gbGlicmFyeSBmb3IgYWxsIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1pY3JvbWF0Y2guYnJhY2VzID0gKHBhdHRlcm4sIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBwYXR0ZXJuICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgaWYgKChvcHRpb25zICYmIG9wdGlvbnMubm9icmFjZSA9PT0gdHJ1ZSkgfHwgIS9cXHsuKlxcfS8udGVzdChwYXR0ZXJuKSkge1xuICAgIHJldHVybiBbcGF0dGVybl07XG4gIH1cbiAgcmV0dXJuIGJyYWNlcyhwYXR0ZXJuLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogRXhwYW5kIGJyYWNlc1xuICovXG5cbm1pY3JvbWF0Y2guYnJhY2VFeHBhbmQgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAodHlwZW9mIHBhdHRlcm4gIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBhIHN0cmluZycpO1xuICByZXR1cm4gbWljcm9tYXRjaC5icmFjZXMocGF0dGVybiwgeyAuLi5vcHRpb25zLCBleHBhbmQ6IHRydWUgfSk7XG59O1xuXG4vKipcbiAqIEV4cG9zZSBtaWNyb21hdGNoXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBtaWNyb21hdGNoO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm1hdGNoQW55ID0gZXhwb3J0cy5jb252ZXJ0UGF0dGVybnNUb1JlID0gZXhwb3J0cy5tYWtlUmUgPSBleHBvcnRzLmdldFBhdHRlcm5QYXJ0cyA9IGV4cG9ydHMuZXhwYW5kQnJhY2VFeHBhbnNpb24gPSBleHBvcnRzLmV4cGFuZFBhdHRlcm5zV2l0aEJyYWNlRXhwYW5zaW9uID0gZXhwb3J0cy5pc0FmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybiA9IGV4cG9ydHMuZW5kc1dpdGhTbGFzaEdsb2JTdGFyID0gZXhwb3J0cy5oYXNHbG9iU3RhciA9IGV4cG9ydHMuZ2V0QmFzZURpcmVjdG9yeSA9IGV4cG9ydHMuaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5ID0gZXhwb3J0cy5nZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5ID0gZXhwb3J0cy5nZXRQYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnkgPSBleHBvcnRzLmdldFBvc2l0aXZlUGF0dGVybnMgPSBleHBvcnRzLmdldE5lZ2F0aXZlUGF0dGVybnMgPSBleHBvcnRzLmlzUG9zaXRpdmVQYXR0ZXJuID0gZXhwb3J0cy5pc05lZ2F0aXZlUGF0dGVybiA9IGV4cG9ydHMuY29udmVydFRvTmVnYXRpdmVQYXR0ZXJuID0gZXhwb3J0cy5jb252ZXJ0VG9Qb3NpdGl2ZVBhdHRlcm4gPSBleHBvcnRzLmlzRHluYW1pY1BhdHRlcm4gPSBleHBvcnRzLmlzU3RhdGljUGF0dGVybiA9IHZvaWQgMDtcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmNvbnN0IGdsb2JQYXJlbnQgPSByZXF1aXJlKFwiZ2xvYi1wYXJlbnRcIik7XG5jb25zdCBtaWNyb21hdGNoID0gcmVxdWlyZShcIm1pY3JvbWF0Y2hcIik7XG5jb25zdCBHTE9CU1RBUiA9ICcqKic7XG5jb25zdCBFU0NBUEVfU1lNQk9MID0gJ1xcXFwnO1xuY29uc3QgQ09NTU9OX0dMT0JfU1lNQk9MU19SRSA9IC9bKj9dfF4hLztcbmNvbnN0IFJFR0VYX0NIQVJBQ1RFUl9DTEFTU19TWU1CT0xTX1JFID0gL1xcW1teW10qXS87XG5jb25zdCBSRUdFWF9HUk9VUF9TWU1CT0xTX1JFID0gLyg/Ol58W14hKis/QF0pXFwoW14oXSpcXHxbXnxdKlxcKS87XG5jb25zdCBHTE9CX0VYVEVOU0lPTl9TWU1CT0xTX1JFID0gL1shKis/QF1cXChbXihdKlxcKS87XG5jb25zdCBCUkFDRV9FWFBBTlNJT05fU0VQQVJBVE9SU19SRSA9IC8sfFxcLlxcLi87XG5mdW5jdGlvbiBpc1N0YXRpY1BhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7XG4gICAgcmV0dXJuICFpc0R5bmFtaWNQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMpO1xufVxuZXhwb3J0cy5pc1N0YXRpY1BhdHRlcm4gPSBpc1N0YXRpY1BhdHRlcm47XG5mdW5jdGlvbiBpc0R5bmFtaWNQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMgPSB7fSkge1xuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbCBjYXNlIHdpdGggYW4gZW1wdHkgc3RyaW5nIGlzIG5lY2Vzc2FyeSBmb3IgbWF0Y2hpbmcgcGF0dGVybnMgdGhhdCBzdGFydCB3aXRoIGEgZm9yd2FyZCBzbGFzaC5cbiAgICAgKiBBbiBlbXB0eSBzdHJpbmcgY2Fubm90IGJlIGEgZHluYW1pYyBwYXR0ZXJuLlxuICAgICAqIEZvciBleGFtcGxlLCB0aGUgcGF0dGVybiBgL2xpYi8qYCB3aWxsIGJlIHNwcmVhZCBpbnRvIHBhcnRzOiAnJywgJ2xpYicsICcqJy5cbiAgICAgKi9cbiAgICBpZiAocGF0dGVybiA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIHRoZSBgY2FzZVNlbnNpdGl2ZU1hdGNoYCBvcHRpb24gaXMgZGlzYWJsZWQsIGFsbCBwYXR0ZXJucyBtdXN0IGJlIG1hcmtlZCBhcyBkeW5hbWljLCBiZWNhdXNlIHdlIGNhbm5vdCBjaGVja1xuICAgICAqIGZpbGVwYXRoIGRpcmVjdGx5ICh3aXRob3V0IHJlYWQgZGlyZWN0b3J5KS5cbiAgICAgKi9cbiAgICBpZiAob3B0aW9ucy5jYXNlU2Vuc2l0aXZlTWF0Y2ggPT09IGZhbHNlIHx8IHBhdHRlcm4uaW5jbHVkZXMoRVNDQVBFX1NZTUJPTCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChDT01NT05fR0xPQl9TWU1CT0xTX1JFLnRlc3QocGF0dGVybikgfHwgUkVHRVhfQ0hBUkFDVEVSX0NMQVNTX1NZTUJPTFNfUkUudGVzdChwYXR0ZXJuKSB8fCBSRUdFWF9HUk9VUF9TWU1CT0xTX1JFLnRlc3QocGF0dGVybikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmV4dGdsb2IgIT09IGZhbHNlICYmIEdMT0JfRVhURU5TSU9OX1NZTUJPTFNfUkUudGVzdChwYXR0ZXJuKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYnJhY2VFeHBhbnNpb24gIT09IGZhbHNlICYmIGhhc0JyYWNlRXhwYW5zaW9uKHBhdHRlcm4pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnRzLmlzRHluYW1pY1BhdHRlcm4gPSBpc0R5bmFtaWNQYXR0ZXJuO1xuZnVuY3Rpb24gaGFzQnJhY2VFeHBhbnNpb24ocGF0dGVybikge1xuICAgIGNvbnN0IG9wZW5pbmdCcmFjZUluZGV4ID0gcGF0dGVybi5pbmRleE9mKCd7Jyk7XG4gICAgaWYgKG9wZW5pbmdCcmFjZUluZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNsb3NpbmdCcmFjZUluZGV4ID0gcGF0dGVybi5pbmRleE9mKCd9Jywgb3BlbmluZ0JyYWNlSW5kZXggKyAxKTtcbiAgICBpZiAoY2xvc2luZ0JyYWNlSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYnJhY2VDb250ZW50ID0gcGF0dGVybi5zbGljZShvcGVuaW5nQnJhY2VJbmRleCwgY2xvc2luZ0JyYWNlSW5kZXgpO1xuICAgIHJldHVybiBCUkFDRV9FWFBBTlNJT05fU0VQQVJBVE9SU19SRS50ZXN0KGJyYWNlQ29udGVudCk7XG59XG5mdW5jdGlvbiBjb252ZXJ0VG9Qb3NpdGl2ZVBhdHRlcm4ocGF0dGVybikge1xuICAgIHJldHVybiBpc05lZ2F0aXZlUGF0dGVybihwYXR0ZXJuKSA/IHBhdHRlcm4uc2xpY2UoMSkgOiBwYXR0ZXJuO1xufVxuZXhwb3J0cy5jb252ZXJ0VG9Qb3NpdGl2ZVBhdHRlcm4gPSBjb252ZXJ0VG9Qb3NpdGl2ZVBhdHRlcm47XG5mdW5jdGlvbiBjb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4ocGF0dGVybikge1xuICAgIHJldHVybiAnIScgKyBwYXR0ZXJuO1xufVxuZXhwb3J0cy5jb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm4gPSBjb252ZXJ0VG9OZWdhdGl2ZVBhdHRlcm47XG5mdW5jdGlvbiBpc05lZ2F0aXZlUGF0dGVybihwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpICYmIHBhdHRlcm5bMV0gIT09ICcoJztcbn1cbmV4cG9ydHMuaXNOZWdhdGl2ZVBhdHRlcm4gPSBpc05lZ2F0aXZlUGF0dGVybjtcbmZ1bmN0aW9uIGlzUG9zaXRpdmVQYXR0ZXJuKHBhdHRlcm4pIHtcbiAgICByZXR1cm4gIWlzTmVnYXRpdmVQYXR0ZXJuKHBhdHRlcm4pO1xufVxuZXhwb3J0cy5pc1Bvc2l0aXZlUGF0dGVybiA9IGlzUG9zaXRpdmVQYXR0ZXJuO1xuZnVuY3Rpb24gZ2V0TmVnYXRpdmVQYXR0ZXJucyhwYXR0ZXJucykge1xuICAgIHJldHVybiBwYXR0ZXJucy5maWx0ZXIoaXNOZWdhdGl2ZVBhdHRlcm4pO1xufVxuZXhwb3J0cy5nZXROZWdhdGl2ZVBhdHRlcm5zID0gZ2V0TmVnYXRpdmVQYXR0ZXJucztcbmZ1bmN0aW9uIGdldFBvc2l0aXZlUGF0dGVybnMocGF0dGVybnMpIHtcbiAgICByZXR1cm4gcGF0dGVybnMuZmlsdGVyKGlzUG9zaXRpdmVQYXR0ZXJuKTtcbn1cbmV4cG9ydHMuZ2V0UG9zaXRpdmVQYXR0ZXJucyA9IGdldFBvc2l0aXZlUGF0dGVybnM7XG4vKipcbiAqIFJldHVybnMgcGF0dGVybnMgdGhhdCBjYW4gYmUgYXBwbGllZCBpbnNpZGUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBbJy4vKicsICcqJywgJ2EvKiddXG4gKiBnZXRQYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnkoWycuLyonLCAnKicsICdhLyonLCAnLi4vKicsICcuLy4uLyonXSlcbiAqL1xuZnVuY3Rpb24gZ2V0UGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5KHBhdHRlcm5zKSB7XG4gICAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcigocGF0dGVybikgPT4gIWlzUGF0dGVyblJlbGF0ZWRUb1BhcmVudERpcmVjdG9yeShwYXR0ZXJuKSk7XG59XG5leHBvcnRzLmdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeSA9IGdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeTtcbi8qKlxuICogUmV0dXJucyBwYXR0ZXJucyB0byBiZSBleHBhbmRlZCByZWxhdGl2ZSB0byAob3V0c2lkZSkgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBbJy4uLyonLCAnLi8uLi8qJ11cbiAqIGdldFBhdHRlcm5zSW5zaWRlQ3VycmVudERpcmVjdG9yeShbJy4vKicsICcqJywgJ2EvKicsICcuLi8qJywgJy4vLi4vKiddKVxuICovXG5mdW5jdGlvbiBnZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5KHBhdHRlcm5zKSB7XG4gICAgcmV0dXJuIHBhdHRlcm5zLmZpbHRlcihpc1BhdHRlcm5SZWxhdGVkVG9QYXJlbnREaXJlY3RvcnkpO1xufVxuZXhwb3J0cy5nZXRQYXR0ZXJuc091dHNpZGVDdXJyZW50RGlyZWN0b3J5ID0gZ2V0UGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeTtcbmZ1bmN0aW9uIGlzUGF0dGVyblJlbGF0ZWRUb1BhcmVudERpcmVjdG9yeShwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uc3RhcnRzV2l0aCgnLi4nKSB8fCBwYXR0ZXJuLnN0YXJ0c1dpdGgoJy4vLi4nKTtcbn1cbmV4cG9ydHMuaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5ID0gaXNQYXR0ZXJuUmVsYXRlZFRvUGFyZW50RGlyZWN0b3J5O1xuZnVuY3Rpb24gZ2V0QmFzZURpcmVjdG9yeShwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIGdsb2JQYXJlbnQocGF0dGVybiwgeyBmbGlwQmFja3NsYXNoZXM6IGZhbHNlIH0pO1xufVxuZXhwb3J0cy5nZXRCYXNlRGlyZWN0b3J5ID0gZ2V0QmFzZURpcmVjdG9yeTtcbmZ1bmN0aW9uIGhhc0dsb2JTdGFyKHBhdHRlcm4pIHtcbiAgICByZXR1cm4gcGF0dGVybi5pbmNsdWRlcyhHTE9CU1RBUik7XG59XG5leHBvcnRzLmhhc0dsb2JTdGFyID0gaGFzR2xvYlN0YXI7XG5mdW5jdGlvbiBlbmRzV2l0aFNsYXNoR2xvYlN0YXIocGF0dGVybikge1xuICAgIHJldHVybiBwYXR0ZXJuLmVuZHNXaXRoKCcvJyArIEdMT0JTVEFSKTtcbn1cbmV4cG9ydHMuZW5kc1dpdGhTbGFzaEdsb2JTdGFyID0gZW5kc1dpdGhTbGFzaEdsb2JTdGFyO1xuZnVuY3Rpb24gaXNBZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm4ocGF0dGVybikge1xuICAgIGNvbnN0IGJhc2VuYW1lID0gcGF0aC5iYXNlbmFtZShwYXR0ZXJuKTtcbiAgICByZXR1cm4gZW5kc1dpdGhTbGFzaEdsb2JTdGFyKHBhdHRlcm4pIHx8IGlzU3RhdGljUGF0dGVybihiYXNlbmFtZSk7XG59XG5leHBvcnRzLmlzQWZmZWN0RGVwdGhPZlJlYWRpbmdQYXR0ZXJuID0gaXNBZmZlY3REZXB0aE9mUmVhZGluZ1BhdHRlcm47XG5mdW5jdGlvbiBleHBhbmRQYXR0ZXJuc1dpdGhCcmFjZUV4cGFuc2lvbihwYXR0ZXJucykge1xuICAgIHJldHVybiBwYXR0ZXJucy5yZWR1Y2UoKGNvbGxlY3Rpb24sIHBhdHRlcm4pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uY29uY2F0KGV4cGFuZEJyYWNlRXhwYW5zaW9uKHBhdHRlcm4pKTtcbiAgICB9LCBbXSk7XG59XG5leHBvcnRzLmV4cGFuZFBhdHRlcm5zV2l0aEJyYWNlRXhwYW5zaW9uID0gZXhwYW5kUGF0dGVybnNXaXRoQnJhY2VFeHBhbnNpb247XG5mdW5jdGlvbiBleHBhbmRCcmFjZUV4cGFuc2lvbihwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIG1pY3JvbWF0Y2guYnJhY2VzKHBhdHRlcm4sIHtcbiAgICAgICAgZXhwYW5kOiB0cnVlLFxuICAgICAgICBub2R1cGVzOiB0cnVlXG4gICAgfSk7XG59XG5leHBvcnRzLmV4cGFuZEJyYWNlRXhwYW5zaW9uID0gZXhwYW5kQnJhY2VFeHBhbnNpb247XG5mdW5jdGlvbiBnZXRQYXR0ZXJuUGFydHMocGF0dGVybiwgb3B0aW9ucykge1xuICAgIGxldCB7IHBhcnRzIH0gPSBtaWNyb21hdGNoLnNjYW4ocGF0dGVybiwgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKSwgeyBwYXJ0czogdHJ1ZSB9KSk7XG4gICAgLyoqXG4gICAgICogVGhlIHNjYW4gbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgYXJyYXkgaW4gc29tZSBjYXNlcy5cbiAgICAgKiBTZWUgbWljcm9tYXRjaC9waWNvbWF0Y2gjNTggZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKi9cbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHBhcnRzID0gW3BhdHRlcm5dO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgc2NhbiBtZXRob2QgZG9lcyBub3QgcmV0dXJuIGFuIGVtcHR5IHBhcnQgZm9yIHRoZSBwYXR0ZXJuIHdpdGggYSBmb3J3YXJkIHNsYXNoLlxuICAgICAqIFRoaXMgaXMgYW5vdGhlciBwYXJ0IG9mIG1pY3JvbWF0Y2gvcGljb21hdGNoIzU4LlxuICAgICAqL1xuICAgIGlmIChwYXJ0c1swXS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgcGFydHNbMF0gPSBwYXJ0c1swXS5zbGljZSgxKTtcbiAgICAgICAgcGFydHMudW5zaGlmdCgnJyk7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0cztcbn1cbmV4cG9ydHMuZ2V0UGF0dGVyblBhcnRzID0gZ2V0UGF0dGVyblBhcnRzO1xuZnVuY3Rpb24gbWFrZVJlKHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbWljcm9tYXRjaC5tYWtlUmUocGF0dGVybiwgb3B0aW9ucyk7XG59XG5leHBvcnRzLm1ha2VSZSA9IG1ha2VSZTtcbmZ1bmN0aW9uIGNvbnZlcnRQYXR0ZXJuc1RvUmUocGF0dGVybnMsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gcGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBtYWtlUmUocGF0dGVybiwgb3B0aW9ucykpO1xufVxuZXhwb3J0cy5jb252ZXJ0UGF0dGVybnNUb1JlID0gY29udmVydFBhdHRlcm5zVG9SZTtcbmZ1bmN0aW9uIG1hdGNoQW55KGVudHJ5LCBwYXR0ZXJuc1JlKSB7XG4gICAgcmV0dXJuIHBhdHRlcm5zUmUuc29tZSgocGF0dGVyblJlKSA9PiBwYXR0ZXJuUmUudGVzdChlbnRyeSkpO1xufVxuZXhwb3J0cy5tYXRjaEFueSA9IG1hdGNoQW55O1xuIiwiJ3VzZSBzdHJpY3QnXG4vKlxuICogbWVyZ2UyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vdGVhbWJpdGlvbi9tZXJnZTJcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMCBUZWFtYml0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKi9cbmNvbnN0IFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG5jb25zdCBQYXNzVGhyb3VnaCA9IFN0cmVhbS5QYXNzVGhyb3VnaFxuY29uc3Qgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2VcblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZTJcblxuZnVuY3Rpb24gbWVyZ2UyICgpIHtcbiAgY29uc3Qgc3RyZWFtc1F1ZXVlID0gW11cbiAgY29uc3QgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKVxuICBsZXQgbWVyZ2luZyA9IGZhbHNlXG4gIGxldCBvcHRpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdXG5cbiAgaWYgKG9wdGlvbnMgJiYgIUFycmF5LmlzQXJyYXkob3B0aW9ucykgJiYgb3B0aW9ucy5waXBlID09IG51bGwpIHtcbiAgICBhcmdzLnBvcCgpXG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICBjb25zdCBkb0VuZCA9IG9wdGlvbnMuZW5kICE9PSBmYWxzZVxuICBjb25zdCBkb1BpcGVFcnJvciA9IG9wdGlvbnMucGlwZUVycm9yID09PSB0cnVlXG4gIGlmIChvcHRpb25zLm9iamVjdE1vZGUgPT0gbnVsbCkge1xuICAgIG9wdGlvbnMub2JqZWN0TW9kZSA9IHRydWVcbiAgfVxuICBpZiAob3B0aW9ucy5oaWdoV2F0ZXJNYXJrID09IG51bGwpIHtcbiAgICBvcHRpb25zLmhpZ2hXYXRlck1hcmsgPSA2NCAqIDEwMjRcbiAgfVxuICBjb25zdCBtZXJnZWRTdHJlYW0gPSBQYXNzVGhyb3VnaChvcHRpb25zKVxuXG4gIGZ1bmN0aW9uIGFkZFN0cmVhbSAoKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgc3RyZWFtc1F1ZXVlLnB1c2gocGF1c2VTdHJlYW1zKGFyZ3VtZW50c1tpXSwgb3B0aW9ucykpXG4gICAgfVxuICAgIG1lcmdlU3RyZWFtKClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZnVuY3Rpb24gbWVyZ2VTdHJlYW0gKCkge1xuICAgIGlmIChtZXJnaW5nKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgbWVyZ2luZyA9IHRydWVcblxuICAgIGxldCBzdHJlYW1zID0gc3RyZWFtc1F1ZXVlLnNoaWZ0KClcbiAgICBpZiAoIXN0cmVhbXMpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW5kU3RyZWFtKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghQXJyYXkuaXNBcnJheShzdHJlYW1zKSkge1xuICAgICAgc3RyZWFtcyA9IFtzdHJlYW1zXVxuICAgIH1cblxuICAgIGxldCBwaXBlc0NvdW50ID0gc3RyZWFtcy5sZW5ndGggKyAxXG5cbiAgICBmdW5jdGlvbiBuZXh0ICgpIHtcbiAgICAgIGlmICgtLXBpcGVzQ291bnQgPiAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgbWVyZ2luZyA9IGZhbHNlXG4gICAgICBtZXJnZVN0cmVhbSgpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGlwZSAoc3RyZWFtKSB7XG4gICAgICBmdW5jdGlvbiBvbmVuZCAoKSB7XG4gICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignbWVyZ2UyVW5waXBlRW5kJywgb25lbmQpXG4gICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpXG4gICAgICAgIGlmIChkb1BpcGVFcnJvcikge1xuICAgICAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKVxuICAgICAgICB9XG4gICAgICAgIG5leHQoKVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gb25lcnJvciAoZXJyKSB7XG4gICAgICAgIG1lcmdlZFN0cmVhbS5lbWl0KCdlcnJvcicsIGVycilcbiAgICAgIH1cbiAgICAgIC8vIHNraXAgZW5kZWQgc3RyZWFtXG4gICAgICBpZiAoc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKVxuICAgICAgfVxuXG4gICAgICBzdHJlYW0ub24oJ21lcmdlMlVucGlwZUVuZCcsIG9uZW5kKVxuICAgICAgc3RyZWFtLm9uKCdlbmQnLCBvbmVuZClcblxuICAgICAgaWYgKGRvUGlwZUVycm9yKSB7XG4gICAgICAgIHN0cmVhbS5vbignZXJyb3InLCBvbmVycm9yKVxuICAgICAgfVxuXG4gICAgICBzdHJlYW0ucGlwZShtZXJnZWRTdHJlYW0sIHsgZW5kOiBmYWxzZSB9KVxuICAgICAgLy8gY29tcGF0aWJsZSBmb3Igb2xkIHN0cmVhbVxuICAgICAgc3RyZWFtLnJlc3VtZSgpXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJlYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwaXBlKHN0cmVhbXNbaV0pXG4gICAgfVxuXG4gICAgbmV4dCgpXG4gIH1cblxuICBmdW5jdGlvbiBlbmRTdHJlYW0gKCkge1xuICAgIG1lcmdpbmcgPSBmYWxzZVxuICAgIC8vIGVtaXQgJ3F1ZXVlRHJhaW4nIHdoZW4gYWxsIHN0cmVhbXMgbWVyZ2VkLlxuICAgIG1lcmdlZFN0cmVhbS5lbWl0KCdxdWV1ZURyYWluJylcbiAgICBpZiAoZG9FbmQpIHtcbiAgICAgIG1lcmdlZFN0cmVhbS5lbmQoKVxuICAgIH1cbiAgfVxuXG4gIG1lcmdlZFN0cmVhbS5zZXRNYXhMaXN0ZW5lcnMoMClcbiAgbWVyZ2VkU3RyZWFtLmFkZCA9IGFkZFN0cmVhbVxuICBtZXJnZWRTdHJlYW0ub24oJ3VucGlwZScsIGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgICBzdHJlYW0uZW1pdCgnbWVyZ2UyVW5waXBlRW5kJylcbiAgfSlcblxuICBpZiAoYXJncy5sZW5ndGgpIHtcbiAgICBhZGRTdHJlYW0uYXBwbHkobnVsbCwgYXJncylcbiAgfVxuICByZXR1cm4gbWVyZ2VkU3RyZWFtXG59XG5cbi8vIGNoZWNrIGFuZCBwYXVzZSBzdHJlYW1zIGZvciBwaXBlLlxuZnVuY3Rpb24gcGF1c2VTdHJlYW1zIChzdHJlYW1zLCBvcHRpb25zKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShzdHJlYW1zKSkge1xuICAgIC8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBvbGQtc3R5bGUgc3RyZWFtc1xuICAgIGlmICghc3RyZWFtcy5fcmVhZGFibGVTdGF0ZSAmJiBzdHJlYW1zLnBpcGUpIHtcbiAgICAgIHN0cmVhbXMgPSBzdHJlYW1zLnBpcGUoUGFzc1Rocm91Z2gob3B0aW9ucykpXG4gICAgfVxuICAgIGlmICghc3RyZWFtcy5fcmVhZGFibGVTdGF0ZSB8fCAhc3RyZWFtcy5wYXVzZSB8fCAhc3RyZWFtcy5waXBlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09ubHkgcmVhZGFibGUgc3RyZWFtIGNhbiBiZSBtZXJnZWQuJylcbiAgICB9XG4gICAgc3RyZWFtcy5wYXVzZSgpXG4gIH0gZWxzZSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHN0cmVhbXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHN0cmVhbXNbaV0gPSBwYXVzZVN0cmVhbXMoc3RyZWFtc1tpXSwgb3B0aW9ucylcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cmVhbXNcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5tZXJnZSA9IHZvaWQgMDtcbmNvbnN0IG1lcmdlMiA9IHJlcXVpcmUoXCJtZXJnZTJcIik7XG5mdW5jdGlvbiBtZXJnZShzdHJlYW1zKSB7XG4gICAgY29uc3QgbWVyZ2VkU3RyZWFtID0gbWVyZ2UyKHN0cmVhbXMpO1xuICAgIHN0cmVhbXMuZm9yRWFjaCgoc3RyZWFtKSA9PiB7XG4gICAgICAgIHN0cmVhbS5vbmNlKCdlcnJvcicsIChlcnJvcikgPT4gbWVyZ2VkU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyb3IpKTtcbiAgICB9KTtcbiAgICBtZXJnZWRTdHJlYW0ub25jZSgnY2xvc2UnLCAoKSA9PiBwcm9wYWdhdGVDbG9zZUV2ZW50VG9Tb3VyY2VzKHN0cmVhbXMpKTtcbiAgICBtZXJnZWRTdHJlYW0ub25jZSgnZW5kJywgKCkgPT4gcHJvcGFnYXRlQ2xvc2VFdmVudFRvU291cmNlcyhzdHJlYW1zKSk7XG4gICAgcmV0dXJuIG1lcmdlZFN0cmVhbTtcbn1cbmV4cG9ydHMubWVyZ2UgPSBtZXJnZTtcbmZ1bmN0aW9uIHByb3BhZ2F0ZUNsb3NlRXZlbnRUb1NvdXJjZXMoc3RyZWFtcykge1xuICAgIHN0cmVhbXMuZm9yRWFjaCgoc3RyZWFtKSA9PiBzdHJlYW0uZW1pdCgnY2xvc2UnKSk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNFbXB0eSA9IGV4cG9ydHMuaXNTdHJpbmcgPSB2b2lkIDA7XG5mdW5jdGlvbiBpc1N0cmluZyhpbnB1dCkge1xuICAgIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuZnVuY3Rpb24gaXNFbXB0eShpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dCA9PT0gJyc7XG59XG5leHBvcnRzLmlzRW1wdHkgPSBpc0VtcHR5O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnN0cmluZyA9IGV4cG9ydHMuc3RyZWFtID0gZXhwb3J0cy5wYXR0ZXJuID0gZXhwb3J0cy5wYXRoID0gZXhwb3J0cy5mcyA9IGV4cG9ydHMuZXJybm8gPSBleHBvcnRzLmFycmF5ID0gdm9pZCAwO1xuY29uc3QgYXJyYXkgPSByZXF1aXJlKFwiLi9hcnJheVwiKTtcbmV4cG9ydHMuYXJyYXkgPSBhcnJheTtcbmNvbnN0IGVycm5vID0gcmVxdWlyZShcIi4vZXJybm9cIik7XG5leHBvcnRzLmVycm5vID0gZXJybm87XG5jb25zdCBmcyA9IHJlcXVpcmUoXCIuL2ZzXCIpO1xuZXhwb3J0cy5mcyA9IGZzO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCIuL3BhdGhcIik7XG5leHBvcnRzLnBhdGggPSBwYXRoO1xuY29uc3QgcGF0dGVybiA9IHJlcXVpcmUoXCIuL3BhdHRlcm5cIik7XG5leHBvcnRzLnBhdHRlcm4gPSBwYXR0ZXJuO1xuY29uc3Qgc3RyZWFtID0gcmVxdWlyZShcIi4vc3RyZWFtXCIpO1xuZXhwb3J0cy5zdHJlYW0gPSBzdHJlYW07XG5jb25zdCBzdHJpbmcgPSByZXF1aXJlKFwiLi9zdHJpbmdcIik7XG5leHBvcnRzLnN0cmluZyA9IHN0cmluZztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jb252ZXJ0UGF0dGVybkdyb3VwVG9UYXNrID0gZXhwb3J0cy5jb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3MgPSBleHBvcnRzLmdyb3VwUGF0dGVybnNCeUJhc2VEaXJlY3RvcnkgPSBleHBvcnRzLmdldE5lZ2F0aXZlUGF0dGVybnNBc1Bvc2l0aXZlID0gZXhwb3J0cy5nZXRQb3NpdGl2ZVBhdHRlcm5zID0gZXhwb3J0cy5jb252ZXJ0UGF0dGVybnNUb1Rhc2tzID0gZXhwb3J0cy5nZW5lcmF0ZSA9IHZvaWQgMDtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuZnVuY3Rpb24gZ2VuZXJhdGUocGF0dGVybnMsIHNldHRpbmdzKSB7XG4gICAgY29uc3QgcG9zaXRpdmVQYXR0ZXJucyA9IGdldFBvc2l0aXZlUGF0dGVybnMocGF0dGVybnMpO1xuICAgIGNvbnN0IG5lZ2F0aXZlUGF0dGVybnMgPSBnZXROZWdhdGl2ZVBhdHRlcm5zQXNQb3NpdGl2ZShwYXR0ZXJucywgc2V0dGluZ3MuaWdub3JlKTtcbiAgICBjb25zdCBzdGF0aWNQYXR0ZXJucyA9IHBvc2l0aXZlUGF0dGVybnMuZmlsdGVyKChwYXR0ZXJuKSA9PiB1dGlscy5wYXR0ZXJuLmlzU3RhdGljUGF0dGVybihwYXR0ZXJuLCBzZXR0aW5ncykpO1xuICAgIGNvbnN0IGR5bmFtaWNQYXR0ZXJucyA9IHBvc2l0aXZlUGF0dGVybnMuZmlsdGVyKChwYXR0ZXJuKSA9PiB1dGlscy5wYXR0ZXJuLmlzRHluYW1pY1BhdHRlcm4ocGF0dGVybiwgc2V0dGluZ3MpKTtcbiAgICBjb25zdCBzdGF0aWNUYXNrcyA9IGNvbnZlcnRQYXR0ZXJuc1RvVGFza3Moc3RhdGljUGF0dGVybnMsIG5lZ2F0aXZlUGF0dGVybnMsIC8qIGR5bmFtaWMgKi8gZmFsc2UpO1xuICAgIGNvbnN0IGR5bmFtaWNUYXNrcyA9IGNvbnZlcnRQYXR0ZXJuc1RvVGFza3MoZHluYW1pY1BhdHRlcm5zLCBuZWdhdGl2ZVBhdHRlcm5zLCAvKiBkeW5hbWljICovIHRydWUpO1xuICAgIHJldHVybiBzdGF0aWNUYXNrcy5jb25jYXQoZHluYW1pY1Rhc2tzKTtcbn1cbmV4cG9ydHMuZ2VuZXJhdGUgPSBnZW5lcmF0ZTtcbi8qKlxuICogUmV0dXJucyB0YXNrcyBncm91cGVkIGJ5IGJhc2ljIHBhdHRlcm4gZGlyZWN0b3JpZXMuXG4gKlxuICogUGF0dGVybnMgdGhhdCBjYW4gYmUgZm91bmQgaW5zaWRlIChgLi9gKSBhbmQgb3V0c2lkZSAoYC4uL2ApIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5LlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBkaXJlY3RvcnkgdHJhdmVyc2FsIHN0YXJ0cyBhdCB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIGdvZXMgZGVlcGVyLlxuICovXG5mdW5jdGlvbiBjb252ZXJ0UGF0dGVybnNUb1Rhc2tzKHBvc2l0aXZlLCBuZWdhdGl2ZSwgZHluYW1pYykge1xuICAgIGNvbnN0IHRhc2tzID0gW107XG4gICAgY29uc3QgcGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeSA9IHV0aWxzLnBhdHRlcm4uZ2V0UGF0dGVybnNPdXRzaWRlQ3VycmVudERpcmVjdG9yeShwb3NpdGl2ZSk7XG4gICAgY29uc3QgcGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5ID0gdXRpbHMucGF0dGVybi5nZXRQYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnkocG9zaXRpdmUpO1xuICAgIGNvbnN0IG91dHNpZGVDdXJyZW50RGlyZWN0b3J5R3JvdXAgPSBncm91cFBhdHRlcm5zQnlCYXNlRGlyZWN0b3J5KHBhdHRlcm5zT3V0c2lkZUN1cnJlbnREaXJlY3RvcnkpO1xuICAgIGNvbnN0IGluc2lkZUN1cnJlbnREaXJlY3RvcnlHcm91cCA9IGdyb3VwUGF0dGVybnNCeUJhc2VEaXJlY3RvcnkocGF0dGVybnNJbnNpZGVDdXJyZW50RGlyZWN0b3J5KTtcbiAgICB0YXNrcy5wdXNoKC4uLmNvbnZlcnRQYXR0ZXJuR3JvdXBzVG9UYXNrcyhvdXRzaWRlQ3VycmVudERpcmVjdG9yeUdyb3VwLCBuZWdhdGl2ZSwgZHluYW1pYykpO1xuICAgIC8qXG4gICAgICogRm9yIHRoZSBzYWtlIG9mIHJlZHVjaW5nIGZ1dHVyZSBhY2Nlc3NlcyB0byB0aGUgZmlsZSBzeXN0ZW0sIHdlIG1lcmdlIGFsbCB0YXNrcyB3aXRoaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XG4gICAgICogaW50byBhIGdsb2JhbCB0YXNrLCBpZiBhdCBsZWFzdCBvbmUgcGF0dGVybiByZWZlcnMgdG8gdGhlIHJvb3QgKGAuYCkuIEluIHRoaXMgY2FzZSwgdGhlIGdsb2JhbCB0YXNrIGNvdmVycyB0aGUgcmVzdC5cbiAgICAgKi9cbiAgICBpZiAoJy4nIGluIGluc2lkZUN1cnJlbnREaXJlY3RvcnlHcm91cCkge1xuICAgICAgICB0YXNrcy5wdXNoKGNvbnZlcnRQYXR0ZXJuR3JvdXBUb1Rhc2soJy4nLCBwYXR0ZXJuc0luc2lkZUN1cnJlbnREaXJlY3RvcnksIG5lZ2F0aXZlLCBkeW5hbWljKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0YXNrcy5wdXNoKC4uLmNvbnZlcnRQYXR0ZXJuR3JvdXBzVG9UYXNrcyhpbnNpZGVDdXJyZW50RGlyZWN0b3J5R3JvdXAsIG5lZ2F0aXZlLCBkeW5hbWljKSk7XG4gICAgfVxuICAgIHJldHVybiB0YXNrcztcbn1cbmV4cG9ydHMuY29udmVydFBhdHRlcm5zVG9UYXNrcyA9IGNvbnZlcnRQYXR0ZXJuc1RvVGFza3M7XG5mdW5jdGlvbiBnZXRQb3NpdGl2ZVBhdHRlcm5zKHBhdHRlcm5zKSB7XG4gICAgcmV0dXJuIHV0aWxzLnBhdHRlcm4uZ2V0UG9zaXRpdmVQYXR0ZXJucyhwYXR0ZXJucyk7XG59XG5leHBvcnRzLmdldFBvc2l0aXZlUGF0dGVybnMgPSBnZXRQb3NpdGl2ZVBhdHRlcm5zO1xuZnVuY3Rpb24gZ2V0TmVnYXRpdmVQYXR0ZXJuc0FzUG9zaXRpdmUocGF0dGVybnMsIGlnbm9yZSkge1xuICAgIGNvbnN0IG5lZ2F0aXZlID0gdXRpbHMucGF0dGVybi5nZXROZWdhdGl2ZVBhdHRlcm5zKHBhdHRlcm5zKS5jb25jYXQoaWdub3JlKTtcbiAgICBjb25zdCBwb3NpdGl2ZSA9IG5lZ2F0aXZlLm1hcCh1dGlscy5wYXR0ZXJuLmNvbnZlcnRUb1Bvc2l0aXZlUGF0dGVybik7XG4gICAgcmV0dXJuIHBvc2l0aXZlO1xufVxuZXhwb3J0cy5nZXROZWdhdGl2ZVBhdHRlcm5zQXNQb3NpdGl2ZSA9IGdldE5lZ2F0aXZlUGF0dGVybnNBc1Bvc2l0aXZlO1xuZnVuY3Rpb24gZ3JvdXBQYXR0ZXJuc0J5QmFzZURpcmVjdG9yeShwYXR0ZXJucykge1xuICAgIGNvbnN0IGdyb3VwID0ge307XG4gICAgcmV0dXJuIHBhdHRlcm5zLnJlZHVjZSgoY29sbGVjdGlvbiwgcGF0dGVybikgPT4ge1xuICAgICAgICBjb25zdCBiYXNlID0gdXRpbHMucGF0dGVybi5nZXRCYXNlRGlyZWN0b3J5KHBhdHRlcm4pO1xuICAgICAgICBpZiAoYmFzZSBpbiBjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uW2Jhc2VdLnB1c2gocGF0dGVybik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb2xsZWN0aW9uW2Jhc2VdID0gW3BhdHRlcm5dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH0sIGdyb3VwKTtcbn1cbmV4cG9ydHMuZ3JvdXBQYXR0ZXJuc0J5QmFzZURpcmVjdG9yeSA9IGdyb3VwUGF0dGVybnNCeUJhc2VEaXJlY3Rvcnk7XG5mdW5jdGlvbiBjb252ZXJ0UGF0dGVybkdyb3Vwc1RvVGFza3MocG9zaXRpdmUsIG5lZ2F0aXZlLCBkeW5hbWljKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHBvc2l0aXZlKS5tYXAoKGJhc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRQYXR0ZXJuR3JvdXBUb1Rhc2soYmFzZSwgcG9zaXRpdmVbYmFzZV0sIG5lZ2F0aXZlLCBkeW5hbWljKTtcbiAgICB9KTtcbn1cbmV4cG9ydHMuY29udmVydFBhdHRlcm5Hcm91cHNUb1Rhc2tzID0gY29udmVydFBhdHRlcm5Hcm91cHNUb1Rhc2tzO1xuZnVuY3Rpb24gY29udmVydFBhdHRlcm5Hcm91cFRvVGFzayhiYXNlLCBwb3NpdGl2ZSwgbmVnYXRpdmUsIGR5bmFtaWMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBkeW5hbWljLFxuICAgICAgICBwb3NpdGl2ZSxcbiAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgIGJhc2UsXG4gICAgICAgIHBhdHRlcm5zOiBbXS5jb25jYXQocG9zaXRpdmUsIG5lZ2F0aXZlLm1hcCh1dGlscy5wYXR0ZXJuLmNvbnZlcnRUb05lZ2F0aXZlUGF0dGVybikpXG4gICAgfTtcbn1cbmV4cG9ydHMuY29udmVydFBhdHRlcm5Hcm91cFRvVGFzayA9IGNvbnZlcnRQYXR0ZXJuR3JvdXBUb1Rhc2s7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmVtb3ZlRHVwbGljYXRlU2xhc2hlcyA9IGV4cG9ydHMudHJhbnNmb3JtID0gdm9pZCAwO1xuLyoqXG4gKiBNYXRjaGVzIGEgc2VxdWVuY2Ugb2YgdHdvIG9yIG1vcmUgY29uc2VjdXRpdmUgc2xhc2hlcywgZXhjbHVkaW5nIHRoZSBmaXJzdCB0d28gc2xhc2hlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuXG4gKiBUaGUgbGF0dGVyIGlzIGR1ZSB0byB0aGUgcHJlc2VuY2Ugb2YgdGhlIGRldmljZSBwYXRoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIFVOQyBwYXRoLlxuICogQHRvZG8gcmV3cml0ZSB0byBuZWdhdGl2ZSBsb29rYmVoaW5kIHdpdGggdGhlIG5leHQgbWFqb3IgcmVsZWFzZS5cbiAqL1xuY29uc3QgRE9VQkxFX1NMQVNIX1JFID0gLyg/IV4pXFwvezIsfS9nO1xuZnVuY3Rpb24gdHJhbnNmb3JtKHBhdHRlcm5zKSB7XG4gICAgcmV0dXJuIHBhdHRlcm5zLm1hcCgocGF0dGVybikgPT4gcmVtb3ZlRHVwbGljYXRlU2xhc2hlcyhwYXR0ZXJuKSk7XG59XG5leHBvcnRzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbi8qKlxuICogVGhpcyBwYWNrYWdlIG9ubHkgd29ya3Mgd2l0aCBmb3J3YXJkIHNsYXNoZXMgYXMgYSBwYXRoIHNlcGFyYXRvci5cbiAqIEJlY2F1c2Ugb2YgdGhpcywgd2UgY2Fubm90IHVzZSB0aGUgc3RhbmRhcmQgYHBhdGgubm9ybWFsaXplYCBtZXRob2QsIGJlY2F1c2Ugb24gV2luZG93cyBwbGF0Zm9ybSBpdCB3aWxsIHVzZSBvZiBiYWNrc2xhc2hlcy5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRHVwbGljYXRlU2xhc2hlcyhwYXR0ZXJuKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4ucmVwbGFjZShET1VCTEVfU0xBU0hfUkUsICcvJyk7XG59XG5leHBvcnRzLnJlbW92ZUR1cGxpY2F0ZVNsYXNoZXMgPSByZW1vdmVEdXBsaWNhdGVTbGFzaGVzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5yZWFkID0gdm9pZCAwO1xyXG5mdW5jdGlvbiByZWFkKHBhdGgsIHNldHRpbmdzLCBjYWxsYmFjaykge1xyXG4gICAgc2V0dGluZ3MuZnMubHN0YXQocGF0aCwgKGxzdGF0RXJyb3IsIGxzdGF0KSA9PiB7XHJcbiAgICAgICAgaWYgKGxzdGF0RXJyb3IgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIGxzdGF0RXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWxzdGF0LmlzU3ltYm9saWNMaW5rKCkgfHwgIXNldHRpbmdzLmZvbGxvd1N5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgbHN0YXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXR0aW5ncy5mcy5zdGF0KHBhdGgsIChzdGF0RXJyb3IsIHN0YXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHN0YXRFcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBzdGF0RXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2ssIGxzdGF0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MubWFya1N5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICAgICAgc3RhdC5pc1N5bWJvbGljTGluayA9ICgpID0+IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgc3RhdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufVxyXG5leHBvcnRzLnJlYWQgPSByZWFkO1xyXG5mdW5jdGlvbiBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBlcnJvcikge1xyXG4gICAgY2FsbGJhY2soZXJyb3IpO1xyXG59XHJcbmZ1bmN0aW9uIGNhbGxTdWNjZXNzQ2FsbGJhY2soY2FsbGJhY2ssIHJlc3VsdCkge1xyXG4gICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxufVxyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLnJlYWQgPSB2b2lkIDA7XHJcbmZ1bmN0aW9uIHJlYWQocGF0aCwgc2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IGxzdGF0ID0gc2V0dGluZ3MuZnMubHN0YXRTeW5jKHBhdGgpO1xyXG4gICAgaWYgKCFsc3RhdC5pc1N5bWJvbGljTGluaygpIHx8ICFzZXR0aW5ncy5mb2xsb3dTeW1ib2xpY0xpbmspIHtcclxuICAgICAgICByZXR1cm4gbHN0YXQ7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHN0YXQgPSBzZXR0aW5ncy5mcy5zdGF0U3luYyhwYXRoKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3MubWFya1N5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICBzdGF0LmlzU3ltYm9saWNMaW5rID0gKCkgPT4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0YXQ7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBpZiAoIXNldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluaykge1xyXG4gICAgICAgICAgICByZXR1cm4gbHN0YXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMucmVhZCA9IHJlYWQ7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIgPSBleHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVIgPSB2b2lkIDA7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5leHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVIgPSB7XHJcbiAgICBsc3RhdDogZnMubHN0YXQsXHJcbiAgICBzdGF0OiBmcy5zdGF0LFxyXG4gICAgbHN0YXRTeW5jOiBmcy5sc3RhdFN5bmMsXHJcbiAgICBzdGF0U3luYzogZnMuc3RhdFN5bmNcclxufTtcclxuZnVuY3Rpb24gY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIoZnNNZXRob2RzKSB7XHJcbiAgICBpZiAoZnNNZXRob2RzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICByZXR1cm4gZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSKSwgZnNNZXRob2RzKTtcclxufVxyXG5leHBvcnRzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyID0gY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXI7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcIi4vYWRhcHRlcnMvZnNcIik7XHJcbmNsYXNzIFNldHRpbmdzIHtcclxuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zID0ge30pIHtcclxuICAgICAgICB0aGlzLl9vcHRpb25zID0gX29wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5mb2xsb3dTeW1ib2xpY0xpbmsgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmZvbGxvd1N5bWJvbGljTGluaywgdHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5mcyA9IGZzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyKHRoaXMuX29wdGlvbnMuZnMpO1xyXG4gICAgICAgIHRoaXMubWFya1N5bWJvbGljTGluayA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMubWFya1N5bWJvbGljTGluaywgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmssIHRydWUpO1xyXG4gICAgfVxyXG4gICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gb3B0aW9uICE9PSBudWxsICYmIG9wdGlvbiAhPT0gdm9pZCAwID8gb3B0aW9uIDogdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gU2V0dGluZ3M7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuc3RhdFN5bmMgPSBleHBvcnRzLnN0YXQgPSBleHBvcnRzLlNldHRpbmdzID0gdm9pZCAwO1xyXG5jb25zdCBhc3luYyA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9hc3luY1wiKTtcclxuY29uc3Qgc3luYyA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9zeW5jXCIpO1xyXG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XHJcbmV4cG9ydHMuU2V0dGluZ3MgPSBzZXR0aW5nc18xLmRlZmF1bHQ7XHJcbmZ1bmN0aW9uIHN0YXQocGF0aCwgb3B0aW9uc09yU2V0dGluZ3NPckNhbGxiYWNrLCBjYWxsYmFjaykge1xyXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICByZXR1cm4gYXN5bmMucmVhZChwYXRoLCBnZXRTZXR0aW5ncygpLCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgYXN5bmMucmVhZChwYXRoLCBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spLCBjYWxsYmFjayk7XHJcbn1cclxuZXhwb3J0cy5zdGF0ID0gc3RhdDtcclxuZnVuY3Rpb24gc3RhdFN5bmMocGF0aCwgb3B0aW9uc09yU2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3Mob3B0aW9uc09yU2V0dGluZ3MpO1xyXG4gICAgcmV0dXJuIHN5bmMucmVhZChwYXRoLCBzZXR0aW5ncyk7XHJcbn1cclxuZXhwb3J0cy5zdGF0U3luYyA9IHN0YXRTeW5jO1xyXG5mdW5jdGlvbiBnZXRTZXR0aW5ncyhzZXR0aW5nc09yT3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpZiAoc2V0dGluZ3NPck9wdGlvbnMgaW5zdGFuY2VvZiBzZXR0aW5nc18xLmRlZmF1bHQpIHtcclxuICAgICAgICByZXR1cm4gc2V0dGluZ3NPck9wdGlvbnM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IHNldHRpbmdzXzEuZGVmYXVsdChzZXR0aW5nc09yT3B0aW9ucyk7XHJcbn1cclxuIiwiLyohIHF1ZXVlLW1pY3JvdGFzay4gTUlUIExpY2Vuc2UuIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZy9vcGVuc291cmNlPiAqL1xubGV0IHByb21pc2VcblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgcXVldWVNaWNyb3Rhc2sgPT09ICdmdW5jdGlvbidcbiAgPyBxdWV1ZU1pY3JvdGFzay5iaW5kKGdsb2JhbFRoaXMpXG4gIC8vIHJldXNlIHJlc29sdmVkIHByb21pc2UsIGFuZCBhbGxvY2F0ZSBpdCBsYXppbHlcbiAgOiBjYiA9PiAocHJvbWlzZSB8fCAocHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpKSlcbiAgICAudGhlbihjYilcbiAgICAuY2F0Y2goZXJyID0+IHNldFRpbWVvdXQoKCkgPT4geyB0aHJvdyBlcnIgfSwgMCkpXG4iLCIvKiEgcnVuLXBhcmFsbGVsLiBNSVQgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG5tb2R1bGUuZXhwb3J0cyA9IHJ1blBhcmFsbGVsXG5cbmNvbnN0IHF1ZXVlTWljcm90YXNrID0gcmVxdWlyZSgncXVldWUtbWljcm90YXNrJylcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwgKHRhc2tzLCBjYikge1xuICBsZXQgcmVzdWx0cywgcGVuZGluZywga2V5c1xuICBsZXQgaXNTeW5jID0gdHJ1ZVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHRhc2tzKSkge1xuICAgIHJlc3VsdHMgPSBbXVxuICAgIHBlbmRpbmcgPSB0YXNrcy5sZW5ndGhcbiAgfSBlbHNlIHtcbiAgICBrZXlzID0gT2JqZWN0LmtleXModGFza3MpXG4gICAgcmVzdWx0cyA9IHt9XG4gICAgcGVuZGluZyA9IGtleXMubGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiBkb25lIChlcnIpIHtcbiAgICBmdW5jdGlvbiBlbmQgKCkge1xuICAgICAgaWYgKGNiKSBjYihlcnIsIHJlc3VsdHMpXG4gICAgICBjYiA9IG51bGxcbiAgICB9XG4gICAgaWYgKGlzU3luYykgcXVldWVNaWNyb3Rhc2soZW5kKVxuICAgIGVsc2UgZW5kKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGVhY2ggKGksIGVyciwgcmVzdWx0KSB7XG4gICAgcmVzdWx0c1tpXSA9IHJlc3VsdFxuICAgIGlmICgtLXBlbmRpbmcgPT09IDAgfHwgZXJyKSB7XG4gICAgICBkb25lKGVycilcbiAgICB9XG4gIH1cblxuICBpZiAoIXBlbmRpbmcpIHtcbiAgICAvLyBlbXB0eVxuICAgIGRvbmUobnVsbClcbiAgfSBlbHNlIGlmIChrZXlzKSB7XG4gICAgLy8gb2JqZWN0XG4gICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHRhc2tzW2tleV0oZnVuY3Rpb24gKGVyciwgcmVzdWx0KSB7IGVhY2goa2V5LCBlcnIsIHJlc3VsdCkgfSlcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIC8vIGFycmF5XG4gICAgdGFza3MuZm9yRWFjaChmdW5jdGlvbiAodGFzaywgaSkge1xuICAgICAgdGFzayhmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHsgZWFjaChpLCBlcnIsIHJlc3VsdCkgfSlcbiAgICB9KVxuICB9XG5cbiAgaXNTeW5jID0gZmFsc2Vcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuSVNfU1VQUE9SVF9SRUFERElSX1dJVEhfRklMRV9UWVBFUyA9IHZvaWQgMDtcclxuY29uc3QgTk9ERV9QUk9DRVNTX1ZFUlNJT05fUEFSVFMgPSBwcm9jZXNzLnZlcnNpb25zLm5vZGUuc3BsaXQoJy4nKTtcclxuY29uc3QgTUFKT1JfVkVSU0lPTiA9IHBhcnNlSW50KE5PREVfUFJPQ0VTU19WRVJTSU9OX1BBUlRTWzBdLCAxMCk7XHJcbmNvbnN0IE1JTk9SX1ZFUlNJT04gPSBwYXJzZUludChOT0RFX1BST0NFU1NfVkVSU0lPTl9QQVJUU1sxXSwgMTApO1xyXG5jb25zdCBTVVBQT1JURURfTUFKT1JfVkVSU0lPTiA9IDEwO1xyXG5jb25zdCBTVVBQT1JURURfTUlOT1JfVkVSU0lPTiA9IDEwO1xyXG5jb25zdCBJU19NQVRDSEVEX0JZX01BSk9SID0gTUFKT1JfVkVSU0lPTiA+IFNVUFBPUlRFRF9NQUpPUl9WRVJTSU9OO1xyXG5jb25zdCBJU19NQVRDSEVEX0JZX01BSk9SX0FORF9NSU5PUiA9IE1BSk9SX1ZFUlNJT04gPT09IFNVUFBPUlRFRF9NQUpPUl9WRVJTSU9OICYmIE1JTk9SX1ZFUlNJT04gPj0gU1VQUE9SVEVEX01JTk9SX1ZFUlNJT047XHJcbi8qKlxyXG4gKiBJUyBgdHJ1ZWAgZm9yIE5vZGUuanMgMTAuMTAgYW5kIGdyZWF0ZXIuXHJcbiAqL1xyXG5leHBvcnRzLklTX1NVUFBPUlRfUkVBRERJUl9XSVRIX0ZJTEVfVFlQRVMgPSBJU19NQVRDSEVEX0JZX01BSk9SIHx8IElTX01BVENIRURfQllfTUFKT1JfQU5EX01JTk9SO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLmNyZWF0ZURpcmVudEZyb21TdGF0cyA9IHZvaWQgMDtcclxuY2xhc3MgRGlyZW50RnJvbVN0YXRzIHtcclxuICAgIGNvbnN0cnVjdG9yKG5hbWUsIHN0YXRzKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmlzQmxvY2tEZXZpY2UgPSBzdGF0cy5pc0Jsb2NrRGV2aWNlLmJpbmQoc3RhdHMpO1xyXG4gICAgICAgIHRoaXMuaXNDaGFyYWN0ZXJEZXZpY2UgPSBzdGF0cy5pc0NoYXJhY3RlckRldmljZS5iaW5kKHN0YXRzKTtcclxuICAgICAgICB0aGlzLmlzRGlyZWN0b3J5ID0gc3RhdHMuaXNEaXJlY3RvcnkuYmluZChzdGF0cyk7XHJcbiAgICAgICAgdGhpcy5pc0ZJRk8gPSBzdGF0cy5pc0ZJRk8uYmluZChzdGF0cyk7XHJcbiAgICAgICAgdGhpcy5pc0ZpbGUgPSBzdGF0cy5pc0ZpbGUuYmluZChzdGF0cyk7XHJcbiAgICAgICAgdGhpcy5pc1NvY2tldCA9IHN0YXRzLmlzU29ja2V0LmJpbmQoc3RhdHMpO1xyXG4gICAgICAgIHRoaXMuaXNTeW1ib2xpY0xpbmsgPSBzdGF0cy5pc1N5bWJvbGljTGluay5iaW5kKHN0YXRzKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjcmVhdGVEaXJlbnRGcm9tU3RhdHMobmFtZSwgc3RhdHMpIHtcclxuICAgIHJldHVybiBuZXcgRGlyZW50RnJvbVN0YXRzKG5hbWUsIHN0YXRzKTtcclxufVxyXG5leHBvcnRzLmNyZWF0ZURpcmVudEZyb21TdGF0cyA9IGNyZWF0ZURpcmVudEZyb21TdGF0cztcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5mcyA9IHZvaWQgMDtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiLi9mc1wiKTtcclxuZXhwb3J0cy5mcyA9IGZzO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLmpvaW5QYXRoU2VnbWVudHMgPSB2b2lkIDA7XHJcbmZ1bmN0aW9uIGpvaW5QYXRoU2VnbWVudHMoYSwgYiwgc2VwYXJhdG9yKSB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjb3JyZWN0IGhhbmRsaW5nIG9mIGNhc2VzIHdoZW4gdGhlIGZpcnN0IHNlZ21lbnQgaXMgYSByb290IChgL2AsIGBDOi9gKSBvciBVTkMgcGF0aCAoYC8vPy9DOi9gKS5cclxuICAgICAqL1xyXG4gICAgaWYgKGEuZW5kc1dpdGgoc2VwYXJhdG9yKSkge1xyXG4gICAgICAgIHJldHVybiBhICsgYjtcclxuICAgIH1cclxuICAgIHJldHVybiBhICsgc2VwYXJhdG9yICsgYjtcclxufVxyXG5leHBvcnRzLmpvaW5QYXRoU2VnbWVudHMgPSBqb2luUGF0aFNlZ21lbnRzO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLnJlYWRkaXIgPSBleHBvcnRzLnJlYWRkaXJXaXRoRmlsZVR5cGVzID0gZXhwb3J0cy5yZWFkID0gdm9pZCAwO1xyXG5jb25zdCBmc1N0YXQgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc3RhdFwiKTtcclxuY29uc3QgcnBsID0gcmVxdWlyZShcInJ1bi1wYXJhbGxlbFwiKTtcclxuY29uc3QgY29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi4vY29uc3RhbnRzXCIpO1xyXG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcclxuY29uc3QgY29tbW9uID0gcmVxdWlyZShcIi4vY29tbW9uXCIpO1xyXG5mdW5jdGlvbiByZWFkKGRpcmVjdG9yeSwgc2V0dGluZ3MsIGNhbGxiYWNrKSB7XHJcbiAgICBpZiAoIXNldHRpbmdzLnN0YXRzICYmIGNvbnN0YW50c18xLklTX1NVUFBPUlRfUkVBRERJUl9XSVRIX0ZJTEVfVFlQRVMpIHtcclxuICAgICAgICByZXR1cm4gcmVhZGRpcldpdGhGaWxlVHlwZXMoZGlyZWN0b3J5LCBzZXR0aW5ncywgY2FsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlYWRkaXIoZGlyZWN0b3J5LCBzZXR0aW5ncywgY2FsbGJhY2spO1xyXG59XHJcbmV4cG9ydHMucmVhZCA9IHJlYWQ7XHJcbmZ1bmN0aW9uIHJlYWRkaXJXaXRoRmlsZVR5cGVzKGRpcmVjdG9yeSwgc2V0dGluZ3MsIGNhbGxiYWNrKSB7XHJcbiAgICBzZXR0aW5ncy5mcy5yZWFkZGlyKGRpcmVjdG9yeSwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0sIChyZWFkZGlyRXJyb3IsIGRpcmVudHMpID0+IHtcclxuICAgICAgICBpZiAocmVhZGRpckVycm9yICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCByZWFkZGlyRXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBlbnRyaWVzID0gZGlyZW50cy5tYXAoKGRpcmVudCkgPT4gKHtcclxuICAgICAgICAgICAgZGlyZW50LFxyXG4gICAgICAgICAgICBuYW1lOiBkaXJlbnQubmFtZSxcclxuICAgICAgICAgICAgcGF0aDogY29tbW9uLmpvaW5QYXRoU2VnbWVudHMoZGlyZWN0b3J5LCBkaXJlbnQubmFtZSwgc2V0dGluZ3MucGF0aFNlZ21lbnRTZXBhcmF0b3IpXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIGlmICghc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rcykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgZW50cmllcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRhc2tzID0gZW50cmllcy5tYXAoKGVudHJ5KSA9PiBtYWtlUnBsVGFza0VudHJ5KGVudHJ5LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIHJwbCh0YXNrcywgKHJwbEVycm9yLCBycGxFbnRyaWVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChycGxFcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIHJwbEVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBycGxFbnRyaWVzKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbmV4cG9ydHMucmVhZGRpcldpdGhGaWxlVHlwZXMgPSByZWFkZGlyV2l0aEZpbGVUeXBlcztcclxuZnVuY3Rpb24gbWFrZVJwbFRhc2tFbnRyeShlbnRyeSwgc2V0dGluZ3MpIHtcclxuICAgIHJldHVybiAoZG9uZSkgPT4ge1xyXG4gICAgICAgIGlmICghZW50cnkuZGlyZW50LmlzU3ltYm9saWNMaW5rKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgZW50cnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXR0aW5ncy5mcy5zdGF0KGVudHJ5LnBhdGgsIChzdGF0RXJyb3IsIHN0YXRzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChzdGF0RXJyb3IgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzZXR0aW5ncy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmspIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShzdGF0RXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgZW50cnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVudHJ5LmRpcmVudCA9IHV0aWxzLmZzLmNyZWF0ZURpcmVudEZyb21TdGF0cyhlbnRyeS5uYW1lLCBzdGF0cyk7XHJcbiAgICAgICAgICAgIHJldHVybiBkb25lKG51bGwsIGVudHJ5KTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbn1cclxuZnVuY3Rpb24gcmVhZGRpcihkaXJlY3RvcnksIHNldHRpbmdzLCBjYWxsYmFjaykge1xyXG4gICAgc2V0dGluZ3MuZnMucmVhZGRpcihkaXJlY3RvcnksIChyZWFkZGlyRXJyb3IsIG5hbWVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlYWRkaXJFcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgcmVhZGRpckVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZmlsZXBhdGhzID0gbmFtZXMubWFwKChuYW1lKSA9PiBjb21tb24uam9pblBhdGhTZWdtZW50cyhkaXJlY3RvcnksIG5hbWUsIHNldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKSk7XHJcbiAgICAgICAgY29uc3QgdGFza3MgPSBmaWxlcGF0aHMubWFwKChmaWxlcGF0aCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKGRvbmUpID0+IGZzU3RhdC5zdGF0KGZpbGVwYXRoLCBzZXR0aW5ncy5mc1N0YXRTZXR0aW5ncywgZG9uZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcnBsKHRhc2tzLCAocnBsRXJyb3IsIHJlc3VsdHMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJwbEVycm9yICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgcnBsRXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcclxuICAgICAgICAgICAgbmFtZXMuZm9yRWFjaCgobmFtZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gcmVzdWx0c1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGZpbGVwYXRoc1tpbmRleF0sXHJcbiAgICAgICAgICAgICAgICAgICAgZGlyZW50OiB1dGlscy5mcy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMobmFtZSwgc3RhdHMpXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzLnN0YXRzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZW50cnkuc3RhdHMgPSBzdGF0cztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChlbnRyeSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBlbnRyaWVzKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG59XHJcbmV4cG9ydHMucmVhZGRpciA9IHJlYWRkaXI7XHJcbmZ1bmN0aW9uIGNhbGxGYWlsdXJlQ2FsbGJhY2soY2FsbGJhY2ssIGVycm9yKSB7XHJcbiAgICBjYWxsYmFjayhlcnJvcik7XHJcbn1cclxuZnVuY3Rpb24gY2FsbFN1Y2Nlc3NDYWxsYmFjayhjYWxsYmFjaywgcmVzdWx0KSB7XHJcbiAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xyXG59XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMucmVhZGRpciA9IGV4cG9ydHMucmVhZGRpcldpdGhGaWxlVHlwZXMgPSBleHBvcnRzLnJlYWQgPSB2b2lkIDA7XHJcbmNvbnN0IGZzU3RhdCA9IHJlcXVpcmUoXCJAbm9kZWxpYi9mcy5zdGF0XCIpO1xyXG5jb25zdCBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuLi9jb25zdGFudHNcIik7XHJcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xyXG5jb25zdCBjb21tb24gPSByZXF1aXJlKFwiLi9jb21tb25cIik7XHJcbmZ1bmN0aW9uIHJlYWQoZGlyZWN0b3J5LCBzZXR0aW5ncykge1xyXG4gICAgaWYgKCFzZXR0aW5ncy5zdGF0cyAmJiBjb25zdGFudHNfMS5JU19TVVBQT1JUX1JFQURESVJfV0lUSF9GSUxFX1RZUEVTKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlYWRkaXJXaXRoRmlsZVR5cGVzKGRpcmVjdG9yeSwgc2V0dGluZ3MpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlYWRkaXIoZGlyZWN0b3J5LCBzZXR0aW5ncyk7XHJcbn1cclxuZXhwb3J0cy5yZWFkID0gcmVhZDtcclxuZnVuY3Rpb24gcmVhZGRpcldpdGhGaWxlVHlwZXMoZGlyZWN0b3J5LCBzZXR0aW5ncykge1xyXG4gICAgY29uc3QgZGlyZW50cyA9IHNldHRpbmdzLmZzLnJlYWRkaXJTeW5jKGRpcmVjdG9yeSwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xyXG4gICAgcmV0dXJuIGRpcmVudHMubWFwKChkaXJlbnQpID0+IHtcclxuICAgICAgICBjb25zdCBlbnRyeSA9IHtcclxuICAgICAgICAgICAgZGlyZW50LFxyXG4gICAgICAgICAgICBuYW1lOiBkaXJlbnQubmFtZSxcclxuICAgICAgICAgICAgcGF0aDogY29tbW9uLmpvaW5QYXRoU2VnbWVudHMoZGlyZWN0b3J5LCBkaXJlbnQubmFtZSwgc2V0dGluZ3MucGF0aFNlZ21lbnRTZXBhcmF0b3IpXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoZW50cnkuZGlyZW50LmlzU3ltYm9saWNMaW5rKCkgJiYgc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rcykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdHMgPSBzZXR0aW5ncy5mcy5zdGF0U3luYyhlbnRyeS5wYXRoKTtcclxuICAgICAgICAgICAgICAgIGVudHJ5LmRpcmVudCA9IHV0aWxzLmZzLmNyZWF0ZURpcmVudEZyb21TdGF0cyhlbnRyeS5uYW1lLCBzdGF0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3MudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVudHJ5O1xyXG4gICAgfSk7XHJcbn1cclxuZXhwb3J0cy5yZWFkZGlyV2l0aEZpbGVUeXBlcyA9IHJlYWRkaXJXaXRoRmlsZVR5cGVzO1xyXG5mdW5jdGlvbiByZWFkZGlyKGRpcmVjdG9yeSwgc2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IG5hbWVzID0gc2V0dGluZ3MuZnMucmVhZGRpclN5bmMoZGlyZWN0b3J5KTtcclxuICAgIHJldHVybiBuYW1lcy5tYXAoKG5hbWUpID0+IHtcclxuICAgICAgICBjb25zdCBlbnRyeVBhdGggPSBjb21tb24uam9pblBhdGhTZWdtZW50cyhkaXJlY3RvcnksIG5hbWUsIHNldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcclxuICAgICAgICBjb25zdCBzdGF0cyA9IGZzU3RhdC5zdGF0U3luYyhlbnRyeVBhdGgsIHNldHRpbmdzLmZzU3RhdFNldHRpbmdzKTtcclxuICAgICAgICBjb25zdCBlbnRyeSA9IHtcclxuICAgICAgICAgICAgbmFtZSxcclxuICAgICAgICAgICAgcGF0aDogZW50cnlQYXRoLFxyXG4gICAgICAgICAgICBkaXJlbnQ6IHV0aWxzLmZzLmNyZWF0ZURpcmVudEZyb21TdGF0cyhuYW1lLCBzdGF0cylcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmIChzZXR0aW5ncy5zdGF0cykge1xyXG4gICAgICAgICAgICBlbnRyeS5zdGF0cyA9IHN0YXRzO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZW50cnk7XHJcbiAgICB9KTtcclxufVxyXG5leHBvcnRzLnJlYWRkaXIgPSByZWFkZGlyO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLmNyZWF0ZUZpbGVTeXN0ZW1BZGFwdGVyID0gZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSID0gdm9pZCAwO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuZXhwb3J0cy5GSUxFX1NZU1RFTV9BREFQVEVSID0ge1xyXG4gICAgbHN0YXQ6IGZzLmxzdGF0LFxyXG4gICAgc3RhdDogZnMuc3RhdCxcclxuICAgIGxzdGF0U3luYzogZnMubHN0YXRTeW5jLFxyXG4gICAgc3RhdFN5bmM6IGZzLnN0YXRTeW5jLFxyXG4gICAgcmVhZGRpcjogZnMucmVhZGRpcixcclxuICAgIHJlYWRkaXJTeW5jOiBmcy5yZWFkZGlyU3luY1xyXG59O1xyXG5mdW5jdGlvbiBjcmVhdGVGaWxlU3lzdGVtQWRhcHRlcihmc01ldGhvZHMpIHtcclxuICAgIGlmIChmc01ldGhvZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybiBleHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBleHBvcnRzLkZJTEVfU1lTVEVNX0FEQVBURVIpLCBmc01ldGhvZHMpO1xyXG59XHJcbmV4cG9ydHMuY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIgPSBjcmVhdGVGaWxlU3lzdGVtQWRhcHRlcjtcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xyXG5jb25zdCBmc1N0YXQgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc3RhdFwiKTtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiLi9hZGFwdGVycy9mc1wiKTtcclxuY2xhc3MgU2V0dGluZ3Mge1xyXG4gICAgY29uc3RydWN0b3IoX29wdGlvbnMgPSB7fSkge1xyXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBfb3B0aW9ucztcclxuICAgICAgICB0aGlzLmZvbGxvd1N5bWJvbGljTGlua3MgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmZvbGxvd1N5bWJvbGljTGlua3MsIGZhbHNlKTtcclxuICAgICAgICB0aGlzLmZzID0gZnMuY3JlYXRlRmlsZVN5c3RlbUFkYXB0ZXIodGhpcy5fb3B0aW9ucy5mcyk7XHJcbiAgICAgICAgdGhpcy5wYXRoU2VnbWVudFNlcGFyYXRvciA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMucGF0aFNlZ21lbnRTZXBhcmF0b3IsIHBhdGguc2VwKTtcclxuICAgICAgICB0aGlzLnN0YXRzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdGF0cywgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy50aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbmssIHRydWUpO1xyXG4gICAgICAgIHRoaXMuZnNTdGF0U2V0dGluZ3MgPSBuZXcgZnNTdGF0LlNldHRpbmdzKHtcclxuICAgICAgICAgICAgZm9sbG93U3ltYm9saWNMaW5rOiB0aGlzLmZvbGxvd1N5bWJvbGljTGlua3MsXHJcbiAgICAgICAgICAgIGZzOiB0aGlzLmZzLFxyXG4gICAgICAgICAgICB0aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbms6IHRoaXMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfZ2V0VmFsdWUob3B0aW9uLCB2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiBvcHRpb24gIT09IG51bGwgJiYgb3B0aW9uICE9PSB2b2lkIDAgPyBvcHRpb24gOiB2YWx1ZTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBTZXR0aW5ncztcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5TZXR0aW5ncyA9IGV4cG9ydHMuc2NhbmRpclN5bmMgPSBleHBvcnRzLnNjYW5kaXIgPSB2b2lkIDA7XHJcbmNvbnN0IGFzeW5jID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL2FzeW5jXCIpO1xyXG5jb25zdCBzeW5jID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL3N5bmNcIik7XHJcbmNvbnN0IHNldHRpbmdzXzEgPSByZXF1aXJlKFwiLi9zZXR0aW5nc1wiKTtcclxuZXhwb3J0cy5TZXR0aW5ncyA9IHNldHRpbmdzXzEuZGVmYXVsdDtcclxuZnVuY3Rpb24gc2NhbmRpcihwYXRoLCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2ssIGNhbGxiYWNrKSB7XHJcbiAgICBpZiAodHlwZW9mIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiBhc3luYy5yZWFkKHBhdGgsIGdldFNldHRpbmdzKCksIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBhc3luYy5yZWFkKHBhdGgsIGdldFNldHRpbmdzKG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayksIGNhbGxiYWNrKTtcclxufVxyXG5leHBvcnRzLnNjYW5kaXIgPSBzY2FuZGlyO1xyXG5mdW5jdGlvbiBzY2FuZGlyU3luYyhwYXRoLCBvcHRpb25zT3JTZXR0aW5ncykge1xyXG4gICAgY29uc3Qgc2V0dGluZ3MgPSBnZXRTZXR0aW5ncyhvcHRpb25zT3JTZXR0aW5ncyk7XHJcbiAgICByZXR1cm4gc3luYy5yZWFkKHBhdGgsIHNldHRpbmdzKTtcclxufVxyXG5leHBvcnRzLnNjYW5kaXJTeW5jID0gc2NhbmRpclN5bmM7XHJcbmZ1bmN0aW9uIGdldFNldHRpbmdzKHNldHRpbmdzT3JPcHRpb25zID0ge30pIHtcclxuICAgIGlmIChzZXR0aW5nc09yT3B0aW9ucyBpbnN0YW5jZW9mIHNldHRpbmdzXzEuZGVmYXVsdCkge1xyXG4gICAgICAgIHJldHVybiBzZXR0aW5nc09yT3B0aW9ucztcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgc2V0dGluZ3NfMS5kZWZhdWx0KHNldHRpbmdzT3JPcHRpb25zKTtcclxufVxyXG4iLCIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gcmV1c2lmeSAoQ29uc3RydWN0b3IpIHtcbiAgdmFyIGhlYWQgPSBuZXcgQ29uc3RydWN0b3IoKVxuICB2YXIgdGFpbCA9IGhlYWRcblxuICBmdW5jdGlvbiBnZXQgKCkge1xuICAgIHZhciBjdXJyZW50ID0gaGVhZFxuXG4gICAgaWYgKGN1cnJlbnQubmV4dCkge1xuICAgICAgaGVhZCA9IGN1cnJlbnQubmV4dFxuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkID0gbmV3IENvbnN0cnVjdG9yKClcbiAgICAgIHRhaWwgPSBoZWFkXG4gICAgfVxuXG4gICAgY3VycmVudC5uZXh0ID0gbnVsbFxuXG4gICAgcmV0dXJuIGN1cnJlbnRcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbGVhc2UgKG9iaikge1xuICAgIHRhaWwubmV4dCA9IG9ialxuICAgIHRhaWwgPSBvYmpcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ2V0OiBnZXQsXG4gICAgcmVsZWFzZTogcmVsZWFzZVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmV1c2lmeVxuIiwiJ3VzZSBzdHJpY3QnXG5cbnZhciByZXVzaWZ5ID0gcmVxdWlyZSgncmV1c2lmeScpXG5cbmZ1bmN0aW9uIGZhc3RxdWV1ZSAoY29udGV4dCwgd29ya2VyLCBjb25jdXJyZW5jeSkge1xuICBpZiAodHlwZW9mIGNvbnRleHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25jdXJyZW5jeSA9IHdvcmtlclxuICAgIHdvcmtlciA9IGNvbnRleHRcbiAgICBjb250ZXh0ID0gbnVsbFxuICB9XG5cbiAgaWYgKGNvbmN1cnJlbmN5IDwgMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZmFzdHF1ZXVlIGNvbmN1cnJlbmN5IG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKVxuICB9XG5cbiAgdmFyIGNhY2hlID0gcmV1c2lmeShUYXNrKVxuICB2YXIgcXVldWVIZWFkID0gbnVsbFxuICB2YXIgcXVldWVUYWlsID0gbnVsbFxuICB2YXIgX3J1bm5pbmcgPSAwXG4gIHZhciBlcnJvckhhbmRsZXIgPSBudWxsXG5cbiAgdmFyIHNlbGYgPSB7XG4gICAgcHVzaDogcHVzaCxcbiAgICBkcmFpbjogbm9vcCxcbiAgICBzYXR1cmF0ZWQ6IG5vb3AsXG4gICAgcGF1c2U6IHBhdXNlLFxuICAgIHBhdXNlZDogZmFsc2UsXG4gICAgY29uY3VycmVuY3k6IGNvbmN1cnJlbmN5LFxuICAgIHJ1bm5pbmc6IHJ1bm5pbmcsXG4gICAgcmVzdW1lOiByZXN1bWUsXG4gICAgaWRsZTogaWRsZSxcbiAgICBsZW5ndGg6IGxlbmd0aCxcbiAgICBnZXRRdWV1ZTogZ2V0UXVldWUsXG4gICAgdW5zaGlmdDogdW5zaGlmdCxcbiAgICBlbXB0eTogbm9vcCxcbiAgICBraWxsOiBraWxsLFxuICAgIGtpbGxBbmREcmFpbjoga2lsbEFuZERyYWluLFxuICAgIGVycm9yOiBlcnJvclxuICB9XG5cbiAgcmV0dXJuIHNlbGZcblxuICBmdW5jdGlvbiBydW5uaW5nICgpIHtcbiAgICByZXR1cm4gX3J1bm5pbmdcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdXNlICgpIHtcbiAgICBzZWxmLnBhdXNlZCA9IHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGxlbmd0aCAoKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBxdWV1ZUhlYWRcbiAgICB2YXIgY291bnRlciA9IDBcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0XG4gICAgICBjb3VudGVyKytcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnRlclxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0UXVldWUgKCkge1xuICAgIHZhciBjdXJyZW50ID0gcXVldWVIZWFkXG4gICAgdmFyIHRhc2tzID0gW11cblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICB0YXNrcy5wdXNoKGN1cnJlbnQudmFsdWUpXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhc2tzXG4gIH1cblxuICBmdW5jdGlvbiByZXN1bWUgKCkge1xuICAgIGlmICghc2VsZi5wYXVzZWQpIHJldHVyblxuICAgIHNlbGYucGF1c2VkID0gZmFsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYuY29uY3VycmVuY3k7IGkrKykge1xuICAgICAgX3J1bm5pbmcrK1xuICAgICAgcmVsZWFzZSgpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaWRsZSAoKSB7XG4gICAgcmV0dXJuIF9ydW5uaW5nID09PSAwICYmIHNlbGYubGVuZ3RoKCkgPT09IDBcbiAgfVxuXG4gIGZ1bmN0aW9uIHB1c2ggKHZhbHVlLCBkb25lKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBjYWNoZS5nZXQoKVxuXG4gICAgY3VycmVudC5jb250ZXh0ID0gY29udGV4dFxuICAgIGN1cnJlbnQucmVsZWFzZSA9IHJlbGVhc2VcbiAgICBjdXJyZW50LnZhbHVlID0gdmFsdWVcbiAgICBjdXJyZW50LmNhbGxiYWNrID0gZG9uZSB8fCBub29wXG4gICAgY3VycmVudC5lcnJvckhhbmRsZXIgPSBlcnJvckhhbmRsZXJcblxuICAgIGlmIChfcnVubmluZyA9PT0gc2VsZi5jb25jdXJyZW5jeSB8fCBzZWxmLnBhdXNlZCkge1xuICAgICAgaWYgKHF1ZXVlVGFpbCkge1xuICAgICAgICBxdWV1ZVRhaWwubmV4dCA9IGN1cnJlbnRcbiAgICAgICAgcXVldWVUYWlsID0gY3VycmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVIZWFkID0gY3VycmVudFxuICAgICAgICBxdWV1ZVRhaWwgPSBjdXJyZW50XG4gICAgICAgIHNlbGYuc2F0dXJhdGVkKClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3J1bm5pbmcrK1xuICAgICAgd29ya2VyLmNhbGwoY29udGV4dCwgY3VycmVudC52YWx1ZSwgY3VycmVudC53b3JrZWQpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdW5zaGlmdCAodmFsdWUsIGRvbmUpIHtcbiAgICB2YXIgY3VycmVudCA9IGNhY2hlLmdldCgpXG5cbiAgICBjdXJyZW50LmNvbnRleHQgPSBjb250ZXh0XG4gICAgY3VycmVudC5yZWxlYXNlID0gcmVsZWFzZVxuICAgIGN1cnJlbnQudmFsdWUgPSB2YWx1ZVxuICAgIGN1cnJlbnQuY2FsbGJhY2sgPSBkb25lIHx8IG5vb3BcblxuICAgIGlmIChfcnVubmluZyA9PT0gc2VsZi5jb25jdXJyZW5jeSB8fCBzZWxmLnBhdXNlZCkge1xuICAgICAgaWYgKHF1ZXVlSGVhZCkge1xuICAgICAgICBjdXJyZW50Lm5leHQgPSBxdWV1ZUhlYWRcbiAgICAgICAgcXVldWVIZWFkID0gY3VycmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVIZWFkID0gY3VycmVudFxuICAgICAgICBxdWV1ZVRhaWwgPSBjdXJyZW50XG4gICAgICAgIHNlbGYuc2F0dXJhdGVkKClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3J1bm5pbmcrK1xuICAgICAgd29ya2VyLmNhbGwoY29udGV4dCwgY3VycmVudC52YWx1ZSwgY3VycmVudC53b3JrZWQpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVsZWFzZSAoaG9sZGVyKSB7XG4gICAgaWYgKGhvbGRlcikge1xuICAgICAgY2FjaGUucmVsZWFzZShob2xkZXIpXG4gICAgfVxuICAgIHZhciBuZXh0ID0gcXVldWVIZWFkXG4gICAgaWYgKG5leHQpIHtcbiAgICAgIGlmICghc2VsZi5wYXVzZWQpIHtcbiAgICAgICAgaWYgKHF1ZXVlVGFpbCA9PT0gcXVldWVIZWFkKSB7XG4gICAgICAgICAgcXVldWVUYWlsID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSGVhZCA9IG5leHQubmV4dFxuICAgICAgICBuZXh0Lm5leHQgPSBudWxsXG4gICAgICAgIHdvcmtlci5jYWxsKGNvbnRleHQsIG5leHQudmFsdWUsIG5leHQud29ya2VkKVxuICAgICAgICBpZiAocXVldWVUYWlsID09PSBudWxsKSB7XG4gICAgICAgICAgc2VsZi5lbXB0eSgpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9ydW5uaW5nLS1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKC0tX3J1bm5pbmcgPT09IDApIHtcbiAgICAgIHNlbGYuZHJhaW4oKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGtpbGwgKCkge1xuICAgIHF1ZXVlSGVhZCA9IG51bGxcbiAgICBxdWV1ZVRhaWwgPSBudWxsXG4gICAgc2VsZi5kcmFpbiA9IG5vb3BcbiAgfVxuXG4gIGZ1bmN0aW9uIGtpbGxBbmREcmFpbiAoKSB7XG4gICAgcXVldWVIZWFkID0gbnVsbFxuICAgIHF1ZXVlVGFpbCA9IG51bGxcbiAgICBzZWxmLmRyYWluKClcbiAgICBzZWxmLmRyYWluID0gbm9vcFxuICB9XG5cbiAgZnVuY3Rpb24gZXJyb3IgKGhhbmRsZXIpIHtcbiAgICBlcnJvckhhbmRsZXIgPSBoYW5kbGVyXG4gIH1cbn1cblxuZnVuY3Rpb24gbm9vcCAoKSB7fVxuXG5mdW5jdGlvbiBUYXNrICgpIHtcbiAgdGhpcy52YWx1ZSA9IG51bGxcbiAgdGhpcy5jYWxsYmFjayA9IG5vb3BcbiAgdGhpcy5uZXh0ID0gbnVsbFxuICB0aGlzLnJlbGVhc2UgPSBub29wXG4gIHRoaXMuY29udGV4dCA9IG51bGxcbiAgdGhpcy5lcnJvckhhbmRsZXIgPSBudWxsXG5cbiAgdmFyIHNlbGYgPSB0aGlzXG5cbiAgdGhpcy53b3JrZWQgPSBmdW5jdGlvbiB3b3JrZWQgKGVyciwgcmVzdWx0KSB7XG4gICAgdmFyIGNhbGxiYWNrID0gc2VsZi5jYWxsYmFja1xuICAgIHZhciBlcnJvckhhbmRsZXIgPSBzZWxmLmVycm9ySGFuZGxlclxuICAgIHZhciB2YWwgPSBzZWxmLnZhbHVlXG4gICAgc2VsZi52YWx1ZSA9IG51bGxcbiAgICBzZWxmLmNhbGxiYWNrID0gbm9vcFxuICAgIGlmIChzZWxmLmVycm9ySGFuZGxlcikge1xuICAgICAgZXJyb3JIYW5kbGVyKGVyciwgdmFsKVxuICAgIH1cbiAgICBjYWxsYmFjay5jYWxsKHNlbGYuY29udGV4dCwgZXJyLCByZXN1bHQpXG4gICAgc2VsZi5yZWxlYXNlKHNlbGYpXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmYXN0cXVldWVcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuam9pblBhdGhTZWdtZW50cyA9IGV4cG9ydHMucmVwbGFjZVBhdGhTZWdtZW50U2VwYXJhdG9yID0gZXhwb3J0cy5pc0FwcGxpZWRGaWx0ZXIgPSBleHBvcnRzLmlzRmF0YWxFcnJvciA9IHZvaWQgMDtcclxuZnVuY3Rpb24gaXNGYXRhbEVycm9yKHNldHRpbmdzLCBlcnJvcikge1xyXG4gICAgaWYgKHNldHRpbmdzLmVycm9yRmlsdGVyID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXNldHRpbmdzLmVycm9yRmlsdGVyKGVycm9yKTtcclxufVxyXG5leHBvcnRzLmlzRmF0YWxFcnJvciA9IGlzRmF0YWxFcnJvcjtcclxuZnVuY3Rpb24gaXNBcHBsaWVkRmlsdGVyKGZpbHRlciwgdmFsdWUpIHtcclxuICAgIHJldHVybiBmaWx0ZXIgPT09IG51bGwgfHwgZmlsdGVyKHZhbHVlKTtcclxufVxyXG5leHBvcnRzLmlzQXBwbGllZEZpbHRlciA9IGlzQXBwbGllZEZpbHRlcjtcclxuZnVuY3Rpb24gcmVwbGFjZVBhdGhTZWdtZW50U2VwYXJhdG9yKGZpbGVwYXRoLCBzZXBhcmF0b3IpIHtcclxuICAgIHJldHVybiBmaWxlcGF0aC5zcGxpdCgvWy9cXFxcXS8pLmpvaW4oc2VwYXJhdG9yKTtcclxufVxyXG5leHBvcnRzLnJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvciA9IHJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvcjtcclxuZnVuY3Rpb24gam9pblBhdGhTZWdtZW50cyhhLCBiLCBzZXBhcmF0b3IpIHtcclxuICAgIGlmIChhID09PSAnJykge1xyXG4gICAgICAgIHJldHVybiBiO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgY29ycmVjdCBoYW5kbGluZyBvZiBjYXNlcyB3aGVuIHRoZSBmaXJzdCBzZWdtZW50IGlzIGEgcm9vdCAoYC9gLCBgQzovYCkgb3IgVU5DIHBhdGggKGAvLz8vQzovYCkuXHJcbiAgICAgKi9cclxuICAgIGlmIChhLmVuZHNXaXRoKHNlcGFyYXRvcikpIHtcclxuICAgICAgICByZXR1cm4gYSArIGI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYSArIHNlcGFyYXRvciArIGI7XHJcbn1cclxuZXhwb3J0cy5qb2luUGF0aFNlZ21lbnRzID0gam9pblBhdGhTZWdtZW50cztcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuY29uc3QgY29tbW9uID0gcmVxdWlyZShcIi4vY29tbW9uXCIpO1xyXG5jbGFzcyBSZWFkZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9yb290ID0gY29tbW9uLnJlcGxhY2VQYXRoU2VnbWVudFNlcGFyYXRvcihfcm9vdCwgX3NldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBSZWFkZXI7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IGV2ZW50c18xID0gcmVxdWlyZShcImV2ZW50c1wiKTtcclxuY29uc3QgZnNTY2FuZGlyID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnNjYW5kaXJcIik7XHJcbmNvbnN0IGZhc3RxID0gcmVxdWlyZShcImZhc3RxXCIpO1xyXG5jb25zdCBjb21tb24gPSByZXF1aXJlKFwiLi9jb21tb25cIik7XHJcbmNvbnN0IHJlYWRlcl8xID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xyXG5jbGFzcyBBc3luY1JlYWRlciBleHRlbmRzIHJlYWRlcl8xLmRlZmF1bHQge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHN1cGVyKF9yb290LCBfc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xyXG4gICAgICAgIHRoaXMuX3NjYW5kaXIgPSBmc1NjYW5kaXIuc2NhbmRpcjtcclxuICAgICAgICB0aGlzLl9lbWl0dGVyID0gbmV3IGV2ZW50c18xLkV2ZW50RW1pdHRlcigpO1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlID0gZmFzdHEodGhpcy5fd29ya2VyLmJpbmQodGhpcyksIHRoaXMuX3NldHRpbmdzLmNvbmN1cnJlbmN5KTtcclxuICAgICAgICB0aGlzLl9pc0ZhdGFsRXJyb3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9pc0Rlc3Ryb3llZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlLmRyYWluID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzRmF0YWxFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdHRlci5lbWl0KCdlbmQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZWFkKCkge1xyXG4gICAgICAgIHRoaXMuX2lzRmF0YWxFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX2lzRGVzdHJveWVkID0gZmFsc2U7XHJcbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fcHVzaFRvUXVldWUodGhpcy5fcm9vdCwgdGhpcy5fc2V0dGluZ3MuYmFzZVBhdGgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbWl0dGVyO1xyXG4gICAgfVxyXG4gICAgZ2V0IGlzRGVzdHJveWVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Rlc3Ryb3llZDtcclxuICAgIH1cclxuICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzRGVzdHJveWVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHJlYWRlciBpcyBhbHJlYWR5IGRlc3Ryb3llZCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pc0Rlc3Ryb3llZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fcXVldWUua2lsbEFuZERyYWluKCk7XHJcbiAgICB9XHJcbiAgICBvbkVudHJ5KGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdGhpcy5fZW1pdHRlci5vbignZW50cnknLCBjYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBvbkVycm9yKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdGhpcy5fZW1pdHRlci5vbmNlKCdlcnJvcicsIGNhbGxiYWNrKTtcclxuICAgIH1cclxuICAgIG9uRW5kKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdGhpcy5fZW1pdHRlci5vbmNlKCdlbmQnLCBjYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICBfcHVzaFRvUXVldWUoZGlyZWN0b3J5LCBiYXNlKSB7XHJcbiAgICAgICAgY29uc3QgcXVldWVJdGVtID0geyBkaXJlY3RvcnksIGJhc2UgfTtcclxuICAgICAgICB0aGlzLl9xdWV1ZS5wdXNoKHF1ZXVlSXRlbSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfd29ya2VyKGl0ZW0sIGRvbmUpIHtcclxuICAgICAgICB0aGlzLl9zY2FuZGlyKGl0ZW0uZGlyZWN0b3J5LCB0aGlzLl9zZXR0aW5ncy5mc1NjYW5kaXJTZXR0aW5ncywgKGVycm9yLCBlbnRyaWVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyb3IsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVFbnRyeShlbnRyeSwgaXRlbS5iYXNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkb25lKG51bGwsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBfaGFuZGxlRXJyb3IoZXJyb3IpIHtcclxuICAgICAgICBpZiAodGhpcy5faXNEZXN0cm95ZWQgfHwgIWNvbW1vbi5pc0ZhdGFsRXJyb3IodGhpcy5fc2V0dGluZ3MsIGVycm9yKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2lzRmF0YWxFcnJvciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5faXNEZXN0cm95ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2VtaXR0ZXIuZW1pdCgnZXJyb3InLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgICBfaGFuZGxlRW50cnkoZW50cnksIGJhc2UpIHtcclxuICAgICAgICBpZiAodGhpcy5faXNEZXN0cm95ZWQgfHwgdGhpcy5faXNGYXRhbEVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZnVsbHBhdGggPSBlbnRyeS5wYXRoO1xyXG4gICAgICAgIGlmIChiYXNlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZW50cnkucGF0aCA9IGNvbW1vbi5qb2luUGF0aFNlZ21lbnRzKGJhc2UsIGVudHJ5Lm5hbWUsIHRoaXMuX3NldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbW1vbi5pc0FwcGxpZWRGaWx0ZXIodGhpcy5fc2V0dGluZ3MuZW50cnlGaWx0ZXIsIGVudHJ5KSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lbWl0RW50cnkoZW50cnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZW50cnkuZGlyZW50LmlzRGlyZWN0b3J5KCkgJiYgY29tbW9uLmlzQXBwbGllZEZpbHRlcih0aGlzLl9zZXR0aW5ncy5kZWVwRmlsdGVyLCBlbnRyeSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHVzaFRvUXVldWUoZnVsbHBhdGgsIGVudHJ5LnBhdGgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIF9lbWl0RW50cnkoZW50cnkpIHtcclxuICAgICAgICB0aGlzLl9lbWl0dGVyLmVtaXQoJ2VudHJ5JywgZW50cnkpO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IEFzeW5jUmVhZGVyO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCBhc3luY18xID0gcmVxdWlyZShcIi4uL3JlYWRlcnMvYXN5bmNcIik7XHJcbmNsYXNzIEFzeW5jUHJvdmlkZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgYXN5bmNfMS5kZWZhdWx0KHRoaXMuX3Jvb3QsIHRoaXMuX3NldHRpbmdzKTtcclxuICAgICAgICB0aGlzLl9zdG9yYWdlID0gbmV3IFNldCgpO1xyXG4gICAgfVxyXG4gICAgcmVhZChjYWxsYmFjaykge1xyXG4gICAgICAgIHRoaXMuX3JlYWRlci5vbkVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjYWxsRmFpbHVyZUNhbGxiYWNrKGNhbGxiYWNrLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fcmVhZGVyLm9uRW50cnkoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2UuYWRkKGVudHJ5KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9yZWFkZXIub25FbmQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBbLi4udGhpcy5fc3RvcmFnZV0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX3JlYWRlci5yZWFkKCk7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gQXN5bmNQcm92aWRlcjtcclxuZnVuY3Rpb24gY2FsbEZhaWx1cmVDYWxsYmFjayhjYWxsYmFjaywgZXJyb3IpIHtcclxuICAgIGNhbGxiYWNrKGVycm9yKTtcclxufVxyXG5mdW5jdGlvbiBjYWxsU3VjY2Vzc0NhbGxiYWNrKGNhbGxiYWNrLCBlbnRyaWVzKSB7XHJcbiAgICBjYWxsYmFjayhudWxsLCBlbnRyaWVzKTtcclxufVxyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCBzdHJlYW1fMSA9IHJlcXVpcmUoXCJzdHJlYW1cIik7XHJcbmNvbnN0IGFzeW5jXzEgPSByZXF1aXJlKFwiLi4vcmVhZGVycy9hc3luY1wiKTtcclxuY2xhc3MgU3RyZWFtUHJvdmlkZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgYXN5bmNfMS5kZWZhdWx0KHRoaXMuX3Jvb3QsIHRoaXMuX3NldHRpbmdzKTtcclxuICAgICAgICB0aGlzLl9zdHJlYW0gPSBuZXcgc3RyZWFtXzEuUmVhZGFibGUoe1xyXG4gICAgICAgICAgICBvYmplY3RNb2RlOiB0cnVlLFxyXG4gICAgICAgICAgICByZWFkOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICAgIGRlc3Ryb3k6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fcmVhZGVyLmlzRGVzdHJveWVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVhZGVyLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmVhZCgpIHtcclxuICAgICAgICB0aGlzLl9yZWFkZXIub25FcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX3JlYWRlci5vbkVudHJ5KChlbnRyeSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9zdHJlYW0ucHVzaChlbnRyeSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fcmVhZGVyLm9uRW5kKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fc3RyZWFtLnB1c2gobnVsbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fcmVhZGVyLnJlYWQoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RyZWFtO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IFN0cmVhbVByb3ZpZGVyO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCBmc1NjYW5kaXIgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMuc2NhbmRpclwiKTtcclxuY29uc3QgY29tbW9uID0gcmVxdWlyZShcIi4vY29tbW9uXCIpO1xyXG5jb25zdCByZWFkZXJfMSA9IHJlcXVpcmUoXCIuL3JlYWRlclwiKTtcclxuY2xhc3MgU3luY1JlYWRlciBleHRlbmRzIHJlYWRlcl8xLmRlZmF1bHQge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcclxuICAgICAgICB0aGlzLl9zY2FuZGlyID0gZnNTY2FuZGlyLnNjYW5kaXJTeW5jO1xyXG4gICAgICAgIHRoaXMuX3N0b3JhZ2UgPSBuZXcgU2V0KCk7XHJcbiAgICAgICAgdGhpcy5fcXVldWUgPSBuZXcgU2V0KCk7XHJcbiAgICB9XHJcbiAgICByZWFkKCkge1xyXG4gICAgICAgIHRoaXMuX3B1c2hUb1F1ZXVlKHRoaXMuX3Jvb3QsIHRoaXMuX3NldHRpbmdzLmJhc2VQYXRoKTtcclxuICAgICAgICB0aGlzLl9oYW5kbGVRdWV1ZSgpO1xyXG4gICAgICAgIHJldHVybiBbLi4udGhpcy5fc3RvcmFnZV07XHJcbiAgICB9XHJcbiAgICBfcHVzaFRvUXVldWUoZGlyZWN0b3J5LCBiYXNlKSB7XHJcbiAgICAgICAgdGhpcy5fcXVldWUuYWRkKHsgZGlyZWN0b3J5LCBiYXNlIH0pO1xyXG4gICAgfVxyXG4gICAgX2hhbmRsZVF1ZXVlKCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLl9xdWV1ZS52YWx1ZXMoKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVEaXJlY3RvcnkoaXRlbS5kaXJlY3RvcnksIGl0ZW0uYmFzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgX2hhbmRsZURpcmVjdG9yeShkaXJlY3RvcnksIGJhc2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gdGhpcy5fc2NhbmRpcihkaXJlY3RvcnksIHRoaXMuX3NldHRpbmdzLmZzU2NhbmRpclNldHRpbmdzKTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVFbnRyeShlbnRyeSwgYmFzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfaGFuZGxlRXJyb3IoZXJyb3IpIHtcclxuICAgICAgICBpZiAoIWNvbW1vbi5pc0ZhdGFsRXJyb3IodGhpcy5fc2V0dGluZ3MsIGVycm9yKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfVxyXG4gICAgX2hhbmRsZUVudHJ5KGVudHJ5LCBiYXNlKSB7XHJcbiAgICAgICAgY29uc3QgZnVsbHBhdGggPSBlbnRyeS5wYXRoO1xyXG4gICAgICAgIGlmIChiYXNlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZW50cnkucGF0aCA9IGNvbW1vbi5qb2luUGF0aFNlZ21lbnRzKGJhc2UsIGVudHJ5Lm5hbWUsIHRoaXMuX3NldHRpbmdzLnBhdGhTZWdtZW50U2VwYXJhdG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbW1vbi5pc0FwcGxpZWRGaWx0ZXIodGhpcy5fc2V0dGluZ3MuZW50cnlGaWx0ZXIsIGVudHJ5KSkge1xyXG4gICAgICAgICAgICB0aGlzLl9wdXNoVG9TdG9yYWdlKGVudHJ5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVudHJ5LmRpcmVudC5pc0RpcmVjdG9yeSgpICYmIGNvbW1vbi5pc0FwcGxpZWRGaWx0ZXIodGhpcy5fc2V0dGluZ3MuZGVlcEZpbHRlciwgZW50cnkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3B1c2hUb1F1ZXVlKGZ1bGxwYXRoLCBlbnRyeS5wYXRoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBfcHVzaFRvU3RvcmFnZShlbnRyeSkge1xyXG4gICAgICAgIHRoaXMuX3N0b3JhZ2UuYWRkKGVudHJ5KTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBTeW5jUmVhZGVyO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5jb25zdCBzeW5jXzEgPSByZXF1aXJlKFwiLi4vcmVhZGVycy9zeW5jXCIpO1xyXG5jbGFzcyBTeW5jUHJvdmlkZXIge1xyXG4gICAgY29uc3RydWN0b3IoX3Jvb3QsIF9zZXR0aW5ncykge1xyXG4gICAgICAgIHRoaXMuX3Jvb3QgPSBfcm9vdDtcclxuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcclxuICAgICAgICB0aGlzLl9yZWFkZXIgPSBuZXcgc3luY18xLmRlZmF1bHQodGhpcy5fcm9vdCwgdGhpcy5fc2V0dGluZ3MpO1xyXG4gICAgfVxyXG4gICAgcmVhZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLnJlYWQoKTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSBTeW5jUHJvdmlkZXI7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZnNTY2FuZGlyID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnNjYW5kaXJcIik7XHJcbmNsYXNzIFNldHRpbmdzIHtcclxuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zID0ge30pIHtcclxuICAgICAgICB0aGlzLl9vcHRpb25zID0gX29wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5iYXNlUGF0aCA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuYmFzZVBhdGgsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgdGhpcy5jb25jdXJyZW5jeSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuY29uY3VycmVuY3ksIEluZmluaXR5KTtcclxuICAgICAgICB0aGlzLmRlZXBGaWx0ZXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRlZXBGaWx0ZXIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMuZW50cnlGaWx0ZXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmVudHJ5RmlsdGVyLCBudWxsKTtcclxuICAgICAgICB0aGlzLmVycm9yRmlsdGVyID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5lcnJvckZpbHRlciwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5wYXRoU2VnbWVudFNlcGFyYXRvciA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMucGF0aFNlZ21lbnRTZXBhcmF0b3IsIHBhdGguc2VwKTtcclxuICAgICAgICB0aGlzLmZzU2NhbmRpclNldHRpbmdzID0gbmV3IGZzU2NhbmRpci5TZXR0aW5ncyh7XHJcbiAgICAgICAgICAgIGZvbGxvd1N5bWJvbGljTGlua3M6IHRoaXMuX29wdGlvbnMuZm9sbG93U3ltYm9saWNMaW5rcyxcclxuICAgICAgICAgICAgZnM6IHRoaXMuX29wdGlvbnMuZnMsXHJcbiAgICAgICAgICAgIHBhdGhTZWdtZW50U2VwYXJhdG9yOiB0aGlzLl9vcHRpb25zLnBhdGhTZWdtZW50U2VwYXJhdG9yLFxyXG4gICAgICAgICAgICBzdGF0czogdGhpcy5fb3B0aW9ucy5zdGF0cyxcclxuICAgICAgICAgICAgdGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rOiB0aGlzLl9vcHRpb25zLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGlua1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gb3B0aW9uICE9PSBudWxsICYmIG9wdGlvbiAhPT0gdm9pZCAwID8gb3B0aW9uIDogdmFsdWU7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gU2V0dGluZ3M7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmV4cG9ydHMuU2V0dGluZ3MgPSBleHBvcnRzLndhbGtTdHJlYW0gPSBleHBvcnRzLndhbGtTeW5jID0gZXhwb3J0cy53YWxrID0gdm9pZCAwO1xyXG5jb25zdCBhc3luY18xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL2FzeW5jXCIpO1xyXG5jb25zdCBzdHJlYW1fMSA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9zdHJlYW1cIik7XHJcbmNvbnN0IHN5bmNfMSA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVycy9zeW5jXCIpO1xyXG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XHJcbmV4cG9ydHMuU2V0dGluZ3MgPSBzZXR0aW5nc18xLmRlZmF1bHQ7XHJcbmZ1bmN0aW9uIHdhbGsoZGlyZWN0b3J5LCBvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2ssIGNhbGxiYWNrKSB7XHJcbiAgICBpZiAodHlwZW9mIG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiBuZXcgYXN5bmNfMS5kZWZhdWx0KGRpcmVjdG9yeSwgZ2V0U2V0dGluZ3MoKSkucmVhZChvcHRpb25zT3JTZXR0aW5nc09yQ2FsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgbmV3IGFzeW5jXzEuZGVmYXVsdChkaXJlY3RvcnksIGdldFNldHRpbmdzKG9wdGlvbnNPclNldHRpbmdzT3JDYWxsYmFjaykpLnJlYWQoY2FsbGJhY2spO1xyXG59XHJcbmV4cG9ydHMud2FsayA9IHdhbGs7XHJcbmZ1bmN0aW9uIHdhbGtTeW5jKGRpcmVjdG9yeSwgb3B0aW9uc09yU2V0dGluZ3MpIHtcclxuICAgIGNvbnN0IHNldHRpbmdzID0gZ2V0U2V0dGluZ3Mob3B0aW9uc09yU2V0dGluZ3MpO1xyXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgc3luY18xLmRlZmF1bHQoZGlyZWN0b3J5LCBzZXR0aW5ncyk7XHJcbiAgICByZXR1cm4gcHJvdmlkZXIucmVhZCgpO1xyXG59XHJcbmV4cG9ydHMud2Fsa1N5bmMgPSB3YWxrU3luYztcclxuZnVuY3Rpb24gd2Fsa1N0cmVhbShkaXJlY3RvcnksIG9wdGlvbnNPclNldHRpbmdzKSB7XHJcbiAgICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzKG9wdGlvbnNPclNldHRpbmdzKTtcclxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IHN0cmVhbV8xLmRlZmF1bHQoZGlyZWN0b3J5LCBzZXR0aW5ncyk7XHJcbiAgICByZXR1cm4gcHJvdmlkZXIucmVhZCgpO1xyXG59XHJcbmV4cG9ydHMud2Fsa1N0cmVhbSA9IHdhbGtTdHJlYW07XHJcbmZ1bmN0aW9uIGdldFNldHRpbmdzKHNldHRpbmdzT3JPcHRpb25zID0ge30pIHtcclxuICAgIGlmIChzZXR0aW5nc09yT3B0aW9ucyBpbnN0YW5jZW9mIHNldHRpbmdzXzEuZGVmYXVsdCkge1xyXG4gICAgICAgIHJldHVybiBzZXR0aW5nc09yT3B0aW9ucztcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgc2V0dGluZ3NfMS5kZWZhdWx0KHNldHRpbmdzT3JPcHRpb25zKTtcclxufVxyXG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmNvbnN0IGZzU3RhdCA9IHJlcXVpcmUoXCJAbm9kZWxpYi9mcy5zdGF0XCIpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG5jbGFzcyBSZWFkZXIge1xuICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgICAgdGhpcy5fZnNTdGF0U2V0dGluZ3MgPSBuZXcgZnNTdGF0LlNldHRpbmdzKHtcbiAgICAgICAgICAgIGZvbGxvd1N5bWJvbGljTGluazogdGhpcy5fc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rcyxcbiAgICAgICAgICAgIGZzOiB0aGlzLl9zZXR0aW5ncy5mcyxcbiAgICAgICAgICAgIHRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluazogdGhpcy5fc2V0dGluZ3MuZm9sbG93U3ltYm9saWNMaW5rc1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgX2dldEZ1bGxFbnRyeVBhdGgoZmlsZXBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLl9zZXR0aW5ncy5jd2QsIGZpbGVwYXRoKTtcbiAgICB9XG4gICAgX21ha2VFbnRyeShzdGF0cywgcGF0dGVybikge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgICAgICAgIG5hbWU6IHBhdHRlcm4sXG4gICAgICAgICAgICBwYXRoOiBwYXR0ZXJuLFxuICAgICAgICAgICAgZGlyZW50OiB1dGlscy5mcy5jcmVhdGVEaXJlbnRGcm9tU3RhdHMocGF0dGVybiwgc3RhdHMpXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5zdGF0cykge1xuICAgICAgICAgICAgZW50cnkuc3RhdHMgPSBzdGF0cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgfVxuICAgIF9pc0ZhdGFsRXJyb3IoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuICF1dGlscy5lcnJuby5pc0Vub2VudENvZGVFcnJvcihlcnJvcikgJiYgIXRoaXMuX3NldHRpbmdzLnN1cHByZXNzRXJyb3JzO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IFJlYWRlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuY29uc3QgZnNTdGF0ID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnN0YXRcIik7XG5jb25zdCBmc1dhbGsgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMud2Fsa1wiKTtcbmNvbnN0IHJlYWRlcl8xID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xuY2xhc3MgUmVhZGVyU3RyZWFtIGV4dGVuZHMgcmVhZGVyXzEuZGVmYXVsdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX3dhbGtTdHJlYW0gPSBmc1dhbGsud2Fsa1N0cmVhbTtcbiAgICAgICAgdGhpcy5fc3RhdCA9IGZzU3RhdC5zdGF0O1xuICAgIH1cbiAgICBkeW5hbWljKHJvb3QsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dhbGtTdHJlYW0ocm9vdCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN0YXRpYyhwYXR0ZXJucywgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBmaWxlcGF0aHMgPSBwYXR0ZXJucy5tYXAodGhpcy5fZ2V0RnVsbEVudHJ5UGF0aCwgdGhpcyk7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBzdHJlYW1fMS5QYXNzVGhyb3VnaCh7IG9iamVjdE1vZGU6IHRydWUgfSk7XG4gICAgICAgIHN0cmVhbS5fd3JpdGUgPSAoaW5kZXgsIF9lbmMsIGRvbmUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRFbnRyeShmaWxlcGF0aHNbaW5kZXhdLCBwYXR0ZXJuc1tpbmRleF0sIG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgLnRoZW4oKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5ICE9PSBudWxsICYmIG9wdGlvbnMuZW50cnlGaWx0ZXIoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmVhbS5wdXNoKGVudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBmaWxlcGF0aHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBzdHJlYW0uZW5kKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGRvbmUpO1xuICAgICAgICB9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVwYXRocy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3RyZWFtLndyaXRlKGkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJlYW07XG4gICAgfVxuICAgIF9nZXRFbnRyeShmaWxlcGF0aCwgcGF0dGVybiwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0U3RhdChmaWxlcGF0aClcbiAgICAgICAgICAgIC50aGVuKChzdGF0cykgPT4gdGhpcy5fbWFrZUVudHJ5KHN0YXRzLCBwYXR0ZXJuKSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVycm9yRmlsdGVyKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZ2V0U3RhdChmaWxlcGF0aCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3RhdChmaWxlcGF0aCwgdGhpcy5fZnNTdGF0U2V0dGluZ3MsIChlcnJvciwgc3RhdHMpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IgPT09IG51bGwgPyByZXNvbHZlKHN0YXRzKSA6IHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUmVhZGVyU3RyZWFtO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi91dGlsc1wiKTtcbmNsYXNzIE1hdGNoZXIge1xuICAgIGNvbnN0cnVjdG9yKF9wYXR0ZXJucywgX3NldHRpbmdzLCBfbWljcm9tYXRjaE9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fcGF0dGVybnMgPSBfcGF0dGVybnM7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xuICAgICAgICB0aGlzLl9taWNyb21hdGNoT3B0aW9ucyA9IF9taWNyb21hdGNoT3B0aW9ucztcbiAgICAgICAgdGhpcy5fc3RvcmFnZSA9IFtdO1xuICAgICAgICB0aGlzLl9maWxsU3RvcmFnZSgpO1xuICAgIH1cbiAgICBfZmlsbFN0b3JhZ2UoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgb3JpZ2luYWwgcGF0dGVybiBtYXkgaW5jbHVkZSBgeywqLCoqLGEvKn1gLCB3aGljaCB3aWxsIGxlYWQgdG8gcHJvYmxlbXMgd2l0aCBtYXRjaGluZyAodW5yZXNvbHZlZCBsZXZlbCkuXG4gICAgICAgICAqIFNvLCBiZWZvcmUgZXhwYW5kIHBhdHRlcm5zIHdpdGggYnJhY2UgZXhwYW5zaW9uIGludG8gc2VwYXJhdGVkIHBhdHRlcm5zLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcGF0dGVybnMgPSB1dGlscy5wYXR0ZXJuLmV4cGFuZFBhdHRlcm5zV2l0aEJyYWNlRXhwYW5zaW9uKHRoaXMuX3BhdHRlcm5zKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgICAgICAgICBjb25zdCBzZWdtZW50cyA9IHRoaXMuX2dldFBhdHRlcm5TZWdtZW50cyhwYXR0ZXJuKTtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25zID0gdGhpcy5fc3BsaXRTZWdtZW50c0ludG9TZWN0aW9ucyhzZWdtZW50cyk7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBzZWN0aW9ucy5sZW5ndGggPD0gMSxcbiAgICAgICAgICAgICAgICBwYXR0ZXJuLFxuICAgICAgICAgICAgICAgIHNlZ21lbnRzLFxuICAgICAgICAgICAgICAgIHNlY3Rpb25zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfZ2V0UGF0dGVyblNlZ21lbnRzKHBhdHRlcm4pIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSB1dGlscy5wYXR0ZXJuLmdldFBhdHRlcm5QYXJ0cyhwYXR0ZXJuLCB0aGlzLl9taWNyb21hdGNoT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiBwYXJ0cy5tYXAoKHBhcnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGR5bmFtaWMgPSB1dGlscy5wYXR0ZXJuLmlzRHluYW1pY1BhdHRlcm4ocGFydCwgdGhpcy5fc2V0dGluZ3MpO1xuICAgICAgICAgICAgaWYgKCFkeW5hbWljKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZHluYW1pYzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHBhcnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkeW5hbWljOiB0cnVlLFxuICAgICAgICAgICAgICAgIHBhdHRlcm46IHBhcnQsXG4gICAgICAgICAgICAgICAgcGF0dGVyblJlOiB1dGlscy5wYXR0ZXJuLm1ha2VSZShwYXJ0LCB0aGlzLl9taWNyb21hdGNoT3B0aW9ucylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfc3BsaXRTZWdtZW50c0ludG9TZWN0aW9ucyhzZWdtZW50cykge1xuICAgICAgICByZXR1cm4gdXRpbHMuYXJyYXkuc3BsaXRXaGVuKHNlZ21lbnRzLCAoc2VnbWVudCkgPT4gc2VnbWVudC5keW5hbWljICYmIHV0aWxzLnBhdHRlcm4uaGFzR2xvYlN0YXIoc2VnbWVudC5wYXR0ZXJuKSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gTWF0Y2hlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgbWF0Y2hlcl8xID0gcmVxdWlyZShcIi4vbWF0Y2hlclwiKTtcbmNsYXNzIFBhcnRpYWxNYXRjaGVyIGV4dGVuZHMgbWF0Y2hlcl8xLmRlZmF1bHQge1xuICAgIG1hdGNoKGZpbGVwYXRoKSB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gZmlsZXBhdGguc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgbGV2ZWxzID0gcGFydHMubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXR0ZXJucyA9IHRoaXMuX3N0b3JhZ2UuZmlsdGVyKChpbmZvKSA9PiAhaW5mby5jb21wbGV0ZSB8fCBpbmZvLnNlZ21lbnRzLmxlbmd0aCA+IGxldmVscyk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHBhdHRlcm4uc2VjdGlvbnNbMF07XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEluIHRoaXMgY2FzZSwgdGhlIHBhdHRlcm4gaGFzIGEgZ2xvYnN0YXIgYW5kIHdlIG11c3QgcmVhZCBhbGwgZGlyZWN0b3JpZXMgdW5jb25kaXRpb25hbGx5LFxuICAgICAgICAgICAgICogYnV0IG9ubHkgaWYgdGhlIGxldmVsIGhhcyByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGZpcnN0IGdyb3VwLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIGZpeHR1cmVzL3thLGJ9LyoqXG4gICAgICAgICAgICAgKiAgXiB0cnVlL2ZhbHNlICBeIGFsd2F5cyB0cnVlXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKCFwYXR0ZXJuLmNvbXBsZXRlICYmIGxldmVscyA+IHNlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IHBhcnRzLmV2ZXJ5KChwYXJ0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnQgPSBwYXR0ZXJuLnNlZ21lbnRzW2luZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAoc2VnbWVudC5keW5hbWljICYmIHNlZ21lbnQucGF0dGVyblJlLnRlc3QocGFydCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghc2VnbWVudC5keW5hbWljICYmIHNlZ21lbnQucGF0dGVybiA9PT0gcGFydCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUGFydGlhbE1hdGNoZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzXCIpO1xuY29uc3QgcGFydGlhbF8xID0gcmVxdWlyZShcIi4uL21hdGNoZXJzL3BhcnRpYWxcIik7XG5jbGFzcyBEZWVwRmlsdGVyIHtcbiAgICBjb25zdHJ1Y3Rvcihfc2V0dGluZ3MsIF9taWNyb21hdGNoT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgICAgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMgPSBfbWljcm9tYXRjaE9wdGlvbnM7XG4gICAgfVxuICAgIGdldEZpbHRlcihiYXNlUGF0aCwgcG9zaXRpdmUsIG5lZ2F0aXZlKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXIgPSB0aGlzLl9nZXRNYXRjaGVyKHBvc2l0aXZlKTtcbiAgICAgICAgY29uc3QgbmVnYXRpdmVSZSA9IHRoaXMuX2dldE5lZ2F0aXZlUGF0dGVybnNSZShuZWdhdGl2ZSk7XG4gICAgICAgIHJldHVybiAoZW50cnkpID0+IHRoaXMuX2ZpbHRlcihiYXNlUGF0aCwgZW50cnksIG1hdGNoZXIsIG5lZ2F0aXZlUmUpO1xuICAgIH1cbiAgICBfZ2V0TWF0Y2hlcihwYXR0ZXJucykge1xuICAgICAgICByZXR1cm4gbmV3IHBhcnRpYWxfMS5kZWZhdWx0KHBhdHRlcm5zLCB0aGlzLl9zZXR0aW5ncywgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xuICAgIH1cbiAgICBfZ2V0TmVnYXRpdmVQYXR0ZXJuc1JlKHBhdHRlcm5zKSB7XG4gICAgICAgIGNvbnN0IGFmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybnMgPSBwYXR0ZXJucy5maWx0ZXIodXRpbHMucGF0dGVybi5pc0FmZmVjdERlcHRoT2ZSZWFkaW5nUGF0dGVybik7XG4gICAgICAgIHJldHVybiB1dGlscy5wYXR0ZXJuLmNvbnZlcnRQYXR0ZXJuc1RvUmUoYWZmZWN0RGVwdGhPZlJlYWRpbmdQYXR0ZXJucywgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xuICAgIH1cbiAgICBfZmlsdGVyKGJhc2VQYXRoLCBlbnRyeSwgbWF0Y2hlciwgbmVnYXRpdmVSZSkge1xuICAgICAgICBpZiAodGhpcy5faXNTa2lwcGVkQnlEZWVwKGJhc2VQYXRoLCBlbnRyeS5wYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9pc1NraXBwZWRTeW1ib2xpY0xpbmsoZW50cnkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsZXBhdGggPSB1dGlscy5wYXRoLnJlbW92ZUxlYWRpbmdEb3RTZWdtZW50KGVudHJ5LnBhdGgpO1xuICAgICAgICBpZiAodGhpcy5faXNTa2lwcGVkQnlQb3NpdGl2ZVBhdHRlcm5zKGZpbGVwYXRoLCBtYXRjaGVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1NraXBwZWRCeU5lZ2F0aXZlUGF0dGVybnMoZmlsZXBhdGgsIG5lZ2F0aXZlUmUpO1xuICAgIH1cbiAgICBfaXNTa2lwcGVkQnlEZWVwKGJhc2VQYXRoLCBlbnRyeVBhdGgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF2b2lkIHVubmVjZXNzYXJ5IGRlcHRoIGNhbGN1bGF0aW9ucyB3aGVuIGl0IGRvZXNuJ3QgbWF0dGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLmRlZXAgPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEVudHJ5TGV2ZWwoYmFzZVBhdGgsIGVudHJ5UGF0aCkgPj0gdGhpcy5fc2V0dGluZ3MuZGVlcDtcbiAgICB9XG4gICAgX2dldEVudHJ5TGV2ZWwoYmFzZVBhdGgsIGVudHJ5UGF0aCkge1xuICAgICAgICBjb25zdCBlbnRyeVBhdGhEZXB0aCA9IGVudHJ5UGF0aC5zcGxpdCgnLycpLmxlbmd0aDtcbiAgICAgICAgaWYgKGJhc2VQYXRoID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5UGF0aERlcHRoO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJhc2VQYXRoRGVwdGggPSBiYXNlUGF0aC5zcGxpdCgnLycpLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIGVudHJ5UGF0aERlcHRoIC0gYmFzZVBhdGhEZXB0aDtcbiAgICB9XG4gICAgX2lzU2tpcHBlZFN5bWJvbGljTGluayhlbnRyeSkge1xuICAgICAgICByZXR1cm4gIXRoaXMuX3NldHRpbmdzLmZvbGxvd1N5bWJvbGljTGlua3MgJiYgZW50cnkuZGlyZW50LmlzU3ltYm9saWNMaW5rKCk7XG4gICAgfVxuICAgIF9pc1NraXBwZWRCeVBvc2l0aXZlUGF0dGVybnMoZW50cnlQYXRoLCBtYXRjaGVyKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5fc2V0dGluZ3MuYmFzZU5hbWVNYXRjaCAmJiAhbWF0Y2hlci5tYXRjaChlbnRyeVBhdGgpO1xuICAgIH1cbiAgICBfaXNTa2lwcGVkQnlOZWdhdGl2ZVBhdHRlcm5zKGVudHJ5UGF0aCwgcGF0dGVybnNSZSkge1xuICAgICAgICByZXR1cm4gIXV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZW50cnlQYXRoLCBwYXR0ZXJuc1JlKTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBEZWVwRmlsdGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi91dGlsc1wiKTtcbmNsYXNzIEVudHJ5RmlsdGVyIHtcbiAgICBjb25zdHJ1Y3Rvcihfc2V0dGluZ3MsIF9taWNyb21hdGNoT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICAgICAgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMgPSBfbWljcm9tYXRjaE9wdGlvbnM7XG4gICAgICAgIHRoaXMuaW5kZXggPSBuZXcgTWFwKCk7XG4gICAgfVxuICAgIGdldEZpbHRlcihwb3NpdGl2ZSwgbmVnYXRpdmUpIHtcbiAgICAgICAgY29uc3QgcG9zaXRpdmVSZSA9IHV0aWxzLnBhdHRlcm4uY29udmVydFBhdHRlcm5zVG9SZShwb3NpdGl2ZSwgdGhpcy5fbWljcm9tYXRjaE9wdGlvbnMpO1xuICAgICAgICBjb25zdCBuZWdhdGl2ZVJlID0gdXRpbHMucGF0dGVybi5jb252ZXJ0UGF0dGVybnNUb1JlKG5lZ2F0aXZlLCB0aGlzLl9taWNyb21hdGNoT3B0aW9ucyk7XG4gICAgICAgIHJldHVybiAoZW50cnkpID0+IHRoaXMuX2ZpbHRlcihlbnRyeSwgcG9zaXRpdmVSZSwgbmVnYXRpdmVSZSk7XG4gICAgfVxuICAgIF9maWx0ZXIoZW50cnksIHBvc2l0aXZlUmUsIG5lZ2F0aXZlUmUpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLnVuaXF1ZSAmJiB0aGlzLl9pc0R1cGxpY2F0ZUVudHJ5KGVudHJ5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9vbmx5RmlsZUZpbHRlcihlbnRyeSkgfHwgdGhpcy5fb25seURpcmVjdG9yeUZpbHRlcihlbnRyeSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5faXNTa2lwcGVkQnlBYnNvbHV0ZU5lZ2F0aXZlUGF0dGVybnMoZW50cnkucGF0aCwgbmVnYXRpdmVSZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWxlcGF0aCA9IHRoaXMuX3NldHRpbmdzLmJhc2VOYW1lTWF0Y2ggPyBlbnRyeS5uYW1lIDogZW50cnkucGF0aDtcbiAgICAgICAgY29uc3QgaXNNYXRjaGVkID0gdGhpcy5faXNNYXRjaFRvUGF0dGVybnMoZmlsZXBhdGgsIHBvc2l0aXZlUmUpICYmICF0aGlzLl9pc01hdGNoVG9QYXR0ZXJucyhlbnRyeS5wYXRoLCBuZWdhdGl2ZVJlKTtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLnVuaXF1ZSAmJiBpc01hdGNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUluZGV4UmVjb3JkKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNNYXRjaGVkO1xuICAgIH1cbiAgICBfaXNEdXBsaWNhdGVFbnRyeShlbnRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleC5oYXMoZW50cnkucGF0aCk7XG4gICAgfVxuICAgIF9jcmVhdGVJbmRleFJlY29yZChlbnRyeSkge1xuICAgICAgICB0aGlzLmluZGV4LnNldChlbnRyeS5wYXRoLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBfb25seUZpbGVGaWx0ZXIoZW50cnkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzLm9ubHlGaWxlcyAmJiAhZW50cnkuZGlyZW50LmlzRmlsZSgpO1xuICAgIH1cbiAgICBfb25seURpcmVjdG9yeUZpbHRlcihlbnRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3Mub25seURpcmVjdG9yaWVzICYmICFlbnRyeS5kaXJlbnQuaXNEaXJlY3RvcnkoKTtcbiAgICB9XG4gICAgX2lzU2tpcHBlZEJ5QWJzb2x1dGVOZWdhdGl2ZVBhdHRlcm5zKGVudHJ5UGF0aCwgcGF0dGVybnNSZSkge1xuICAgICAgICBpZiAoIXRoaXMuX3NldHRpbmdzLmFic29sdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZnVsbHBhdGggPSB1dGlscy5wYXRoLm1ha2VBYnNvbHV0ZSh0aGlzLl9zZXR0aW5ncy5jd2QsIGVudHJ5UGF0aCk7XG4gICAgICAgIHJldHVybiB1dGlscy5wYXR0ZXJuLm1hdGNoQW55KGZ1bGxwYXRoLCBwYXR0ZXJuc1JlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmlyc3QsIGp1c3QgdHJ5aW5nIHRvIGFwcGx5IHBhdHRlcm5zIHRvIHRoZSBwYXRoLlxuICAgICAqIFNlY29uZCwgdHJ5aW5nIHRvIGFwcGx5IHBhdHRlcm5zIHRvIHRoZSBwYXRoIHdpdGggZmluYWwgc2xhc2guXG4gICAgICovXG4gICAgX2lzTWF0Y2hUb1BhdHRlcm5zKGVudHJ5UGF0aCwgcGF0dGVybnNSZSkge1xuICAgICAgICBjb25zdCBmaWxlcGF0aCA9IHV0aWxzLnBhdGgucmVtb3ZlTGVhZGluZ0RvdFNlZ21lbnQoZW50cnlQYXRoKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZmlsZXBhdGgsIHBhdHRlcm5zUmUpIHx8IHV0aWxzLnBhdHRlcm4ubWF0Y2hBbnkoZmlsZXBhdGggKyAnLycsIHBhdHRlcm5zUmUpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IEVudHJ5RmlsdGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi91dGlsc1wiKTtcbmNsYXNzIEVycm9yRmlsdGVyIHtcbiAgICBjb25zdHJ1Y3Rvcihfc2V0dGluZ3MpIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSBfc2V0dGluZ3M7XG4gICAgfVxuICAgIGdldEZpbHRlcigpIHtcbiAgICAgICAgcmV0dXJuIChlcnJvcikgPT4gdGhpcy5faXNOb25GYXRhbEVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgX2lzTm9uRmF0YWxFcnJvcihlcnJvcikge1xuICAgICAgICByZXR1cm4gdXRpbHMuZXJybm8uaXNFbm9lbnRDb2RlRXJyb3IoZXJyb3IpIHx8IHRoaXMuX3NldHRpbmdzLnN1cHByZXNzRXJyb3JzO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IEVycm9yRmlsdGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuLi8uLi91dGlsc1wiKTtcbmNsYXNzIEVudHJ5VHJhbnNmb3JtZXIge1xuICAgIGNvbnN0cnVjdG9yKF9zZXR0aW5ncykge1xuICAgICAgICB0aGlzLl9zZXR0aW5ncyA9IF9zZXR0aW5ncztcbiAgICB9XG4gICAgZ2V0VHJhbnNmb3JtZXIoKSB7XG4gICAgICAgIHJldHVybiAoZW50cnkpID0+IHRoaXMuX3RyYW5zZm9ybShlbnRyeSk7XG4gICAgfVxuICAgIF90cmFuc2Zvcm0oZW50cnkpIHtcbiAgICAgICAgbGV0IGZpbGVwYXRoID0gZW50cnkucGF0aDtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzLmFic29sdXRlKSB7XG4gICAgICAgICAgICBmaWxlcGF0aCA9IHV0aWxzLnBhdGgubWFrZUFic29sdXRlKHRoaXMuX3NldHRpbmdzLmN3ZCwgZmlsZXBhdGgpO1xuICAgICAgICAgICAgZmlsZXBhdGggPSB1dGlscy5wYXRoLnVuaXhpZnkoZmlsZXBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9zZXR0aW5ncy5tYXJrRGlyZWN0b3JpZXMgJiYgZW50cnkuZGlyZW50LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgIGZpbGVwYXRoICs9ICcvJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX3NldHRpbmdzLm9iamVjdE1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlcGF0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBlbnRyeSksIHsgcGF0aDogZmlsZXBhdGggfSk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gRW50cnlUcmFuc2Zvcm1lcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuY29uc3QgZGVlcF8xID0gcmVxdWlyZShcIi4vZmlsdGVycy9kZWVwXCIpO1xuY29uc3QgZW50cnlfMSA9IHJlcXVpcmUoXCIuL2ZpbHRlcnMvZW50cnlcIik7XG5jb25zdCBlcnJvcl8xID0gcmVxdWlyZShcIi4vZmlsdGVycy9lcnJvclwiKTtcbmNvbnN0IGVudHJ5XzIgPSByZXF1aXJlKFwiLi90cmFuc2Zvcm1lcnMvZW50cnlcIik7XG5jbGFzcyBQcm92aWRlciB7XG4gICAgY29uc3RydWN0b3IoX3NldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzID0gX3NldHRpbmdzO1xuICAgICAgICB0aGlzLmVycm9yRmlsdGVyID0gbmV3IGVycm9yXzEuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuZW50cnlGaWx0ZXIgPSBuZXcgZW50cnlfMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzLCB0aGlzLl9nZXRNaWNyb21hdGNoT3B0aW9ucygpKTtcbiAgICAgICAgdGhpcy5kZWVwRmlsdGVyID0gbmV3IGRlZXBfMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzLCB0aGlzLl9nZXRNaWNyb21hdGNoT3B0aW9ucygpKTtcbiAgICAgICAgdGhpcy5lbnRyeVRyYW5zZm9ybWVyID0gbmV3IGVudHJ5XzIuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgfVxuICAgIF9nZXRSb290RGlyZWN0b3J5KHRhc2spIHtcbiAgICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLl9zZXR0aW5ncy5jd2QsIHRhc2suYmFzZSk7XG4gICAgfVxuICAgIF9nZXRSZWFkZXJPcHRpb25zKHRhc2spIHtcbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSB0YXNrLmJhc2UgPT09ICcuJyA/ICcnIDogdGFzay5iYXNlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYmFzZVBhdGgsXG4gICAgICAgICAgICBwYXRoU2VnbWVudFNlcGFyYXRvcjogJy8nLFxuICAgICAgICAgICAgY29uY3VycmVuY3k6IHRoaXMuX3NldHRpbmdzLmNvbmN1cnJlbmN5LFxuICAgICAgICAgICAgZGVlcEZpbHRlcjogdGhpcy5kZWVwRmlsdGVyLmdldEZpbHRlcihiYXNlUGF0aCwgdGFzay5wb3NpdGl2ZSwgdGFzay5uZWdhdGl2ZSksXG4gICAgICAgICAgICBlbnRyeUZpbHRlcjogdGhpcy5lbnRyeUZpbHRlci5nZXRGaWx0ZXIodGFzay5wb3NpdGl2ZSwgdGFzay5uZWdhdGl2ZSksXG4gICAgICAgICAgICBlcnJvckZpbHRlcjogdGhpcy5lcnJvckZpbHRlci5nZXRGaWx0ZXIoKSxcbiAgICAgICAgICAgIGZvbGxvd1N5bWJvbGljTGlua3M6IHRoaXMuX3NldHRpbmdzLmZvbGxvd1N5bWJvbGljTGlua3MsXG4gICAgICAgICAgICBmczogdGhpcy5fc2V0dGluZ3MuZnMsXG4gICAgICAgICAgICBzdGF0czogdGhpcy5fc2V0dGluZ3Muc3RhdHMsXG4gICAgICAgICAgICB0aHJvd0Vycm9yT25Ccm9rZW5TeW1ib2xpY0xpbms6IHRoaXMuX3NldHRpbmdzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluayxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdGhpcy5lbnRyeVRyYW5zZm9ybWVyLmdldFRyYW5zZm9ybWVyKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2dldE1pY3JvbWF0Y2hPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZG90OiB0aGlzLl9zZXR0aW5ncy5kb3QsXG4gICAgICAgICAgICBtYXRjaEJhc2U6IHRoaXMuX3NldHRpbmdzLmJhc2VOYW1lTWF0Y2gsXG4gICAgICAgICAgICBub2JyYWNlOiAhdGhpcy5fc2V0dGluZ3MuYnJhY2VFeHBhbnNpb24sXG4gICAgICAgICAgICBub2Nhc2U6ICF0aGlzLl9zZXR0aW5ncy5jYXNlU2Vuc2l0aXZlTWF0Y2gsXG4gICAgICAgICAgICBub2V4dDogIXRoaXMuX3NldHRpbmdzLmV4dGdsb2IsXG4gICAgICAgICAgICBub2dsb2JzdGFyOiAhdGhpcy5fc2V0dGluZ3MuZ2xvYnN0YXIsXG4gICAgICAgICAgICBwb3NpeDogdHJ1ZSxcbiAgICAgICAgICAgIHN0cmljdFNsYXNoZXM6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUHJvdmlkZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IHN0cmVhbV8xID0gcmVxdWlyZShcIi4uL3JlYWRlcnMvc3RyZWFtXCIpO1xuY29uc3QgcHJvdmlkZXJfMSA9IHJlcXVpcmUoXCIuL3Byb3ZpZGVyXCIpO1xuY2xhc3MgUHJvdmlkZXJBc3luYyBleHRlbmRzIHByb3ZpZGVyXzEuZGVmYXVsdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX3JlYWRlciA9IG5ldyBzdHJlYW1fMS5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcbiAgICB9XG4gICAgcmVhZCh0YXNrKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9nZXRSb290RGlyZWN0b3J5KHRhc2spO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0UmVhZGVyT3B0aW9ucyh0YXNrKTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RyZWFtID0gdGhpcy5hcGkocm9vdCwgdGFzaywgb3B0aW9ucyk7XG4gICAgICAgICAgICBzdHJlYW0ub25jZSgnZXJyb3InLCByZWplY3QpO1xuICAgICAgICAgICAgc3RyZWFtLm9uKCdkYXRhJywgKGVudHJ5KSA9PiBlbnRyaWVzLnB1c2gob3B0aW9ucy50cmFuc2Zvcm0oZW50cnkpKSk7XG4gICAgICAgICAgICBzdHJlYW0ub25jZSgnZW5kJywgKCkgPT4gcmVzb2x2ZShlbnRyaWVzKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhcGkocm9vdCwgdGFzaywgb3B0aW9ucykge1xuICAgICAgICBpZiAodGFzay5keW5hbWljKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLmR5bmFtaWMocm9vdCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRlci5zdGF0aWModGFzay5wYXR0ZXJucywgb3B0aW9ucyk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUHJvdmlkZXJBc3luYztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuY29uc3Qgc3RyZWFtXzIgPSByZXF1aXJlKFwiLi4vcmVhZGVycy9zdHJlYW1cIik7XG5jb25zdCBwcm92aWRlcl8xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJcIik7XG5jbGFzcyBQcm92aWRlclN0cmVhbSBleHRlbmRzIHByb3ZpZGVyXzEuZGVmYXVsdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX3JlYWRlciA9IG5ldyBzdHJlYW1fMi5kZWZhdWx0KHRoaXMuX3NldHRpbmdzKTtcbiAgICB9XG4gICAgcmVhZCh0YXNrKSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSB0aGlzLl9nZXRSb290RGlyZWN0b3J5KHRhc2spO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0UmVhZGVyT3B0aW9ucyh0YXNrKTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdGhpcy5hcGkocm9vdCwgdGFzaywgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gbmV3IHN0cmVhbV8xLlJlYWRhYmxlKHsgb2JqZWN0TW9kZTogdHJ1ZSwgcmVhZDogKCkgPT4geyB9IH0pO1xuICAgICAgICBzb3VyY2VcbiAgICAgICAgICAgIC5vbmNlKCdlcnJvcicsIChlcnJvcikgPT4gZGVzdGluYXRpb24uZW1pdCgnZXJyb3InLCBlcnJvcikpXG4gICAgICAgICAgICAub24oJ2RhdGEnLCAoZW50cnkpID0+IGRlc3RpbmF0aW9uLmVtaXQoJ2RhdGEnLCBvcHRpb25zLnRyYW5zZm9ybShlbnRyeSkpKVxuICAgICAgICAgICAgLm9uY2UoJ2VuZCcsICgpID0+IGRlc3RpbmF0aW9uLmVtaXQoJ2VuZCcpKTtcbiAgICAgICAgZGVzdGluYXRpb25cbiAgICAgICAgICAgIC5vbmNlKCdjbG9zZScsICgpID0+IHNvdXJjZS5kZXN0cm95KCkpO1xuICAgICAgICByZXR1cm4gZGVzdGluYXRpb247XG4gICAgfVxuICAgIGFwaShyb290LCB0YXNrLCBvcHRpb25zKSB7XG4gICAgICAgIGlmICh0YXNrLmR5bmFtaWMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWFkZXIuZHluYW1pYyhyb290LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZGVyLnN0YXRpYyh0YXNrLnBhdHRlcm5zLCBvcHRpb25zKTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBQcm92aWRlclN0cmVhbTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3QgZnNTdGF0ID0gcmVxdWlyZShcIkBub2RlbGliL2ZzLnN0YXRcIik7XG5jb25zdCBmc1dhbGsgPSByZXF1aXJlKFwiQG5vZGVsaWIvZnMud2Fsa1wiKTtcbmNvbnN0IHJlYWRlcl8xID0gcmVxdWlyZShcIi4vcmVhZGVyXCIpO1xuY2xhc3MgUmVhZGVyU3luYyBleHRlbmRzIHJlYWRlcl8xLmRlZmF1bHQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLl93YWxrU3luYyA9IGZzV2Fsay53YWxrU3luYztcbiAgICAgICAgdGhpcy5fc3RhdFN5bmMgPSBmc1N0YXQuc3RhdFN5bmM7XG4gICAgfVxuICAgIGR5bmFtaWMocm9vdCwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2Fsa1N5bmMocm9vdCwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN0YXRpYyhwYXR0ZXJucywgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgICAgICAgICAgY29uc3QgZmlsZXBhdGggPSB0aGlzLl9nZXRGdWxsRW50cnlQYXRoKHBhdHRlcm4pO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB0aGlzLl9nZXRFbnRyeShmaWxlcGF0aCwgcGF0dGVybiwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoZW50cnkgPT09IG51bGwgfHwgIW9wdGlvbnMuZW50cnlGaWx0ZXIoZW50cnkpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnRyaWVzO1xuICAgIH1cbiAgICBfZ2V0RW50cnkoZmlsZXBhdGgsIHBhdHRlcm4sIG9wdGlvbnMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gdGhpcy5fZ2V0U3RhdChmaWxlcGF0aCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFrZUVudHJ5KHN0YXRzLCBwYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVycm9yRmlsdGVyKGVycm9yKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2dldFN0YXQoZmlsZXBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRTeW5jKGZpbGVwYXRoLCB0aGlzLl9mc1N0YXRTZXR0aW5ncyk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gUmVhZGVyU3luYztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY29uc3Qgc3luY18xID0gcmVxdWlyZShcIi4uL3JlYWRlcnMvc3luY1wiKTtcbmNvbnN0IHByb3ZpZGVyXzEgPSByZXF1aXJlKFwiLi9wcm92aWRlclwiKTtcbmNsYXNzIFByb3ZpZGVyU3luYyBleHRlbmRzIHByb3ZpZGVyXzEuZGVmYXVsdCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuX3JlYWRlciA9IG5ldyBzeW5jXzEuZGVmYXVsdCh0aGlzLl9zZXR0aW5ncyk7XG4gICAgfVxuICAgIHJlYWQodGFzaykge1xuICAgICAgICBjb25zdCByb290ID0gdGhpcy5fZ2V0Um9vdERpcmVjdG9yeSh0YXNrKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldFJlYWRlck9wdGlvbnModGFzayk7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLmFwaShyb290LCB0YXNrLCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIGVudHJpZXMubWFwKG9wdGlvbnMudHJhbnNmb3JtKTtcbiAgICB9XG4gICAgYXBpKHJvb3QsIHRhc2ssIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHRhc2suZHluYW1pYykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRlci5keW5hbWljKHJvb3QsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkZXIuc3RhdGljKHRhc2sucGF0dGVybnMsIG9wdGlvbnMpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IFByb3ZpZGVyU3luYztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5ERUZBVUxUX0ZJTEVfU1lTVEVNX0FEQVBURVIgPSB2b2lkIDA7XG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbmNvbnN0IG9zID0gcmVxdWlyZShcIm9zXCIpO1xuLyoqXG4gKiBUaGUgYG9zLmNwdXNgIG1ldGhvZCBjYW4gcmV0dXJuIHplcm8uIFdlIGV4cGVjdCB0aGUgbnVtYmVyIG9mIGNvcmVzIHRvIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLlxuICogaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvN2ZhZWRkZjIzYTk4YzUzODk2ZjhiNTc0YTZlNjY1ODllOGZiMWViOC9saWIvb3MuanMjTDEwNi1MMTA3XG4gKi9cbmNvbnN0IENQVV9DT1VOVCA9IE1hdGgubWF4KG9zLmNwdXMoKS5sZW5ndGgsIDEpO1xuZXhwb3J0cy5ERUZBVUxUX0ZJTEVfU1lTVEVNX0FEQVBURVIgPSB7XG4gICAgbHN0YXQ6IGZzLmxzdGF0LFxuICAgIGxzdGF0U3luYzogZnMubHN0YXRTeW5jLFxuICAgIHN0YXQ6IGZzLnN0YXQsXG4gICAgc3RhdFN5bmM6IGZzLnN0YXRTeW5jLFxuICAgIHJlYWRkaXI6IGZzLnJlYWRkaXIsXG4gICAgcmVhZGRpclN5bmM6IGZzLnJlYWRkaXJTeW5jXG59O1xuY2xhc3MgU2V0dGluZ3Mge1xuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IF9vcHRpb25zO1xuICAgICAgICB0aGlzLmFic29sdXRlID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5hYnNvbHV0ZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmJhc2VOYW1lTWF0Y2ggPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmJhc2VOYW1lTWF0Y2gsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5icmFjZUV4cGFuc2lvbiA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuYnJhY2VFeHBhbnNpb24sIHRydWUpO1xuICAgICAgICB0aGlzLmNhc2VTZW5zaXRpdmVNYXRjaCA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuY2FzZVNlbnNpdGl2ZU1hdGNoLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jb25jdXJyZW5jeSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMuY29uY3VycmVuY3ksIENQVV9DT1VOVCk7XG4gICAgICAgIHRoaXMuY3dkID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5jd2QsIHByb2Nlc3MuY3dkKCkpO1xuICAgICAgICB0aGlzLmRlZXAgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRlZXAsIEluZmluaXR5KTtcbiAgICAgICAgdGhpcy5kb3QgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmRvdCwgZmFsc2UpO1xuICAgICAgICB0aGlzLmV4dGdsb2IgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmV4dGdsb2IsIHRydWUpO1xuICAgICAgICB0aGlzLmZvbGxvd1N5bWJvbGljTGlua3MgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmZvbGxvd1N5bWJvbGljTGlua3MsIHRydWUpO1xuICAgICAgICB0aGlzLmZzID0gdGhpcy5fZ2V0RmlsZVN5c3RlbU1ldGhvZHModGhpcy5fb3B0aW9ucy5mcyk7XG4gICAgICAgIHRoaXMuZ2xvYnN0YXIgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmdsb2JzdGFyLCB0cnVlKTtcbiAgICAgICAgdGhpcy5pZ25vcmUgPSB0aGlzLl9nZXRWYWx1ZSh0aGlzLl9vcHRpb25zLmlnbm9yZSwgW10pO1xuICAgICAgICB0aGlzLm1hcmtEaXJlY3RvcmllcyA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMubWFya0RpcmVjdG9yaWVzLCBmYWxzZSk7XG4gICAgICAgIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMub2JqZWN0TW9kZSwgZmFsc2UpO1xuICAgICAgICB0aGlzLm9ubHlEaXJlY3RvcmllcyA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMub25seURpcmVjdG9yaWVzLCBmYWxzZSk7XG4gICAgICAgIHRoaXMub25seUZpbGVzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5vbmx5RmlsZXMsIHRydWUpO1xuICAgICAgICB0aGlzLnN0YXRzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdGF0cywgZmFsc2UpO1xuICAgICAgICB0aGlzLnN1cHByZXNzRXJyb3JzID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy5zdXBwcmVzc0Vycm9ycywgZmFsc2UpO1xuICAgICAgICB0aGlzLnRocm93RXJyb3JPbkJyb2tlblN5bWJvbGljTGluayA9IHRoaXMuX2dldFZhbHVlKHRoaXMuX29wdGlvbnMudGhyb3dFcnJvck9uQnJva2VuU3ltYm9saWNMaW5rLCBmYWxzZSk7XG4gICAgICAgIHRoaXMudW5pcXVlID0gdGhpcy5fZ2V0VmFsdWUodGhpcy5fb3B0aW9ucy51bmlxdWUsIHRydWUpO1xuICAgICAgICBpZiAodGhpcy5vbmx5RGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICAgIHRoaXMub25seUZpbGVzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc3RhdHMpIHtcbiAgICAgICAgICAgIHRoaXMub2JqZWN0TW9kZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2dldFZhbHVlKG9wdGlvbiwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiA9PT0gdW5kZWZpbmVkID8gdmFsdWUgOiBvcHRpb247XG4gICAgfVxuICAgIF9nZXRGaWxlU3lzdGVtTWV0aG9kcyhtZXRob2RzID0ge30pIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXhwb3J0cy5ERUZBVUxUX0ZJTEVfU1lTVEVNX0FEQVBURVIpLCBtZXRob2RzKTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBTZXR0aW5ncztcbiIsIlwidXNlIHN0cmljdFwiO1xuY29uc3QgdGFza01hbmFnZXIgPSByZXF1aXJlKFwiLi9tYW5hZ2Vycy90YXNrc1wiKTtcbmNvbnN0IHBhdHRlcm5NYW5hZ2VyID0gcmVxdWlyZShcIi4vbWFuYWdlcnMvcGF0dGVybnNcIik7XG5jb25zdCBhc3luY18xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL2FzeW5jXCIpO1xuY29uc3Qgc3RyZWFtXzEgPSByZXF1aXJlKFwiLi9wcm92aWRlcnMvc3RyZWFtXCIpO1xuY29uc3Qgc3luY18xID0gcmVxdWlyZShcIi4vcHJvdmlkZXJzL3N5bmNcIik7XG5jb25zdCBzZXR0aW5nc18xID0gcmVxdWlyZShcIi4vc2V0dGluZ3NcIik7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xuYXN5bmMgZnVuY3Rpb24gRmFzdEdsb2Ioc291cmNlLCBvcHRpb25zKSB7XG4gICAgYXNzZXJ0UGF0dGVybnNJbnB1dChzb3VyY2UpO1xuICAgIGNvbnN0IHdvcmtzID0gZ2V0V29ya3Moc291cmNlLCBhc3luY18xLmRlZmF1bHQsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKHdvcmtzKTtcbiAgICByZXR1cm4gdXRpbHMuYXJyYXkuZmxhdHRlbihyZXN1bHQpO1xufVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzY3JpcHQtZXNsaW50L3R5cGVzY3JpcHQtZXNsaW50L2lzc3Vlcy82MFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlZGVjbGFyZVxuKGZ1bmN0aW9uIChGYXN0R2xvYikge1xuICAgIGZ1bmN0aW9uIHN5bmMoc291cmNlLCBvcHRpb25zKSB7XG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcbiAgICAgICAgY29uc3Qgd29ya3MgPSBnZXRXb3Jrcyhzb3VyY2UsIHN5bmNfMS5kZWZhdWx0LCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLmFycmF5LmZsYXR0ZW4od29ya3MpO1xuICAgIH1cbiAgICBGYXN0R2xvYi5zeW5jID0gc3luYztcbiAgICBmdW5jdGlvbiBzdHJlYW0oc291cmNlLCBvcHRpb25zKSB7XG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcbiAgICAgICAgY29uc3Qgd29ya3MgPSBnZXRXb3Jrcyhzb3VyY2UsIHN0cmVhbV8xLmRlZmF1bHQsIG9wdGlvbnMpO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHN0cmVhbSByZXR1cm5lZCBieSB0aGUgcHJvdmlkZXIgY2Fubm90IHdvcmsgd2l0aCBhbiBhc3luY2hyb25vdXMgaXRlcmF0b3IuXG4gICAgICAgICAqIFRvIHN1cHBvcnQgYXN5bmNocm9ub3VzIGl0ZXJhdG9ycywgcmVnYXJkbGVzcyBvZiB0aGUgbnVtYmVyIG9mIHRhc2tzLCB3ZSBhbHdheXMgbXVsdGlwbGV4IHN0cmVhbXMuXG4gICAgICAgICAqIFRoaXMgYWZmZWN0cyBwZXJmb3JtYW5jZSAoKzI1JSkuIEkgZG9uJ3Qgc2VlIGJlc3Qgc29sdXRpb24gcmlnaHQgbm93LlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIHV0aWxzLnN0cmVhbS5tZXJnZSh3b3Jrcyk7XG4gICAgfVxuICAgIEZhc3RHbG9iLnN0cmVhbSA9IHN0cmVhbTtcbiAgICBmdW5jdGlvbiBnZW5lcmF0ZVRhc2tzKHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgICBhc3NlcnRQYXR0ZXJuc0lucHV0KHNvdXJjZSk7XG4gICAgICAgIGNvbnN0IHBhdHRlcm5zID0gcGF0dGVybk1hbmFnZXIudHJhbnNmb3JtKFtdLmNvbmNhdChzb3VyY2UpKTtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSBuZXcgc2V0dGluZ3NfMS5kZWZhdWx0KG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gdGFza01hbmFnZXIuZ2VuZXJhdGUocGF0dGVybnMsIHNldHRpbmdzKTtcbiAgICB9XG4gICAgRmFzdEdsb2IuZ2VuZXJhdGVUYXNrcyA9IGdlbmVyYXRlVGFza3M7XG4gICAgZnVuY3Rpb24gaXNEeW5hbWljUGF0dGVybihzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICAgICAgYXNzZXJ0UGF0dGVybnNJbnB1dChzb3VyY2UpO1xuICAgICAgICBjb25zdCBzZXR0aW5ncyA9IG5ldyBzZXR0aW5nc18xLmRlZmF1bHQob3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB1dGlscy5wYXR0ZXJuLmlzRHluYW1pY1BhdHRlcm4oc291cmNlLCBzZXR0aW5ncyk7XG4gICAgfVxuICAgIEZhc3RHbG9iLmlzRHluYW1pY1BhdHRlcm4gPSBpc0R5bmFtaWNQYXR0ZXJuO1xuICAgIGZ1bmN0aW9uIGVzY2FwZVBhdGgoc291cmNlKSB7XG4gICAgICAgIGFzc2VydFBhdHRlcm5zSW5wdXQoc291cmNlKTtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnBhdGguZXNjYXBlKHNvdXJjZSk7XG4gICAgfVxuICAgIEZhc3RHbG9iLmVzY2FwZVBhdGggPSBlc2NhcGVQYXRoO1xufSkoRmFzdEdsb2IgfHwgKEZhc3RHbG9iID0ge30pKTtcbmZ1bmN0aW9uIGdldFdvcmtzKHNvdXJjZSwgX1Byb3ZpZGVyLCBvcHRpb25zKSB7XG4gICAgY29uc3QgcGF0dGVybnMgPSBwYXR0ZXJuTWFuYWdlci50cmFuc2Zvcm0oW10uY29uY2F0KHNvdXJjZSkpO1xuICAgIGNvbnN0IHNldHRpbmdzID0gbmV3IHNldHRpbmdzXzEuZGVmYXVsdChvcHRpb25zKTtcbiAgICBjb25zdCB0YXNrcyA9IHRhc2tNYW5hZ2VyLmdlbmVyYXRlKHBhdHRlcm5zLCBzZXR0aW5ncyk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgX1Byb3ZpZGVyKHNldHRpbmdzKTtcbiAgICByZXR1cm4gdGFza3MubWFwKHByb3ZpZGVyLnJlYWQsIHByb3ZpZGVyKTtcbn1cbmZ1bmN0aW9uIGFzc2VydFBhdHRlcm5zSW5wdXQoaW5wdXQpIHtcbiAgICBjb25zdCBzb3VyY2UgPSBbXS5jb25jYXQoaW5wdXQpO1xuICAgIGNvbnN0IGlzVmFsaWRTb3VyY2UgPSBzb3VyY2UuZXZlcnkoKGl0ZW0pID0+IHV0aWxzLnN0cmluZy5pc1N0cmluZyhpdGVtKSAmJiAhdXRpbHMuc3RyaW5nLmlzRW1wdHkoaXRlbSkpO1xuICAgIGlmICghaXNWYWxpZFNvdXJjZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXR0ZXJucyBtdXN0IGJlIGEgc3RyaW5nIChub24gZW1wdHkpIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MnKTtcbiAgICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IEZhc3RHbG9iO1xuIiwiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHsgaXNOb2RlQnVpbHRpbiwgaXNWYWxpZE5vZGVJbXBvcnQgfSBmcm9tICdtbGx5J1xuaW1wb3J0IHR5cGUgeyBEZXBzSGFuZGxpbmdPcHRpb25zIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IHNsYXNoIH0gZnJvbSAnLi91dGlscydcblxuY29uc3QgRVNNX0VYVF9SRSA9IC9cXC4oZXN8ZXNtfGVzbS1icm93c2VyfGVzbS1idW5kbGVyfGVzNnxtb2R1bGUpXFwuanMkL1xuY29uc3QgRVNNX0ZPTERFUl9SRSA9IC9cXC9lc21cXC8oLipcXC5qcykkL1xuXG5jb25zdCBkZWZhdWx0SW5saW5lID0gW1xuICAvdmlydHVhbDovLFxuICAvXFwudHMkLyxcbiAgRVNNX0VYVF9SRSxcbiAgRVNNX0ZPTERFUl9SRSxcbl1cblxuY29uc3QgZGVwc0V4dGVybmFsID0gW1xuICAvXFwuY2pzXFwuanMkLyxcbiAgL1xcLm1qcyQvLFxuXVxuXG5leHBvcnQgZnVuY3Rpb24gZ3Vlc3NDSlN2ZXJzaW9uKGlkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoaWQubWF0Y2goRVNNX0VYVF9SRSkpIHtcbiAgICBmb3IgKGNvbnN0IGkgb2YgW1xuICAgICAgaWQucmVwbGFjZShFU01fRVhUX1JFLCAnLm1qcycpLFxuICAgICAgaWQucmVwbGFjZShFU01fRVhUX1JFLCAnLnVtZC5qcycpLFxuICAgICAgaWQucmVwbGFjZShFU01fRVhUX1JFLCAnLmNqcy5qcycpLFxuICAgICAgaWQucmVwbGFjZShFU01fRVhUX1JFLCAnLmpzJyksXG4gICAgXSkge1xuICAgICAgaWYgKGV4aXN0c1N5bmMoaSkpXG4gICAgICAgIHJldHVybiBpXG4gICAgfVxuICB9XG4gIGlmIChpZC5tYXRjaChFU01fRk9MREVSX1JFKSkge1xuICAgIGZvciAoY29uc3QgaSBvZiBbXG4gICAgICBpZC5yZXBsYWNlKEVTTV9GT0xERVJfUkUsICcvdW1kLyQxJyksXG4gICAgICBpZC5yZXBsYWNlKEVTTV9GT0xERVJfUkUsICcvY2pzLyQxJyksXG4gICAgICBpZC5yZXBsYWNlKEVTTV9GT0xERVJfUkUsICcvJDEnKSxcbiAgICBdKSB7XG4gICAgICBpZiAoZXhpc3RzU3luYyhpKSlcbiAgICAgICAgcmV0dXJuIGlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNob3VsZEV4dGVybmFsaXplKFxuICBpZDogc3RyaW5nLFxuICBvcHRpb25zPzogRGVwc0hhbmRsaW5nT3B0aW9ucyxcbiAgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxzdHJpbmcgfCBmYWxzZT4+KCksXG4pIHtcbiAgaWYgKCFjYWNoZS5oYXMoaWQpKVxuICAgIGNhY2hlLnNldChpZCwgX3Nob3VsZEV4dGVybmFsaXplKGlkLCBvcHRpb25zKSlcbiAgcmV0dXJuIGNhY2hlLmdldChpZCkhXG59XG5cbmFzeW5jIGZ1bmN0aW9uIF9zaG91bGRFeHRlcm5hbGl6ZShcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IERlcHNIYW5kbGluZ09wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZyB8IGZhbHNlPiB7XG4gIGlmIChpc05vZGVCdWlsdGluKGlkKSlcbiAgICByZXR1cm4gaWRcblxuICBpZCA9IHBhdGNoV2luZG93c0ltcG9ydFBhdGgoaWQpXG5cbiAgaWYgKG1hdGNoRXh0ZXJuYWxpemVQYXR0ZXJuKGlkLCBvcHRpb25zPy5pbmxpbmUpKVxuICAgIHJldHVybiBmYWxzZVxuICBpZiAobWF0Y2hFeHRlcm5hbGl6ZVBhdHRlcm4oaWQsIG9wdGlvbnM/LmV4dGVybmFsKSlcbiAgICByZXR1cm4gaWRcblxuICBjb25zdCBpc05vZGVNb2R1bGUgPSBpZC5pbmNsdWRlcygnL25vZGVfbW9kdWxlcy8nKVxuXG4gIGlkID0gaXNOb2RlTW9kdWxlID8gZ3Vlc3NDSlN2ZXJzaW9uKGlkKSB8fCBpZCA6IGlkXG5cbiAgaWYgKG1hdGNoRXh0ZXJuYWxpemVQYXR0ZXJuKGlkLCBkZWZhdWx0SW5saW5lKSlcbiAgICByZXR1cm4gZmFsc2VcbiAgaWYgKG1hdGNoRXh0ZXJuYWxpemVQYXR0ZXJuKGlkLCBkZXBzRXh0ZXJuYWwpKVxuICAgIHJldHVybiBpZFxuXG4gIGlmIChpc05vZGVNb2R1bGUgJiYgYXdhaXQgaXNWYWxpZE5vZGVJbXBvcnQoaWQpKVxuICAgIHJldHVybiBpZFxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBtYXRjaEV4dGVybmFsaXplUGF0dGVybihpZDogc3RyaW5nLCBwYXR0ZXJucz86IChzdHJpbmcgfCBSZWdFeHApW10pIHtcbiAgaWYgKCFwYXR0ZXJucylcbiAgICByZXR1cm4gZmFsc2VcbiAgZm9yIChjb25zdCBleCBvZiBwYXR0ZXJucykge1xuICAgIGlmICh0eXBlb2YgZXggPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoaWQuaW5jbHVkZXMoYC9ub2RlX21vZHVsZXMvJHtleH0vYCkpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYgKGV4LnRlc3QoaWQpKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcGF0Y2hXaW5kb3dzSW1wb3J0UGF0aChwYXRoOiBzdHJpbmcpIHtcbiAgaWYgKHBhdGgubWF0Y2goL15cXHc6XFxcXC8pKVxuICAgIHJldHVybiBgZmlsZTovLy8ke3NsYXNoKHBhdGgpfWBcbiAgZWxzZSBpZiAocGF0aC5tYXRjaCgvXlxcdzpcXC8vKSlcbiAgICByZXR1cm4gYGZpbGU6Ly8vJHtwYXRofWBcbiAgZWxzZVxuICAgIHJldHVybiBwYXRoXG59XG4iLCJpbXBvcnQgdHlwZSB7IFRyYW5zZm9ybVJlc3VsdCwgVml0ZURldlNlcnZlciB9IGZyb20gJ3ZpdGUnXG5pbXBvcnQgdHlwZSB7IEZldGNoUmVzdWx0LCBSYXdTb3VyY2VNYXAsIFZpdGVOb2RlUmVzb2x2ZUlkLCBWaXRlTm9kZVNlcnZlck9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgc2hvdWxkRXh0ZXJuYWxpemUgfSBmcm9tICcuL2V4dGVybmFsaXplJ1xuaW1wb3J0IHsgdG9GaWxlUGF0aCwgd2l0aElubGluZVNvdXJjZW1hcCB9IGZyb20gJy4vdXRpbHMnXG5cbmV4cG9ydCAqIGZyb20gJy4vZXh0ZXJuYWxpemUnXG5cbmV4cG9ydCBjbGFzcyBWaXRlTm9kZVNlcnZlciB7XG4gIHByaXZhdGUgZmV0Y2hQcm9taXNlTWFwID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8RmV0Y2hSZXN1bHQ+PigpXG4gIHByaXZhdGUgdHJhbnNmb3JtUHJvbWlzZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPFRyYW5zZm9ybVJlc3VsdCB8IG51bGwgfCB1bmRlZmluZWQ+PigpXG5cbiAgZmV0Y2hDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCB7XG4gICAgdGltZXN0YW1wOiBudW1iZXJcbiAgICByZXN1bHQ6IEZldGNoUmVzdWx0XG4gIH0+KClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmVyOiBWaXRlRGV2U2VydmVyLFxuICAgIHB1YmxpYyBvcHRpb25zOiBWaXRlTm9kZVNlcnZlck9wdGlvbnMgPSB7fSxcbiAgKSB7fVxuXG4gIHNob3VsZEV4dGVybmFsaXplKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc2hvdWxkRXh0ZXJuYWxpemUoaWQsIHRoaXMub3B0aW9ucy5kZXBzKVxuICB9XG5cbiAgYXN5bmMgcmVzb2x2ZUlkKGlkOiBzdHJpbmcsIGltcG9ydGVyPzogc3RyaW5nKTogUHJvbWlzZTxWaXRlTm9kZVJlc29sdmVJZCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXIucGx1Z2luQ29udGFpbmVyLnJlc29sdmVJZChpZCwgaW1wb3J0ZXIsIHsgc3NyOiB0cnVlIH0pXG4gIH1cblxuICBhc3luYyBmZXRjaE1vZHVsZShpZDogc3RyaW5nKTogUHJvbWlzZTxGZXRjaFJlc3VsdD4ge1xuICAgIC8vIHJldXNlIHRyYW5zZm9ybSBmb3IgY29uY3VycmVudCByZXF1ZXN0c1xuICAgIGlmICghdGhpcy5mZXRjaFByb21pc2VNYXAuaGFzKGlkKSkge1xuICAgICAgdGhpcy5mZXRjaFByb21pc2VNYXAuc2V0KGlkLFxuICAgICAgICB0aGlzLl9mZXRjaE1vZHVsZShpZClcbiAgICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zb3VyY2VtYXAgIT09IHRydWUgPyB7IC4uLnIsIG1hcDogdW5kZWZpbmVkIH0gOiByXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZldGNoUHJvbWlzZU1hcC5kZWxldGUoaWQpXG4gICAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZldGNoUHJvbWlzZU1hcC5nZXQoaWQpIVxuICB9XG5cbiAgYXN5bmMgdHJhbnNmb3JtUmVxdWVzdChpZDogc3RyaW5nKSB7XG4gICAgLy8gcmV1c2UgdHJhbnNmb3JtIGZvciBjb25jdXJyZW50IHJlcXVlc3RzXG4gICAgaWYgKCF0aGlzLnRyYW5zZm9ybVByb21pc2VNYXAuaGFzKGlkKSkge1xuICAgICAgdGhpcy50cmFuc2Zvcm1Qcm9taXNlTWFwLnNldChpZCxcbiAgICAgICAgdGhpcy5fdHJhbnNmb3JtUmVxdWVzdChpZClcbiAgICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zZm9ybVByb21pc2VNYXAuZGVsZXRlKGlkKVxuICAgICAgICAgIH0pLFxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Qcm9taXNlTWFwLmdldChpZCkhXG4gIH1cblxuICBnZXRUcmFuc2Zvcm1Nb2RlKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCB3aXRob3V0UXVlcnkgPSBpZC5zcGxpdCgnPycpWzBdXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnRyYW5zZm9ybU1vZGU/LndlYj8uc29tZShyID0+IHdpdGhvdXRRdWVyeS5tYXRjaChyKSkpXG4gICAgICByZXR1cm4gJ3dlYidcbiAgICBpZiAodGhpcy5vcHRpb25zLnRyYW5zZm9ybU1vZGU/LnNzcj8uc29tZShyID0+IHdpdGhvdXRRdWVyeS5tYXRjaChyKSkpXG4gICAgICByZXR1cm4gJ3NzcidcblxuICAgIGlmICh3aXRob3V0UXVlcnkubWF0Y2goL1xcLihbY21dP1tqdF1zeD98anNvbikkLykpXG4gICAgICByZXR1cm4gJ3NzcidcbiAgICByZXR1cm4gJ3dlYidcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2ZldGNoTW9kdWxlKGlkOiBzdHJpbmcpOiBQcm9taXNlPEZldGNoUmVzdWx0PiB7XG4gICAgbGV0IHJlc3VsdDogRmV0Y2hSZXN1bHRcblxuICAgIGNvbnN0IGZpbGVQYXRoID0gdG9GaWxlUGF0aChpZCwgdGhpcy5zZXJ2ZXIuY29uZmlnLnJvb3QpXG5cbiAgICBjb25zdCBtb2R1bGUgPSB0aGlzLnNlcnZlci5tb2R1bGVHcmFwaC5nZXRNb2R1bGVCeUlkKGlkKVxuICAgIGNvbnN0IHRpbWVzdGFtcCA9IG1vZHVsZT8ubGFzdEhNUlRpbWVzdGFtcCB8fCBEYXRlLm5vdygpXG4gICAgY29uc3QgY2FjaGUgPSB0aGlzLmZldGNoQ2FjaGUuZ2V0KGZpbGVQYXRoKVxuICAgIGlmICh0aW1lc3RhbXAgJiYgY2FjaGUgJiYgY2FjaGUudGltZXN0YW1wID49IHRpbWVzdGFtcClcbiAgICAgIHJldHVybiBjYWNoZS5yZXN1bHRcblxuICAgIGNvbnN0IGV4dGVybmFsaXplID0gYXdhaXQgdGhpcy5zaG91bGRFeHRlcm5hbGl6ZShmaWxlUGF0aClcbiAgICBpZiAoZXh0ZXJuYWxpemUpIHtcbiAgICAgIHJlc3VsdCA9IHsgZXh0ZXJuYWxpemUgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNvbnN0IHIgPSBhd2FpdCB0aGlzLl90cmFuc2Zvcm1SZXF1ZXN0KGlkKVxuICAgICAgcmVzdWx0ID0geyBjb2RlOiByPy5jb2RlLCBtYXA6IHI/Lm1hcCBhcyB1bmtub3duIGFzIFJhd1NvdXJjZU1hcCB9XG4gICAgfVxuXG4gICAgdGhpcy5mZXRjaENhY2hlLnNldChmaWxlUGF0aCwge1xuICAgICAgdGltZXN0YW1wLFxuICAgICAgcmVzdWx0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF90cmFuc2Zvcm1SZXF1ZXN0KGlkOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVzdWx0OiBUcmFuc2Zvcm1SZXN1bHQgfCBudWxsID0gbnVsbFxuXG4gICAgaWYgKHRoaXMuZ2V0VHJhbnNmb3JtTW9kZShpZCkgPT09ICd3ZWInKSB7XG4gICAgICAvLyBmb3IgY29tcG9uZW50cyBsaWtlIFZ1ZSwgd2Ugd2FudCB0byB1c2UgdGhlIGNsaWVudCBzaWRlXG4gICAgICAvLyBwbHVnaW5zIGJ1dCB0aGVuIGNvdmVydCB0aGUgY29kZSB0byBiZSBjb25zdW1lZCBieSB0aGUgc2VydmVyXG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnNlcnZlci50cmFuc2Zvcm1SZXF1ZXN0KGlkKVxuICAgICAgaWYgKHJlc3VsdClcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZXJ2ZXIuc3NyVHJhbnNmb3JtKHJlc3VsdC5jb2RlLCByZXN1bHQubWFwLCBpZClcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLnNlcnZlci50cmFuc2Zvcm1SZXF1ZXN0KGlkLCB7IHNzcjogdHJ1ZSB9KVxuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZW1hcCA9IHRoaXMub3B0aW9ucy5zb3VyY2VtYXAgPz8gJ2lubGluZSdcbiAgICBpZiAoc291cmNlbWFwID09PSAnaW5saW5lJyAmJiByZXN1bHQgJiYgIWlkLmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSlcbiAgICAgIHdpdGhJbmxpbmVTb3VyY2VtYXAocmVzdWx0KVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFJlc29sdmVkQ29uZmlnLCBTbmFwc2hvdFJlc3VsdCwgU25hcHNob3RTdGF0ZU9wdGlvbnMsIFNuYXBzaG90U3VtbWFyeSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5leHBvcnQgY2xhc3MgU25hcHNob3RNYW5hZ2VyIHtcbiAgc3VtbWFyeTogU25hcHNob3RTdW1tYXJ5ID0gdW5kZWZpbmVkIVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWc6IFJlc29sdmVkQ29uZmlnKSB7XG4gICAgdGhpcy5jbGVhcigpXG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnN1bW1hcnkgPSBlbXB0eVN1bW1hcnkodGhpcy5jb25maWcuc25hcHNob3RPcHRpb25zKVxuICB9XG5cbiAgYWRkKHJlc3VsdDogU25hcHNob3RSZXN1bHQpIHtcbiAgICBhZGRTbmFwc2hvdFJlc3VsdCh0aGlzLnN1bW1hcnksIHJlc3VsdClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW1wdHlTdW1tYXJ5KG9wdGlvbnM6IFNuYXBzaG90U3RhdGVPcHRpb25zKTogU25hcHNob3RTdW1tYXJ5IHtcbiAgY29uc3Qgc3VtbWFyeSA9IHtcbiAgICBhZGRlZDogMCxcbiAgICBmYWlsdXJlOiBmYWxzZSxcbiAgICBmaWxlc0FkZGVkOiAwLFxuICAgIGZpbGVzUmVtb3ZlZDogMCxcbiAgICBmaWxlc1JlbW92ZWRMaXN0OiBbXSxcbiAgICBmaWxlc1VubWF0Y2hlZDogMCxcbiAgICBmaWxlc1VwZGF0ZWQ6IDAsXG4gICAgbWF0Y2hlZDogMCxcbiAgICB0b3RhbDogMCxcbiAgICB1bmNoZWNrZWQ6IDAsXG4gICAgdW5jaGVja2VkS2V5c0J5RmlsZTogW10sXG4gICAgdW5tYXRjaGVkOiAwLFxuICAgIHVwZGF0ZWQ6IDAsXG4gICAgZGlkVXBkYXRlOiBvcHRpb25zLnVwZGF0ZVNuYXBzaG90ID09PSAnYWxsJyxcbiAgfVxuICByZXR1cm4gc3VtbWFyeVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkU25hcHNob3RSZXN1bHQoc3VtbWFyeTogU25hcHNob3RTdW1tYXJ5LCByZXN1bHQ6IFNuYXBzaG90UmVzdWx0KTogdm9pZCB7XG4gIGlmIChyZXN1bHQuYWRkZWQpXG4gICAgc3VtbWFyeS5maWxlc0FkZGVkKytcbiAgaWYgKHJlc3VsdC5maWxlRGVsZXRlZClcbiAgICBzdW1tYXJ5LmZpbGVzUmVtb3ZlZCsrXG4gIGlmIChyZXN1bHQudW5tYXRjaGVkKVxuICAgIHN1bW1hcnkuZmlsZXNVbm1hdGNoZWQrK1xuICBpZiAocmVzdWx0LnVwZGF0ZWQpXG4gICAgc3VtbWFyeS5maWxlc1VwZGF0ZWQrK1xuXG4gIHN1bW1hcnkuYWRkZWQgKz0gcmVzdWx0LmFkZGVkXG4gIHN1bW1hcnkubWF0Y2hlZCArPSByZXN1bHQubWF0Y2hlZFxuICBzdW1tYXJ5LnVuY2hlY2tlZCArPSByZXN1bHQudW5jaGVja2VkXG4gIGlmIChyZXN1bHQudW5jaGVja2VkS2V5cyAmJiByZXN1bHQudW5jaGVja2VkS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgc3VtbWFyeS51bmNoZWNrZWRLZXlzQnlGaWxlLnB1c2goe1xuICAgICAgZmlsZVBhdGg6IHJlc3VsdC5maWxlcGF0aCxcbiAgICAgIGtleXM6IHJlc3VsdC51bmNoZWNrZWRLZXlzLFxuICAgIH0pXG4gIH1cblxuICBzdW1tYXJ5LnVubWF0Y2hlZCArPSByZXN1bHQudW5tYXRjaGVkXG4gIHN1bW1hcnkudXBkYXRlZCArPSByZXN1bHQudXBkYXRlZFxuICBzdW1tYXJ5LnRvdGFsICs9IHJlc3VsdC5hZGRlZCArIHJlc3VsdC5tYXRjaGVkICsgcmVzdWx0LnVubWF0Y2hlZCArIHJlc3VsdC51cGRhdGVkXG59XG4iLCJpbXBvcnQgeyBleGlzdHNTeW5jLCBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gJ21vZHVsZSdcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICd1cmwnXG5pbXBvcnQgdHlwZSB7IFByb2ZpbGVyIH0gZnJvbSAnaW5zcGVjdG9yJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBSYXdTb3VyY2VNYXAgfSBmcm9tICd2aXRlLW5vZGUnXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4uL25vZGUnXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEM4T3B0aW9ucywgUmVzb2x2ZWRDOE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGNvdmVyYWdlQ29uZmlnRGVmYXVsdHMgfSBmcm9tICcuLi9jb25zdGFudHMnXG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQzhPcHRpb25zKG9wdGlvbnM6IEM4T3B0aW9ucywgcm9vdDogc3RyaW5nKTogUmVzb2x2ZWRDOE9wdGlvbnMge1xuICBjb25zdCByZXNvbHZlZDogUmVzb2x2ZWRDOE9wdGlvbnMgPSB7XG4gICAgLi4uY292ZXJhZ2VDb25maWdEZWZhdWx0cyxcbiAgICAuLi5vcHRpb25zIGFzIGFueSxcbiAgfVxuXG4gIHJlc29sdmVkLnJlcG9ydGVyID0gdG9BcnJheShyZXNvbHZlZC5yZXBvcnRlcilcbiAgcmVzb2x2ZWQucmVwb3J0c0RpcmVjdG9yeSA9IHJlc29sdmUocm9vdCwgcmVzb2x2ZWQucmVwb3J0c0RpcmVjdG9yeSlcbiAgcmVzb2x2ZWQudGVtcERpcmVjdG9yeSA9IHByb2Nlc3MuZW52Lk5PREVfVjhfQ09WRVJBR0UgfHwgcmVzb2x2ZShyZXNvbHZlZC5yZXBvcnRzRGlyZWN0b3J5LCAndG1wJylcblxuICByZXR1cm4gcmVzb2x2ZWQgYXMgUmVzb2x2ZWRDOE9wdGlvbnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsZWFuQ292ZXJhZ2Uob3B0aW9uczogUmVzb2x2ZWRDOE9wdGlvbnMsIGNsZWFuID0gdHJ1ZSkge1xuICBpZiAoY2xlYW4gJiYgZXhpc3RzU3luYyhvcHRpb25zLnJlcG9ydHNEaXJlY3RvcnkpKVxuICAgIGF3YWl0IGZzLnJtKG9wdGlvbnMucmVwb3J0c0RpcmVjdG9yeSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG5cbiAgaWYgKCFleGlzdHNTeW5jKG9wdGlvbnMudGVtcERpcmVjdG9yeSkpXG4gICAgYXdhaXQgZnMubWtkaXIob3B0aW9ucy50ZW1wRGlyZWN0b3J5LCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxufVxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBvcnRDb3ZlcmFnZShjdHg6IFZpdGVzdCkge1xuICAvLyBGbHVzaCBjb3ZlcmFnZSB0byBkaXNrXG4gIGNvbnN0IHY4ID0gcmVxdWlyZSgndjgnKVxuICBpZiAodjgudGFrZUNvdmVyYWdlID09IG51bGwpXG4gICAgY29uc29sZS53YXJuKCdbVml0ZXN0XSB0YWtlQ292ZXJhZ2UgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIE5vZGVKcyB2ZXJzaW9uLlxcbkNvdmVyYWdlIGNvdWxkIGJlIGluY29tcGxldGUuIFVwZGF0ZSB0byBOb2RlSnMgMTQuMTguJylcbiAgZWxzZVxuICAgIHY4LnRha2VDb3ZlcmFnZSgpXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgY29uc3QgY3JlYXRlUmVwb3J0ID0gcmVxdWlyZSgnYzgvbGliL3JlcG9ydCcpXG4gIGNvbnN0IHJlcG9ydCA9IGNyZWF0ZVJlcG9ydChjdHguY29uZmlnLmNvdmVyYWdlKVxuXG4gIC8vIGFkZCBzb3VyY2UgbWFwc1xuICBjb25zdCBzb3VyY2VNYXBNYXRhOiBSZWNvcmQ8c3RyaW5nLCB7IG1hcDogUmF3U291cmNlTWFwOyBzb3VyY2U6IHN0cmluZyB8IHVuZGVmaW5lZCB9PiA9IHt9XG4gIGF3YWl0IFByb21pc2UuYWxsKEFycmF5XG4gICAgLmZyb20oY3R4LnZpdGVub2RlLmZldGNoQ2FjaGUuZW50cmllcygpKVxuICAgIC5maWx0ZXIoaSA9PiAhaVswXS5pbmNsdWRlcygnL25vZGVfbW9kdWxlcy8nKSlcbiAgICAubWFwKGFzeW5jKFtmaWxlLCB7IHJlc3VsdCB9XSkgPT4ge1xuICAgICAgY29uc3QgbWFwID0gcmVzdWx0Lm1hcFxuICAgICAgaWYgKCFtYXApXG4gICAgICAgIHJldHVyblxuXG4gICAgICBjb25zdCB1cmwgPSBwYXRoVG9GaWxlVVJMKGZpbGUpLmhyZWZcblxuICAgICAgbGV0IGNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29kZSA9IChhd2FpdCBmcy5yZWFkRmlsZShmaWxlKSkudG9TdHJpbmcoKVxuICAgICAgfVxuICAgICAgY2F0Y2gge31cblxuICAgICAgLy8gVml0ZSBkb2VzIG5vdCByZXBvcnQgZnVsbCBwYXRoIGluIHNvdXJjZW1hcCBzb3VyY2VzXG4gICAgICAvLyBzbyB1c2UgYW4gYWN0dWFsIGZpbGUgcGF0aFxuICAgICAgY29uc3Qgc291cmNlcyA9IFt1cmxdXG5cbiAgICAgIHNvdXJjZU1hcE1hdGFbdXJsXSA9IHtcbiAgICAgICAgc291cmNlOiByZXN1bHQuY29kZSxcbiAgICAgICAgbWFwOiB7XG4gICAgICAgICAgc291cmNlc0NvbnRlbnQ6IGNvZGUgPyBbY29kZV0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgLi4ubWFwLFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfSkpXG5cbiAgLy8gVGhpcyBpcyBhIG1hZ2ljIG51bWJlci4gSXQgY29ycmVzcG9uZHMgdG8gdGhlIGFtb3VudCBvZiBjb2RlXG4gIC8vIHRoYXQgd2UgYWRkIGluIHBhY2thZ2VzL3ZpdGUtbm9kZS9zcmMvY2xpZW50LnRzOjExNCAodm0ucnVuSW5UaGlzQ29udGV4dClcbiAgLy8gVE9ETzogSW5jbHVkZSBvdXIgdHJhbnNmb3JtYXRpb25zIGluIHNvdWNlbWFwc1xuICBjb25zdCBvZmZzZXQgPSAxOTBcblxuICByZXBvcnQuX2dldFNvdXJjZU1hcCA9IChjb3ZlcmFnZTogUHJvZmlsZXIuU2NyaXB0Q292ZXJhZ2UpID0+IHtcbiAgICBjb25zdCBwYXRoID0gcGF0aFRvRmlsZVVSTChjb3ZlcmFnZS51cmwpLmhyZWZcbiAgICBjb25zdCBkYXRhID0gc291cmNlTWFwTWF0YVtwYXRoXVxuXG4gICAgaWYgKCFkYXRhKVxuICAgICAgcmV0dXJuIHt9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlTWFwOiB7XG4gICAgICAgIHNvdXJjZW1hcDogZGF0YS5tYXAsXG4gICAgICB9LFxuICAgICAgc291cmNlOiBBcnJheShvZmZzZXQpLmZpbGwoJy4nKS5qb2luKCcnKSArIGRhdGEuc291cmNlLFxuICAgIH1cbiAgfVxuXG4gIGF3YWl0IHJlcG9ydC5ydW4oKVxufVxuIiwiaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGlzQWJzb2x1dGUsIHJlbGF0aXZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgYyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IHN0cmlwQW5zaSBmcm9tICdzdHJpcC1hbnNpJ1xuaW1wb3J0IHR5cGUgeyBTbmFwc2hvdFN1bW1hcnksIFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcydcbmltcG9ydCB7IHNsYXNoIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBGX0NIRUNLLCBGX0NST1NTLCBGX0RPVCwgRl9ET1dOLCBGX0RPV05fUklHSFQsIEZfTE9OR19EQVNILCBGX1BPSU5URVIgfSBmcm9tICcuL2ZpZ3VyZXMnXG5cbmV4cG9ydCBjb25zdCBzcGlubmVyTWFwID0gbmV3IFdlYWtNYXA8VGFzaywgKCkgPT4gc3RyaW5nPigpXG5leHBvcnQgY29uc3QgcG9pbnRlciA9IGMueWVsbG93KEZfUE9JTlRFUilcbmV4cG9ydCBjb25zdCBza2lwcGVkID0gYy5kaW0oYy5ncmF5KEZfRE9XTikpXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xzKGRlbHRhID0gMCkge1xuICBsZXQgbGVuZ3RoID0gcHJvY2Vzcy5zdGRvdXQuY29sdW1uc1xuICBpZiAoIWxlbmd0aCB8fCBpc05hTihsZW5ndGgpKVxuICAgIGxlbmd0aCA9IDMwXG4gIHJldHVybiBNYXRoLm1heChsZW5ndGggKyBkZWx0YSwgMClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpdmlkZXIodGV4dD86IHN0cmluZywgbGVmdD86IG51bWJlciwgcmlnaHQ/OiBudW1iZXIpIHtcbiAgY29uc3QgY29scyA9IGdldENvbHMoKVxuXG4gIGlmICh0ZXh0KSB7XG4gICAgY29uc3QgdGV4dExlbmd0aCA9IHN0cmlwQW5zaSh0ZXh0KS5sZW5ndGhcbiAgICBpZiAobGVmdCA9PSBudWxsICYmIHJpZ2h0ICE9IG51bGwpIHtcbiAgICAgIGxlZnQgPSBjb2xzIC0gdGV4dExlbmd0aCAtIHJpZ2h0XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbGVmdCA9IGxlZnQgPz8gTWF0aC5mbG9vcigoY29scyAtIHRleHRMZW5ndGgpIC8gMilcbiAgICAgIHJpZ2h0ID0gY29scyAtIHRleHRMZW5ndGggLSBsZWZ0XG4gICAgfVxuICAgIGxlZnQgPSBNYXRoLm1heCgwLCBsZWZ0KVxuICAgIHJpZ2h0ID0gTWF0aC5tYXgoMCwgcmlnaHQpXG4gICAgcmV0dXJuIGAke0ZfTE9OR19EQVNILnJlcGVhdChsZWZ0KX0ke3RleHR9JHtGX0xPTkdfREFTSC5yZXBlYXQocmlnaHQpfWBcbiAgfVxuICByZXR1cm4gRl9MT05HX0RBU0gucmVwZWF0KGNvbHMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUZXN0UGF0aChyb290OiBzdHJpbmcsIHBhdGg6IHN0cmluZykge1xuICBpZiAoaXNBYnNvbHV0ZShwYXRoKSlcbiAgICBwYXRoID0gcmVsYXRpdmUocm9vdCwgcGF0aClcblxuICBjb25zdCBkaXIgPSBkaXJuYW1lKHBhdGgpXG4gIGNvbnN0IGV4dCA9IHBhdGgubWF0Y2goLyhcXC4oc3BlY3x0ZXN0KVxcLltjbV0/W3RqXXN4PykkLyk/LlswXSB8fCAnJ1xuICBjb25zdCBiYXNlID0gYmFzZW5hbWUocGF0aCwgZXh0KVxuXG4gIHJldHVybiBzbGFzaChjLmRpbShgJHtkaXJ9L2ApICsgYy5ib2xkKGJhc2UpKSArIGMuZGltKGV4dClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclNuYXBzaG90U3VtbWFyeShyb290RGlyOiBzdHJpbmcsIHNuYXBzaG90czogU25hcHNob3RTdW1tYXJ5KSB7XG4gIGNvbnN0IHN1bW1hcnk6IHN0cmluZ1tdID0gW11cblxuICBpZiAoc25hcHNob3RzLmFkZGVkKVxuICAgIHN1bW1hcnkucHVzaChjLmJvbGQoYy5ncmVlbihgJHtzbmFwc2hvdHMuYWRkZWR9IHdyaXR0ZW5gKSkpXG4gIGlmIChzbmFwc2hvdHMudW5tYXRjaGVkKVxuICAgIHN1bW1hcnkucHVzaChjLmJvbGQoYy5yZWQoYCR7c25hcHNob3RzLnVubWF0Y2hlZH0gZmFpbGVkYCkpKVxuICBpZiAoc25hcHNob3RzLnVwZGF0ZWQpXG4gICAgc3VtbWFyeS5wdXNoKGMuYm9sZChjLmdyZWVuKGAke3NuYXBzaG90cy51cGRhdGVkfSB1cGRhdGVkIGApKSlcblxuICBpZiAoc25hcHNob3RzLmZpbGVzUmVtb3ZlZCkge1xuICAgIGlmIChzbmFwc2hvdHMuZGlkVXBkYXRlKVxuICAgICAgc3VtbWFyeS5wdXNoKGMuYm9sZChjLmdyZWVuKGAke3NuYXBzaG90cy5maWxlc1JlbW92ZWR9IGZpbGVzIHJlbW92ZWQgYCkpKVxuXG4gICAgZWxzZVxuICAgICAgc3VtbWFyeS5wdXNoKGMuYm9sZChjLnllbGxvdyhgJHtzbmFwc2hvdHMuZmlsZXNSZW1vdmVkfSBmaWxlcyBvYnNvbGV0ZSBgKSkpXG4gIH1cblxuICBpZiAoc25hcHNob3RzLmZpbGVzUmVtb3ZlZExpc3QgJiYgc25hcHNob3RzLmZpbGVzUmVtb3ZlZExpc3QubGVuZ3RoKSB7XG4gICAgY29uc3QgW2hlYWQsIC4uLnRhaWxdID0gc25hcHNob3RzLmZpbGVzUmVtb3ZlZExpc3RcbiAgICBzdW1tYXJ5LnB1c2goYCR7Yy5ncmF5KEZfRE9XTl9SSUdIVCl9ICR7Zm9ybWF0VGVzdFBhdGgocm9vdERpciwgaGVhZCl9YClcblxuICAgIHRhaWwuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBzdW1tYXJ5LnB1c2goYCAgJHtjLmdyYXkoRl9ET1QpfSAke2Zvcm1hdFRlc3RQYXRoKHJvb3REaXIsIGtleSl9YClcbiAgICB9KVxuICB9XG5cbiAgaWYgKHNuYXBzaG90cy51bmNoZWNrZWQpIHtcbiAgICBpZiAoc25hcHNob3RzLmRpZFVwZGF0ZSlcbiAgICAgIHN1bW1hcnkucHVzaChjLmJvbGQoYy5ncmVlbihgJHtzbmFwc2hvdHMudW5jaGVja2VkfSByZW1vdmVkYCkpKVxuXG4gICAgZWxzZVxuICAgICAgc3VtbWFyeS5wdXNoKGMuYm9sZChjLnllbGxvdyhgJHtzbmFwc2hvdHMudW5jaGVja2VkfSBvYnNvbGV0ZWApKSlcblxuICAgIHNuYXBzaG90cy51bmNoZWNrZWRLZXlzQnlGaWxlLmZvckVhY2goKHVuY2hlY2tlZEZpbGUpID0+IHtcbiAgICAgIHN1bW1hcnkucHVzaChgJHtjLmdyYXkoRl9ET1dOX1JJR0hUKX0gJHtmb3JtYXRUZXN0UGF0aChyb290RGlyLCB1bmNoZWNrZWRGaWxlLmZpbGVQYXRoKX1gKVxuICAgICAgdW5jaGVja2VkRmlsZS5rZXlzLmZvckVhY2goa2V5ID0+IHN1bW1hcnkucHVzaChgICAke2MuZ3JheShGX0RPVCl9ICR7a2V5fWApKVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gc3VtbWFyeVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGVTdHJpbmcodGFza3M6IFRhc2tbXSwgbmFtZSA9ICd0ZXN0cycpIHtcbiAgaWYgKHRhc2tzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gYy5kaW0oYG5vICR7bmFtZX1gKVxuXG4gIGNvbnN0IHBhc3NlZCA9IHRhc2tzLmZpbHRlcihpID0+IGkucmVzdWx0Py5zdGF0ZSA9PT0gJ3Bhc3MnKVxuICBjb25zdCBmYWlsZWQgPSB0YXNrcy5maWx0ZXIoaSA9PiBpLnJlc3VsdD8uc3RhdGUgPT09ICdmYWlsJylcbiAgY29uc3Qgc2tpcHBlZCA9IHRhc2tzLmZpbHRlcihpID0+IGkubW9kZSA9PT0gJ3NraXAnKVxuICBjb25zdCB0b2RvID0gdGFza3MuZmlsdGVyKGkgPT4gaS5tb2RlID09PSAndG9kbycpXG5cbiAgcmV0dXJuIFtcbiAgICBmYWlsZWQubGVuZ3RoID8gYy5ib2xkKGMucmVkKGAke2ZhaWxlZC5sZW5ndGh9IGZhaWxlZGApKSA6IG51bGwsXG4gICAgcGFzc2VkLmxlbmd0aCA/IGMuYm9sZChjLmdyZWVuKGAke3Bhc3NlZC5sZW5ndGh9IHBhc3NlZGApKSA6IG51bGwsXG4gICAgc2tpcHBlZC5sZW5ndGggPyBjLnllbGxvdyhgJHtza2lwcGVkLmxlbmd0aH0gc2tpcHBlZGApIDogbnVsbCxcbiAgICB0b2RvLmxlbmd0aCA/IGMuZ3JheShgJHt0b2RvLmxlbmd0aH0gdG9kb2ApIDogbnVsbCxcbiAgXS5maWx0ZXIoQm9vbGVhbikuam9pbihjLmRpbSgnIHwgJykpICsgYy5ncmF5KGAgKCR7dGFza3MubGVuZ3RofSlgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGVTeW1ib2wodGFzazogVGFzaykge1xuICBpZiAodGFzay5tb2RlID09PSAnc2tpcCcgfHwgdGFzay5tb2RlID09PSAndG9kbycpXG4gICAgcmV0dXJuIHNraXBwZWRcblxuICBpZiAoIXRhc2sucmVzdWx0KVxuICAgIHJldHVybiBjLmdyYXkoJ8K3JylcblxuICAvLyBwZW5kaW5nXG4gIGlmICh0YXNrLnJlc3VsdC5zdGF0ZSA9PT0gJ3J1bicpIHtcbiAgICBpZiAodGFzay50eXBlID09PSAnc3VpdGUnKVxuICAgICAgcmV0dXJuIHBvaW50ZXJcbiAgICBsZXQgc3Bpbm5lciA9IHNwaW5uZXJNYXAuZ2V0KHRhc2spXG4gICAgaWYgKCFzcGlubmVyKSB7XG4gICAgICBzcGlubmVyID0gZWxlZ2FudFNwaW5uZXIoKVxuICAgICAgc3Bpbm5lck1hcC5zZXQodGFzaywgc3Bpbm5lcilcbiAgICB9XG4gICAgcmV0dXJuIGMueWVsbG93KHNwaW5uZXIoKSlcbiAgfVxuXG4gIGlmICh0YXNrLnJlc3VsdC5zdGF0ZSA9PT0gJ3Bhc3MnKVxuICAgIHJldHVybiBjLmdyZWVuKEZfQ0hFQ0spXG5cbiAgaWYgKHRhc2sucmVzdWx0LnN0YXRlID09PSAnZmFpbCcpIHtcbiAgICByZXR1cm4gdGFzay50eXBlID09PSAnc3VpdGUnXG4gICAgICA/IHBvaW50ZXJcbiAgICAgIDogYy5yZWQoRl9DUk9TUylcbiAgfVxuXG4gIHJldHVybiAnICdcbn1cblxuZXhwb3J0IGNvbnN0IHNwaW5uZXJGcmFtZXMgPSBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInXG4gID8gWyctJywgJ1xcXFwnLCAnfCcsICcvJ11cbiAgOiBbJ+KgiycsICfioJknLCAn4qC5JywgJ+KguCcsICfioLwnLCAn4qC0JywgJ+KgpicsICfioKcnLCAn4qCHJywgJ+KgjyddXG5cbmV4cG9ydCBmdW5jdGlvbiBlbGVnYW50U3Bpbm5lcigpIHtcbiAgbGV0IGluZGV4ID0gMFxuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgaW5kZXggPSArK2luZGV4ICUgc3Bpbm5lckZyYW1lcy5sZW5ndGhcbiAgICByZXR1cm4gc3Bpbm5lckZyYW1lc1tpbmRleF1cbiAgfVxufVxuIiwiaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tICdwZXJmX2hvb2tzJ1xuaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tICdwYXRoZSdcbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgdHlwZSB7IEVycm9yV2l0aERpZmYsIEZpbGUsIFJlcG9ydGVyLCBUYXNrLCBUYXNrUmVzdWx0UGFjaywgVXNlckNvbnNvbGVMb2cgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IGdldEZ1bGxOYW1lLCBnZXRTdWl0ZXMsIGdldFRlc3RzLCBoYXNGYWlsZWQsIGhhc0ZhaWxlZFNuYXBzaG90IH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4uLy4uL25vZGUnXG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnLi9yZW5kZXJlcnMvZGlmZidcbmltcG9ydCB7IEZfUklHSFQgfSBmcm9tICcuL3JlbmRlcmVycy9maWd1cmVzJ1xuaW1wb3J0IHsgZGl2aWRlciwgZ2V0U3RhdGVTdHJpbmcsIGdldFN0YXRlU3ltYm9sLCByZW5kZXJTbmFwc2hvdFN1bW1hcnkgfSBmcm9tICcuL3JlbmRlcmVycy91dGlscydcblxuY29uc3QgQkFER0VfUEFERElORyA9ICcgICAgICAgJ1xuY29uc3QgSEVMUF9ISU5UID0gYCR7Yy5kaW0oJ3ByZXNzICcpfSR7Yy5ib2xkKCdoJyl9JHtjLmRpbSgnIHRvIHNob3cgaGVscCcpfWBcbmNvbnN0IEhFTFBfVVBEQVRFX1NOQVAgPSBjLmRpbSgncHJlc3MgJykgKyBjLmJvbGQoYy55ZWxsb3coJ3UnKSkgKyBjLmRpbSgnIHRvIHVwZGF0ZSBzbmFwc2hvdCcpXG5jb25zdCBIRUxQX1FVSVRFID0gYCR7Yy5kaW0oJ3ByZXNzICcpfSR7Yy5ib2xkKCdxJyl9JHtjLmRpbSgnIHRvIHF1aXQnKX1gXG5cbmNvbnN0IFdBSVRfRk9SX0NIQU5HRV9QQVNTID0gYFxcbiR7Yy5ib2xkKGMuaW52ZXJzZShjLmdyZWVuKCcgUEFTUyAnKSkpfSR7Yy5ncmVlbignIFdhaXRpbmcgZm9yIGZpbGUgY2hhbmdlcy4uLicpfWBcbmNvbnN0IFdBSVRfRk9SX0NIQU5HRV9GQUlMID0gYFxcbiR7Yy5ib2xkKGMuaW52ZXJzZShjLnJlZCgnIEZBSUwgJykpKX0ke2MucmVkKCcgVGVzdHMgZmFpbGVkLiBXYXRjaGluZyBmb3IgZmlsZSBjaGFuZ2VzLi4uJyl9YFxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVJlcG9ydGVyIGltcGxlbWVudHMgUmVwb3J0ZXIge1xuICBzdGFydCA9IDBcbiAgZW5kID0gMFxuICB3YXRjaEZpbHRlcnM/OiBzdHJpbmdbXVxuICBpc1RUWSA9IHByb2Nlc3Muc3Rkb3V0LmlzVFRZICYmICFwcm9jZXNzLmVudi5DSVxuICBjdHg6IFZpdGVzdCA9IHVuZGVmaW5lZCFcblxuICBvbkluaXQoY3R4OiBWaXRlc3QpIHtcbiAgICB0aGlzLmN0eCA9IGN0eFxuICAgIGNvbnN0IG1vZGUgPSB0aGlzLmN0eC5jb25maWcud2F0Y2hcbiAgICAgID8gYy5ibHVlKCcgV0FUQ0ggJylcbiAgICAgIDogYy5jeWFuKCcgUlVOICcpXG4gICAgdGhpcy5jdHgubG9nKGBcXG4ke2MuaW52ZXJzZShjLmJvbGQobW9kZSkpfSAke2MuZ3JheSh0aGlzLmN0eC5jb25maWcucm9vdCl9XFxuYClcbiAgICB0aGlzLnN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgfVxuXG4gIHJlbGF0aXZlKHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiByZWxhdGl2ZSh0aGlzLmN0eC5jb25maWcucm9vdCwgcGF0aClcbiAgfVxuXG4gIGFzeW5jIG9uRmluaXNoZWQoZmlsZXMgPSB0aGlzLmN0eC5zdGF0ZS5nZXRGaWxlcygpKSB7XG4gICAgdGhpcy5lbmQgPSBwZXJmb3JtYW5jZS5ub3coKVxuICAgIGF3YWl0IHRoaXMucmVwb3J0U3VtbWFyeShmaWxlcylcbiAgfVxuXG4gIG9uVGFza1VwZGF0ZShwYWNrczogVGFza1Jlc3VsdFBhY2tbXSkge1xuICAgIGlmICh0aGlzLmlzVFRZKVxuICAgICAgcmV0dXJuXG4gICAgZm9yIChjb25zdCBwYWNrIG9mIHBhY2tzKSB7XG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5jdHguc3RhdGUuaWRNYXAuZ2V0KHBhY2tbMF0pXG4gICAgICBpZiAodGFzayAmJiB0YXNrLnR5cGUgPT09ICd0ZXN0JyAmJiB0YXNrLnJlc3VsdD8uc3RhdGUgJiYgdGFzay5yZXN1bHQ/LnN0YXRlICE9PSAncnVuJykge1xuICAgICAgICB0aGlzLmN0eC5sb2coYCAke2dldFN0YXRlU3ltYm9sKHRhc2spfSAke2dldEZ1bGxOYW1lKHRhc2spfWApXG4gICAgICAgIGlmICh0YXNrLnJlc3VsdC5zdGF0ZSA9PT0gJ2ZhaWwnKVxuICAgICAgICAgIHRoaXMuY3R4LmxvZyhjLnJlZChgICAgJHtGX1JJR0hUfSAkeyh0YXNrLnJlc3VsdC5lcnJvciBhcyBhbnkpPy5tZXNzYWdlfWApKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uV2F0Y2hlclN0YXJ0KCkge1xuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKVxuICAgIGNvbnN0IGZhaWxlZCA9IGhhc0ZhaWxlZChmaWxlcylcbiAgICBjb25zdCBmYWlsZWRTbmFwID0gaGFzRmFpbGVkU25hcHNob3QoZmlsZXMpXG4gICAgaWYgKGZhaWxlZClcbiAgICAgIHRoaXMuY3R4LmxvZyhXQUlUX0ZPUl9DSEFOR0VfRkFJTClcbiAgICBlbHNlXG4gICAgICB0aGlzLmN0eC5sb2coV0FJVF9GT1JfQ0hBTkdFX1BBU1MpXG5cbiAgICBjb25zdCBoaW50cyA9IFtIRUxQX0hJTlRdXG4gICAgaWYgKGZhaWxlZFNuYXApXG4gICAgICBoaW50cy51bnNoaWZ0KEhFTFBfVVBEQVRFX1NOQVApXG4gICAgZWxzZVxuICAgICAgaGludHMucHVzaChIRUxQX1FVSVRFKVxuXG4gICAgdGhpcy5jdHgubG9nKEJBREdFX1BBRERJTkcgKyBoaW50cy5qb2luKGMuZGltKCcsICcpKSlcbiAgfVxuXG4gIGFzeW5jIG9uV2F0Y2hlclJlcnVuKGZpbGVzOiBzdHJpbmdbXSwgdHJpZ2dlcj86IHN0cmluZykge1xuICAgIHRoaXMud2F0Y2hGaWx0ZXJzID0gZmlsZXNcblxuICAgIHRoaXMuY3R4LmNvbnNvbGUuY2xlYXIoKVxuICAgIHRoaXMuY3R4LmxvZyhjLmJsdWUoJ1JlLXJ1bm5pbmcgdGVzdHMuLi4nKSArICh0cmlnZ2VyID8gYy5kaW0oYCBbICR7dGhpcy5yZWxhdGl2ZSh0cmlnZ2VyKX0gXVxcbmApIDogJycpKVxuICAgIHRoaXMuc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKVxuICB9XG5cbiAgb25Vc2VyQ29uc29sZUxvZyhsb2c6IFVzZXJDb25zb2xlTG9nKSB7XG4gICAgaWYgKHRoaXMuY3R4LmNvbmZpZy5zaWxlbnQpXG4gICAgICByZXR1cm5cbiAgICBjb25zdCB0YXNrID0gbG9nLnRhc2tJZCA/IHRoaXMuY3R4LnN0YXRlLmlkTWFwLmdldChsb2cudGFza0lkKSA6IHVuZGVmaW5lZFxuICAgIHRoaXMuY3R4LmxvZyhjLmdyYXkobG9nLnR5cGUgKyBjLmRpbShgIHwgJHt0YXNrID8gZ2V0RnVsbE5hbWUodGFzaykgOiAndW5rbm93biB0ZXN0J31gKSkpXG4gICAgcHJvY2Vzc1tsb2cudHlwZV0ud3JpdGUoYCR7bG9nLmNvbnRlbnR9XFxuYClcbiAgfVxuXG4gIG9uU2VydmVyUmVzdGFydCgpIHtcbiAgICB0aGlzLmN0eC5sb2coYy5jeWFuKCdSZXN0YXJ0ZWQgZHVlIHRvIGNvbmZpZyBjaGFuZ2VzLi4uJykpXG4gIH1cblxuICBhc3luYyByZXBvcnRTdW1tYXJ5KGZpbGVzOiBGaWxlW10pIHtcbiAgICBjb25zdCBzdWl0ZXMgPSBnZXRTdWl0ZXMoZmlsZXMpXG4gICAgY29uc3QgdGVzdHMgPSBnZXRUZXN0cyhmaWxlcylcblxuICAgIGNvbnN0IGZhaWxlZFN1aXRlcyA9IHN1aXRlcy5maWx0ZXIoaSA9PiBpLnJlc3VsdD8uZXJyb3IpXG4gICAgY29uc3QgZmFpbGVkVGVzdHMgPSB0ZXN0cy5maWx0ZXIoaSA9PiBpLnJlc3VsdD8uc3RhdGUgPT09ICdmYWlsJylcbiAgICBjb25zdCBmYWlsZWRUb3RhbCA9IGZhaWxlZFN1aXRlcy5sZW5ndGggKyBmYWlsZWRUZXN0cy5sZW5ndGhcblxuICAgIGxldCBjdXJyZW50ID0gMVxuXG4gICAgY29uc3QgZXJyb3JEaXZpZGVyID0gKCkgPT4gdGhpcy5jdHguZXJyb3IoYCR7Yy5yZWQoYy5kaW0oZGl2aWRlcihgWyR7Y3VycmVudCsrfS8ke2ZhaWxlZFRvdGFsfV1gLCB1bmRlZmluZWQsIDEpKSl9XFxuYClcblxuICAgIGlmIChmYWlsZWRTdWl0ZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN0eC5lcnJvcihjLnJlZChkaXZpZGVyKGMuYm9sZChjLmludmVyc2UoYCBGYWlsZWQgU3VpdGVzICR7ZmFpbGVkU3VpdGVzLmxlbmd0aH0gYCkpKSkpXG4gICAgICB0aGlzLmN0eC5lcnJvcigpXG4gICAgICBhd2FpdCB0aGlzLnByaW50VGFza0Vycm9ycyhmYWlsZWRTdWl0ZXMsIGVycm9yRGl2aWRlcilcbiAgICB9XG5cbiAgICBpZiAoZmFpbGVkVGVzdHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN0eC5lcnJvcihjLnJlZChkaXZpZGVyKGMuYm9sZChjLmludmVyc2UoYCBGYWlsZWQgVGVzdHMgJHtmYWlsZWRUZXN0cy5sZW5ndGh9IGApKSkpKVxuICAgICAgdGhpcy5jdHguZXJyb3IoKVxuXG4gICAgICBhd2FpdCB0aGlzLnByaW50VGFza0Vycm9ycyhmYWlsZWRUZXN0cywgZXJyb3JEaXZpZGVyKVxuICAgIH1cblxuICAgIGNvbnN0IGV4ZWN1dGlvblRpbWUgPSB0aGlzLmVuZCAtIHRoaXMuc3RhcnRcbiAgICBjb25zdCB0aHJlYWRUaW1lID0gZmlsZXMucmVkdWNlKChhY2MsIHRlc3QpID0+IGFjYyArICh0ZXN0LnJlc3VsdD8uZHVyYXRpb24gfHwgMCkgKyAodGVzdC5jb2xsZWN0RHVyYXRpb24gfHwgMCksIDApXG5cbiAgICBjb25zdCBwYWRUaXRsZSA9IChzdHI6IHN0cmluZykgPT4gYy5kaW0oYCR7c3RyLnBhZFN0YXJ0KDEwKX0gYClcbiAgICBjb25zdCB0aW1lID0gKHRpbWU6IG51bWJlcikgPT4ge1xuICAgICAgaWYgKHRpbWUgPiAxMDAwKVxuICAgICAgICByZXR1cm4gYCR7KHRpbWUgLyAxMDAwKS50b0ZpeGVkKDIpfXNgXG4gICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZCh0aW1lKX1tc2BcbiAgICB9XG5cbiAgICBjb25zdCBzbmFwc2hvdE91dHB1dCA9IHJlbmRlclNuYXBzaG90U3VtbWFyeSh0aGlzLmN0eC5jb25maWcucm9vdCwgdGhpcy5jdHguc25hcHNob3Quc3VtbWFyeSlcbiAgICBpZiAoc25hcHNob3RPdXRwdXQubGVuZ3RoKSB7XG4gICAgICB0aGlzLmN0eC5sb2coc25hcHNob3RPdXRwdXQubWFwKCh0LCBpKSA9PiBpID09PSAwXG4gICAgICAgID8gYCR7cGFkVGl0bGUoJ1NuYXBzaG90cycpfSAke3R9YFxuICAgICAgICA6IGAke3BhZFRpdGxlKCcnKX0gJHt0fWAsXG4gICAgICApLmpvaW4oJ1xcbicpKVxuICAgICAgaWYgKHNuYXBzaG90T3V0cHV0Lmxlbmd0aCA+IDEpXG4gICAgICAgIHRoaXMuY3R4LmxvZygpXG4gICAgfVxuXG4gICAgdGhpcy5jdHgubG9nKHBhZFRpdGxlKCdUZXN0IEZpbGVzJyksIGdldFN0YXRlU3RyaW5nKGZpbGVzKSlcbiAgICB0aGlzLmN0eC5sb2cocGFkVGl0bGUoJ1Rlc3RzJyksIGdldFN0YXRlU3RyaW5nKHRlc3RzKSlcbiAgICBpZiAodGhpcy53YXRjaEZpbHRlcnMpXG4gICAgICB0aGlzLmN0eC5sb2cocGFkVGl0bGUoJ1RpbWUnKSwgdGltZSh0aHJlYWRUaW1lKSlcblxuICAgIGVsc2VcbiAgICAgIHRoaXMuY3R4LmxvZyhwYWRUaXRsZSgnVGltZScpLCB0aW1lKGV4ZWN1dGlvblRpbWUpICsgYy5ncmF5KGAgKGluIHRocmVhZCAke3RpbWUodGhyZWFkVGltZSl9LCAkeyhleGVjdXRpb25UaW1lIC8gdGhyZWFkVGltZSAqIDEwMCkudG9GaXhlZCgyKX0lKWApKVxuXG4gICAgdGhpcy5jdHgubG9nKClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJpbnRUYXNrRXJyb3JzKHRhc2tzOiBUYXNrW10sIGVycm9yRGl2aWRlcjogKCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGVycm9yc1F1ZXVlOiBbZXJyb3I6IEVycm9yV2l0aERpZmYgfCB1bmRlZmluZWQsIHRlc3RzOiBUYXNrW11dW10gPSBbXVxuICAgIGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuICAgICAgLy8gbWVyZ2UgaWRlbnRpY2FsIGVycm9yc1xuICAgICAgY29uc3QgZXJyb3IgPSB0YXNrLnJlc3VsdD8uZXJyb3JcbiAgICAgIGNvbnN0IGVycm9ySXRlbSA9IGVycm9yPy5zdGFja1N0ciAmJiBlcnJvcnNRdWV1ZS5maW5kKGkgPT4gaVswXT8uc3RhY2tTdHIgPT09IGVycm9yLnN0YWNrU3RyKVxuICAgICAgaWYgKGVycm9ySXRlbSlcbiAgICAgICAgZXJyb3JJdGVtWzFdLnB1c2godGFzaylcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3JzUXVldWUucHVzaChbZXJyb3IsIFt0YXNrXV0pXG4gICAgfVxuICAgIGZvciAoY29uc3QgW2Vycm9yLCB0YXNrc10gb2YgZXJyb3JzUXVldWUpIHtcbiAgICAgIGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuICAgICAgICBjb25zdCBmaWxlcGF0aCA9ICh0YXNrIGFzIEZpbGUpPy5maWxlcGF0aCB8fCAnJ1xuICAgICAgICBsZXQgbmFtZSA9IGdldEZ1bGxOYW1lKHRhc2spXG4gICAgICAgIGlmIChmaWxlcGF0aClcbiAgICAgICAgICBuYW1lID0gYCR7bmFtZX0gJHtjLmRpbShgWyAke3RoaXMucmVsYXRpdmUoZmlsZXBhdGgpfSBdYCl9YFxuXG4gICAgICAgIHRoaXMuY3R4LmVycm9yKGAke2MucmVkKGMuYm9sZChjLmludmVyc2UoJyBGQUlMICcpKSl9ICR7bmFtZX1gKVxuICAgICAgfVxuICAgICAgYXdhaXQgcHJpbnRFcnJvcihlcnJvciwgdGhpcy5jdHgpXG4gICAgICBlcnJvckRpdmlkZXIoKVxuICAgIH1cbiAgfVxufVxuIiwiY29uc3QgRVNDID0gJ1xcdTAwMUJbJztcbmNvbnN0IE9TQyA9ICdcXHUwMDFCXSc7XG5jb25zdCBCRUwgPSAnXFx1MDAwNyc7XG5jb25zdCBTRVAgPSAnOyc7XG5jb25zdCBpc1Rlcm1pbmFsQXBwID0gcHJvY2Vzcy5lbnYuVEVSTV9QUk9HUkFNID09PSAnQXBwbGVfVGVybWluYWwnO1xuXG5jb25zdCBhbnNpRXNjYXBlcyA9IHt9O1xuXG5hbnNpRXNjYXBlcy5jdXJzb3JUbyA9ICh4LCB5KSA9PiB7XG5cdGlmICh0eXBlb2YgeCAhPT0gJ251bWJlcicpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgYHhgIGFyZ3VtZW50IGlzIHJlcXVpcmVkJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIHkgIT09ICdudW1iZXInKSB7XG5cdFx0cmV0dXJuIEVTQyArICh4ICsgMSkgKyAnRyc7XG5cdH1cblxuXHRyZXR1cm4gRVNDICsgKHkgKyAxKSArICc7JyArICh4ICsgMSkgKyAnSCc7XG59O1xuXG5hbnNpRXNjYXBlcy5jdXJzb3JNb3ZlID0gKHgsIHkpID0+IHtcblx0aWYgKHR5cGVvZiB4ICE9PSAnbnVtYmVyJykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBgeGAgYXJndW1lbnQgaXMgcmVxdWlyZWQnKTtcblx0fVxuXG5cdGxldCByZXR1cm5WYWx1ZSA9ICcnO1xuXG5cdGlmICh4IDwgMCkge1xuXHRcdHJldHVyblZhbHVlICs9IEVTQyArICgteCkgKyAnRCc7XG5cdH0gZWxzZSBpZiAoeCA+IDApIHtcblx0XHRyZXR1cm5WYWx1ZSArPSBFU0MgKyB4ICsgJ0MnO1xuXHR9XG5cblx0aWYgKHkgPCAwKSB7XG5cdFx0cmV0dXJuVmFsdWUgKz0gRVNDICsgKC15KSArICdBJztcblx0fSBlbHNlIGlmICh5ID4gMCkge1xuXHRcdHJldHVyblZhbHVlICs9IEVTQyArIHkgKyAnQic7XG5cdH1cblxuXHRyZXR1cm4gcmV0dXJuVmFsdWU7XG59O1xuXG5hbnNpRXNjYXBlcy5jdXJzb3JVcCA9IChjb3VudCA9IDEpID0+IEVTQyArIGNvdW50ICsgJ0EnO1xuYW5zaUVzY2FwZXMuY3Vyc29yRG93biA9IChjb3VudCA9IDEpID0+IEVTQyArIGNvdW50ICsgJ0InO1xuYW5zaUVzY2FwZXMuY3Vyc29yRm9yd2FyZCA9IChjb3VudCA9IDEpID0+IEVTQyArIGNvdW50ICsgJ0MnO1xuYW5zaUVzY2FwZXMuY3Vyc29yQmFja3dhcmQgPSAoY291bnQgPSAxKSA9PiBFU0MgKyBjb3VudCArICdEJztcblxuYW5zaUVzY2FwZXMuY3Vyc29yTGVmdCA9IEVTQyArICdHJztcbmFuc2lFc2NhcGVzLmN1cnNvclNhdmVQb3NpdGlvbiA9IGlzVGVybWluYWxBcHAgPyAnXFx1MDAxQjcnIDogRVNDICsgJ3MnO1xuYW5zaUVzY2FwZXMuY3Vyc29yUmVzdG9yZVBvc2l0aW9uID0gaXNUZXJtaW5hbEFwcCA/ICdcXHUwMDFCOCcgOiBFU0MgKyAndSc7XG5hbnNpRXNjYXBlcy5jdXJzb3JHZXRQb3NpdGlvbiA9IEVTQyArICc2bic7XG5hbnNpRXNjYXBlcy5jdXJzb3JOZXh0TGluZSA9IEVTQyArICdFJztcbmFuc2lFc2NhcGVzLmN1cnNvclByZXZMaW5lID0gRVNDICsgJ0YnO1xuYW5zaUVzY2FwZXMuY3Vyc29ySGlkZSA9IEVTQyArICc/MjVsJztcbmFuc2lFc2NhcGVzLmN1cnNvclNob3cgPSBFU0MgKyAnPzI1aCc7XG5cbmFuc2lFc2NhcGVzLmVyYXNlTGluZXMgPSBjb3VudCA9PiB7XG5cdGxldCBjbGVhciA9ICcnO1xuXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuXHRcdGNsZWFyICs9IGFuc2lFc2NhcGVzLmVyYXNlTGluZSArIChpIDwgY291bnQgLSAxID8gYW5zaUVzY2FwZXMuY3Vyc29yVXAoKSA6ICcnKTtcblx0fVxuXG5cdGlmIChjb3VudCkge1xuXHRcdGNsZWFyICs9IGFuc2lFc2NhcGVzLmN1cnNvckxlZnQ7XG5cdH1cblxuXHRyZXR1cm4gY2xlYXI7XG59O1xuXG5hbnNpRXNjYXBlcy5lcmFzZUVuZExpbmUgPSBFU0MgKyAnSyc7XG5hbnNpRXNjYXBlcy5lcmFzZVN0YXJ0TGluZSA9IEVTQyArICcxSyc7XG5hbnNpRXNjYXBlcy5lcmFzZUxpbmUgPSBFU0MgKyAnMksnO1xuYW5zaUVzY2FwZXMuZXJhc2VEb3duID0gRVNDICsgJ0onO1xuYW5zaUVzY2FwZXMuZXJhc2VVcCA9IEVTQyArICcxSic7XG5hbnNpRXNjYXBlcy5lcmFzZVNjcmVlbiA9IEVTQyArICcySic7XG5hbnNpRXNjYXBlcy5zY3JvbGxVcCA9IEVTQyArICdTJztcbmFuc2lFc2NhcGVzLnNjcm9sbERvd24gPSBFU0MgKyAnVCc7XG5cbmFuc2lFc2NhcGVzLmNsZWFyU2NyZWVuID0gJ1xcdTAwMUJjJztcblxuYW5zaUVzY2FwZXMuY2xlYXJUZXJtaW5hbCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgP1xuXHRgJHthbnNpRXNjYXBlcy5lcmFzZVNjcmVlbn0ke0VTQ30wZmAgOlxuXHQvLyAxLiBFcmFzZXMgdGhlIHNjcmVlbiAoT25seSBkb25lIGluIGNhc2UgYDJgIGlzIG5vdCBzdXBwb3J0ZWQpXG5cdC8vIDIuIEVyYXNlcyB0aGUgd2hvbGUgc2NyZWVuIGluY2x1ZGluZyBzY3JvbGxiYWNrIGJ1ZmZlclxuXHQvLyAzLiBNb3ZlcyBjdXJzb3IgdG8gdGhlIHRvcC1sZWZ0IHBvc2l0aW9uXG5cdC8vIE1vcmUgaW5mbzogaHR0cHM6Ly93d3cucmVhbC13b3JsZC1zeXN0ZW1zLmNvbS9kb2NzL0FOU0ljb2RlLmh0bWxcblx0YCR7YW5zaUVzY2FwZXMuZXJhc2VTY3JlZW59JHtFU0N9M0oke0VTQ31IYDtcblxuYW5zaUVzY2FwZXMuYmVlcCA9IEJFTDtcblxuYW5zaUVzY2FwZXMubGluayA9ICh0ZXh0LCB1cmwpID0+IHtcblx0cmV0dXJuIFtcblx0XHRPU0MsXG5cdFx0JzgnLFxuXHRcdFNFUCxcblx0XHRTRVAsXG5cdFx0dXJsLFxuXHRcdEJFTCxcblx0XHR0ZXh0LFxuXHRcdE9TQyxcblx0XHQnOCcsXG5cdFx0U0VQLFxuXHRcdFNFUCxcblx0XHRCRUxcblx0XS5qb2luKCcnKTtcbn07XG5cbmFuc2lFc2NhcGVzLmltYWdlID0gKGJ1ZmZlciwgb3B0aW9ucyA9IHt9KSA9PiB7XG5cdGxldCByZXR1cm5WYWx1ZSA9IGAke09TQ30xMzM3O0ZpbGU9aW5saW5lPTFgO1xuXG5cdGlmIChvcHRpb25zLndpZHRoKSB7XG5cdFx0cmV0dXJuVmFsdWUgKz0gYDt3aWR0aD0ke29wdGlvbnMud2lkdGh9YDtcblx0fVxuXG5cdGlmIChvcHRpb25zLmhlaWdodCkge1xuXHRcdHJldHVyblZhbHVlICs9IGA7aGVpZ2h0PSR7b3B0aW9ucy5oZWlnaHR9YDtcblx0fVxuXG5cdGlmIChvcHRpb25zLnByZXNlcnZlQXNwZWN0UmF0aW8gPT09IGZhbHNlKSB7XG5cdFx0cmV0dXJuVmFsdWUgKz0gJztwcmVzZXJ2ZUFzcGVjdFJhdGlvPTAnO1xuXHR9XG5cblx0cmV0dXJuIHJldHVyblZhbHVlICsgJzonICsgYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSArIEJFTDtcbn07XG5cbmFuc2lFc2NhcGVzLmlUZXJtID0ge1xuXHRzZXRDd2Q6IChjd2QgPSBwcm9jZXNzLmN3ZCgpKSA9PiBgJHtPU0N9NTA7Q3VycmVudERpcj0ke2N3ZH0ke0JFTH1gLFxuXG5cdGFubm90YXRpb246IChtZXNzYWdlLCBvcHRpb25zID0ge30pID0+IHtcblx0XHRsZXQgcmV0dXJuVmFsdWUgPSBgJHtPU0N9MTMzNztgO1xuXG5cdFx0Y29uc3QgaGFzWCA9IHR5cGVvZiBvcHRpb25zLnggIT09ICd1bmRlZmluZWQnO1xuXHRcdGNvbnN0IGhhc1kgPSB0eXBlb2Ygb3B0aW9ucy55ICE9PSAndW5kZWZpbmVkJztcblx0XHRpZiAoKGhhc1ggfHwgaGFzWSkgJiYgIShoYXNYICYmIGhhc1kgJiYgdHlwZW9mIG9wdGlvbnMubGVuZ3RoICE9PSAndW5kZWZpbmVkJykpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignYHhgLCBgeWAgYW5kIGBsZW5ndGhgIG11c3QgYmUgZGVmaW5lZCB3aGVuIGB4YCBvciBgeWAgaXMgZGVmaW5lZCcpO1xuXHRcdH1cblxuXHRcdG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL1xcfC9nLCAnJyk7XG5cblx0XHRyZXR1cm5WYWx1ZSArPSBvcHRpb25zLmlzSGlkZGVuID8gJ0FkZEhpZGRlbkFubm90YXRpb249JyA6ICdBZGRBbm5vdGF0aW9uPSc7XG5cblx0XHRpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0XHRyZXR1cm5WYWx1ZSArPVxuXHRcdFx0XHRcdChoYXNYID9cblx0XHRcdFx0XHRcdFttZXNzYWdlLCBvcHRpb25zLmxlbmd0aCwgb3B0aW9ucy54LCBvcHRpb25zLnldIDpcblx0XHRcdFx0XHRcdFtvcHRpb25zLmxlbmd0aCwgbWVzc2FnZV0pLmpvaW4oJ3wnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuVmFsdWUgKz0gbWVzc2FnZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0dXJuVmFsdWUgKyBCRUw7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFuc2lFc2NhcGVzO1xuIiwiaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCBvbmV0aW1lIGZyb20gJ29uZXRpbWUnO1xuaW1wb3J0IHNpZ25hbEV4aXQgZnJvbSAnc2lnbmFsLWV4aXQnO1xuXG5jb25zdCByZXN0b3JlQ3Vyc29yID0gb25ldGltZSgoKSA9PiB7XG5cdHNpZ25hbEV4aXQoKCkgPT4ge1xuXHRcdHByb2Nlc3Muc3RkZXJyLndyaXRlKCdcXHUwMDFCWz8yNWgnKTtcblx0fSwge2Fsd2F5c0xhc3Q6IHRydWV9KTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCByZXN0b3JlQ3Vyc29yO1xuIiwiaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCByZXN0b3JlQ3Vyc29yIGZyb20gJ3Jlc3RvcmUtY3Vyc29yJztcblxubGV0IGlzSGlkZGVuID0gZmFsc2U7XG5cbmNvbnN0IGNsaUN1cnNvciA9IHt9O1xuXG5jbGlDdXJzb3Iuc2hvdyA9ICh3cml0YWJsZVN0cmVhbSA9IHByb2Nlc3Muc3RkZXJyKSA9PiB7XG5cdGlmICghd3JpdGFibGVTdHJlYW0uaXNUVFkpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpc0hpZGRlbiA9IGZhbHNlO1xuXHR3cml0YWJsZVN0cmVhbS53cml0ZSgnXFx1MDAxQls/MjVoJyk7XG59O1xuXG5jbGlDdXJzb3IuaGlkZSA9ICh3cml0YWJsZVN0cmVhbSA9IHByb2Nlc3Muc3RkZXJyKSA9PiB7XG5cdGlmICghd3JpdGFibGVTdHJlYW0uaXNUVFkpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRyZXN0b3JlQ3Vyc29yKCk7XG5cdGlzSGlkZGVuID0gdHJ1ZTtcblx0d3JpdGFibGVTdHJlYW0ud3JpdGUoJ1xcdTAwMUJbPzI1bCcpO1xufTtcblxuY2xpQ3Vyc29yLnRvZ2dsZSA9IChmb3JjZSwgd3JpdGFibGVTdHJlYW0pID0+IHtcblx0aWYgKGZvcmNlICE9PSB1bmRlZmluZWQpIHtcblx0XHRpc0hpZGRlbiA9IGZvcmNlO1xuXHR9XG5cblx0aWYgKGlzSGlkZGVuKSB7XG5cdFx0Y2xpQ3Vyc29yLnNob3cod3JpdGFibGVTdHJlYW0pO1xuXHR9IGVsc2Uge1xuXHRcdGNsaUN1cnNvci5oaWRlKHdyaXRhYmxlU3RyZWFtKTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xpQ3Vyc29yO1xuIiwiaW1wb3J0IHN0cmluZ1dpZHRoIGZyb20gJ3N0cmluZy13aWR0aCc7XG5pbXBvcnQgc3RyaXBBbnNpIGZyb20gJ3N0cmlwLWFuc2knO1xuaW1wb3J0IGFuc2lTdHlsZXMgZnJvbSAnYW5zaS1zdHlsZXMnO1xuXG5jb25zdCBFU0NBUEVTID0gbmV3IFNldChbXG5cdCdcXHUwMDFCJyxcblx0J1xcdTAwOUInLFxuXSk7XG5cbmNvbnN0IEVORF9DT0RFID0gMzk7XG5jb25zdCBBTlNJX0VTQ0FQRV9CRUxMID0gJ1xcdTAwMDcnO1xuY29uc3QgQU5TSV9DU0kgPSAnWyc7XG5jb25zdCBBTlNJX09TQyA9ICddJztcbmNvbnN0IEFOU0lfU0dSX1RFUk1JTkFUT1IgPSAnbSc7XG5jb25zdCBBTlNJX0VTQ0FQRV9MSU5LID0gYCR7QU5TSV9PU0N9ODs7YDtcblxuY29uc3Qgd3JhcEFuc2lDb2RlID0gY29kZSA9PiBgJHtFU0NBUEVTLnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke0FOU0lfQ1NJfSR7Y29kZX0ke0FOU0lfU0dSX1RFUk1JTkFUT1J9YDtcbmNvbnN0IHdyYXBBbnNpSHlwZXJsaW5rID0gdXJpID0+IGAke0VTQ0FQRVMudmFsdWVzKCkubmV4dCgpLnZhbHVlfSR7QU5TSV9FU0NBUEVfTElOS30ke3VyaX0ke0FOU0lfRVNDQVBFX0JFTEx9YDtcblxuLy8gQ2FsY3VsYXRlIHRoZSBsZW5ndGggb2Ygd29yZHMgc3BsaXQgb24gJyAnLCBpZ25vcmluZ1xuLy8gdGhlIGV4dHJhIGNoYXJhY3RlcnMgYWRkZWQgYnkgYW5zaSBlc2NhcGUgY29kZXNcbmNvbnN0IHdvcmRMZW5ndGhzID0gc3RyaW5nID0+IHN0cmluZy5zcGxpdCgnICcpLm1hcChjaGFyYWN0ZXIgPT4gc3RyaW5nV2lkdGgoY2hhcmFjdGVyKSk7XG5cbi8vIFdyYXAgYSBsb25nIHdvcmQgYWNyb3NzIG11bHRpcGxlIHJvd3Ncbi8vIEFuc2kgZXNjYXBlIGNvZGVzIGRvIG5vdCBjb3VudCB0b3dhcmRzIGxlbmd0aFxuY29uc3Qgd3JhcFdvcmQgPSAocm93cywgd29yZCwgY29sdW1ucykgPT4ge1xuXHRjb25zdCBjaGFyYWN0ZXJzID0gWy4uLndvcmRdO1xuXG5cdGxldCBpc0luc2lkZUVzY2FwZSA9IGZhbHNlO1xuXHRsZXQgaXNJbnNpZGVMaW5rRXNjYXBlID0gZmFsc2U7XG5cdGxldCB2aXNpYmxlID0gc3RyaW5nV2lkdGgoc3RyaXBBbnNpKHJvd3Nbcm93cy5sZW5ndGggLSAxXSkpO1xuXG5cdGZvciAoY29uc3QgW2luZGV4LCBjaGFyYWN0ZXJdIG9mIGNoYXJhY3RlcnMuZW50cmllcygpKSB7XG5cdFx0Y29uc3QgY2hhcmFjdGVyTGVuZ3RoID0gc3RyaW5nV2lkdGgoY2hhcmFjdGVyKTtcblxuXHRcdGlmICh2aXNpYmxlICsgY2hhcmFjdGVyTGVuZ3RoIDw9IGNvbHVtbnMpIHtcblx0XHRcdHJvd3Nbcm93cy5sZW5ndGggLSAxXSArPSBjaGFyYWN0ZXI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJvd3MucHVzaChjaGFyYWN0ZXIpO1xuXHRcdFx0dmlzaWJsZSA9IDA7XG5cdFx0fVxuXG5cdFx0aWYgKEVTQ0FQRVMuaGFzKGNoYXJhY3RlcikpIHtcblx0XHRcdGlzSW5zaWRlRXNjYXBlID0gdHJ1ZTtcblx0XHRcdGlzSW5zaWRlTGlua0VzY2FwZSA9IGNoYXJhY3RlcnMuc2xpY2UoaW5kZXggKyAxKS5qb2luKCcnKS5zdGFydHNXaXRoKEFOU0lfRVNDQVBFX0xJTkspO1xuXHRcdH1cblxuXHRcdGlmIChpc0luc2lkZUVzY2FwZSkge1xuXHRcdFx0aWYgKGlzSW5zaWRlTGlua0VzY2FwZSkge1xuXHRcdFx0XHRpZiAoY2hhcmFjdGVyID09PSBBTlNJX0VTQ0FQRV9CRUxMKSB7XG5cdFx0XHRcdFx0aXNJbnNpZGVFc2NhcGUgPSBmYWxzZTtcblx0XHRcdFx0XHRpc0luc2lkZUxpbmtFc2NhcGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09IEFOU0lfU0dSX1RFUk1JTkFUT1IpIHtcblx0XHRcdFx0aXNJbnNpZGVFc2NhcGUgPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0dmlzaWJsZSArPSBjaGFyYWN0ZXJMZW5ndGg7XG5cblx0XHRpZiAodmlzaWJsZSA9PT0gY29sdW1ucyAmJiBpbmRleCA8IGNoYXJhY3RlcnMubGVuZ3RoIC0gMSkge1xuXHRcdFx0cm93cy5wdXNoKCcnKTtcblx0XHRcdHZpc2libGUgPSAwO1xuXHRcdH1cblx0fVxuXG5cdC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGUgbGFzdCByb3cgd2UgY29weSBvdmVyIGlzIG9ubHlcblx0Ly8gYW5zaSBlc2NhcGUgY2hhcmFjdGVycywgaGFuZGxlIHRoaXMgZWRnZS1jYXNlXG5cdGlmICghdmlzaWJsZSAmJiByb3dzW3Jvd3MubGVuZ3RoIC0gMV0ubGVuZ3RoID4gMCAmJiByb3dzLmxlbmd0aCA+IDEpIHtcblx0XHRyb3dzW3Jvd3MubGVuZ3RoIC0gMl0gKz0gcm93cy5wb3AoKTtcblx0fVxufTtcblxuLy8gVHJpbXMgc3BhY2VzIGZyb20gYSBzdHJpbmcgaWdub3JpbmcgaW52aXNpYmxlIHNlcXVlbmNlc1xuY29uc3Qgc3RyaW5nVmlzaWJsZVRyaW1TcGFjZXNSaWdodCA9IHN0cmluZyA9PiB7XG5cdGNvbnN0IHdvcmRzID0gc3RyaW5nLnNwbGl0KCcgJyk7XG5cdGxldCBsYXN0ID0gd29yZHMubGVuZ3RoO1xuXG5cdHdoaWxlIChsYXN0ID4gMCkge1xuXHRcdGlmIChzdHJpbmdXaWR0aCh3b3Jkc1tsYXN0IC0gMV0pID4gMCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXG5cdFx0bGFzdC0tO1xuXHR9XG5cblx0aWYgKGxhc3QgPT09IHdvcmRzLmxlbmd0aCkge1xuXHRcdHJldHVybiBzdHJpbmc7XG5cdH1cblxuXHRyZXR1cm4gd29yZHMuc2xpY2UoMCwgbGFzdCkuam9pbignICcpICsgd29yZHMuc2xpY2UobGFzdCkuam9pbignJyk7XG59O1xuXG4vLyBUaGUgd3JhcC1hbnNpIG1vZHVsZSBjYW4gYmUgaW52b2tlZCBpbiBlaXRoZXIgJ2hhcmQnIG9yICdzb2Z0JyB3cmFwIG1vZGVcbi8vXG4vLyAnaGFyZCcgd2lsbCBuZXZlciBhbGxvdyBhIHN0cmluZyB0byB0YWtlIHVwIG1vcmUgdGhhbiBjb2x1bW5zIGNoYXJhY3RlcnNcbi8vXG4vLyAnc29mdCcgYWxsb3dzIGxvbmcgd29yZHMgdG8gZXhwYW5kIHBhc3QgdGhlIGNvbHVtbiBsZW5ndGhcbmNvbnN0IGV4ZWMgPSAoc3RyaW5nLCBjb2x1bW5zLCBvcHRpb25zID0ge30pID0+IHtcblx0aWYgKG9wdGlvbnMudHJpbSAhPT0gZmFsc2UgJiYgc3RyaW5nLnRyaW0oKSA9PT0gJycpIHtcblx0XHRyZXR1cm4gJyc7XG5cdH1cblxuXHRsZXQgcmV0dXJuVmFsdWUgPSAnJztcblx0bGV0IGVzY2FwZUNvZGU7XG5cdGxldCBlc2NhcGVVcmw7XG5cblx0Y29uc3QgbGVuZ3RocyA9IHdvcmRMZW5ndGhzKHN0cmluZyk7XG5cdGxldCByb3dzID0gWycnXTtcblxuXHRmb3IgKGNvbnN0IFtpbmRleCwgd29yZF0gb2Ygc3RyaW5nLnNwbGl0KCcgJykuZW50cmllcygpKSB7XG5cdFx0aWYgKG9wdGlvbnMudHJpbSAhPT0gZmFsc2UpIHtcblx0XHRcdHJvd3Nbcm93cy5sZW5ndGggLSAxXSA9IHJvd3Nbcm93cy5sZW5ndGggLSAxXS50cmltU3RhcnQoKTtcblx0XHR9XG5cblx0XHRsZXQgcm93TGVuZ3RoID0gc3RyaW5nV2lkdGgocm93c1tyb3dzLmxlbmd0aCAtIDFdKTtcblxuXHRcdGlmIChpbmRleCAhPT0gMCkge1xuXHRcdFx0aWYgKHJvd0xlbmd0aCA+PSBjb2x1bW5zICYmIChvcHRpb25zLndvcmRXcmFwID09PSBmYWxzZSB8fCBvcHRpb25zLnRyaW0gPT09IGZhbHNlKSkge1xuXHRcdFx0XHQvLyBJZiB3ZSBzdGFydCB3aXRoIGEgbmV3IHdvcmQgYnV0IHRoZSBjdXJyZW50IHJvdyBsZW5ndGggZXF1YWxzIHRoZSBsZW5ndGggb2YgdGhlIGNvbHVtbnMsIGFkZCBhIG5ldyByb3dcblx0XHRcdFx0cm93cy5wdXNoKCcnKTtcblx0XHRcdFx0cm93TGVuZ3RoID0gMDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHJvd0xlbmd0aCA+IDAgfHwgb3B0aW9ucy50cmltID09PSBmYWxzZSkge1xuXHRcdFx0XHRyb3dzW3Jvd3MubGVuZ3RoIC0gMV0gKz0gJyAnO1xuXHRcdFx0XHRyb3dMZW5ndGgrKztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJbiAnaGFyZCcgd3JhcCBtb2RlLCB0aGUgbGVuZ3RoIG9mIGEgbGluZSBpcyBuZXZlciBhbGxvd2VkIHRvIGV4dGVuZCBwYXN0ICdjb2x1bW5zJ1xuXHRcdGlmIChvcHRpb25zLmhhcmQgJiYgbGVuZ3Roc1tpbmRleF0gPiBjb2x1bW5zKSB7XG5cdFx0XHRjb25zdCByZW1haW5pbmdDb2x1bW5zID0gKGNvbHVtbnMgLSByb3dMZW5ndGgpO1xuXHRcdFx0Y29uc3QgYnJlYWtzU3RhcnRpbmdUaGlzTGluZSA9IDEgKyBNYXRoLmZsb29yKChsZW5ndGhzW2luZGV4XSAtIHJlbWFpbmluZ0NvbHVtbnMgLSAxKSAvIGNvbHVtbnMpO1xuXHRcdFx0Y29uc3QgYnJlYWtzU3RhcnRpbmdOZXh0TGluZSA9IE1hdGguZmxvb3IoKGxlbmd0aHNbaW5kZXhdIC0gMSkgLyBjb2x1bW5zKTtcblx0XHRcdGlmIChicmVha3NTdGFydGluZ05leHRMaW5lIDwgYnJlYWtzU3RhcnRpbmdUaGlzTGluZSkge1xuXHRcdFx0XHRyb3dzLnB1c2goJycpO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwV29yZChyb3dzLCB3b3JkLCBjb2x1bW5zKTtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGlmIChyb3dMZW5ndGggKyBsZW5ndGhzW2luZGV4XSA+IGNvbHVtbnMgJiYgcm93TGVuZ3RoID4gMCAmJiBsZW5ndGhzW2luZGV4XSA+IDApIHtcblx0XHRcdGlmIChvcHRpb25zLndvcmRXcmFwID09PSBmYWxzZSAmJiByb3dMZW5ndGggPCBjb2x1bW5zKSB7XG5cdFx0XHRcdHdyYXBXb3JkKHJvd3MsIHdvcmQsIGNvbHVtbnMpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0cm93cy5wdXNoKCcnKTtcblx0XHR9XG5cblx0XHRpZiAocm93TGVuZ3RoICsgbGVuZ3Roc1tpbmRleF0gPiBjb2x1bW5zICYmIG9wdGlvbnMud29yZFdyYXAgPT09IGZhbHNlKSB7XG5cdFx0XHR3cmFwV29yZChyb3dzLCB3b3JkLCBjb2x1bW5zKTtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdHJvd3Nbcm93cy5sZW5ndGggLSAxXSArPSB3b3JkO1xuXHR9XG5cblx0aWYgKG9wdGlvbnMudHJpbSAhPT0gZmFsc2UpIHtcblx0XHRyb3dzID0gcm93cy5tYXAocm93ID0+IHN0cmluZ1Zpc2libGVUcmltU3BhY2VzUmlnaHQocm93KSk7XG5cdH1cblxuXHRjb25zdCBwcmUgPSBbLi4ucm93cy5qb2luKCdcXG4nKV07XG5cblx0Zm9yIChjb25zdCBbaW5kZXgsIGNoYXJhY3Rlcl0gb2YgcHJlLmVudHJpZXMoKSkge1xuXHRcdHJldHVyblZhbHVlICs9IGNoYXJhY3RlcjtcblxuXHRcdGlmIChFU0NBUEVTLmhhcyhjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjb25zdCB7Z3JvdXBzfSA9IG5ldyBSZWdFeHAoYCg/OlxcXFwke0FOU0lfQ1NJfSg/PGNvZGU+XFxcXGQrKW18XFxcXCR7QU5TSV9FU0NBUEVfTElOS30oPzx1cmk+LiopJHtBTlNJX0VTQ0FQRV9CRUxMfSlgKS5leGVjKHByZS5zbGljZShpbmRleCkuam9pbignJykpIHx8IHtncm91cHM6IHt9fTtcblx0XHRcdGlmIChncm91cHMuY29kZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGNvbnN0IGNvZGUgPSBOdW1iZXIucGFyc2VGbG9hdChncm91cHMuY29kZSk7XG5cdFx0XHRcdGVzY2FwZUNvZGUgPSBjb2RlID09PSBFTkRfQ09ERSA/IHVuZGVmaW5lZCA6IGNvZGU7XG5cdFx0XHR9IGVsc2UgaWYgKGdyb3Vwcy51cmkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRlc2NhcGVVcmwgPSBncm91cHMudXJpLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IGdyb3Vwcy51cmk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgY29kZSA9IGFuc2lTdHlsZXMuY29kZXMuZ2V0KE51bWJlcihlc2NhcGVDb2RlKSk7XG5cblx0XHRpZiAocHJlW2luZGV4ICsgMV0gPT09ICdcXG4nKSB7XG5cdFx0XHRpZiAoZXNjYXBlVXJsKSB7XG5cdFx0XHRcdHJldHVyblZhbHVlICs9IHdyYXBBbnNpSHlwZXJsaW5rKCcnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGVzY2FwZUNvZGUgJiYgY29kZSkge1xuXHRcdFx0XHRyZXR1cm5WYWx1ZSArPSB3cmFwQW5zaUNvZGUoY29kZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChjaGFyYWN0ZXIgPT09ICdcXG4nKSB7XG5cdFx0XHRpZiAoZXNjYXBlQ29kZSAmJiBjb2RlKSB7XG5cdFx0XHRcdHJldHVyblZhbHVlICs9IHdyYXBBbnNpQ29kZShlc2NhcGVDb2RlKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGVzY2FwZVVybCkge1xuXHRcdFx0XHRyZXR1cm5WYWx1ZSArPSB3cmFwQW5zaUh5cGVybGluayhlc2NhcGVVcmwpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXR1cm5WYWx1ZTtcbn07XG5cbi8vIEZvciBlYWNoIG5ld2xpbmUsIGludm9rZSB0aGUgbWV0aG9kIHNlcGFyYXRlbHlcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdyYXBBbnNpKHN0cmluZywgY29sdW1ucywgb3B0aW9ucykge1xuXHRyZXR1cm4gU3RyaW5nKHN0cmluZylcblx0XHQubm9ybWFsaXplKClcblx0XHQucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKVxuXHRcdC5zcGxpdCgnXFxuJylcblx0XHQubWFwKGxpbmUgPT4gZXhlYyhsaW5lLCBjb2x1bW5zLCBvcHRpb25zKSlcblx0XHQuam9pbignXFxuJyk7XG59XG4iLCJpbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IGFuc2lFc2NhcGVzIGZyb20gJ2Fuc2ktZXNjYXBlcyc7XG5pbXBvcnQgY2xpQ3Vyc29yIGZyb20gJ2NsaS1jdXJzb3InO1xuaW1wb3J0IHdyYXBBbnNpIGZyb20gJ3dyYXAtYW5zaSc7XG5pbXBvcnQgc2xpY2VBbnNpIGZyb20gJ3NsaWNlLWFuc2knO1xuXG5jb25zdCBkZWZhdWx0VGVybWluYWxIZWlnaHQgPSAyNDtcblxuY29uc3QgZ2V0V2lkdGggPSBzdHJlYW0gPT4ge1xuXHRjb25zdCB7Y29sdW1uc30gPSBzdHJlYW07XG5cblx0aWYgKCFjb2x1bW5zKSB7XG5cdFx0cmV0dXJuIDgwO1xuXHR9XG5cblx0cmV0dXJuIGNvbHVtbnM7XG59O1xuXG5jb25zdCBmaXRUb1Rlcm1pbmFsSGVpZ2h0ID0gKHN0cmVhbSwgdGV4dCkgPT4ge1xuXHRjb25zdCB0ZXJtaW5hbEhlaWdodCA9IHN0cmVhbS5yb3dzIHx8IGRlZmF1bHRUZXJtaW5hbEhlaWdodDtcblx0Y29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KCdcXG4nKTtcblxuXHRjb25zdCB0b1JlbW92ZSA9IGxpbmVzLmxlbmd0aCAtIHRlcm1pbmFsSGVpZ2h0O1xuXHRpZiAodG9SZW1vdmUgPD0gMCkge1xuXHRcdHJldHVybiB0ZXh0O1xuXHR9XG5cblx0cmV0dXJuIHNsaWNlQW5zaShcblx0XHR0ZXh0LFxuXHRcdGxpbmVzLnNsaWNlKDAsIHRvUmVtb3ZlKS5qb2luKCdcXG4nKS5sZW5ndGggKyAxLFxuXHRcdHRleHQubGVuZ3RoKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dVcGRhdGUoc3RyZWFtLCB7c2hvd0N1cnNvciA9IGZhbHNlfSA9IHt9KSB7XG5cdGxldCBwcmV2aW91c0xpbmVDb3VudCA9IDA7XG5cdGxldCBwcmV2aW91c1dpZHRoID0gZ2V0V2lkdGgoc3RyZWFtKTtcblx0bGV0IHByZXZpb3VzT3V0cHV0ID0gJyc7XG5cblx0Y29uc3QgcmVuZGVyID0gKC4uLmFyZ3VtZW50c18pID0+IHtcblx0XHRpZiAoIXNob3dDdXJzb3IpIHtcblx0XHRcdGNsaUN1cnNvci5oaWRlKCk7XG5cdFx0fVxuXG5cdFx0bGV0IG91dHB1dCA9IGFyZ3VtZW50c18uam9pbignICcpICsgJ1xcbic7XG5cdFx0b3V0cHV0ID0gZml0VG9UZXJtaW5hbEhlaWdodChzdHJlYW0sIG91dHB1dCk7XG5cdFx0Y29uc3Qgd2lkdGggPSBnZXRXaWR0aChzdHJlYW0pO1xuXHRcdGlmIChvdXRwdXQgPT09IHByZXZpb3VzT3V0cHV0ICYmIHByZXZpb3VzV2lkdGggPT09IHdpZHRoKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cHJldmlvdXNPdXRwdXQgPSBvdXRwdXQ7XG5cdFx0cHJldmlvdXNXaWR0aCA9IHdpZHRoO1xuXHRcdG91dHB1dCA9IHdyYXBBbnNpKG91dHB1dCwgd2lkdGgsIHtcblx0XHRcdHRyaW06IGZhbHNlLFxuXHRcdFx0aGFyZDogdHJ1ZSxcblx0XHRcdHdvcmRXcmFwOiBmYWxzZSxcblx0XHR9KTtcblx0XHRzdHJlYW0ud3JpdGUoYW5zaUVzY2FwZXMuZXJhc2VMaW5lcyhwcmV2aW91c0xpbmVDb3VudCkgKyBvdXRwdXQpO1xuXHRcdHByZXZpb3VzTGluZUNvdW50ID0gb3V0cHV0LnNwbGl0KCdcXG4nKS5sZW5ndGg7XG5cdH07XG5cblx0cmVuZGVyLmNsZWFyID0gKCkgPT4ge1xuXHRcdHN0cmVhbS53cml0ZShhbnNpRXNjYXBlcy5lcmFzZUxpbmVzKHByZXZpb3VzTGluZUNvdW50KSk7XG5cdFx0cHJldmlvdXNPdXRwdXQgPSAnJztcblx0XHRwcmV2aW91c1dpZHRoID0gZ2V0V2lkdGgoc3RyZWFtKTtcblx0XHRwcmV2aW91c0xpbmVDb3VudCA9IDA7XG5cdH07XG5cblx0cmVuZGVyLmRvbmUgPSAoKSA9PiB7XG5cdFx0cHJldmlvdXNPdXRwdXQgPSAnJztcblx0XHRwcmV2aW91c1dpZHRoID0gZ2V0V2lkdGgoc3RyZWFtKTtcblx0XHRwcmV2aW91c0xpbmVDb3VudCA9IDA7XG5cblx0XHRpZiAoIXNob3dDdXJzb3IpIHtcblx0XHRcdGNsaUN1cnNvci5zaG93KCk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiByZW5kZXI7XG59XG5cbmNvbnN0IGxvZ1VwZGF0ZSA9IGNyZWF0ZUxvZ1VwZGF0ZShwcm9jZXNzLnN0ZG91dCk7XG5leHBvcnQgZGVmYXVsdCBsb2dVcGRhdGU7XG5cbmV4cG9ydCBjb25zdCBsb2dVcGRhdGVTdGRlcnIgPSBjcmVhdGVMb2dVcGRhdGUocHJvY2Vzcy5zdGRlcnIpO1xuIiwiaW1wb3J0IHsgY3JlYXRlTG9nVXBkYXRlIH0gZnJvbSAnbG9nLXVwZGF0ZSdcbmltcG9ydCBjIGZyb20gJ3BpY29jb2xvcnMnXG5pbXBvcnQgY2xpVHJ1bmNhdGUgZnJvbSAnY2xpLXRydW5jYXRlJ1xuaW1wb3J0IHN0cmlwQW5zaSBmcm9tICdzdHJpcC1hbnNpJ1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRUZXN0cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgRl9SSUdIVCB9IGZyb20gJy4vZmlndXJlcydcbmltcG9ydCB7IGdldENvbHMsIGdldFN0YXRlU3ltYm9sIH0gZnJvbSAnLi91dGlscydcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0UmVuZGVyZXJPcHRpb25zIHtcbiAgcmVuZGVyU3VjY2VlZD86IGJvb2xlYW5cbiAgb3V0cHV0U3RyZWFtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW1cbn1cblxuY29uc3QgRFVSQVRJT05fTE9ORyA9IDMwMFxuXG5jb25zdCBvdXRwdXRNYXAgPSBuZXcgV2Vha01hcDxUYXNrLCBzdHJpbmc+KClcblxuZnVuY3Rpb24gZm9ybWF0RmlsZXBhdGgocGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGxhc3RTbGFzaCA9IE1hdGgubWF4KHBhdGgubGFzdEluZGV4T2YoJy8nKSArIDEsIDApXG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aC5zbGljZShsYXN0U2xhc2gpXG4gIGxldCBmaXJzdERvdCA9IGJhc2VuYW1lLmluZGV4T2YoJy4nKVxuICBpZiAoZmlyc3REb3QgPCAwKVxuICAgIGZpcnN0RG90ID0gYmFzZW5hbWUubGVuZ3RoXG4gIGZpcnN0RG90ICs9IGxhc3RTbGFzaFxuXG4gIHJldHVybiBjLmRpbShwYXRoLnNsaWNlKDAsIGxhc3RTbGFzaCkpICsgcGF0aC5zbGljZShsYXN0U2xhc2gsIGZpcnN0RG90KSArIGMuZGltKHBhdGguc2xpY2UoZmlyc3REb3QpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyVHJlZSh0YXNrczogVGFza1tdLCBvcHRpb25zOiBMaXN0UmVuZGVyZXJPcHRpb25zLCBsZXZlbCA9IDApIHtcbiAgbGV0IG91dHB1dDogc3RyaW5nW10gPSBbXVxuXG4gIGZvciAoY29uc3QgdGFzayBvZiB0YXNrcykge1xuICAgIGxldCBzdWZmaXggPSAnJ1xuICAgIGNvbnN0IHByZWZpeCA9IGAgJHtnZXRTdGF0ZVN5bWJvbCh0YXNrKX0gYFxuXG4gICAgaWYgKHRhc2sudHlwZSA9PT0gJ3N1aXRlJylcbiAgICAgIHN1ZmZpeCArPSBjLmRpbShgICgke2dldFRlc3RzKHRhc2spLmxlbmd0aH0pYClcblxuICAgIGlmICh0YXNrLm1vZGUgPT09ICdza2lwJyB8fCB0YXNrLm1vZGUgPT09ICd0b2RvJylcbiAgICAgIHN1ZmZpeCArPSBgICR7Yy5kaW0oYy5ncmF5KCdbc2tpcHBlZF0nKSl9YFxuXG4gICAgaWYgKHRhc2sucmVzdWx0Py5kdXJhdGlvbiAhPSBudWxsKSB7XG4gICAgICBpZiAodGFzay5yZXN1bHQuZHVyYXRpb24gPiBEVVJBVElPTl9MT05HKVxuICAgICAgICBzdWZmaXggKz0gYy55ZWxsb3coYCAke01hdGgucm91bmQodGFzay5yZXN1bHQuZHVyYXRpb24pfSR7Yy5kaW0oJ21zJyl9YClcbiAgICB9XG5cbiAgICBsZXQgbmFtZSA9IHRhc2submFtZVxuICAgIGlmIChsZXZlbCA9PT0gMClcbiAgICAgIG5hbWUgPSBmb3JtYXRGaWxlcGF0aChuYW1lKVxuICAgIG91dHB1dC5wdXNoKCcgICcucmVwZWF0KGxldmVsKSArIHByZWZpeCArIG5hbWUgKyBzdWZmaXgpXG5cbiAgICBpZiAoKHRhc2sucmVzdWx0Py5zdGF0ZSAhPT0gJ3Bhc3MnKSAmJiBvdXRwdXRNYXAuZ2V0KHRhc2spICE9IG51bGwpIHtcbiAgICAgIGxldCBkYXRhOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvdXRwdXRNYXAuZ2V0KHRhc2spXG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZGF0YSA9IHN0cmlwQW5zaShkYXRhLnRyaW0oKS5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pLnBvcCgpISlcbiAgICAgICAgaWYgKGRhdGEgPT09ICcnKVxuICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBvdXQgPSBgJHsnICAnLnJlcGVhdChsZXZlbCl9JHtGX1JJR0hUfSAke2RhdGF9YFxuICAgICAgICBvdXRwdXQucHVzaChgICAgJHtjLmdyYXkoY2xpVHJ1bmNhdGUob3V0LCBnZXRDb2xzKC0zKSkpfWApXG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0YXNrLnR5cGUgPT09ICdzdWl0ZScgJiYgdGFzay50YXNrcy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoKHRhc2sucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnIHx8IHRhc2sucmVzdWx0Py5zdGF0ZSA9PT0gJ3J1bicgfHwgb3B0aW9ucy5yZW5kZXJTdWNjZWVkKSlcbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmNvbmNhdChyZW5kZXJUcmVlKHRhc2sudGFza3MsIG9wdGlvbnMsIGxldmVsICsgMSkpXG4gICAgfVxuICB9XG5cbiAgLy8gVE9ETzogbW92aW5nIHdpbmRvd3NcbiAgcmV0dXJuIG91dHB1dC5qb2luKCdcXG4nKVxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlTGlzdFJlbmRlcmVyID0gKF90YXNrczogVGFza1tdLCBvcHRpb25zOiBMaXN0UmVuZGVyZXJPcHRpb25zKSA9PiB7XG4gIGxldCB0YXNrcyA9IF90YXNrc1xuICBsZXQgdGltZXI6IGFueVxuXG4gIGNvbnN0IGxvZyA9IGNyZWF0ZUxvZ1VwZGF0ZShvcHRpb25zLm91dHB1dFN0cmVhbSlcblxuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgbG9nKHJlbmRlclRyZWUodGFza3MsIG9wdGlvbnMpKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydCgpIHtcbiAgICAgIGlmICh0aW1lcilcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIHRpbWVyID0gc2V0SW50ZXJ2YWwodXBkYXRlLCAyMDApXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0sXG4gICAgdXBkYXRlKF90YXNrczogVGFza1tdKSB7XG4gICAgICB0YXNrcyA9IF90YXNrc1xuICAgICAgdXBkYXRlKClcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcbiAgICBhc3luYyBzdG9wKCkge1xuICAgICAgaWYgKHRpbWVyKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpXG4gICAgICAgIHRpbWVyID0gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBsb2cuY2xlYXIoKVxuICAgICAgb3B0aW9ucy5vdXRwdXRTdHJlYW0ud3JpdGUoYCR7cmVuZGVyVHJlZSh0YXNrcywgb3B0aW9ucyl9XFxuYClcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGxvZy5jbGVhcigpXG4gICAgfSxcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBVc2VyQ29uc29sZUxvZyB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgQmFzZVJlcG9ydGVyIH0gZnJvbSAnLi9iYXNlJ1xuaW1wb3J0IHR5cGUgeyBMaXN0UmVuZGVyZXJPcHRpb25zIH0gZnJvbSAnLi9yZW5kZXJlcnMvbGlzdFJlbmRlcmVyJ1xuaW1wb3J0IHsgY3JlYXRlTGlzdFJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlcnMvbGlzdFJlbmRlcmVyJ1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFJlcG9ydGVyIGV4dGVuZHMgQmFzZVJlcG9ydGVyIHtcbiAgcmVuZGVyZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVMaXN0UmVuZGVyZXI+XG4gIHJlbmRlcmVyT3B0aW9uczogTGlzdFJlbmRlcmVyT3B0aW9ucyA9IHt9IGFzIGFueVxuXG4gIG9uQ29sbGVjdGVkKCkge1xuICAgIGlmICh0aGlzLmlzVFRZKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyT3B0aW9ucy5vdXRwdXRTdHJlYW0gPSB0aGlzLmN0eC5vdXRwdXRTdHJlYW1cbiAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXModGhpcy53YXRjaEZpbHRlcnMpXG4gICAgICBpZiAoIXRoaXMucmVuZGVyZXIpXG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSBjcmVhdGVMaXN0UmVuZGVyZXIoZmlsZXMsIHRoaXMucmVuZGVyZXJPcHRpb25zKS5zdGFydCgpXG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMucmVuZGVyZXIudXBkYXRlKGZpbGVzKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uRmluaXNoZWQoZmlsZXMgPSB0aGlzLmN0eC5zdGF0ZS5nZXRGaWxlcygpKSB7XG4gICAgYXdhaXQgdGhpcy5zdG9wTGlzdFJlbmRlcigpXG4gICAgdGhpcy5jdHgubG9nKClcbiAgICBhd2FpdCBzdXBlci5vbkZpbmlzaGVkKGZpbGVzKVxuICB9XG5cbiAgYXN5bmMgb25XYXRjaGVyU3RhcnQoKSB7XG4gICAgYXdhaXQgdGhpcy5zdG9wTGlzdFJlbmRlcigpXG4gICAgc3VwZXIub25XYXRjaGVyU3RhcnQoKVxuICB9XG5cbiAgYXN5bmMgc3RvcExpc3RSZW5kZXIoKSB7XG4gICAgYXdhaXQgdGhpcy5yZW5kZXJlcj8uc3RvcCgpXG4gICAgdGhpcy5yZW5kZXJlciA9IHVuZGVmaW5lZFxuICB9XG5cbiAgYXN5bmMgb25XYXRjaGVyUmVydW4oZmlsZXM6IHN0cmluZ1tdLCB0cmlnZ2VyPzogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5zdG9wTGlzdFJlbmRlcigpXG4gICAgYXdhaXQgc3VwZXIub25XYXRjaGVyUmVydW4oZmlsZXMsIHRyaWdnZXIpXG4gIH1cblxuICBvblVzZXJDb25zb2xlTG9nKGxvZzogVXNlckNvbnNvbGVMb2cpIHtcbiAgICB0aGlzLnJlbmRlcmVyPy5jbGVhcigpXG4gICAgc3VwZXIub25Vc2VyQ29uc29sZUxvZyhsb2cpXG4gIH1cbn1cbiIsImltcG9ydCB7IGNyZWF0ZUxvZ1VwZGF0ZSB9IGZyb20gJ2xvZy11cGRhdGUnXG5pbXBvcnQgYyBmcm9tICdwaWNvY29sb3JzJ1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRUZXN0cyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIERvdFJlbmRlcmVyT3B0aW9ucyB7XG4gIG91dHB1dFN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtXG59XG5cbmNvbnN0IGNoZWNrID0gYy5ncmVlbignwrcnKVxuY29uc3QgY3Jvc3MgPSBjLnJlZCgneCcpXG5jb25zdCBwZW5kaW5nID0gYy55ZWxsb3coJyonKVxuY29uc3Qgc2tpcCA9IGMuZGltKGMuZ3JheSgnLScpKVxuXG5mdW5jdGlvbiByZW5kZXIodGFza3M6IFRhc2tbXSkge1xuICBjb25zdCBhbGwgPSBnZXRUZXN0cyh0YXNrcylcbiAgcmV0dXJuIGFsbC5tYXAoKGkpID0+IHtcbiAgICBpZiAoaS5tb2RlID09PSAnc2tpcCcgfHwgaS5tb2RlID09PSAndG9kbycpXG4gICAgICByZXR1cm4gc2tpcFxuICAgIHN3aXRjaCAoaS5yZXN1bHQ/LnN0YXRlKSB7XG4gICAgICBjYXNlICdwYXNzJzpcbiAgICAgICAgcmV0dXJuIGNoZWNrXG4gICAgICBjYXNlICdmYWlsJzpcbiAgICAgICAgcmV0dXJuIGNyb3NzXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcGVuZGluZ1xuICAgIH1cbiAgfSkuam9pbignJylcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURvdFJlbmRlcmVyID0gKF90YXNrczogVGFza1tdLCBvcHRpb25zOiBEb3RSZW5kZXJlck9wdGlvbnMpID0+IHtcbiAgbGV0IHRhc2tzID0gX3Rhc2tzXG4gIGxldCB0aW1lcjogYW55XG5cbiAgY29uc3QgbG9nID0gY3JlYXRlTG9nVXBkYXRlKG9wdGlvbnMub3V0cHV0U3RyZWFtKVxuXG4gIGZ1bmN0aW9uIHVwZGF0ZSgpIHtcbiAgICBsb2cocmVuZGVyKHRhc2tzKSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhcnQoKSB7XG4gICAgICBpZiAodGltZXIpXG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgICB0aW1lciA9IHNldEludGVydmFsKHVwZGF0ZSwgMjAwKVxuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9LFxuICAgIHVwZGF0ZShfdGFza3M6IFRhc2tbXSkge1xuICAgICAgdGFza3MgPSBfdGFza3NcbiAgICAgIHVwZGF0ZSgpXG4gICAgICByZXR1cm4gdGhpc1xuICAgIH0sXG4gICAgYXN5bmMgc3RvcCgpIHtcbiAgICAgIGlmICh0aW1lcikge1xuICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKVxuICAgICAgICB0aW1lciA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgbG9nLmNsZWFyKClcbiAgICAgIG9wdGlvbnMub3V0cHV0U3RyZWFtLndyaXRlKGAke3JlbmRlcih0YXNrcyl9XFxuYClcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfSxcbiAgICBjbGVhcigpIHtcbiAgICAgIGxvZy5jbGVhcigpXG4gICAgfSxcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBVc2VyQ29uc29sZUxvZyB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgQmFzZVJlcG9ydGVyIH0gZnJvbSAnLi9iYXNlJ1xuaW1wb3J0IHsgY3JlYXRlRG90UmVuZGVyZXIgfSBmcm9tICcuL3JlbmRlcmVycy9kb3RSZW5kZXJlcidcbmltcG9ydCB0eXBlIHsgY3JlYXRlTGlzdFJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlcnMvbGlzdFJlbmRlcmVyJ1xuXG5leHBvcnQgY2xhc3MgRG90UmVwb3J0ZXIgZXh0ZW5kcyBCYXNlUmVwb3J0ZXIge1xuICByZW5kZXJlcj86IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUxpc3RSZW5kZXJlcj5cblxuICBvbkNvbGxlY3RlZCgpIHtcbiAgICBpZiAodGhpcy5pc1RUWSkge1xuICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmN0eC5zdGF0ZS5nZXRGaWxlcyh0aGlzLndhdGNoRmlsdGVycylcbiAgICAgIGlmICghdGhpcy5yZW5kZXJlcilcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IGNyZWF0ZURvdFJlbmRlcmVyKGZpbGVzLCB7IG91dHB1dFN0cmVhbTogdGhpcy5jdHgub3V0cHV0U3RyZWFtIH0pLnN0YXJ0KClcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5yZW5kZXJlci51cGRhdGUoZmlsZXMpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25GaW5pc2hlZChmaWxlcyA9IHRoaXMuY3R4LnN0YXRlLmdldEZpbGVzKCkpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BMaXN0UmVuZGVyKClcbiAgICB0aGlzLmN0eC5sb2coKVxuICAgIGF3YWl0IHN1cGVyLm9uRmluaXNoZWQoZmlsZXMpXG4gIH1cblxuICBhc3luYyBvbldhdGNoZXJTdGFydCgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BMaXN0UmVuZGVyKClcbiAgICBzdXBlci5vbldhdGNoZXJTdGFydCgpXG4gIH1cblxuICBhc3luYyBzdG9wTGlzdFJlbmRlcigpIHtcbiAgICB0aGlzLnJlbmRlcmVyPy5zdG9wKClcbiAgICB0aGlzLnJlbmRlcmVyID0gdW5kZWZpbmVkXG4gICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwKSlcbiAgfVxuXG4gIGFzeW5jIG9uV2F0Y2hlclJlcnVuKGZpbGVzOiBzdHJpbmdbXSwgdHJpZ2dlcj86IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuc3RvcExpc3RSZW5kZXIoKVxuICAgIGF3YWl0IHN1cGVyLm9uV2F0Y2hlclJlcnVuKGZpbGVzLCB0cmlnZ2VyKVxuICB9XG5cbiAgb25Vc2VyQ29uc29sZUxvZyhsb2c6IFVzZXJDb25zb2xlTG9nKSB7XG4gICAgdGhpcy5yZW5kZXJlcj8uY2xlYXIoKVxuICAgIHN1cGVyLm9uVXNlckNvbnNvbGVMb2cobG9nKVxuICB9XG59XG4iLCJpbXBvcnQgeyBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBWaXRlc3QgfSBmcm9tICcuLi8uLi9ub2RlJ1xuaW1wb3J0IHR5cGUgeyBGaWxlLCBSZXBvcnRlciB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0U3VpdGVzLCBnZXRUZXN0cyB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuXG4vLyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB0aGUgcmVwb3J0ZXIgcHJvZHVjZXMgYSBKU09OIHNpbWlsYXIgdG8gdGhlIG9uZSBwcm9kdWNlZCBieSB0aGUgSmVzdCBKU09OIHJlcG9ydGVyXG4vLyB0aGUgZm9sbG93aW5nIHR5cGVzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgSmVzdCByZXBvc2l0b3J5IChhbmQgc2ltcGxpZmllZClcbmludGVyZmFjZSBUZXN0UmVzdWx0IHtcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmdcbiAgZmFpbHVyZU1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsXG4gIHNraXBwZWQ6IGJvb2xlYW5cbiAgc3RhdHVzPzogc3RyaW5nXG4gIHRlc3RGaWxlUGF0aD86IHN0cmluZ1xufVxuaW50ZXJmYWNlIEFnZ3JlZ2F0ZWRSZXN1bHQge1xuICBudW1GYWlsZWRUZXN0czogbnVtYmVyXG4gIG51bUZhaWxlZFRlc3RTdWl0ZXM6IG51bWJlclxuICBudW1QYXNzZWRUZXN0czogbnVtYmVyXG4gIG51bVBhc3NlZFRlc3RTdWl0ZXM6IG51bWJlclxuICBudW1QZW5kaW5nVGVzdHM6IG51bWJlclxuICBudW1Ub2RvVGVzdHM6IG51bWJlclxuICBudW1QZW5kaW5nVGVzdFN1aXRlczogbnVtYmVyXG4gIG51bVRvdGFsVGVzdHM6IG51bWJlclxuICBudW1Ub3RhbFRlc3RTdWl0ZXM6IG51bWJlclxuICBzdGFydFRpbWU6IG51bWJlclxuICBzdWNjZXNzOiBib29sZWFuXG4gIHRlc3RSZXN1bHRzOiBBcnJheTxUZXN0UmVzdWx0PlxufVxuXG5leHBvcnQgY2xhc3MgSnNvblJlcG9ydGVyIGltcGxlbWVudHMgUmVwb3J0ZXIge1xuICBzdGFydCA9IDBcbiAgY3R4ITogVml0ZXN0XG5cbiAgb25Jbml0KGN0eDogVml0ZXN0KTogdm9pZCB7XG4gICAgdGhpcy5jdHggPSBjdHhcbiAgICB0aGlzLnN0YXJ0ID0gRGF0ZS5ub3coKVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGxvZ1Rhc2tzKGZpbGVzOiBGaWxlW10pIHtcbiAgICBjb25zdCBzdWl0ZXMgPSBnZXRTdWl0ZXMoZmlsZXMpXG4gICAgY29uc3QgbnVtVG90YWxUZXN0U3VpdGVzID0gc3VpdGVzLmxlbmd0aFxuICAgIGNvbnN0IHRlc3RzID0gZ2V0VGVzdHMoZmlsZXMpXG4gICAgY29uc3QgbnVtVG90YWxUZXN0cyA9IHRlc3RzLmxlbmd0aFxuXG4gICAgY29uc3QgbnVtRmFpbGVkVGVzdFN1aXRlcyA9IHN1aXRlcy5maWx0ZXIocyA9PiBzLnJlc3VsdD8uZXJyb3IpLmxlbmd0aFxuICAgIGNvbnN0IG51bVBhc3NlZFRlc3RTdWl0ZXMgPSBudW1Ub3RhbFRlc3RTdWl0ZXMgLSBudW1GYWlsZWRUZXN0U3VpdGVzXG4gICAgY29uc3QgbnVtUGVuZGluZ1Rlc3RTdWl0ZXMgPSBzdWl0ZXMuZmlsdGVyKHMgPT4gcy5yZXN1bHQ/LnN0YXRlID09PSAncnVuJykubGVuZ3RoXG4gICAgY29uc3QgbnVtRmFpbGVkVGVzdHMgPSB0ZXN0cy5maWx0ZXIodCA9PiB0LnJlc3VsdD8uc3RhdGUgPT09ICdmYWlsJykubGVuZ3RoXG4gICAgY29uc3QgbnVtUGFzc2VkVGVzdHMgPSBudW1Ub3RhbFRlc3RzIC0gbnVtRmFpbGVkVGVzdHNcbiAgICBjb25zdCBudW1QZW5kaW5nVGVzdHMgPSB0ZXN0cy5maWx0ZXIodCA9PiB0LnJlc3VsdD8uc3RhdGUgPT09ICdydW4nKS5sZW5ndGhcbiAgICBjb25zdCBudW1Ub2RvVGVzdHMgPSB0ZXN0cy5maWx0ZXIodCA9PiB0Lm1vZGUgPT09ICd0b2RvJykubGVuZ3RoXG5cbiAgICBjb25zdCBzdWNjZXNzID0gbnVtRmFpbGVkVGVzdFN1aXRlcyA9PT0gMCAmJiBudW1GYWlsZWRUZXN0cyA9PT0gMFxuXG4gICAgY29uc3QgdGVzdFJlc3VsdHM6IEFycmF5PFRlc3RSZXN1bHQ+ID0gdGVzdHMubWFwKHQgPT4gKHtcbiAgICAgIGRpc3BsYXlOYW1lOiB0Lm5hbWUsXG4gICAgICBmYWlsdXJlTWVzc2FnZTogdC5yZXN1bHQ/LmVycm9yPy5tZXNzYWdlLFxuICAgICAgc2tpcHBlZDogdC5yZXN1bHQ/LnN0YXRlID09PSAnc2tpcCcsXG4gICAgICBzdGF0dXM6IHQucmVzdWx0Py5zdGF0ZSxcbiAgICAgIHRlc3RGaWxlUGF0aDogdC5maWxlPy5maWxlcGF0aCxcbiAgICB9KSlcblxuICAgIGNvbnN0IHJlc3VsdDogQWdncmVnYXRlZFJlc3VsdCA9IHsgbnVtVG90YWxUZXN0U3VpdGVzLCBudW1QYXNzZWRUZXN0U3VpdGVzLCBudW1GYWlsZWRUZXN0U3VpdGVzLCBudW1QZW5kaW5nVGVzdFN1aXRlcywgbnVtVG90YWxUZXN0cywgbnVtUGFzc2VkVGVzdHMsIG51bUZhaWxlZFRlc3RzLCBudW1QZW5kaW5nVGVzdHMsIG51bVRvZG9UZXN0cywgc3RhcnRUaW1lOiB0aGlzLnN0YXJ0LCBzdWNjZXNzLCB0ZXN0UmVzdWx0cyB9XG5cbiAgICBhd2FpdCB0aGlzLndyaXRlUmVwb3J0KEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikpXG4gIH1cblxuICBhc3luYyBvbkZpbmlzaGVkKGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKSkge1xuICAgIGF3YWl0IHRoaXMubG9nVGFza3MoZmlsZXMpXG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIHRoZSByZXBvcnQgdG8gYW4gb3V0cHV0IGZpbGUgaWYgc3BlY2lmaWVkIGluIHRoZSBjb25maWcsXG4gICAqIG9yIGxvZ3MgaXQgdG8gdGhlIGNvbnNvbGUgb3RoZXJ3aXNlLlxuICAgKiBAcGFyYW0gcmVwb3J0XG4gICAqL1xuICBhc3luYyB3cml0ZVJlcG9ydChyZXBvcnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmN0eC5jb25maWcub3V0cHV0RmlsZSkge1xuICAgICAgY29uc3QgcmVwb3J0RmlsZSA9IHJlc29sdmUodGhpcy5jdHguY29uZmlnLnJvb3QsIHRoaXMuY3R4LmNvbmZpZy5vdXRwdXRGaWxlKVxuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHJlcG9ydEZpbGUsIHJlcG9ydCwgJ3V0Zi04JylcbiAgICAgIHRoaXMuY3R4LmxvZyhgSlNPTiByZXBvcnQgd3JpdHRlbiB0byAke3JlcG9ydEZpbGV9YClcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmN0eC5sb2cocmVwb3J0KVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgRGVmYXVsdFJlcG9ydGVyIH0gZnJvbSAnLi9kZWZhdWx0J1xuXG5leHBvcnQgY2xhc3MgVmVyYm9zZVJlcG9ydGVyIGV4dGVuZHMgRGVmYXVsdFJlcG9ydGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMucmVuZGVyZXJPcHRpb25zLnJlbmRlclN1Y2NlZWQgPSB0cnVlXG4gIH1cbn1cbiIsImV4cG9ydCBjbGFzcyBJbmRlbnRlZExvZ2dlcjxUID0gYW55PiB7XG4gIHByaXZhdGUgY3VycmVudEluZGVudCA9ICcnXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYXNlTG9nOiAodGV4dDogc3RyaW5nKSA9PiBUKSB7XG4gIH1cblxuICBpbmRlbnQoKSB7XG4gICAgdGhpcy5jdXJyZW50SW5kZW50ICs9ICcgICAgJ1xuICB9XG5cbiAgdW5pbmRlbnQoKSB7XG4gICAgdGhpcy5jdXJyZW50SW5kZW50ID0gdGhpcy5jdXJyZW50SW5kZW50LnN1YnN0cmluZygwLCB0aGlzLmN1cnJlbnRJbmRlbnQubGVuZ3RoIC0gNClcbiAgfVxuXG4gIGxvZyh0ZXh0OiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlTG9nKHRoaXMuY3VycmVudEluZGVudCArIHRleHQpXG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgVml0ZXN0IH0gZnJvbSAnLi4vLi4vbm9kZSdcbmltcG9ydCB0eXBlIHsgUGFyc2VkU3RhY2ssIFJlcG9ydGVyLCBUYXNrIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVN0YWNrdHJhY2UgfSBmcm9tICcuLi8uLi91dGlscy9zb3VyY2UtbWFwJ1xuaW1wb3J0IHsgSW5kZW50ZWRMb2dnZXIgfSBmcm9tICcuL3V0aWxzL2luZGVudGVkLWxvZ2dlcidcblxuZnVuY3Rpb24geWFtbFN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgXCIke3N0ci5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJyl9XCJgXG59XG5cbmZ1bmN0aW9uIHRhcFN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFRlc3QgbmFtZSBjYW5ub3QgY29udGFpbiAjXG4gIC8vIFRlc3QgbmFtZSBjYW5ub3Qgc3RhcnQgd2l0aCBudW1iZXJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8jL2csICc/JykucmVwbGFjZSgvXlswLTldKy8sICc/Jylcbn1cblxuZXhwb3J0IGNsYXNzIFRhcFJlcG9ydGVyIGltcGxlbWVudHMgUmVwb3J0ZXIge1xuICBwcm90ZWN0ZWQgY3R4ITogVml0ZXN0XG4gIHByaXZhdGUgbG9nZ2VyITogSW5kZW50ZWRMb2dnZXJcblxuICBvbkluaXQoY3R4OiBWaXRlc3QpOiB2b2lkIHtcbiAgICB0aGlzLmN0eCA9IGN0eFxuICAgIHRoaXMubG9nZ2VyID0gbmV3IEluZGVudGVkTG9nZ2VyKHRoaXMuY3R4LmxvZy5iaW5kKHRoaXMuY3R4KSlcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb21tZW50KHRhc2s6IFRhc2spOiBzdHJpbmcge1xuICAgIGlmICh0YXNrLm1vZGUgPT09ICdza2lwJylcbiAgICAgIHJldHVybiAnICMgU0tJUCdcbiAgICBlbHNlIGlmICh0YXNrLm1vZGUgPT09ICd0b2RvJylcbiAgICAgIHJldHVybiAnICMgVE9ETydcbiAgICBlbHNlIGlmICh0YXNrLnJlc3VsdD8uZHVyYXRpb24gIT0gbnVsbClcbiAgICAgIHJldHVybiBgICMgdGltZT0ke3Rhc2sucmVzdWx0LmR1cmF0aW9uLnRvRml4ZWQoMil9bXNgXG4gICAgZWxzZVxuICAgICAgcmV0dXJuICcnXG4gIH1cblxuICBwcml2YXRlIGxvZ0Vycm9yRGV0YWlscyhlcnJvcjogRXJyb3IsIHN0YWNrPzogUGFyc2VkU3RhY2spIHtcbiAgICB0aGlzLmxvZ2dlci5sb2coYG5hbWU6ICR7eWFtbFN0cmluZyhlcnJvci5uYW1lKX1gKVxuICAgIHRoaXMubG9nZ2VyLmxvZyhgbWVzc2FnZTogJHt5YW1sU3RyaW5nKGVycm9yLm1lc3NhZ2UpfWApXG5cbiAgICBpZiAoc3RhY2spIHtcbiAgICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggdGFwLW1vY2hhLXJlcG90ZXJcbiAgICAgIHRoaXMubG9nZ2VyLmxvZyhgc3RhY2s6ICR7eWFtbFN0cmluZyhgJHtzdGFjay5maWxlfToke3N0YWNrLmxpbmV9OiR7c3RhY2suY29sdW1ufWApfWApXG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGxvZ1Rhc2tzKHRhc2tzOiBUYXNrW10pIHtcbiAgICB0aGlzLmxvZ2dlci5sb2coYDEuLiR7dGFza3MubGVuZ3RofWApXG5cbiAgICBmb3IgKGNvbnN0IFtpLCB0YXNrXSBvZiB0YXNrcy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IGlkID0gaSArIDFcblxuICAgICAgY29uc3Qgb2sgPSB0YXNrLnJlc3VsdD8uc3RhdGUgPT09ICdwYXNzJyB8fCB0YXNrLm1vZGUgPT09ICdza2lwJyB8fCB0YXNrLm1vZGUgPT09ICd0b2RvJyA/ICdvaycgOiAnbm90IG9rJ1xuXG4gICAgICBjb25zdCBjb21tZW50ID0gVGFwUmVwb3J0ZXIuZ2V0Q29tbWVudCh0YXNrKVxuXG4gICAgICBpZiAodGFzay50eXBlID09PSAnc3VpdGUnICYmIHRhc2sudGFza3MubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYCR7b2t9ICR7aWR9IC0gJHt0YXBTdHJpbmcodGFzay5uYW1lKX0ke2NvbW1lbnR9IHtgKVxuXG4gICAgICAgIHRoaXMubG9nZ2VyLmluZGVudCgpXG4gICAgICAgIHRoaXMubG9nVGFza3ModGFzay50YXNrcylcbiAgICAgICAgdGhpcy5sb2dnZXIudW5pbmRlbnQoKVxuXG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZygnfScpXG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dnZXIubG9nKGAke29rfSAke2lkfSAtICR7dGFwU3RyaW5nKHRhc2submFtZSl9JHtjb21tZW50fWApXG5cbiAgICAgICAgaWYgKHRhc2sucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnICYmIHRhc2sucmVzdWx0LmVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5kZW50KClcblxuICAgICAgICAgIGNvbnN0IGVycm9yID0gdGFzay5yZXN1bHQuZXJyb3JcbiAgICAgICAgICBjb25zdCBzdGFja3MgPSBwYXJzZVN0YWNrdHJhY2UoZXJyb3IpXG4gICAgICAgICAgY29uc3Qgc3RhY2sgPSBzdGFja3NbMF1cblxuICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZygnLS0tJylcbiAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coJ2Vycm9yOicpXG5cbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmRlbnQoKVxuICAgICAgICAgIHRoaXMubG9nRXJyb3JEZXRhaWxzKGVycm9yKVxuICAgICAgICAgIHRoaXMubG9nZ2VyLnVuaW5kZW50KClcblxuICAgICAgICAgIGlmIChzdGFjaylcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgYXQ6ICR7eWFtbFN0cmluZyhgJHtzdGFjay5maWxlfToke3N0YWNrLmxpbmV9OiR7c3RhY2suY29sdW1ufWApfWApXG5cbiAgICAgICAgICBpZiAoZXJyb3Iuc2hvd0RpZmYpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhgYWN0dWFsOiAke3lhbWxTdHJpbmcoZXJyb3IuYWN0dWFsKX1gKVxuICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBleHBlY3RlZDogJHt5YW1sU3RyaW5nKGVycm9yLmV4cGVjdGVkKX1gKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZygnLi4uJylcbiAgICAgICAgICB0aGlzLmxvZ2dlci51bmluZGVudCgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBvbkZpbmlzaGVkKGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKSkge1xuICAgIHRoaXMubG9nZ2VyLmxvZygnVEFQIHZlcnNpb24gMTMnKVxuXG4gICAgdGhpcy5sb2dUYXNrcyhmaWxlcylcbiAgfVxufVxuIiwiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcydcbmltcG9ydCB7IGhvc3RuYW1lIH0gZnJvbSAnb3MnXG5pbXBvcnQgeyByZWxhdGl2ZSwgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuXG5pbXBvcnQgdHlwZSB7IFZpdGVzdCB9IGZyb20gJy4uLy4uL25vZGUnXG5pbXBvcnQgdHlwZSB7IEVycm9yV2l0aERpZmYsIFJlcG9ydGVyLCBUYXNrIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVN0YWNrdHJhY2UgfSBmcm9tICcuLi8uLi91dGlscy9zb3VyY2UtbWFwJ1xuaW1wb3J0IHsgRl9QT0lOVEVSIH0gZnJvbSAnLi9yZW5kZXJlcnMvZmlndXJlcydcbmltcG9ydCB7IEluZGVudGVkTG9nZ2VyIH0gZnJvbSAnLi91dGlscy9pbmRlbnRlZC1sb2dnZXInXG5cbmZ1bmN0aW9uIGZsYXR0ZW5UYXNrcyh0YXNrOiBUYXNrLCBiYXNlTmFtZSA9ICcnKTogVGFza1tdIHtcbiAgY29uc3QgYmFzZSA9IGJhc2VOYW1lID8gYCR7YmFzZU5hbWV9ID4gYCA6ICcnXG5cbiAgaWYgKHRhc2sudHlwZSA9PT0gJ3N1aXRlJykge1xuICAgIHJldHVybiB0YXNrLnRhc2tzLmZsYXRNYXAoY2hpbGQgPT4gZmxhdHRlblRhc2tzKGNoaWxkLCBgJHtiYXNlfSR7dGFzay5uYW1lfWApKVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiBbe1xuICAgICAgLi4udGFzayxcbiAgICAgIG5hbWU6IGAke2Jhc2V9JHt0YXNrLm5hbWV9YCxcbiAgICB9XVxuICB9XG59XG5cbmZ1bmN0aW9uIGVzY2FwZVhNTCh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcbiAgICAucmVwbGFjZSgvJy9nLCAnJmFwb3M7JylcbiAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxufVxuXG5mdW5jdGlvbiBnZXREdXJhdGlvbih0YXNrOiBUYXNrKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHRhc2sucmVzdWx0Py5kdXJhdGlvbiA/ICh0YXNrLnJlc3VsdC5kdXJhdGlvbiAvIDEwMDApLnRvRml4ZWQoMTApIDogdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjbGFzcyBKVW5pdFJlcG9ydGVyIGltcGxlbWVudHMgUmVwb3J0ZXIge1xuICBwcml2YXRlIGN0eCE6IFZpdGVzdFxuICBwcml2YXRlIHJlcG9ydEZpbGU/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiYXNlTG9nITogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBwcml2YXRlIGxvZ2dlciE6IEluZGVudGVkTG9nZ2VyPFByb21pc2U8dm9pZD4+XG5cbiAgYXN5bmMgb25Jbml0KGN0eDogVml0ZXN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jdHggPSBjdHhcblxuICAgIGlmICh0aGlzLmN0eC5jb25maWcub3V0cHV0RmlsZSkge1xuICAgICAgdGhpcy5yZXBvcnRGaWxlID0gcmVzb2x2ZSh0aGlzLmN0eC5jb25maWcucm9vdCwgdGhpcy5jdHguY29uZmlnLm91dHB1dEZpbGUpXG4gICAgICBjb25zdCBmaWxlRmQgPSBhd2FpdCBmcy5vcGVuKHRoaXMucmVwb3J0RmlsZSwgJ3crJylcblxuICAgICAgdGhpcy5iYXNlTG9nID0gYXN5bmModGV4dDogc3RyaW5nKSA9PiBhd2FpdCBmcy53cml0ZUZpbGUoZmlsZUZkLCBgJHt0ZXh0fVxcbmApXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5iYXNlTG9nID0gYXN5bmModGV4dDogc3RyaW5nKSA9PiB0aGlzLmN0eC5sb2codGV4dClcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBJbmRlbnRlZExvZ2dlcih0aGlzLmJhc2VMb2cpXG4gIH1cblxuICBhc3luYyB3cml0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCBhdHRyczogUmVjb3JkPHN0cmluZywgYW55PiwgY2hpbGRyZW46ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgICBjb25zdCBwYWlycyA9IFtdXG4gICAgZm9yIChjb25zdCBrZXkgaW4gYXR0cnMpIHtcbiAgICAgIGNvbnN0IGF0dHIgPSBhdHRyc1trZXldXG4gICAgICBpZiAoYXR0ciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICBjb250aW51ZVxuXG4gICAgICBwYWlycy5wdXNoKGAke2tleX09XCIke2VzY2FwZVhNTChhdHRyKX1cImApXG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIubG9nKGA8JHtuYW1lfSR7cGFpcnMubGVuZ3RoID8gYCAke3BhaXJzLmpvaW4oJyAnKX1gIDogJyd9PmApXG4gICAgdGhpcy5sb2dnZXIuaW5kZW50KClcbiAgICBhd2FpdCBjaGlsZHJlbi5jYWxsKHRoaXMpXG4gICAgdGhpcy5sb2dnZXIudW5pbmRlbnQoKVxuXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIubG9nKGA8LyR7bmFtZX0+YClcbiAgfVxuXG4gIGFzeW5jIHdyaXRlRXJyb3JEZXRhaWxzKGVycm9yOiBFcnJvcldpdGhEaWZmKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZXJyb3JOYW1lID0gZXJyb3IubmFtZSA/PyBlcnJvci5uYW1lU3RyID8/ICdVbmtub3duIEVycm9yJ1xuICAgIGF3YWl0IHRoaXMuYmFzZUxvZyhgJHtlcnJvck5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YClcblxuICAgIGNvbnN0IHN0YWNrID0gcGFyc2VTdGFja3RyYWNlKGVycm9yKVxuXG4gICAgLy8gVE9ETzogVGhpcyBpcyBzYW1lIGFzIHByaW50U3RhY2sgYnV0IHdpdGhvdXQgY29sb3JzLiBGaW5kIGEgd2F5IHRvIHJldXNlIGNvZGUuXG4gICAgZm9yIChjb25zdCBmcmFtZSBvZiBzdGFjaykge1xuICAgICAgY29uc3QgcG9zID0gZnJhbWUuc291cmNlUG9zID8/IGZyYW1lXG4gICAgICBjb25zdCBwYXRoID0gcmVsYXRpdmUodGhpcy5jdHguY29uZmlnLnJvb3QsIGZyYW1lLmZpbGUpXG5cbiAgICAgIGF3YWl0IHRoaXMuYmFzZUxvZyhgICR7Rl9QT0lOVEVSfSAke1tmcmFtZS5tZXRob2QsIGAke3BhdGh9OiR7cG9zLmxpbmV9OiR7cG9zLmNvbHVtbn1gXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpfWApXG5cbiAgICAgIC8vIHJlYWNoZWQgYXQgdGVzdCBmaWxlLCBza2lwIHRoZSBmb2xsb3cgc3RhY2tcbiAgICAgIGlmIChmcmFtZS5maWxlIGluIHRoaXMuY3R4LnN0YXRlLmZpbGVzTWFwKVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHdyaXRlTG9ncyh0YXNrOiBUYXNrLCB0eXBlOiAnZXJyJyB8ICdvdXQnKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRhc2subG9ncyA9PSBudWxsIHx8IHRhc2subG9ncy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm5cblxuICAgIGNvbnN0IGxvZ1R5cGUgPSB0eXBlID09PSAnZXJyJyA/ICdzdGRlcnInIDogJ3N0ZG91dCdcbiAgICBjb25zdCBsb2dzID0gdGFzay5sb2dzLmZpbHRlcihsb2cgPT4gbG9nLnR5cGUgPT09IGxvZ1R5cGUpXG5cbiAgICBpZiAobG9ncy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm5cblxuICAgIGF3YWl0IHRoaXMud3JpdGVFbGVtZW50KGBzeXN0ZW0tJHt0eXBlfWAsIHt9LCBhc3luYygpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbG9nIG9mIGxvZ3MpXG4gICAgICAgIGF3YWl0IHRoaXMuYmFzZUxvZyhlc2NhcGVYTUwobG9nLmNvbnRlbnQpKVxuICAgIH0pXG4gIH1cblxuICBhc3luYyB3cml0ZVRhc2tzKHRhc2tzOiBUYXNrW10sIGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IHRhc2sgb2YgdGFza3MpIHtcbiAgICAgIGF3YWl0IHRoaXMud3JpdGVFbGVtZW50KCd0ZXN0Y2FzZScsIHtcbiAgICAgICAgY2xhc3NuYW1lOiBmaWxlbmFtZSxcbiAgICAgICAgbmFtZTogdGFzay5uYW1lLFxuICAgICAgICB0aW1lOiBnZXREdXJhdGlvbih0YXNrKSxcbiAgICAgIH0sIGFzeW5jKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLndyaXRlTG9ncyh0YXNrLCAnb3V0JylcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZUxvZ3ModGFzaywgJ2VycicpXG5cbiAgICAgICAgaWYgKHRhc2subW9kZSA9PT0gJ3NraXAnIHx8IHRhc2subW9kZSA9PT0gJ3RvZG8nKVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZygnPHNraXBwZWQvPicpXG5cbiAgICAgICAgaWYgKHRhc2sucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3IgPSB0YXNrLnJlc3VsdC5lcnJvclxuXG4gICAgICAgICAgYXdhaXQgdGhpcy53cml0ZUVsZW1lbnQoJ2ZhaWx1cmUnLCB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvcj8ubWVzc2FnZSxcbiAgICAgICAgICAgIHR5cGU6IGVycm9yPy5uYW1lID8/IGVycm9yPy5uYW1lU3RyLFxuICAgICAgICAgIH0sIGFzeW5jKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFlcnJvcilcbiAgICAgICAgICAgICAgcmV0dXJuXG5cbiAgICAgICAgICAgIGF3YWl0IHRoaXMud3JpdGVFcnJvckRldGFpbHMoZXJyb3IpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBhc3luYyBvbkZpbmlzaGVkKGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKSkge1xuICAgIGF3YWl0IHRoaXMubG9nZ2VyLmxvZygnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIiA/PicpXG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IGZpbGVzXG4gICAgICAubWFwKChmaWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhc2tzID0gZmlsZS50YXNrcy5mbGF0TWFwKHRhc2sgPT4gZmxhdHRlblRhc2tzKHRhc2spKVxuXG4gICAgICAgIGNvbnN0IHN0YXRzID0gdGFza3MucmVkdWNlKChzdGF0cywgdGFzaykgPT4ge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYXNzZWQ6IHN0YXRzLnBhc3NlZCArIE51bWJlcih0YXNrLnJlc3VsdD8uc3RhdGUgPT09ICdwYXNzJyksXG4gICAgICAgICAgICBmYWlsdXJlczogc3RhdHMuZmFpbHVyZXMgKyBOdW1iZXIodGFzay5yZXN1bHQ/LnN0YXRlID09PSAnZmFpbCcpLFxuICAgICAgICAgICAgc2tpcHBlZDogc3RhdHMuc2tpcHBlZCArIE51bWJlcih0YXNrLm1vZGUgPT09ICdza2lwJyB8fCB0YXNrLm1vZGUgPT09ICd0b2RvJyksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcGFzc2VkOiAwLFxuICAgICAgICAgIGZhaWx1cmVzOiAwLFxuICAgICAgICAgIHNraXBwZWQ6IDAsXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5maWxlLFxuICAgICAgICAgIHRhc2tzLFxuICAgICAgICAgIHN0YXRzLFxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgYXdhaXQgdGhpcy53cml0ZUVsZW1lbnQoJ3Rlc3RzdWl0ZXMnLCB7fSwgYXN5bmMoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgdHJhbnNmb3JtZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53cml0ZUVsZW1lbnQoJ3Rlc3RzdWl0ZScsIHtcbiAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgdGltZXN0YW1wOiAobmV3IERhdGUoKSkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBob3N0bmFtZTogaG9zdG5hbWUoKSxcbiAgICAgICAgICB0ZXN0czogZmlsZS50YXNrcy5sZW5ndGgsXG4gICAgICAgICAgZmFpbHVyZXM6IGZpbGUuc3RhdHMuZmFpbHVyZXMsXG4gICAgICAgICAgZXJyb3JzOiAwLCAvLyBBbiBlcnJvcmVkIHRlc3QgaXMgb25lIHRoYXQgaGFkIGFuIHVuYW50aWNpcGF0ZWQgcHJvYmxlbS4gV2UgY2Fubm90IGRldGVjdCB0aG9zZS5cbiAgICAgICAgICBza2lwcGVkOiBmaWxlLnN0YXRzLnNraXBwZWQsXG4gICAgICAgICAgdGltZTogZ2V0RHVyYXRpb24oZmlsZSksXG4gICAgICAgIH0sIGFzeW5jKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IHRoaXMud3JpdGVUYXNrcyhmaWxlLnRhc2tzLCBmaWxlLm5hbWUpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmICh0aGlzLnJlcG9ydEZpbGUpXG4gICAgICB0aGlzLmN0eC5sb2coYEpVTklUIHJlcG9ydCB3cml0dGVuIHRvICR7dGhpcy5yZXBvcnRGaWxlfWApXG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgVml0ZXN0IH0gZnJvbSAnLi4vLi4vbm9kZSdcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgVGFwUmVwb3J0ZXIgfSBmcm9tICcuL3RhcCdcblxuZnVuY3Rpb24gZmxhdHRlblRhc2tzKHRhc2s6IFRhc2ssIGJhc2VOYW1lID0gJycpOiBUYXNrW10ge1xuICBjb25zdCBiYXNlID0gYmFzZU5hbWUgPyBgJHtiYXNlTmFtZX0gPiBgIDogJydcblxuICBpZiAodGFzay50eXBlID09PSAnc3VpdGUnICYmIHRhc2sudGFza3MubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB0YXNrLnRhc2tzLmZsYXRNYXAoY2hpbGQgPT4gZmxhdHRlblRhc2tzKGNoaWxkLCBgJHtiYXNlfSR7dGFzay5uYW1lfWApKVxuICB9XG4gIGVsc2Uge1xuICAgIHJldHVybiBbe1xuICAgICAgLi4udGFzayxcbiAgICAgIG5hbWU6IGAke2Jhc2V9JHt0YXNrLm5hbWV9YCxcbiAgICB9XVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYXBGbGF0UmVwb3J0ZXIgZXh0ZW5kcyBUYXBSZXBvcnRlciB7XG4gIG9uSW5pdChjdHg6IFZpdGVzdCk6IHZvaWQge1xuICAgIHN1cGVyLm9uSW5pdChjdHgpXG4gIH1cblxuICBhc3luYyBvbkZpbmlzaGVkKGZpbGVzID0gdGhpcy5jdHguc3RhdGUuZ2V0RmlsZXMoKSkge1xuICAgIHRoaXMuY3R4LmxvZygnVEFQIHZlcnNpb24gMTMnKVxuXG4gICAgY29uc3QgZmxhdFRhc2tzID0gZmlsZXMuZmxhdE1hcCh0YXNrID0+IGZsYXR0ZW5UYXNrcyh0YXNrKSlcblxuICAgIHRoaXMubG9nVGFza3MoZmxhdFRhc2tzKVxuICB9XG59XG4iLCJpbXBvcnQgeyBEZWZhdWx0UmVwb3J0ZXIgfSBmcm9tICcuL2RlZmF1bHQnXG5pbXBvcnQgeyBEb3RSZXBvcnRlciB9IGZyb20gJy4vZG90J1xuaW1wb3J0IHsgSnNvblJlcG9ydGVyIH0gZnJvbSAnLi9qc29uJ1xuaW1wb3J0IHsgVmVyYm9zZVJlcG9ydGVyIH0gZnJvbSAnLi92ZXJib3NlJ1xuaW1wb3J0IHsgVGFwUmVwb3J0ZXIgfSBmcm9tICcuL3RhcCdcbmltcG9ydCB7IEpVbml0UmVwb3J0ZXIgfSBmcm9tICcuL2p1bml0J1xuaW1wb3J0IHsgVGFwRmxhdFJlcG9ydGVyIH0gZnJvbSAnLi90YXAtZmxhdCdcblxuZXhwb3J0IHsgRGVmYXVsdFJlcG9ydGVyIH1cblxuZXhwb3J0IGNvbnN0IFJlcG9ydGVyc01hcCA9IHtcbiAgJ2RlZmF1bHQnOiBEZWZhdWx0UmVwb3J0ZXIsXG4gICd2ZXJib3NlJzogVmVyYm9zZVJlcG9ydGVyLFxuICAnZG90JzogRG90UmVwb3J0ZXIsXG4gICdqc29uJzogSnNvblJlcG9ydGVyLFxuICAndGFwJzogVGFwUmVwb3J0ZXIsXG4gICd0YXAtZmxhdCc6IFRhcEZsYXRSZXBvcnRlcixcbiAgJ2p1bml0JzogSlVuaXRSZXBvcnRlcixcbn1cblxuZXhwb3J0IHR5cGUgQnVpbHRpblJlcG9ydGVycyA9IGtleW9mIHR5cGVvZiBSZXBvcnRlcnNNYXBcbiIsImltcG9ydCB7IE1lc3NhZ2VDaGFubmVsIH0gZnJvbSAnd29ya2VyX3RocmVhZHMnXG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSAndXJsJ1xuaW1wb3J0IHsgY3B1cyB9IGZyb20gJ29zJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFRpbnlwb29sT3B0aW9ucyB9IGZyb20gJ3Rpbnlwb29sJ1xuaW1wb3J0IHsgVGlueXBvb2wgfSBmcm9tICd0aW55cG9vbCdcbmltcG9ydCB7IGNyZWF0ZUJpcnBjIH0gZnJvbSAnYmlycGMnXG5pbXBvcnQgdHlwZSB7IFJhd1NvdXJjZU1hcCB9IGZyb20gJ3ZpdGUtbm9kZSdcbmltcG9ydCB0eXBlIHsgV29ya2VyQ29udGV4dCwgV29ya2VyUlBDIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBkaXN0RGlyIH0gZnJvbSAnLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBWaXRlc3QgfSBmcm9tICcuL2NvcmUnXG5cbmV4cG9ydCB0eXBlIFJ1bldpdGhGaWxlcyA9IChmaWxlczogc3RyaW5nW10sIGludmFsaWRhdGVzPzogc3RyaW5nW10pID0+IFByb21pc2U8dm9pZD5cblxuZXhwb3J0IGludGVyZmFjZSBXb3JrZXJQb29sIHtcbiAgcnVuVGVzdHM6IFJ1bldpdGhGaWxlc1xuICBjb2xsZWN0VGVzdHM6IFJ1bldpdGhGaWxlc1xuICBjbG9zZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9vbChjdHg6IFZpdGVzdCk6IFdvcmtlclBvb2wge1xuICBpZiAoY3R4LmNvbmZpZy50aHJlYWRzKVxuICAgIHJldHVybiBjcmVhdGVXb3JrZXJQb29sKGN0eClcbiAgZWxzZVxuICAgIHJldHVybiBjcmVhdGVGYWtlUG9vbChjdHgpXG59XG5cbmNvbnN0IHdvcmtlclBhdGggPSBwYXRoVG9GaWxlVVJMKHJlc29sdmUoZGlzdERpciwgJy4vd29ya2VyLmpzJykpLmhyZWZcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZha2VQb29sKGN0eDogVml0ZXN0KTogV29ya2VyUG9vbCB7XG4gIGNvbnN0IHJ1bldpdGhGaWxlcyA9IChuYW1lOiAncnVuJyB8ICdjb2xsZWN0Jyk6IFJ1bldpdGhGaWxlcyA9PiB7XG4gICAgcmV0dXJuIGFzeW5jKGZpbGVzLCBpbnZhbGlkYXRlcykgPT4ge1xuICAgICAgY29uc3Qgd29ya2VyID0gYXdhaXQgaW1wb3J0KHdvcmtlclBhdGgpXG5cbiAgICAgIGNvbnN0IHsgd29ya2VyUG9ydCwgcG9ydCB9ID0gY3JlYXRlQ2hhbm5lbChjdHgpXG5cbiAgICAgIGNvbnN0IGRhdGE6IFdvcmtlckNvbnRleHQgPSB7XG4gICAgICAgIHBvcnQ6IHdvcmtlclBvcnQsXG4gICAgICAgIGNvbmZpZzogY3R4LmdldENvbmZpZygpLFxuICAgICAgICBmaWxlcyxcbiAgICAgICAgaW52YWxpZGF0ZXMsXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHdvcmtlcltuYW1lXShkYXRhLCB7IHRyYW5zZmVyTGlzdDogW3dvcmtlclBvcnRdIH0pXG5cbiAgICAgIHBvcnQuY2xvc2UoKVxuICAgICAgd29ya2VyUG9ydC5jbG9zZSgpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBydW5UZXN0czogcnVuV2l0aEZpbGVzKCdydW4nKSxcbiAgICBjb2xsZWN0VGVzdHM6IHJ1bldpdGhGaWxlcygnY29sbGVjdCcpLFxuICAgIGNsb3NlOiBhc3luYygpID0+IHt9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXb3JrZXJQb29sKGN0eDogVml0ZXN0KTogV29ya2VyUG9vbCB7XG4gIGNvbnN0IHRocmVhZHNDb3VudCA9IGN0eC5jb25maWcud2F0Y2hcbiAgICA/IE1hdGgubWF4KGNwdXMoKS5sZW5ndGggLyAyLCAxKVxuICAgIDogTWF0aC5tYXgoY3B1cygpLmxlbmd0aCAtIDEsIDEpXG5cbiAgY29uc3Qgb3B0aW9uczogVGlueXBvb2xPcHRpb25zID0ge1xuICAgIGZpbGVuYW1lOiB3b3JrZXJQYXRoLFxuICAgIC8vIERpc2FibGUgdGhpcyBmb3Igbm93LCBmb3IgV2ViQ29udGFpbmVyIGNhcGFiaWxpdHlcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdml0ZXN0LWRldi92aXRlc3QvaXNzdWVzLzkzXG4gICAgLy8gSW4gZnV0dXJlIHdlIGNvdWxkIGNvbmRpdGlvbmFsbHkgZW5hYmxlIGl0IGJhc2VkIG9uIHRoZSBlbnZcbiAgICB1c2VBdG9taWNzOiBmYWxzZSxcblxuICAgIG1heFRocmVhZHM6IGN0eC5jb25maWcubWF4VGhyZWFkcyA/PyB0aHJlYWRzQ291bnQsXG4gICAgbWluVGhyZWFkczogY3R4LmNvbmZpZy5taW5UaHJlYWRzID8/IHRocmVhZHNDb3VudCxcbiAgfVxuICBpZiAoY3R4LmNvbmZpZy5pc29sYXRlKSB7XG4gICAgb3B0aW9ucy5pc29sYXRlV29ya2VycyA9IHRydWVcbiAgICBvcHRpb25zLmNvbmN1cnJlbnRUYXNrc1BlcldvcmtlciA9IDFcbiAgfVxuXG4gIGNvbnN0IHBvb2wgPSBuZXcgVGlueXBvb2wob3B0aW9ucylcblxuICBjb25zdCBydW5XaXRoRmlsZXMgPSAobmFtZTogc3RyaW5nKTogUnVuV2l0aEZpbGVzID0+IHtcbiAgICByZXR1cm4gYXN5bmMoZmlsZXMsIGludmFsaWRhdGVzKSA9PiB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoYXN5bmMoZmlsZSkgPT4ge1xuICAgICAgICBjb25zdCB7IHdvcmtlclBvcnQsIHBvcnQgfSA9IGNyZWF0ZUNoYW5uZWwoY3R4KVxuXG4gICAgICAgIGNvbnN0IGRhdGE6IFdvcmtlckNvbnRleHQgPSB7XG4gICAgICAgICAgcG9ydDogd29ya2VyUG9ydCxcbiAgICAgICAgICBjb25maWc6IGN0eC5nZXRDb25maWcoKSxcbiAgICAgICAgICBmaWxlczogW2ZpbGVdLFxuICAgICAgICAgIGludmFsaWRhdGVzLFxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgcG9vbC5ydW4oZGF0YSwgeyB0cmFuc2Zlckxpc3Q6IFt3b3JrZXJQb3J0XSwgbmFtZSB9KVxuICAgICAgICBwb3J0LmNsb3NlKClcbiAgICAgICAgd29ya2VyUG9ydC5jbG9zZSgpXG4gICAgICB9KSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHJ1blRlc3RzOiBydW5XaXRoRmlsZXMoJ3J1bicpLFxuICAgIGNvbGxlY3RUZXN0czogcnVuV2l0aEZpbGVzKCdjb2xsZWN0JyksXG4gICAgY2xvc2U6IGFzeW5jKCkgPT4ge30sIC8vIFRPRE86IG5vdCBzdXJlIHdoeSB0aGlzIHdpbGwgY2F1c2UgTm9kZSBjcmFzaDogcG9vbC5kZXN0cm95KCksXG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2hhbm5lbChjdHg6IFZpdGVzdCkge1xuICBjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKClcbiAgY29uc3QgcG9ydCA9IGNoYW5uZWwucG9ydDJcbiAgY29uc3Qgd29ya2VyUG9ydCA9IGNoYW5uZWwucG9ydDFcblxuICBjcmVhdGVCaXJwYzx7fSwgV29ya2VyUlBDPihcbiAgICB7XG4gICAgICBvbldvcmtlckV4aXQoY29kZSkge1xuICAgICAgICBwcm9jZXNzLmV4aXQoY29kZSB8fCAxKVxuICAgICAgfSxcbiAgICAgIHNuYXBzaG90U2F2ZWQoc25hcHNob3QpIHtcbiAgICAgICAgY3R4LnNuYXBzaG90LmFkZChzbmFwc2hvdClcbiAgICAgIH0sXG4gICAgICBhc3luYyBnZXRTb3VyY2VNYXAoaWQsIGZvcmNlKSB7XG4gICAgICAgIGlmIChmb3JjZSkge1xuICAgICAgICAgIGNvbnN0IG1vZCA9IGN0eC5zZXJ2ZXIubW9kdWxlR3JhcGguZ2V0TW9kdWxlQnlJZChpZClcbiAgICAgICAgICBpZiAobW9kKVxuICAgICAgICAgICAgY3R4LnNlcnZlci5tb2R1bGVHcmFwaC5pbnZhbGlkYXRlTW9kdWxlKG1vZClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByID0gYXdhaXQgY3R4LnZpdGVub2RlLnRyYW5zZm9ybVJlcXVlc3QoaWQpXG4gICAgICAgIHJldHVybiByPy5tYXAgYXMgUmF3U291cmNlTWFwIHwgdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgZmV0Y2goaWQpIHtcbiAgICAgICAgcmV0dXJuIGN0eC52aXRlbm9kZS5mZXRjaE1vZHVsZShpZClcbiAgICAgIH0sXG4gICAgICByZXNvbHZlSWQoaWQsIGltcG9ydGVyKSB7XG4gICAgICAgIHJldHVybiBjdHgudml0ZW5vZGUucmVzb2x2ZUlkKGlkLCBpbXBvcnRlcilcbiAgICAgIH0sXG4gICAgICBvbkNvbGxlY3RlZChmaWxlcykge1xuICAgICAgICBjdHguc3RhdGUuY29sbGVjdEZpbGVzKGZpbGVzKVxuICAgICAgICBjdHgucmVwb3J0KCdvbkNvbGxlY3RlZCcsIGZpbGVzKVxuICAgICAgfSxcbiAgICAgIG9uVGFza1VwZGF0ZShwYWNrcykge1xuICAgICAgICBjdHguc3RhdGUudXBkYXRlVGFza3MocGFja3MpXG4gICAgICAgIGN0eC5yZXBvcnQoJ29uVGFza1VwZGF0ZScsIHBhY2tzKVxuICAgICAgfSxcbiAgICAgIG9uVXNlckNvbnNvbGVMb2cobG9nKSB7XG4gICAgICAgIGN0eC5zdGF0ZS51cGRhdGVVc2VyTG9nKGxvZylcbiAgICAgICAgY3R4LnJlcG9ydCgnb25Vc2VyQ29uc29sZUxvZycsIGxvZylcbiAgICAgIH0sXG4gICAgICBvbkZpbmlzaGVkKGZpbGVzKSB7XG4gICAgICAgIGN0eC5yZXBvcnQoJ29uRmluaXNoZWQnLCBmaWxlcylcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwb3N0KHYpIHtcbiAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh2KVxuICAgICAgfSxcbiAgICAgIG9uKGZuKSB7XG4gICAgICAgIHBvcnQub24oJ21lc3NhZ2UnLCBmbilcbiAgICAgIH0sXG4gICAgfSxcbiAgKVxuXG4gIHJldHVybiB7IHdvcmtlclBvcnQsIHBvcnQgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBGaWxlLCBUYXNrLCBUYXNrUmVzdWx0UGFjaywgVXNlckNvbnNvbGVMb2cgfSBmcm9tICcuLi90eXBlcydcblxuZXhwb3J0IGNsYXNzIFN0YXRlTWFuYWdlciB7XG4gIGZpbGVzTWFwID0gbmV3IE1hcDxzdHJpbmcsIEZpbGU+KClcbiAgaWRNYXAgPSBuZXcgTWFwPHN0cmluZywgVGFzaz4oKVxuICB0YXNrRmlsZU1hcCA9IG5ldyBXZWFrTWFwPFRhc2ssIEZpbGU+KClcblxuICBnZXRGaWxlcyhrZXlzPzogc3RyaW5nW10pOiBGaWxlW10ge1xuICAgIGlmIChrZXlzKVxuICAgICAgcmV0dXJuIGtleXMubWFwKGtleSA9PiB0aGlzLmZpbGVzTWFwLmdldChrZXkpISlcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZpbGVzTWFwLnZhbHVlcygpKVxuICB9XG5cbiAgZ2V0RmlsZXBhdGhzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZpbGVzTWFwLmtleXMoKSlcbiAgfVxuXG4gIGdldEZhaWxlZEZpbGVwYXRocygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWxlcygpXG4gICAgICAuZmlsdGVyKGkgPT4gaS5yZXN1bHQ/LnN0YXRlID09PSAnZmFpbCcpXG4gICAgICAubWFwKGkgPT4gaS5maWxlcGF0aClcbiAgfVxuXG4gIGNvbGxlY3RGaWxlcyhmaWxlczogRmlsZVtdID0gW10pIHtcbiAgICBmaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICB0aGlzLmZpbGVzTWFwLnNldChmaWxlLmZpbGVwYXRoLCBmaWxlKVxuICAgICAgdGhpcy51cGRhdGVJZChmaWxlKVxuICAgIH0pXG4gIH1cblxuICB1cGRhdGVJZCh0YXNrOiBUYXNrKSB7XG4gICAgaWYgKHRoaXMuaWRNYXAuZ2V0KHRhc2suaWQpID09PSB0YXNrKVxuICAgICAgcmV0dXJuXG4gICAgdGhpcy5pZE1hcC5zZXQodGFzay5pZCwgdGFzaylcbiAgICBpZiAodGFzay50eXBlID09PSAnc3VpdGUnKSB7XG4gICAgICB0YXNrLnRhc2tzLmZvckVhY2goKHRhc2spID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVJZCh0YXNrKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB1cGRhdGVUYXNrcyhwYWNrczogVGFza1Jlc3VsdFBhY2tbXSkge1xuICAgIGZvciAoY29uc3QgW2lkLCByZXN1bHRdIG9mIHBhY2tzKSB7XG4gICAgICBpZiAodGhpcy5pZE1hcC5oYXMoaWQpKVxuICAgICAgICB0aGlzLmlkTWFwLmdldChpZCkhLnJlc3VsdCA9IHJlc3VsdFxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVVzZXJMb2cobG9nOiBVc2VyQ29uc29sZUxvZykge1xuICAgIGNvbnN0IHRhc2sgPSBsb2cudGFza0lkICYmIHRoaXMuaWRNYXAuZ2V0KGxvZy50YXNrSWQpXG4gICAgaWYgKHRhc2spIHtcbiAgICAgIGlmICghdGFzay5sb2dzKVxuICAgICAgICB0YXNrLmxvZ3MgPSBbXVxuICAgICAgdGFzay5sb2dzLnB1c2gobG9nKVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGhlJ1xuaW1wb3J0IHR5cGUgeyBSZXNvbHZlZENvbmZpZyBhcyBSZXNvbHZlZFZpdGVDb25maWcgfSBmcm9tICd2aXRlJ1xuXG5pbXBvcnQgdHlwZSB7IEFwaUNvbmZpZywgUmVzb2x2ZWRDb25maWcsIFVzZXJDb25maWcgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGNvbmZpZ0RlZmF1bHRzLCBkZWZhdWx0UG9ydCB9IGZyb20gJy4uL2NvbnN0YW50cydcbmltcG9ydCB7IHJlc29sdmVDOE9wdGlvbnMgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvY292ZXJhZ2UnXG5pbXBvcnQgeyB0b0FycmF5IH0gZnJvbSAnLi4vdXRpbHMnXG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQXBpQ29uZmlnPE9wdGlvbnMgZXh0ZW5kcyBBcGlDb25maWcgJiBVc2VyQ29uZmlnPihcbiAgb3B0aW9uczogT3B0aW9ucyxcbik6IEFwaUNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gIGxldCBhcGk6IEFwaUNvbmZpZyB8IHVuZGVmaW5lZFxuXG4gIGlmIChvcHRpb25zLnVpICYmICFvcHRpb25zLmFwaSlcbiAgICBhcGkgPSB7IHBvcnQ6IGRlZmF1bHRQb3J0IH1cbiAgZWxzZSBpZiAob3B0aW9ucy5hcGkgPT09IHRydWUpXG4gICAgYXBpID0geyBwb3J0OiBkZWZhdWx0UG9ydCB9XG4gIGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmFwaSA9PT0gJ251bWJlcicpXG4gICAgYXBpID0geyBwb3J0OiBvcHRpb25zLmFwaSB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLmFwaSA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoYXBpKSB7XG4gICAgICBpZiAob3B0aW9ucy5hcGkucG9ydClcbiAgICAgICAgYXBpLnBvcnQgPSBvcHRpb25zLmFwaS5wb3J0XG4gICAgICBpZiAob3B0aW9ucy5hcGkuc3RyaWN0UG9ydClcbiAgICAgICAgYXBpLnN0cmljdFBvcnQgPSBvcHRpb25zLmFwaS5zdHJpY3RQb3J0XG4gICAgICBpZiAob3B0aW9ucy5hcGkuaG9zdClcbiAgICAgICAgYXBpLmhvc3QgPSBvcHRpb25zLmFwaS5ob3N0XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYXBpID0geyAuLi5vcHRpb25zLmFwaSB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGFwaSkge1xuICAgIGlmICghYXBpLnBvcnQpXG4gICAgICBhcGkucG9ydCA9IGRlZmF1bHRQb3J0XG4gIH1cblxuICByZXR1cm4gYXBpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ29uZmlnKFxuICBvcHRpb25zOiBVc2VyQ29uZmlnLFxuICB2aXRlQ29uZmlnOiBSZXNvbHZlZFZpdGVDb25maWcsXG4pOiBSZXNvbHZlZENvbmZpZyB7XG4gIGlmIChvcHRpb25zLmRvbSlcbiAgICBvcHRpb25zLmVudmlyb25tZW50ID0gJ2hhcHB5LWRvbSdcblxuICBjb25zdCBnbG9iYWxzID0gb3B0aW9ucz8uZ2xvYmFsID8/IG9wdGlvbnMuZ2xvYmFsc1xuXG4gIGNvbnN0IHJlc29sdmVkID0ge1xuICAgIC4uLmNvbmZpZ0RlZmF1bHRzLFxuICAgIC4uLm9wdGlvbnMsXG4gICAgcm9vdDogdml0ZUNvbmZpZy5yb290LFxuICAgIGdsb2JhbHMsXG4gICAgZ2xvYmFsOiBnbG9iYWxzLFxuICB9IGFzIFJlc29sdmVkQ29uZmlnXG5cbiAgaWYgKHZpdGVDb25maWcuYmFzZSAhPT0gJy8nKVxuICAgIHJlc29sdmVkLmJhc2UgPSB2aXRlQ29uZmlnLmJhc2VcblxuICByZXNvbHZlZC5jb3ZlcmFnZSA9IHJlc29sdmVDOE9wdGlvbnMob3B0aW9ucy5jb3ZlcmFnZSB8fCB7fSwgcmVzb2x2ZWQucm9vdClcblxuICByZXNvbHZlZC5kZXBzID0gcmVzb2x2ZWQuZGVwcyB8fCB7fVxuICAvLyB2aXRlbm9kZSB3aWxsIHRyeSB0byBpbXBvcnQgc3VjaCBmaWxlIHdpdGggbmF0aXZlIG5vZGUsXG4gIC8vIGJ1dCB0aGVuIG91ciBtb2NrZXIgd2lsbCBub3Qgd29yayBwcm9wZXJseVxuICByZXNvbHZlZC5kZXBzLmlubGluZSA/Pz0gW11cbiAgcmVzb2x2ZWQuZGVwcy5pbmxpbmUucHVzaChcbiAgICAvXig/IS4qKD86bm9kZV9tb2R1bGVzKSkuKlxcLm1qcyQvLFxuICAgIC9eKD8hLiooPzpub2RlX21vZHVsZXMpKS4qXFwuY2pzXFwuanMkLyxcbiAgICAvXFwvdml0ZXN0XFwvZGlzdFxcLy8sXG4gICAgLy8geWFybidzIC5zdG9yZSBmb2xkZXJcbiAgICAvdml0ZXN0LXZpcnR1YWwtXFx3K1xcL2Rpc3QvLFxuICApXG5cbiAgcmVzb2x2ZWQudGVzdE5hbWVQYXR0ZXJuID0gcmVzb2x2ZWQudGVzdE5hbWVQYXR0ZXJuXG4gICAgPyByZXNvbHZlZC50ZXN0TmFtZVBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHBcbiAgICAgID8gcmVzb2x2ZWQudGVzdE5hbWVQYXR0ZXJuXG4gICAgICA6IG5ldyBSZWdFeHAocmVzb2x2ZWQudGVzdE5hbWVQYXR0ZXJuKVxuICAgIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgQ0kgPSAhIXByb2Nlc3MuZW52LkNJXG4gIGNvbnN0IFVQREFURV9TTkFQU0hPVCA9IHJlc29sdmVkLnVwZGF0ZSB8fCBwcm9jZXNzLmVudi5VUERBVEVfU05BUFNIT1RcbiAgcmVzb2x2ZWQuc25hcHNob3RPcHRpb25zID0ge1xuICAgIHNuYXBzaG90Rm9ybWF0OiByZXNvbHZlZC5zbmFwc2hvdEZvcm1hdCB8fCB7fSxcbiAgICB1cGRhdGVTbmFwc2hvdDogQ0kgJiYgIVVQREFURV9TTkFQU0hPVFxuICAgICAgPyAnbm9uZSdcbiAgICAgIDogVVBEQVRFX1NOQVBTSE9UXG4gICAgICAgID8gJ2FsbCdcbiAgICAgICAgOiAnbmV3JyxcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5WSVRFU1RfTUFYX1RIUkVBRFMpXG4gICAgcmVzb2x2ZWQubWF4VGhyZWFkcyA9IHBhcnNlSW50KHByb2Nlc3MuZW52LlZJVEVTVF9NQVhfVEhSRUFEUylcblxuICBpZiAocHJvY2Vzcy5lbnYuVklURVNUX01JTl9USFJFQURTKVxuICAgIHJlc29sdmVkLm1pblRocmVhZHMgPSBwYXJzZUludChwcm9jZXNzLmVudi5WSVRFU1RfTUlOX1RIUkVBRFMpXG5cbiAgcmVzb2x2ZWQuc2V0dXBGaWxlcyA9IHRvQXJyYXkocmVzb2x2ZWQuc2V0dXBGaWxlcyB8fCBbXSkubWFwKGZpbGUgPT4gcmVzb2x2ZShyZXNvbHZlZC5yb290LCBmaWxlKSlcblxuICAvLyB0aGUgc2VydmVyIGhhcyBiZWVuIGNyZWF0ZWQsIHdlIGRvbid0IG5lZWQgdG8gb3ZlcnJpZGUgdml0ZS5zZXJ2ZXIgb3B0aW9uc1xuICByZXNvbHZlZC5hcGkgPSByZXNvbHZlQXBpQ29uZmlnKG9wdGlvbnMpXG5cbiAgaWYgKG9wdGlvbnMucmVsYXRlZClcbiAgICByZXNvbHZlZC5yZWxhdGVkID0gdG9BcnJheShvcHRpb25zLnJlbGF0ZWQpLm1hcChmaWxlID0+IHJlc29sdmUocmVzb2x2ZWQucm9vdCwgZmlsZSkpXG5cbiAgcmVzb2x2ZWQucmVwb3J0ZXJzID0gQXJyYXkuZnJvbShuZXcgU2V0KFtcbiAgICAuLi50b0FycmF5KHJlc29sdmVkLnJlcG9ydGVycyksXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBmcm9tIENMSVxuICAgIC4uLnRvQXJyYXkocmVzb2x2ZWQucmVwb3J0ZXIpLFxuICBdKSkuZmlsdGVyKEJvb2xlYW4pXG4gIGlmICghcmVzb2x2ZWQucmVwb3J0ZXJzLmxlbmd0aClcbiAgICByZXNvbHZlZC5yZXBvcnRlcnMucHVzaCgnZGVmYXVsdCcpXG5cbiAgcmV0dXJuIHJlc29sdmVkXG59XG4iLCJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnZnMnXG5pbXBvcnQgdHlwZSB7IFZpdGVEZXZTZXJ2ZXIgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IGZnIGZyb20gJ2Zhc3QtZ2xvYidcbmltcG9ydCBtbSBmcm9tICdtaWNyb21hdGNoJ1xuaW1wb3J0IGMgZnJvbSAncGljb2NvbG9ycydcbmltcG9ydCB7IFZpdGVOb2RlU2VydmVyIH0gZnJvbSAndml0ZS1ub2RlL3NlcnZlcidcbmltcG9ydCB0eXBlIHsgQXJndW1lbnRzVHlwZSwgUmVwb3J0ZXIsIFJlc29sdmVkQ29uZmlnLCBVc2VyQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBTbmFwc2hvdE1hbmFnZXIgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvc25hcHNob3QvbWFuYWdlcidcbmltcG9ydCB7IGRlZXBNZXJnZSwgaGFzRmFpbGVkLCBub29wLCBzbGFzaCwgdG9BcnJheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgY2xlYW5Db3ZlcmFnZSwgcmVwb3J0Q292ZXJhZ2UgfSBmcm9tICcuLi9pbnRlZ3JhdGlvbnMvY292ZXJhZ2UnXG5pbXBvcnQgeyBSZXBvcnRlcnNNYXAgfSBmcm9tICcuL3JlcG9ydGVycydcbmltcG9ydCB7IGNyZWF0ZVBvb2wgfSBmcm9tICcuL3Bvb2wnXG5pbXBvcnQgdHlwZSB7IFdvcmtlclBvb2wgfSBmcm9tICcuL3Bvb2wnXG5pbXBvcnQgeyBTdGF0ZU1hbmFnZXIgfSBmcm9tICcuL3N0YXRlJ1xuaW1wb3J0IHsgcmVzb2x2ZUNvbmZpZyB9IGZyb20gJy4vY29uZmlnJ1xuXG5jb25zdCBXQVRDSEVSX0RFQk9VTkNFID0gMTAwXG5jb25zdCBDTE9TRV9USU1FT1VUID0gMV8wMDBcblxuZXhwb3J0IGNsYXNzIFZpdGVzdCB7XG4gIGNvbmZpZzogUmVzb2x2ZWRDb25maWcgPSB1bmRlZmluZWQhXG4gIGNvbmZpZ092ZXJyaWRlOiBQYXJ0aWFsPFJlc29sdmVkQ29uZmlnPiB8IHVuZGVmaW5lZFxuXG4gIHNlcnZlcjogVml0ZURldlNlcnZlciA9IHVuZGVmaW5lZCFcbiAgc3RhdGU6IFN0YXRlTWFuYWdlciA9IHVuZGVmaW5lZCFcbiAgc25hcHNob3Q6IFNuYXBzaG90TWFuYWdlciA9IHVuZGVmaW5lZCFcbiAgcmVwb3J0ZXJzOiBSZXBvcnRlcltdID0gdW5kZWZpbmVkIVxuICBjb25zb2xlOiBDb25zb2xlXG4gIHBvb2w6IFdvcmtlclBvb2wgfCB1bmRlZmluZWRcblxuICBvdXRwdXRTdHJlYW0gPSBwcm9jZXNzLnN0ZG91dFxuICBlcnJvclN0cmVhbSA9IHByb2Nlc3Muc3RkZXJyXG5cbiAgdml0ZW5vZGU6IFZpdGVOb2RlU2VydmVyID0gdW5kZWZpbmVkIVxuXG4gIGludmFsaWRhdGVzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKVxuICBjaGFuZ2VkVGVzdHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpXG4gIHJ1bm5pbmdQcm9taXNlPzogUHJvbWlzZTx2b2lkPlxuICBjbG9zaW5nUHJvbWlzZT86IFByb21pc2U8dm9pZD5cblxuICBpc0ZpcnN0UnVuID0gdHJ1ZVxuICByZXN0YXJ0c0NvdW50ID0gMFxuXG4gIHByaXZhdGUgX29uUmVzdGFydExpc3RlbmVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29uc29sZSA9IGdsb2JhbFRoaXMuY29uc29sZVxuICB9XG5cbiAgYXN5bmMgc2V0U2VydmVyKG9wdGlvbnM6IFVzZXJDb25maWcsIHNlcnZlcjogVml0ZURldlNlcnZlcikge1xuICAgIHRoaXMudW5yZWdpc3RlcldhdGNoZXI/LigpXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3JlcnVuVGltZXIpXG4gICAgdGhpcy5yZXN0YXJ0c0NvdW50ICs9IDFcbiAgICB0aGlzLnBvb2w/LmNsb3NlKClcbiAgICB0aGlzLnBvb2wgPSB1bmRlZmluZWRcblxuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUNvbmZpZyhvcHRpb25zLCBzZXJ2ZXIuY29uZmlnKVxuXG4gICAgdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXJcbiAgICB0aGlzLmNvbmZpZyA9IHJlc29sdmVkXG4gICAgdGhpcy5zdGF0ZSA9IG5ldyBTdGF0ZU1hbmFnZXIoKVxuICAgIHRoaXMuc25hcHNob3QgPSBuZXcgU25hcHNob3RNYW5hZ2VyKHJlc29sdmVkKVxuICAgIHRoaXMucmVwb3J0ZXJzID0gcmVzb2x2ZWQucmVwb3J0ZXJzXG4gICAgICAubWFwKChpKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgaSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBSZXBvcnRlciA9IFJlcG9ydGVyc01hcFtpXVxuICAgICAgICAgIGlmICghUmVwb3J0ZXIpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcmVwb3J0ZXI6ICR7aX1gKVxuICAgICAgICAgIHJldHVybiBuZXcgUmVwb3J0ZXIoKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpXG4gICAgICB9KVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLndhdGNoKVxuICAgICAgdGhpcy5yZWdpc3RlcldhdGNoZXIoKVxuXG4gICAgdGhpcy52aXRlbm9kZSA9IG5ldyBWaXRlTm9kZVNlcnZlcihzZXJ2ZXIsIHRoaXMuY29uZmlnKVxuXG4gICAgdGhpcy5ydW5uaW5nUHJvbWlzZSA9IHVuZGVmaW5lZFxuXG4gICAgdGhpcy5fb25SZXN0YXJ0TGlzdGVuZXJzLmZvckVhY2goZm4gPT4gZm4oKSlcblxuICAgIGlmIChyZXNvbHZlZC5jb3ZlcmFnZS5lbmFibGVkKVxuICAgICAgYXdhaXQgY2xlYW5Db3ZlcmFnZShyZXNvbHZlZC5jb3ZlcmFnZSwgcmVzb2x2ZWQuY292ZXJhZ2UuY2xlYW4pXG4gIH1cblxuICBnZXRDb25maWcoKSB7XG4gICAgY29uc3QgaGFzQ3VzdG9tUmVwb3J0ZXIgPSB0b0FycmF5KHRoaXMuY29uZmlnLnJlcG9ydGVycylcbiAgICAgIC5zb21lKHJlcG9ydGVyID0+IHR5cGVvZiByZXBvcnRlciAhPT0gJ3N0cmluZycpXG5cbiAgICBpZiAoIWhhc0N1c3RvbVJlcG9ydGVyICYmICF0aGlzLmNvbmZpZ092ZXJyaWRlKVxuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnXG5cbiAgICBjb25zdCBjb25maWcgPSBkZWVwTWVyZ2Uoe30sIHRoaXMuY29uZmlnKVxuXG4gICAgaWYgKHRoaXMuY29uZmlnT3ZlcnJpZGUpXG4gICAgICBkZWVwTWVyZ2UoY29uZmlnLCB0aGlzLmNvbmZpZ092ZXJyaWRlKVxuXG4gICAgLy8gQ3VzdG9tIHJlcG9ydGVycyBjYW5ub3QgYmUgc2VyaWFsaXplZCBmb3Igc2VuZGluZyB0byB3b3JrZXJzICM2MTRcbiAgICAvLyBidXQgd29ya2VycyBkb24ndCBuZWVkIHJlcG9ydGVycyBhbnl3YXlcbiAgICBpZiAoaGFzQ3VzdG9tUmVwb3J0ZXIpXG4gICAgICBjb25maWcucmVwb3J0ZXJzID0gW11cblxuICAgIHJldHVybiBjb25maWcgYXMgUmVzb2x2ZWRDb25maWdcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0KGZpbHRlcnM/OiBzdHJpbmdbXSkge1xuICAgIGF3YWl0IHRoaXMucmVwb3J0KCdvbkluaXQnLCB0aGlzKVxuXG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCB0aGlzLmZpbHRlclRlc3RzQnlTb3VyY2UoXG4gICAgICBhd2FpdCB0aGlzLmdsb2JUZXN0RmlsZXMoZmlsdGVycyksXG4gICAgKVxuXG4gICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wYXNzV2l0aE5vVGVzdHMpXG4gICAgICAgIHRoaXMubG9nKCdObyB0ZXN0IGZpbGVzIGZvdW5kXFxuJylcblxuICAgICAgZWxzZVxuICAgICAgICB0aGlzLmVycm9yKGMucmVkKCdObyB0ZXN0IGZpbGVzIGZvdW5kXFxuJykpXG4gICAgICBwcm9jZXNzLmV4aXQodGhpcy5jb25maWcucGFzc1dpdGhOb1Rlc3RzID8gMCA6IDEpXG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5ydW5GaWxlcyhmaWxlcylcblxuICAgIGlmICh0aGlzLmNvbmZpZy5jb3ZlcmFnZS5lbmFibGVkKVxuICAgICAgYXdhaXQgcmVwb3J0Q292ZXJhZ2UodGhpcylcblxuICAgIGlmICh0aGlzLmNvbmZpZy53YXRjaClcbiAgICAgIGF3YWl0IHRoaXMucmVwb3J0KCdvbldhdGNoZXJTdGFydCcpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFRlc3REZXBlbmRlbmNpZXMoZmlsZXBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IGRlcHMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gICAgY29uc3QgYWRkSW1wb3J0cyA9IGFzeW5jKGZpbGVwYXRoOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkID0gYXdhaXQgdGhpcy52aXRlbm9kZS50cmFuc2Zvcm1SZXF1ZXN0KGZpbGVwYXRoKVxuICAgICAgaWYgKCF0cmFuc2Zvcm1lZClcbiAgICAgICAgcmV0dXJuXG4gICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBbLi4udHJhbnNmb3JtZWQuZGVwcyB8fCBbXSwgLi4udHJhbnNmb3JtZWQuZHluYW1pY0RlcHMgfHwgW11dXG4gICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGF3YWl0IHRoaXMuc2VydmVyLnBsdWdpbkNvbnRhaW5lci5yZXNvbHZlSWQoZGVwLCBmaWxlcGF0aCwgeyBzc3I6IHRydWUgfSlcbiAgICAgICAgY29uc3QgZnNQYXRoID0gcGF0aCAmJiAhcGF0aC5leHRlcm5hbCAmJiBwYXRoLmlkLnNwbGl0KCc/JylbMF1cbiAgICAgICAgaWYgKGZzUGF0aCAmJiAhZnNQYXRoLmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSAmJiAhZGVwcy5oYXMoZnNQYXRoKSAmJiBleGlzdHNTeW5jKGZzUGF0aCkpIHtcbiAgICAgICAgICBkZXBzLmFkZChmc1BhdGgpXG5cbiAgICAgICAgICBhd2FpdCBhZGRJbXBvcnRzKGZzUGF0aClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IGFkZEltcG9ydHMoZmlsZXBhdGgpXG5cbiAgICByZXR1cm4gZGVwc1xuICB9XG5cbiAgYXN5bmMgZmlsdGVyVGVzdHNCeVNvdXJjZSh0ZXN0czogc3RyaW5nW10pIHtcbiAgICBjb25zdCByZWxhdGVkID0gdGhpcy5jb25maWcucmVsYXRlZFxuICAgIGlmICghcmVsYXRlZClcbiAgICAgIHJldHVybiB0ZXN0c1xuXG4gICAgLy8gZG9uJ3QgcnVuIGFueXRoaW5nIGlmIG5vIHJlbGF0ZWQgc291cmNlcyBhcmUgZm91bmRcbiAgICBpZiAoIXJlbGF0ZWQubGVuZ3RoKVxuICAgICAgcmV0dXJuIFtdXG5cbiAgICBjb25zdCB0ZXN0RGVwcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGVzdHMubWFwKGFzeW5jKGZpbGVwYXRoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlcHMgPSBhd2FpdCB0aGlzLmdldFRlc3REZXBlbmRlbmNpZXMoZmlsZXBhdGgpXG4gICAgICAgIHJldHVybiBbZmlsZXBhdGgsIGRlcHNdIGFzIGNvbnN0XG4gICAgICB9KSxcbiAgICApXG5cbiAgICBjb25zdCBydW5uaW5nVGVzdHMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBbZmlsZXBhdGgsIGRlcHNdIG9mIHRlc3REZXBzKSB7XG4gICAgICBpZiAoZGVwcy5zaXplICYmIHJlbGF0ZWQuc29tZShwYXRoID0+IGRlcHMuaGFzKHBhdGgpKSlcbiAgICAgICAgcnVubmluZ1Rlc3RzLnB1c2goZmlsZXBhdGgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bm5pbmdUZXN0c1xuICB9XG5cbiAgYXN5bmMgcnVuRmlsZXMoZmlsZXM6IHN0cmluZ1tdKSB7XG4gICAgYXdhaXQgdGhpcy5ydW5uaW5nUHJvbWlzZVxuXG4gICAgdGhpcy5ydW5uaW5nUHJvbWlzZSA9IChhc3luYygpID0+IHtcbiAgICAgIGlmICghdGhpcy5wb29sKVxuICAgICAgICB0aGlzLnBvb2wgPSBjcmVhdGVQb29sKHRoaXMpXG5cbiAgICAgIGNvbnN0IGludmFsaWRhdGVzID0gQXJyYXkuZnJvbSh0aGlzLmludmFsaWRhdGVzKVxuICAgICAgdGhpcy5pbnZhbGlkYXRlcy5jbGVhcigpXG4gICAgICBhd2FpdCB0aGlzLnBvb2wucnVuVGVzdHMoZmlsZXMsIGludmFsaWRhdGVzKVxuXG4gICAgICBpZiAoaGFzRmFpbGVkKHRoaXMuc3RhdGUuZ2V0RmlsZXMoKSkpXG4gICAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxXG5cbiAgICAgIGF3YWl0IHRoaXMucmVwb3J0KCdvbkZpbmlzaGVkJywgdGhpcy5zdGF0ZS5nZXRGaWxlcygpKVxuICAgIH0pKClcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5ydW5uaW5nUHJvbWlzZSA9IHVuZGVmaW5lZFxuICAgICAgfSlcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnJ1bm5pbmdQcm9taXNlXG4gIH1cblxuICBhc3luYyByZXJ1bkZpbGVzKGZpbGVzOiBzdHJpbmdbXSA9IHRoaXMuc3RhdGUuZ2V0RmlsZXBhdGhzKCksIHRyaWdnZXI/OiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLnJlcG9ydCgnb25XYXRjaGVyUmVydW4nLCBmaWxlcywgdHJpZ2dlcilcbiAgICBhd2FpdCB0aGlzLnJ1bkZpbGVzKGZpbGVzKVxuICAgIGF3YWl0IHRoaXMucmVwb3J0KCdvbldhdGNoZXJTdGFydCcpXG4gIH1cblxuICBhc3luYyByZXR1cm5GYWlsZWQoKSB7XG4gICAgYXdhaXQgdGhpcy5yZXJ1bkZpbGVzKHRoaXMuc3RhdGUuZ2V0RmFpbGVkRmlsZXBhdGhzKCksICdyZXJ1biBmYWlsZWQnKVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlU25hcHNob3QoZmlsZXM/OiBzdHJpbmdbXSkge1xuICAgIC8vIGRlZmF1bHQgdG8gZmFpbGVkIGZpbGVzXG4gICAgZmlsZXMgPSBmaWxlcyB8fCB0aGlzLnN0YXRlLmdldEZhaWxlZEZpbGVwYXRocygpXG5cbiAgICB0aGlzLmNvbmZpZ092ZXJyaWRlID0ge1xuICAgICAgc25hcHNob3RPcHRpb25zOiB7XG4gICAgICAgIHVwZGF0ZVNuYXBzaG90OiAnYWxsJyxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucmVydW5GaWxlcyhmaWxlcywgJ3VwZGF0ZSBzbmFwc2hvdCcpXG4gICAgfVxuICAgIGZpbmFsbHkge1xuICAgICAgdGhpcy5jb25maWdPdmVycmlkZSA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIGxvZyguLi5hcmdzOiBhbnlbXSkge1xuICAgIHRoaXMuY29uc29sZS5sb2coLi4uYXJncylcbiAgfVxuXG4gIGVycm9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgdGhpcy5jb25zb2xlLmVycm9yKC4uLmFyZ3MpXG4gIH1cblxuICBwcml2YXRlIF9yZXJ1blRpbWVyOiBhbnlcbiAgcHJpdmF0ZSBhc3luYyBzY2hlZHVsZVJlcnVuKHRyaWdnZXJJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY3VycmVudENvdW50ID0gdGhpcy5yZXN0YXJ0c0NvdW50XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3JlcnVuVGltZXIpXG4gICAgYXdhaXQgdGhpcy5ydW5uaW5nUHJvbWlzZVxuICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXJ1blRpbWVyKVxuXG4gICAgLy8gc2VydmVyIHJlc3RhcnRlZFxuICAgIGlmICh0aGlzLnJlc3RhcnRzQ291bnQgIT09IGN1cnJlbnRDb3VudClcbiAgICAgIHJldHVyblxuXG4gICAgdGhpcy5fcmVydW5UaW1lciA9IHNldFRpbWVvdXQoYXN5bmMoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jaGFuZ2VkVGVzdHMuc2l6ZSA9PT0gMCkge1xuICAgICAgICB0aGlzLmludmFsaWRhdGVzLmNsZWFyKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIHNlcnZlciByZXN0YXJ0ZWRcbiAgICAgIGlmICh0aGlzLnJlc3RhcnRzQ291bnQgIT09IGN1cnJlbnRDb3VudClcbiAgICAgICAgcmV0dXJuXG5cbiAgICAgIHRoaXMuaXNGaXJzdFJ1biA9IGZhbHNlXG5cbiAgICAgIC8vIGFkZCBwcmV2aW91c2x5IGZhaWxlZCBmaWxlc1xuICAgICAgLy8gaWYgKFJFUlVOX0ZBSUxFRCkge1xuICAgICAgLy8gICBjdHguc3RhdGUuZ2V0RmlsZXMoKS5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICAvLyAgICAgaWYgKGZpbGUucmVzdWx0Py5zdGF0ZSA9PT0gJ2ZhaWwnKVxuICAgICAgLy8gICAgICAgY2hhbmdlZFRlc3RzLmFkZChmaWxlLmZpbGVwYXRoKVxuICAgICAgLy8gICB9KVxuICAgICAgLy8gfVxuICAgICAgdGhpcy5zbmFwc2hvdC5jbGVhcigpXG4gICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odGhpcy5jaGFuZ2VkVGVzdHMpXG4gICAgICB0aGlzLmNoYW5nZWRUZXN0cy5jbGVhcigpXG5cbiAgICAgIHRoaXMubG9nKCdyZXR1cm4nKVxuICAgICAgaWYgKHRoaXMuY29uZmlnLmNvdmVyYWdlLmVuYWJsZWQgJiYgdGhpcy5jb25maWcuY292ZXJhZ2UuY2xlYW5PblJlcnVuKVxuICAgICAgICBhd2FpdCBjbGVhbkNvdmVyYWdlKHRoaXMuY29uZmlnLmNvdmVyYWdlKVxuXG4gICAgICBhd2FpdCB0aGlzLnJlcG9ydCgnb25XYXRjaGVyUmVydW4nLCBmaWxlcywgdHJpZ2dlcklkKVxuXG4gICAgICBhd2FpdCB0aGlzLnJ1bkZpbGVzKGZpbGVzKVxuXG4gICAgICBpZiAodGhpcy5jb25maWcuY292ZXJhZ2UuZW5hYmxlZClcbiAgICAgICAgYXdhaXQgcmVwb3J0Q292ZXJhZ2UodGhpcylcblxuICAgICAgYXdhaXQgdGhpcy5yZXBvcnQoJ29uV2F0Y2hlclN0YXJ0JylcbiAgICB9LCBXQVRDSEVSX0RFQk9VTkNFKVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyV2F0Y2hlciA9IG5vb3BcbiAgcHJpdmF0ZSByZWdpc3RlcldhdGNoZXIoKSB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgaWQgPSBzbGFzaChpZClcbiAgICAgIGNvbnN0IG5lZWRzUmVydW4gPSB0aGlzLmhhbmRsZUZpbGVDaGFuZ2VkKGlkKVxuICAgICAgaWYgKG5lZWRzUmVydW4pXG4gICAgICAgIHRoaXMuc2NoZWR1bGVSZXJ1bihpZClcbiAgICB9XG4gICAgY29uc3Qgb25VbmxpbmsgPSAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgaWQgPSBzbGFzaChpZClcbiAgICAgIHRoaXMuaW52YWxpZGF0ZXMuYWRkKGlkKVxuXG4gICAgICBpZiAodGhpcy5zdGF0ZS5maWxlc01hcC5oYXMoaWQpKSB7XG4gICAgICAgIHRoaXMuc3RhdGUuZmlsZXNNYXAuZGVsZXRlKGlkKVxuICAgICAgICB0aGlzLmNoYW5nZWRUZXN0cy5kZWxldGUoaWQpXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG9uQWRkID0gKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgIGlkID0gc2xhc2goaWQpXG4gICAgICBpZiAodGhpcy5pc1RhcmdldEZpbGUoaWQpKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlZFRlc3RzLmFkZChpZClcbiAgICAgICAgdGhpcy5zY2hlZHVsZVJlcnVuKGlkKVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB3YXRjaGVyID0gdGhpcy5zZXJ2ZXIud2F0Y2hlclxuICAgIHdhdGNoZXIub24oJ2NoYW5nZScsIG9uQ2hhbmdlKVxuICAgIHdhdGNoZXIub24oJ3VubGluaycsIG9uVW5saW5rKVxuICAgIHdhdGNoZXIub24oJ2FkZCcsIG9uQWRkKVxuXG4gICAgdGhpcy51bnJlZ2lzdGVyV2F0Y2hlciA9ICgpID0+IHtcbiAgICAgIHdhdGNoZXIub2ZmKCdjaGFuZ2UnLCBvbkNoYW5nZSlcbiAgICAgIHdhdGNoZXIub2ZmKCd1bmxpbmsnLCBvblVubGluaylcbiAgICAgIHdhdGNoZXIub2ZmKCdhZGQnLCBvbkFkZClcbiAgICAgIHRoaXMudW5yZWdpc3RlcldhdGNoZXIgPSBub29wXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIEEgdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHJlcnVuIGlzIG5lZWRlZCAoY2hhbmdlZFRlc3RzIHdhcyBtdXRhdGVkKVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVGaWxlQ2hhbmdlZChpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY2hhbmdlZFRlc3RzLmhhcyhpZCkgfHwgdGhpcy5pbnZhbGlkYXRlcy5oYXMoaWQpIHx8IHRoaXMuY29uZmlnLndhdGNoSWdub3JlLnNvbWUoaSA9PiBpZC5tYXRjaChpKSkpXG4gICAgICByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IG1vZCA9IHRoaXMuc2VydmVyLm1vZHVsZUdyYXBoLmdldE1vZHVsZUJ5SWQoaWQpXG4gICAgaWYgKCFtb2QpXG4gICAgICByZXR1cm4gZmFsc2VcblxuICAgIHRoaXMuaW52YWxpZGF0ZXMuYWRkKGlkKVxuXG4gICAgaWYgKHRoaXMuc3RhdGUuZmlsZXNNYXAuaGFzKGlkKSkge1xuICAgICAgdGhpcy5jaGFuZ2VkVGVzdHMuYWRkKGlkKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBsZXQgcmVydW4gPSBmYWxzZVxuICAgIG1vZC5pbXBvcnRlcnMuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgaWYgKCFpLmlkKVxuICAgICAgICByZXR1cm5cblxuICAgICAgY29uc3QgaGVlZHNSZXJ1biA9IHRoaXMuaGFuZGxlRmlsZUNoYW5nZWQoaS5pZClcbiAgICAgIGlmIChoZWVkc1JlcnVuKVxuICAgICAgICByZXJ1biA9IHRydWVcbiAgICB9KVxuXG4gICAgcmV0dXJuIHJlcnVuXG4gIH1cblxuICBhc3luYyBjbG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuY2xvc2luZ1Byb21pc2UpIHtcbiAgICAgIHRoaXMuY2xvc2luZ1Byb21pc2UgPSBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgICB0aGlzLnBvb2w/LmNsb3NlKCksXG4gICAgICAgIHRoaXMuc2VydmVyLmNsb3NlKCksXG4gICAgICBdLmZpbHRlcihCb29sZWFuKSkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICByZXN1bHRzLmZpbHRlcihyID0+IHIuc3RhdHVzID09PSAncmVqZWN0ZWQnKS5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yKCdlcnJvciBkdXJpbmcgY2xvc2UnLCAoZXJyIGFzIFByb21pc2VSZWplY3RlZFJlc3VsdCkucmVhc29uKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvc2luZ1Byb21pc2VcbiAgfVxuXG4gIGFzeW5jIGV4aXQoZm9yY2UgPSBmYWxzZSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc29sZS53YXJuKGBjbG9zZSB0aW1lZCBvdXQgYWZ0ZXIgJHtDTE9TRV9USU1FT1VUfW1zYClcbiAgICAgIHByb2Nlc3MuZXhpdCgpXG4gICAgfSwgQ0xPU0VfVElNRU9VVCkudW5yZWYoKVxuXG4gICAgYXdhaXQgdGhpcy5jbG9zZSgpXG4gICAgaWYgKGZvcmNlKVxuICAgICAgcHJvY2Vzcy5leGl0KClcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydDxUIGV4dGVuZHMga2V5b2YgUmVwb3J0ZXI+KG5hbWU6IFQsIC4uLmFyZ3M6IEFyZ3VtZW50c1R5cGU8UmVwb3J0ZXJbVF0+KSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5yZXBvcnRlcnMubWFwKHIgPT4gcltuYW1lXT8uKFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBsZXQgbWUgZ29cbiAgICAgIC4uLmFyZ3MsXG4gICAgKSkpXG4gIH1cblxuICBhc3luYyBnbG9iVGVzdEZpbGVzKGZpbHRlcnM/OiBzdHJpbmdbXSkge1xuICAgIGxldCBmaWxlcyA9IGF3YWl0IGZnKFxuICAgICAgdGhpcy5jb25maWcuaW5jbHVkZSxcbiAgICAgIHtcbiAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgIGN3ZDogdGhpcy5jb25maWcucm9vdCxcbiAgICAgICAgaWdub3JlOiB0aGlzLmNvbmZpZy5leGNsdWRlLFxuICAgICAgfSxcbiAgICApXG5cbiAgICBpZiAoZmlsdGVycz8ubGVuZ3RoKVxuICAgICAgZmlsZXMgPSBmaWxlcy5maWx0ZXIoaSA9PiBmaWx0ZXJzLnNvbWUoZiA9PiBpLmluY2x1ZGVzKGYpKSlcblxuICAgIHJldHVybiBmaWxlc1xuICB9XG5cbiAgaXNUYXJnZXRGaWxlKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAobW0uaXNNYXRjaChpZCwgdGhpcy5jb25maWcuZXhjbHVkZSkpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gbW0uaXNNYXRjaChpZCwgdGhpcy5jb25maWcuaW5jbHVkZSlcbiAgfVxuXG4gIG9uU2VydmVyUmVzdGFydGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fb25SZXN0YXJ0TGlzdGVuZXJzLnB1c2goZm4pXG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAndml0ZSdcbmltcG9ydCB7IFZpdGVOb2RlUnVubmVyIH0gZnJvbSAndml0ZS1ub2RlL2NsaWVudCdcbmltcG9ydCB0eXBlIHsgVml0ZXN0IH0gZnJvbSAnLi4vY29yZSdcbmltcG9ydCB7IHRvQXJyYXkgfSBmcm9tICcuLi8uLi91dGlscydcblxuaW50ZXJmYWNlIEdsb2JhbFNldHVwRmlsZSB7XG4gIGZpbGU6IHN0cmluZ1xuICBzZXR1cD86ICgpID0+IFByb21pc2U8RnVuY3Rpb258dm9pZD58dm9pZFxuICB0ZWFyZG93bj86IEZ1bmN0aW9uXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRHbG9iYWxTZXR1cEZpbGVzKGN0eDogVml0ZXN0KTogUHJvbWlzZTxHbG9iYWxTZXR1cEZpbGVbXT4ge1xuICBjb25zdCBub2RlID0gY3R4LnZpdGVub2RlXG4gIGNvbnN0IHNlcnZlciA9IGN0eC5zZXJ2ZXJcbiAgY29uc3QgcnVubmVyID0gbmV3IFZpdGVOb2RlUnVubmVyKHtcbiAgICByb290OiBzZXJ2ZXIuY29uZmlnLnJvb3QsXG4gICAgYmFzZTogc2VydmVyLmNvbmZpZy5iYXNlLFxuICAgIGZldGNoTW9kdWxlKGlkKSB7XG4gICAgICByZXR1cm4gbm9kZS5mZXRjaE1vZHVsZShpZClcbiAgICB9LFxuICB9KVxuICBjb25zdCBnbG9iYWxTZXR1cEZpbGVzID0gdG9BcnJheShzZXJ2ZXIuY29uZmlnLnRlc3Q/Lmdsb2JhbFNldHVwKVxuICByZXR1cm4gUHJvbWlzZS5hbGwoZ2xvYmFsU2V0dXBGaWxlcy5tYXAoZmlsZSA9PiBsb2FkR2xvYmFsU2V0dXBGaWxlKGZpbGUsIHJ1bm5lcikpKVxufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkR2xvYmFsU2V0dXBGaWxlKGZpbGU6IHN0cmluZywgcnVubmVyOiBWaXRlTm9kZVJ1bm5lcik6IFByb21pc2U8R2xvYmFsU2V0dXBGaWxlPiB7XG4gIGNvbnN0IG0gPSBhd2FpdCBydW5uZXIuZXhlY3V0ZUZpbGUoZmlsZSlcbiAgZm9yIChjb25zdCBleHAgb2YgWydkZWZhdWx0JywgJ3NldHVwJywgJ3RlYXJkb3duJ10pIHtcbiAgICBpZiAobVtleHBdICE9IG51bGwgJiYgdHlwZW9mIG1bZXhwXSAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBleHBvcnQgaW4gZ2xvYmFsU2V0dXAgZmlsZSAke2ZpbGV9OiAke2V4cH0gbXVzdCBiZSBhIGZ1bmN0aW9uYClcbiAgfVxuICBpZiAobS5kZWZhdWx0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGUsXG4gICAgICBzZXR1cDogbS5kZWZhdWx0LFxuICAgIH1cbiAgfVxuICBlbHNlIGlmIChtLnNldHVwIHx8IG0udGVhcmRvd24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZSxcbiAgICAgIHNldHVwOiBtLnNldHVwLFxuICAgICAgdGVhcmRvd246IG0udGVhcmRvd24sXG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBnbG9iYWxTZXR1cCBmaWxlICR7ZmlsZX0uIE11c3QgZXhwb3J0IHNldHVwLCB0ZWFyZG93biBvciBoYXZlIGEgZGVmYXVsdCBleHBvcnRgKVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBHbG9iYWxTZXR1cFBsdWdpbiA9IChjdHg6IFZpdGVzdCk6IFBsdWdpbiA9PiB7XG4gIGxldCBnbG9iYWxTZXR1cEZpbGVzOiBHbG9iYWxTZXR1cEZpbGVbXVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICd2aXRlc3Q6Z2xvYmFsLXNldHVwLXBsdWdpbicsXG4gICAgZW5mb3JjZTogJ3ByZScsXG5cbiAgICBhc3luYyBidWlsZFN0YXJ0KCkge1xuICAgICAgaWYgKCFjdHguc2VydmVyLmNvbmZpZy50ZXN0Py5nbG9iYWxTZXR1cClcbiAgICAgICAgcmV0dXJuXG5cbiAgICAgIGdsb2JhbFNldHVwRmlsZXMgPSBhd2FpdCBsb2FkR2xvYmFsU2V0dXBGaWxlcyhjdHgpXG4gICAgICBmb3IgKGNvbnN0IGdsb2JhbFNldHVwRmlsZSBvZiBnbG9iYWxTZXR1cEZpbGVzKSB7XG4gICAgICAgIGNvbnN0IHRlYXJkb3duID0gYXdhaXQgZ2xvYmFsU2V0dXBGaWxlLnNldHVwPy4oKVxuICAgICAgICBpZiAodGVhcmRvd24gPT0gbnVsbCB8fCAhIWdsb2JhbFNldHVwRmlsZS50ZWFyZG93bilcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICBpZiAodHlwZW9mIHRlYXJkb3duICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCByZXR1cm4gdmFsdWUgaW4gZ2xvYmFsU2V0dXAgZmlsZSAke2dsb2JhbFNldHVwRmlsZS5maWxlfS4gTXVzdCByZXR1cm4gYSBmdW5jdGlvbmApXG4gICAgICAgIGdsb2JhbFNldHVwRmlsZS50ZWFyZG93biA9IHRlYXJkb3duXG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIGJ1aWxkRW5kKCkge1xuICAgICAgaWYgKGdsb2JhbFNldHVwRmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGdsb2JhbFNldHVwRmlsZSBvZiBnbG9iYWxTZXR1cEZpbGVzLnJldmVyc2UoKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBnbG9iYWxTZXR1cEZpbGUudGVhcmRvd24/LigpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgZXJyb3IgZHVyaW5nIGdsb2JhbCB0ZWFyZG93biBvZiAke2dsb2JhbFNldHVwRmlsZS5maWxlfWAsIGVycm9yKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAndml0ZSdcbmltcG9ydCBNYWdpY1N0cmluZyBmcm9tICdtYWdpYy1zdHJpbmcnXG5pbXBvcnQgeyBnZXRDYWxsTGFzdEluZGV4IH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5cbmNvbnN0IGhvaXN0UmVnZXhwID0gL14gKlxcYigoPzp2aXRlc3R8dmkpXFxzKi5cXHMqKG1vY2t8dW5tb2NrKVxcKFtcImAnXFxzXSsoLipbQFxcd18tXSspW1wiYCdcXHNdKylbKSxdezF9Oz8vZ21cbmNvbnN0IHZpdGVzdFJlZ2V4cCA9IC9pbXBvcnQge1tefV0qfS4qKD89W1wiJ2Bddml0ZXN0W1wiYCddKS4qL2dtXG5cbmV4cG9ydCBmdW5jdGlvbiBob2lzdE1vY2tzKGNvZGU6IHN0cmluZykge1xuICBsZXQgbTogTWFnaWNTdHJpbmcgfCB1bmRlZmluZWRcbiAgY29uc3QgbW9ja3MgPSBjb2RlLm1hdGNoQWxsKGhvaXN0UmVnZXhwKVxuXG4gIGZvciAoY29uc3QgbW9ja1Jlc3VsdCBvZiBtb2Nrcykge1xuICAgIGNvbnN0IGxhc3RJbmRleCA9IGdldE1vY2tMYXN0SW5kZXgoY29kZS5zbGljZShtb2NrUmVzdWx0LmluZGV4ISkpXG5cbiAgICBpZiAobGFzdEluZGV4ID09PSBudWxsKSBjb250aW51ZVxuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IG1vY2tSZXN1bHQuaW5kZXghXG5cbiAgICBjb25zdCB7IGluc2lkZUNvbW1lbnQsIGluc2lkZVN0cmluZyB9ID0gZ2V0SW5kZXhTdGF0dXMoY29kZSwgc3RhcnRJbmRleClcblxuICAgIGlmIChpbnNpZGVDb21tZW50IHx8IGluc2lkZVN0cmluZylcbiAgICAgIGNvbnRpbnVlXG5cbiAgICBjb25zdCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBsYXN0SW5kZXhcblxuICAgIG0gPz89IG5ldyBNYWdpY1N0cmluZyhjb2RlKVxuXG4gICAgbS5wcmVwZW5kKGAke20uc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpfVxcbmApXG4gICAgbS5yZW1vdmUoc3RhcnRJbmRleCwgZW5kSW5kZXgpXG4gIH1cblxuICByZXR1cm4gbVxufVxuXG5leHBvcnQgY29uc3QgTW9ja3NQbHVnaW4gPSAoKTogUGx1Z2luID0+IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAndml0ZXN0Om1vY2stcGx1Z2luJyxcbiAgICBlbmZvcmNlOiAncG9zdCcsXG4gICAgYXN5bmMgdHJhbnNmb3JtKGNvZGUpIHtcbiAgICAgIGNvbnN0IG0gPSBob2lzdE1vY2tzKGNvZGUpXG5cbiAgICAgIGlmIChtKSB7XG4gICAgICAgIC8vIGhvaXN0IHZpdGVzdCBpbXBvcnRzIGluIGNhc2UgaXQgd2FzIHVzZWQgaW5zaWRlIHZpLm1vY2sgZmFjdG9yeSAjNDI1XG4gICAgICAgIGNvbnN0IHZpdGVzdEltcG9ydHMgPSBjb2RlLm1hdGNoQWxsKHZpdGVzdFJlZ2V4cClcbiAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiB2aXRlc3RJbXBvcnRzKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXhTdGFydCA9IG1hdGNoLmluZGV4IVxuICAgICAgICAgIGNvbnN0IGluZGV4RW5kID0gbWF0Y2hbMF0ubGVuZ3RoICsgaW5kZXhTdGFydFxuICAgICAgICAgIG0ucmVtb3ZlKGluZGV4U3RhcnQsIGluZGV4RW5kKVxuICAgICAgICAgIG0ucHJlcGVuZChgJHttYXRjaFswXX1cXG5gKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29kZTogbS50b1N0cmluZygpLFxuICAgICAgICAgIG1hcDogbS5nZW5lcmF0ZU1hcCh7IGhpcmVzOiB0cnVlIH0pLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRNb2NrTGFzdEluZGV4KGNvZGU6IHN0cmluZyk6IG51bWJlciB8IG51bGwge1xuICBjb25zdCBpbmRleCA9IGdldENhbGxMYXN0SW5kZXgoY29kZSlcbiAgaWYgKGluZGV4ID09PSBudWxsKVxuICAgIHJldHVybiBudWxsXG4gIHJldHVybiBjb2RlW2luZGV4ICsgMV0gPT09ICc7JyA/IGluZGV4ICsgMiA6IGluZGV4ICsgMVxufVxuXG5mdW5jdGlvbiBnZXRJbmRleFN0YXR1cyhjb2RlOiBzdHJpbmcsIGZyb206IG51bWJlcikge1xuICBsZXQgaW5kZXggPSAwXG4gIGxldCBjb21tZW50U3RhcnRlZCA9IGZhbHNlXG4gIGxldCBjb21tZW50RW5kZWQgPSB0cnVlXG4gIGxldCBtdWx0aWxpbmVDb21tZW50U3RhcnRlZCA9IGZhbHNlXG4gIGxldCBtdWx0aWxpbmVDb21tZW50RW5kZWQgPSB0cnVlXG4gIGxldCBpblN0cmluZzogc3RyaW5nIHwgbnVsbCA9IG51bGxcbiAgbGV0IGJlZm9yZUNoYXI6IHN0cmluZyB8IG51bGwgPSBudWxsXG5cbiAgd2hpbGUgKGluZGV4IDw9IGZyb20pIHtcbiAgICBjb25zdCBjaGFyID0gY29kZVtpbmRleF1cbiAgICBjb25zdCBzdWIgPSBjb2RlW2luZGV4XSArIGNvZGVbaW5kZXggKyAxXVxuXG4gICAgaWYgKCFpblN0cmluZykge1xuICAgICAgaWYgKHN1YiA9PT0gJy8qJykge1xuICAgICAgICBtdWx0aWxpbmVDb21tZW50U3RhcnRlZCA9IHRydWVcbiAgICAgICAgbXVsdGlsaW5lQ29tbWVudEVuZGVkID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGlmIChzdWIgPT09ICcqLycgJiYgbXVsdGlsaW5lQ29tbWVudFN0YXJ0ZWQpIHtcbiAgICAgICAgbXVsdGlsaW5lQ29tbWVudFN0YXJ0ZWQgPSBmYWxzZVxuICAgICAgICBtdWx0aWxpbmVDb21tZW50RW5kZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICBpZiAoc3ViID09PSAnLy8nKSB7XG4gICAgICAgIGNvbW1lbnRTdGFydGVkID0gdHJ1ZVxuICAgICAgICBjb21tZW50RW5kZWQgPSBmYWxzZVxuICAgICAgfVxuICAgICAgaWYgKChjaGFyID09PSAnXFxuJyB8fCBzdWIgPT09ICdcXHJcXG4nKSAmJiBjb21tZW50U3RhcnRlZCkge1xuICAgICAgICBjb21tZW50U3RhcnRlZCA9IGZhbHNlXG4gICAgICAgIGNvbW1lbnRFbmRlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW11bHRpbGluZUNvbW1lbnRTdGFydGVkICYmICFjb21tZW50U3RhcnRlZCkge1xuICAgICAgY29uc3QgaXNDaGFyU3RyaW5nID0gY2hhciA9PT0gJ1wiJyB8fCBjaGFyID09PSAnXFwnJyB8fCBjaGFyID09PSAnYCdcblxuICAgICAgaWYgKGlzQ2hhclN0cmluZyAmJiBiZWZvcmVDaGFyICE9PSAnXFxcXCcpIHtcbiAgICAgICAgaWYgKGluU3RyaW5nID09PSBjaGFyKVxuICAgICAgICAgIGluU3RyaW5nID0gbnVsbFxuICAgICAgICBlbHNlIGlmICghaW5TdHJpbmcpXG4gICAgICAgICAgaW5TdHJpbmcgPSBjaGFyXG4gICAgICB9XG4gICAgfVxuXG4gICAgYmVmb3JlQ2hhciA9IGNvZGVbaW5kZXhdXG4gICAgaW5kZXgrK1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpbnNpZGVDb21tZW50OiAhbXVsdGlsaW5lQ29tbWVudEVuZGVkIHx8ICFjb21tZW50RW5kZWQsXG4gICAgaW5zaWRlU3RyaW5nOiBpblN0cmluZyAhPT0gbnVsbCxcbiAgfVxufVxuIiwiaW1wb3J0IE1hZ2ljU3RyaW5nIGZyb20gJ21hZ2ljLXN0cmluZydcbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAndml0ZSdcblxuZXhwb3J0IGNvbnN0IEVudlJlcGxhY2VyUGx1Z2luID0gKCk6IFBsdWdpbiA9PiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3ZpdGVzdDplbnYtcmVwbGFjZXInLFxuICAgIGVuZm9yY2U6ICdwcmUnLFxuICAgIHRyYW5zZm9ybShjb2RlKSB7XG4gICAgICBsZXQgczogTWFnaWNTdHJpbmcgfCBudWxsID0gbnVsbFxuXG4gICAgICBjb25zdCBlbnZzID0gY29kZS5tYXRjaEFsbCgvXFxiaW1wb3J0XFwubWV0YVxcLmVudlxcYi9nKVxuXG4gICAgICBmb3IgKGNvbnN0IGVudiBvZiBlbnZzKSB7XG4gICAgICAgIHMgfHw9IG5ldyBNYWdpY1N0cmluZyhjb2RlKVxuXG4gICAgICAgIGNvbnN0IHN0YXJ0SW5kZXggPSBlbnYuaW5kZXghXG4gICAgICAgIGNvbnN0IGVuZEluZGV4ID0gc3RhcnRJbmRleCArIGVudlswXS5sZW5ndGhcblxuICAgICAgICBzLm92ZXJ3cml0ZShzdGFydEluZGV4LCBlbmRJbmRleCwgJ3Byb2Nlc3MuZW52JylcbiAgICAgIH1cblxuICAgICAgaWYgKHMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb2RlOiBzLnRvU3RyaW5nKCksXG4gICAgICAgICAgbWFwOiBzLmdlbmVyYXRlTWFwKHsgaGlyZXM6IHRydWUgfSksXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFBsdWdpbiBhcyBWaXRlUGx1Z2luIH0gZnJvbSAndml0ZSdcbmltcG9ydCB7IGNvbmZpZ0RlZmF1bHRzIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBkZWVwTWVyZ2UsIGVuc3VyZVBhY2thZ2VJbnN0YWxsZWQsIG5vdE51bGxpc2ggfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IHJlc29sdmVBcGlDb25maWcgfSBmcm9tICcuLi9jb25maWcnXG5pbXBvcnQgeyBWaXRlc3QgfSBmcm9tICcuLi9jb3JlJ1xuaW1wb3J0IHsgR2xvYmFsU2V0dXBQbHVnaW4gfSBmcm9tICcuL2dsb2JhbFNldHVwJ1xuaW1wb3J0IHsgTW9ja3NQbHVnaW4gfSBmcm9tICcuL21vY2snXG5pbXBvcnQgeyBFbnZSZXBsYWNlclBsdWdpbiB9IGZyb20gJy4vZW52UmVwbGFjZXInXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBWaXRlc3RQbHVnaW4ob3B0aW9uczogVXNlckNvbmZpZyA9IHt9LCBjdHggPSBuZXcgVml0ZXN0KCkpOiBQcm9taXNlPFZpdGVQbHVnaW5bXT4ge1xuICBsZXQgaGF2ZVN0YXJ0ZWQgPSBmYWxzZVxuXG4gIGFzeW5jIGZ1bmN0aW9uIFVJUGx1Z2luKCkge1xuICAgIGF3YWl0IGVuc3VyZVBhY2thZ2VJbnN0YWxsZWQoJ0B2aXRlc3QvdWknKVxuICAgIHJldHVybiAoYXdhaXQgaW1wb3J0KCdAdml0ZXN0L3VpJykpLmRlZmF1bHQob3B0aW9ucy51aUJhc2UpXG4gIH1cblxuICByZXR1cm4gW1xuICAgIDxWaXRlUGx1Z2luPntcbiAgICAgIG5hbWU6ICd2aXRlc3QnLFxuICAgICAgZW5mb3JjZTogJ3ByZScsXG4gICAgICBjb25maWcodml0ZUNvbmZpZzogYW55KSB7XG4gICAgICAgIC8vIHByZWxpbWluYXJ5IG1lcmdlIG9mIG9wdGlvbnMgdG8gYmUgYWJsZSB0byBjcmVhdGUgc2VydmVyIG9wdGlvbnMgZm9yIHZpdGVcbiAgICAgICAgLy8gaG93ZXZlciB0byBhbGxvdyB2aXRlc3QgcGx1Z2lucyB0byBtb2RpZnkgdml0ZXN0IGNvbmZpZyB2YWx1ZXNcbiAgICAgICAgLy8gdGhpcyBpcyByZXBlYXRlZCBpbiBjb25maWdSZXNvbHZlZCB3aGVyZSB0aGUgY29uZmlnIGlzIGZpbmFsXG4gICAgICAgIGNvbnN0IHByZU9wdGlvbnMgPSBkZWVwTWVyZ2Uoe30sIG9wdGlvbnMsIHZpdGVDb25maWcudGVzdCA/PyB7fSlcbiAgICAgICAgcHJlT3B0aW9ucy5hcGkgPSByZXNvbHZlQXBpQ29uZmlnKHByZU9wdGlvbnMpXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAvLyB3ZSBhcmUgc2V0dGluZyBOT0RFX0VOViB3aGVuIHJ1bm5pbmcgQ0xJIHRvICd0ZXN0JyxcbiAgICAgICAgICAvLyBidXQgaXQgY2FuIGJlIG92ZXJyaWRkZW5cbiAgICAgICAgICBtb2RlOiB2aXRlQ29uZmlnLm1vZGUgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ3Rlc3QnLFxuICAgICAgICAgIGNsZWFyU2NyZWVuOiBmYWxzZSxcbiAgICAgICAgICByZXNvbHZlOiB7XG4gICAgICAgICAgICAvLyBieSBkZWZhdWx0IFZpdGUgcmVzb2x2ZXMgYG1vZHVsZWAgZmllbGQsIHdoaWNoIG5vdCBhbHdheXMgYSBuYXRpdmUgRVNNIG1vZHVsZVxuICAgICAgICAgICAgLy8gc2V0dGluZyB0aGlzIG9wdGlvbiBjYW4gYnlwYXNzIHRoYXQgYW5kIGZhbGxiYWNrIHRvIGNqcyB2ZXJzaW9uXG4gICAgICAgICAgICBtYWluRmllbGRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlcnZlcjoge1xuICAgICAgICAgICAgLi4ucHJlT3B0aW9ucy5hcGksXG4gICAgICAgICAgICBvcGVuOiBwcmVPcHRpb25zLnVpICYmIHByZU9wdGlvbnMub3BlblxuICAgICAgICAgICAgICA/IHByZU9wdGlvbnMudWlCYXNlID8/ICcvX192aXRlc3RfXy8nXG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcHJlVHJhbnNmb3JtUmVxdWVzdHM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gZGlzYWJsZSBkZXBzIG9wdGltaXphdGlvblxuICAgICAgICAgIGNhY2hlRGlyOiB1bmRlZmluZWQsXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBjb25maWdSZXNvbHZlZCh2aXRlQ29uZmlnKSB7XG4gICAgICAgIGNvbnN0IHZpdGVDb25maWdUZXN0ID0gKHZpdGVDb25maWcudGVzdCBhcyBhbnkpIHx8IHt9XG4gICAgICAgIGlmICh2aXRlQ29uZmlnVGVzdC53YXRjaCA9PT0gZmFsc2UpXG4gICAgICAgICAgdml0ZUNvbmZpZ1Rlc3QucnVuID0gdHJ1ZVxuXG4gICAgICAgIC8vIHZpdGVDb25maWcudGVzdCBpcyBmaW5hbCBub3csIG1lcmdlIGl0IGZvciByZWFsXG4gICAgICAgIG9wdGlvbnMgPSBkZWVwTWVyZ2UoXG4gICAgICAgICAge30sXG4gICAgICAgICAgY29uZmlnRGVmYXVsdHMsXG4gICAgICAgICAgdml0ZUNvbmZpZ1Rlc3QsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgICBvcHRpb25zLmFwaSA9IHJlc29sdmVBcGlDb25maWcob3B0aW9ucylcbiAgICAgICAgb3B0aW9ucy53YXRjaCA9IG9wdGlvbnMud2F0Y2ggJiYgIW9wdGlvbnMucnVuXG5cbiAgICAgICAgcHJvY2Vzcy5lbnYuQkFTRV9VUkwgPz89IHZpdGVDb25maWcuYmFzZVxuICAgICAgICBwcm9jZXNzLmVudi5NT0RFID8/PSB2aXRlQ29uZmlnLm1vZGVcbiAgICAgICAgLy8gcHJvY2Vzcy5lbnYgY2FuIGhhdmUgb25seSBzdHJpbmcgdmFsdWVzIGFuZCB3aWxsIGNhc3Qgc3RyaW5nIG9uIGl0IGlmIHdlIHBhc3Mgb3RoZXIgdHlwZSxcbiAgICAgICAgLy8gc28gd2UgYXJlIG1ha2luZyB0aGVtIHRydXRoeVxuICAgICAgICBwcm9jZXNzLmVudi5QUk9EID8/PSB2aXRlQ29uZmlnLmVudi5QUk9EID8gJzEnIDogJydcbiAgICAgICAgcHJvY2Vzcy5lbnYuREVWID8/PSB2aXRlQ29uZmlnLmVudi5ERVYgPyAnMScgOiAnJ1xuICAgICAgICBwcm9jZXNzLmVudi5TU1IgPz89ICcxJ1xuXG4gICAgICAgIC8vIGFjY291bnQgZm9yIHVzZXIgZW52IGRlZmluZXNcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdml0ZUNvbmZpZy5kZWZpbmUpIHtcbiAgICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ2ltcG9ydC5tZXRhLmVudi4nKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gdml0ZUNvbmZpZy5kZWZpbmVba2V5XVxuICAgICAgICAgICAgY29uc3QgZW52S2V5ID0ga2V5LnNsaWNlKCdpbXBvcnQubWV0YS5lbnYuJy5sZW5ndGgpXG4gICAgICAgICAgICBwcm9jZXNzLmVudltlbnZLZXldID0gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHZhbCkgOiB2YWxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBhc3luYyBjb25maWd1cmVTZXJ2ZXIoc2VydmVyKSB7XG4gICAgICAgIGlmIChoYXZlU3RhcnRlZClcbiAgICAgICAgICBhd2FpdCBjdHgucmVwb3J0KCdvblNlcnZlclJlc3RhcnQnKVxuICAgICAgICBhd2FpdCBjdHguc2V0U2VydmVyKG9wdGlvbnMsIHNlcnZlcilcbiAgICAgICAgaGF2ZVN0YXJ0ZWQgPSB0cnVlXG4gICAgICAgIGlmIChvcHRpb25zLmFwaSlcbiAgICAgICAgICAoYXdhaXQgaW1wb3J0KCcuLi8uLi9hcGkvc2V0dXAnKSkuc2V0dXAoY3R4KVxuXG4gICAgICAgIC8vICM0MTUsIGluIHJ1biBtb2RlIHdlIGRvbid0IG5lZWQgdGhlIHdhdGNoZXIsIGNsb3NlIGl0IHdvdWxkIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlXG4gICAgICAgIGlmICghb3B0aW9ucy53YXRjaClcbiAgICAgICAgICBhd2FpdCBzZXJ2ZXIud2F0Y2hlci5jbG9zZSgpXG4gICAgICB9LFxuICAgIH0sXG4gICAgRW52UmVwbGFjZXJQbHVnaW4oKSxcbiAgICBNb2Nrc1BsdWdpbigpLFxuICAgIEdsb2JhbFNldHVwUGx1Z2luKGN0eCksXG4gICAgb3B0aW9ucy51aVxuICAgICAgPyBhd2FpdCBVSVBsdWdpbigpXG4gICAgICA6IG51bGwsXG4gIF1cbiAgICAuZmlsdGVyKG5vdE51bGxpc2gpXG59XG4iLCJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aGUnXG5pbXBvcnQgeyBjcmVhdGVTZXJ2ZXIsIG1lcmdlQ29uZmlnIH0gZnJvbSAndml0ZSdcbmltcG9ydCB0eXBlIHsgSW5saW5lQ29uZmlnIGFzIFZpdGVJbmxpbmVDb25maWcsIFVzZXJDb25maWcgYXMgVml0ZVVzZXJDb25maWcgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHsgZmluZFVwIH0gZnJvbSAnZmluZC11cCdcbmltcG9ydCB0eXBlIHsgVXNlckNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgY29uZmlnRmlsZXMgfSBmcm9tICcuLi9jb25zdGFudHMnXG5pbXBvcnQgeyBWaXRlc3QgfSBmcm9tICcuL2NvcmUnXG5pbXBvcnQgeyBWaXRlc3RQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVWaXRlc3Qob3B0aW9uczogVXNlckNvbmZpZywgdml0ZU92ZXJyaWRlczogVml0ZVVzZXJDb25maWcgPSB7fSkge1xuICBjb25zdCBjdHggPSBuZXcgVml0ZXN0KClcbiAgY29uc3Qgcm9vdCA9IHJlc29sdmUob3B0aW9ucy5yb290IHx8IHByb2Nlc3MuY3dkKCkpXG5cbiAgY29uc3QgY29uZmlnUGF0aCA9IG9wdGlvbnMuY29uZmlnXG4gICAgPyByZXNvbHZlKHJvb3QsIG9wdGlvbnMuY29uZmlnKVxuICAgIDogYXdhaXQgZmluZFVwKGNvbmZpZ0ZpbGVzLCB7IGN3ZDogcm9vdCB9IGFzIGFueSlcblxuICBjb25zdCBjb25maWc6IFZpdGVJbmxpbmVDb25maWcgPSB7XG4gICAgcm9vdCxcbiAgICBsb2dMZXZlbDogJ2Vycm9yJyxcbiAgICBjb25maWdGaWxlOiBjb25maWdQYXRoLFxuICAgIHBsdWdpbnM6IGF3YWl0IFZpdGVzdFBsdWdpbihvcHRpb25zLCBjdHgpLFxuICB9XG5cbiAgY29uc3Qgc2VydmVyID0gYXdhaXQgY3JlYXRlU2VydmVyKG1lcmdlQ29uZmlnKGNvbmZpZywgdml0ZU92ZXJyaWRlcykpXG5cbiAgaWYgKGN0eC5jb25maWcuYXBpPy5wb3J0KVxuICAgIGF3YWl0IHNlcnZlci5saXN0ZW4oKVxuICBlbHNlXG4gICAgYXdhaXQgc2VydmVyLnBsdWdpbkNvbnRhaW5lci5idWlsZFN0YXJ0KHt9KVxuXG4gIHJldHVybiBjdHhcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwiZnNQcm9taXNlcyIsInBhdGgiLCJhcnJheSIsImVycm5vIiwiZnMiLCJEaXJlbnRGcm9tU3RhdHMiLCJjcmVhdGVEaXJlbnRGcm9tU3RhdHMiLCJwYXRoXzEiLCJyZXF1aXJlJCQwIiwiaXNFeHRnbG9iIiwiaXNHbG9iIiwicmVxdWlyZSQkMSIsInJlcXVpcmUkJDIiLCJnbG9iUGFyZW50IiwidXRpbHMiLCJzdHJpbmdpZnkiLCJpc051bWJlciIsInRvUmVnZXhSYW5nZSIsInV0aWwiLCJpc09iamVjdCIsInRyYW5zZm9ybSIsImZpbGwiLCJjb21waWxlIiwiZXhwYW5kIiwiY29uc3RhbnRzIiwiTUFYX0xFTkdUSCIsIkNIQVJfQ09NTUEiLCJDSEFSX0RPVCIsIkNIQVJfTEVGVF9QQVJFTlRIRVNFUyIsIkNIQVJfUklHSFRfUEFSRU5USEVTRVMiLCJDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UiLCJDSEFSX1JJR0hUX0NVUkxZX0JSQUNFIiwiQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUIiwiQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCIsInBhcnNlIiwicGFyc2VfMSIsInJlcXVpcmUkJDMiLCJicmFjZXMiLCJQT1NJWF9SRUdFWF9TT1VSQ0UiLCJzY2FuIiwicmVxdWlyZSQkNCIsInBpY29tYXRjaCIsIm1pY3JvbWF0Y2giLCJwYXR0ZXJuIiwiZ2V0UG9zaXRpdmVQYXR0ZXJucyIsIm1lcmdlMiIsInN0cmVhbSIsInN0cmluZyIsInJlcXVpcmUkJDUiLCJyZXF1aXJlJCQ2IiwiYXN5bmMiLCJyZWFkIiwiY2FsbEZhaWx1cmVDYWxsYmFjayIsImNhbGxTdWNjZXNzQ2FsbGJhY2siLCJzeW5jIiwic2V0dGluZ3MiLCJTZXR0aW5ncyIsIm91dCIsInNldHRpbmdzXzEiLCJnZXRTZXR0aW5ncyIsInF1ZXVlTWljcm90YXNrIiwiY29tbW9uIiwiam9pblBhdGhTZWdtZW50cyIsImZzU3RhdCIsImNvbnN0YW50c18xIiwicmVhZGRpcldpdGhGaWxlVHlwZXMiLCJyZWFkZGlyIiwicmV1c2lmeSIsInJlYWRlciIsIlJlYWRlciIsImZzU2NhbmRpciIsInJlYWRlcl8xIiwiYXN5bmNfMSIsInN0cmVhbV8xIiwic3luY18xIiwiZnNXYWxrIiwiZW50cnkiLCJwcm92aWRlcl8xIiwic2xhc2giLCJfX2RlZlByb3AiLCJfX2RlZlByb3BzIiwiX19nZXRPd25Qcm9wRGVzY3MiLCJfX2dldE93blByb3BTeW1ib2xzIiwiX19oYXNPd25Qcm9wIiwiX19wcm9wSXNFbnVtIiwiX19kZWZOb3JtYWxQcm9wIiwiX19zcHJlYWRWYWx1ZXMiLCJfX3NwcmVhZFByb3BzIiwiZmxhdHRlblRhc2tzIiwibm9vcCIsImZnIiwibW0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLElBQUksQ0FBQztBQUNYLENBQUMsS0FBSyxDQUFDO0FBQ1AsQ0FBQyxJQUFJLENBQUM7QUFDTjtBQUNBLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtBQUNwQixFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLEVBQUU7QUFDRixDQUFDO0FBQ0Q7QUFDZSxNQUFNLEtBQUssQ0FBQztBQUMzQixDQUFDLEtBQUssQ0FBQztBQUNQLENBQUMsS0FBSyxDQUFDO0FBQ1AsQ0FBQyxLQUFLLENBQUM7QUFDUDtBQUNBLENBQUMsV0FBVyxHQUFHO0FBQ2YsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDZixFQUFFO0FBQ0Y7QUFDQSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDaEIsRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQjtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ2xCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckIsR0FBRyxNQUFNO0FBQ1QsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUks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QU8sS0FBSyxDQUFDO0FBQ3BDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ3ZFLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDO0FBQy9ELENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEtBQUs7QUFDN0MsRUFBRSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPO0FBQ3BCO0FBQ0EsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO0FBQ3JGLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtBQUMvQixNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDckMsTUFBTSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUMxQixLQUFLO0FBQ0wsR0FBRztBQUNILENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsSUFBSSxJQUFJO0FBQy9CLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxPQUFPLEtBQUssQ0FBQztBQUMxQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxJ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SSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNsRCxJQUFJLE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0MsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRTtBQUNsQyxJQUFJLE9BQU9BLE1BQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3BELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSUYsVUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3RCLElBQUksT0FBT0UsTUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3JDLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0FBQzVCLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUM5QyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7QUFDaEM7QUFDQSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdkIsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0YsVUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RSxJQUFJLE9BQU9FLE1BQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxH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VyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUU7QUFDdEUsUUFBUSxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3BELE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsU0FBUyxFQUFFLENBQUMsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzFGLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtBQUNyQyxRQUFRLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUMxRCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4QixHQUFHLENBQUM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3RFLElBQUksSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQzVCO0FBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxFQUFF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QUFLLENBQUM7QUFDL0IsUUFBUSxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUMzQixRQUFRLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQzlCLFVBQVUsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRCxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzdDLE1BQU0sU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFCLE1BQU0sTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25CLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQy9CLFFBQVEsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDbkQsT0FBTztBQUNQLE1BQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDdkIsTUFBTSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDekI7QUFDQSxNQUFNLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlDLE1BQU0sSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFO0FB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QU87QUFDUDtBQUNBLE1BQU0sTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztBQUM3RixNQUFNLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztBQUM3RixNQUFNLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDeEUsUUFBUSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRCxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0E7QUFDQSxNQUFNLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO0FBQ3pDLFFBQVEsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsUUFBUSxJQUFJLEtBQUssSUFBSSxLQUFLLEtBQUssR0FBRyxFQUFFO0FBQ3BDLFVBQVUsTUFBTTtBQUNoQixTQUFTO0FBQ1QsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixRQUFRLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLEdBQUcsRUFBRSxFQUFFO0FBQ3pDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7QUFDL0IsUUFBUSxJQUFJ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Q3hDLE1BQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQXdDLFdBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sS0FBS0EsV0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsV0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEtBQUs7QUFDeEMsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSUEsV0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNuRixFQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLFdBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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QUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDL0QsUUFBUSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEYsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUUsUUFBUSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEYsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkUsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEUsUUFBUSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEYsUUFBUSxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xILFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pFLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQ2xDLFlBQVksSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFD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Q3JELElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU07QUFDcEQsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pELElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO0FBQ3JFLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxhQUFhO0FBQzlDLFFBQVEsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRixLQUFLO0FBQ0wsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3pCLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQztBQUNuQixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM3RCxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxNQUFNLE1BQU0sSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtBQUNwRyxNQUFNLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsTUFBTSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUNwQyxRQUFRLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4RSxRQUFRLElBQUksSUFBSSxLQUFLLEVBQUU7QUFDdkIsVUFBVSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUM7QUFDeEIsT0FBTztBQUNQLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO0FBQ3hCLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDOUQsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsT0FBTztBQUNQLEtBQUs7QUFDTCxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3hELE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssTUFBTSxLQUFLLElB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RyxDQUFDLEVBQUU7QUFDMUQsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RSxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDN0IsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixPQUFPLE1BQU07QUFDYixRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRSxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtBQUM5RixVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDL0IsVUFBVSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUMxQyxVQUFVLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRCxVQUFVLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxV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