@galacean/engine-loader 0.0.0-experimental-animator-additive.1 → 0.0.0-experimental-animator-additive.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.
package/dist/main.js CHANGED
@@ -4508,4 +4508,4 @@ exports.ReflectionParser = ReflectionParser;
4508
4508
  exports.SceneParser = SceneParser;
4509
4509
  exports.decode = decode;
4510
4510
  exports.parseSingleKTX = parseSingleKTX;
4511
- //# sourceMappingURL=main.js.map
4511
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMC9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fZXh0ZW5kcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjAvbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX3NldF9wcm90b3R5cGVfb2YuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHN3YytoZWxwZXJzQDAuNS4wL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pbmhlcml0cy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS90c2xpYkAyLjUuMC9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwiLi4vc3JjL0FuaW1hdG9yQ29udHJvbGxlckxvYWRlci50cyIsIi4uL3NyYy9CdWZmZXJMb2FkZXIudHMiLCIuLi9zcmMvRW52TG9hZGVyLnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMC9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fYXN5bmNfdG9fZ2VuZXJhdG9yLmpzIiwiLi4vc3JjL0ZvbnRMb2FkZXIudHMiLCIuLi9zcmMvZ2x0Zi9wYXJzZXIvUGFyc2VyQ29udGV4dC50cyIsIi4uL3NyYy9nbHRmL1NjaGVtYS50cyIsIi4uL3NyYy9nbHRmL0dMVEZVdGlsLnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMC9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fYXJyYXlfbGlrZV90b19hcnJheS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjAvbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX2FycmF5X3dpdGhvdXRfaG9sZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHN3YytoZWxwZXJzQDAuNS4wL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pdGVyYWJsZV90b19hcnJheS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjAvbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX25vbl9pdGVyYWJsZV9zcHJlYWQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHN3YytoZWxwZXJzQDAuNS4wL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL191bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjAvbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX3RvX2NvbnN1bWFibGVfYXJyYXkuanMiLCIuLi9zcmMvZ2x0Zi9wYXJzZXIvUGFyc2VyLnRzIiwiLi4vc3JjL2dsdGYvZXh0ZW5zaW9ucy9FeHRlbnNpb25QYXJzZXIudHMiLCIuLi9zcmMvZ2x0Zi9leHRlbnNpb25zL0tIUl9kcmFjb19tZXNoX2NvbXByZXNzaW9uLnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMC9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW5zdGFuY2VvZi5qcyIsIi4uL3NyYy9nbHRmL2V4dGVuc2lvbnMvS0hSX2xpZ2h0c19wdW5jdHVhbC50cyIsIi4uL3NyYy9nbHRmL3BhcnNlci9NYXRlcmlhbFBhcnNlci50cyIsIi4uL3NyYy9nbHRmL2V4dGVuc2lvbnMvS0hSX21hdGVyaWFsc19jbGVhcmNvYXQudHMiLCIuLi9zcmMvZ2x0Zi9leHRlbnNpb25zL0tIUl9tYXRlcmlhbHNfcGJyU3BlY3VsYXJHbG9zc2luZXNzLnRzIiwiLi4vc3JjL2dsdGYvZXh0ZW5zaW9ucy9LSFJfbWF0ZXJpYWxzX3VubGl0LnRzIiwiLi4vc3JjL2dsdGYvZXh0ZW5zaW9ucy9LSFJfbWF0ZXJpYWxzX3ZhcmlhbnRzLnRzIiwiLi4vc3JjL2dsdGYvZXh0ZW5zaW9ucy9LSFJfbWVzaF9xdWFudGl6YXRpb24udHMiLCIuLi9zcmMvZ2x0Zi9leHRlbnNpb25zL0tIUl90ZXh0dXJlX3RyYW5zZm9ybS50cyIsIi4uL3NyYy9nbHRmL2V4dGVuc2lvbnMvR0FMQUNFQU5fbWF0ZXJpYWxzX3JlbWFwLnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMC9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9fY3JlYXRlX2Zvcl9vZl9pdGVyYXRvcl9oZWxwZXJfbG9vc2UuanMiLCIuLi9zcmMvZ2x0Zi9wYXJzZXIvQW5pbWF0aW9uUGFyc2VyLnRzIiwiLi4vc3JjL2dsdGYvcGFyc2VyL0J1ZmZlclBhcnNlci50cyIsIi4uL3NyYy9nbHRmL3BhcnNlci9FbnRpdHlQYXJzZXIudHMiLCIuLi9zcmMvZ2x0Zi9wYXJzZXIvTWVzaFBhcnNlci50cyIsIi4uL3NyYy9nbHRmL3BhcnNlci9TY2VuZVBhcnNlci50cyIsIi4uL3NyYy9nbHRmL3BhcnNlci9Ta2luUGFyc2VyLnRzIiwiLi4vc3JjL2dsdGYvcGFyc2VyL1RleHR1cmVQYXJzZXIudHMiLCIuLi9zcmMvZ2x0Zi9wYXJzZXIvVmFsaWRhdG9yLnRzIiwiLi4vc3JjL2dsdGYvR0xURlBhcnNlci50cyIsIi4uL3NyYy9nbHRmL0dMVEZSZXNvdXJjZS50cyIsIi4uL3NyYy9HTFRGTG9hZGVyLnRzIiwiLi4vc3JjL0hEUkxvYWRlci50cyIsIi4uL3NyYy9KU09OTG9hZGVyLnRzIiwiLi4vc3JjL2NvbXByZXNzZWQtdGV4dHVyZS9LaHJvbm9zVGV4dHVyZUNvbnRhaW5lci50cyIsIi4uL3NyYy9jb21wcmVzc2VkLXRleHR1cmUvaW5kZXgudHMiLCIuLi9zcmMvS1RYQ3ViZUxvYWRlci50cyIsIi4uL3NyYy9LVFhMb2FkZXIudHMiLCIuLi9zcmMvTWF0ZXJpYWxMb2FkZXIudHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHN3YytoZWxwZXJzQDAuNS4wL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jcmVhdGVfY2xhc3MuanMiLCIuLi9zcmMvcmVzb3VyY2UtZGVzZXJpYWxpemUvdXRpbHMvQnVmZmVyUmVhZGVyLnRzIiwiLi4vc3JjL3Jlc291cmNlLWRlc2VyaWFsaXplL3V0aWxzL0RlY29yYXRvci50cyIsIi4uL3NyYy9yZXNvdXJjZS1kZXNlcmlhbGl6ZS91dGlscy9GaWxlSGVhZGVyLnRzIiwiLi4vc3JjL3Jlc291cmNlLWRlc2VyaWFsaXplL3Jlc291cmNlcy9tZXNoL01lc2hEZWNvZGVyLnRzIiwiLi4vc3JjL3Jlc291cmNlLWRlc2VyaWFsaXplL3Jlc291cmNlcy90ZXh0dXJlMkQvVGV4dHVyZURlY29kZXIudHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHN3YytoZWxwZXJzQDAuNS4wL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3QuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHN3YytoZWxwZXJzQDAuNS4wL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jb25zdHJ1Y3QuanMiLCIuLi9zcmMvcmVzb3VyY2UtZGVzZXJpYWxpemUvcmVzb3VyY2VzL3ByZWZhYi9SZWZsZWN0aW9uUGFyc2VyLnRzIiwiLi4vc3JjL3Jlc291cmNlLWRlc2VyaWFsaXplL3Jlc291cmNlcy9wcmVmYWIvUHJlZmFiUGFyc2VyLnRzIiwiLi4vc3JjL3Jlc291cmNlLWRlc2VyaWFsaXplL3Jlc291cmNlcy9hbmltYXRpb25DbGlwL0NvbXBvbmVudE1hcC50cyIsIi4uL3NyYy9yZXNvdXJjZS1kZXNlcmlhbGl6ZS9yZXNvdXJjZXMvYW5pbWF0aW9uQ2xpcC9BbmltYXRpb25DbGlwRGVjb2Rlci50cyIsIi4uL3NyYy9yZXNvdXJjZS1kZXNlcmlhbGl6ZS9yZXNvdXJjZXMvc2NlbmUvU2NlbmVQYXJzZXJDb250ZXh0LnRzIiwiLi4vc3JjL3Jlc291cmNlLWRlc2VyaWFsaXplL3Jlc291cmNlcy9zY2VuZS9TY2VuZVBhcnNlci50cyIsIi4uL3NyYy9yZXNvdXJjZS1kZXNlcmlhbGl6ZS9yZXNvdXJjZXMvc2NlbmUvTWVzaExvYWRlci50cyIsIi4uL3NyYy9yZXNvdXJjZS1kZXNlcmlhbGl6ZS9yZXNvdXJjZXMvc2NlbmUvRWRpdG9yVGV4dHVyZUxvYWRlci50cyIsIi4uL3NyYy9yZXNvdXJjZS1kZXNlcmlhbGl6ZS9pbmRleC50cyIsIi4uL3NyYy9NZXNoTG9hZGVyLnRzIiwiLi4vc3JjL1NvdXJjZUZvbnRMb2FkZXIudHMiLCIuLi9zcmMvU3ByaXRlQXRsYXNMb2FkZXIudHMiLCIuLi9zcmMvU3ByaXRlTG9hZGVyLnRzIiwiLi4vc3JjL1RleHR1cmUyRExvYWRlci50cyIsIi4uL3NyYy9UZXh0dXJlQ3ViZUxvYWRlci50cyIsIi4uL3NyYy9TY2VuZUxvYWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gICAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfTtcblxuICAgIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuZXhwb3J0IHsgX2V4dGVuZHMgYXMgXyB9O1xuIiwiZXhwb3J0IGZ1bmN0aW9uIF9zZXRfcHJvdG90eXBlX29mKG8sIHApIHtcbiAgICBfc2V0X3Byb3RvdHlwZV9vZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgICAgIG8uX19wcm90b19fID0gcDtcblxuICAgICAgICByZXR1cm4gbztcbiAgICB9O1xuXG4gICAgcmV0dXJuIF9zZXRfcHJvdG90eXBlX29mKG8sIHApO1xufVxuZXhwb3J0IHsgX3NldF9wcm90b3R5cGVfb2YgYXMgXyB9O1xuIiwiaW1wb3J0IHsgX3NldF9wcm90b3R5cGVfb2YgfSBmcm9tIFwiLi9fc2V0X3Byb3RvdHlwZV9vZi5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gICAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gICAgfVxuXG4gICAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pO1xuXG4gICAgaWYgKHN1cGVyQ2xhc3MpIF9zZXRfcHJvdG90eXBlX29mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTtcbn1cbmV4cG9ydCB7IF9pbmhlcml0cyBhcyBfIH07XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMucHVzaChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy5wdXNoKF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcbiIsImltcG9ydCB7XG4gIHJlc291cmNlTG9hZGVyLFxuICBMb2FkZXIsXG4gIEFzc2V0UHJvbWlzZSxcbiAgQXNzZXRUeXBlLFxuICBMb2FkSXRlbSxcbiAgUmVzb3VyY2VNYW5hZ2VyLFxuICBBbmltYXRvckNvbnRyb2xsZXIsXG4gIEFuaW1hdG9yQ29udHJvbGxlckxheWVyLFxuICBBbmltYXRvclN0YXRlTWFjaGluZSxcbiAgQW5pbWF0b3JTdGF0ZVRyYW5zaXRpb25cbn0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuXG5AcmVzb3VyY2VMb2FkZXIoQXNzZXRUeXBlLkFuaW1hdG9yQ29udHJvbGxlciwgW1wianNvblwiXSwgZmFsc2UpXG5jbGFzcyBBbmltYXRvckNvbnRyb2xsZXJMb2FkZXIgZXh0ZW5kcyBMb2FkZXI8QW5pbWF0b3JDb250cm9sbGVyPiB7XG4gIGxvYWQoaXRlbTogTG9hZEl0ZW0sIHJlc291cmNlTWFuYWdlcjogUmVzb3VyY2VNYW5hZ2VyKTogQXNzZXRQcm9taXNlPEFuaW1hdG9yQ29udHJvbGxlcj4ge1xuICAgIHJldHVybiBuZXcgQXNzZXRQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdDxhbnk+KGl0ZW0udXJsLCB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIHR5cGU6IFwianNvblwiXG4gICAgICB9KVxuICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFuaW1hdG9yQ29udHJvbGxlciA9IG5ldyBBbmltYXRvckNvbnRyb2xsZXIoKTtcbiAgICAgICAgICBjb25zdCB7IGxheWVycyB9ID0gZGF0YTtcbiAgICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgICAgICAgIGxheWVycy5mb3JFYWNoKChsYXllckRhdGEsIGxheWVySW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBuYW1lLCBibGVuZGluZ01vZGUsIHdlaWdodCwgc3RhdGVNYWNoaW5lOiBzdGF0ZU1hY2hpbmVEYXRhIH0gPSBsYXllckRhdGE7XG4gICAgICAgICAgICBjb25zdCBsYXllciA9IG5ldyBBbmltYXRvckNvbnRyb2xsZXJMYXllcihuYW1lKTtcbiAgICAgICAgICAgIGxheWVyLmJsZW5kaW5nTW9kZSA9IGJsZW5kaW5nTW9kZTtcbiAgICAgICAgICAgIGxheWVyLndlaWdodCA9IHdlaWdodDtcbiAgICAgICAgICAgIGlmIChzdGF0ZU1hY2hpbmVEYXRhKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgc3RhdGVzIH0gPSBzdGF0ZU1hY2hpbmVEYXRhO1xuICAgICAgICAgICAgICBjb25zdCBzdGF0ZU1hY2hpbmUgPSAobGF5ZXIuc3RhdGVNYWNoaW5lID0gbmV3IEFuaW1hdG9yU3RhdGVNYWNoaW5lKCkpO1xuICAgICAgICAgICAgICBzdGF0ZXMuZm9yRWFjaCgoc3RhdGVEYXRhLCBzdGF0ZUluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgc3BlZWQsXG4gICAgICAgICAgICAgICAgICB3cmFwTW9kZSxcbiAgICAgICAgICAgICAgICAgIGNsaXBTdGFydE5vcm1hbGl6ZWRUaW1lLFxuICAgICAgICAgICAgICAgICAgY2xpcEVuZE5vcm1hbGl6ZWRUaW1lLFxuICAgICAgICAgICAgICAgICAgaXNEZWZhdWx0U3RhdGUsXG4gICAgICAgICAgICAgICAgICBjbGlwOiBjbGlwRGF0YVxuICAgICAgICAgICAgICAgIH0gPSBzdGF0ZURhdGE7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBzdGF0ZU1hY2hpbmUuYWRkU3RhdGUobmFtZSk7XG4gICAgICAgICAgICAgICAgaXNEZWZhdWx0U3RhdGUgJiYgKHN0YXRlTWFjaGluZS5kZWZhdWx0U3RhdGUgPSBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgc3RhdGUuc3BlZWQgPSBzcGVlZDtcbiAgICAgICAgICAgICAgICBzdGF0ZS53cmFwTW9kZSA9IHdyYXBNb2RlO1xuICAgICAgICAgICAgICAgIHN0YXRlLmNsaXBTdGFydFRpbWUgPSBjbGlwU3RhcnROb3JtYWxpemVkVGltZTtcbiAgICAgICAgICAgICAgICBzdGF0ZS5jbGlwRW5kVGltZSA9IGNsaXBFbmROb3JtYWxpemVkVGltZTtcbiAgICAgICAgICAgICAgICBpZiAoY2xpcERhdGEpIHtcbiAgICAgICAgICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VNYW5hZ2VyLmdldFJlc291cmNlQnlSZWYoY2xpcERhdGEpLnRoZW4oKGNsaXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZUluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgc3RhdGVzLmZvckVhY2goKHN0YXRlRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbmFtZSwgdHJhbnNpdGlvbnMgfSA9IHN0YXRlRGF0YTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5mb3JFYWNoKCh0cmFuc2l0aW9uRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRTdGF0ZU5hbWUsIGR1cmF0aW9uLCBvZmZzZXQsIGV4aXRUaW1lIH0gPSB0cmFuc2l0aW9uRGF0YTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNvdXJjZVN0YXRlID0gc3RhdGVNYWNoaW5lLmZpbmRTdGF0ZUJ5TmFtZShuYW1lKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc3RTdGF0ZSA9IHN0YXRlTWFjaGluZS5maW5kU3RhdGVCeU5hbWUodGFyZ2V0U3RhdGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zaXRpb24gPSBuZXcgQW5pbWF0b3JTdGF0ZVRyYW5zaXRpb24oKTtcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uZGVzdGluYXRpb25TdGF0ZSA9IGRlc3RTdGF0ZTtcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24uZXhpdFRpbWUgPSBleGl0VGltZTtcbiAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24ub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgc291cmNlU3RhdGUuYWRkVHJhbnNpdGlvbih0cmFuc2l0aW9uKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbmltYXRvckNvbnRyb2xsZXIuYWRkTGF5ZXIobGF5ZXIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKChjbGlwRGF0YSkgPT4ge1xuICAgICAgICAgICAgY2xpcERhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGxheWVySW5kZXgsIHN0YXRlSW5kZXgsIGNsaXAgfSA9IGRhdGE7XG4gICAgICAgICAgICAgIGFuaW1hdG9yQ29udHJvbGxlci5sYXllcnNbbGF5ZXJJbmRleF0uc3RhdGVNYWNoaW5lLnN0YXRlc1tzdGF0ZUluZGV4XS5jbGlwID0gY2xpcDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzb2x2ZShhbmltYXRvckNvbnRyb2xsZXIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gocmVqZWN0KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgcmVzb3VyY2VMb2FkZXIsIExvYWRlciwgQXNzZXRQcm9taXNlLCBBc3NldFR5cGUsIExvYWRJdGVtIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuXG5mdW5jdGlvbiBpc0Jhc2U2NCh1cmwpIHtcbiAgcmV0dXJuIC9eZGF0YTooLis/KTtiYXNlNjQsLy50ZXN0KHVybCk7XG59XG5AcmVzb3VyY2VMb2FkZXIoQXNzZXRUeXBlLkJ1ZmZlciwgW1wiYmluXCIsIFwicjNiaW5cIl0sIGZhbHNlKVxuY2xhc3MgQnVmZmVyTG9hZGVyIGV4dGVuZHMgTG9hZGVyPEFycmF5QnVmZmVyPiB7XG4gIGxvYWQoaXRlbTogTG9hZEl0ZW0pOiBBc3NldFByb21pc2U8QXJyYXlCdWZmZXI+IHtcbiAgICBjb25zdCB1cmwgPSBpdGVtLnVybDtcbiAgICBpZiAoaXNCYXNlNjQodXJsKSkge1xuICAgICAgcmV0dXJuIG5ldyBBc3NldFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgY29uc3QgYmFzZTY0U3RyID0gdXJsLnNsaWNlKDEzICsgUmVnRXhwLiQxLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFVpbnQ4QXJyYXkuZnJvbShhdG9iKGJhc2U2NFN0ciksIChjKSA9PiBjLmNoYXJDb2RlQXQoMCkpO1xuICAgICAgICByZXNvbHZlKHJlc3VsdC5idWZmZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCB7XG4gICAgICAuLi5pdGVtLFxuICAgICAgdHlwZTogXCJhcnJheWJ1ZmZlclwiXG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFtYmllbnRMaWdodCxcbiAgQXNzZXRQcm9taXNlLFxuICBBc3NldFR5cGUsXG4gIERpZmZ1c2VNb2RlLFxuICBMb2FkZXIsXG4gIExvYWRJdGVtLFxuICByZXNvdXJjZUxvYWRlcixcbiAgUmVzb3VyY2VNYW5hZ2VyLFxuICBUZXh0dXJlQ3ViZSxcbiAgVGV4dHVyZUN1YmVGYWNlLFxuICBUZXh0dXJlRmlsdGVyTW9kZVxufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBTcGhlcmljYWxIYXJtb25pY3MzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtbWF0aFwiO1xuXG5AcmVzb3VyY2VMb2FkZXIoQXNzZXRUeXBlLkVudiwgW1wiZW52XCJdKVxuY2xhc3MgRW52TG9hZGVyIGV4dGVuZHMgTG9hZGVyPEFtYmllbnRMaWdodD4ge1xuICBsb2FkKGl0ZW06IExvYWRJdGVtLCByZXNvdXJjZU1hbmFnZXI6IFJlc291cmNlTWFuYWdlcik6IEFzc2V0UHJvbWlzZTxBbWJpZW50TGlnaHQ+IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0UHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlcXVlc3Q8QXJyYXlCdWZmZXI+KGl0ZW0udXJsLCB7IHR5cGU6IFwiYXJyYXlidWZmZXJcIiB9KVxuICAgICAgICAudGhlbigoYXJyYXlidWZmZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBzaEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShhcnJheWJ1ZmZlciwgMCwgMjcpO1xuICAgICAgICAgIGNvbnN0IHNoQnl0ZUxlbmd0aCA9IDI3ICogNDtcbiAgICAgICAgICBjb25zdCBzaXplID0gbmV3IFVpbnQxNkFycmF5KGFycmF5YnVmZmVyLCBzaEJ5dGVMZW5ndGgsIDEpPy5bMF07XG5cbiAgICAgICAgICBjb25zdCB0ZXh0dXJlID0gbmV3IFRleHR1cmVDdWJlKHJlc291cmNlTWFuYWdlci5lbmdpbmUsIHNpemUpO1xuICAgICAgICAgIHRleHR1cmUuZmlsdGVyTW9kZSA9IFRleHR1cmVGaWx0ZXJNb2RlLlRyaWxpbmVhcjtcbiAgICAgICAgICBjb25zdCBtaXBtYXBDb3VudCA9IHRleHR1cmUubWlwbWFwQ291bnQ7XG4gICAgICAgICAgbGV0IG9mZnNldCA9IHNoQnl0ZUxlbmd0aCArIDI7XG5cbiAgICAgICAgICBmb3IgKGxldCBtaXBMZXZlbCA9IDA7IG1pcExldmVsIDwgbWlwbWFwQ291bnQ7IG1pcExldmVsKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG1pcFNpemUgPSBzaXplID4+IG1pcExldmVsO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykge1xuICAgICAgICAgICAgICBjb25zdCBkYXRhU2l6ZSA9IG1pcFNpemUgKiBtaXBTaXplICogNDtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyLCBvZmZzZXQsIGRhdGFTaXplKTtcbiAgICAgICAgICAgICAgb2Zmc2V0ICs9IGRhdGFTaXplO1xuICAgICAgICAgICAgICB0ZXh0dXJlLnNldFBpeGVsQnVmZmVyKFRleHR1cmVDdWJlRmFjZS5Qb3NpdGl2ZVggKyBmYWNlLCBkYXRhLCBtaXBMZXZlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYW1iaWVudExpZ2h0ID0gbmV3IEFtYmllbnRMaWdodCgpO1xuICAgICAgICAgIGNvbnN0IHNoID0gbmV3IFNwaGVyaWNhbEhhcm1vbmljczMoKTtcblxuICAgICAgICAgIGFtYmllbnRMaWdodC5kaWZmdXNlTW9kZSA9IERpZmZ1c2VNb2RlLlNwaGVyaWNhbEhhcm1vbmljcztcbiAgICAgICAgICBzaC5jb3B5RnJvbUFycmF5KHNoQXJyYXkpO1xuICAgICAgICAgIGFtYmllbnRMaWdodC5kaWZmdXNlU3BoZXJpY2FsSGFybW9uaWNzID0gc2g7XG4gICAgICAgICAgYW1iaWVudExpZ2h0LnNwZWN1bGFyVGV4dHVyZSA9IHRleHR1cmU7XG4gICAgICAgICAgYW1iaWVudExpZ2h0LnNwZWN1bGFyVGV4dHVyZURlY29kZVJHQk0gPSB0cnVlO1xuXG4gICAgICAgICAgcmVzb2x2ZShhbWJpZW50TGlnaHQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpO1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGluZm8uZG9uZSkgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgZWxzZSBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2FzeW5jX3RvX2dlbmVyYXRvcihmbikge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcblxuICAgICAgICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIF90aHJvdyhlcnIpIHtcbiAgICAgICAgICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX25leHQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmV4cG9ydCB7IF9hc3luY190b19nZW5lcmF0b3IgYXMgXyB9O1xuIiwiaW1wb3J0IHsgQXNzZXRQcm9taXNlLCBBc3NldFR5cGUsIEZvbnQsIExvYWRlciwgTG9hZEl0ZW0sIHJlc291cmNlTG9hZGVyLCBSZXNvdXJjZU1hbmFnZXIgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5cbkByZXNvdXJjZUxvYWRlcihBc3NldFR5cGUuRm9udCwgW1wiZm9udFwiXSwgZmFsc2UpXG5jbGFzcyBGb250TG9hZGVyIGV4dGVuZHMgTG9hZGVyPEZvbnQ+IHtcbiAgbG9hZChpdGVtOiBMb2FkSXRlbSwgcmVzb3VyY2VNYW5hZ2VyOiBSZXNvdXJjZU1hbmFnZXIpOiBBc3NldFByb21pc2U8Rm9udD4ge1xuICAgIHJldHVybiBuZXcgQXNzZXRQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdDxhbnk+KGl0ZW0udXJsLCB7IHR5cGU6IFwianNvblwiIH0pXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBmb250TmFtZSwgZm9udFVybCB9ID0gZGF0YTtcblxuICAgICAgICAgIGlmIChmb250VXJsKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWdpc3RlckZvbnQoZm9udE5hbWUsIGZvbnRVcmwpXG4gICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb250ID0gbmV3IEZvbnQocmVzb3VyY2VNYW5hZ2VyLmVuZ2luZSwgZm9udE5hbWUpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoZm9udCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlamVjdChgbG9hZCBmb250ICR7Zm9udFVybH0gZmFpbGApO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZm9udCA9IG5ldyBGb250KHJlc291cmNlTWFuYWdlci5lbmdpbmUsIGZvbnROYW1lKTtcbiAgICAgICAgICAgIHJlc29sdmUoZm9udCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfcmVnaXN0ZXJGb250KGZvbnROYW1lOiBzdHJpbmcsIGZvbnRVcmw6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvbnRGYWNlID0gbmV3IEZvbnRGYWNlKGZvbnROYW1lLCBgdXJsKCR7Zm9udFVybH0pYCk7XG4gICAgYXdhaXQgZm9udEZhY2UubG9hZCgpO1xuICAgIGRvY3VtZW50LmZvbnRzLmFkZChmb250RmFjZSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFuaW1hdGlvbkNsaXAsXG4gIEFzc2V0UHJvbWlzZSxcbiAgQnVmZmVyLFxuICBFbnRpdHksXG4gIE1hdGVyaWFsLFxuICBNb2RlbE1lc2gsXG4gIFRleHR1cmUyRCxcbiAgVHlwZWRBcnJheVxufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBHTFRGUmVzb3VyY2UgfSBmcm9tIFwiLi4vR0xURlJlc291cmNlXCI7XG5pbXBvcnQgeyBJR0xURiB9IGZyb20gXCIuLi9TY2hlbWFcIjtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFBhcnNlckNvbnRleHQge1xuICBnbHRmOiBJR0xURjtcbiAgYnVmZmVyczogQXJyYXlCdWZmZXJbXTtcbiAgZ2xURlJlc291cmNlOiBHTFRGUmVzb3VyY2U7XG4gIGtlZXBNZXNoRGF0YTogYm9vbGVhbjtcbiAgaGFzU2tpbm5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICAvKiogY2hhaW4gYXNzZXQgcHJvbWlzZSAqL1xuICBjaGFpblByb21pc2VzOiBBc3NldFByb21pc2U8YW55PltdID0gW107XG4gIGFjY2Vzc29yQnVmZmVyQ2FjaGU6IFJlY29yZDxzdHJpbmcsIEJ1ZmZlckluZm8+ID0ge307XG5cbiAgdGV4dHVyZXNQcm9taXNlSW5mbzogUHJvbWlzZUluZm88VGV4dHVyZTJEW10+ID0gbmV3IFByb21pc2VJbmZvPFRleHR1cmUyRFtdPigpO1xuICBtYXRlcmlhbHNQcm9taXNlSW5mbzogUHJvbWlzZUluZm88TWF0ZXJpYWxbXT4gPSBuZXcgUHJvbWlzZUluZm88TWF0ZXJpYWxbXT4oKTtcbiAgbWVzaGVzUHJvbWlzZUluZm86IFByb21pc2VJbmZvPE1vZGVsTWVzaFtdW10+ID0gbmV3IFByb21pc2VJbmZvPE1vZGVsTWVzaFtdW10+KCk7XG4gIGFuaW1hdGlvbkNsaXBzUHJvbWlzZUluZm86IFByb21pc2VJbmZvPEFuaW1hdGlvbkNsaXBbXT4gPSBuZXcgUHJvbWlzZUluZm88QW5pbWF0aW9uQ2xpcFtdPigpO1xuICBkZWZhdWx0U2NlbmVSb290UHJvbWlzZUluZm86IFByb21pc2VJbmZvPEVudGl0eT4gPSBuZXcgUHJvbWlzZUluZm88RW50aXR5PigpO1xuICBtYXN0ZXJQcm9taXNlSW5mbzogUHJvbWlzZUluZm88R0xURlJlc291cmNlPiA9IG5ldyBQcm9taXNlSW5mbzxHTFRGUmVzb3VyY2U+KCk7XG4gIHByb21pc2VNYXA6IFJlY29yZDxzdHJpbmcsIEFzc2V0UHJvbWlzZTxhbnk+PiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgcHJvbWlzZU1hcCA9IHRoaXMucHJvbWlzZU1hcDtcbiAgICBwcm9taXNlTWFwW2Ake3VybH0/cT10ZXh0dXJlc2BdID0gdGhpcy5faW5pdFByb21pc2VJbmZvKHRoaXMudGV4dHVyZXNQcm9taXNlSW5mbyk7XG4gICAgcHJvbWlzZU1hcFtgJHt1cmx9P3E9bWF0ZXJpYWxzYF0gPSB0aGlzLl9pbml0UHJvbWlzZUluZm8odGhpcy5tYXRlcmlhbHNQcm9taXNlSW5mbyk7XG4gICAgcHJvbWlzZU1hcFtgJHt1cmx9P3E9bWVzaGVzYF0gPSB0aGlzLl9pbml0UHJvbWlzZUluZm8odGhpcy5tZXNoZXNQcm9taXNlSW5mbyk7XG4gICAgcHJvbWlzZU1hcFtgJHt1cmx9P3E9YW5pbWF0aW9uc2BdID0gdGhpcy5faW5pdFByb21pc2VJbmZvKHRoaXMuYW5pbWF0aW9uQ2xpcHNQcm9taXNlSW5mbyk7XG4gICAgcHJvbWlzZU1hcFtgJHt1cmx9P3E9ZGVmYXVsdFNjZW5lUm9vdGBdID0gdGhpcy5faW5pdFByb21pc2VJbmZvKHRoaXMuZGVmYXVsdFNjZW5lUm9vdFByb21pc2VJbmZvKTtcbiAgICBwcm9taXNlTWFwW2Ake3VybH1gXSA9IHRoaXMuX2luaXRQcm9taXNlSW5mbyh0aGlzLm1hc3RlclByb21pc2VJbmZvKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRQcm9taXNlSW5mbyhwcm9taXNlSW5mbyk6IEFzc2V0UHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IEFzc2V0UHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QsIHNldFByb2dyZXNzLCBvbkNhbmNlbCkgPT4ge1xuICAgICAgcHJvbWlzZUluZm8ucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICBwcm9taXNlSW5mby5yZWplY3QgPSByZWplY3Q7XG4gICAgICBwcm9taXNlSW5mby5zZXRQcm9ncmVzcyA9IHNldFByb2dyZXNzO1xuICAgICAgcHJvbWlzZUluZm8ub25DYW5jZWwgPSBvbkNhbmNlbDtcbiAgICB9KTtcbiAgICBwcm9taXNlSW5mby5wcm9taXNlID0gcHJvbWlzZTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgQnVmZmVySW5mbyB7XG4gIHZlcnRleEJ1ZmZlcjogQnVmZmVyO1xuICB2ZXJ0ZXhCaW5kaW5nSW5mb3M6IFJlY29yZDxudW1iZXIsIG51bWJlcj4gPSB7fTtcbiAgY29uc3RydWN0b3IocHVibGljIGRhdGE6IFR5cGVkQXJyYXksIHB1YmxpYyBpbnRlcmxlYXZlZDogYm9vbGVhbiwgcHVibGljIHN0cmlkZTogbnVtYmVyKSB7fVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgUHJvbWlzZUluZm88VD4ge1xuICBwdWJsaWMgcHJvbWlzZTogQXNzZXRQcm9taXNlPFQ+O1xuICBwdWJsaWMgcmVzb2x2ZTogKHZhbHVlPzogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkO1xuICBwdWJsaWMgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuICBwdWJsaWMgc2V0UHJvZ3Jlc3M6IChwcm9ncmVzczogbnVtYmVyKSA9PiB2b2lkO1xuICBwdWJsaWMgb25DYW5jZWw6IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cbiIsIi8qKlxuICogTW9kdWxlIGZvciBnbFRGIDIuMCBJbnRlcmZhY2VcbiAqL1xuXG5pbXBvcnQgeyBNZXNoVG9wb2xvZ3kgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5cbi8qKlxuICogVGhlIGRhdGF0eXBlIG9mIHRoZSBjb21wb25lbnRzIGluIHRoZSBhdHRyaWJ1dGVcbiAqL1xuZXhwb3J0IGVudW0gQWNjZXNzb3JDb21wb25lbnRUeXBlIHtcbiAgLyoqXG4gICAqIEJ5dGVcbiAgICovXG4gIEJZVEUgPSA1MTIwLFxuICAvKipcbiAgICogVW5zaWduZWQgQnl0ZVxuICAgKi9cbiAgVU5TSUdORURfQllURSA9IDUxMjEsXG4gIC8qKlxuICAgKiBTaG9ydFxuICAgKi9cbiAgU0hPUlQgPSA1MTIyLFxuICAvKipcbiAgICogVW5zaWduZWQgU2hvcnRcbiAgICovXG4gIFVOU0lHTkVEX1NIT1JUID0gNTEyMyxcbiAgLyoqXG4gICAqIFVuc2lnbmVkIEludFxuICAgKi9cbiAgVU5TSUdORURfSU5UID0gNTEyNSxcbiAgLyoqXG4gICAqIEZsb2F0XG4gICAqL1xuICBGTE9BVCA9IDUxMjZcbn1cblxuLyoqXG4gKiBTcGVjaWZpZXMgaWYgdGhlIGF0dGlyYnV0ZSBpcyBhIHNjYWxhciwgdmVjdG9yLCBvciBtYXRyaXhcbiAqL1xuZXhwb3J0IGVudW0gQWNjZXNzb3JUeXBlIHtcbiAgLyoqXG4gICAqIFNjYWxhclxuICAgKi9cbiAgU0NBTEFSID0gXCJTQ0FMQVJcIixcbiAgLyoqXG4gICAqIFZlY3RvcjJcbiAgICovXG4gIFZFQzIgPSBcIlZFQzJcIixcbiAgLyoqXG4gICAqIFZlY3RvcjNcbiAgICovXG4gIFZFQzMgPSBcIlZFQzNcIixcbiAgLyoqXG4gICAqIFZlY3RvcjRcbiAgICovXG4gIFZFQzQgPSBcIlZFQzRcIixcbiAgLyoqXG4gICAqIE1hdHJpeDJ4MlxuICAgKi9cbiAgTUFUMiA9IFwiTUFUMlwiLFxuICAvKipcbiAgICogTWF0cml4M3gzXG4gICAqL1xuICBNQVQzID0gXCJNQVQzXCIsXG4gIC8qKlxuICAgKiBNYXRyaXg0eDRcbiAgICovXG4gIE1BVDQgPSBcIk1BVDRcIlxufVxuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBub2RlJ3MgVFJTIHByb3BlcnR5IHRvIG1vZGlmeSwgb3IgdGhlIHdlaWdodHMgb2YgdGhlIE1vcnBoIFRhcmdldHMgaXQgaW5zdGFudGlhdGVzXG4gKi9cbmV4cG9ydCBlbnVtIEFuaW1hdGlvbkNoYW5uZWxUYXJnZXRQYXRoIHtcbiAgLyoqXG4gICAqIFRyYW5zbGF0aW9uXG4gICAqL1xuICBUUkFOU0xBVElPTiA9IFwidHJhbnNsYXRpb25cIixcbiAgLyoqXG4gICAqIFJvdGF0aW9uXG4gICAqL1xuICBST1RBVElPTiA9IFwicm90YXRpb25cIixcbiAgLyoqXG4gICAqIFNjYWxlXG4gICAqL1xuICBTQ0FMRSA9IFwic2NhbGVcIixcbiAgLyoqXG4gICAqIFdlaWdodHNcbiAgICovXG4gIFdFSUdIVFMgPSBcIndlaWdodHNcIlxufVxuXG4vKipcbiAqIEludGVycG9sYXRpb24gYWxnb3JpdGhtXG4gKi9cbmV4cG9ydCBlbnVtIEFuaW1hdGlvblNhbXBsZXJJbnRlcnBvbGF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBhbmltYXRlZCB2YWx1ZXMgYXJlIGxpbmVhcmx5IGludGVycG9sYXRlZCBiZXR3ZWVuIGtleWZyYW1lc1xuICAgKi9cbiAgTGluZWFyID0gXCJMSU5FQVJcIixcbiAgLyoqXG4gICAqIFRoZSBhbmltYXRlZCB2YWx1ZXMgcmVtYWluIGNvbnN0YW50IHRvIHRoZSBvdXRwdXQgb2YgdGhlIGZpcnN0IGtleWZyYW1lLCB1bnRpbCB0aGUgbmV4dCBrZXlmcmFtZVxuICAgKi9cbiAgU3RlcCA9IFwiU1RFUFwiLFxuICAvKipcbiAgICogVGhlIGFuaW1hdGlvbidzIGludGVycG9sYXRpb24gaXMgY29tcHV0ZWQgdXNpbmcgYSBjdWJpYyBzcGxpbmUgd2l0aCBzcGVjaWZpZWQgdGFuZ2VudHNcbiAgICovXG4gIEN1YmljU3BpbmUgPSBcIkNVQklDU1BMSU5FXCJcbn1cblxuLyoqXG4gKiBBIGNhbWVyYSdzIHByb2plY3Rpb24uICBBIG5vZGUgY2FuIHJlZmVyZW5jZSBhIGNhbWVyYSB0byBhcHBseSBhIHRyYW5zZm9ybSB0byBwbGFjZSB0aGUgY2FtZXJhIGluIHRoZSBzY2VuZVxuICovXG5leHBvcnQgZW51bSBDYW1lcmFUeXBlIHtcbiAgLyoqXG4gICAqIEEgcGVyc3BlY3RpdmUgY2FtZXJhIGNvbnRhaW5pbmcgcHJvcGVydGllcyB0byBjcmVhdGUgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeFxuICAgKi9cbiAgUEVSU1BFQ1RJVkUgPSBcInBlcnNwZWN0aXZlXCIsXG4gIC8qKlxuICAgKiBBbiBvcnRob2dyYXBoaWMgY2FtZXJhIGNvbnRhaW5pbmcgcHJvcGVydGllcyB0byBjcmVhdGUgYW4gb3J0aG9ncmFwaGljIHByb2plY3Rpb24gbWF0cml4XG4gICAqL1xuICBPUlRIT0dSQVBISUMgPSBcIm9ydGhvZ3JhcGhpY1wiXG59XG5cbi8qKlxuICogVGhlIG1pbWUtdHlwZSBvZiB0aGUgaW1hZ2VcbiAqL1xuZXhwb3J0IGVudW0gSW1hZ2VNaW1lVHlwZSB7XG4gIC8qKlxuICAgKiBKUEVHIE1pbWUtdHlwZVxuICAgKi9cbiAgSlBFRyA9IFwiaW1hZ2UvanBlZ1wiLFxuICAvKipcbiAgICogUE5HIE1pbWUtdHlwZVxuICAgKi9cbiAgUE5HID0gXCJpbWFnZS9wbmdcIlxufVxuXG4vKipcbiAqIFRoZSBhbHBoYSByZW5kZXJpbmcgbW9kZSBvZiB0aGUgbWF0ZXJpYWxcbiAqL1xuZXhwb3J0IGVudW0gTWF0ZXJpYWxBbHBoYU1vZGUge1xuICAvKipcbiAgICogVGhlIGFscGhhIHZhbHVlIGlzIGlnbm9yZWQgYW5kIHRoZSByZW5kZXJlZCBvdXRwdXQgaXMgZnVsbHkgb3BhcXVlXG4gICAqL1xuICBPUEFRVUUgPSBcIk9QQVFVRVwiLFxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIG91dHB1dCBpcyBlaXRoZXIgZnVsbHkgb3BhcXVlIG9yIGZ1bGx5IHRyYW5zcGFyZW50IGRlcGVuZGluZyBvbiB0aGUgYWxwaGEgdmFsdWUgYW5kIHRoZSBzcGVjaWZpZWQgYWxwaGEgY3V0b2ZmIHZhbHVlXG4gICAqL1xuICBNQVNLID0gXCJNQVNLXCIsXG4gIC8qKlxuICAgKiBUaGUgYWxwaGEgdmFsdWUgaXMgdXNlZCB0byBjb21wb3NpdGUgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJlYXMuIFRoZSByZW5kZXJlZCBvdXRwdXQgaXMgY29tYmluZWQgd2l0aCB0aGUgYmFja2dyb3VuZCB1c2luZyB0aGUgbm9ybWFsIHBhaW50aW5nIG9wZXJhdGlvbiAoaS5lLiB0aGUgUG9ydGVyIGFuZCBEdWZmIG92ZXIgb3BlcmF0b3IpXG4gICAqL1xuICBCTEVORCA9IFwiQkxFTkRcIlxufVxuXG4vKipcbiAqIE1hZ25pZmljYXRpb24gZmlsdGVyLiAgVmFsaWQgdmFsdWVzIGNvcnJlc3BvbmQgdG8gV2ViR0wgZW51bXM6IDk3MjggKE5FQVJFU1QpIGFuZCA5NzI5IChMSU5FQVIpXG4gKi9cbmV4cG9ydCBlbnVtIFRleHR1cmVNYWdGaWx0ZXIge1xuICAvKipcbiAgICogTmVhcmVzdFxuICAgKi9cbiAgTkVBUkVTVCA9IDk3MjgsXG4gIC8qKlxuICAgKiBMaW5lYXJcbiAgICovXG4gIExJTkVBUiA9IDk3Mjlcbn1cblxuLyoqXG4gKiBNaW5pZmljYXRpb24gZmlsdGVyLiAgQWxsIHZhbGlkIHZhbHVlcyBjb3JyZXNwb25kIHRvIFdlYkdMIGVudW1zXG4gKi9cbmV4cG9ydCBlbnVtIFRleHR1cmVNaW5GaWx0ZXIge1xuICAvKipcbiAgICogTmVhcmVzdFxuICAgKi9cbiAgTkVBUkVTVCA9IDk3MjgsXG4gIC8qKlxuICAgKiBMaW5lYXJcbiAgICovXG4gIExJTkVBUiA9IDk3MjksXG4gIC8qKlxuICAgKiBOZWFyZXN0IE1pcC1NYXAgTmVhcmVzdFxuICAgKi9cbiAgTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCA9IDk5ODQsXG4gIC8qKlxuICAgKiBMaW5lYXIgTWlwbWFwIE5lYXJlc3RcbiAgICovXG4gIExJTkVBUl9NSVBNQVBfTkVBUkVTVCA9IDk5ODUsXG4gIC8qKlxuICAgKiBOZWFyZXN0IE1pcG1hcCBMaW5lYXJcbiAgICovXG4gIE5FQVJFU1RfTUlQTUFQX0xJTkVBUiA9IDk5ODYsXG4gIC8qKlxuICAgKiBMaW5lYXIgTWlwbWFwIExpbmVhclxuICAgKi9cbiAgTElORUFSX01JUE1BUF9MSU5FQVIgPSA5OTg3XG59XG5cbi8qKlxuICogUyAoVSkgd3JhcHBpbmcgbW9kZS4gIEFsbCB2YWxpZCB2YWx1ZXMgY29ycmVzcG9uZCB0byBXZWJHTCBlbnVtc1xuICovXG5leHBvcnQgZW51bSBUZXh0dXJlV3JhcE1vZGUge1xuICAvKipcbiAgICogQ2xhbXAgdG8gRWRnZVxuICAgKi9cbiAgQ0xBTVBfVE9fRURHRSA9IDMzMDcxLFxuICAvKipcbiAgICogTWlycm9yZWQgUmVwZWF0XG4gICAqL1xuICBNSVJST1JFRF9SRVBFQVQgPSAzMzY0OCxcbiAgLyoqXG4gICAqIFJlcGVhdFxuICAgKi9cbiAgUkVQRUFUID0gMTA0OTdcbn1cblxuLyoqXG4gKiBnbFRGIFByb3BlcnR5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERpY3Rpb25hcnkgb2JqZWN0IHdpdGggZXh0ZW5zaW9uLXNwZWNpZmljIG9iamVjdHNcbiAgICovXG4gIGV4dGVuc2lvbnM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICB9O1xuICAvKipcbiAgICogQXBwbGljYXRpb24tU3BlY2lmaWMgZGF0YVxuICAgKi9cbiAgZXh0cmFzPzogYW55O1xufVxuXG4vKipcbiAqIGdsVEYgQ2hpbGQgb2YgUm9vdCBQcm9wZXJ0eVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDaGlsZFJvb3RQcm9wZXJ0eSBleHRlbmRzIElQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBUaGUgdXNlci1kZWZpbmVkIG5hbWUgb2YgdGhpcyBvYmplY3RcbiAgICovXG4gIG5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5kaWNlcyBvZiB0aG9zZSBhdHRyaWJ1dGVzIHRoYXQgZGV2aWF0ZSBmcm9tIHRoZWlyIGluaXRpYWxpemF0aW9uIHZhbHVlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFjY2Vzc29yU3BhcnNlSW5kaWNlcyBleHRlbmRzIElQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIGJ1ZmZlclZpZXcgd2l0aCBzcGFyc2UgaW5kaWNlcy4gUmVmZXJlbmNlZCBidWZmZXJWaWV3IGNhbid0IGhhdmUgQVJSQVlfQlVGRkVSIG9yIEVMRU1FTlRfQVJSQVlfQlVGRkVSIHRhcmdldFxuICAgKi9cbiAgYnVmZmVyVmlldzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG9mZnNldCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlclZpZXcgaW4gYnl0ZXMuIE11c3QgYmUgYWxpZ25lZFxuICAgKi9cbiAgYnl0ZU9mZnNldD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBpbmRpY2VzIGRhdGEgdHlwZS4gIFZhbGlkIHZhbHVlcyBjb3JyZXNwb25kIHRvIFdlYkdMIGVudW1zOiA1MTIxIChVTlNJR05FRF9CWVRFKSwgNTEyMyAoVU5TSUdORURfU0hPUlQpLCA1MTI1IChVTlNJR05FRF9JTlQpXG4gICAqL1xuICBjb21wb25lbnRUeXBlOiBBY2Nlc3NvckNvbXBvbmVudFR5cGU7XG59XG5cbi8qKlxuICogQXJyYXkgb2Ygc2l6ZSBhY2Nlc3Nvci5zcGFyc2UuY291bnQgdGltZXMgbnVtYmVyIG9mIGNvbXBvbmVudHMgc3RvcmluZyB0aGUgZGlzcGxhY2VkIGFjY2Vzc29yIGF0dHJpYnV0ZXMgcG9pbnRlZCBieSBhY2Nlc3Nvci5zcGFyc2UuaW5kaWNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElBY2Nlc3NvclNwYXJzZVZhbHVlcyBleHRlbmRzIElQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIGJ1ZmZlclZpZXcgd2l0aCBzcGFyc2UgdmFsdWVzLiBSZWZlcmVuY2VkIGJ1ZmZlclZpZXcgY2FuJ3QgaGF2ZSBBUlJBWV9CVUZGRVIgb3IgRUxFTUVOVF9BUlJBWV9CVUZGRVIgdGFyZ2V0XG4gICAqL1xuICBidWZmZXJWaWV3OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgb2Zmc2V0IHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyVmlldyBpbiBieXRlcy4gTXVzdCBiZSBhbGlnbmVkXG4gICAqL1xuICBieXRlT2Zmc2V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFNwYXJzZSBzdG9yYWdlIG9mIGF0dHJpYnV0ZXMgdGhhdCBkZXZpYXRlIGZyb20gdGhlaXIgaW5pdGlhbGl6YXRpb24gdmFsdWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWNjZXNzb3JTcGFyc2UgZXh0ZW5kcyBJUHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBhdHRyaWJ1dGVzIGVuY29kZWQgaW4gdGhpcyBzcGFyc2UgYWNjZXNzb3JcbiAgICovXG4gIGNvdW50OiBudW1iZXI7XG4gIC8qKlxuICAgKiBJbmRleCBhcnJheSBvZiBzaXplIGNvdW50IHRoYXQgcG9pbnRzIHRvIHRob3NlIGFjY2Vzc29yIGF0dHJpYnV0ZXMgdGhhdCBkZXZpYXRlIGZyb20gdGhlaXIgaW5pdGlhbGl6YXRpb24gdmFsdWUuIEluZGljZXMgbXVzdCBzdHJpY3RseSBpbmNyZWFzZVxuICAgKi9cbiAgaW5kaWNlczogSUFjY2Vzc29yU3BhcnNlSW5kaWNlcztcbiAgLyoqXG4gICAqIEFycmF5IG9mIHNpemUgY291bnQgdGltZXMgbnVtYmVyIG9mIGNvbXBvbmVudHMsIHN0b3JpbmcgdGhlIGRpc3BsYWNlZCBhY2Nlc3NvciBhdHRyaWJ1dGVzIHBvaW50ZWQgYnkgaW5kaWNlcy4gU3Vic3RpdHV0ZWQgdmFsdWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBjb21wb25lbnRUeXBlIGFuZCBudW1iZXIgb2YgY29tcG9uZW50cyBhcyB0aGUgYmFzZSBhY2Nlc3NvclxuICAgKi9cbiAgdmFsdWVzOiBJQWNjZXNzb3JTcGFyc2VWYWx1ZXM7XG59XG5cbi8qKlxuICogQSB0eXBlZCB2aWV3IGludG8gYSBidWZmZXJWaWV3LiAgQSBidWZmZXJWaWV3IGNvbnRhaW5zIHJhdyBiaW5hcnkgZGF0YS4gIEFuIGFjY2Vzc29yIHByb3ZpZGVzIGEgdHlwZWQgdmlldyBpbnRvIGEgYnVmZmVyVmlldyBvciBhIHN1YnNldCBvZiBhIGJ1ZmZlclZpZXcgc2ltaWxhciB0byBob3cgV2ViR0wncyB2ZXJ0ZXhBdHRyaWJQb2ludGVyKCkgZGVmaW5lcyBhbiBhdHRyaWJ1dGUgaW4gYSBidWZmZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWNjZXNzb3IgZXh0ZW5kcyBJQ2hpbGRSb290UHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBidWZmZXJ2aWV3XG4gICAqL1xuICBidWZmZXJWaWV3PzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG9mZnNldCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlclZpZXcgaW4gYnl0ZXNcbiAgICovXG4gIGJ5dGVPZmZzZXQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZGF0YXR5cGUgb2YgY29tcG9uZW50cyBpbiB0aGUgYXR0cmlidXRlXG4gICAqL1xuICBjb21wb25lbnRUeXBlOiBBY2Nlc3NvckNvbXBvbmVudFR5cGU7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciBpbnRlZ2VyIGRhdGEgdmFsdWVzIHNob3VsZCBiZSBub3JtYWxpemVkXG4gICAqL1xuICBub3JtYWxpemVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgYXR0cmlidXRlcyByZWZlcmVuY2VkIGJ5IHRoaXMgYWNjZXNzb3JcbiAgICovXG4gIGNvdW50OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdGhlIGF0dHJpYnV0ZSBpcyBhIHNjYWxhciwgdmVjdG9yLCBvciBtYXRyaXhcbiAgICovXG4gIHR5cGU6IEFjY2Vzc29yVHlwZTtcbiAgLyoqXG4gICAqIE1heGltdW0gdmFsdWUgb2YgZWFjaCBjb21wb25lbnQgaW4gdGhpcyBhdHRyaWJ1dGVcbiAgICovXG4gIG1heD86IG51bWJlcltdO1xuICAvKipcbiAgICogTWluaW11bSB2YWx1ZSBvZiBlYWNoIGNvbXBvbmVudCBpbiB0aGlzIGF0dHJpYnV0ZVxuICAgKi9cbiAgbWluPzogbnVtYmVyW107XG4gIC8qKlxuICAgKiBTcGFyc2Ugc3RvcmFnZSBvZiBhdHRyaWJ1dGVzIHRoYXQgZGV2aWF0ZSBmcm9tIHRoZWlyIGluaXRpYWxpemF0aW9uIHZhbHVlXG4gICAqL1xuICBzcGFyc2U/OiBJQWNjZXNzb3JTcGFyc2U7XG59XG5cbi8qKlxuICogVGFyZ2V0cyBhbiBhbmltYXRpb24ncyBzYW1wbGVyIGF0IGEgbm9kZSdzIHByb3BlcnR5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFuaW1hdGlvbkNoYW5uZWwgZXh0ZW5kcyBJUHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIGEgc2FtcGxlciBpbiB0aGlzIGFuaW1hdGlvbiB1c2VkIHRvIGNvbXB1dGUgdGhlIHZhbHVlIGZvciB0aGUgdGFyZ2V0XG4gICAqL1xuICBzYW1wbGVyOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIG5vZGUgYW5kIFRSUyBwcm9wZXJ0eSB0byB0YXJnZXRcbiAgICovXG4gIHRhcmdldDogSUFuaW1hdGlvbkNoYW5uZWxUYXJnZXQ7XG59XG5cbi8qKlxuICogVGhlIGluZGV4IG9mIHRoZSBub2RlIGFuZCBUUlMgcHJvcGVydHkgdGhhdCBhbiBhbmltYXRpb24gY2hhbm5lbCB0YXJnZXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFuaW1hdGlvbkNoYW5uZWxUYXJnZXQgZXh0ZW5kcyBJUHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBub2RlIHRvIHRhcmdldFxuICAgKi9cbiAgbm9kZTogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG5vZGUncyBUUlMgcHJvcGVydHkgdG8gbW9kaWZ5LCBvciB0aGUgd2VpZ2h0cyBvZiB0aGUgTW9ycGggVGFyZ2V0cyBpdCBpbnN0YW50aWF0ZXNcbiAgICovXG4gIHBhdGg6IEFuaW1hdGlvbkNoYW5uZWxUYXJnZXRQYXRoO1xufVxuXG4vKipcbiAqIENvbWJpbmVzIGlucHV0IGFuZCBvdXRwdXQgYWNjZXNzb3JzIHdpdGggYW4gaW50ZXJwb2xhdGlvbiBhbGdvcml0aG0gdG8gZGVmaW5lIGEga2V5ZnJhbWUgZ3JhcGggKGJ1dCBub3QgaXRzIHRhcmdldClcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQW5pbWF0aW9uU2FtcGxlciBleHRlbmRzIElQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgYW4gYWNjZXNzb3IgY29udGFpbmluZyBrZXlmcmFtZSBpbnB1dCB2YWx1ZXMsIGUuZy4sIHRpbWVcbiAgICovXG4gIGlucHV0OiBudW1iZXI7XG4gIC8qKlxuICAgKiBJbnRlcnBvbGF0aW9uIGFsZ29yaXRobVxuICAgKi9cbiAgaW50ZXJwb2xhdGlvbj86IEFuaW1hdGlvblNhbXBsZXJJbnRlcnBvbGF0aW9uO1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIGFuIGFjY2Vzc29yLCBjb250YWluaW5nIGtleWZyYW1lIG91dHB1dCB2YWx1ZXNcbiAgICovXG4gIG91dHB1dDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEga2V5ZnJhbWUgYW5pbWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFuaW1hdGlvbiBleHRlbmRzIElDaGlsZFJvb3RQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBjaGFubmVscywgZWFjaCBvZiB3aGljaCB0YXJnZXRzIGFuIGFuaW1hdGlvbidzIHNhbXBsZXIgYXQgYSBub2RlJ3MgcHJvcGVydHlcbiAgICovXG4gIGNoYW5uZWxzOiBJQW5pbWF0aW9uQ2hhbm5lbFtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygc2FtcGxlcnMgdGhhdCBjb21iaW5lcyBpbnB1dCBhbmQgb3V0cHV0IGFjY2Vzc29ycyB3aXRoIGFuIGludGVycG9sYXRpb24gYWxnb3JpdGhtIHRvIGRlZmluZSBhIGtleWZyYW1lIGdyYXBoIChidXQgbm90IGl0cyB0YXJnZXQpXG4gICAqL1xuICBzYW1wbGVyczogSUFuaW1hdGlvblNhbXBsZXJbXTtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBhYm91dCB0aGUgZ2xURiBhc3NldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldCBleHRlbmRzIElDaGlsZFJvb3RQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBBIGNvcHlyaWdodCBtZXNzYWdlIHN1aXRhYmxlIGZvciBkaXNwbGF5IHRvIGNyZWRpdCB0aGUgY29udGVudCBjcmVhdG9yXG4gICAqL1xuICBjb3B5cmlnaHQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUb29sIHRoYXQgZ2VuZXJhdGVkIHRoaXMgZ2xURiBtb2RlbC4gIFVzZWZ1bCBmb3IgZGVidWdnaW5nXG4gICAqL1xuICBnZW5lcmF0b3I/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZ2xURiB2ZXJzaW9uIHRoYXQgdGhpcyBhc3NldCB0YXJnZXRzXG4gICAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBnbFRGIHZlcnNpb24gdGhhdCB0aGlzIGFzc2V0IHRhcmdldHNcbiAgICovXG4gIG1pblZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBidWZmZXIgcG9pbnRzIHRvIGJpbmFyeSBnZW9tZXRyeSwgYW5pbWF0aW9uLCBvciBza2luc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElCdWZmZXIgZXh0ZW5kcyBJQ2hpbGRSb290UHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIHVyaSBvZiB0aGUgYnVmZmVyLiAgUmVsYXRpdmUgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSAuZ2x0ZiBmaWxlLiAgSW5zdGVhZCBvZiByZWZlcmVuY2luZyBhbiBleHRlcm5hbCBmaWxlLCB0aGUgdXJpIGNhbiBhbHNvIGJlIGEgZGF0YS11cmlcbiAgICovXG4gIHVyaT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiBieXRlc1xuICAgKi9cbiAgYnl0ZUxlbmd0aDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgdmlldyBpbnRvIGEgYnVmZmVyIGdlbmVyYWxseSByZXByZXNlbnRpbmcgYSBzdWJzZXQgb2YgdGhlIGJ1ZmZlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIElCdWZmZXJWaWV3IGV4dGVuZHMgSUNoaWxkUm9vdFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgYnVmZmVyXG4gICAqL1xuICBidWZmZXI6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBvZmZzZXQgaW50byB0aGUgYnVmZmVyIGluIGJ5dGVzXG4gICAqL1xuICBieXRlT2Zmc2V0PzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGxlbnRoIG9mIHRoZSBidWZmZXJWaWV3IGluIGJ5dGVzXG4gICAqL1xuICBieXRlTGVuZ3RoOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgc3RyaWRlLCBpbiBieXRlc1xuICAgKi9cbiAgYnl0ZVN0cmlkZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBbiBvcnRob2dyYXBoaWMgY2FtZXJhIGNvbnRhaW5pbmcgcHJvcGVydGllcyB0byBjcmVhdGUgYW4gb3J0aG9ncmFwaGljIHByb2plY3Rpb24gbWF0cml4XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNhbWVyYU9ydGhvZ3JhcGhpYyBleHRlbmRzIElQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBUaGUgZmxvYXRpbmctcG9pbnQgaG9yaXpvbnRhbCBtYWduaWZpY2F0aW9uIG9mIHRoZSB2aWV3LiBNdXN0IG5vdCBiZSB6ZXJvXG4gICAqL1xuICB4bWFnOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZmxvYXRpbmctcG9pbnQgdmVydGljYWwgbWFnbmlmaWNhdGlvbiBvZiB0aGUgdmlldy4gTXVzdCBub3QgYmUgemVyb1xuICAgKi9cbiAgeW1hZzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGZsb2F0aW5nLXBvaW50IGRpc3RhbmNlIHRvIHRoZSBmYXIgY2xpcHBpbmcgcGxhbmUuIHpmYXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gem5lYXJcbiAgICovXG4gIHpmYXI6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBmbG9hdGluZy1wb2ludCBkaXN0YW5jZSB0byB0aGUgbmVhciBjbGlwcGluZyBwbGFuZVxuICAgKi9cbiAgem5lYXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIHBlcnNwZWN0aXZlIGNhbWVyYSBjb250YWluaW5nIHByb3BlcnRpZXMgdG8gY3JlYXRlIGEgcGVyc3BlY3RpdmUgcHJvamVjdGlvbiBtYXRyaXhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2FtZXJhUGVyc3BlY3RpdmUgZXh0ZW5kcyBJUHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIGZsb2F0aW5nLXBvaW50IGFzcGVjdCByYXRpbyBvZiB0aGUgZmllbGQgb2Ygdmlld1xuICAgKi9cbiAgYXNwZWN0UmF0aW8/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZmxvYXRpbmctcG9pbnQgdmVydGljYWwgZmllbGQgb2YgdmlldyBpbiByYWRpYW5zXG4gICAqL1xuICB5Zm92OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgZmxvYXRpbmctcG9pbnQgZGlzdGFuY2UgdG8gdGhlIGZhciBjbGlwcGluZyBwbGFuZVxuICAgKi9cbiAgemZhcj86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBmbG9hdGluZy1wb2ludCBkaXN0YW5jZSB0byB0aGUgbmVhciBjbGlwcGluZyBwbGFuZVxuICAgKi9cbiAgem5lYXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIGNhbWVyYSdzIHByb2plY3Rpb24uICBBIG5vZGUgY2FuIHJlZmVyZW5jZSBhIGNhbWVyYSB0byBhcHBseSBhIHRyYW5zZm9ybSB0byBwbGFjZSB0aGUgY2FtZXJhIGluIHRoZSBzY2VuZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDYW1lcmEgZXh0ZW5kcyBJQ2hpbGRSb290UHJvcGVydHkge1xuICAvKipcbiAgICogQW4gb3J0aG9ncmFwaGljIGNhbWVyYSBjb250YWluaW5nIHByb3BlcnRpZXMgdG8gY3JlYXRlIGFuIG9ydGhvZ3JhcGhpYyBwcm9qZWN0aW9uIG1hdHJpeFxuICAgKi9cbiAgb3J0aG9ncmFwaGljPzogSUNhbWVyYU9ydGhvZ3JhcGhpYztcbiAgLyoqXG4gICAqIEEgcGVyc3BlY3RpdmUgY2FtZXJhIGNvbnRhaW5pbmcgcHJvcGVydGllcyB0byBjcmVhdGUgYSBwZXJzcGVjdGl2ZSBwcm9qZWN0aW9uIG1hdHJpeFxuICAgKi9cbiAgcGVyc3BlY3RpdmU/OiBJQ2FtZXJhUGVyc3BlY3RpdmU7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdGhlIGNhbWVyYSB1c2VzIGEgcGVyc3BlY3RpdmUgb3Igb3J0aG9ncmFwaGljIHByb2plY3Rpb25cbiAgICovXG4gIHR5cGU6IENhbWVyYVR5cGU7XG59XG5cbi8qKlxuICogSW1hZ2UgZGF0YSB1c2VkIHRvIGNyZWF0ZSBhIHRleHR1cmUuIEltYWdlIGNhbiBiZSByZWZlcmVuY2VkIGJ5IFVSSSBvciBidWZmZXJWaWV3IGluZGV4LiBtaW1lVHlwZSBpcyByZXF1aXJlZCBpbiB0aGUgbGF0dGVyIGNhc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2UgZXh0ZW5kcyBJQ2hpbGRSb290UHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIHVyaSBvZiB0aGUgaW1hZ2UuICBSZWxhdGl2ZSBwYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIC5nbHRmIGZpbGUuICBJbnN0ZWFkIG9mIHJlZmVyZW5jaW5nIGFuIGV4dGVybmFsIGZpbGUsIHRoZSB1cmkgY2FuIGFsc28gYmUgYSBkYXRhLXVyaS4gIFRoZSBpbWFnZSBmb3JtYXQgbXVzdCBiZSBqcGcgb3IgcG5nXG4gICAqL1xuICB1cmk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaW1hZ2UncyBNSU1FIHR5cGVcbiAgICovXG4gIG1pbWVUeXBlPzogSW1hZ2VNaW1lVHlwZTtcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgYnVmZmVyVmlldyB0aGF0IGNvbnRhaW5zIHRoZSBpbWFnZS4gVXNlIHRoaXMgaW5zdGVhZCBvZiB0aGUgaW1hZ2UncyB1cmkgcHJvcGVydHlcbiAgICovXG4gIGJ1ZmZlclZpZXc/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTWF0ZXJpYWwgTm9ybWFsIFRleHR1cmUgSW5mb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElNYXRlcmlhbE5vcm1hbFRleHR1cmVJbmZvIGV4dGVuZHMgSVRleHR1cmVJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBzY2FsYXIgbXVsdGlwbGllciBhcHBsaWVkIHRvIGVhY2ggbm9ybWFsIHZlY3RvciBvZiB0aGUgbm9ybWFsIHRleHR1cmVcbiAgICovXG4gIHNjYWxlPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIE1hdGVyaWFsIE9jY2x1c2lvbiBUZXh0dXJlIEluZm9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTWF0ZXJpYWxPY2NsdXNpb25UZXh0dXJlSW5mbyBleHRlbmRzIElUZXh0dXJlSW5mbyB7XG4gIC8qKlxuICAgKiBBIHNjYWxhciBtdWx0aXBsaWVyIGNvbnRyb2xsaW5nIHRoZSBhbW91bnQgb2Ygb2NjbHVzaW9uIGFwcGxpZWRcbiAgICovXG4gIHN0cmVuZ3RoPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEEgc2V0IG9mIHBhcmFtZXRlciB2YWx1ZXMgdGhhdCBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIG1ldGFsbGljLXJvdWdobmVzcyBtYXRlcmlhbCBtb2RlbCBmcm9tIFBoeXNpY2FsbHktQmFzZWQgUmVuZGVyaW5nIChQQlIpIG1ldGhvZG9sb2d5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU1hdGVyaWFsUGJyTWV0YWxsaWNSb3VnaG5lc3Mge1xuICAvKipcbiAgICogVGhlIG1hdGVyaWFsJ3MgYmFzZSBjb2xvciBmYWN0b3JcbiAgICovXG4gIGJhc2VDb2xvckZhY3Rvcj86IG51bWJlcltdO1xuICAvKipcbiAgICogVGhlIGJhc2UgY29sb3IgdGV4dHVyZVxuICAgKi9cbiAgYmFzZUNvbG9yVGV4dHVyZT86IElUZXh0dXJlSW5mbztcbiAgLyoqXG4gICAqIFRoZSBtZXRhbG5lc3Mgb2YgdGhlIG1hdGVyaWFsXG4gICAqL1xuICBtZXRhbGxpY0ZhY3Rvcj86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSByb3VnaG5lc3Mgb2YgdGhlIG1hdGVyaWFsXG4gICAqL1xuICByb3VnaG5lc3NGYWN0b3I/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbWV0YWxsaWMtcm91Z2huZXNzIHRleHR1cmVcbiAgICovXG4gIG1ldGFsbGljUm91Z2huZXNzVGV4dHVyZT86IElUZXh0dXJlSW5mbztcbn1cblxuLyoqXG4gKiBUaGUgbWF0ZXJpYWwgYXBwZWFyYW5jZSBvZiBhIHByaW1pdGl2ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElNYXRlcmlhbCBleHRlbmRzIElDaGlsZFJvb3RQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBBIHNldCBvZiBwYXJhbWV0ZXIgdmFsdWVzIHRoYXQgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBtZXRhbGxpYy1yb3VnaG5lc3MgbWF0ZXJpYWwgbW9kZWwgZnJvbSBQaHlzaWNhbGx5LUJhc2VkIFJlbmRlcmluZyAoUEJSKSBtZXRob2RvbG9neS4gV2hlbiBub3Qgc3BlY2lmaWVkLCBhbGwgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHBick1ldGFsbGljUm91Z2huZXNzIGFwcGx5XG4gICAqL1xuICBwYnJNZXRhbGxpY1JvdWdobmVzcz86IElNYXRlcmlhbFBick1ldGFsbGljUm91Z2huZXNzO1xuICAvKipcbiAgICogVGhlIG5vcm1hbCBtYXAgdGV4dHVyZVxuICAgKi9cbiAgbm9ybWFsVGV4dHVyZT86IElNYXRlcmlhbE5vcm1hbFRleHR1cmVJbmZvO1xuICAvKipcbiAgICogVGhlIG9jY2x1c2lvbiBtYXAgdGV4dHVyZVxuICAgKi9cbiAgb2NjbHVzaW9uVGV4dHVyZT86IElNYXRlcmlhbE9jY2x1c2lvblRleHR1cmVJbmZvO1xuICAvKipcbiAgICogVGhlIGVtaXNzaXZlIG1hcCB0ZXh0dXJlXG4gICAqL1xuICBlbWlzc2l2ZVRleHR1cmU/OiBJVGV4dHVyZUluZm87XG4gIC8qKlxuICAgKiBUaGUgUkdCIGNvbXBvbmVudHMgb2YgdGhlIGVtaXNzaXZlIGNvbG9yIG9mIHRoZSBtYXRlcmlhbC4gVGhlc2UgdmFsdWVzIGFyZSBsaW5lYXIuIElmIGFuIGVtaXNzaXZlVGV4dHVyZSBpcyBzcGVjaWZpZWQsIHRoaXMgdmFsdWUgaXMgbXVsdGlwbGllZCB3aXRoIHRoZSB0ZXhlbCB2YWx1ZXNcbiAgICovXG4gIGVtaXNzaXZlRmFjdG9yPzogbnVtYmVyW107XG4gIC8qKlxuICAgKiBUaGUgYWxwaGEgcmVuZGVyaW5nIG1vZGUgb2YgdGhlIG1hdGVyaWFsXG4gICAqL1xuICBhbHBoYU1vZGU/OiBNYXRlcmlhbEFscGhhTW9kZTtcbiAgLyoqXG4gICAqIFRoZSBhbHBoYSBjdXRvZmYgdmFsdWUgb2YgdGhlIG1hdGVyaWFsXG4gICAqL1xuICBhbHBoYUN1dG9mZj86IG51bWJlcjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBtYXRlcmlhbCBpcyBkb3VibGUgc2lkZWRcbiAgICovXG4gIGRvdWJsZVNpZGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHZW9tZXRyeSB0byBiZSByZW5kZXJlZCB3aXRoIHRoZSBnaXZlbiBtYXRlcmlhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElNZXNoUHJpbWl0aXZlIGV4dGVuZHMgSVByb3BlcnR5IHtcbiAgLyoqXG4gICAqIEEgZGljdGlvbmFyeSBvYmplY3QsIHdoZXJlIGVhY2gga2V5IGNvcnJlc3BvbmRzIHRvIG1lc2ggYXR0cmlidXRlIHNlbWFudGljIGFuZCBlYWNoIHZhbHVlIGlzIHRoZSBpbmRleCBvZiB0aGUgYWNjZXNzb3IgY29udGFpbmluZyBhdHRyaWJ1dGUncyBkYXRhXG4gICAqL1xuICBhdHRyaWJ1dGVzOiB7XG4gICAgW25hbWU6IHN0cmluZ106IG51bWJlcjtcbiAgfTtcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgYWNjZXNzb3IgdGhhdCBjb250YWlucyB0aGUgaW5kaWNlc1xuICAgKi9cbiAgaW5kaWNlcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgbWF0ZXJpYWwgdG8gYXBwbHkgdG8gdGhpcyBwcmltaXRpdmUgd2hlbiByZW5kZXJpbmdcbiAgICovXG4gIG1hdGVyaWFsPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgcHJpbWl0aXZlcyB0byByZW5kZXIuIEFsbCB2YWxpZCB2YWx1ZXMgY29ycmVzcG9uZCB0byBXZWJHTCBlbnVtc1xuICAgKi9cbiAgbW9kZT86IE1lc2hUb3BvbG9neTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIE1vcnBoIFRhcmdldHMsIGVhY2ggIE1vcnBoIFRhcmdldCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhdHRyaWJ1dGVzIChvbmx5IFBPU0lUSU9OLCBOT1JNQUwsIGFuZCBUQU5HRU5UIHN1cHBvcnRlZCkgdG8gdGhlaXIgZGV2aWF0aW9ucyBpbiB0aGUgTW9ycGggVGFyZ2V0XG4gICAqL1xuICB0YXJnZXRzPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBudW1iZXI7XG4gIH1bXTtcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBwcmltaXRpdmVzIHRvIGJlIHJlbmRlcmVkLiAgQSBub2RlIGNhbiBjb250YWluIG9uZSBtZXNoLiAgQSBub2RlJ3MgdHJhbnNmb3JtIHBsYWNlcyB0aGUgbWVzaCBpbiB0aGUgc2NlbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTWVzaCBleHRlbmRzIElDaGlsZFJvb3RQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBwcmltaXRpdmVzLCBlYWNoIGRlZmluaW5nIGdlb21ldHJ5IHRvIGJlIHJlbmRlcmVkIHdpdGggYSBtYXRlcmlhbFxuICAgKi9cbiAgcHJpbWl0aXZlczogSU1lc2hQcmltaXRpdmVbXTtcbiAgLyoqXG4gICAqIEFycmF5IG9mIHdlaWdodHMgdG8gYmUgYXBwbGllZCB0byB0aGUgTW9ycGggVGFyZ2V0c1xuICAgKi9cbiAgd2VpZ2h0cz86IG51bWJlcltdO1xufVxuXG4vKipcbiAqIEEgbm9kZSBpbiB0aGUgbm9kZSBoaWVyYXJjaHlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTm9kZSBleHRlbmRzIElDaGlsZFJvb3RQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIGNhbWVyYSByZWZlcmVuY2VkIGJ5IHRoaXMgbm9kZVxuICAgKi9cbiAgY2FtZXJhPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGluZGljZXMgb2YgdGhpcyBub2RlJ3MgY2hpbGRyZW5cbiAgICovXG4gIGNoaWxkcmVuPzogbnVtYmVyW107XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIHNraW4gcmVmZXJlbmNlZCBieSB0aGlzIG5vZGVcbiAgICovXG4gIHNraW4/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBIGZsb2F0aW5nLXBvaW50IDR4NCB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggc3RvcmVkIGluIGNvbHVtbi1tYWpvciBvcmRlclxuICAgKi9cbiAgbWF0cml4PzogbnVtYmVyW107XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIG1lc2ggaW4gdGhpcyBub2RlXG4gICAqL1xuICBtZXNoPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG5vZGUncyB1bml0IHF1YXRlcm5pb24gcm90YXRpb24gaW4gdGhlIG9yZGVyICh4LCB5LCB6LCB3KSwgd2hlcmUgdyBpcyB0aGUgc2NhbGFyXG4gICAqL1xuICByb3RhdGlvbj86IG51bWJlcltdO1xuICAvKipcbiAgICogVGhlIG5vZGUncyBub24tdW5pZm9ybSBzY2FsZSwgZ2l2ZW4gYXMgdGhlIHNjYWxpbmcgZmFjdG9ycyBhbG9uZyB0aGUgeCwgeSwgYW5kIHogYXhlc1xuICAgKi9cbiAgc2NhbGU/OiBudW1iZXJbXTtcbiAgLyoqXG4gICAqIFRoZSBub2RlJ3MgdHJhbnNsYXRpb24gYWxvbmcgdGhlIHgsIHksIGFuZCB6IGF4ZXNcbiAgICovXG4gIHRyYW5zbGF0aW9uPzogbnVtYmVyW107XG4gIC8qKlxuICAgKiBUaGUgd2VpZ2h0cyBvZiB0aGUgaW5zdGFudGlhdGVkIE1vcnBoIFRhcmdldC4gTnVtYmVyIG9mIGVsZW1lbnRzIG11c3QgbWF0Y2ggbnVtYmVyIG9mIE1vcnBoIFRhcmdldHMgb2YgdXNlZCBtZXNoXG4gICAqL1xuICB3ZWlnaHRzPzogbnVtYmVyW107XG59XG5cbi8qKlxuICogVGV4dHVyZSBzYW1wbGVyIHByb3BlcnRpZXMgZm9yIGZpbHRlcmluZyBhbmQgd3JhcHBpbmcgbW9kZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2FtcGxlciBleHRlbmRzIElDaGlsZFJvb3RQcm9wZXJ0eSB7XG4gIC8qKlxuICAgKiBNYWduaWZpY2F0aW9uIGZpbHRlci4gIFZhbGlkIHZhbHVlcyBjb3JyZXNwb25kIHRvIFdlYkdMIGVudW1zOiA5NzI4IChORUFSRVNUKSBhbmQgOTcyOSAoTElORUFSKVxuICAgKi9cbiAgbWFnRmlsdGVyPzogVGV4dHVyZU1hZ0ZpbHRlcjtcbiAgLyoqXG4gICAqIE1pbmlmaWNhdGlvbiBmaWx0ZXIuICBBbGwgdmFsaWQgdmFsdWVzIGNvcnJlc3BvbmQgdG8gV2ViR0wgZW51bXNcbiAgICovXG4gIG1pbkZpbHRlcj86IFRleHR1cmVNaW5GaWx0ZXI7XG4gIC8qKlxuICAgKiBTIChVKSB3cmFwcGluZyBtb2RlLiAgQWxsIHZhbGlkIHZhbHVlcyBjb3JyZXNwb25kIHRvIFdlYkdMIGVudW1zXG4gICAqL1xuICB3cmFwUz86IFRleHR1cmVXcmFwTW9kZTtcbiAgLyoqXG4gICAqIFQgKFYpIHdyYXBwaW5nIG1vZGUuICBBbGwgdmFsaWQgdmFsdWVzIGNvcnJlc3BvbmQgdG8gV2ViR0wgZW51bXNcbiAgICovXG4gIHdyYXBUPzogVGV4dHVyZVdyYXBNb2RlO1xufVxuXG4vKipcbiAqIFRoZSByb290IG5vZGVzIG9mIGEgc2NlbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2NlbmUgZXh0ZW5kcyBJQ2hpbGRSb290UHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIGluZGljZXMgb2YgZWFjaCByb290IG5vZGVcbiAgICovXG4gIG5vZGVzOiBudW1iZXJbXTtcbn1cblxuLyoqXG4gKiBKb2ludHMgYW5kIG1hdHJpY2VzIGRlZmluaW5nIGEgc2tpblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTa2luIGV4dGVuZHMgSUNoaWxkUm9vdFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgYWNjZXNzb3IgY29udGFpbmluZyB0aGUgZmxvYXRpbmctcG9pbnQgNHg0IGludmVyc2UtYmluZCBtYXRyaWNlcy4gIFRoZSBkZWZhdWx0IGlzIHRoYXQgZWFjaCBtYXRyaXggaXMgYSA0eDQgaWRlbnRpdHkgbWF0cml4LCB3aGljaCBpbXBsaWVzIHRoYXQgaW52ZXJzZS1iaW5kIG1hdHJpY2VzIHdlcmUgcHJlLWFwcGxpZWRcbiAgICovXG4gIGludmVyc2VCaW5kTWF0cmljZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIG5vZGUgdXNlZCBhcyBhIHNrZWxldG9uIHJvb3QuIFdoZW4gdW5kZWZpbmVkLCBqb2ludHMgdHJhbnNmb3JtcyByZXNvbHZlIHRvIHNjZW5lIHJvb3RcbiAgICovXG4gIHNrZWxldG9uPzogbnVtYmVyO1xuICAvKipcbiAgICogSW5kaWNlcyBvZiBza2VsZXRvbiBub2RlcywgdXNlZCBhcyBqb2ludHMgaW4gdGhpcyBza2luLiAgVGhlIGFycmF5IGxlbmd0aCBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBjb3VudCBwcm9wZXJ0eSBvZiB0aGUgaW52ZXJzZUJpbmRNYXRyaWNlcyBhY2Nlc3NvciAod2hlbiBkZWZpbmVkKVxuICAgKi9cbiAgam9pbnRzOiBudW1iZXJbXTtcbn1cblxuLyoqXG4gKiBBIHRleHR1cmUgYW5kIGl0cyBzYW1wbGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRleHR1cmUgZXh0ZW5kcyBJQ2hpbGRSb290UHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBzYW1wbGVyIHVzZWQgYnkgdGhpcyB0ZXh0dXJlLiBXaGVuIHVuZGVmaW5lZCwgYSBzYW1wbGVyIHdpdGggcmVwZWF0IHdyYXBwaW5nIGFuZCBhdXRvIGZpbHRlcmluZyBzaG91bGQgYmUgdXNlZFxuICAgKi9cbiAgc2FtcGxlcj86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgaW1hZ2UgdXNlZCBieSB0aGlzIHRleHR1cmVcbiAgICovXG4gIHNvdXJjZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlZmVyZW5jZSB0byBhIHRleHR1cmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGV4dHVyZUluZm8gZXh0ZW5kcyBJUHJvcGVydHkge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSB0ZXh0dXJlXG4gICAqL1xuICBpbmRleDogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHNldCBpbmRleCBvZiB0ZXh0dXJlJ3MgVEVYQ09PUkQgYXR0cmlidXRlIHVzZWQgZm9yIHRleHR1cmUgY29vcmRpbmF0ZSBtYXBwaW5nXG4gICAqL1xuICB0ZXhDb29yZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgcm9vdCBvYmplY3QgZm9yIGEgZ2xURiBhc3NldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElHTFRGIGV4dGVuZHMgSVByb3BlcnR5IHtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGFjY2Vzc29ycy4gQW4gYWNjZXNzb3IgaXMgYSB0eXBlZCB2aWV3IGludG8gYSBidWZmZXJWaWV3XG4gICAqL1xuICBhY2Nlc3NvcnM/OiBJQWNjZXNzb3JbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGtleWZyYW1lIGFuaW1hdGlvbnNcbiAgICovXG4gIGFuaW1hdGlvbnM/OiBJQW5pbWF0aW9uW107XG4gIC8qKlxuICAgKiBNZXRhZGF0YSBhYm91dCB0aGUgZ2xURiBhc3NldFxuICAgKi9cbiAgYXNzZXQ6IElBc3NldDtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGJ1ZmZlcnMuICBBIGJ1ZmZlciBwb2ludHMgdG8gYmluYXJ5IGdlb21ldHJ5LCBhbmltYXRpb24sIG9yIHNraW5zXG4gICAqL1xuICBidWZmZXJzPzogSUJ1ZmZlcltdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYnVmZmVyVmlld3MuICBBIGJ1ZmZlclZpZXcgaXMgYSB2aWV3IGludG8gYSBidWZmZXIgZ2VuZXJhbGx5IHJlcHJlc2VudGluZyBhIHN1YnNldCBvZiB0aGUgYnVmZmVyXG4gICAqL1xuICBidWZmZXJWaWV3cz86IElCdWZmZXJWaWV3W107XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBjYW1lcmFzXG4gICAqL1xuICBjYW1lcmFzPzogSUNhbWVyYVtdO1xuICAvKipcbiAgICogTmFtZXMgb2YgZ2xURiBleHRlbnNpb25zIHVzZWQgc29tZXdoZXJlIGluIHRoaXMgYXNzZXRcbiAgICovXG4gIGV4dGVuc2lvbnNVc2VkPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBOYW1lcyBvZiBnbFRGIGV4dGVuc2lvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgbG9hZCB0aGlzIGFzc2V0XG4gICAqL1xuICBleHRlbnNpb25zUmVxdWlyZWQ/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGltYWdlcy4gIEFuIGltYWdlIGRlZmluZXMgZGF0YSB1c2VkIHRvIGNyZWF0ZSBhIHRleHR1cmVcbiAgICovXG4gIGltYWdlcz86IElJbWFnZVtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgbWF0ZXJpYWxzLiAgQSBtYXRlcmlhbCBkZWZpbmVzIHRoZSBhcHBlYXJhbmNlIG9mIGEgcHJpbWl0aXZlXG4gICAqL1xuICBtYXRlcmlhbHM/OiBJTWF0ZXJpYWxbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIG1lc2hlcy4gIEEgbWVzaCBpcyBhIHNldCBvZiBwcmltaXRpdmVzIHRvIGJlIHJlbmRlcmVkXG4gICAqL1xuICBtZXNoZXM/OiBJTWVzaFtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygbm9kZXNcbiAgICovXG4gIG5vZGVzPzogSU5vZGVbXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIHNhbXBsZXJzLiAgQSBzYW1wbGVyIGNvbnRhaW5zIHByb3BlcnRpZXMgZm9yIHRleHR1cmUgZmlsdGVyaW5nIGFuZCB3cmFwcGluZyBtb2Rlc1xuICAgKi9cbiAgc2FtcGxlcnM/OiBJU2FtcGxlcltdO1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBkZWZhdWx0IHNjZW5lXG4gICAqL1xuICBzY2VuZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIHNjZW5lc1xuICAgKi9cbiAgc2NlbmVzPzogSVNjZW5lW107XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBza2lucy4gIEEgc2tpbiBpcyBkZWZpbmVkIGJ5IGpvaW50cyBhbmQgbWF0cmljZXNcbiAgICovXG4gIHNraW5zPzogSVNraW5bXTtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIHRleHR1cmVzXG4gICAqL1xuICB0ZXh0dXJlcz86IElUZXh0dXJlW107XG59XG4iLCJpbXBvcnQgeyBJbmRleEZvcm1hdCwgVHlwZWRBcnJheSwgVmVydGV4RWxlbWVudEZvcm1hdCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IENvbG9yLCBWZWN0b3IyLCBWZWN0b3IzLCBWZWN0b3I0IH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtbWF0aFwiO1xuaW1wb3J0IHsgQnVmZmVySW5mbywgUGFyc2VyQ29udGV4dCB9IGZyb20gXCIuL3BhcnNlci9QYXJzZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBBY2Nlc3NvckNvbXBvbmVudFR5cGUsIEFjY2Vzc29yVHlwZSwgSUFjY2Vzc29yLCBJQnVmZmVyVmlldywgSUdMVEYgfSBmcm9tIFwiLi9TY2hlbWFcIjtcblxuY29uc3QgY2hhckNvZGVPZkRvdCA9IFwiLlwiLmNoYXJDb2RlQXQoMCk7XG5jb25zdCByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcbmNvbnN0IHJlUHJvcE5hbWUgPSBSZWdFeHAoXG4gIC8vIE1hdGNoIGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBkb3Qgb3IgYnJhY2tldC5cbiAgXCJbXi5bXFxcXF1dK1wiICtcbiAgICBcInxcIiArXG4gICAgLy8gT3IgbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIGJyYWNrZXRzLlxuICAgIFwiXFxcXFsoPzpcIiArXG4gICAgLy8gTWF0Y2ggYSBub24tc3RyaW5nIGV4cHJlc3Npb24uXG4gICAgXCIoW15cXFwiJ11bXltdKilcIiArXG4gICAgXCJ8XCIgK1xuICAgIC8vIE9yIG1hdGNoIHN0cmluZ3MgKHN1cHBvcnRzIGVzY2FwaW5nIGNoYXJhY3RlcnMpLlxuICAgIFwiKFtcXFwiJ10pKCg/Oig/IVxcXFwyKVteXFxcXFxcXFxdfFxcXFxcXFxcLikqPylcXFxcMlwiICtcbiAgICBcIilcXFxcXVwiICtcbiAgICBcInxcIiArXG4gICAgLy8gT3IgbWF0Y2ggXCJcIiBhcyB0aGUgc3BhY2UgYmV0d2VlbiBjb25zZWN1dGl2ZSBkb3RzIG9yIGVtcHR5IGJyYWNrZXRzLlxuICAgIFwiKD89KD86XFxcXC58XFxcXFtcXFxcXSkoPzpcXFxcLnxcXFxcW1xcXFxdfCQpKVwiLFxuICBcImdcIlxuKTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIEdMVEZVdGlsIHtcbiAgcHVibGljIHN0YXRpYyBmbG9hdEJ1ZmZlclRvVmVjdG9yMkFycmF5KGJ1ZmZlcjogRmxvYXQzMkFycmF5KTogVmVjdG9yMltdIHtcbiAgICBjb25zdCBidWZmZXJMZW4gPSBidWZmZXIubGVuZ3RoO1xuICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5PFZlY3RvcjI+KGJ1ZmZlckxlbiAvIDIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmZmVyTGVuOyBpICs9IDIpIHtcbiAgICAgIGFycmF5W2kgLyAyXSA9IG5ldyBWZWN0b3IyKGJ1ZmZlcltpXSwgYnVmZmVyW2kgKyAxXSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZmxvYXRCdWZmZXJUb1ZlY3RvcjNBcnJheShidWZmZXI6IEZsb2F0MzJBcnJheSk6IFZlY3RvcjNbXSB7XG4gICAgY29uc3QgYnVmZmVyTGVuID0gYnVmZmVyLmxlbmd0aDtcbiAgICBjb25zdCBhcnJheSA9IG5ldyBBcnJheTxWZWN0b3IzPihidWZmZXJMZW4gLyAzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1ZmZlckxlbjsgaSArPSAzKSB7XG4gICAgICBhcnJheVtpIC8gM10gPSBuZXcgVmVjdG9yMyhidWZmZXJbaV0sIGJ1ZmZlcltpICsgMV0sIGJ1ZmZlcltpICsgMl0pO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZsb2F0QnVmZmVyVG9WZWN0b3I0QXJyYXkoYnVmZmVyOiBGbG9hdDMyQXJyYXkpOiBWZWN0b3I0W10ge1xuICAgIGNvbnN0IGJ1ZmZlckxlbiA9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY29uc3QgYXJyYXkgPSBuZXcgQXJyYXk8VmVjdG9yND4oYnVmZmVyTGVuIC8gNCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWZmZXJMZW47IGkgKz0gNCkge1xuICAgICAgYXJyYXlbaSAvIDRdID0gbmV3IFZlY3RvcjQoYnVmZmVyW2ldLCBidWZmZXJbaSArIDFdLCBidWZmZXJbaSArIDJdLCBidWZmZXJbaSArIDNdKTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmbG9hdEJ1ZmZlclRvQ29sb3JBcnJheShidWZmZXI6IEZsb2F0MzJBcnJheSwgaXNDb2xvcjM6IGJvb2xlYW4pOiBDb2xvcltdIHtcbiAgICBjb25zdCBidWZmZXJMZW4gPSBidWZmZXIubGVuZ3RoO1xuICAgIGNvbnN0IGNvbG9ycyA9IG5ldyBBcnJheTxDb2xvcj4oYnVmZmVyTGVuIC8gKGlzQ29sb3IzID8gMyA6IDQpKTtcblxuICAgIGlmIChpc0NvbG9yMykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWZmZXJMZW47IGkgKz0gMykge1xuICAgICAgICBjb2xvcnNbaSAvIDNdID0gbmV3IENvbG9yKGJ1ZmZlcltpXSwgYnVmZmVyW2kgKyAxXSwgYnVmZmVyW2kgKyAyXSwgMS4wKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWZmZXJMZW47IGkgKz0gNCkge1xuICAgICAgICBjb2xvcnNbaSAvIDRdID0gbmV3IENvbG9yKGJ1ZmZlcltpXSwgYnVmZmVyW2kgKyAxXSwgYnVmZmVyW2kgKyAyXSwgYnVmZmVyW2kgKyAzXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbG9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBiaW5hcnkgdGV4dCBmb3IgZ2xiIGxvYWRlci5cbiAgICovXG4gIHN0YXRpYyBkZWNvZGVUZXh0KGFycmF5OiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIFRleHREZWNvZGVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGFycmF5KTtcbiAgICB9XG5cbiAgICAvLyBUZXh0RGVjb2RlciBwb2x5ZmlsbFxuICAgIGxldCBzID0gXCJcIjtcblxuICAgIGZvciAobGV0IGkgPSAwLCBpbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGlsOyBpKyspIHtcbiAgICAgIHMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShhcnJheVtpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVVUklDb21wb25lbnQocykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9jY3VwaWVkIGJ5IGFjY2Vzc29yIHR5cGUuXG4gICAqL1xuICBzdGF0aWMgZ2V0QWNjZXNzb3JUeXBlU2l6ZShhY2Nlc3NvclR5cGU6IEFjY2Vzc29yVHlwZSk6IG51bWJlciB7XG4gICAgc3dpdGNoIChhY2Nlc3NvclR5cGUpIHtcbiAgICAgIGNhc2UgQWNjZXNzb3JUeXBlLlNDQUxBUjpcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBjYXNlIEFjY2Vzc29yVHlwZS5WRUMyOlxuICAgICAgICByZXR1cm4gMjtcbiAgICAgIGNhc2UgQWNjZXNzb3JUeXBlLlZFQzM6XG4gICAgICAgIHJldHVybiAzO1xuICAgICAgY2FzZSBBY2Nlc3NvclR5cGUuVkVDNDpcbiAgICAgICAgcmV0dXJuIDQ7XG4gICAgICBjYXNlIEFjY2Vzc29yVHlwZS5NQVQyOlxuICAgICAgICByZXR1cm4gNDtcbiAgICAgIGNhc2UgQWNjZXNzb3JUeXBlLk1BVDM6XG4gICAgICAgIHJldHVybiA5O1xuICAgICAgY2FzZSBBY2Nlc3NvclR5cGUuTUFUNDpcbiAgICAgICAgcmV0dXJuIDE2O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFR5cGVkQXJyYXkgY29ycmVzcG9uZGluZyB0byB0aGUgY29tcG9uZW50IHR5cGUuXG4gICAqL1xuICBzdGF0aWMgZ2V0Q29tcG9uZW50VHlwZShjb21wb25lbnRUeXBlOiBBY2Nlc3NvckNvbXBvbmVudFR5cGUpIHtcbiAgICBzd2l0Y2ggKGNvbXBvbmVudFR5cGUpIHtcbiAgICAgIGNhc2UgQWNjZXNzb3JDb21wb25lbnRUeXBlLkJZVEU6XG4gICAgICAgIHJldHVybiBJbnQ4QXJyYXk7XG4gICAgICBjYXNlIEFjY2Vzc29yQ29tcG9uZW50VHlwZS5VTlNJR05FRF9CWVRFOlxuICAgICAgICByZXR1cm4gVWludDhBcnJheTtcbiAgICAgIGNhc2UgQWNjZXNzb3JDb21wb25lbnRUeXBlLlNIT1JUOlxuICAgICAgICByZXR1cm4gSW50MTZBcnJheTtcbiAgICAgIGNhc2UgQWNjZXNzb3JDb21wb25lbnRUeXBlLlVOU0lHTkVEX1NIT1JUOlxuICAgICAgICByZXR1cm4gVWludDE2QXJyYXk7XG4gICAgICBjYXNlIEFjY2Vzc29yQ29tcG9uZW50VHlwZS5VTlNJR05FRF9JTlQ6XG4gICAgICAgIHJldHVybiBVaW50MzJBcnJheTtcbiAgICAgIGNhc2UgQWNjZXNzb3JDb21wb25lbnRUeXBlLkZMT0FUOlxuICAgICAgICByZXR1cm4gRmxvYXQzMkFycmF5O1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXROb3JtYWxpemVkQ29tcG9uZW50U2NhbGUoY29tcG9uZW50VHlwZTogQWNjZXNzb3JDb21wb25lbnRUeXBlKSB7XG4gICAgLy8gUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL2dsVEYvdHJlZS9tYXN0ZXIvZXh0ZW5zaW9ucy8yLjAvS2hyb25vcy9LSFJfbWVzaF9xdWFudGl6YXRpb24jZW5jb2RpbmctcXVhbnRpemVkLWRhdGFcbiAgICBzd2l0Y2ggKGNvbXBvbmVudFR5cGUpIHtcbiAgICAgIGNhc2UgQWNjZXNzb3JDb21wb25lbnRUeXBlLkJZVEU6XG4gICAgICAgIHJldHVybiAxIC8gMTI3O1xuICAgICAgY2FzZSBBY2Nlc3NvckNvbXBvbmVudFR5cGUuVU5TSUdORURfQllURTpcbiAgICAgICAgcmV0dXJuIDEgLyAyNTU7XG4gICAgICBjYXNlIEFjY2Vzc29yQ29tcG9uZW50VHlwZS5TSE9SVDpcbiAgICAgICAgcmV0dXJuIDEgLyAzMjc2NztcbiAgICAgIGNhc2UgQWNjZXNzb3JDb21wb25lbnRUeXBlLlVOU0lHTkVEX1NIT1JUOlxuICAgICAgICByZXR1cm4gMSAvIDY1NTM1O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2FsYWNlYW4uR0xURkxvYWRlcjogVW5zdXBwb3J0ZWQgbm9ybWFsaXplZCBhY2Nlc3NvciBjb21wb25lbnQgdHlwZS5cIik7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEFjY2Vzc29yQnVmZmVyKGNvbnRleHQ6IFBhcnNlckNvbnRleHQsIGdsdGY6IElHTFRGLCBhY2Nlc3NvcjogSUFjY2Vzc29yKTogQnVmZmVySW5mbyB7XG4gICAgY29uc3QgeyBidWZmZXJzIH0gPSBjb250ZXh0O1xuICAgIGNvbnN0IGJ1ZmZlclZpZXdzID0gZ2x0Zi5idWZmZXJWaWV3cztcblxuICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSBhY2Nlc3Nvci5jb21wb25lbnRUeXBlO1xuICAgIGNvbnN0IGJ1ZmZlclZpZXcgPSBidWZmZXJWaWV3c1thY2Nlc3Nvci5idWZmZXJWaWV3XTtcblxuICAgIGNvbnN0IGJ1ZmZlciA9IGJ1ZmZlcnNbYnVmZmVyVmlldy5idWZmZXJdO1xuICAgIGNvbnN0IGJ1ZmZlckJ5dGVPZmZzZXQgPSBidWZmZXJWaWV3LmJ5dGVPZmZzZXQgfHwgMDtcbiAgICBjb25zdCBieXRlT2Zmc2V0ID0gYWNjZXNzb3IuYnl0ZU9mZnNldCB8fCAwO1xuXG4gICAgY29uc3QgVHlwZWRBcnJheSA9IEdMVEZVdGlsLmdldENvbXBvbmVudFR5cGUoY29tcG9uZW50VHlwZSk7XG4gICAgY29uc3QgZGF0YUVsbWVudFNpemUgPSBHTFRGVXRpbC5nZXRBY2Nlc3NvclR5cGVTaXplKGFjY2Vzc29yLnR5cGUpO1xuICAgIGNvbnN0IGRhdGFFbGVtZW50Qnl0ZXMgPSBUeXBlZEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgIGNvbnN0IGVsZW1lbnRTdHJpZGUgPSBkYXRhRWxtZW50U2l6ZSAqIGRhdGFFbGVtZW50Qnl0ZXM7XG4gICAgY29uc3QgYWNjZXNzb3JDb3VudCA9IGFjY2Vzc29yLmNvdW50O1xuICAgIGNvbnN0IGJ1ZmZlclN0cmlkZSA9IGJ1ZmZlclZpZXcuYnl0ZVN0cmlkZTtcblxuICAgIGxldCBidWZmZXJJbmZvOiBCdWZmZXJJbmZvO1xuICAgIC8vIEFjY29yZGluZyB0byB0aGUgZ2xURiBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIG9ubHkgYnl0ZVN0cmlkZSBub3QgdW5kZWZpbmVkIGlzIGFsbG93ZWRcbiAgICBpZiAoYnVmZmVyU3RyaWRlICE9PSB1bmRlZmluZWQgJiYgYnVmZmVyU3RyaWRlICE9PSBlbGVtZW50U3RyaWRlKSB7XG4gICAgICBjb25zdCBidWZmZXJTbGljZSA9IE1hdGguZmxvb3IoYnl0ZU9mZnNldCAvIGJ1ZmZlclN0cmlkZSk7XG4gICAgICBjb25zdCBidWZmZXJDYWNoZUtleSA9IGFjY2Vzc29yLmJ1ZmZlclZpZXcgKyBcIjpcIiArIGNvbXBvbmVudFR5cGUgKyBcIjpcIiArIGJ1ZmZlclNsaWNlICsgXCI6XCIgKyBhY2Nlc3NvckNvdW50O1xuICAgICAgY29uc3QgYWNjZXNzb3JCdWZmZXJDYWNoZSA9IGNvbnRleHQuYWNjZXNzb3JCdWZmZXJDYWNoZTtcbiAgICAgIGJ1ZmZlckluZm8gPSBhY2Nlc3NvckJ1ZmZlckNhY2hlW2J1ZmZlckNhY2hlS2V5XTtcbiAgICAgIGlmICghYnVmZmVySW5mbykge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBidWZmZXJCeXRlT2Zmc2V0ICsgYnVmZmVyU2xpY2UgKiBidWZmZXJTdHJpZGU7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gYWNjZXNzb3JDb3VudCAqIChidWZmZXJTdHJpZGUgLyBkYXRhRWxlbWVudEJ5dGVzKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBUeXBlZEFycmF5KGJ1ZmZlciwgb2Zmc2V0LCBjb3VudCk7XG4gICAgICAgIGFjY2Vzc29yQnVmZmVyQ2FjaGVbYnVmZmVyQ2FjaGVLZXldID0gYnVmZmVySW5mbyA9IG5ldyBCdWZmZXJJbmZvKGRhdGEsIHRydWUsIGJ1ZmZlclN0cmlkZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGJ1ZmZlckJ5dGVPZmZzZXQgKyBieXRlT2Zmc2V0O1xuICAgICAgY29uc3QgY291bnQgPSBhY2Nlc3NvckNvdW50ICogZGF0YUVsbWVudFNpemU7XG4gICAgICBjb25zdCBkYXRhID0gbmV3IFR5cGVkQXJyYXkoYnVmZmVyLCBvZmZzZXQsIGNvdW50KTtcbiAgICAgIGJ1ZmZlckluZm8gPSBuZXcgQnVmZmVySW5mbyhkYXRhLCBmYWxzZSwgZWxlbWVudFN0cmlkZSk7XG4gICAgfVxuXG4gICAgaWYgKGFjY2Vzc29yLnNwYXJzZSkge1xuICAgICAgY29uc3QgZGF0YSA9IEdMVEZVdGlsLnByb2Nlc3NpbmdTcGFyc2VEYXRhKGdsdGYsIGFjY2Vzc29yLCBidWZmZXJzLCBidWZmZXJJbmZvLmRhdGEpO1xuICAgICAgYnVmZmVySW5mbyA9IG5ldyBCdWZmZXJJbmZvKGRhdGEsIGZhbHNlLCBidWZmZXJJbmZvLnN0cmlkZSk7XG4gICAgfVxuICAgIHJldHVybiBidWZmZXJJbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEdldCBhY2Nlc3NvciBkYXRhLlxuICAgKi9cbiAgc3RhdGljIGdldEFjY2Vzc29yRGF0YShnbHRmOiBJR0xURiwgYWNjZXNzb3I6IElBY2Nlc3NvciwgYnVmZmVyczogQXJyYXlCdWZmZXJbXSk6IFR5cGVkQXJyYXkge1xuICAgIGNvbnN0IGJ1ZmZlclZpZXdzID0gZ2x0Zi5idWZmZXJWaWV3cztcbiAgICBjb25zdCBidWZmZXJWaWV3ID0gYnVmZmVyVmlld3NbYWNjZXNzb3IuYnVmZmVyVmlld107XG4gICAgY29uc3QgYXJyYXlCdWZmZXIgPSBidWZmZXJzW2J1ZmZlclZpZXcuYnVmZmVyXTtcbiAgICBjb25zdCBhY2Nlc3NvckJ5dGVPZmZzZXQgPSBhY2Nlc3Nvci5oYXNPd25Qcm9wZXJ0eShcImJ5dGVPZmZzZXRcIikgPyBhY2Nlc3Nvci5ieXRlT2Zmc2V0IDogMDtcbiAgICBjb25zdCBidWZmZXJWaWV3Qnl0ZU9mZnNldCA9IGJ1ZmZlclZpZXcuaGFzT3duUHJvcGVydHkoXCJieXRlT2Zmc2V0XCIpID8gYnVmZmVyVmlldy5ieXRlT2Zmc2V0IDogMDtcbiAgICBjb25zdCBieXRlT2Zmc2V0ID0gYWNjZXNzb3JCeXRlT2Zmc2V0ICsgYnVmZmVyVmlld0J5dGVPZmZzZXQ7XG4gICAgY29uc3QgYWNjZXNzb3JUeXBlU2l6ZSA9IEdMVEZVdGlsLmdldEFjY2Vzc29yVHlwZVNpemUoYWNjZXNzb3IudHlwZSk7XG4gICAgY29uc3QgbGVuZ3RoID0gYWNjZXNzb3JUeXBlU2l6ZSAqIGFjY2Vzc29yLmNvdW50O1xuICAgIGNvbnN0IGJ5dGVTdHJpZGUgPSBidWZmZXJWaWV3LmJ5dGVTdHJpZGUgPz8gMDtcbiAgICBjb25zdCBhcnJheVR5cGUgPSBHTFRGVXRpbC5nZXRDb21wb25lbnRUeXBlKGFjY2Vzc29yLmNvbXBvbmVudFR5cGUpO1xuICAgIGxldCB1aW50OEFycmF5O1xuICAgIGlmIChieXRlU3RyaWRlKSB7XG4gICAgICBjb25zdCBhY2Nlc3NvckJ5dGVTaXplID0gYWNjZXNzb3JUeXBlU2l6ZSAqIGFycmF5VHlwZS5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgIHVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhY2Nlc3Nvci5jb3VudCAqIGFjY2Vzc29yQnl0ZVNpemUpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxCdWZmZXJWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIsIGJ1ZmZlclZpZXdCeXRlT2Zmc2V0LCBidWZmZXJWaWV3LmJ5dGVMZW5ndGgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY2Nlc3Nvci5jb3VudDsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYWNjZXNzb3JCeXRlU2l6ZTsgaisrKSB7XG4gICAgICAgICAgdWludDhBcnJheVtpICogYWNjZXNzb3JCeXRlU2l6ZSArIGpdID0gb3JpZ2luYWxCdWZmZXJWaWV3W2kgKiBieXRlU3RyaWRlICsgYWNjZXNzb3JCeXRlT2Zmc2V0ICsgal07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyLnNsaWNlKGJ5dGVPZmZzZXQsIGJ5dGVPZmZzZXQgKyBsZW5ndGggKiBhcnJheVR5cGUuQllURVNfUEVSX0VMRU1FTlQpKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlZEFycmF5ID0gbmV3IGFycmF5VHlwZSh1aW50OEFycmF5LmJ1ZmZlcik7XG5cbiAgICBpZiAoYWNjZXNzb3Iuc3BhcnNlKSB7XG4gICAgICBjb25zdCB7IGNvdW50LCBpbmRpY2VzLCB2YWx1ZXMgfSA9IGFjY2Vzc29yLnNwYXJzZTtcbiAgICAgIGNvbnN0IGluZGljZXNCdWZmZXJWaWV3ID0gYnVmZmVyVmlld3NbaW5kaWNlcy5idWZmZXJWaWV3XTtcbiAgICAgIGNvbnN0IHZhbHVlc0J1ZmZlclZpZXcgPSBidWZmZXJWaWV3c1t2YWx1ZXMuYnVmZmVyVmlld107XG4gICAgICBjb25zdCBpbmRpY2VzQXJyYXlCdWZmZXIgPSBidWZmZXJzW2luZGljZXNCdWZmZXJWaWV3LmJ1ZmZlcl07XG4gICAgICBjb25zdCB2YWx1ZXNBcnJheUJ1ZmZlciA9IGJ1ZmZlcnNbdmFsdWVzQnVmZmVyVmlldy5idWZmZXJdO1xuICAgICAgY29uc3QgaW5kaWNlc0J5dGVPZmZzZXQgPSAoaW5kaWNlcy5ieXRlT2Zmc2V0ID8/IDApICsgKGluZGljZXNCdWZmZXJWaWV3LmJ5dGVPZmZzZXQgPz8gMCk7XG4gICAgICBjb25zdCBpbmRpY2VzQnl0ZUxlbmd0aCA9IGluZGljZXNCdWZmZXJWaWV3LmJ5dGVMZW5ndGg7XG4gICAgICBjb25zdCB2YWx1ZXNCeXRlT2Zmc2V0ID0gKHZhbHVlcy5ieXRlT2Zmc2V0ID8/IDApICsgKHZhbHVlc0J1ZmZlclZpZXcuYnl0ZU9mZnNldCA/PyAwKTtcbiAgICAgIGNvbnN0IHZhbHVlc0J5dGVMZW5ndGggPSB2YWx1ZXNCdWZmZXJWaWV3LmJ5dGVMZW5ndGg7XG5cbiAgICAgIGNvbnN0IGluZGljZXNUeXBlID0gR0xURlV0aWwuZ2V0Q29tcG9uZW50VHlwZShpbmRpY2VzLmNvbXBvbmVudFR5cGUpO1xuICAgICAgY29uc3QgaW5kaWNlc0FycmF5ID0gbmV3IGluZGljZXNUeXBlKFxuICAgICAgICBpbmRpY2VzQXJyYXlCdWZmZXIsXG4gICAgICAgIGluZGljZXNCeXRlT2Zmc2V0LFxuICAgICAgICBpbmRpY2VzQnl0ZUxlbmd0aCAvIGluZGljZXNUeXBlLkJZVEVTX1BFUl9FTEVNRU5UXG4gICAgICApO1xuICAgICAgY29uc3QgdmFsdWVzQXJyYXkgPSBuZXcgYXJyYXlUeXBlKFxuICAgICAgICB2YWx1ZXNBcnJheUJ1ZmZlcixcbiAgICAgICAgdmFsdWVzQnl0ZU9mZnNldCxcbiAgICAgICAgdmFsdWVzQnl0ZUxlbmd0aCAvIGFycmF5VHlwZS5CWVRFU19QRVJfRUxFTUVOVFxuICAgICAgKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VJbmRleCA9IGluZGljZXNBcnJheVtpXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhY2Nlc3NvclR5cGVTaXplOyBqKyspIHtcbiAgICAgICAgICB0eXBlZEFycmF5W3JlcGxhY2VJbmRleCAqIGFjY2Vzc29yVHlwZVNpemUgKyBqXSA9IHZhbHVlc0FycmF5W2kgKiBhY2Nlc3NvclR5cGVTaXplICsgal07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZWRBcnJheTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRCdWZmZXJWaWV3RGF0YShidWZmZXJWaWV3OiBJQnVmZmVyVmlldywgYnVmZmVyczogQXJyYXlCdWZmZXJbXSk6IEFycmF5QnVmZmVyIHtcbiAgICBjb25zdCB7IGJ1ZmZlciwgYnl0ZU9mZnNldCA9IDAsIGJ5dGVMZW5ndGggfSA9IGJ1ZmZlclZpZXc7XG4gICAgY29uc3QgYXJyYXlCdWZmZXIgPSBidWZmZXJzW2J1ZmZlcl07XG5cbiAgICByZXR1cm4gYXJyYXlCdWZmZXIuc2xpY2UoYnl0ZU9mZnNldCwgYnl0ZU9mZnNldCArIGJ5dGVMZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhY2Nlc3NvciBkYXRhLlxuICAgKi9cbiAgc3RhdGljIHByb2Nlc3NpbmdTcGFyc2VEYXRhKFxuICAgIGdsdGY6IElHTFRGLFxuICAgIGFjY2Vzc29yOiBJQWNjZXNzb3IsXG4gICAgYnVmZmVyczogQXJyYXlCdWZmZXJbXSxcbiAgICBvcmlnaW5EYXRhOiBUeXBlZEFycmF5XG4gICk6IFR5cGVkQXJyYXkge1xuICAgIGNvbnN0IGJ1ZmZlclZpZXdzID0gZ2x0Zi5idWZmZXJWaWV3cztcbiAgICBjb25zdCBhY2Nlc3NvclR5cGVTaXplID0gR0xURlV0aWwuZ2V0QWNjZXNzb3JUeXBlU2l6ZShhY2Nlc3Nvci50eXBlKTtcbiAgICBjb25zdCBUeXBlZEFycmF5ID0gR0xURlV0aWwuZ2V0Q29tcG9uZW50VHlwZShhY2Nlc3Nvci5jb21wb25lbnRUeXBlKTtcbiAgICBjb25zdCBkYXRhID0gb3JpZ2luRGF0YS5zbGljZSgpO1xuXG4gICAgY29uc3QgeyBjb3VudCwgaW5kaWNlcywgdmFsdWVzIH0gPSBhY2Nlc3Nvci5zcGFyc2U7XG4gICAgY29uc3QgaW5kaWNlc0J1ZmZlclZpZXcgPSBidWZmZXJWaWV3c1tpbmRpY2VzLmJ1ZmZlclZpZXddO1xuICAgIGNvbnN0IHZhbHVlc0J1ZmZlclZpZXcgPSBidWZmZXJWaWV3c1t2YWx1ZXMuYnVmZmVyVmlld107XG4gICAgY29uc3QgaW5kaWNlc0FycmF5QnVmZmVyID0gYnVmZmVyc1tpbmRpY2VzQnVmZmVyVmlldy5idWZmZXJdO1xuICAgIGNvbnN0IHZhbHVlc0FycmF5QnVmZmVyID0gYnVmZmVyc1t2YWx1ZXNCdWZmZXJWaWV3LmJ1ZmZlcl07XG4gICAgY29uc3QgaW5kaWNlc0J5dGVPZmZzZXQgPSAoaW5kaWNlcy5ieXRlT2Zmc2V0ID8/IDApICsgKGluZGljZXNCdWZmZXJWaWV3LmJ5dGVPZmZzZXQgPz8gMCk7XG4gICAgY29uc3QgaW5kaWNlc0J5dGVMZW5ndGggPSBpbmRpY2VzQnVmZmVyVmlldy5ieXRlTGVuZ3RoO1xuICAgIGNvbnN0IHZhbHVlc0J5dGVPZmZzZXQgPSAodmFsdWVzLmJ5dGVPZmZzZXQgPz8gMCkgKyAodmFsdWVzQnVmZmVyVmlldy5ieXRlT2Zmc2V0ID8/IDApO1xuICAgIGNvbnN0IHZhbHVlc0J5dGVMZW5ndGggPSB2YWx1ZXNCdWZmZXJWaWV3LmJ5dGVMZW5ndGg7XG5cbiAgICBjb25zdCBJbmRleFR5cGVBcnJheSA9IEdMVEZVdGlsLmdldENvbXBvbmVudFR5cGUoaW5kaWNlcy5jb21wb25lbnRUeXBlKTtcbiAgICBjb25zdCBpbmRpY2VzQXJyYXkgPSBuZXcgSW5kZXhUeXBlQXJyYXkoXG4gICAgICBpbmRpY2VzQXJyYXlCdWZmZXIsXG4gICAgICBpbmRpY2VzQnl0ZU9mZnNldCxcbiAgICAgIGluZGljZXNCeXRlTGVuZ3RoIC8gSW5kZXhUeXBlQXJyYXkuQllURVNfUEVSX0VMRU1FTlRcbiAgICApO1xuICAgIGNvbnN0IHZhbHVlc0FycmF5ID0gbmV3IFR5cGVkQXJyYXkoXG4gICAgICB2YWx1ZXNBcnJheUJ1ZmZlcixcbiAgICAgIHZhbHVlc0J5dGVPZmZzZXQsXG4gICAgICB2YWx1ZXNCeXRlTGVuZ3RoIC8gVHlwZWRBcnJheS5CWVRFU19QRVJfRUxFTUVOVFxuICAgICk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgIGNvbnN0IHJlcGxhY2VJbmRleCA9IGluZGljZXNBcnJheVtpXTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYWNjZXNzb3JUeXBlU2l6ZTsgaisrKSB7XG4gICAgICAgIGRhdGFbcmVwbGFjZUluZGV4ICogYWNjZXNzb3JUeXBlU2l6ZSArIGpdID0gdmFsdWVzQXJyYXlbaSAqIGFjY2Vzc29yVHlwZVNpemUgKyBqXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRJbmRleEZvcm1hdCh0eXBlOiBBY2Nlc3NvckNvbXBvbmVudFR5cGUpOiBJbmRleEZvcm1hdCB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIEFjY2Vzc29yQ29tcG9uZW50VHlwZS5VTlNJR05FRF9CWVRFOlxuICAgICAgICByZXR1cm4gSW5kZXhGb3JtYXQuVUludDg7XG4gICAgICBjYXNlIEFjY2Vzc29yQ29tcG9uZW50VHlwZS5VTlNJR05FRF9TSE9SVDpcbiAgICAgICAgcmV0dXJuIEluZGV4Rm9ybWF0LlVJbnQxNjtcbiAgICAgIGNhc2UgQWNjZXNzb3JDb21wb25lbnRUeXBlLlVOU0lHTkVEX0lOVDpcbiAgICAgICAgcmV0dXJuIEluZGV4Rm9ybWF0LlVJbnQzMjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RWxlbWVudEZvcm1hdCh0eXBlOiBBY2Nlc3NvckNvbXBvbmVudFR5cGUsIHNpemU6IG51bWJlciwgbm9ybWFsaXplZDogYm9vbGVhbiA9IGZhbHNlKTogVmVydGV4RWxlbWVudEZvcm1hdCB7XG4gICAgaWYgKHR5cGUgPT0gQWNjZXNzb3JDb21wb25lbnRUeXBlLkZMT0FUKSB7XG4gICAgICBzd2l0Y2ggKHNpemUpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIHJldHVybiBWZXJ0ZXhFbGVtZW50Rm9ybWF0LkZsb2F0O1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgcmV0dXJuIFZlcnRleEVsZW1lbnRGb3JtYXQuVmVjdG9yMjtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHJldHVybiBWZXJ0ZXhFbGVtZW50Rm9ybWF0LlZlY3RvcjM7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gVmVydGV4RWxlbWVudEZvcm1hdC5WZWN0b3I0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlID09IEFjY2Vzc29yQ29tcG9uZW50VHlwZS5TSE9SVCkge1xuICAgICAgc3dpdGNoIChzaXplKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZCA/IFZlcnRleEVsZW1lbnRGb3JtYXQuTm9ybWFsaXplZFNob3J0MiA6IFZlcnRleEVsZW1lbnRGb3JtYXQuU2hvcnQyO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZCA/IFZlcnRleEVsZW1lbnRGb3JtYXQuTm9ybWFsaXplZFNob3J0NCA6IFZlcnRleEVsZW1lbnRGb3JtYXQuU2hvcnQ0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlID09IEFjY2Vzc29yQ29tcG9uZW50VHlwZS5VTlNJR05FRF9TSE9SVCkge1xuICAgICAgc3dpdGNoIChzaXplKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZCA/IFZlcnRleEVsZW1lbnRGb3JtYXQuTm9ybWFsaXplZFVTaG9ydDIgOiBWZXJ0ZXhFbGVtZW50Rm9ybWF0LlVTaG9ydDI7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBub3JtYWxpemVkID8gVmVydGV4RWxlbWVudEZvcm1hdC5Ob3JtYWxpemVkVVNob3J0NCA6IFZlcnRleEVsZW1lbnRGb3JtYXQuVVNob3J0NDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PSBBY2Nlc3NvckNvbXBvbmVudFR5cGUuQllURSkge1xuICAgICAgc3dpdGNoIChzaXplKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQgPyBWZXJ0ZXhFbGVtZW50Rm9ybWF0Lk5vcm1hbGl6ZWRCeXRlNCA6IFZlcnRleEVsZW1lbnRGb3JtYXQuQnl0ZTQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT0gQWNjZXNzb3JDb21wb25lbnRUeXBlLlVOU0lHTkVEX0JZVEUpIHtcbiAgICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJldHVybiBub3JtYWxpemVkID8gVmVydGV4RWxlbWVudEZvcm1hdC5Ob3JtYWxpemVkVUJ5dGU0IDogVmVydGV4RWxlbWVudEZvcm1hdC5VQnl0ZTQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgaW1hZ2UgYnVmZmVyXG4gICAqL1xuICBzdGF0aWMgbG9hZEltYWdlQnVmZmVyKGltYWdlQnVmZmVyOiBBcnJheUJ1ZmZlciwgdHlwZTogc3RyaW5nKTogUHJvbWlzZTxIVE1MSW1hZ2VFbGVtZW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgd2luZG93LkJsb2IoW2ltYWdlQnVmZmVyXSwgeyB0eXBlIH0pO1xuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIkZhaWxlZCB0byBsb2FkIGltYWdlIGJ1ZmZlclwiKSk7XG4gICAgICB9O1xuICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gQ2FsbCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgdG8gYXZvaWQgaU9TJ3MgYnVnLlxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoaW1nKTtcbiAgICAgICAgICBpbWcub25sb2FkID0gbnVsbDtcbiAgICAgICAgICBpbWcub25lcnJvciA9IG51bGw7XG4gICAgICAgICAgaW1nLm9uYWJvcnQgPSBudWxsO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBpbWcuY3Jvc3NPcmlnaW4gPSBcImFub255bW91c1wiO1xuICAgICAgaW1nLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgaXNBYnNvbHV0ZVVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXig/Omh0dHB8YmxvYnxkYXRhOnxcXC8pLy50ZXN0KHVybCk7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VSZWxhdGl2ZVVybChiYXNlVXJsOiBzdHJpbmcsIHJlbGF0aXZlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChHTFRGVXRpbC5pc0Fic29sdXRlVXJsKHJlbGF0aXZlVXJsKSkge1xuICAgICAgcmV0dXJuIHJlbGF0aXZlVXJsO1xuICAgIH1cblxuICAgIHJldHVybiBiYXNlVXJsLnN1YnN0cmluZygwLCBiYXNlVXJsLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpICsgR0xURlV0aWwuX2Zvcm1hdFJlbGF0aXZlUGF0aChyZWxhdGl2ZVVybCk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdGhlIGdsYiBmb3JtYXQuXG4gICAqL1xuICBzdGF0aWMgcGFyc2VHTEIoZ2xiOiBBcnJheUJ1ZmZlcik6IHtcbiAgICBnbHRmOiBJR0xURjtcbiAgICBidWZmZXJzOiBBcnJheUJ1ZmZlcltdO1xuICB9IHtcbiAgICBjb25zdCBVSU5UMzJfTEVOR1RIID0gNDtcbiAgICBjb25zdCBHTEJfSEVBREVSX01BR0lDID0gMHg0NjU0NmM2NzsgLy8gJ2dsVEYnXG4gICAgY29uc3QgR0xCX0hFQURFUl9MRU5HVEggPSAxMjtcbiAgICBjb25zdCBHTEJfQ0hVTktfVFlQRVMgPSB7IEpTT046IDB4NGU0ZjUzNGEsIEJJTjogMHgwMDRlNDk0MiB9O1xuXG4gICAgY29uc3QgZGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoZ2xiKTtcblxuICAgIC8vIHJlYWQgaGVhZGVyXG4gICAgY29uc3QgaGVhZGVyID0ge1xuICAgICAgbWFnaWM6IGRhdGFWaWV3LmdldFVpbnQzMigwLCB0cnVlKSxcbiAgICAgIHZlcnNpb246IGRhdGFWaWV3LmdldFVpbnQzMihVSU5UMzJfTEVOR1RILCB0cnVlKSxcbiAgICAgIGxlbmd0aDogZGF0YVZpZXcuZ2V0VWludDMyKDIgKiBVSU5UMzJfTEVOR1RILCB0cnVlKVxuICAgIH07XG5cbiAgICBpZiAoaGVhZGVyLm1hZ2ljICE9PSBHTEJfSEVBREVSX01BR0lDKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBnbGIgbWFnaWMgbnVtYmVyLiBFeHBlY3RlZCAweDQ2NTQ2QzY3LCBmb3VuZCAweFwiICsgaGVhZGVyLm1hZ2ljLnRvU3RyaW5nKDE2KSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyByZWFkIG1haW4gZGF0YVxuICAgIGxldCBjaHVua0xlbmd0aCA9IGRhdGFWaWV3LmdldFVpbnQzMihHTEJfSEVBREVSX0xFTkdUSCwgdHJ1ZSk7XG4gICAgbGV0IGNodW5rVHlwZSA9IGRhdGFWaWV3LmdldFVpbnQzMihHTEJfSEVBREVSX0xFTkdUSCArIFVJTlQzMl9MRU5HVEgsIHRydWUpO1xuXG4gICAgLy8gcmVhZCBnbFRGIGpzb25cbiAgICBpZiAoY2h1bmtUeXBlICE9PSBHTEJfQ0hVTktfVFlQRVMuSlNPTikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgZ2xiIGNodW5rIHR5cGUuIEV4cGVjdGVkIDB4NEU0RjUzNEEsIGZvdW5kIDB4XCIgKyBjaHVua1R5cGUudG9TdHJpbmcoMTYpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGdsVEZEYXRhID0gbmV3IFVpbnQ4QXJyYXkoZ2xiLCBHTEJfSEVBREVSX0xFTkdUSCArIDIgKiBVSU5UMzJfTEVOR1RILCBjaHVua0xlbmd0aCk7XG4gICAgY29uc3QgZ2x0ZjogSUdMVEYgPSBKU09OLnBhcnNlKEdMVEZVdGlsLmRlY29kZVRleHQoZ2xURkRhdGEpKTtcblxuICAgIC8vIHJlYWQgYWxsIGJ1ZmZlcnNcbiAgICBjb25zdCBidWZmZXJzOiBBcnJheUJ1ZmZlcltdID0gW107XG4gICAgbGV0IGJ5dGVPZmZzZXQgPSBHTEJfSEVBREVSX0xFTkdUSCArIDIgKiBVSU5UMzJfTEVOR1RIICsgY2h1bmtMZW5ndGg7XG5cbiAgICB3aGlsZSAoYnl0ZU9mZnNldCA8IGhlYWRlci5sZW5ndGgpIHtcbiAgICAgIGNodW5rTGVuZ3RoID0gZGF0YVZpZXcuZ2V0VWludDMyKGJ5dGVPZmZzZXQsIHRydWUpO1xuICAgICAgY2h1bmtUeXBlID0gZGF0YVZpZXcuZ2V0VWludDMyKGJ5dGVPZmZzZXQgKyBVSU5UMzJfTEVOR1RILCB0cnVlKTtcblxuICAgICAgaWYgKGNodW5rVHlwZSAhPT0gR0xCX0NIVU5LX1RZUEVTLkJJTikge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBnbGIgY2h1bmsgdHlwZS4gRXhwZWN0ZWQgMHgwMDRFNDk0MiwgZm91bmQgMHhcIiArIGNodW5rVHlwZS50b1N0cmluZygxNikpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3VycmVudE9mZnNldCA9IGJ5dGVPZmZzZXQgKyAyICogVUlOVDMyX0xFTkdUSDtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGdsYi5zbGljZShjdXJyZW50T2Zmc2V0LCBjdXJyZW50T2Zmc2V0ICsgY2h1bmtMZW5ndGgpO1xuICAgICAgYnVmZmVycy5wdXNoKGJ1ZmZlcik7XG5cbiAgICAgIGJ5dGVPZmZzZXQgKz0gY2h1bmtMZW5ndGggKyAyICogVUlOVDMyX0xFTkdUSDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2x0ZixcbiAgICAgIGJ1ZmZlcnNcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2Zvcm1hdFJlbGF0aXZlUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIEZvciBleGFtcGxlIGlucHV0IGlzIFwiYS9iXCIsIFwiL2EvYlwiLCBcIi4vYS9iXCIsIFwiLi9hLy4vYlwiLCBcIi4vYS8uLi9hL2JcIiwgb3V0cHV0IGlzIFwiYS9iXCJcbiAgICByZXR1cm4gcGF0aFxuICAgICAgLnNwbGl0KFwiL1wiKVxuICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcbiAgICAgICAgaWYgKGN1ciA9PT0gXCIuLlwiKSBhY2MucG9wKCk7XG4gICAgICAgIGVsc2UgaWYgKGN1ciAhPT0gXCIuXCIpIGFjYy5wdXNoKGN1cik7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSlcbiAgICAgIC5qb2luKFwiL1wiKTtcbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIF9hcnJheV9saWtlX3RvX2FycmF5KGFyciwgbGVuKSB7XG4gICAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIGFycjJbaV0gPSBhcnJbaV07XG5cbiAgICByZXR1cm4gYXJyMjtcbn1cbmV4cG9ydCB7IF9hcnJheV9saWtlX3RvX2FycmF5IGFzIF8gfTtcbiIsImltcG9ydCB7IF9hcnJheV9saWtlX3RvX2FycmF5IH0gZnJvbSBcIi4vX2FycmF5X2xpa2VfdG9fYXJyYXkuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIF9hcnJheV93aXRob3V0X2hvbGVzKGFycikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlfbGlrZV90b19hcnJheShhcnIpO1xufVxuZXhwb3J0IHsgX2FycmF5X3dpdGhvdXRfaG9sZXMgYXMgXyB9O1xuIiwiZXhwb3J0IGZ1bmN0aW9uIF9pdGVyYWJsZV90b19hcnJheShpdGVyKSB7XG4gICAgaWYgKHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgaXRlcltTeW1ib2wuaXRlcmF0b3JdICE9IG51bGwgfHwgaXRlcltcIkBAaXRlcmF0b3JcIl0gIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbiAgICB9XG59XG5leHBvcnQgeyBfaXRlcmFibGVfdG9fYXJyYXkgYXMgXyB9O1xuIiwiZXhwb3J0IGZ1bmN0aW9uIF9ub25faXRlcmFibGVfc3ByZWFkKCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuZXhwb3J0IHsgX25vbl9pdGVyYWJsZV9zcHJlYWQgYXMgXyB9O1xuIiwiaW1wb3J0IHsgX2FycmF5X2xpa2VfdG9fYXJyYXkgfSBmcm9tIFwiLi9fYXJyYXlfbGlrZV90b19hcnJheS5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gX3Vuc3VwcG9ydGVkX2l0ZXJhYmxlX3RvX2FycmF5KG8sIG1pbkxlbikge1xuICAgIGlmICghbykgcmV0dXJuO1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheV9saWtlX3RvX2FycmF5KG8sIG1pbkxlbik7XG5cbiAgICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG5cbiAgICBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG4pO1xuICAgIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5X2xpa2VfdG9fYXJyYXkobywgbWluTGVuKTtcbn1cbmV4cG9ydCB7IF91bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheSBhcyBfIH07XG4iLCJpbXBvcnQgeyBfYXJyYXlfd2l0aG91dF9ob2xlcyB9IGZyb20gXCIuL19hcnJheV93aXRob3V0X2hvbGVzLmpzXCI7XG5pbXBvcnQgeyBfaXRlcmFibGVfdG9fYXJyYXkgfSBmcm9tIFwiLi9faXRlcmFibGVfdG9fYXJyYXkuanNcIjtcbmltcG9ydCB7IF9ub25faXRlcmFibGVfc3ByZWFkIH0gZnJvbSBcIi4vX25vbl9pdGVyYWJsZV9zcHJlYWQuanNcIjtcbmltcG9ydCB7IF91bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheSB9IGZyb20gXCIuL191bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheS5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gX3RvX2NvbnN1bWFibGVfYXJyYXkoYXJyKSB7XG4gICAgcmV0dXJuIF9hcnJheV93aXRob3V0X2hvbGVzKGFycikgfHwgX2l0ZXJhYmxlX3RvX2FycmF5KGFycikgfHwgX3Vuc3VwcG9ydGVkX2l0ZXJhYmxlX3RvX2FycmF5KGFycikgfHwgX25vbl9pdGVyYWJsZV9zcHJlYWQoKTtcbn1cbmV4cG9ydCB7IF90b19jb25zdW1hYmxlX2FycmF5IGFzIF8gfTtcbiIsImltcG9ydCB7IEFuaW1hdGlvbkNsaXAsIEFzc2V0UHJvbWlzZSwgRW5naW5lT2JqZWN0LCBNYXRlcmlhbCwgTWVzaCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IEV4dGVuc2lvblBhcnNlciB9IGZyb20gXCIuLi9leHRlbnNpb25zL0V4dGVuc2lvblBhcnNlclwiO1xuaW1wb3J0IHsgRXh0ZW5zaW9uU2NoZW1hIH0gZnJvbSBcIi4uL2V4dGVuc2lvbnMvU2NoZW1hXCI7XG5pbXBvcnQgeyBQYXJzZXJDb250ZXh0IH0gZnJvbSBcIi4vUGFyc2VyQ29udGV4dFwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFyc2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2V4dGVuc2lvblBhcnNlcnM6IFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvblBhcnNlcltdPiA9IHt9O1xuXG4gIHN0YXRpYyBwYXJzZUVuZ2luZVJlc291cmNlKFxuICAgIGV4dGVuc2lvbk5hbWU6IHN0cmluZyxcbiAgICBleHRlbnNpb25TY2hlbWE6IEV4dGVuc2lvblNjaGVtYSxcbiAgICBwYXJzZVJlc291cmNlOiBFbmdpbmVPYmplY3QsXG4gICAgY29udGV4dDogUGFyc2VyQ29udGV4dCxcbiAgICAuLi5leHRyYVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBwYXJzZXJzID0gUGFyc2VyLl9leHRlbnNpb25QYXJzZXJzW2V4dGVuc2lvbk5hbWVdO1xuXG4gICAgaWYgKHBhcnNlcnM/Lmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJzZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhcnNlcnNbaV0ucGFyc2VFbmdpbmVSZXNvdXJjZShleHRlbnNpb25TY2hlbWEsIHBhcnNlUmVzb3VyY2UsIGNvbnRleHQsIC4uLmV4dHJhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlRW5naW5lUmVzb3VyY2U8VCBleHRlbmRzIEVuZ2luZU9iamVjdD4oXG4gICAgZXh0ZW5zaW9uTmFtZTogc3RyaW5nLFxuICAgIGV4dGVuc2lvblNjaGVtYTogRXh0ZW5zaW9uU2NoZW1hLFxuICAgIGNvbnRleHQ6IFBhcnNlckNvbnRleHQsXG4gICAgLi4uZXh0cmFcbiAgKTogVCB8IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IHBhcnNlcnMgPSBQYXJzZXIuX2V4dGVuc2lvblBhcnNlcnNbZXh0ZW5zaW9uTmFtZV07XG5cbiAgICBpZiAocGFyc2Vycz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcGFyc2Vyc1swXS5jcmVhdGVFbmdpbmVSZXNvdXJjZShleHRlbnNpb25TY2hlbWEsIGNvbnRleHQsIC4uLmV4dHJhKSBhcyBUO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBoYXNFeHRlbnNpb25QYXJzZXIoZXh0ZW5zaW9uTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcGFyc2VycyA9IFBhcnNlci5fZXh0ZW5zaW9uUGFyc2Vyc1tleHRlbnNpb25OYW1lXTtcbiAgICByZXR1cm4gISFwYXJzZXJzPy5sZW5ndGg7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhbGl6ZShleHRlbnNpb25OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJzZXJzID0gUGFyc2VyLl9leHRlbnNpb25QYXJzZXJzW2V4dGVuc2lvbk5hbWVdO1xuXG4gICAgaWYgKHBhcnNlcnM/Lmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJzZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHBhcnNlcnNbaV0uaW5pdGlhbGl6ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHN0YXRpYyBfYWRkRXh0ZW5zaW9uUGFyc2VyKGV4dGVuc2lvbk5hbWU6IHN0cmluZywgZXh0ZW5zaW9uUGFyc2VyOiBFeHRlbnNpb25QYXJzZXIpIHtcbiAgICBpZiAoIVBhcnNlci5fZXh0ZW5zaW9uUGFyc2Vyc1tleHRlbnNpb25OYW1lXSkge1xuICAgICAgUGFyc2VyLl9leHRlbnNpb25QYXJzZXJzW2V4dGVuc2lvbk5hbWVdID0gW107XG4gICAgfVxuICAgIFBhcnNlci5fZXh0ZW5zaW9uUGFyc2Vyc1tleHRlbnNpb25OYW1lXS5wdXNoKGV4dGVuc2lvblBhcnNlcik7XG4gIH1cblxuICBhYnN0cmFjdCBwYXJzZShjb250ZXh0OiBQYXJzZXJDb250ZXh0KTogQXNzZXRQcm9taXNlPGFueT4gfCB2b2lkIHwgTWF0ZXJpYWwgfCBBbmltYXRpb25DbGlwIHwgTWVzaDtcbn1cblxuLyoqXG4gKiBEZWNsYXJlIEV4dGVuc2lvblBhcnNlcidzIGRlY29yYXRvci5cbiAqIEBwYXJhbSBleHRlbnNpb25OYW1lIC0gRXh0ZW5zaW9uIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbk5hbWU6IHN0cmluZykge1xuICByZXR1cm4gKHBhcnNlcjogbmV3ICgpID0+IEV4dGVuc2lvblBhcnNlcikgPT4ge1xuICAgIGNvbnN0IGV4dGVuc2lvblBhcnNlciA9IG5ldyBwYXJzZXIoKTtcblxuICAgIFBhcnNlci5fYWRkRXh0ZW5zaW9uUGFyc2VyKGV4dGVuc2lvbk5hbWUsIGV4dGVuc2lvblBhcnNlcik7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBFbmdpbmVPYmplY3QgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBQYXJzZXJDb250ZXh0IH0gZnJvbSBcIi4uL3BhcnNlci9QYXJzZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBFeHRlbnNpb25TY2hlbWEgfSBmcm9tIFwiLi9TY2hlbWFcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEV4dGVuc2lvblBhcnNlciB7XG4gIGluaXRpYWxpemUoKTogdm9pZCB7fVxuXG4gIHBhcnNlRW5naW5lUmVzb3VyY2UoXG4gICAgc2NoZW1hOiBFeHRlbnNpb25TY2hlbWEsXG4gICAgcGFyc2VSZXNvdXJjZTogRW5naW5lT2JqZWN0LFxuICAgIGNvbnRleHQ6IFBhcnNlckNvbnRleHQsXG4gICAgLi4uZXh0cmFcbiAgKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge31cblxuICBjcmVhdGVFbmdpbmVSZXNvdXJjZShcbiAgICBzY2hlbWE6IEV4dGVuc2lvblNjaGVtYSxcbiAgICBjb250ZXh0OiBQYXJzZXJDb250ZXh0LFxuICAgIC4uLmV4dHJhXG4gICk6IEVuZ2luZU9iamVjdCB8IFByb21pc2U8RW5naW5lT2JqZWN0PiB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCB7IERSQUNPRGVjb2RlciB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRyYWNvXCI7XG5pbXBvcnQgeyBHTFRGVXRpbCB9IGZyb20gXCIuLi9HTFRGVXRpbFwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJFeHRlbnNpb24gfSBmcm9tIFwiLi4vcGFyc2VyL1BhcnNlclwiO1xuaW1wb3J0IHsgUGFyc2VyQ29udGV4dCB9IGZyb20gXCIuLi9wYXJzZXIvUGFyc2VyQ29udGV4dFwiO1xuaW1wb3J0IHsgSU1lc2hQcmltaXRpdmUgfSBmcm9tIFwiLi4vU2NoZW1hXCI7XG5pbXBvcnQgeyBFeHRlbnNpb25QYXJzZXIgfSBmcm9tIFwiLi9FeHRlbnNpb25QYXJzZXJcIjtcbmltcG9ydCB7IElLSFJEcmFjb01lc2hDb21wcmVzc2lvbiB9IGZyb20gXCIuL1NjaGVtYVwiO1xuXG5AcmVnaXN0ZXJFeHRlbnNpb24oXCJLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvblwiKVxuY2xhc3MgS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24gZXh0ZW5kcyBFeHRlbnNpb25QYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVjb2RlcjogRFJBQ09EZWNvZGVyO1xuXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgaWYgKCFLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbi5fZGVjb2Rlcikge1xuICAgICAgS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24uX2RlY29kZXIgPSBuZXcgRFJBQ09EZWNvZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlRW5naW5lUmVzb3VyY2Uoc2NoZW1hOiBJS0hSRHJhY29NZXNoQ29tcHJlc3Npb24sIGNvbnRleHQ6IFBhcnNlckNvbnRleHQsIGdsdGZQcmltaXRpdmU6IElNZXNoUHJpbWl0aXZlKSB7XG4gICAgY29uc3QgeyBnbHRmLCBidWZmZXJzIH0gPSBjb250ZXh0O1xuICAgIGNvbnN0IHsgYnVmZmVyVmlld3MsIGFjY2Vzc29ycyB9ID0gZ2x0ZjtcbiAgICBjb25zdCB7IGJ1ZmZlclZpZXc6IGJ1ZmZlclZpZXdJbmRleCwgYXR0cmlidXRlczogZ2x0ZkF0dHJpYnV0ZU1hcCB9ID0gc2NoZW1hO1xuXG4gICAgY29uc3QgYXR0cmlidXRlTWFwID0ge307XG4gICAgY29uc3QgYXR0cmlidXRlVHlwZU1hcCA9IHt9O1xuICAgIGZvciAobGV0IGF0dHJpYnV0ZU5hbWUgaW4gZ2x0ZkF0dHJpYnV0ZU1hcCkge1xuICAgICAgYXR0cmlidXRlTWFwW2F0dHJpYnV0ZU5hbWVdID0gZ2x0ZkF0dHJpYnV0ZU1hcFthdHRyaWJ1dGVOYW1lXTtcbiAgICB9XG4gICAgZm9yIChsZXQgYXR0cmlidXRlTmFtZSBpbiBnbHRmUHJpbWl0aXZlLmF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChnbHRmQXR0cmlidXRlTWFwW2F0dHJpYnV0ZU5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgYWNjZXNzb3JEZWYgPSBhY2Nlc3NvcnNbZ2x0ZlByaW1pdGl2ZS5hdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdXTtcbiAgICAgICAgYXR0cmlidXRlVHlwZU1hcFthdHRyaWJ1dGVOYW1lXSA9IEdMVEZVdGlsLmdldENvbXBvbmVudFR5cGUoYWNjZXNzb3JEZWYuY29tcG9uZW50VHlwZSkubmFtZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaW5kZXhBY2Nlc3NvciA9IGFjY2Vzc29yc1tnbHRmUHJpbWl0aXZlLmluZGljZXNdO1xuICAgIGNvbnN0IGluZGV4VHlwZSA9IEdMVEZVdGlsLmdldENvbXBvbmVudFR5cGUoaW5kZXhBY2Nlc3Nvci5jb21wb25lbnRUeXBlKS5uYW1lO1xuICAgIGNvbnN0IHRhc2tDb25maWcgPSB7XG4gICAgICBhdHRyaWJ1dGVJRHM6IGF0dHJpYnV0ZU1hcCxcbiAgICAgIGF0dHJpYnV0ZVR5cGVzOiBhdHRyaWJ1dGVUeXBlTWFwLFxuICAgICAgdXNlVW5pcXVlSURzOiB0cnVlLFxuICAgICAgaW5kZXhUeXBlXG4gICAgfTtcbiAgICBjb25zdCBidWZmZXIgPSBHTFRGVXRpbC5nZXRCdWZmZXJWaWV3RGF0YShidWZmZXJWaWV3c1tidWZmZXJWaWV3SW5kZXhdLCBidWZmZXJzKTtcbiAgICByZXR1cm4gS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24uX2RlY29kZXIuZGVjb2RlKGJ1ZmZlciwgdGFza0NvbmZpZykudGhlbigocGFyc2VkR2VvbWV0cnkpID0+IHBhcnNlZEdlb21ldHJ5KTtcbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIF9pbnN0YW5jZW9mKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKHJpZ2h0ICE9IG51bGwgJiYgdHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiByaWdodFtTeW1ib2wuaGFzSW5zdGFuY2VdKSB7XG4gICAgICAgIHJldHVybiAhIXJpZ2h0W1N5bWJvbC5oYXNJbnN0YW5jZV0obGVmdCk7XG4gICAgfSBlbHNlIHJldHVybiBsZWZ0IGluc3RhbmNlb2YgcmlnaHQ7XG59XG5leHBvcnQgeyBfaW5zdGFuY2VvZiBhcyBfIH07XG4iLCJpbXBvcnQgeyBEaXJlY3RMaWdodCwgRW50aXR5LCBQb2ludExpZ2h0LCBTcG90TGlnaHQgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyByZWdpc3RlckV4dGVuc2lvbiB9IGZyb20gXCIuLi9wYXJzZXIvUGFyc2VyXCI7XG5pbXBvcnQgeyBQYXJzZXJDb250ZXh0IH0gZnJvbSBcIi4uL3BhcnNlci9QYXJzZXJDb250ZXh0XCI7XG5pbXBvcnQgeyBFeHRlbnNpb25QYXJzZXIgfSBmcm9tIFwiLi9FeHRlbnNpb25QYXJzZXJcIjtcbmltcG9ydCB7IElLSFJMaWdodHNQdW5jdHVhbF9MaWdodCB9IGZyb20gXCIuL1NjaGVtYVwiO1xuXG5AcmVnaXN0ZXJFeHRlbnNpb24oXCJLSFJfbGlnaHRzX3B1bmN0dWFsXCIpXG5jbGFzcyBLSFJfbGlnaHRzX3B1bmN0dWFsIGV4dGVuZHMgRXh0ZW5zaW9uUGFyc2VyIHtcbiAgcGFyc2VFbmdpbmVSZXNvdXJjZShzY2hlbWE6IElLSFJMaWdodHNQdW5jdHVhbF9MaWdodCwgZW50aXR5OiBFbnRpdHksIGNvbnRleHQ6IFBhcnNlckNvbnRleHQpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNvbG9yLCBpbnRlbnNpdHkgPSAxLCB0eXBlLCByYW5nZSwgc3BvdCB9ID0gc2NoZW1hO1xuICAgIGNvbnN0IGdsVEZSZXNvdXJjZSA9IGNvbnRleHQuZ2xURlJlc291cmNlO1xuICAgIGxldCBsaWdodDogRGlyZWN0TGlnaHQgfCBQb2ludExpZ2h0IHwgU3BvdExpZ2h0O1xuXG4gICAgaWYgKHR5cGUgPT09IFwiZGlyZWN0aW9uYWxcIikge1xuICAgICAgbGlnaHQgPSBlbnRpdHkuYWRkQ29tcG9uZW50KERpcmVjdExpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwicG9pbnRcIikge1xuICAgICAgbGlnaHQgPSBlbnRpdHkuYWRkQ29tcG9uZW50KFBvaW50TGlnaHQpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gXCJzcG90XCIpIHtcbiAgICAgIGxpZ2h0ID0gZW50aXR5LmFkZENvbXBvbmVudChTcG90TGlnaHQpO1xuICAgIH1cblxuICAgIGlmIChjb2xvcikge1xuICAgICAgbGlnaHQuY29sb3Iuc2V0KGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIDEpO1xuICAgIH1cblxuICAgIGxpZ2h0LmludGVuc2l0eSA9IGludGVuc2l0eTtcblxuICAgIGlmIChyYW5nZSAmJiAhKGxpZ2h0IGluc3RhbmNlb2YgRGlyZWN0TGlnaHQpKSB7XG4gICAgICBsaWdodC5kaXN0YW5jZSA9IHJhbmdlO1xuICAgIH1cblxuICAgIGlmIChzcG90ICYmIGxpZ2h0IGluc3RhbmNlb2YgU3BvdExpZ2h0KSB7XG4gICAgICBjb25zdCB7IGlubmVyQ29uZUFuZ2xlID0gMCwgb3V0ZXJDb25lQW5nbGUgPSBNYXRoLlBJIC8gNCB9ID0gc3BvdDtcblxuICAgICAgbGlnaHQuYW5nbGUgPSBpbm5lckNvbmVBbmdsZTtcbiAgICAgIGxpZ2h0LnBlbnVtYnJhID0gb3V0ZXJDb25lQW5nbGUgLSBpbm5lckNvbmVBbmdsZTtcbiAgICB9XG5cbiAgICBpZiAoIWdsVEZSZXNvdXJjZS5saWdodHMpIGdsVEZSZXNvdXJjZS5saWdodHMgPSBbXTtcbiAgICBnbFRGUmVzb3VyY2UubGlnaHRzLnB1c2gobGlnaHQpO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBBc3NldFByb21pc2UsXG4gIExvZ2dlcixcbiAgTWF0ZXJpYWwsXG4gIFBCUk1hdGVyaWFsLFxuICBQQlJTcGVjdWxhck1hdGVyaWFsLFxuICBSZW5kZXJGYWNlLFxuICBUZXh0dXJlQ29vcmRpbmF0ZSxcbiAgVW5saXRNYXRlcmlhbFxufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBDb2xvciB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLW1hdGhcIjtcbmltcG9ydCB7IE1hdGVyaWFsQWxwaGFNb2RlIH0gZnJvbSBcIi4uL1NjaGVtYVwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4vUGFyc2VyXCI7XG5pbXBvcnQgeyBQYXJzZXJDb250ZXh0IH0gZnJvbSBcIi4vUGFyc2VyQ29udGV4dFwiO1xuXG5leHBvcnQgY2xhc3MgTWF0ZXJpYWxQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICAvKiogQGludGVybmFsICovXG4gIHN0YXRpYyBfcGFyc2VUZXh0dXJlVHJhbnNmb3JtKG1hdGVyaWFsOiBNYXRlcmlhbCwgZXh0ZW5zaW9uczogYW55ID0ge30sIGNvbnRleHQ6IFBhcnNlckNvbnRleHQpOiB2b2lkIHtcbiAgICBjb25zdCBzY2hlbWEgPSBleHRlbnNpb25zLktIUl90ZXh0dXJlX3RyYW5zZm9ybTtcbiAgICBpZiAoc2NoZW1hKSB7XG4gICAgICBQYXJzZXIucGFyc2VFbmdpbmVSZXNvdXJjZShcIktIUl90ZXh0dXJlX3RyYW5zZm9ybVwiLCBzY2hlbWEsIG1hdGVyaWFsLCBjb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICBwYXJzZShjb250ZXh0OiBQYXJzZXJDb250ZXh0KTogQXNzZXRQcm9taXNlPE1hdGVyaWFsW10+IHtcbiAgICBjb25zdCB7IGdsdGYsIGdsVEZSZXNvdXJjZSB9ID0gY29udGV4dDtcblxuICAgIGNvbnN0IHsgZW5naW5lLCB0ZXh0dXJlcyB9ID0gZ2xURlJlc291cmNlO1xuICAgIGlmICghZ2x0Zi5tYXRlcmlhbHMpIHJldHVybjtcblxuICAgIGNvbnN0IG1hdGVyaWFsc1Byb21pc2VJbmZvID0gY29udGV4dC5tYXRlcmlhbHNQcm9taXNlSW5mbztcbiAgICBjb25zdCBtYXRlcmlhbHM6IE1hdGVyaWFsW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2x0Zi5tYXRlcmlhbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZXh0ZW5zaW9ucyA9IHt9LFxuICAgICAgICBwYnJNZXRhbGxpY1JvdWdobmVzcyxcbiAgICAgICAgbm9ybWFsVGV4dHVyZSxcbiAgICAgICAgb2NjbHVzaW9uVGV4dHVyZSxcbiAgICAgICAgZW1pc3NpdmVUZXh0dXJlLFxuICAgICAgICBlbWlzc2l2ZUZhY3RvcixcbiAgICAgICAgYWxwaGFNb2RlLFxuICAgICAgICBhbHBoYUN1dG9mZixcbiAgICAgICAgZG91YmxlU2lkZWQsXG4gICAgICAgIG5hbWUgPSBcIlwiXG4gICAgICB9ID0gZ2x0Zi5tYXRlcmlhbHNbaV07XG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgS0hSX21hdGVyaWFsc191bmxpdCxcbiAgICAgICAgS0hSX21hdGVyaWFsc19wYnJTcGVjdWxhckdsb3NzaW5lc3MsXG4gICAgICAgIEtIUl9tYXRlcmlhbHNfY2xlYXJjb2F0LFxuICAgICAgICBPQVNJU19tYXRlcmlhbHNfcmVtYXBcbiAgICAgIH0gPSBleHRlbnNpb25zO1xuXG4gICAgICBsZXQgbWF0ZXJpYWw6IFVubGl0TWF0ZXJpYWwgfCBQQlJNYXRlcmlhbCB8IFBCUlNwZWN1bGFyTWF0ZXJpYWwgPSBudWxsO1xuXG4gICAgICBpZiAoS0hSX21hdGVyaWFsc191bmxpdCkge1xuICAgICAgICBtYXRlcmlhbCA9IDxVbmxpdE1hdGVyaWFsPlBhcnNlci5jcmVhdGVFbmdpbmVSZXNvdXJjZShcIktIUl9tYXRlcmlhbHNfdW5saXRcIiwgS0hSX21hdGVyaWFsc191bmxpdCwgY29udGV4dCk7XG4gICAgICB9IGVsc2UgaWYgKEtIUl9tYXRlcmlhbHNfcGJyU3BlY3VsYXJHbG9zc2luZXNzKSB7XG4gICAgICAgIG1hdGVyaWFsID0gPFBCUlNwZWN1bGFyTWF0ZXJpYWw+KFxuICAgICAgICAgIFBhcnNlci5jcmVhdGVFbmdpbmVSZXNvdXJjZShcbiAgICAgICAgICAgIFwiS0hSX21hdGVyaWFsc19wYnJTcGVjdWxhckdsb3NzaW5lc3NcIixcbiAgICAgICAgICAgIEtIUl9tYXRlcmlhbHNfcGJyU3BlY3VsYXJHbG9zc2luZXNzLFxuICAgICAgICAgICAgY29udGV4dFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hdGVyaWFsID0gbmV3IFBCUk1hdGVyaWFsKGVuZ2luZSk7XG4gICAgICB9XG5cbiAgICAgIG1hdGVyaWFsLm5hbWUgPSBuYW1lO1xuXG4gICAgICBpZiAoS0hSX21hdGVyaWFsc19jbGVhcmNvYXQpIHtcbiAgICAgICAgUGFyc2VyLnBhcnNlRW5naW5lUmVzb3VyY2UoXCJLSFJfbWF0ZXJpYWxzX2NsZWFyY29hdFwiLCBLSFJfbWF0ZXJpYWxzX2NsZWFyY29hdCwgbWF0ZXJpYWwsIGNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAocGJyTWV0YWxsaWNSb3VnaG5lc3MpIHtcbiAgICAgICAgY29uc3QgeyBiYXNlQ29sb3JGYWN0b3IsIGJhc2VDb2xvclRleHR1cmUsIG1ldGFsbGljRmFjdG9yLCByb3VnaG5lc3NGYWN0b3IsIG1ldGFsbGljUm91Z2huZXNzVGV4dHVyZSB9ID1cbiAgICAgICAgICBwYnJNZXRhbGxpY1JvdWdobmVzcztcblxuICAgICAgICBpZiAoYmFzZUNvbG9yRmFjdG9yKSB7XG4gICAgICAgICAgbWF0ZXJpYWwuYmFzZUNvbG9yID0gbmV3IENvbG9yKFxuICAgICAgICAgICAgQ29sb3IubGluZWFyVG9HYW1tYVNwYWNlKGJhc2VDb2xvckZhY3RvclswXSksXG4gICAgICAgICAgICBDb2xvci5saW5lYXJUb0dhbW1hU3BhY2UoYmFzZUNvbG9yRmFjdG9yWzFdKSxcbiAgICAgICAgICAgIENvbG9yLmxpbmVhclRvR2FtbWFTcGFjZShiYXNlQ29sb3JGYWN0b3JbMl0pLFxuICAgICAgICAgICAgYmFzZUNvbG9yRmFjdG9yWzNdXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmFzZUNvbG9yVGV4dHVyZSkge1xuICAgICAgICAgIG1hdGVyaWFsLmJhc2VUZXh0dXJlID0gdGV4dHVyZXNbYmFzZUNvbG9yVGV4dHVyZS5pbmRleF07XG4gICAgICAgICAgTWF0ZXJpYWxQYXJzZXIuX3BhcnNlVGV4dHVyZVRyYW5zZm9ybShtYXRlcmlhbCwgYmFzZUNvbG9yVGV4dHVyZS5leHRlbnNpb25zLCBjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghS0hSX21hdGVyaWFsc191bmxpdCAmJiAhS0hSX21hdGVyaWFsc19wYnJTcGVjdWxhckdsb3NzaW5lc3MpIHtcbiAgICAgICAgICBjb25zdCBtID0gbWF0ZXJpYWwgYXMgUEJSTWF0ZXJpYWw7XG4gICAgICAgICAgbS5tZXRhbGxpYyA9IG1ldGFsbGljRmFjdG9yID8/IDE7XG4gICAgICAgICAgbS5yb3VnaG5lc3MgPSByb3VnaG5lc3NGYWN0b3IgPz8gMTtcbiAgICAgICAgICBpZiAobWV0YWxsaWNSb3VnaG5lc3NUZXh0dXJlKSB7XG4gICAgICAgICAgICBtLnJvdWdobmVzc01ldGFsbGljVGV4dHVyZSA9IHRleHR1cmVzW21ldGFsbGljUm91Z2huZXNzVGV4dHVyZS5pbmRleF07XG4gICAgICAgICAgICBNYXRlcmlhbFBhcnNlci5fcGFyc2VUZXh0dXJlVHJhbnNmb3JtKG1hdGVyaWFsLCBtZXRhbGxpY1JvdWdobmVzc1RleHR1cmUuZXh0ZW5zaW9ucywgY29udGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghS0hSX21hdGVyaWFsc191bmxpdCkge1xuICAgICAgICBjb25zdCBtID0gbWF0ZXJpYWwgYXMgUEJSTWF0ZXJpYWwgfCBQQlJTcGVjdWxhck1hdGVyaWFsO1xuXG4gICAgICAgIGlmIChlbWlzc2l2ZVRleHR1cmUpIHtcbiAgICAgICAgICBtLmVtaXNzaXZlVGV4dHVyZSA9IHRleHR1cmVzW2VtaXNzaXZlVGV4dHVyZS5pbmRleF07XG4gICAgICAgICAgTWF0ZXJpYWxQYXJzZXIuX3BhcnNlVGV4dHVyZVRyYW5zZm9ybShtYXRlcmlhbCwgZW1pc3NpdmVUZXh0dXJlLmV4dGVuc2lvbnMsIGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVtaXNzaXZlRmFjdG9yKSB7XG4gICAgICAgICAgbS5lbWlzc2l2ZUNvbG9yID0gbmV3IENvbG9yKFxuICAgICAgICAgICAgQ29sb3IubGluZWFyVG9HYW1tYVNwYWNlKGVtaXNzaXZlRmFjdG9yWzBdKSxcbiAgICAgICAgICAgIENvbG9yLmxpbmVhclRvR2FtbWFTcGFjZShlbWlzc2l2ZUZhY3RvclsxXSksXG4gICAgICAgICAgICBDb2xvci5saW5lYXJUb0dhbW1hU3BhY2UoZW1pc3NpdmVGYWN0b3JbMl0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub3JtYWxUZXh0dXJlKSB7XG4gICAgICAgICAgY29uc3QgeyBpbmRleCwgc2NhbGUgfSA9IG5vcm1hbFRleHR1cmU7XG4gICAgICAgICAgbS5ub3JtYWxUZXh0dXJlID0gdGV4dHVyZXNbaW5kZXhdO1xuICAgICAgICAgIE1hdGVyaWFsUGFyc2VyLl9wYXJzZVRleHR1cmVUcmFuc2Zvcm0obWF0ZXJpYWwsIG5vcm1hbFRleHR1cmUuZXh0ZW5zaW9ucywgY29udGV4dCk7XG4gICAgICAgICAgaWYgKHNjYWxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG0ubm9ybWFsVGV4dHVyZUludGVuc2l0eSA9IHNjYWxlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvY2NsdXNpb25UZXh0dXJlKSB7XG4gICAgICAgICAgY29uc3QgeyBpbmRleCwgc3RyZW5ndGgsIHRleENvb3JkIH0gPSBvY2NsdXNpb25UZXh0dXJlO1xuICAgICAgICAgIG0ub2NjbHVzaW9uVGV4dHVyZSA9IHRleHR1cmVzW2luZGV4XTtcbiAgICAgICAgICBNYXRlcmlhbFBhcnNlci5fcGFyc2VUZXh0dXJlVHJhbnNmb3JtKG1hdGVyaWFsLCBvY2NsdXNpb25UZXh0dXJlLmV4dGVuc2lvbnMsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChzdHJlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtLm9jY2x1c2lvblRleHR1cmVJbnRlbnNpdHkgPSBzdHJlbmd0aDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRleENvb3JkID09PSBUZXh0dXJlQ29vcmRpbmF0ZS5VVjEpIHtcbiAgICAgICAgICAgIG0ub2NjbHVzaW9uVGV4dHVyZUNvb3JkID0gVGV4dHVyZUNvb3JkaW5hdGUuVVYxO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGV4Q29vcmQgPiBUZXh0dXJlQ29vcmRpbmF0ZS5VVjEpIHtcbiAgICAgICAgICAgIExvZ2dlci53YXJuKFwiT2NjbHVzaW9uIHRleHR1cmUgdXYgY29vcmRpbmF0ZSBtdXN0IGJlIFVWMCBvciBVVjEuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoT0FTSVNfbWF0ZXJpYWxzX3JlbWFwKSB7XG4gICAgICAgIGdsdGYuZXh0ZW5zaW9ucyA9IGdsdGYuZXh0ZW5zaW9ucyA/PyB7fTtcbiAgICAgICAgZ2x0Zi5leHRlbnNpb25zW1wiT0FTSVNfbWF0ZXJpYWxzX3JlbWFwXCJdID0gZ2x0Zi5leHRlbnNpb25zW1wiT0FTSVNfbWF0ZXJpYWxzX3JlbWFwXCJdID8/IHt9O1xuICAgICAgICBnbHRmLmV4dGVuc2lvbnNbXCJPQVNJU19tYXRlcmlhbHNfcmVtYXBcIl1baV0gPSBQYXJzZXIuY3JlYXRlRW5naW5lUmVzb3VyY2UoXG4gICAgICAgICAgXCJPQVNJU19tYXRlcmlhbHNfcmVtYXBcIixcbiAgICAgICAgICBPQVNJU19tYXRlcmlhbHNfcmVtYXAsXG4gICAgICAgICAgY29udGV4dFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZG91YmxlU2lkZWQpIHtcbiAgICAgICAgbWF0ZXJpYWwucmVuZGVyRmFjZSA9IFJlbmRlckZhY2UuRG91YmxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0ZXJpYWwucmVuZGVyRmFjZSA9IFJlbmRlckZhY2UuRnJvbnQ7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoYWxwaGFNb2RlKSB7XG4gICAgICAgIGNhc2UgTWF0ZXJpYWxBbHBoYU1vZGUuT1BBUVVFOlxuICAgICAgICAgIG1hdGVyaWFsLmlzVHJhbnNwYXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNYXRlcmlhbEFscGhhTW9kZS5CTEVORDpcbiAgICAgICAgICBtYXRlcmlhbC5pc1RyYW5zcGFyZW50ID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBNYXRlcmlhbEFscGhhTW9kZS5NQVNLOlxuICAgICAgICAgIG1hdGVyaWFsLmFscGhhQ3V0b2ZmID0gYWxwaGFDdXRvZmYgPz8gMC41O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBtYXRlcmlhbHNbaV0gPSBtYXRlcmlhbDtcbiAgICB9XG5cbiAgICBnbFRGUmVzb3VyY2UubWF0ZXJpYWxzID0gbWF0ZXJpYWxzO1xuICAgIG1hdGVyaWFsc1Byb21pc2VJbmZvLnJlc29sdmUobWF0ZXJpYWxzKTtcbiAgICByZXR1cm4gbWF0ZXJpYWxzUHJvbWlzZUluZm8ucHJvbWlzZTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUEJSTWF0ZXJpYWwgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBNYXRlcmlhbFBhcnNlciB9IGZyb20gXCIuLi9wYXJzZXIvTWF0ZXJpYWxQYXJzZXJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyRXh0ZW5zaW9uIH0gZnJvbSBcIi4uL3BhcnNlci9QYXJzZXJcIjtcbmltcG9ydCB7IFBhcnNlckNvbnRleHQgfSBmcm9tIFwiLi4vcGFyc2VyL1BhcnNlckNvbnRleHRcIjtcbmltcG9ydCB7IEV4dGVuc2lvblBhcnNlciB9IGZyb20gXCIuL0V4dGVuc2lvblBhcnNlclwiO1xuaW1wb3J0IHsgSUtIUk1hdGVyaWFsc0NsZWFyY29hdCB9IGZyb20gXCIuL1NjaGVtYVwiO1xuXG5AcmVnaXN0ZXJFeHRlbnNpb24oXCJLSFJfbWF0ZXJpYWxzX2NsZWFyY29hdFwiKVxuY2xhc3MgS0hSX21hdGVyaWFsc19jbGVhcmNvYXQgZXh0ZW5kcyBFeHRlbnNpb25QYXJzZXIge1xuICBwYXJzZUVuZ2luZVJlc291cmNlKHNjaGVtYTogSUtIUk1hdGVyaWFsc0NsZWFyY29hdCwgbWF0ZXJpYWw6IFBCUk1hdGVyaWFsLCBjb250ZXh0OiBQYXJzZXJDb250ZXh0KTogdm9pZCB7XG4gICAgY29uc3QgeyB0ZXh0dXJlcyB9ID0gY29udGV4dC5nbFRGUmVzb3VyY2U7XG4gICAgY29uc3Qge1xuICAgICAgY2xlYXJjb2F0RmFjdG9yID0gMCxcbiAgICAgIGNsZWFyY29hdFRleHR1cmUsXG4gICAgICBjbGVhcmNvYXRSb3VnaG5lc3NGYWN0b3IgPSAwLFxuICAgICAgY2xlYXJjb2F0Um91Z2huZXNzVGV4dHVyZSxcbiAgICAgIGNsZWFyY29hdE5vcm1hbFRleHR1cmVcbiAgICB9ID0gc2NoZW1hO1xuXG4gICAgbWF0ZXJpYWwuY2xlYXJDb2F0ID0gY2xlYXJjb2F0RmFjdG9yO1xuICAgIG1hdGVyaWFsLmNsZWFyQ29hdFJvdWdobmVzcyA9IGNsZWFyY29hdFJvdWdobmVzc0ZhY3RvcjtcblxuICAgIGlmIChjbGVhcmNvYXRUZXh0dXJlKSB7XG4gICAgICBtYXRlcmlhbC5jbGVhckNvYXRUZXh0dXJlID0gdGV4dHVyZXNbY2xlYXJjb2F0VGV4dHVyZS5pbmRleF07XG4gICAgICBNYXRlcmlhbFBhcnNlci5fcGFyc2VUZXh0dXJlVHJhbnNmb3JtKG1hdGVyaWFsLCBjbGVhcmNvYXRUZXh0dXJlLmV4dGVuc2lvbnMsIGNvbnRleHQpO1xuICAgIH1cbiAgICBpZiAoY2xlYXJjb2F0Um91Z2huZXNzVGV4dHVyZSkge1xuICAgICAgbWF0ZXJpYWwuY2xlYXJDb2F0Um91Z2huZXNzVGV4dHVyZSA9IHRleHR1cmVzW2NsZWFyY29hdFJvdWdobmVzc1RleHR1cmUuaW5kZXhdO1xuICAgICAgTWF0ZXJpYWxQYXJzZXIuX3BhcnNlVGV4dHVyZVRyYW5zZm9ybShtYXRlcmlhbCwgY2xlYXJjb2F0Um91Z2huZXNzVGV4dHVyZS5leHRlbnNpb25zLCBjb250ZXh0KTtcbiAgICB9XG4gICAgaWYgKGNsZWFyY29hdE5vcm1hbFRleHR1cmUpIHtcbiAgICAgIG1hdGVyaWFsLmNsZWFyQ29hdE5vcm1hbFRleHR1cmUgPSB0ZXh0dXJlc1tjbGVhcmNvYXROb3JtYWxUZXh0dXJlLmluZGV4XTtcbiAgICAgIE1hdGVyaWFsUGFyc2VyLl9wYXJzZVRleHR1cmVUcmFuc2Zvcm0obWF0ZXJpYWwsIGNsZWFyY29hdE5vcm1hbFRleHR1cmUuZXh0ZW5zaW9ucywgY29udGV4dCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBQQlJTcGVjdWxhck1hdGVyaWFsIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1tYXRoXCI7XG5pbXBvcnQgeyBNYXRlcmlhbFBhcnNlciB9IGZyb20gXCIuLi9wYXJzZXIvTWF0ZXJpYWxQYXJzZXJcIjtcbmltcG9ydCB7IHJlZ2lzdGVyRXh0ZW5zaW9uIH0gZnJvbSBcIi4uL3BhcnNlci9QYXJzZXJcIjtcbmltcG9ydCB7IFBhcnNlckNvbnRleHQgfSBmcm9tIFwiLi4vcGFyc2VyL1BhcnNlckNvbnRleHRcIjtcbmltcG9ydCB7IEV4dGVuc2lvblBhcnNlciB9IGZyb20gXCIuL0V4dGVuc2lvblBhcnNlclwiO1xuaW1wb3J0IHsgSUtIUk1hdGVyaWFsc1BiclNwZWN1bGFyR2xvc3NpbmVzcyB9IGZyb20gXCIuL1NjaGVtYVwiO1xuXG5AcmVnaXN0ZXJFeHRlbnNpb24oXCJLSFJfbWF0ZXJpYWxzX3BiclNwZWN1bGFyR2xvc3NpbmVzc1wiKVxuY2xhc3MgS0hSX21hdGVyaWFsc19wYnJTcGVjdWxhckdsb3NzaW5lc3MgZXh0ZW5kcyBFeHRlbnNpb25QYXJzZXIge1xuICBjcmVhdGVFbmdpbmVSZXNvdXJjZShzY2hlbWE6IElLSFJNYXRlcmlhbHNQYnJTcGVjdWxhckdsb3NzaW5lc3MsIGNvbnRleHQ6IFBhcnNlckNvbnRleHQpOiBQQlJTcGVjdWxhck1hdGVyaWFsIHtcbiAgICBjb25zdCB7IGVuZ2luZSwgdGV4dHVyZXMgfSA9IGNvbnRleHQuZ2xURlJlc291cmNlO1xuICAgIGNvbnN0IG1hdGVyaWFsID0gbmV3IFBCUlNwZWN1bGFyTWF0ZXJpYWwoZW5naW5lKTtcbiAgICBjb25zdCB7IGRpZmZ1c2VGYWN0b3IsIGRpZmZ1c2VUZXh0dXJlLCBzcGVjdWxhckZhY3RvciwgZ2xvc3NpbmVzc0ZhY3Rvciwgc3BlY3VsYXJHbG9zc2luZXNzVGV4dHVyZSB9ID0gc2NoZW1hO1xuXG4gICAgaWYgKGRpZmZ1c2VGYWN0b3IpIHtcbiAgICAgIG1hdGVyaWFsLmJhc2VDb2xvciA9IG5ldyBDb2xvcihcbiAgICAgICAgQ29sb3IubGluZWFyVG9HYW1tYVNwYWNlKGRpZmZ1c2VGYWN0b3JbMF0pLFxuICAgICAgICBDb2xvci5saW5lYXJUb0dhbW1hU3BhY2UoZGlmZnVzZUZhY3RvclsxXSksXG4gICAgICAgIENvbG9yLmxpbmVhclRvR2FtbWFTcGFjZShkaWZmdXNlRmFjdG9yWzJdKSxcbiAgICAgICAgZGlmZnVzZUZhY3RvclszXVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZGlmZnVzZVRleHR1cmUpIHtcbiAgICAgIG1hdGVyaWFsLmJhc2VUZXh0dXJlID0gdGV4dHVyZXNbZGlmZnVzZVRleHR1cmUuaW5kZXhdO1xuICAgICAgTWF0ZXJpYWxQYXJzZXIuX3BhcnNlVGV4dHVyZVRyYW5zZm9ybShtYXRlcmlhbCwgZGlmZnVzZVRleHR1cmUuZXh0ZW5zaW9ucywgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHNwZWN1bGFyRmFjdG9yKSB7XG4gICAgICBtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbmV3IENvbG9yKFxuICAgICAgICBDb2xvci5saW5lYXJUb0dhbW1hU3BhY2Uoc3BlY3VsYXJGYWN0b3JbMF0pLFxuICAgICAgICBDb2xvci5saW5lYXJUb0dhbW1hU3BhY2Uoc3BlY3VsYXJGYWN0b3JbMV0pLFxuICAgICAgICBDb2xvci5saW5lYXJUb0dhbW1hU3BhY2Uoc3BlY3VsYXJGYWN0b3JbMl0pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChnbG9zc2luZXNzRmFjdG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1hdGVyaWFsLmdsb3NzaW5lc3MgPSBnbG9zc2luZXNzRmFjdG9yO1xuICAgIH1cblxuICAgIGlmIChzcGVjdWxhckdsb3NzaW5lc3NUZXh0dXJlKSB7XG4gICAgICBtYXRlcmlhbC5zcGVjdWxhckdsb3NzaW5lc3NUZXh0dXJlID0gdGV4dHVyZXNbc3BlY3VsYXJHbG9zc2luZXNzVGV4dHVyZS5pbmRleF07XG4gICAgICBNYXRlcmlhbFBhcnNlci5fcGFyc2VUZXh0dXJlVHJhbnNmb3JtKG1hdGVyaWFsLCBzcGVjdWxhckdsb3NzaW5lc3NUZXh0dXJlLmV4dGVuc2lvbnMsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRlcmlhbDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgVW5saXRNYXRlcmlhbCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IHJlZ2lzdGVyRXh0ZW5zaW9uIH0gZnJvbSBcIi4uL3BhcnNlci9QYXJzZXJcIjtcbmltcG9ydCB7IFBhcnNlckNvbnRleHQgfSBmcm9tIFwiLi4vcGFyc2VyL1BhcnNlckNvbnRleHRcIjtcbmltcG9ydCB7IEV4dGVuc2lvblBhcnNlciB9IGZyb20gXCIuL0V4dGVuc2lvblBhcnNlclwiO1xuaW1wb3J0IHsgSUtIUk1hdGVyaWFsc1VubGl0IH0gZnJvbSBcIi4vU2NoZW1hXCI7XG5cbkByZWdpc3RlckV4dGVuc2lvbihcIktIUl9tYXRlcmlhbHNfdW5saXRcIilcbmNsYXNzIEtIUl9tYXRlcmlhbHNfdW5saXQgZXh0ZW5kcyBFeHRlbnNpb25QYXJzZXIge1xuICBjcmVhdGVFbmdpbmVSZXNvdXJjZShzY2hlbWE6IElLSFJNYXRlcmlhbHNVbmxpdCwgY29udGV4dDogUGFyc2VyQ29udGV4dCk6IFVubGl0TWF0ZXJpYWwge1xuICAgIGNvbnN0IHsgZW5naW5lIH0gPSBjb250ZXh0LmdsVEZSZXNvdXJjZTtcbiAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBVbmxpdE1hdGVyaWFsKGVuZ2luZSk7XG5cbiAgICByZXR1cm4gbWF0ZXJpYWw7XG4gIH1cbn1cbiIsImltcG9ydCB7IFJlbmRlcmVyIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJFeHRlbnNpb24gfSBmcm9tIFwiLi4vcGFyc2VyL1BhcnNlclwiO1xuaW1wb3J0IHsgUGFyc2VyQ29udGV4dCB9IGZyb20gXCIuLi9wYXJzZXIvUGFyc2VyQ29udGV4dFwiO1xuaW1wb3J0IHsgRXh0ZW5zaW9uUGFyc2VyIH0gZnJvbSBcIi4vRXh0ZW5zaW9uUGFyc2VyXCI7XG5pbXBvcnQgeyBJS0hSTWF0ZXJpYWxWYXJpYW50c19NYXBwaW5nIH0gZnJvbSBcIi4vU2NoZW1hXCI7XG5cbkByZWdpc3RlckV4dGVuc2lvbihcIktIUl9tYXRlcmlhbHNfdmFyaWFudHNcIilcbmNsYXNzIEtIUl9tYXRlcmlhbHNfdmFyaWFudHMgZXh0ZW5kcyBFeHRlbnNpb25QYXJzZXIge1xuICBwYXJzZUVuZ2luZVJlc291cmNlKHNjaGVtYTogSUtIUk1hdGVyaWFsVmFyaWFudHNfTWFwcGluZywgcmVuZGVyZXI6IFJlbmRlcmVyLCBjb250ZXh0OiBQYXJzZXJDb250ZXh0KTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgZ2x0Zjoge1xuICAgICAgICBleHRlbnNpb25zOiB7XG4gICAgICAgICAgS0hSX21hdGVyaWFsc192YXJpYW50czogeyB2YXJpYW50czogdmFyaWFudE5hbWVzIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGdsVEZSZXNvdXJjZVxuICAgIH0gPSBjb250ZXh0O1xuICAgIGNvbnN0IHsgbWFwcGluZ3MgfSA9IHNjaGVtYTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFwcGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHsgbWF0ZXJpYWwsIHZhcmlhbnRzIH0gPSBtYXBwaW5nc1tpXTtcbiAgICAgIGlmICghZ2xURlJlc291cmNlLnZhcmlhbnRzKSBnbFRGUmVzb3VyY2UudmFyaWFudHMgPSBbXTtcbiAgICAgIGdsVEZSZXNvdXJjZS52YXJpYW50cy5wdXNoKHtcbiAgICAgICAgcmVuZGVyZXIsXG4gICAgICAgIG1hdGVyaWFsOiBnbFRGUmVzb3VyY2UubWF0ZXJpYWxzW21hdGVyaWFsXSxcbiAgICAgICAgdmFyaWFudHM6IHZhcmlhbnRzLm1hcCgoaW5kZXgpID0+IHZhcmlhbnROYW1lc1tpbmRleF0ubmFtZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgcmVnaXN0ZXJFeHRlbnNpb24gfSBmcm9tIFwiLi4vcGFyc2VyL1BhcnNlclwiO1xuaW1wb3J0IHsgRXh0ZW5zaW9uUGFyc2VyIH0gZnJvbSBcIi4vRXh0ZW5zaW9uUGFyc2VyXCI7XG5cbkByZWdpc3RlckV4dGVuc2lvbihcIktIUl9tZXNoX3F1YW50aXphdGlvblwiKVxuY2xhc3MgS0hSX21lc2hfcXVhbnRpemF0aW9uIGV4dGVuZHMgRXh0ZW5zaW9uUGFyc2VyIHt9XG4iLCJpbXBvcnQgeyBMb2dnZXIsIFBCUkJhc2VNYXRlcmlhbCwgVW5saXRNYXRlcmlhbCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IHJlZ2lzdGVyRXh0ZW5zaW9uIH0gZnJvbSBcIi4uL3BhcnNlci9QYXJzZXJcIjtcbmltcG9ydCB7IFBhcnNlckNvbnRleHQgfSBmcm9tIFwiLi4vcGFyc2VyL1BhcnNlckNvbnRleHRcIjtcbmltcG9ydCB7IEV4dGVuc2lvblBhcnNlciB9IGZyb20gXCIuL0V4dGVuc2lvblBhcnNlclwiO1xuaW1wb3J0IHsgSUtIUlRleHR1cmVUcmFuc2Zvcm0gfSBmcm9tIFwiLi9TY2hlbWFcIjtcblxuQHJlZ2lzdGVyRXh0ZW5zaW9uKFwiS0hSX3RleHR1cmVfdHJhbnNmb3JtXCIpXG5jbGFzcyBLSFJfdGV4dHVyZV90cmFuc2Zvcm0gZXh0ZW5kcyBFeHRlbnNpb25QYXJzZXIge1xuICBwYXJzZUVuZ2luZVJlc291cmNlKFxuICAgIHNjaGVtYTogSUtIUlRleHR1cmVUcmFuc2Zvcm0sXG4gICAgbWF0ZXJpYWw6IFBCUkJhc2VNYXRlcmlhbCB8IFVubGl0TWF0ZXJpYWwsXG4gICAgY29udGV4dDogUGFyc2VyQ29udGV4dFxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IG9mZnNldCwgcm90YXRpb24sIHNjYWxlLCB0ZXhDb29yZCB9ID0gc2NoZW1hO1xuXG4gICAgaWYgKG9mZnNldCkge1xuICAgICAgbWF0ZXJpYWwudGlsaW5nT2Zmc2V0LnogPSBvZmZzZXRbMF07XG4gICAgICBtYXRlcmlhbC50aWxpbmdPZmZzZXQudyA9IG9mZnNldFsxXTtcbiAgICB9XG5cbiAgICBpZiAoc2NhbGUpIHtcbiAgICAgIG1hdGVyaWFsLnRpbGluZ09mZnNldC54ID0gc2NhbGVbMF07XG4gICAgICBtYXRlcmlhbC50aWxpbmdPZmZzZXQueSA9IHNjYWxlWzFdO1xuICAgIH1cblxuICAgIGlmIChyb3RhdGlvbikge1xuICAgICAgTG9nZ2VyLndhcm4oXCJyb3RhdGlvbiBpbiBLSFJfdGV4dHVyZV90cmFuc2Zvcm0gaXMgbm90IHN1cHBvcnRlZCBub3dcIik7XG4gICAgfVxuXG4gICAgaWYgKHRleENvb3JkKSB7XG4gICAgICBMb2dnZXIud2FybihcInRleENvb3JkIGluIEtIUl90ZXh0dXJlX3RyYW5zZm9ybSBpcyBub3Qgc3VwcG9ydGVkIG5vd1wiKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IE1hdGVyaWFsIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJFeHRlbnNpb24gfSBmcm9tIFwiLi4vcGFyc2VyL1BhcnNlclwiO1xuaW1wb3J0IHsgUGFyc2VyQ29udGV4dCB9IGZyb20gXCIuLi9wYXJzZXIvUGFyc2VyQ29udGV4dFwiO1xuaW1wb3J0IHsgRXh0ZW5zaW9uUGFyc2VyIH0gZnJvbSBcIi4vRXh0ZW5zaW9uUGFyc2VyXCI7XG5pbXBvcnQgeyBJR2FsYWNlYW5NYXRlcmlhbFJlbWFwIH0gZnJvbSBcIi4vU2NoZW1hXCI7XG5cbkByZWdpc3RlckV4dGVuc2lvbihcIk9BU0lTX21hdGVyaWFsc19yZW1hcFwiKVxuY2xhc3MgR2FsYWNlYW5NYXRlcmlhbHNSZW1hcCBleHRlbmRzIEV4dGVuc2lvblBhcnNlciB7XG4gIGNyZWF0ZUVuZ2luZVJlc291cmNlKHNjaGVtYTogSUdhbGFjZWFuTWF0ZXJpYWxSZW1hcCwgY29udGV4dDogUGFyc2VyQ29udGV4dCk6IFByb21pc2U8TWF0ZXJpYWw+IHtcbiAgICBjb25zdCB7IGVuZ2luZSB9ID0gY29udGV4dC5nbFRGUmVzb3VyY2U7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBlbmdpbmUucmVzb3VyY2VNYW5hZ2VyLmdldFJlc291cmNlQnlSZWY8TWF0ZXJpYWw+KHNjaGVtYSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IF91bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheSB9IGZyb20gXCIuL191bnN1cHBvcnRlZF9pdGVyYWJsZV90b19hcnJheS5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gX2NyZWF0ZV9mb3Jfb2ZfaXRlcmF0b3JfaGVscGVyX2xvb3NlKG8sIGFsbG93QXJyYXlMaWtlKSB7XG4gICAgdmFyIGl0ID0gdHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0gfHwgb1tcIkBAaXRlcmF0b3JcIl07XG5cbiAgICBpZiAoaXQpIHJldHVybiAoaXQgPSBpdC5jYWxsKG8pKS5uZXh0LmJpbmQoaXQpO1xuICAgIC8vIEZhbGxiYWNrIGZvciBlbmdpbmVzIHdpdGhvdXQgc3ltYm9sIHN1cHBvcnRcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRfaXRlcmFibGVfdG9fYXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgIGlmIChpdCkgbyA9IGl0O1xuXG4gICAgICAgIHZhciBpID0gMDtcblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9O1xuXG4gICAgICAgICAgICByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG9baSsrXSB9O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbmV4cG9ydCB7IF9jcmVhdGVfZm9yX29mX2l0ZXJhdG9yX2hlbHBlcl9sb29zZSBhcyBfIH07XG4iLCJpbXBvcnQge1xuICBBbmltYXRpb25DbGlwLFxuICBBbmltYXRpb25GbG9hdEFycmF5Q3VydmUsXG4gIEFuaW1hdGlvblF1YXRlcm5pb25DdXJ2ZSxcbiAgQW5pbWF0aW9uVmVjdG9yM0N1cnZlLFxuICBBc3NldFByb21pc2UsXG4gIENvbXBvbmVudCxcbiAgRW50aXR5LFxuICBJbnRlcnBvbGF0aW9uVHlwZSxcbiAgS2V5ZnJhbWUsXG4gIFNraW5uZWRNZXNoUmVuZGVyZXIsXG4gIFRyYW5zZm9ybSxcbiAgVHlwZWRBcnJheVxufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBRdWF0ZXJuaW9uLCBWZWN0b3IzLCBWZWN0b3I0IH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtbWF0aFwiO1xuaW1wb3J0IHsgR0xURlV0aWwgfSBmcm9tIFwiLi4vR0xURlV0aWxcIjtcbmltcG9ydCB7IEFjY2Vzc29yVHlwZSwgQW5pbWF0aW9uQ2hhbm5lbFRhcmdldFBhdGgsIEFuaW1hdGlvblNhbXBsZXJJbnRlcnBvbGF0aW9uLCBJQW5pbWF0aW9uQ2hhbm5lbCB9IGZyb20gXCIuLi9TY2hlbWFcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL1BhcnNlclwiO1xuaW1wb3J0IHsgUGFyc2VyQ29udGV4dCB9IGZyb20gXCIuL1BhcnNlckNvbnRleHRcIjtcblxuZXhwb3J0IGNsYXNzIEFuaW1hdGlvblBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHBhcnNlKGNvbnRleHQ6IFBhcnNlckNvbnRleHQpOiBBc3NldFByb21pc2U8QW5pbWF0aW9uQ2xpcFtdPiB7XG4gICAgY29uc3QgeyBnbHRmLCBidWZmZXJzLCBnbFRGUmVzb3VyY2UgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgeyBlbnRpdGllcyB9ID0gZ2xURlJlc291cmNlO1xuICAgIGNvbnN0IHsgYW5pbWF0aW9ucywgYWNjZXNzb3JzIH0gPSBnbHRmO1xuICAgIGlmICghYW5pbWF0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhbmltYXRpb25DbGlwc1Byb21pc2VJbmZvID0gY29udGV4dC5hbmltYXRpb25DbGlwc1Byb21pc2VJbmZvO1xuXG4gICAgY29uc3QgYW5pbWF0aW9uQ2xpcENvdW50ID0gYW5pbWF0aW9ucy5sZW5ndGg7XG4gICAgY29uc3QgYW5pbWF0aW9uQ2xpcHMgPSBuZXcgQXJyYXk8QW5pbWF0aW9uQ2xpcD4oYW5pbWF0aW9uQ2xpcENvdW50KTtcbiAgICBjb25zdCBhbmltYXRpb25zSW5kaWNlcyA9IG5ldyBBcnJheTx7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBpbmRleDogbnVtYmVyO1xuICAgIH0+KGFuaW1hdGlvbkNsaXBDb3VudCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFuaW1hdGlvbkNsaXBDb3VudDsgaSsrKSB7XG4gICAgICBjb25zdCBnbHRmQW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTtcbiAgICAgIGNvbnN0IHsgY2hhbm5lbHMsIHNhbXBsZXJzLCBuYW1lID0gYEFuaW1hdGlvbkNsaXAke2l9YCB9ID0gZ2x0ZkFuaW1hdGlvbjtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkNsaXAgPSBuZXcgQW5pbWF0aW9uQ2xpcChuYW1lKTtcbiAgICAgIGNvbnN0IHNhbXBsZURhdGFDb2xsZWN0aW9uID0gbmV3IEFycmF5PFNhbXBsZURhdGE+KCk7XG5cbiAgICAgIGxldCBkdXJhdGlvbiA9IC0xO1xuXG4gICAgICAvLyBwYXJzZSBzYW1wbGVyc1xuICAgICAgZm9yIChsZXQgaiA9IDAsIG0gPSBzYW1wbGVycy5sZW5ndGg7IGogPCBtOyBqKyspIHtcbiAgICAgICAgY29uc3QgZ2x0ZlNhbXBsZXIgPSBzYW1wbGVyc1tqXTtcbiAgICAgICAgY29uc3QgaW5wdXRBY2Nlc3NvciA9IGFjY2Vzc29yc1tnbHRmU2FtcGxlci5pbnB1dF07XG4gICAgICAgIGNvbnN0IG91dHB1dEFjY2Vzc29yID0gYWNjZXNzb3JzW2dsdGZTYW1wbGVyLm91dHB1dF07XG5cbiAgICAgICAgY29uc3QgaW5wdXQgPSBHTFRGVXRpbC5nZXRBY2Nlc3NvckJ1ZmZlcihjb250ZXh0LCBnbHRmLCBpbnB1dEFjY2Vzc29yKS5kYXRhO1xuICAgICAgICBsZXQgb3V0cHV0ID0gR0xURlV0aWwuZ2V0QWNjZXNzb3JCdWZmZXIoY29udGV4dCwgZ2x0Ziwgb3V0cHV0QWNjZXNzb3IpLmRhdGE7XG5cbiAgICAgICAgaWYgKG91dHB1dEFjY2Vzc29yLm5vcm1hbGl6ZWQpIHtcbiAgICAgICAgICBjb25zdCBzY2FsZSA9IEdMVEZVdGlsLmdldE5vcm1hbGl6ZWRDb21wb25lbnRTY2FsZShvdXRwdXRBY2Nlc3Nvci5jb21wb25lbnRUeXBlKTtcbiAgICAgICAgICBjb25zdCBzY2FsZWQgPSBuZXcgRmxvYXQzMkFycmF5KG91dHB1dC5sZW5ndGgpO1xuICAgICAgICAgIGZvciAobGV0IGsgPSAwLCB2ID0gb3V0cHV0Lmxlbmd0aDsgayA8IHY7IGsrKykge1xuICAgICAgICAgICAgc2NhbGVkW2tdID0gb3V0cHV0W2tdICogc2NhbGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG91dHB1dCA9IHNjYWxlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG91dHB1dFN0cmlkZSA9IG91dHB1dC5sZW5ndGggLyBpbnB1dC5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgaW50ZXJwb2xhdGlvbiA9IGdsdGZTYW1wbGVyLmludGVycG9sYXRpb24gPz8gQW5pbWF0aW9uU2FtcGxlckludGVycG9sYXRpb24uTGluZWFyO1xuICAgICAgICBsZXQgc2FtcGxlckludGVycG9sYXRpb246IEludGVycG9sYXRpb25UeXBlO1xuICAgICAgICBzd2l0Y2ggKGludGVycG9sYXRpb24pIHtcbiAgICAgICAgICBjYXNlIEFuaW1hdGlvblNhbXBsZXJJbnRlcnBvbGF0aW9uLkN1YmljU3BpbmU6XG4gICAgICAgICAgICBzYW1wbGVySW50ZXJwb2xhdGlvbiA9IEludGVycG9sYXRpb25UeXBlLkN1YmljU3BpbmU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEFuaW1hdGlvblNhbXBsZXJJbnRlcnBvbGF0aW9uLlN0ZXA6XG4gICAgICAgICAgICBzYW1wbGVySW50ZXJwb2xhdGlvbiA9IEludGVycG9sYXRpb25UeXBlLlN0ZXA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEFuaW1hdGlvblNhbXBsZXJJbnRlcnBvbGF0aW9uLkxpbmVhcjpcbiAgICAgICAgICAgIHNhbXBsZXJJbnRlcnBvbGF0aW9uID0gSW50ZXJwb2xhdGlvblR5cGUuTGluZWFyO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXhUaW1lID0gaW5wdXRbaW5wdXQubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChtYXhUaW1lID4gZHVyYXRpb24pIHtcbiAgICAgICAgICBkdXJhdGlvbiA9IG1heFRpbWU7XG4gICAgICAgIH1cblxuICAgICAgICBzYW1wbGVEYXRhQ29sbGVjdGlvbi5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBvdXRwdXRBY2Nlc3Nvci50eXBlLFxuICAgICAgICAgIGludGVycG9sYXRpb246IHNhbXBsZXJJbnRlcnBvbGF0aW9uLFxuICAgICAgICAgIGlucHV0LFxuICAgICAgICAgIG91dHB1dCxcbiAgICAgICAgICBvdXRwdXRTaXplOiBvdXRwdXRTdHJpZGVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGogPSAwLCBtID0gY2hhbm5lbHMubGVuZ3RoOyBqIDwgbTsgaisrKSB7XG4gICAgICAgIGNvbnN0IGdsdGZDaGFubmVsID0gY2hhbm5lbHNbal07XG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0IH0gPSBnbHRmQ2hhbm5lbDtcblxuICAgICAgICBjb25zdCBjaGFubmVsVGFyZ2V0RW50aXR5ID0gZW50aXRpZXNbdGFyZ2V0Lm5vZGVdO1xuICAgICAgICBsZXQgcmVsYXRpdmVQYXRoID0gXCJcIjtcbiAgICAgICAgbGV0IGVudGl0eSA9IGNoYW5uZWxUYXJnZXRFbnRpdHk7XG4gICAgICAgIHdoaWxlIChlbnRpdHkucGFyZW50KSB7XG4gICAgICAgICAgcmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoID09PSBcIlwiID8gYCR7ZW50aXR5Lm5hbWV9YCA6IGAke2VudGl0eS5uYW1lfS8ke3JlbGF0aXZlUGF0aH1gO1xuICAgICAgICAgIGVudGl0eSA9IGVudGl0eS5wYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgQ29tcG9uZW50VHlwZTogbmV3IChlbnRpdHk6IEVudGl0eSkgPT4gQ29tcG9uZW50O1xuICAgICAgICBsZXQgcHJvcGVydHlOYW1lOiBzdHJpbmc7XG4gICAgICAgIHN3aXRjaCAodGFyZ2V0LnBhdGgpIHtcbiAgICAgICAgICBjYXNlIEFuaW1hdGlvbkNoYW5uZWxUYXJnZXRQYXRoLlRSQU5TTEFUSU9OOlxuICAgICAgICAgICAgQ29tcG9uZW50VHlwZSA9IFRyYW5zZm9ybTtcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZSA9IFwicG9zaXRpb25cIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgQW5pbWF0aW9uQ2hhbm5lbFRhcmdldFBhdGguUk9UQVRJT046XG4gICAgICAgICAgICBDb21wb25lbnRUeXBlID0gVHJhbnNmb3JtO1xuICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gXCJyb3RhdGlvblF1YXRlcm5pb25cIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgQW5pbWF0aW9uQ2hhbm5lbFRhcmdldFBhdGguU0NBTEU6XG4gICAgICAgICAgICBDb21wb25lbnRUeXBlID0gVHJhbnNmb3JtO1xuICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gXCJzY2FsZVwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBBbmltYXRpb25DaGFubmVsVGFyZ2V0UGF0aC5XRUlHSFRTOlxuICAgICAgICAgICAgQ29tcG9uZW50VHlwZSA9IFNraW5uZWRNZXNoUmVuZGVyZXI7XG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBcImJsZW5kU2hhcGVXZWlnaHRzXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VydmUgPSB0aGlzLl9hZGRDdXJ2ZSh0YXJnZXQucGF0aCwgZ2x0ZkNoYW5uZWwsIHNhbXBsZURhdGFDb2xsZWN0aW9uKTtcbiAgICAgICAgYW5pbWF0aW9uQ2xpcC5hZGRDdXJ2ZUJpbmRpbmcocmVsYXRpdmVQYXRoLCBDb21wb25lbnRUeXBlLCBwcm9wZXJ0eU5hbWUsIGN1cnZlKTtcbiAgICAgIH1cblxuICAgICAgYW5pbWF0aW9uQ2xpcHNbaV0gPSBhbmltYXRpb25DbGlwO1xuICAgICAgYW5pbWF0aW9uc0luZGljZXNbaV0gPSB7XG4gICAgICAgIG5hbWUsXG4gICAgICAgIGluZGV4OiBpXG4gICAgICB9O1xuICAgIH1cblxuICAgIGdsVEZSZXNvdXJjZS5hbmltYXRpb25zID0gYW5pbWF0aW9uQ2xpcHM7XG4gICAgLy8gQHRzLWlnbm9yZSBmb3IgZWRpdG9yXG4gICAgZ2xURlJlc291cmNlLl9hbmltYXRpb25zSW5kaWNlcyA9IGFuaW1hdGlvbnNJbmRpY2VzO1xuXG4gICAgYW5pbWF0aW9uQ2xpcHNQcm9taXNlSW5mby5yZXNvbHZlKGFuaW1hdGlvbkNsaXBzKTtcbiAgICByZXR1cm4gYW5pbWF0aW9uQ2xpcHNQcm9taXNlSW5mby5wcm9taXNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkQ3VydmUoXG4gICAgYW5pbWF0aW9uY2hhbm5lbFRhcmdldFBhdGg6IEFuaW1hdGlvbkNoYW5uZWxUYXJnZXRQYXRoLFxuICAgIGdsdGZDaGFubmVsOiBJQW5pbWF0aW9uQ2hhbm5lbCxcbiAgICBzYW1wbGVEYXRhQ29sbGVjdGlvbjogU2FtcGxlRGF0YVtdXG4gICkge1xuICAgIGNvbnN0IHNhbXBsZURhdGEgPSBzYW1wbGVEYXRhQ29sbGVjdGlvbltnbHRmQ2hhbm5lbC5zYW1wbGVyXTtcbiAgICBjb25zdCB7IGlucHV0LCBvdXRwdXQsIG91dHB1dFNpemUgfSA9IHNhbXBsZURhdGE7XG5cbiAgICBzd2l0Y2ggKGFuaW1hdGlvbmNoYW5uZWxUYXJnZXRQYXRoKSB7XG4gICAgICBjYXNlIEFuaW1hdGlvbkNoYW5uZWxUYXJnZXRQYXRoLlRSQU5TTEFUSU9OOlxuICAgICAgY2FzZSBBbmltYXRpb25DaGFubmVsVGFyZ2V0UGF0aC5TQ0FMRToge1xuICAgICAgICBjb25zdCBjdXJ2ZSA9IG5ldyBBbmltYXRpb25WZWN0b3IzQ3VydmUoKTtcbiAgICAgICAgY29uc3QgaW50ZXJwb2xhdGlvbiA9IChjdXJ2ZS5pbnRlcnBvbGF0aW9uID0gc2FtcGxlRGF0YS5pbnRlcnBvbGF0aW9uKTtcblxuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBpbnB1dC5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBrZXlmcmFtZSA9IG5ldyBLZXlmcmFtZTxWZWN0b3IzPigpO1xuICAgICAgICAgIGtleWZyYW1lLnRpbWUgPSBpbnB1dFtpXTtcbiAgICAgICAgICBpZiAoaW50ZXJwb2xhdGlvbiA9PT0gSW50ZXJwb2xhdGlvblR5cGUuQ3ViaWNTcGluZSkge1xuICAgICAgICAgICAga2V5ZnJhbWUuaW5UYW5nZW50ID0gbmV3IFZlY3RvcjMob3V0cHV0W29mZnNldCsrXSwgb3V0cHV0W29mZnNldCsrXSwgb3V0cHV0W29mZnNldCsrXSk7XG4gICAgICAgICAgICBrZXlmcmFtZS52YWx1ZSA9IG5ldyBWZWN0b3IzKG91dHB1dFtvZmZzZXQrK10sIG91dHB1dFtvZmZzZXQrK10sIG91dHB1dFtvZmZzZXQrK10pO1xuICAgICAgICAgICAga2V5ZnJhbWUub3V0VGFuZ2VudCA9IG5ldyBWZWN0b3IzKG91dHB1dFtvZmZzZXQrK10sIG91dHB1dFtvZmZzZXQrK10sIG91dHB1dFtvZmZzZXQrK10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBrZXlmcmFtZS52YWx1ZSA9IG5ldyBWZWN0b3IzKG91dHB1dFtvZmZzZXQrK10sIG91dHB1dFtvZmZzZXQrK10sIG91dHB1dFtvZmZzZXQrK10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJ2ZS5hZGRLZXkoa2V5ZnJhbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJ2ZTtcbiAgICAgIH1cbiAgICAgIGNhc2UgQW5pbWF0aW9uQ2hhbm5lbFRhcmdldFBhdGguUk9UQVRJT046IHtcbiAgICAgICAgY29uc3QgY3VydmUgPSBuZXcgQW5pbWF0aW9uUXVhdGVybmlvbkN1cnZlKCk7XG4gICAgICAgIGNvbnN0IGludGVycG9sYXRpb24gPSAoY3VydmUuaW50ZXJwb2xhdGlvbiA9IHNhbXBsZURhdGEuaW50ZXJwb2xhdGlvbik7XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gaW5wdXQubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgY29uc3Qga2V5ZnJhbWUgPSBuZXcgS2V5ZnJhbWU8UXVhdGVybmlvbj4oKTtcbiAgICAgICAgICBrZXlmcmFtZS50aW1lID0gaW5wdXRbaV07XG4gICAgICAgICAgaWYgKGludGVycG9sYXRpb24gPT09IEludGVycG9sYXRpb25UeXBlLkN1YmljU3BpbmUpIHtcbiAgICAgICAgICAgIGtleWZyYW1lLmluVGFuZ2VudCA9IG5ldyBWZWN0b3I0KG91dHB1dFtvZmZzZXQrK10sIG91dHB1dFtvZmZzZXQrK10sIG91dHB1dFtvZmZzZXQrK10sIG91dHB1dFtvZmZzZXQrK10pO1xuICAgICAgICAgICAga2V5ZnJhbWUudmFsdWUgPSBuZXcgUXVhdGVybmlvbihvdXRwdXRbb2Zmc2V0KytdLCBvdXRwdXRbb2Zmc2V0KytdLCBvdXRwdXRbb2Zmc2V0KytdLCBvdXRwdXRbb2Zmc2V0KytdKTtcbiAgICAgICAgICAgIGtleWZyYW1lLm91dFRhbmdlbnQgPSBuZXcgVmVjdG9yNChvdXRwdXRbb2Zmc2V0KytdLCBvdXRwdXRbb2Zmc2V0KytdLCBvdXRwdXRbb2Zmc2V0KytdLCBvdXRwdXRbb2Zmc2V0KytdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2V5ZnJhbWUudmFsdWUgPSBuZXcgUXVhdGVybmlvbihvdXRwdXRbb2Zmc2V0KytdLCBvdXRwdXRbb2Zmc2V0KytdLCBvdXRwdXRbb2Zmc2V0KytdLCBvdXRwdXRbb2Zmc2V0KytdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VydmUuYWRkS2V5KGtleWZyYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VydmU7XG4gICAgICB9XG4gICAgICBjYXNlIEFuaW1hdGlvbkNoYW5uZWxUYXJnZXRQYXRoLldFSUdIVFM6IHtcbiAgICAgICAgY29uc3QgY3VydmUgPSBuZXcgQW5pbWF0aW9uRmxvYXRBcnJheUN1cnZlKCk7XG4gICAgICAgIGN1cnZlLmludGVycG9sYXRpb24gPSBzYW1wbGVEYXRhLmludGVycG9sYXRpb247XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gaW5wdXQubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgY29uc3Qga2V5ZnJhbWUgPSBuZXcgS2V5ZnJhbWU8RmxvYXQzMkFycmF5PigpO1xuICAgICAgICAgIGtleWZyYW1lLnRpbWUgPSBpbnB1dFtpXTtcbiAgICAgICAgICBpZiAoY3VydmUuaW50ZXJwb2xhdGlvbiA9PT0gSW50ZXJwb2xhdGlvblR5cGUuQ3ViaWNTcGluZSkge1xuICAgICAgICAgICAga2V5ZnJhbWUuaW5UYW5nZW50ID0gQXJyYXkuZnJvbShvdXRwdXQuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBvdXRwdXRTaXplKSk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gb3V0cHV0U2l6ZTtcbiAgICAgICAgICAgIGtleWZyYW1lLnZhbHVlID0gb3V0cHV0LnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgb3V0cHV0U2l6ZSkgYXMgRmxvYXQzMkFycmF5O1xuICAgICAgICAgICAgb2Zmc2V0ICs9IG91dHB1dFNpemU7XG4gICAgICAgICAgICBrZXlmcmFtZS5vdXRUYW5nZW50ID0gQXJyYXkuZnJvbShvdXRwdXQuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBvdXRwdXRTaXplKSk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gb3V0cHV0U2l6ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2V5ZnJhbWUudmFsdWUgPSBvdXRwdXQuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBvdXRwdXRTaXplKSBhcyBGbG9hdDMyQXJyYXk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gb3V0cHV0U2l6ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VydmUuYWRkS2V5KGtleWZyYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VydmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5pbnRlcmZhY2UgU2FtcGxlRGF0YSB7XG4gIHR5cGU6IEFjY2Vzc29yVHlwZTtcbiAgaW5wdXQ6IFR5cGVkQXJyYXk7XG4gIG91dHB1dDogVHlwZWRBcnJheTtcbiAgaW50ZXJwb2xhdGlvbjogSW50ZXJwb2xhdGlvblR5cGU7XG4gIG91dHB1dFNpemU6IG51bWJlcjtcbn1cbiIsImltcG9ydCB7IEFzc2V0UHJvbWlzZSwgcmVxdWVzdCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IEdMVEZVdGlsIH0gZnJvbSBcIi4uL0dMVEZVdGlsXCI7XG5pbXBvcnQgeyBJQnVmZmVyLCBJR0xURiB9IGZyb20gXCIuLi9TY2hlbWFcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL1BhcnNlclwiO1xuaW1wb3J0IHsgUGFyc2VyQ29udGV4dCB9IGZyb20gXCIuL1BhcnNlckNvbnRleHRcIjtcblxuZXhwb3J0IGNsYXNzIEJ1ZmZlclBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHBhcnNlKGNvbnRleHQ6IFBhcnNlckNvbnRleHQpOiBBc3NldFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGdsVEZSZXNvdXJjZSA9IGNvbnRleHQuZ2xURlJlc291cmNlO1xuICAgIGNvbnN0IHsgdXJsIH0gPSBnbFRGUmVzb3VyY2U7XG5cbiAgICBpZiAodGhpcy5faXNHTEIodXJsKSkge1xuICAgICAgcmV0dXJuIHJlcXVlc3Q8QXJyYXlCdWZmZXI+KHVybCwgeyB0eXBlOiBcImFycmF5YnVmZmVyXCIgfSlcbiAgICAgICAgLnRoZW4oR0xURlV0aWwucGFyc2VHTEIpXG4gICAgICAgIC50aGVuKCh7IGdsdGYsIGJ1ZmZlcnMgfSkgPT4ge1xuICAgICAgICAgIGNvbnRleHQuZ2x0ZiA9IGdsdGY7XG4gICAgICAgICAgY29udGV4dC5idWZmZXJzID0gYnVmZmVycztcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXF1ZXN0KHVybCwge1xuICAgICAgICB0eXBlOiBcImpzb25cIlxuICAgICAgfSkudGhlbigoZ2x0ZjogSUdMVEYpID0+IHtcbiAgICAgICAgY29udGV4dC5nbHRmID0gZ2x0ZjtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAgIGdsdGYuYnVmZmVycy5tYXAoKGJ1ZmZlcjogSUJ1ZmZlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Q8QXJyYXlCdWZmZXI+KEdMVEZVdGlsLnBhcnNlUmVsYXRpdmVVcmwodXJsLCBidWZmZXIudXJpKSwgeyB0eXBlOiBcImFycmF5YnVmZmVyXCIgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKS50aGVuKChidWZmZXJzOiBBcnJheUJ1ZmZlcltdKSA9PiB7XG4gICAgICAgICAgY29udGV4dC5idWZmZXJzID0gYnVmZmVycztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pc0dMQih1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGluZGV4ID0gdXJsLmxhc3RJbmRleE9mKFwiLlwiKTtcbiAgICByZXR1cm4gdXJsLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgNCkgPT09IFwiZ2xiXCI7XG4gIH1cbn1cbiIsImltcG9ydCB7IEVudGl0eSB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IEdMVEZSZXNvdXJjZSB9IGZyb20gXCIuLi9HTFRGUmVzb3VyY2VcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL1BhcnNlclwiO1xuaW1wb3J0IHsgUGFyc2VyQ29udGV4dCB9IGZyb20gXCIuL1BhcnNlckNvbnRleHRcIjtcblxuZXhwb3J0IGNsYXNzIEVudGl0eVBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgc3RhdGljIF9kZWZhdWx0TmFtZTogU3RyaW5nID0gXCJfR0xURl9FTlRJVFlfXCI7XG5cbiAgcGFyc2UoY29udGV4dDogUGFyc2VyQ29udGV4dCk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIGdsVEZSZXNvdXJjZSxcbiAgICAgIGdsdGY6IHsgbm9kZXMgfVxuICAgIH0gPSBjb250ZXh0O1xuXG4gICAgY29uc3QgeyBlbmdpbmUgfSA9IGdsVEZSZXNvdXJjZTtcblxuICAgIGlmICghbm9kZXMpIHJldHVybjtcblxuICAgIGNvbnN0IGVudGl0aWVzOiBFbnRpdHlbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZ2x0Zk5vZGUgPSBub2Rlc1tpXTtcbiAgICAgIGNvbnN0IHsgbWF0cml4LCB0cmFuc2xhdGlvbiwgcm90YXRpb24sIHNjYWxlIH0gPSBnbHRmTm9kZTtcbiAgICAgIGNvbnN0IGVudGl0eSA9IG5ldyBFbnRpdHkoZW5naW5lLCBnbHRmTm9kZS5uYW1lIHx8IGAke0VudGl0eVBhcnNlci5fZGVmYXVsdE5hbWV9JHtpfWApO1xuXG4gICAgICBjb25zdCB7IHRyYW5zZm9ybSB9ID0gZW50aXR5O1xuICAgICAgaWYgKG1hdHJpeCkge1xuICAgICAgICBjb25zdCBsb2NhbE1hdHJpeCA9IHRyYW5zZm9ybS5sb2NhbE1hdHJpeDtcbiAgICAgICAgbG9jYWxNYXRyaXguY29weUZyb21BcnJheShtYXRyaXgpO1xuICAgICAgICB0cmFuc2Zvcm0ubG9jYWxNYXRyaXggPSBsb2NhbE1hdHJpeDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0cmFuc2xhdGlvbikge1xuICAgICAgICAgIHRyYW5zZm9ybS5zZXRQb3NpdGlvbih0cmFuc2xhdGlvblswXSwgdHJhbnNsYXRpb25bMV0sIHRyYW5zbGF0aW9uWzJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm90YXRpb24pIHtcbiAgICAgICAgICB0cmFuc2Zvcm0uc2V0Um90YXRpb25RdWF0ZXJuaW9uKHJvdGF0aW9uWzBdLCByb3RhdGlvblsxXSwgcm90YXRpb25bMl0sIHJvdGF0aW9uWzNdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2NhbGUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm0uc2V0U2NhbGUoc2NhbGVbMF0sIHNjYWxlWzFdLCBzY2FsZVsyXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZW50aXRpZXNbaV0gPSBlbnRpdHk7XG4gICAgfVxuXG4gICAgZ2xURlJlc291cmNlLmVudGl0aWVzID0gZW50aXRpZXM7XG4gICAgdGhpcy5fYnVpbGRFbnRpdHlUcmVlKGNvbnRleHQsIGdsVEZSZXNvdXJjZSk7XG4gICAgdGhpcy5fY3JlYXRlU2NlbmVSb290cyhjb250ZXh0LCBnbFRGUmVzb3VyY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRFbnRpdHlUcmVlKGNvbnRleHQ6IFBhcnNlckNvbnRleHQsIGdsVEZSZXNvdXJjZTogR0xURlJlc291cmNlKTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgZ2x0ZjogeyBub2RlcyB9XG4gICAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgeyBlbnRpdGllcyB9ID0gZ2xURlJlc291cmNlO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gbm9kZXNbaV07XG4gICAgICBjb25zdCBlbnRpdHkgPSBlbnRpdGllc1tpXTtcblxuICAgICAgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBjb25zdCBjaGlsZEVudGl0eSA9IGVudGl0aWVzW2NoaWxkcmVuW2pdXTtcblxuICAgICAgICAgIGVudGl0eS5hZGRDaGlsZChjaGlsZEVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVTY2VuZVJvb3RzKGNvbnRleHQ6IFBhcnNlckNvbnRleHQsIGdsVEZSZXNvdXJjZTogR0xURlJlc291cmNlKTogdm9pZCB7XG4gICAgY29uc3QgeyBzY2VuZTogc2NlbmVJRCA9IDAsIHNjZW5lcyB9ID0gY29udGV4dC5nbHRmO1xuICAgIGNvbnN0IHsgZW5naW5lLCBlbnRpdGllcyB9ID0gZ2xURlJlc291cmNlO1xuXG4gICAgaWYgKCFzY2VuZXMpIHJldHVybjtcblxuICAgIGNvbnN0IHNjZW5lUm9vdHM6IEVudGl0eVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjZW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgeyBub2RlcyB9ID0gc2NlbmVzW2ldO1xuXG4gICAgICBpZiAoIW5vZGVzKSBjb250aW51ZTtcblxuICAgICAgaWYgKG5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBzY2VuZVJvb3RzW2ldID0gZW50aXRpZXNbbm9kZXNbMF1dO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgcm9vdEVudGl0eSA9IG5ldyBFbnRpdHkoZW5naW5lLCBcIkdMVEZfUk9PVFwiKTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBub2Rlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHJvb3RFbnRpdHkuYWRkQ2hpbGQoZW50aXRpZXNbbm9kZXNbal1dKTtcbiAgICAgICAgfVxuICAgICAgICBzY2VuZVJvb3RzW2ldID0gcm9vdEVudGl0eTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnbFRGUmVzb3VyY2Uuc2NlbmVSb290cyA9IHNjZW5lUm9vdHM7XG4gICAgZ2xURlJlc291cmNlLmRlZmF1bHRTY2VuZVJvb3QgPSBzY2VuZVJvb3RzW3NjZW5lSURdO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBBc3NldFByb21pc2UsXG4gIEJsZW5kU2hhcGUsXG4gIEJ1ZmZlcixcbiAgQnVmZmVyQmluZEZsYWcsXG4gIEJ1ZmZlclVzYWdlLFxuICBFbmdpbmVPYmplY3QsXG4gIE1vZGVsTWVzaCxcbiAgVHlwZWRBcnJheSxcbiAgVmVydGV4RWxlbWVudFxufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBWZWN0b3IzLCBWZWN0b3I0IH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtbWF0aFwiO1xuaW1wb3J0IHsgR0xURlV0aWwgfSBmcm9tIFwiLi4vR0xURlV0aWxcIjtcbmltcG9ydCB7IEFjY2Vzc29yVHlwZSwgSUdMVEYsIElNZXNoLCBJTWVzaFByaW1pdGl2ZSB9IGZyb20gXCIuLi9TY2hlbWFcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL1BhcnNlclwiO1xuaW1wb3J0IHsgUGFyc2VyQ29udGV4dCB9IGZyb20gXCIuL1BhcnNlckNvbnRleHRcIjtcblxuZXhwb3J0IGNsYXNzIE1lc2hQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfdGVtcFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpO1xuXG4gIHBhcnNlKGNvbnRleHQ6IFBhcnNlckNvbnRleHQpIHtcbiAgICBjb25zdCB7IGdsdGYsIGJ1ZmZlcnMsIGdsVEZSZXNvdXJjZSB9ID0gY29udGV4dDtcbiAgICBjb25zdCB7IGVuZ2luZSB9ID0gZ2xURlJlc291cmNlO1xuICAgIGlmICghZ2x0Zi5tZXNoZXMpIHJldHVybjtcblxuICAgIGNvbnN0IG1lc2hlc1Byb21pc2VJbmZvID0gY29udGV4dC5tZXNoZXNQcm9taXNlSW5mbztcbiAgICBjb25zdCBtZXNoUHJvbWlzZXM6IFByb21pc2U8TW9kZWxNZXNoW10+W10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ2x0Zi5tZXNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGdsdGZNZXNoID0gZ2x0Zi5tZXNoZXNbaV07XG4gICAgICBjb25zdCBwcmltaXRpdmVQcm9taXNlczogUHJvbWlzZTxNb2RlbE1lc2g+W10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBnbHRmTWVzaC5wcmltaXRpdmVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGNvbnN0IGdsdGZQcmltaXRpdmUgPSBnbHRmTWVzaC5wcmltaXRpdmVzW2pdO1xuICAgICAgICBjb25zdCB7IGV4dGVuc2lvbnMgPSB7fSB9ID0gZ2x0ZlByaW1pdGl2ZTtcbiAgICAgICAgY29uc3QgeyBLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbiB9ID0gZXh0ZW5zaW9ucztcblxuICAgICAgICBwcmltaXRpdmVQcm9taXNlc1tqXSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgY29uc3QgbWVzaCA9IG5ldyBNb2RlbE1lc2goZW5naW5lLCBnbHRmTWVzaC5uYW1lIHx8IGogKyBcIlwiKTtcblxuICAgICAgICAgIGlmIChLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbikge1xuICAgICAgICAgICAgKDxQcm9taXNlPEVuZ2luZU9iamVjdD4+KFxuICAgICAgICAgICAgICBQYXJzZXIuY3JlYXRlRW5naW5lUmVzb3VyY2UoXG4gICAgICAgICAgICAgICAgXCJLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvblwiLFxuICAgICAgICAgICAgICAgIEtIUl9kcmFjb19tZXNoX2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgZ2x0ZlByaW1pdGl2ZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApKVxuICAgICAgICAgICAgICAudGhlbigoZGVjb2RlZEdlb21ldHJ5OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VNZXNoRnJvbUdMVEZQcmltaXRpdmVEcmFjbyhcbiAgICAgICAgICAgICAgICAgIG1lc2gsXG4gICAgICAgICAgICAgICAgICBnbHRmTWVzaCxcbiAgICAgICAgICAgICAgICAgIGdsdGZQcmltaXRpdmUsXG4gICAgICAgICAgICAgICAgICBnbHRmLFxuICAgICAgICAgICAgICAgICAgKGF0dHJpYnV0ZVNlbWFudGljKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGVjb2RlZEdlb21ldHJ5LmF0dHJpYnV0ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVjb2RlZEdlb21ldHJ5LmF0dHJpYnV0ZXNbal0ubmFtZSA9PT0gYXR0cmlidXRlU2VtYW50aWMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWNvZGVkR2VvbWV0cnkuYXR0cmlidXRlc1tqXS5hcnJheTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgKGF0dHJpYnV0ZVNlbWFudGljLCBzaGFwZUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IFwiQmxlbmRTaGFwZSBhbmltYXRpb24gaXMgbm90IHN1cHBvcnRlZCB3aGVuIHVzaW5nIGRyYWNvLlwiO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlY29kZWRHZW9tZXRyeS5pbmRleC5hcnJheTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBjb250ZXh0LmtlZXBNZXNoRGF0YVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC50aGVuKHJlc29sdmUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9wYXJzZU1lc2hGcm9tR0xURlByaW1pdGl2ZShcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgbWVzaCxcbiAgICAgICAgICAgICAgZ2x0Zk1lc2gsXG4gICAgICAgICAgICAgIGdsdGZQcmltaXRpdmUsXG4gICAgICAgICAgICAgIGdsdGYsXG4gICAgICAgICAgICAgIChhdHRyaWJ1dGVTZW1hbnRpYykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAoYXR0cmlidXRlTmFtZSwgc2hhcGVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNoYXBlQWNjZXNzb3JJZHggPSBnbHRmUHJpbWl0aXZlLnRhcmdldHNbc2hhcGVJbmRleF07XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlQWNjZXNzb3JJZHggPSBzaGFwZUFjY2Vzc29ySWR4W2F0dHJpYnV0ZU5hbWVdO1xuICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVBY2Nlc3NvcklkeCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgYWNjZXNzb3IgPSBnbHRmLmFjY2Vzc29yc1thdHRyaWJ1dGVBY2Nlc3NvcklkeF07XG4gICAgICAgICAgICAgICAgICByZXR1cm4gR0xURlV0aWwuZ2V0QWNjZXNzb3JEYXRhKGdsdGYsIGFjY2Vzc29yLCBidWZmZXJzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXhBY2Nlc3NvciA9IGdsdGYuYWNjZXNzb3JzW2dsdGZQcmltaXRpdmUuaW5kaWNlc107XG4gICAgICAgICAgICAgICAgcmV0dXJuIEdMVEZVdGlsLmdldEFjY2Vzc29yRGF0YShnbHRmLCBpbmRleEFjY2Vzc29yLCBidWZmZXJzKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY29udGV4dC5rZWVwTWVzaERhdGFcbiAgICAgICAgICAgICkudGhlbihyZXNvbHZlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBtZXNoUHJvbWlzZXNbaV0gPSBQcm9taXNlLmFsbChwcmltaXRpdmVQcm9taXNlcyk7XG4gICAgfVxuXG4gICAgQXNzZXRQcm9taXNlLmFsbChtZXNoUHJvbWlzZXMpXG4gICAgICAudGhlbigobWVzaGVzOiBNb2RlbE1lc2hbXVtdKSA9PiB7XG4gICAgICAgIGdsVEZSZXNvdXJjZS5tZXNoZXMgPSBtZXNoZXM7XG4gICAgICAgIG1lc2hlc1Byb21pc2VJbmZvLnJlc29sdmUobWVzaGVzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2gobWVzaGVzUHJvbWlzZUluZm8ucmVqZWN0KTtcblxuICAgIHJldHVybiBtZXNoZXNQcm9taXNlSW5mby5wcm9taXNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VNZXNoRnJvbUdMVEZQcmltaXRpdmUoXG4gICAgY29udGV4dDogUGFyc2VyQ29udGV4dCxcbiAgICBtZXNoOiBNb2RlbE1lc2gsXG4gICAgZ2x0Zk1lc2g6IElNZXNoLFxuICAgIGdsdGZQcmltaXRpdmU6IElNZXNoUHJpbWl0aXZlLFxuICAgIGdsdGY6IElHTFRGLFxuICAgIGdldFZlcnRleEJ1ZmZlckRhdGE6IChzZW1hbnRpYzogc3RyaW5nKSA9PiBUeXBlZEFycmF5LFxuICAgIGdldEJsZW5kU2hhcGVEYXRhOiAoc2VtYW50aWM6IHN0cmluZywgc2hhcGVJbmRleDogbnVtYmVyKSA9PiBUeXBlZEFycmF5LFxuICAgIGdldEluZGV4QnVmZmVyRGF0YTogKCkgPT4gVHlwZWRBcnJheSxcbiAgICBrZWVwTWVzaERhdGE6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxNb2RlbE1lc2g+IHtcbiAgICBjb25zdCB7IGFjY2Vzc29ycyB9ID0gZ2x0ZjtcbiAgICBjb25zdCB7IGJ1ZmZlcnMgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgeyBhdHRyaWJ1dGVzLCB0YXJnZXRzLCBpbmRpY2VzLCBtb2RlIH0gPSBnbHRmUHJpbWl0aXZlO1xuXG4gICAgY29uc3QgZW5naW5lID0gbWVzaC5lbmdpbmU7XG4gICAgY29uc3QgdmVydGV4RWxlbWVudHMgPSBuZXcgQXJyYXk8VmVydGV4RWxlbWVudD4oKTtcblxuICAgIGxldCB2ZXJ0ZXhDb3VudDogbnVtYmVyO1xuICAgIGxldCBidWZmZXJCaW5kSW5kZXggPSAwO1xuICAgIGxldCBwb3NpdGlvbnM6IFZlY3RvcjNbXTtcbiAgICBsZXQgYm9uZUluZGljZXM6IFZlY3RvcjRbXTtcbiAgICBsZXQgYm9uZVdlaWdodHM6IFZlY3RvcjRbXTtcbiAgICBpZiAoa2VlcE1lc2hEYXRhKSB7XG4gICAgICBwb3NpdGlvbnMgPSBuZXcgQXJyYXk8VmVjdG9yMz4odmVydGV4Q291bnQpO1xuICAgICAgYm9uZUluZGljZXMgPSBuZXcgQXJyYXk8VmVjdG9yND4odmVydGV4Q291bnQpO1xuICAgICAgYm9uZVdlaWdodHMgPSBuZXcgQXJyYXk8VmVjdG9yND4odmVydGV4Q291bnQpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGFjY2Vzc29yID0gYWNjZXNzb3JzW2F0dHJpYnV0ZXNbYXR0cmlidXRlXV07XG4gICAgICBjb25zdCBhY2Nlc3NvckJ1ZmZlciA9IEdMVEZVdGlsLmdldEFjY2Vzc29yQnVmZmVyKGNvbnRleHQsIGdsdGYsIGFjY2Vzc29yKTtcblxuICAgICAgY29uc3QgZGF0YUVsZW1lbnRTaXplID0gR0xURlV0aWwuZ2V0QWNjZXNzb3JUeXBlU2l6ZShhY2Nlc3Nvci50eXBlKTtcbiAgICAgIGNvbnN0IGFjY2Vzc29yQ291bnQgPSBhY2Nlc3Nvci5jb3VudDtcbiAgICAgIGNvbnN0IHZlcnRpY2VzID0gYWNjZXNzb3JCdWZmZXIuZGF0YTtcblxuICAgICAgbGV0IHZlcnRleEVsZW1lbnQ6IFZlcnRleEVsZW1lbnQ7XG4gICAgICBjb25zdCBtZXNoSWQgPSBtZXNoLmluc3RhbmNlSWQ7XG4gICAgICBjb25zdCB2ZXJ0ZXhCaW5kaW5nSW5mb3MgPSBhY2Nlc3NvckJ1ZmZlci52ZXJ0ZXhCaW5kaW5nSW5mb3M7XG4gICAgICBjb25zdCBlbGVtZW50Tm9ybWFsaXplZCA9IGFjY2Vzc29yLm5vcm1hbGl6ZWQ7XG4gICAgICBjb25zdCBlbGVtZW50Rm9ybWF0ID0gR0xURlV0aWwuZ2V0RWxlbWVudEZvcm1hdChhY2Nlc3Nvci5jb21wb25lbnRUeXBlLCBkYXRhRWxlbWVudFNpemUsIGVsZW1lbnROb3JtYWxpemVkKTtcblxuICAgICAgbGV0IHNjYWxlRmFjdG9yOiBudW1iZXI7XG4gICAgICBlbGVtZW50Tm9ybWFsaXplZCAmJiAoc2NhbGVGYWN0b3IgPSBHTFRGVXRpbC5nZXROb3JtYWxpemVkQ29tcG9uZW50U2NhbGUoYWNjZXNzb3IuY29tcG9uZW50VHlwZSkpO1xuXG4gICAgICBsZXQgZWxlbWVudE9mZnNldDogbnVtYmVyO1xuICAgICAgaWYgKGFjY2Vzc29yQnVmZmVyLmludGVybGVhdmVkKSB7XG4gICAgICAgIGNvbnN0IGJ5dGVPZmZzZXQgPSBhY2Nlc3Nvci5ieXRlT2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IHN0cmlkZSA9IGFjY2Vzc29yQnVmZmVyLnN0cmlkZTtcbiAgICAgICAgZWxlbWVudE9mZnNldCA9IGJ5dGVPZmZzZXQgJSBzdHJpZGU7XG4gICAgICAgIGlmICh2ZXJ0ZXhCaW5kaW5nSW5mb3NbbWVzaElkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmVydGV4RWxlbWVudCA9IG5ldyBWZXJ0ZXhFbGVtZW50KGF0dHJpYnV0ZSwgZWxlbWVudE9mZnNldCwgZWxlbWVudEZvcm1hdCwgYnVmZmVyQmluZEluZGV4KTtcblxuICAgICAgICAgIGxldCB2ZXJ0ZXhCdWZmZXIgPSBhY2Nlc3NvckJ1ZmZlci52ZXJ0ZXhCdWZmZXI7XG4gICAgICAgICAgaWYgKCF2ZXJ0ZXhCdWZmZXIpIHtcbiAgICAgICAgICAgIHZlcnRleEJ1ZmZlciA9IG5ldyBCdWZmZXIoZW5naW5lLCBCdWZmZXJCaW5kRmxhZy5WZXJ0ZXhCdWZmZXIsIHZlcnRpY2VzLmJ5dGVMZW5ndGgsIEJ1ZmZlclVzYWdlLlN0YXRpYyk7XG4gICAgICAgICAgICB2ZXJ0ZXhCdWZmZXIuc2V0RGF0YSh2ZXJ0aWNlcyk7XG4gICAgICAgICAgICBhY2Nlc3NvckJ1ZmZlci52ZXJ0ZXhCdWZmZXIgPSB2ZXJ0ZXhCdWZmZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1lc2guc2V0VmVydGV4QnVmZmVyQmluZGluZyh2ZXJ0ZXhCdWZmZXIsIHN0cmlkZSwgYnVmZmVyQmluZEluZGV4KTtcbiAgICAgICAgICB2ZXJ0ZXhCaW5kaW5nSW5mb3NbbWVzaElkXSA9IGJ1ZmZlckJpbmRJbmRleCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZlcnRleEVsZW1lbnQgPSBuZXcgVmVydGV4RWxlbWVudChhdHRyaWJ1dGUsIGVsZW1lbnRPZmZzZXQsIGVsZW1lbnRGb3JtYXQsIHZlcnRleEJpbmRpbmdJbmZvc1ttZXNoSWRdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudE9mZnNldCA9IDA7XG4gICAgICAgIHZlcnRleEVsZW1lbnQgPSBuZXcgVmVydGV4RWxlbWVudChhdHRyaWJ1dGUsIGVsZW1lbnRPZmZzZXQsIGVsZW1lbnRGb3JtYXQsIGJ1ZmZlckJpbmRJbmRleCk7XG5cbiAgICAgICAgY29uc3QgdmVydGV4QnVmZmVyID0gbmV3IEJ1ZmZlcihlbmdpbmUsIEJ1ZmZlckJpbmRGbGFnLlZlcnRleEJ1ZmZlciwgdmVydGljZXMuYnl0ZUxlbmd0aCwgQnVmZmVyVXNhZ2UuU3RhdGljKTtcbiAgICAgICAgdmVydGV4QnVmZmVyLnNldERhdGEodmVydGljZXMpO1xuICAgICAgICBtZXNoLnNldFZlcnRleEJ1ZmZlckJpbmRpbmcodmVydGV4QnVmZmVyLCBhY2Nlc3NvckJ1ZmZlci5zdHJpZGUsIGJ1ZmZlckJpbmRJbmRleCk7XG4gICAgICAgIHZlcnRleEJpbmRpbmdJbmZvc1ttZXNoSWRdID0gYnVmZmVyQmluZEluZGV4Kys7XG4gICAgICB9XG4gICAgICB2ZXJ0ZXhFbGVtZW50cy5wdXNoKHZlcnRleEVsZW1lbnQpO1xuXG4gICAgICBpZiAoYXR0cmlidXRlID09PSBcIlBPU0lUSU9OXCIpIHtcbiAgICAgICAgdmVydGV4Q291bnQgPSBhY2Nlc3NvckNvdW50O1xuXG4gICAgICAgIGNvbnN0IHsgbWluLCBtYXggfSA9IG1lc2guYm91bmRzO1xuICAgICAgICBpZiAoYWNjZXNzb3IubWluICYmIGFjY2Vzc29yLm1heCkge1xuICAgICAgICAgIG1pbi5jb3B5RnJvbUFycmF5KGFjY2Vzc29yLm1pbik7XG4gICAgICAgICAgbWF4LmNvcHlGcm9tQXJyYXkoYWNjZXNzb3IubWF4KTtcblxuICAgICAgICAgIGlmIChrZWVwTWVzaERhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VPZmZzZXQgPSBlbGVtZW50T2Zmc2V0IC8gdmVydGljZXMuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgICAgICBjb25zdCBzdHJpZGUgPSB2ZXJ0aWNlcy5sZW5ndGggLyBhY2Nlc3NvckNvdW50O1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhY2Nlc3NvckNvdW50OyBqKyspIHtcbiAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gYmFzZU9mZnNldCArIGogKiBzdHJpZGU7XG4gICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gbmV3IFZlY3RvcjModmVydGljZXNbb2Zmc2V0XSwgdmVydGljZXNbb2Zmc2V0ICsgMV0sIHZlcnRpY2VzW29mZnNldCArIDJdKTtcbiAgICAgICAgICAgICAgZWxlbWVudE5vcm1hbGl6ZWQgJiYgcG9zaXRpb24uc2NhbGUoc2NhbGVGYWN0b3IpO1xuICAgICAgICAgICAgICBwb3NpdGlvbnNbal0gPSBwb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcG9zaXRpb24gPSBNZXNoUGFyc2VyLl90ZW1wVmVjdG9yMztcbiAgICAgICAgICBtaW4uc2V0KE51bWJlci5NQVhfVkFMVUUsIE51bWJlci5NQVhfVkFMVUUsIE51bWJlci5NQVhfVkFMVUUpO1xuICAgICAgICAgIG1heC5zZXQoLU51bWJlci5NQVhfVkFMVUUsIC1OdW1iZXIuTUFYX1ZBTFVFLCAtTnVtYmVyLk1BWF9WQUxVRSk7XG5cbiAgICAgICAgICBjb25zdCBiYXNlT2Zmc2V0ID0gZWxlbWVudE9mZnNldCAvIHZlcnRpY2VzLkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICAgIGNvbnN0IHN0cmlkZSA9IHZlcnRpY2VzLmxlbmd0aCAvIGFjY2Vzc29yQ291bnQ7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhY2Nlc3NvckNvdW50OyBqKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGJhc2VPZmZzZXQgKyBqICogc3RyaWRlO1xuICAgICAgICAgICAgcG9zaXRpb24uY29weUZyb21BcnJheSh2ZXJ0aWNlcywgb2Zmc2V0KTtcbiAgICAgICAgICAgIFZlY3RvcjMubWluKG1pbiwgcG9zaXRpb24sIG1pbik7XG4gICAgICAgICAgICBWZWN0b3IzLm1heChtYXgsIHBvc2l0aW9uLCBtYXgpO1xuXG4gICAgICAgICAgICBpZiAoa2VlcE1lc2hEYXRhKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNsb25lUG9zaXRpb24gPSBwb3NpdGlvbi5jbG9uZSgpO1xuICAgICAgICAgICAgICBlbGVtZW50Tm9ybWFsaXplZCAmJiBjbG9uZVBvc2l0aW9uLnNjYWxlKHNjYWxlRmFjdG9yKTtcbiAgICAgICAgICAgICAgcG9zaXRpb25zW2pdID0gY2xvbmVQb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnROb3JtYWxpemVkKSB7XG4gICAgICAgICAgbWluLnNjYWxlKHNjYWxlRmFjdG9yKTtcbiAgICAgICAgICBtYXguc2NhbGUoc2NhbGVGYWN0b3IpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZSA9PT0gXCJKT0lOVFNfMFwiICYmIGtlZXBNZXNoRGF0YSkge1xuICAgICAgICBjb25zdCBiYXNlT2Zmc2V0ID0gZWxlbWVudE9mZnNldCAvIHZlcnRpY2VzLkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICBjb25zdCBzdHJpZGUgPSB2ZXJ0aWNlcy5sZW5ndGggLyBhY2Nlc3NvckNvdW50O1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGFjY2Vzc29yQ291bnQ7IGorKykge1xuICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGJhc2VPZmZzZXQgKyBqICogc3RyaWRlO1xuICAgICAgICAgIGNvbnN0IGJvbmVJbmRleCA9IG5ldyBWZWN0b3I0KFxuICAgICAgICAgICAgdmVydGljZXNbb2Zmc2V0XSxcbiAgICAgICAgICAgIHZlcnRpY2VzW29mZnNldCArIDFdLFxuICAgICAgICAgICAgdmVydGljZXNbb2Zmc2V0ICsgMl0sXG4gICAgICAgICAgICB2ZXJ0aWNlc1tvZmZzZXQgKyAzXVxuICAgICAgICAgICk7XG4gICAgICAgICAgZWxlbWVudE5vcm1hbGl6ZWQgJiYgYm9uZUluZGV4LnNjYWxlKHNjYWxlRmFjdG9yKTtcbiAgICAgICAgICBib25lSW5kaWNlc1tqXSA9IGJvbmVJbmRleDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUgPT09IFwiV0VJR0hUU18wXCIgJiYga2VlcE1lc2hEYXRhKSB7XG4gICAgICAgIGNvbnN0IGJhc2VPZmZzZXQgPSBlbGVtZW50T2Zmc2V0IC8gdmVydGljZXMuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgIGNvbnN0IHN0cmlkZSA9IHZlcnRpY2VzLmxlbmd0aCAvIGFjY2Vzc29yQ291bnQ7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYWNjZXNzb3JDb3VudDsgaisrKSB7XG4gICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gYmFzZU9mZnNldCArIGogKiBzdHJpZGU7XG4gICAgICAgICAgY29uc3QgYm9uZVdlaWdodCA9IG5ldyBWZWN0b3I0KFxuICAgICAgICAgICAgdmVydGljZXNbb2Zmc2V0XSxcbiAgICAgICAgICAgIHZlcnRpY2VzW29mZnNldCArIDFdLFxuICAgICAgICAgICAgdmVydGljZXNbb2Zmc2V0ICsgMl0sXG4gICAgICAgICAgICB2ZXJ0aWNlc1tvZmZzZXQgKyAzXVxuICAgICAgICAgICk7XG4gICAgICAgICAgZWxlbWVudE5vcm1hbGl6ZWQgJiYgYm9uZVdlaWdodC5zY2FsZShzY2FsZUZhY3Rvcik7XG4gICAgICAgICAgYm9uZVdlaWdodHNbal0gPSBib25lV2VpZ2h0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIG1lc2guc2V0VmVydGV4RWxlbWVudHModmVydGV4RWxlbWVudHMpO1xuXG4gICAgLy8gSW5kaWNlc1xuICAgIGlmIChpbmRpY2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGluZGV4QWNjZXNzb3IgPSBnbHRmLmFjY2Vzc29yc1tpbmRpY2VzXTtcbiAgICAgIGNvbnN0IGluZGV4RGF0YSA9IGdldEluZGV4QnVmZmVyRGF0YSgpO1xuICAgICAgbWVzaC5zZXRJbmRpY2VzKDxVaW50OEFycmF5IHwgVWludDE2QXJyYXkgfCBVaW50MzJBcnJheT5pbmRleERhdGEpO1xuICAgICAgbWVzaC5hZGRTdWJNZXNoKDAsIGluZGV4QWNjZXNzb3IuY291bnQsIG1vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXNoLmFkZFN1Yk1lc2goMCwgdmVydGV4Q291bnQsIG1vZGUpO1xuICAgIH1cblxuICAgIC8vIEJsZW5kU2hhcGVzXG4gICAgdGFyZ2V0cyAmJiB0aGlzLl9jcmVhdGVCbGVuZFNoYXBlKG1lc2gsIGdsdGZNZXNoLCB0YXJnZXRzLCBnZXRCbGVuZFNoYXBlRGF0YSk7XG5cbiAgICBtZXNoLnVwbG9hZERhdGEoIWtlZXBNZXNoRGF0YSk7XG5cbiAgICAvL0B0cy1pZ25vcmVcbiAgICBtZXNoLl9wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgbWVzaC5fYm9uZUluZGljZXMgPSBib25lSW5kaWNlcztcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBtZXNoLl9ib25lV2VpZ2h0cyA9IGJvbmVXZWlnaHRzO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtZXNoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUJsZW5kU2hhcGUoXG4gICAgbWVzaDogTW9kZWxNZXNoLFxuICAgIGdsVEZNZXNoOiBJTWVzaCxcbiAgICBnbFRGVGFyZ2V0czoge1xuICAgICAgW25hbWU6IHN0cmluZ106IG51bWJlcjtcbiAgICB9W10sXG4gICAgZ2V0QmxlbmRTaGFwZURhdGE6IChzZW1hbnRpYzogc3RyaW5nLCBzaGFwZUluZGV4OiBudW1iZXIpID0+IFR5cGVkQXJyYXlcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgYmxlbmRTaGFwZU5hbWVzID0gZ2xURk1lc2guZXh0cmFzID8gZ2xURk1lc2guZXh0cmFzLnRhcmdldE5hbWVzIDogbnVsbDtcblxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gZ2xURlRhcmdldHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBjb25zdCBuYW1lID0gYmxlbmRTaGFwZU5hbWVzID8gYmxlbmRTaGFwZU5hbWVzW2ldIDogYGJsZW5kU2hhcGUke2l9YDtcbiAgICAgIGNvbnN0IGRlbHRhUG9zQnVmZmVyID0gZ2V0QmxlbmRTaGFwZURhdGEoXCJQT1NJVElPTlwiLCBpKTtcbiAgICAgIGNvbnN0IGRlbHRhTm9yQnVmZmVyID0gZ2V0QmxlbmRTaGFwZURhdGEoXCJOT1JNQUxcIiwgaSk7XG4gICAgICBjb25zdCBkZWx0YVRhbkJ1ZmZlciA9IGdldEJsZW5kU2hhcGVEYXRhKFwiVEFOR0VOVFwiLCBpKTtcbiAgICAgIGNvbnN0IGRlbHRhUG9zaXRpb25zID0gZGVsdGFQb3NCdWZmZXIgPyBHTFRGVXRpbC5mbG9hdEJ1ZmZlclRvVmVjdG9yM0FycmF5KDxGbG9hdDMyQXJyYXk+ZGVsdGFQb3NCdWZmZXIpIDogbnVsbDtcbiAgICAgIGNvbnN0IGRlbHRhTm9ybWFscyA9IGRlbHRhTm9yQnVmZmVyID8gR0xURlV0aWwuZmxvYXRCdWZmZXJUb1ZlY3RvcjNBcnJheSg8RmxvYXQzMkFycmF5PmRlbHRhTm9yQnVmZmVyKSA6IG51bGw7XG4gICAgICBjb25zdCBkZWx0YVRhbmdlbnRzID0gZGVsdGFUYW5CdWZmZXIgPyBHTFRGVXRpbC5mbG9hdEJ1ZmZlclRvVmVjdG9yM0FycmF5KDxGbG9hdDMyQXJyYXk+ZGVsdGFUYW5CdWZmZXIpIDogbnVsbDtcblxuICAgICAgY29uc3QgYmxlbmRTaGFwZSA9IG5ldyBCbGVuZFNoYXBlKG5hbWUpO1xuICAgICAgYmxlbmRTaGFwZS5hZGRGcmFtZSgxLjAsIGRlbHRhUG9zaXRpb25zLCBkZWx0YU5vcm1hbHMsIGRlbHRhVGFuZ2VudHMpO1xuICAgICAgbWVzaC5hZGRCbGVuZFNoYXBlKGJsZW5kU2hhcGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHJpdmF0ZSBfcGFyc2VNZXNoRnJvbUdMVEZQcmltaXRpdmVEcmFjbyhcbiAgICBtZXNoOiBNb2RlbE1lc2gsXG4gICAgZ2x0Zk1lc2g6IElNZXNoLFxuICAgIGdsdGZQcmltaXRpdmU6IElNZXNoUHJpbWl0aXZlLFxuICAgIGdsdGY6IElHTFRGLFxuICAgIGdldFZlcnRleEJ1ZmZlckRhdGE6IChzZW1hbnRpYzogc3RyaW5nKSA9PiBUeXBlZEFycmF5LFxuICAgIGdldEJsZW5kU2hhcGVEYXRhOiAoc2VtYW50aWM6IHN0cmluZywgc2hhcGVJbmRleDogbnVtYmVyKSA9PiBUeXBlZEFycmF5LFxuICAgIGdldEluZGV4QnVmZmVyRGF0YTogKCkgPT4gVHlwZWRBcnJheSxcbiAgICBrZWVwTWVzaERhdGE6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxNb2RlbE1lc2g+IHtcbiAgICBjb25zdCB7IGF0dHJpYnV0ZXMsIHRhcmdldHMsIGluZGljZXMsIG1vZGUgfSA9IGdsdGZQcmltaXRpdmU7XG4gICAgbGV0IHZlcnRleENvdW50OiBudW1iZXI7XG5cbiAgICBjb25zdCB7IGFjY2Vzc29ycyB9ID0gZ2x0ZjtcbiAgICBjb25zdCBhY2Nlc3NvciA9IGFjY2Vzc29yc1thdHRyaWJ1dGVzW1wiUE9TSVRJT05cIl1dO1xuICAgIGNvbnN0IHBvc2l0aW9uQnVmZmVyID0gPEZsb2F0MzJBcnJheT5nZXRWZXJ0ZXhCdWZmZXJEYXRhKFwiUE9TSVRJT05cIik7XG4gICAgY29uc3QgcG9zaXRpb25zID0gR0xURlV0aWwuZmxvYXRCdWZmZXJUb1ZlY3RvcjNBcnJheShwb3NpdGlvbkJ1ZmZlcik7XG4gICAgbWVzaC5zZXRQb3NpdGlvbnMocG9zaXRpb25zKTtcblxuICAgIGNvbnN0IHsgYm91bmRzIH0gPSBtZXNoO1xuICAgIHZlcnRleENvdW50ID0gYWNjZXNzb3IuY291bnQ7XG4gICAgaWYgKGFjY2Vzc29yLm1pbiAmJiBhY2Nlc3Nvci5tYXgpIHtcbiAgICAgIGJvdW5kcy5taW4uY29weUZyb21BcnJheShhY2Nlc3Nvci5taW4pO1xuICAgICAgYm91bmRzLm1heC5jb3B5RnJvbUFycmF5KGFjY2Vzc29yLm1heCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gTWVzaFBhcnNlci5fdGVtcFZlY3RvcjM7XG4gICAgICBjb25zdCB7IG1pbiwgbWF4IH0gPSBib3VuZHM7XG5cbiAgICAgIG1pbi5zZXQoTnVtYmVyLk1BWF9WQUxVRSwgTnVtYmVyLk1BWF9WQUxVRSwgTnVtYmVyLk1BWF9WQUxVRSk7XG4gICAgICBtYXguc2V0KC1OdW1iZXIuTUFYX1ZBTFVFLCAtTnVtYmVyLk1BWF9WQUxVRSwgLU51bWJlci5NQVhfVkFMVUUpO1xuXG4gICAgICBjb25zdCBzdHJpZGUgPSBwb3NpdGlvbkJ1ZmZlci5sZW5ndGggLyB2ZXJ0ZXhDb3VudDtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmVydGV4Q291bnQ7IGorKykge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBqICogc3RyaWRlO1xuICAgICAgICBwb3NpdGlvbi5jb3B5RnJvbUFycmF5KHBvc2l0aW9uQnVmZmVyLCBvZmZzZXQpO1xuICAgICAgICBWZWN0b3IzLm1pbihtaW4sIHBvc2l0aW9uLCBtaW4pO1xuICAgICAgICBWZWN0b3IzLm1heChtYXgsIHBvc2l0aW9uLCBtYXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlU2VtYW50aWMgaW4gYXR0cmlidXRlcykge1xuICAgICAgaWYgKGF0dHJpYnV0ZVNlbWFudGljID09PSBcIlBPU0lUSU9OXCIpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBidWZmZXJEYXRhID0gZ2V0VmVydGV4QnVmZmVyRGF0YShhdHRyaWJ1dGVTZW1hbnRpYyk7XG4gICAgICBzd2l0Y2ggKGF0dHJpYnV0ZVNlbWFudGljKSB7XG4gICAgICAgIGNhc2UgXCJOT1JNQUxcIjpcbiAgICAgICAgICBjb25zdCBub3JtYWxzID0gR0xURlV0aWwuZmxvYXRCdWZmZXJUb1ZlY3RvcjNBcnJheSg8RmxvYXQzMkFycmF5PmJ1ZmZlckRhdGEpO1xuICAgICAgICAgIG1lc2guc2V0Tm9ybWFscyhub3JtYWxzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlRFWENPT1JEXzBcIjpcbiAgICAgICAgICBjb25zdCB0ZXh0dXJlY29vcmRzID0gR0xURlV0aWwuZmxvYXRCdWZmZXJUb1ZlY3RvcjJBcnJheSg8RmxvYXQzMkFycmF5PmJ1ZmZlckRhdGEpO1xuICAgICAgICAgIG1lc2guc2V0VVZzKHRleHR1cmVjb29yZHMsIDApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVEVYQ09PUkRfMVwiOlxuICAgICAgICAgIGNvbnN0IHRleHR1cmVjb29yZHMxID0gR0xURlV0aWwuZmxvYXRCdWZmZXJUb1ZlY3RvcjJBcnJheSg8RmxvYXQzMkFycmF5PmJ1ZmZlckRhdGEpO1xuICAgICAgICAgIG1lc2guc2V0VVZzKHRleHR1cmVjb29yZHMxLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlRFWENPT1JEXzJcIjpcbiAgICAgICAgICBjb25zdCB0ZXh0dXJlY29vcmRzMiA9IEdMVEZVdGlsLmZsb2F0QnVmZmVyVG9WZWN0b3IyQXJyYXkoPEZsb2F0MzJBcnJheT5idWZmZXJEYXRhKTtcbiAgICAgICAgICBtZXNoLnNldFVWcyh0ZXh0dXJlY29vcmRzMiwgMik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJURVhDT09SRF8zXCI6XG4gICAgICAgICAgY29uc3QgdGV4dHVyZWNvb3JkczMgPSBHTFRGVXRpbC5mbG9hdEJ1ZmZlclRvVmVjdG9yMkFycmF5KDxGbG9hdDMyQXJyYXk+YnVmZmVyRGF0YSk7XG4gICAgICAgICAgbWVzaC5zZXRVVnModGV4dHVyZWNvb3JkczMsIDMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVEVYQ09PUkRfNFwiOlxuICAgICAgICAgIGNvbnN0IHRleHR1cmVjb29yZHM0ID0gR0xURlV0aWwuZmxvYXRCdWZmZXJUb1ZlY3RvcjJBcnJheSg8RmxvYXQzMkFycmF5PmJ1ZmZlckRhdGEpO1xuICAgICAgICAgIG1lc2guc2V0VVZzKHRleHR1cmVjb29yZHM0LCA0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlRFWENPT1JEXzVcIjpcbiAgICAgICAgICBjb25zdCB0ZXh0dXJlY29vcmRzNSA9IEdMVEZVdGlsLmZsb2F0QnVmZmVyVG9WZWN0b3IyQXJyYXkoPEZsb2F0MzJBcnJheT5idWZmZXJEYXRhKTtcbiAgICAgICAgICBtZXNoLnNldFVWcyh0ZXh0dXJlY29vcmRzNSwgNSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJURVhDT09SRF82XCI6XG4gICAgICAgICAgY29uc3QgdGV4dHVyZWNvb3JkczYgPSBHTFRGVXRpbC5mbG9hdEJ1ZmZlclRvVmVjdG9yMkFycmF5KDxGbG9hdDMyQXJyYXk+YnVmZmVyRGF0YSk7XG4gICAgICAgICAgbWVzaC5zZXRVVnModGV4dHVyZWNvb3JkczYsIDYpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiVEVYQ09PUkRfN1wiOlxuICAgICAgICAgIGNvbnN0IHRleHR1cmVjb29yZHM3ID0gR0xURlV0aWwuZmxvYXRCdWZmZXJUb1ZlY3RvcjJBcnJheSg8RmxvYXQzMkFycmF5PmJ1ZmZlckRhdGEpO1xuICAgICAgICAgIG1lc2guc2V0VVZzKHRleHR1cmVjb29yZHM3LCA3KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkNPTE9SXzBcIjpcbiAgICAgICAgICBjb25zdCBjb2xvcnMgPSBHTFRGVXRpbC5mbG9hdEJ1ZmZlclRvQ29sb3JBcnJheShcbiAgICAgICAgICAgIDxGbG9hdDMyQXJyYXk+YnVmZmVyRGF0YSxcbiAgICAgICAgICAgIGFjY2Vzc29yc1thdHRyaWJ1dGVzW1wiQ09MT1JfMFwiXV0udHlwZSA9PT0gQWNjZXNzb3JUeXBlLlZFQzNcbiAgICAgICAgICApO1xuICAgICAgICAgIG1lc2guc2V0Q29sb3JzKGNvbG9ycyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJUQU5HRU5UXCI6XG4gICAgICAgICAgY29uc3QgdGFuZ2VudHMgPSBHTFRGVXRpbC5mbG9hdEJ1ZmZlclRvVmVjdG9yNEFycmF5KDxGbG9hdDMyQXJyYXk+YnVmZmVyRGF0YSk7XG4gICAgICAgICAgbWVzaC5zZXRUYW5nZW50cyh0YW5nZW50cyk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBcIkpPSU5UU18wXCI6XG4gICAgICAgICAgY29uc3Qgam9pbnRzID0gR0xURlV0aWwuZmxvYXRCdWZmZXJUb1ZlY3RvcjRBcnJheSg8RmxvYXQzMkFycmF5PmJ1ZmZlckRhdGEpO1xuICAgICAgICAgIG1lc2guc2V0Qm9uZUluZGljZXMoam9pbnRzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIldFSUdIVFNfMFwiOlxuICAgICAgICAgIGNvbnN0IHdlaWdodHMgPSBHTFRGVXRpbC5mbG9hdEJ1ZmZlclRvVmVjdG9yNEFycmF5KDxGbG9hdDMyQXJyYXk+YnVmZmVyRGF0YSk7XG4gICAgICAgICAgbWVzaC5zZXRCb25lV2VpZ2h0cyh3ZWlnaHRzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBjb25zb2xlLndhcm4oYFVuc3VwcG9ydCBhdHRyaWJ1dGUgc2VtYW50aWMgJHthdHRyaWJ1dGVTZW1hbnRpY30uYCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5kaWNlc1xuICAgIGlmIChpbmRpY2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGluZGV4QWNjZXNzb3IgPSBnbHRmLmFjY2Vzc29yc1tpbmRpY2VzXTtcbiAgICAgIGNvbnN0IGluZGV4RGF0YSA9IGdldEluZGV4QnVmZmVyRGF0YSgpO1xuICAgICAgbWVzaC5zZXRJbmRpY2VzKDxVaW50OEFycmF5IHwgVWludDE2QXJyYXkgfCBVaW50MzJBcnJheT5pbmRleERhdGEpO1xuICAgICAgbWVzaC5hZGRTdWJNZXNoKDAsIGluZGV4QWNjZXNzb3IuY291bnQsIG1vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXNoLmFkZFN1Yk1lc2goMCwgdmVydGV4Q291bnQsIG1vZGUpO1xuICAgIH1cblxuICAgIC8vIEJsZW5kU2hhcGVzXG4gICAgdGFyZ2V0cyAmJiB0aGlzLl9jcmVhdGVCbGVuZFNoYXBlKG1lc2gsIGdsdGZNZXNoLCB0YXJnZXRzLCBnZXRCbGVuZFNoYXBlRGF0YSk7XG5cbiAgICBtZXNoLnVwbG9hZERhdGEoIWtlZXBNZXNoRGF0YSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShtZXNoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQW5pbWF0b3IsXG4gIEFuaW1hdG9yQ29udHJvbGxlcixcbiAgQW5pbWF0b3JDb250cm9sbGVyTGF5ZXIsXG4gIEFuaW1hdG9yU3RhdGVNYWNoaW5lLFxuICBBc3NldFByb21pc2UsXG4gIEJsaW5uUGhvbmdNYXRlcmlhbCxcbiAgQ2FtZXJhLFxuICBFbmdpbmUsXG4gIEVudGl0eSxcbiAgTWVzaFJlbmRlcmVyLFxuICBTa2lubmVkTWVzaFJlbmRlcmVyXG59IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IElLSFJMaWdodHNQdW5jdHVhbCwgSUtIUkxpZ2h0c1B1bmN0dWFsX0xpZ2h0Tm9kZSB9IGZyb20gXCIuLi9leHRlbnNpb25zL1NjaGVtYVwiO1xuaW1wb3J0IHsgR0xURlJlc291cmNlIH0gZnJvbSBcIi4uL0dMVEZSZXNvdXJjZVwiO1xuaW1wb3J0IHsgQ2FtZXJhVHlwZSwgSUNhbWVyYSwgSU5vZGUgfSBmcm9tIFwiLi4vU2NoZW1hXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi9QYXJzZXJcIjtcbmltcG9ydCB7IFBhcnNlckNvbnRleHQgfSBmcm9tIFwiLi9QYXJzZXJDb250ZXh0XCI7XG5cbmV4cG9ydCBjbGFzcyBTY2VuZVBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHByaXZhdGUgc3RhdGljIF9kZWZhdWx0TWF0ZXJpYWw6IEJsaW5uUGhvbmdNYXRlcmlhbDtcblxuICBwcml2YXRlIHN0YXRpYyBfZ2V0RGVmYXVsdE1hdGVyaWFsKGVuZ2luZTogRW5naW5lKTogQmxpbm5QaG9uZ01hdGVyaWFsIHtcbiAgICBpZiAoIVNjZW5lUGFyc2VyLl9kZWZhdWx0TWF0ZXJpYWwpIHtcbiAgICAgIFNjZW5lUGFyc2VyLl9kZWZhdWx0TWF0ZXJpYWwgPSBuZXcgQmxpbm5QaG9uZ01hdGVyaWFsKGVuZ2luZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFNjZW5lUGFyc2VyLl9kZWZhdWx0TWF0ZXJpYWw7XG4gIH1cblxuICBwYXJzZShjb250ZXh0OiBQYXJzZXJDb250ZXh0KSB7XG4gICAgY29uc3QgeyBnbFRGUmVzb3VyY2UsIGdsdGYgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgeyBlbnRpdGllcyB9ID0gZ2xURlJlc291cmNlO1xuICAgIGNvbnN0IHsgbm9kZXMsIGNhbWVyYXM6IGdsdGZDYW1lcmFzIH0gPSBnbHRmO1xuXG4gICAgaWYgKCFub2RlcykgcmV0dXJuO1xuICAgIGNvbnN0IGRlZmF1bHRTY2VuZVJvb3RQcm9taXNlSW5mbyA9IGNvbnRleHQuZGVmYXVsdFNjZW5lUm9vdFByb21pc2VJbmZvO1xuXG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGdsdGZOb2RlID0gbm9kZXNbaV07XG4gICAgICBjb25zdCB7IGNhbWVyYTogY2FtZXJhSUQsIG1lc2g6IG1lc2hJRCwgZXh0ZW5zaW9ucyA9IHt9IH0gPSBnbHRmTm9kZTtcbiAgICAgIGNvbnN0IEtIUl9saWdodHNfcHVuY3R1YWwgPSA8SUtIUkxpZ2h0c1B1bmN0dWFsX0xpZ2h0Tm9kZT5leHRlbnNpb25zLktIUl9saWdodHNfcHVuY3R1YWw7XG4gICAgICBjb25zdCBlbnRpdHkgPSBlbnRpdGllc1tpXTtcblxuICAgICAgaWYgKGNhbWVyYUlEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fY3JlYXRlQ2FtZXJhKGdsVEZSZXNvdXJjZSwgZ2x0ZkNhbWVyYXNbY2FtZXJhSURdLCBlbnRpdHkpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzaElEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLl9jcmVhdGVSZW5kZXJlcihjb250ZXh0LCBnbHRmTm9kZSwgZW50aXR5KSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChLSFJfbGlnaHRzX3B1bmN0dWFsKSB7XG4gICAgICAgIGNvbnN0IGxpZ2h0SW5kZXggPSBLSFJfbGlnaHRzX3B1bmN0dWFsLmxpZ2h0O1xuICAgICAgICBjb25zdCBsaWdodHMgPSAoZ2x0Zi5leHRlbnNpb25zLktIUl9saWdodHNfcHVuY3R1YWwgYXMgSUtIUkxpZ2h0c1B1bmN0dWFsKS5saWdodHM7XG5cbiAgICAgICAgUGFyc2VyLnBhcnNlRW5naW5lUmVzb3VyY2UoXCJLSFJfbGlnaHRzX3B1bmN0dWFsXCIsIGxpZ2h0c1tsaWdodEluZGV4XSwgZW50aXR5LCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ2xURlJlc291cmNlLmRlZmF1bHRTY2VuZVJvb3QpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZUFuaW1hdG9yKGNvbnRleHQpO1xuICAgIH1cblxuICAgIGdsdGYuZXh0ZW5zaW9ucyAmJiBkZWxldGUgZ2x0Zi5leHRlbnNpb25zW1wiT0FTSVNfbWF0ZXJpYWxzX3JlbWFwXCJdO1xuXG4gICAgQXNzZXRQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIC50aGVuKCgpID0+IGRlZmF1bHRTY2VuZVJvb3RQcm9taXNlSW5mby5yZXNvbHZlKGdsVEZSZXNvdXJjZS5kZWZhdWx0U2NlbmVSb290KSlcbiAgICAgIC5jYXRjaChkZWZhdWx0U2NlbmVSb290UHJvbWlzZUluZm8ucmVqZWN0KTtcblxuICAgIHJldHVybiBkZWZhdWx0U2NlbmVSb290UHJvbWlzZUluZm8ucHJvbWlzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNhbWVyYShjb250ZXh0OiBHTFRGUmVzb3VyY2UsIGNhbWVyYVNjaGVtYTogSUNhbWVyYSwgZW50aXR5OiBFbnRpdHkpOiB2b2lkIHtcbiAgICBjb25zdCB7IG9ydGhvZ3JhcGhpYywgcGVyc3BlY3RpdmUsIHR5cGUgfSA9IGNhbWVyYVNjaGVtYTtcbiAgICBjb25zdCBjYW1lcmEgPSBlbnRpdHkuYWRkQ29tcG9uZW50KENhbWVyYSk7XG5cbiAgICBpZiAodHlwZSA9PT0gQ2FtZXJhVHlwZS5PUlRIT0dSQVBISUMpIHtcbiAgICAgIGNvbnN0IHsgeG1hZywgeW1hZywgemZhciwgem5lYXIgfSA9IG9ydGhvZ3JhcGhpYztcblxuICAgICAgY2FtZXJhLmlzT3J0aG9ncmFwaGljID0gdHJ1ZTtcblxuICAgICAgaWYgKHpuZWFyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FtZXJhLm5lYXJDbGlwUGxhbmUgPSB6bmVhcjtcbiAgICAgIH1cbiAgICAgIGlmICh6ZmFyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FtZXJhLmZhckNsaXBQbGFuZSA9IHpmYXI7XG4gICAgICB9XG5cbiAgICAgIGNhbWVyYS5vcnRob2dyYXBoaWNTaXplID0gTWF0aC5tYXgoeW1hZyA/PyAwLCB4bWFnID8/IDApIC8gMjtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09IENhbWVyYVR5cGUuUEVSU1BFQ1RJVkUpIHtcbiAgICAgIGNvbnN0IHsgYXNwZWN0UmF0aW8sIHlmb3YsIHpmYXIsIHpuZWFyIH0gPSBwZXJzcGVjdGl2ZTtcblxuICAgICAgaWYgKGFzcGVjdFJhdGlvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FtZXJhLmFzcGVjdFJhdGlvID0gYXNwZWN0UmF0aW87XG4gICAgICB9XG4gICAgICBpZiAoeWZvdiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNhbWVyYS5maWVsZE9mVmlldyA9ICh5Zm92ICogMTgwKSAvIE1hdGguUEk7XG4gICAgICB9XG4gICAgICBpZiAoemZhciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNhbWVyYS5mYXJDbGlwUGxhbmUgPSB6ZmFyO1xuICAgICAgfVxuICAgICAgaWYgKHpuZWFyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FtZXJhLm5lYXJDbGlwUGxhbmUgPSB6bmVhcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWNvbnRleHQuY2FtZXJhcykgY29udGV4dC5jYW1lcmFzID0gW107XG4gICAgY29udGV4dC5jYW1lcmFzLnB1c2goY2FtZXJhKTtcbiAgICAvLyBAdG9kbzogdXNlIGVuZ2luZSBjYW1lcmEgYnkgZGVmYXVsdFxuICAgIGNhbWVyYS5lbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVSZW5kZXJlcihjb250ZXh0OiBQYXJzZXJDb250ZXh0LCBnbHRmTm9kZTogSU5vZGUsIGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgeyBnbFRGUmVzb3VyY2UsIGdsdGYgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgeyBtZXNoZXM6IGdsdGZNZXNoZXMgfSA9IGdsdGY7XG5cbiAgICBjb25zdCB7IGVuZ2luZSwgbWVzaGVzLCBtYXRlcmlhbHMsIHNraW5zIH0gPSBnbFRGUmVzb3VyY2U7XG4gICAgY29uc3QgeyBtZXNoOiBtZXNoSUQsIHNraW46IHNraW5JRCB9ID0gZ2x0Zk5vZGU7XG4gICAgY29uc3QgZ2xURk1lc2ggPSBnbHRmTWVzaGVzW21lc2hJRF07XG4gICAgY29uc3QgZ2x0Zk1lc2hQcmltaXRpdmVzID0gZ2xURk1lc2gucHJpbWl0aXZlcztcbiAgICBjb25zdCBibGVuZFNoYXBlV2VpZ2h0cyA9IGdsdGZOb2RlLndlaWdodHMgfHwgZ2xURk1lc2gud2VpZ2h0cztcblxuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnbHRmTWVzaFByaW1pdGl2ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG1lc2ggPSBtZXNoZXNbbWVzaElEXVtpXTtcbiAgICAgIGxldCByZW5kZXJlcjogTWVzaFJlbmRlcmVyIHwgU2tpbm5lZE1lc2hSZW5kZXJlcjtcblxuICAgICAgaWYgKHNraW5JRCAhPT0gdW5kZWZpbmVkIHx8IGJsZW5kU2hhcGVXZWlnaHRzKSB7XG4gICAgICAgIGNvbnRleHQuaGFzU2tpbm5lZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHNraW5SZW5kZXJlciA9IGVudGl0eS5hZGRDb21wb25lbnQoU2tpbm5lZE1lc2hSZW5kZXJlcik7XG4gICAgICAgIHNraW5SZW5kZXJlci5tZXNoID0gbWVzaDtcbiAgICAgICAgaWYgKHNraW5JRCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2tpblJlbmRlcmVyLnNraW4gPSBza2luc1tza2luSURdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChibGVuZFNoYXBlV2VpZ2h0cykge1xuICAgICAgICAgIHNraW5SZW5kZXJlci5ibGVuZFNoYXBlV2VpZ2h0cyA9IG5ldyBGbG9hdDMyQXJyYXkoYmxlbmRTaGFwZVdlaWdodHMpO1xuICAgICAgICB9XG4gICAgICAgIHJlbmRlcmVyID0gc2tpblJlbmRlcmVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVuZGVyZXIgPSBlbnRpdHkuYWRkQ29tcG9uZW50KE1lc2hSZW5kZXJlcik7XG4gICAgICAgIHJlbmRlcmVyLm1lc2ggPSBtZXNoO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXRlcmlhbEluZGV4ID0gZ2x0Zk1lc2hQcmltaXRpdmVzW2ldLm1hdGVyaWFsO1xuICAgICAgY29uc3QgcmVtYXBNYXRlcmlhbHMgPSBnbHRmLmV4dGVuc2lvbnMgJiYgZ2x0Zi5leHRlbnNpb25zW1wiT0FTSVNfbWF0ZXJpYWxzX3JlbWFwXCJdO1xuICAgICAgaWYgKHJlbWFwTWF0ZXJpYWxzICYmIHJlbWFwTWF0ZXJpYWxzW21hdGVyaWFsSW5kZXhdKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgcmVtYXBNYXRlcmlhbHNbbWF0ZXJpYWxJbmRleF0udGhlbigobXRsKSA9PiB7XG4gICAgICAgICAgICByZW5kZXJlci5zZXRNYXRlcmlhbChtdGwpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXRlcmlhbCA9IG1hdGVyaWFscz8uW21hdGVyaWFsSW5kZXhdIHx8IFNjZW5lUGFyc2VyLl9nZXREZWZhdWx0TWF0ZXJpYWwoZW5naW5lKTtcbiAgICAgICAgcmVuZGVyZXIuc2V0TWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGV4dGVuc2lvbnMgPSB7fSB9ID0gZ2x0Zk1lc2hQcmltaXRpdmVzW2ldO1xuICAgICAgY29uc3QgeyBLSFJfbWF0ZXJpYWxzX3ZhcmlhbnRzIH0gPSBleHRlbnNpb25zO1xuICAgICAgaWYgKEtIUl9tYXRlcmlhbHNfdmFyaWFudHMpIHtcbiAgICAgICAgUGFyc2VyLnBhcnNlRW5naW5lUmVzb3VyY2UoXCJLSFJfbWF0ZXJpYWxzX3ZhcmlhbnRzXCIsIEtIUl9tYXRlcmlhbHNfdmFyaWFudHMsIHJlbmRlcmVyLCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUFuaW1hdG9yKGNvbnRleHQ6IFBhcnNlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRleHQuaGFzU2tpbm5lZCAmJiAhY29udGV4dC5nbFRGUmVzb3VyY2UuYW5pbWF0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGVmYXVsdFNjZW5lUm9vdCwgYW5pbWF0aW9ucyB9ID0gY29udGV4dC5nbFRGUmVzb3VyY2U7XG4gICAgY29uc3QgYW5pbWF0b3IgPSBkZWZhdWx0U2NlbmVSb290LmFkZENvbXBvbmVudChBbmltYXRvcik7XG4gICAgY29uc3QgYW5pbWF0b3JDb250cm9sbGVyID0gbmV3IEFuaW1hdG9yQ29udHJvbGxlcigpO1xuICAgIGNvbnN0IGxheWVyID0gbmV3IEFuaW1hdG9yQ29udHJvbGxlckxheWVyKFwibGF5ZXJcIik7XG4gICAgY29uc3QgYW5pbWF0b3JTdGF0ZU1hY2hpbmUgPSBuZXcgQW5pbWF0b3JTdGF0ZU1hY2hpbmUoKTtcbiAgICBhbmltYXRvckNvbnRyb2xsZXIuYWRkTGF5ZXIobGF5ZXIpO1xuICAgIGFuaW1hdG9yLmFuaW1hdG9yQ29udHJvbGxlciA9IGFuaW1hdG9yQ29udHJvbGxlcjtcbiAgICBsYXllci5zdGF0ZU1hY2hpbmUgPSBhbmltYXRvclN0YXRlTWFjaGluZTtcbiAgICBpZiAoYW5pbWF0aW9ucykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbmltYXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFuaW1hdGlvbkNsaXAgPSBhbmltYXRpb25zW2ldO1xuICAgICAgICBjb25zdCBuYW1lID0gYW5pbWF0aW9uQ2xpcC5uYW1lO1xuICAgICAgICBjb25zdCB1bmlxdWVOYW1lID0gYW5pbWF0b3JTdGF0ZU1hY2hpbmUubWFrZVVuaXF1ZVN0YXRlTmFtZShuYW1lKTtcbiAgICAgICAgaWYgKHVuaXF1ZU5hbWUgIT09IG5hbWUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYEFuaW1hdG9yU3RhdGUgbmFtZSBpcyBleGlzdGVkLCBuYW1lOiAke25hbWV9IHJlc2V0IHRvICR7dW5pcXVlTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbmltYXRvclN0YXRlID0gYW5pbWF0b3JTdGF0ZU1hY2hpbmUuYWRkU3RhdGUodW5pcXVlTmFtZSk7XG4gICAgICAgIGFuaW1hdG9yU3RhdGUuY2xpcCA9IGFuaW1hdGlvbkNsaXA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBFbnRpdHksIFNraW4gfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBNYXRyaXggfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1tYXRoXCI7XG5pbXBvcnQgeyBHTFRGVXRpbCB9IGZyb20gXCIuLi9HTFRGVXRpbFwiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4vUGFyc2VyXCI7XG5pbXBvcnQgeyBQYXJzZXJDb250ZXh0IH0gZnJvbSBcIi4vUGFyc2VyQ29udGV4dFwiO1xuXG5leHBvcnQgY2xhc3MgU2tpblBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHBhcnNlKGNvbnRleHQ6IFBhcnNlckNvbnRleHQpOiB2b2lkIHtcbiAgICBjb25zdCB7IGdsVEZSZXNvdXJjZSwgZ2x0ZiwgYnVmZmVycyB9ID0gY29udGV4dDtcbiAgICBjb25zdCB7IGVudGl0aWVzIH0gPSBnbFRGUmVzb3VyY2U7XG4gICAgY29uc3QgZ2x0ZlNraW5zID0gZ2x0Zi5za2lucztcblxuICAgIGlmICghZ2x0ZlNraW5zKSByZXR1cm47XG5cbiAgICBjb25zdCBjb3VudCA9IGdsdGZTa2lucy5sZW5ndGg7XG4gICAgY29uc3Qgc2tpbnMgPSBuZXcgQXJyYXk8U2tpbj4oY291bnQpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICBjb25zdCB7IGludmVyc2VCaW5kTWF0cmljZXMsIHNrZWxldG9uLCBqb2ludHMsIG5hbWUgPSBgU0tJTl8ke2l9YCB9ID0gZ2x0ZlNraW5zW2ldO1xuICAgICAgY29uc3Qgam9pbnRDb3VudCA9IGpvaW50cy5sZW5ndGg7XG5cbiAgICAgIGNvbnN0IHNraW4gPSBuZXcgU2tpbihuYW1lKTtcbiAgICAgIHNraW4uaW52ZXJzZUJpbmRNYXRyaWNlcy5sZW5ndGggPSBqb2ludENvdW50O1xuXG4gICAgICAvLyBwYXJzZSBJQk1cbiAgICAgIGNvbnN0IGFjY2Vzc29yID0gZ2x0Zi5hY2Nlc3NvcnNbaW52ZXJzZUJpbmRNYXRyaWNlc107XG4gICAgICBjb25zdCBidWZmZXIgPSBHTFRGVXRpbC5nZXRBY2Nlc3NvckJ1ZmZlcihjb250ZXh0LCBnbHRmLCBhY2Nlc3NvcikuZGF0YTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgam9pbnRDb3VudDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGludmVyc2VCaW5kTWF0cml4ID0gbmV3IE1hdHJpeCgpO1xuICAgICAgICBpbnZlcnNlQmluZE1hdHJpeC5jb3B5RnJvbUFycmF5KGJ1ZmZlciwgaSAqIDE2KTtcbiAgICAgICAgc2tpbi5pbnZlcnNlQmluZE1hdHJpY2VzW2ldID0gaW52ZXJzZUJpbmRNYXRyaXg7XG4gICAgICB9XG5cbiAgICAgIC8vIGdldCBqb2ludHNcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgam9pbnRDb3VudDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGpvaW50SW5kZXggPSBqb2ludHNbaV07XG4gICAgICAgIGNvbnN0IGpvaW50TmFtZSA9IGVudGl0aWVzW2pvaW50SW5kZXhdLm5hbWU7XG4gICAgICAgIHNraW4uam9pbnRzW2ldID0gam9pbnROYW1lO1xuICAgICAgICAvLyBAdG9kbyBUZW1wb3Jhcnkgc29sdXRpb24sIGJ1dCBpdCBjYW4gYWxsZXZpYXRlIHRoZSBjdXJyZW50IEJVRywgYW5kIHRoZSBza2lubmluZyBkYXRhIG1lY2hhbmlzbSBvZiBTa2lubmVkTWVzaFJlbmRlcmVyIHdpbGwgYmUgY29tcGxldGVseSByZWZhY3RvcmVkIGluIHRoZSBmdXR1cmVcbiAgICAgICAgZm9yIChsZXQgaiA9IGVudGl0aWVzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgaWYgKGpvaW50SW5kZXggIT09IGogJiYgZW50aXRpZXNbal0ubmFtZSA9PT0gam9pbnROYW1lKSB7XG4gICAgICAgICAgICBlbnRpdGllc1tqXS5uYW1lID0gYCR7am9pbnROYW1lfV8ke2p9YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZ2V0IHNrZWxldG9uXG4gICAgICBpZiAoc2tlbGV0b24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBza2luLnNrZWxldG9uID0gZW50aXRpZXNbc2tlbGV0b25dLm5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByb290Qm9uZSA9IHRoaXMuX2ZpbmRTa2VsZXRvblJvb3RCb25lKGpvaW50cywgZW50aXRpZXMpO1xuICAgICAgICBpZiAocm9vdEJvbmUpIHtcbiAgICAgICAgICBza2luLnNrZWxldG9uID0gcm9vdEJvbmUubmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBcIkZhaWxlZCB0byBmaW5kIHNrZWxldG9uIHJvb3QgYm9uZS5cIjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBza2luc1tpXSA9IHNraW47XG4gICAgfVxuXG4gICAgZ2xURlJlc291cmNlLnNraW5zID0gc2tpbnM7XG4gIH1cblxuICBwcml2YXRlIF9maW5kU2tlbGV0b25Sb290Qm9uZShqb2ludHM6IG51bWJlcltdLCBlbnRpdGllczogRW50aXR5W10pOiBFbnRpdHkge1xuICAgIGNvbnN0IHBhdGhzID0gPFJlY29yZDxudW1iZXIsIEVudGl0eVtdPj57fTtcbiAgICBmb3IgKGNvbnN0IGluZGV4IG9mIGpvaW50cykge1xuICAgICAgY29uc3QgcGF0aCA9IG5ldyBBcnJheTxFbnRpdHk+KCk7XG4gICAgICBsZXQgZW50aXR5ID0gZW50aXRpZXNbaW5kZXhdO1xuICAgICAgd2hpbGUgKGVudGl0eSkge1xuICAgICAgICBwYXRoLnVuc2hpZnQoZW50aXR5KTtcbiAgICAgICAgZW50aXR5ID0gZW50aXR5LnBhcmVudDtcbiAgICAgIH1cbiAgICAgIHBhdGhzW2luZGV4XSA9IHBhdGg7XG4gICAgfVxuXG4gICAgbGV0IHJvb3ROb2RlID0gPEVudGl0eT5udWxsO1xuICAgIGZvciAobGV0IGkgPSAwOyA7IGkrKykge1xuICAgICAgbGV0IHBhdGggPSBwYXRoc1tqb2ludHNbMF1dO1xuICAgICAgaWYgKGkgPj0gcGF0aC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRpdHkgPSBwYXRoW2ldO1xuICAgICAgZm9yIChsZXQgaiA9IDEsIG0gPSBqb2ludHMubGVuZ3RoOyBqIDwgbTsgaisrKSB7XG4gICAgICAgIHBhdGggPSBwYXRoc1tqb2ludHNbal1dO1xuICAgICAgICBpZiAoaSA+PSBwYXRoLmxlbmd0aCB8fCBlbnRpdHkgIT09IHBhdGhbaV0pIHtcbiAgICAgICAgICByZXR1cm4gcm9vdE5vZGU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcm9vdE5vZGUgPSBlbnRpdHk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBBc3NldFByb21pc2UsIEFzc2V0VHlwZSwgVGV4dHVyZTJELCBUZXh0dXJlRmlsdGVyTW9kZSwgVGV4dHVyZVdyYXBNb2RlIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgR0xURlV0aWwgfSBmcm9tIFwiLi4vR0xURlV0aWxcIjtcbmltcG9ydCB7IElTYW1wbGVyLCBUZXh0dXJlTWFnRmlsdGVyLCBUZXh0dXJlTWluRmlsdGVyLCBUZXh0dXJlV3JhcE1vZGUgYXMgR0xURlRleHR1cmVXcmFwTW9kZSB9IGZyb20gXCIuLi9TY2hlbWFcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuL1BhcnNlclwiO1xuaW1wb3J0IHsgUGFyc2VyQ29udGV4dCB9IGZyb20gXCIuL1BhcnNlckNvbnRleHRcIjtcblxuZXhwb3J0IGNsYXNzIFRleHR1cmVQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfd3JhcE1hcCA9IHtcbiAgICBbR0xURlRleHR1cmVXcmFwTW9kZS5DTEFNUF9UT19FREdFXTogVGV4dHVyZVdyYXBNb2RlLkNsYW1wLFxuICAgIFtHTFRGVGV4dHVyZVdyYXBNb2RlLk1JUlJPUkVEX1JFUEVBVF06IFRleHR1cmVXcmFwTW9kZS5NaXJyb3IsXG4gICAgW0dMVEZUZXh0dXJlV3JhcE1vZGUuUkVQRUFUXTogVGV4dHVyZVdyYXBNb2RlLlJlcGVhdFxuICB9O1xuXG4gIHBhcnNlKGNvbnRleHQ6IFBhcnNlckNvbnRleHQpOiBBc3NldFByb21pc2U8VGV4dHVyZTJEW10+IHtcbiAgICBjb25zdCB7IGdsVEZSZXNvdXJjZSwgZ2x0ZiwgYnVmZmVycyB9ID0gY29udGV4dDtcbiAgICBjb25zdCB7IGVuZ2luZSwgdXJsIH0gPSBnbFRGUmVzb3VyY2U7XG5cbiAgICBpZiAoZ2x0Zi50ZXh0dXJlcykge1xuICAgICAgY29uc3QgdGV4dHVyZXNQcm9taXNlSW5mbyA9IGNvbnRleHQudGV4dHVyZXNQcm9taXNlSW5mbztcbiAgICAgIEFzc2V0UHJvbWlzZS5hbGwoXG4gICAgICAgIGdsdGYudGV4dHVyZXMubWFwKCh7IHNhbXBsZXIsIHNvdXJjZSA9IDAsIG5hbWU6IHRleHR1cmVOYW1lIH0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyB1cmksIGJ1ZmZlclZpZXc6IGJ1ZmZlclZpZXdJbmRleCwgbWltZVR5cGUsIG5hbWU6IGltYWdlTmFtZSB9ID0gZ2x0Zi5pbWFnZXNbc291cmNlXTtcbiAgICAgICAgICBpZiAodXJpKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBzdXBwb3J0IGt0eCBleHRlbnNpb24gaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9nbFRGL2Jsb2IvbWFpbi9leHRlbnNpb25zLzIuMC9LaHJvbm9zL0tIUl90ZXh0dXJlX2Jhc2lzdS9SRUFETUUubWRcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdXJpLmxhc3RJbmRleE9mKFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IGV4dCA9IHVyaS5zdWJzdHJpbmcoaW5kZXggKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBleHQuc3RhcnRzV2l0aChcImt0eFwiKSA/IEFzc2V0VHlwZS5LVFggOiBBc3NldFR5cGUuVGV4dHVyZTJEO1xuICAgICAgICAgICAgcmV0dXJuIGVuZ2luZS5yZXNvdXJjZU1hbmFnZXJcbiAgICAgICAgICAgICAgLmxvYWQ8VGV4dHVyZTJEPih7XG4gICAgICAgICAgICAgICAgdXJsOiBHTFRGVXRpbC5wYXJzZVJlbGF0aXZlVXJsKHVybCwgdXJpKSxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC50aGVuKCh0ZXh0dXJlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgIHRleHR1cmUubmFtZSA9IHRleHR1cmVOYW1lIHx8IGltYWdlTmFtZSB8fCBgdGV4dHVyZV8ke2luZGV4fWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzYW1wbGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlU2FtcGxlcih0ZXh0dXJlLCBnbHRmLnNhbXBsZXJzW3NhbXBsZXJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmU7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBidWZmZXJWaWV3ID0gZ2x0Zi5idWZmZXJWaWV3c1tidWZmZXJWaWV3SW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgYnVmZmVyVmlld0RhdGEgPSBHTFRGVXRpbC5nZXRCdWZmZXJWaWV3RGF0YShidWZmZXJWaWV3LCBidWZmZXJzKTtcbiAgICAgICAgICAgIHJldHVybiBHTFRGVXRpbC5sb2FkSW1hZ2VCdWZmZXIoYnVmZmVyVmlld0RhdGEsIG1pbWVUeXBlKS50aGVuKChpbWFnZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB0ZXh0dXJlID0gbmV3IFRleHR1cmUyRChlbmdpbmUsIGltYWdlLndpZHRoLCBpbWFnZS5oZWlnaHQpO1xuICAgICAgICAgICAgICB0ZXh0dXJlLnNldEltYWdlU291cmNlKGltYWdlKTtcbiAgICAgICAgICAgICAgdGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMoKTtcbiAgICAgICAgICAgICAgdGV4dHVyZS5uYW1lID0gdGV4dHVyZU5hbWUgfHwgaW1hZ2VOYW1lIHx8IGB0ZXh0dXJlXyR7aW5kZXh9YDtcbiAgICAgICAgICAgICAgaWYgKHNhbXBsZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlU2FtcGxlcih0ZXh0dXJlLCBnbHRmLnNhbXBsZXJzW3NhbXBsZXJdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgICAgLnRoZW4oKHRleHR1cmVzOiBUZXh0dXJlMkRbXSkgPT4ge1xuICAgICAgICAgIGdsVEZSZXNvdXJjZS50ZXh0dXJlcyA9IHRleHR1cmVzO1xuICAgICAgICAgIHRleHR1cmVzUHJvbWlzZUluZm8ucmVzb2x2ZSh0ZXh0dXJlcyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCh0ZXh0dXJlc1Byb21pc2VJbmZvLnJlamVjdCk7XG4gICAgICByZXR1cm4gdGV4dHVyZXNQcm9taXNlSW5mby5wcm9taXNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlU2FtcGxlcih0ZXh0dXJlOiBUZXh0dXJlMkQsIHNhbXBsZXI6IElTYW1wbGVyKTogdm9pZCB7XG4gICAgY29uc3QgeyBtYWdGaWx0ZXIsIG1pbkZpbHRlciwgd3JhcFMsIHdyYXBUIH0gPSBzYW1wbGVyO1xuXG4gICAgaWYgKG1hZ0ZpbHRlciB8fCBtaW5GaWx0ZXIpIHtcbiAgICAgIGlmIChtYWdGaWx0ZXIgPT09IFRleHR1cmVNYWdGaWx0ZXIuTkVBUkVTVCkge1xuICAgICAgICB0ZXh0dXJlLmZpbHRlck1vZGUgPSBUZXh0dXJlRmlsdGVyTW9kZS5Qb2ludDtcbiAgICAgIH0gZWxzZSBpZiAobWluRmlsdGVyIDw9IFRleHR1cmVNaW5GaWx0ZXIuTElORUFSX01JUE1BUF9ORUFSRVNUKSB7XG4gICAgICAgIHRleHR1cmUuZmlsdGVyTW9kZSA9IFRleHR1cmVGaWx0ZXJNb2RlLkJpbGluZWFyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGV4dHVyZS5maWx0ZXJNb2RlID0gVGV4dHVyZUZpbHRlck1vZGUuVHJpbGluZWFyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3cmFwUykge1xuICAgICAgdGV4dHVyZS53cmFwTW9kZVUgPSBUZXh0dXJlUGFyc2VyLl93cmFwTWFwW3dyYXBTXTtcbiAgICB9XG5cbiAgICBpZiAod3JhcFQpIHtcbiAgICAgIHRleHR1cmUud3JhcE1vZGVWID0gVGV4dHVyZVBhcnNlci5fd3JhcE1hcFt3cmFwVF07XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBMb2dnZXIgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi9QYXJzZXJcIjtcbmltcG9ydCB7IFBhcnNlckNvbnRleHQgfSBmcm9tIFwiLi9QYXJzZXJDb250ZXh0XCI7XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3IgZXh0ZW5kcyBQYXJzZXIge1xuICBwYXJzZShjb250ZXh0OiBQYXJzZXJDb250ZXh0KTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgYXNzZXQ6IHsgdmVyc2lvbiB9LFxuICAgICAgZXh0ZW5zaW9uc1VzZWQsXG4gICAgICBleHRlbnNpb25zUmVxdWlyZWRcbiAgICB9ID0gY29udGV4dC5nbHRmO1xuXG4gICAgY29uc3QgZ2x0ZlZlcnNpb24gPSBOdW1iZXIodmVyc2lvbik7XG4gICAgaWYgKCEoZ2x0ZlZlcnNpb24gPj0gMiAmJiBnbHRmVmVyc2lvbiA8IDMpKSB7XG4gICAgICB0aHJvdyBcIk9ubHkgc3VwcG9ydCBnbHRmIDIueC5cIjtcbiAgICB9XG5cbiAgICBpZiAoZXh0ZW5zaW9uc1VzZWQpIHtcbiAgICAgIExvZ2dlci5pbmZvKFwiZXh0ZW5zaW9uc1VzZWQ6IFwiLCBleHRlbnNpb25zVXNlZCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4dGVuc2lvbnNVc2VkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghUGFyc2VyLmhhc0V4dGVuc2lvblBhcnNlcihleHRlbnNpb25zVXNlZFtpXSkpIHtcbiAgICAgICAgICBMb2dnZXIud2FybihgRXh0ZW5zaW9uICR7ZXh0ZW5zaW9uc1VzZWRbaV19IGlzIG5vdCBpbXBsZW1lbnRlZCwgeW91IGNhbiBjdXN0b21pemUgdGhpcyBleHRlbnNpb24gaW4gZ2x0Zi5gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChleHRlbnNpb25zUmVxdWlyZWQpIHtcbiAgICAgIExvZ2dlci5pbmZvKGBleHRlbnNpb25zUmVxdWlyZWQ6ICR7ZXh0ZW5zaW9uc1JlcXVpcmVkfWApO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHRlbnNpb25zUmVxdWlyZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uUmVxdWlyZWQgPSBleHRlbnNpb25zUmVxdWlyZWRbaV07XG5cbiAgICAgICAgaWYgKCFQYXJzZXIuaGFzRXh0ZW5zaW9uUGFyc2VyKGV4dGVuc2lvblJlcXVpcmVkKSkge1xuICAgICAgICAgIExvZ2dlci5lcnJvcihgR0xURiBwYXJzZXIgaGFzIG5vdCBzdXBwb3J0ZWQgcmVxdWlyZWQgZXh0ZW5zaW9uICR7ZXh0ZW5zaW9uUmVxdWlyZWR9LmApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFBhcnNlci5pbml0aWFsaXplKGV4dGVuc2lvblJlcXVpcmVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgQXNzZXRQcm9taXNlIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgR0xURlJlc291cmNlIH0gZnJvbSBcIi4vR0xURlJlc291cmNlXCI7XG5pbXBvcnQgeyBBbmltYXRpb25QYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXIvQW5pbWF0aW9uUGFyc2VyXCI7XG5pbXBvcnQgeyBCdWZmZXJQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXIvQnVmZmVyUGFyc2VyXCI7XG5pbXBvcnQgeyBFbnRpdHlQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXIvRW50aXR5UGFyc2VyXCI7XG5pbXBvcnQgeyBNYXRlcmlhbFBhcnNlciB9IGZyb20gXCIuL3BhcnNlci9NYXRlcmlhbFBhcnNlclwiO1xuaW1wb3J0IHsgTWVzaFBhcnNlciB9IGZyb20gXCIuL3BhcnNlci9NZXNoUGFyc2VyXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXIvUGFyc2VyXCI7XG5pbXBvcnQgeyBQYXJzZXJDb250ZXh0IH0gZnJvbSBcIi4vcGFyc2VyL1BhcnNlckNvbnRleHRcIjtcbmltcG9ydCB7IFNjZW5lUGFyc2VyIH0gZnJvbSBcIi4vcGFyc2VyL1NjZW5lUGFyc2VyXCI7XG5pbXBvcnQgeyBTa2luUGFyc2VyIH0gZnJvbSBcIi4vcGFyc2VyL1NraW5QYXJzZXJcIjtcbmltcG9ydCB7IFRleHR1cmVQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXIvVGV4dHVyZVBhcnNlclwiO1xuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSBcIi4vcGFyc2VyL1ZhbGlkYXRvclwiO1xuXG5leHBvcnQgY2xhc3MgR0xURlBhcnNlciB7XG4gIHN0YXRpYyBkZWZhdWx0UGlwZWxpbmUgPSBuZXcgR0xURlBhcnNlcihbXG4gICAgQnVmZmVyUGFyc2VyLFxuICAgIFZhbGlkYXRvcixcbiAgICBUZXh0dXJlUGFyc2VyLFxuICAgIE1hdGVyaWFsUGFyc2VyLFxuICAgIE1lc2hQYXJzZXIsXG4gICAgRW50aXR5UGFyc2VyLFxuICAgIFNraW5QYXJzZXIsXG4gICAgQW5pbWF0aW9uUGFyc2VyLFxuICAgIFNjZW5lUGFyc2VyXG4gIF0pO1xuXG4gIHByaXZhdGUgX3BpcGVzOiBQYXJzZXJbXSA9IFtdO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocGlwZXM6IChuZXcgKCkgPT4gUGFyc2VyKVtdKSB7XG4gICAgcGlwZXMuZm9yRWFjaCgocGlwZTogbmV3ICgpID0+IFBhcnNlciwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy5fcGlwZXNbaW5kZXhdID0gbmV3IHBpcGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBhcnNlKGNvbnRleHQ6IFBhcnNlckNvbnRleHQpOiBBc3NldFByb21pc2U8R0xURlJlc291cmNlPiB7XG4gICAgY29uc3QgZ2xURlJlc291cmNlID0gY29udGV4dC5nbFRGUmVzb3VyY2U7XG4gICAgbGV0IGxhc3RQaXBlO1xuXG4gICAgcmV0dXJuIG5ldyBBc3NldFByb21pc2U8R0xURlJlc291cmNlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLl9waXBlcy5mb3JFYWNoKChwYXJzZXI6IFBhcnNlcikgPT4ge1xuICAgICAgICBpZiAobGFzdFBpcGUpIHtcbiAgICAgICAgICBsYXN0UGlwZSA9IGxhc3RQaXBlLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShjb250ZXh0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAobGFzdFBpcGUuY2FuY2VsKSB7XG4gICAgICAgICAgICBjb250ZXh0LmNoYWluUHJvbWlzZXMucHVzaChsYXN0UGlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxhc3RQaXBlID0gcGFyc2VyLnBhcnNlKGNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGxhc3RQaXBlKSB7XG4gICAgICAgIGxhc3RQaXBlXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShnbFRGUmVzb3VyY2UpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKHJlamVjdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFuaW1hdGlvbkNsaXAsXG4gIENhbWVyYSxcbiAgRW5naW5lLFxuICBFbmdpbmVPYmplY3QsXG4gIEVudGl0eSxcbiAgTGlnaHQsXG4gIE1hdGVyaWFsLFxuICBNb2RlbE1lc2gsXG4gIFJlbmRlcmVyLFxuICBTa2luLFxuICBUZXh0dXJlMkRcbn0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuXG4vKipcbiAqIFByb2R1Y3QgYWZ0ZXIgR0xURiBwYXJzZXIsIHVzdWFsbHksIGBkZWZhdWx0U2NlbmVSb290YCBpcyBvbmx5IG5lZWRlZCB0byB1c2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBHTFRGUmVzb3VyY2UgZXh0ZW5kcyBFbmdpbmVPYmplY3Qge1xuICAvKiogR0xURiBmaWxlIHVybC4gKi9cbiAgdXJsOiBzdHJpbmc7XG4gIC8qKiBUZXh0dXJlMkQgYWZ0ZXIgVGV4dHVyZVBhcnNlci4gKi9cbiAgdGV4dHVyZXM/OiBUZXh0dXJlMkRbXTtcbiAgLyoqIE1hdGVyaWFsIGFmdGVyIE1hdGVyaWFsUGFyc2VyLiAqL1xuICBtYXRlcmlhbHM/OiBNYXRlcmlhbFtdO1xuICAvKiogTW9kZWxNZXNoIGFmdGVyIE1lc2hQYXJzZXIuICovXG4gIG1lc2hlcz86IE1vZGVsTWVzaFtdW107XG4gIC8qKiBTa2luIGFmdGVyIFNraW5QYXJzZXIuICovXG4gIHNraW5zPzogU2tpbltdO1xuICAvKiogQW5pbWF0aW9uQ2xpcCBhZnRlciBBbmltYXRpb25QYXJzZXIuICovXG4gIGFuaW1hdGlvbnM/OiBBbmltYXRpb25DbGlwW107XG4gIC8qKiBFbnRpdHkgYWZ0ZXIgRW50aXR5UGFyc2VyLiAqL1xuICBlbnRpdGllczogRW50aXR5W107XG4gIC8qKiBDYW1lcmEgYWZ0ZXIgU2NlbmVQYXJzZXIuICovXG4gIGNhbWVyYXM/OiBDYW1lcmFbXTtcbiAgLyoqIEV4cG9ydCBsaWdodHMgaW4gZXh0ZW5zaW9uIEtIUl9saWdodHNfcHVuY3R1YWwgKi9cbiAgbGlnaHRzPzogTGlnaHRbXTtcbiAgLyoqIFJvb3RFbnRpdGllcyBhZnRlciBTY2VuZVBhcnNlci4gKi9cbiAgc2NlbmVSb290czogRW50aXR5W107XG4gIC8qKiBSb290RW50aXR5IGFmdGVyIFNjZW5lUGFyc2VyLiAqL1xuICBkZWZhdWx0U2NlbmVSb290OiBFbnRpdHk7XG4gIC8qKiBSZW5kZXJlciBjYW4gcmVwbGFjZSBtYXRlcmlhbCBieSBgcmVuZGVyZXIuc2V0TWF0ZXJpYWxgIGlmIGdsdGYgdXNlIHBsdWdpbi1pbiBLSFJfbWF0ZXJpYWxzX3ZhcmlhbnRzLiAqL1xuICB2YXJpYW50cz86IHsgcmVuZGVyZXI6IFJlbmRlcmVyOyBtYXRlcmlhbDogTWF0ZXJpYWw7IHZhcmlhbnRzOiBzdHJpbmdbXSB9W107XG5cbiAgY29uc3RydWN0b3IoZW5naW5lOiBFbmdpbmUsIHVybDogc3RyaW5nKSB7XG4gICAgc3VwZXIoZW5naW5lKTtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLmRlZmF1bHRTY2VuZVJvb3QuZGVzdHJveSgpO1xuXG4gICAgdGhpcy50ZXh0dXJlcyA9IG51bGw7XG4gICAgdGhpcy5tYXRlcmlhbHMgPSBudWxsO1xuICAgIHRoaXMubWVzaGVzID0gbnVsbDtcbiAgICB0aGlzLnNraW5zID0gbnVsbDtcbiAgICB0aGlzLmFuaW1hdGlvbnMgPSBudWxsO1xuICAgIHRoaXMuZW50aXRpZXMgPSBudWxsO1xuICAgIHRoaXMuY2FtZXJhcyA9IG51bGw7XG4gICAgdGhpcy5saWdodHMgPSBudWxsO1xuICAgIHRoaXMuc2NlbmVSb290cyA9IG51bGw7XG4gICAgdGhpcy52YXJpYW50cyA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCB7IEFzc2V0UHJvbWlzZSwgQXNzZXRUeXBlLCBMb2FkZXIsIExvYWRJdGVtLCByZXNvdXJjZUxvYWRlciwgUmVzb3VyY2VNYW5hZ2VyIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgR0xURlBhcnNlciB9IGZyb20gXCIuL2dsdGYvR0xURlBhcnNlclwiO1xuaW1wb3J0IHsgR0xURlJlc291cmNlIH0gZnJvbSBcIi4vZ2x0Zi9HTFRGUmVzb3VyY2VcIjtcbmltcG9ydCB7IFBhcnNlckNvbnRleHQgfSBmcm9tIFwiLi9nbHRmL3BhcnNlci9QYXJzZXJDb250ZXh0XCI7XG5cbkByZXNvdXJjZUxvYWRlcihBc3NldFR5cGUuUHJlZmFiLCBbXCJnbHRmXCIsIFwiZ2xiXCJdKVxuZXhwb3J0IGNsYXNzIEdMVEZMb2FkZXIgZXh0ZW5kcyBMb2FkZXI8R0xURlJlc291cmNlPiB7XG4gIGxvYWQoaXRlbTogTG9hZEl0ZW0sIHJlc291cmNlTWFuYWdlcjogUmVzb3VyY2VNYW5hZ2VyKTogUmVjb3JkPHN0cmluZywgQXNzZXRQcm9taXNlPGFueT4+IHtcbiAgICBjb25zdCB1cmwgPSBpdGVtLnVybDtcbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IFBhcnNlckNvbnRleHQodXJsKTtcbiAgICBjb25zdCBnbFRGUmVzb3VyY2UgPSBuZXcgR0xURlJlc291cmNlKHJlc291cmNlTWFuYWdlci5lbmdpbmUsIHVybCk7XG4gICAgY29uc3QgbWFzdGVyUHJvbWlzZUluZm8gPSBjb250ZXh0Lm1hc3RlclByb21pc2VJbmZvO1xuXG4gICAgY29udGV4dC5nbFRGUmVzb3VyY2UgPSBnbFRGUmVzb3VyY2U7XG4gICAgY29udGV4dC5rZWVwTWVzaERhdGEgPSBpdGVtLnBhcmFtcz8ua2VlcE1lc2hEYXRhID8/IGZhbHNlO1xuXG4gICAgbWFzdGVyUHJvbWlzZUluZm8ub25DYW5jZWwoKCkgPT4ge1xuICAgICAgY29uc3QgeyBjaGFpblByb21pc2VzIH0gPSBjb250ZXh0O1xuICAgICAgZm9yIChjb25zdCBwcm9taXNlIG9mIGNoYWluUHJvbWlzZXMpIHtcbiAgICAgICAgcHJvbWlzZS5jYW5jZWwoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIEdMVEZQYXJzZXIuZGVmYXVsdFBpcGVsaW5lXG4gICAgICAucGFyc2UoY29udGV4dClcbiAgICAgIC50aGVuKG1hc3RlclByb21pc2VJbmZvLnJlc29sdmUpXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgbWFzdGVyUHJvbWlzZUluZm8ucmVqZWN0KGBFcnJvciBsb2FkaW5nIGdsVEYgbW9kZWwgZnJvbSAke3VybH0gLmApO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gY29udGV4dC5wcm9taXNlTWFwO1xuICB9XG59XG5cbi8qKlxuICogR2xURiBsb2FkZXIgcGFyYW1zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdMVEZQYXJhbXMge1xuICAvKipcbiAgICogQGJldGEgTm93IG9ubHkgY29udGFpbnMgdmVydGV4IGluZm9ybWF0aW9uLCBuZWVkIHRvIGltcHJvdmUuXG4gICAqIEtlZXAgcmF3IG1lc2ggZGF0YSBmb3IgZ2xURiBwYXJzZXIsIGRlZmF1bHQgaXMgZmFsc2UuXG4gICAqL1xuICBrZWVwTWVzaERhdGE6IGJvb2xlYW47XG59XG4iLCJpbXBvcnQge1xuICBBc3NldFByb21pc2UsXG4gIEFzc2V0VHlwZSxcbiAgTG9hZGVyLFxuICBMb2FkSXRlbSxcbiAgcmVzb3VyY2VMb2FkZXIsXG4gIFJlc291cmNlTWFuYWdlcixcbiAgVGV4dHVyZUN1YmUsXG4gIFRleHR1cmVDdWJlRmFjZVxufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBDb2xvciwgVmVjdG9yMyB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLW1hdGhcIjtcblxuY29uc3QgUEkgPSBNYXRoLlBJO1xuXG5pbnRlcmZhY2UgSUhEUkhlYWRlciB7XG4gIC8qKlxuICAgKiBUaGUgd2lkdGggb2YgdGhlIHRleHR1cmUgaW4gcGl4ZWxzLlxuICAgKi9cbiAgd2lkdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIHRleHR1cmUgaW4gcGl4ZWxzLlxuICAgKi9cbiAgaGVpZ2h0OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgZGF0YSBpbiB0aGUgYmluYXJ5IGZpbGUuXG4gICAqL1xuICBkYXRhUG9zaXRpb246IG51bWJlcjtcbn1cblxuQHJlc291cmNlTG9hZGVyKEFzc2V0VHlwZS5IRFIsIFtcImhkclwiXSlcbmNsYXNzIEhEUkxvYWRlciBleHRlbmRzIExvYWRlcjxUZXh0dXJlQ3ViZT4ge1xuICBwcml2YXRlIHN0YXRpYyBfcmlnaHRCb3R0b21CYWNrID0gbmV3IFZlY3RvcjMoMS4wLCAtMS4wLCAtMS4wKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3JpZ2h0Qm90dG9tRnJvbnQgPSBuZXcgVmVjdG9yMygxLjAsIC0xLjAsIDEuMCk7XG4gIHByaXZhdGUgc3RhdGljIF9yaWdodFVwQmFjayA9IG5ldyBWZWN0b3IzKDEuMCwgMS4wLCAtMS4wKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3JpZ2h0VXBGcm9udCA9IG5ldyBWZWN0b3IzKDEuMCwgMS4wLCAxLjApO1xuICBwcml2YXRlIHN0YXRpYyBfbGVmdEJvdHRvbUJhY2sgPSBuZXcgVmVjdG9yMygtMS4wLCAtMS4wLCAtMS4wKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xlZnRCb3R0b21Gcm9udCA9IG5ldyBWZWN0b3IzKC0xLjAsIC0xLjAsIDEuMCk7XG4gIHByaXZhdGUgc3RhdGljIF9sZWZ0VXBCYWNrID0gbmV3IFZlY3RvcjMoLTEuMCwgMS4wLCAtMS4wKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xlZnRVcEZyb250ID0gbmV3IFZlY3RvcjMoLTEuMCwgMS4wLCAxLjApO1xuXG4gIHByaXZhdGUgc3RhdGljIF9mYWNlUmlnaHQgPSBbXG4gICAgSERSTG9hZGVyLl9yaWdodEJvdHRvbUJhY2ssXG4gICAgSERSTG9hZGVyLl9yaWdodEJvdHRvbUZyb250LFxuICAgIEhEUkxvYWRlci5fcmlnaHRVcEJhY2ssXG4gICAgSERSTG9hZGVyLl9yaWdodFVwRnJvbnRcbiAgXTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZhY2VMZWZ0ID0gW1xuICAgIEhEUkxvYWRlci5fbGVmdEJvdHRvbUZyb250LFxuICAgIEhEUkxvYWRlci5fbGVmdEJvdHRvbUJhY2ssXG4gICAgSERSTG9hZGVyLl9sZWZ0VXBGcm9udCxcbiAgICBIRFJMb2FkZXIuX2xlZnRVcEJhY2tcbiAgXTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZhY2VVcCA9IFtcbiAgICBIRFJMb2FkZXIuX2xlZnRCb3R0b21Gcm9udCxcbiAgICBIRFJMb2FkZXIuX3JpZ2h0Qm90dG9tRnJvbnQsXG4gICAgSERSTG9hZGVyLl9sZWZ0Qm90dG9tQmFjayxcbiAgICBIRFJMb2FkZXIuX3JpZ2h0Qm90dG9tQmFja1xuICBdO1xuICBwcml2YXRlIHN0YXRpYyBfZmFjZUJvdHRvbSA9IFtcbiAgICBIRFJMb2FkZXIuX2xlZnRVcEJhY2ssXG4gICAgSERSTG9hZGVyLl9yaWdodFVwQmFjayxcbiAgICBIRFJMb2FkZXIuX2xlZnRVcEZyb250LFxuICAgIEhEUkxvYWRlci5fcmlnaHRVcEZyb250XG4gIF07XG4gIHByaXZhdGUgc3RhdGljIF9mYWNlRnJvbnQgPSBbXG4gICAgSERSTG9hZGVyLl9sZWZ0Qm90dG9tQmFjayxcbiAgICBIRFJMb2FkZXIuX3JpZ2h0Qm90dG9tQmFjayxcbiAgICBIRFJMb2FkZXIuX2xlZnRVcEJhY2ssXG4gICAgSERSTG9hZGVyLl9yaWdodFVwQmFja1xuICBdO1xuICBwcml2YXRlIHN0YXRpYyBfZmFjZUJhY2sgPSBbXG4gICAgSERSTG9hZGVyLl9yaWdodEJvdHRvbUZyb250LFxuICAgIEhEUkxvYWRlci5fbGVmdEJvdHRvbUZyb250LFxuICAgIEhEUkxvYWRlci5fcmlnaHRVcEZyb250LFxuICAgIEhEUkxvYWRlci5fbGVmdFVwRnJvbnRcbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyBfdGVtcFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVtcDJWZWN0b3IzID0gbmV3IFZlY3RvcjMoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbXAzVmVjdG9yMyA9IG5ldyBWZWN0b3IzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZW1wNFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVtcDVWZWN0b3IzID0gbmV3IFZlY3RvcjMoKTtcblxuICBwcml2YXRlIHN0YXRpYyBfY29udmVydFRvQ3ViZW1hcChcbiAgICBwaXhlbHM6IFVpbnQ4QXJyYXksXG4gICAgaW5wdXRXaWR0aDogbnVtYmVyLFxuICAgIGlucHV0SGVpZ2h0OiBudW1iZXIsXG4gICAgc2l6ZTogbnVtYmVyXG4gICk6IFVpbnQ4Q2xhbXBlZEFycmF5W10ge1xuICAgIGlmICghcGl4ZWxzKSB7XG4gICAgICB0aHJvdyBcIkNvbnZlcnRQYW5vcmFtYVRvQ3ViZW1hcDogaW5wdXQgY2Fubm90IGJlIG51bGxcIjtcbiAgICB9XG5cbiAgICBpZiAocGl4ZWxzLmxlbmd0aCAhPSBpbnB1dFdpZHRoICogaW5wdXRIZWlnaHQgKiA0KSB7XG4gICAgICB0aHJvdyBcIkNvbnZlcnRQYW5vcmFtYVRvQ3ViZW1hcDogaW5wdXQgc2l6ZSBpcyB3cm9uZ1wiO1xuICAgIH1cblxuICAgIGNvbnN0IHRleHR1cmVSaWdodCA9IHRoaXMuX2NyZWF0ZUN1YmVtYXBEYXRhKHNpemUsIHRoaXMuX2ZhY2VSaWdodCwgcGl4ZWxzLCBpbnB1dFdpZHRoLCBpbnB1dEhlaWdodCk7XG4gICAgY29uc3QgdGV4dHVyZUxlZnQgPSB0aGlzLl9jcmVhdGVDdWJlbWFwRGF0YShzaXplLCB0aGlzLl9mYWNlTGVmdCwgcGl4ZWxzLCBpbnB1dFdpZHRoLCBpbnB1dEhlaWdodCk7XG4gICAgY29uc3QgdGV4dHVyZVVwID0gdGhpcy5fY3JlYXRlQ3ViZW1hcERhdGEoc2l6ZSwgdGhpcy5fZmFjZVVwLCBwaXhlbHMsIGlucHV0V2lkdGgsIGlucHV0SGVpZ2h0KTtcbiAgICBjb25zdCB0ZXh0dXJlRG93biA9IHRoaXMuX2NyZWF0ZUN1YmVtYXBEYXRhKHNpemUsIHRoaXMuX2ZhY2VCb3R0b20sIHBpeGVscywgaW5wdXRXaWR0aCwgaW5wdXRIZWlnaHQpO1xuICAgIGNvbnN0IHRleHR1cmVGcm9udCA9IHRoaXMuX2NyZWF0ZUN1YmVtYXBEYXRhKHNpemUsIHRoaXMuX2ZhY2VGcm9udCwgcGl4ZWxzLCBpbnB1dFdpZHRoLCBpbnB1dEhlaWdodCk7XG4gICAgY29uc3QgdGV4dHVyZUJhY2sgPSB0aGlzLl9jcmVhdGVDdWJlbWFwRGF0YShzaXplLCB0aGlzLl9mYWNlQmFjaywgcGl4ZWxzLCBpbnB1dFdpZHRoLCBpbnB1dEhlaWdodCk7XG5cbiAgICByZXR1cm4gW3RleHR1cmVSaWdodCwgdGV4dHVyZUxlZnQsIHRleHR1cmVVcCwgdGV4dHVyZURvd24sIHRleHR1cmVGcm9udCwgdGV4dHVyZUJhY2tdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2NyZWF0ZUN1YmVtYXBEYXRhKFxuICAgIHRleFNpemU6IG51bWJlcixcbiAgICBmYWNlRGF0YTogVmVjdG9yM1tdLFxuICAgIHBpeGVsczogVWludDhBcnJheSxcbiAgICBpbnB1dFdpZHRoOiBudW1iZXIsXG4gICAgaW5wdXRIZWlnaHQ6IG51bWJlclxuICApOiBVaW50OENsYW1wZWRBcnJheSB7XG4gICAgY29uc3QgdGV4dHVyZUFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHRleFNpemUgKiB0ZXhTaXplICogNCk7XG4gICAgY29uc3Qgcm90RFgxID0gdGhpcy5fdGVtcFZlY3RvcjNcbiAgICAgIC5zZXQoMCwgMCwgMClcbiAgICAgIC5hZGQoZmFjZURhdGFbMV0pXG4gICAgICAuc3VidHJhY3QoZmFjZURhdGFbMF0pXG4gICAgICAuc2NhbGUoMSAvIHRleFNpemUpO1xuICAgIGNvbnN0IHJvdERYMiA9IHRoaXMuX3RlbXAyVmVjdG9yM1xuICAgICAgLnNldCgwLCAwLCAwKVxuICAgICAgLmFkZChmYWNlRGF0YVszXSlcbiAgICAgIC5zdWJ0cmFjdChmYWNlRGF0YVsyXSlcbiAgICAgIC5zY2FsZSgxIC8gdGV4U2l6ZSk7XG5cbiAgICBjb25zdCBkeSA9IDEgLyB0ZXhTaXplO1xuICAgIGxldCBmeSA9IDA7XG5cbiAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHRleFNpemU7IHkrKykge1xuICAgICAgbGV0IHh2MSA9IHRoaXMuX3RlbXAzVmVjdG9yMy5zZXQoMCwgMCwgMCkuYWRkKGZhY2VEYXRhWzBdKTtcbiAgICAgIGxldCB4djIgPSB0aGlzLl90ZW1wNFZlY3RvcjMuc2V0KDAsIDAsIDApLmFkZChmYWNlRGF0YVsyXSk7XG5cbiAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgdGV4U2l6ZTsgeCsrKSB7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLl90ZW1wNVZlY3RvcjMuc2V0KDAsIDAsIDApLmFkZCh4djIpLnN1YnRyYWN0KHh2MSkuc2NhbGUoZnkpLmFkZCh4djEpO1xuICAgICAgICB2Lm5vcm1hbGl6ZSgpO1xuXG4gICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5fY2FsY1Byb2plY3Rpb25TcGhlcmljYWwodiwgcGl4ZWxzLCBpbnB1dFdpZHRoLCBpbnB1dEhlaWdodCk7XG4gICAgICAgIHRoaXMuX1JHQkVUb0xpbmVhcihjb2xvcik7XG4gICAgICAgIHRoaXMuX2xpbmVhclRvUkdCTShjb2xvciwgNSk7XG5cbiAgICAgICAgLy8gNCBjaGFubmVscyBwZXIgcGl4ZWxzXG4gICAgICAgIGNvbnN0IGluZGV4ID0geSAqIHRleFNpemUgKiA0ICsgeCAqIDQ7XG4gICAgICAgIHRleHR1cmVBcnJheVtpbmRleF0gPSBjb2xvci5yO1xuICAgICAgICB0ZXh0dXJlQXJyYXlbaW5kZXggKyAxXSA9IGNvbG9yLmc7XG4gICAgICAgIHRleHR1cmVBcnJheVtpbmRleCArIDJdID0gY29sb3IuYjtcbiAgICAgICAgdGV4dHVyZUFycmF5W2luZGV4ICsgM10gPSBjb2xvci5hO1xuXG4gICAgICAgIHh2MS5hZGQocm90RFgxKTtcbiAgICAgICAgeHYyLmFkZChyb3REWDIpO1xuICAgICAgfVxuXG4gICAgICBmeSArPSBkeTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGV4dHVyZUFycmF5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2NhbGNQcm9qZWN0aW9uU3BoZXJpY2FsKFxuICAgIHZEaXI6IFZlY3RvcjMsXG4gICAgcGl4ZWxzOiBVaW50OEFycmF5LFxuICAgIGlucHV0V2lkdGg6IG51bWJlcixcbiAgICBpbnB1dEhlaWdodDogbnVtYmVyXG4gICk6IENvbG9yIHtcbiAgICBsZXQgdGhldGEgPSBNYXRoLmF0YW4yKHZEaXIueiwgLXZEaXIueCk7XG4gICAgbGV0IHBoaSA9IE1hdGguYWNvcyh2RGlyLnkpO1xuXG4gICAgd2hpbGUgKHRoZXRhIDwgLVBJKSB7XG4gICAgICB0aGV0YSArPSAyICogUEk7XG4gICAgfVxuICAgIHdoaWxlICh0aGV0YSA+IFBJKSB7XG4gICAgICB0aGV0YSAtPSAyICogUEk7XG4gICAgfVxuXG4gICAgbGV0IGR4ID0gdGhldGEgLyBQSTtcbiAgICBsZXQgZHkgPSBwaGkgLyBQSTtcblxuICAgIC8vIHJlY2VudGVyLlxuICAgIGR4ID0gZHggKiAwLjUgKyAwLjU7XG5cbiAgICBsZXQgcHggPSBNYXRoLnJvdW5kKGR4ICogaW5wdXRXaWR0aCk7XG4gICAgaWYgKHB4IDwgMCkge1xuICAgICAgcHggPSAwO1xuICAgIH0gZWxzZSBpZiAocHggPj0gaW5wdXRXaWR0aCkge1xuICAgICAgcHggPSBpbnB1dFdpZHRoIC0gMTtcbiAgICB9XG5cbiAgICBsZXQgcHkgPSBNYXRoLnJvdW5kKGR5ICogaW5wdXRIZWlnaHQpO1xuICAgIGlmIChweSA8IDApIHtcbiAgICAgIHB5ID0gMDtcbiAgICB9IGVsc2UgaWYgKHB5ID49IGlucHV0SGVpZ2h0KSB7XG4gICAgICBweSA9IGlucHV0SGVpZ2h0IC0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dFkgPSBpbnB1dEhlaWdodCAtIHB5IC0gMTtcbiAgICBjb25zdCBpbmRleCA9IGlucHV0WSAqIGlucHV0V2lkdGggKiA0ICsgcHggKiA0O1xuICAgIGNvbnN0IHIgPSBwaXhlbHNbaW5kZXhdO1xuICAgIGNvbnN0IGcgPSBwaXhlbHNbaW5kZXggKyAxXTtcbiAgICBjb25zdCBiID0gcGl4ZWxzW2luZGV4ICsgMl07XG4gICAgY29uc3QgYSA9IHBpeGVsc1tpbmRleCArIDNdO1xuXG4gICAgcmV0dXJuIG5ldyBDb2xvcihyLCBnLCBiLCBhKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9yZWFkU3RyaW5nTGluZSh1aW50OGFycmF5OiBVaW50OEFycmF5LCBzdGFydEluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGxldCBsaW5lID0gXCJcIjtcbiAgICBsZXQgY2hhcmFjdGVyID0gXCJcIjtcblxuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgdWludDhhcnJheS5sZW5ndGggLSBzdGFydEluZGV4OyBpKyspIHtcbiAgICAgIGNoYXJhY3RlciA9IFN0cmluZy5mcm9tQ2hhckNvZGUodWludDhhcnJheVtpXSk7XG5cbiAgICAgIGlmIChjaGFyYWN0ZXIgPT0gXCJcXG5cIikge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgbGluZSArPSBjaGFyYWN0ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpbmU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBfcGFyc2VIZWFkZXIodWludDhhcnJheTogVWludDhBcnJheSk6IElIRFJIZWFkZXIge1xuICAgIGxldCBoZWlnaHQ6IG51bWJlciA9IDA7XG4gICAgbGV0IHdpZHRoOiBudW1iZXIgPSAwO1xuXG4gICAgbGV0IGxpbmUgPSB0aGlzLl9yZWFkU3RyaW5nTGluZSh1aW50OGFycmF5LCAwKTtcbiAgICBpZiAobGluZVswXSAhPSBcIiNcIiB8fCBsaW5lWzFdICE9IFwiP1wiKSB7XG4gICAgICB0aHJvdyBcIkJhZCBIRFIgRm9ybWF0LlwiO1xuICAgIH1cblxuICAgIGxldCBlbmRPZkhlYWRlciA9IGZhbHNlO1xuICAgIGxldCBmaW5kRm9ybWF0ID0gZmFsc2U7XG4gICAgbGV0IGxpbmVJbmRleDogbnVtYmVyID0gMDtcblxuICAgIGRvIHtcbiAgICAgIGxpbmVJbmRleCArPSBsaW5lLmxlbmd0aCArIDE7XG4gICAgICBsaW5lID0gdGhpcy5fcmVhZFN0cmluZ0xpbmUodWludDhhcnJheSwgbGluZUluZGV4KTtcblxuICAgICAgaWYgKGxpbmUgPT0gXCJGT1JNQVQ9MzItYml0X3JsZV9yZ2JlXCIpIHtcbiAgICAgICAgZmluZEZvcm1hdCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGxpbmUubGVuZ3RoID09IDApIHtcbiAgICAgICAgZW5kT2ZIZWFkZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gd2hpbGUgKCFlbmRPZkhlYWRlcik7XG5cbiAgICBpZiAoIWZpbmRGb3JtYXQpIHtcbiAgICAgIHRocm93IFwiSERSIEJhZCBoZWFkZXIgZm9ybWF0LCB1bnN1cHBvcnRlZCBGT1JNQVRcIjtcbiAgICB9XG5cbiAgICBsaW5lSW5kZXggKz0gbGluZS5sZW5ndGggKyAxO1xuICAgIGxpbmUgPSB0aGlzLl9yZWFkU3RyaW5nTGluZSh1aW50OGFycmF5LCBsaW5lSW5kZXgpO1xuXG4gICAgY29uc3Qgc2l6ZVJlZ2V4cCA9IC9eXFwtWSAoLiopIFxcK1ggKC4qKSQvZztcbiAgICBjb25zdCBtYXRjaCA9IHNpemVSZWdleHAuZXhlYyhsaW5lKTtcblxuICAgIC8vIFRPRE8uIFN1cHBvcnQgK1kgYW5kIC1YIGlmIG5lZWRlZC5cbiAgICBpZiAoIW1hdGNoIHx8IG1hdGNoLmxlbmd0aCA8IDMpIHtcbiAgICAgIHRocm93IFwiSERSIEJhZCBoZWFkZXIgZm9ybWF0LCBubyBzaXplXCI7XG4gICAgfVxuICAgIHdpZHRoID0gcGFyc2VJbnQobWF0Y2hbMl0pO1xuICAgIGhlaWdodCA9IHBhcnNlSW50KG1hdGNoWzFdKTtcblxuICAgIGlmICh3aWR0aCA8IDggfHwgd2lkdGggPiAweDdmZmYpIHtcbiAgICAgIHRocm93IFwiSERSIEJhZCBoZWFkZXIgZm9ybWF0LCB1bnN1cHBvcnRlZCBzaXplXCI7XG4gICAgfVxuXG4gICAgbGluZUluZGV4ICs9IGxpbmUubGVuZ3RoICsgMTtcblxuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgIGRhdGFQb3NpdGlvbjogbGluZUluZGV4XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIF9yZWFkUGl4ZWxzKGJ1ZmZlcjogVWludDhBcnJheSwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBzY2FuTGluZVdpZHRoID0gd2lkdGg7XG4gICAgY29uc3QgYnl0ZUxlbmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoO1xuXG4gICAgY29uc3QgZGF0YVJHQkEgPSBuZXcgVWludDhBcnJheSg0ICogd2lkdGggKiBoZWlnaHQpO1xuXG4gICAgbGV0IG9mZnNldCA9IDAsXG4gICAgICBwb3MgPSAwO1xuICAgIGNvbnN0IHB0ckVuZCA9IDQgKiBzY2FuTGluZVdpZHRoO1xuICAgIGNvbnN0IHJnYmVTdGFydCA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgIGNvbnN0IHNjYW5MaW5lQnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkocHRyRW5kKTtcbiAgICBsZXQgbnVtU2NhbkxpbmVzID0gaGVpZ2h0OyAvLyByZWFkIGluIGVhY2ggc3VjY2Vzc2l2ZSBzY2FuTGluZVxuXG4gICAgd2hpbGUgKG51bVNjYW5MaW5lcyA+IDAgJiYgcG9zIDwgYnl0ZUxlbmd0aCkge1xuICAgICAgcmdiZVN0YXJ0WzBdID0gYnVmZmVyW3BvcysrXTtcbiAgICAgIHJnYmVTdGFydFsxXSA9IGJ1ZmZlcltwb3MrK107XG4gICAgICByZ2JlU3RhcnRbMl0gPSBidWZmZXJbcG9zKytdO1xuICAgICAgcmdiZVN0YXJ0WzNdID0gYnVmZmVyW3BvcysrXTtcblxuICAgICAgaWYgKDIgIT0gcmdiZVN0YXJ0WzBdIHx8IDIgIT0gcmdiZVN0YXJ0WzFdIHx8ICgocmdiZVN0YXJ0WzJdIDw8IDgpIHwgcmdiZVN0YXJ0WzNdKSAhPSBzY2FuTGluZVdpZHRoKSB7XG4gICAgICAgIHRocm93IFwiSERSIEJhZCBoZWFkZXIgZm9ybWF0LCB3cm9uZyBzY2FuIGxpbmUgd2lkdGhcIjtcbiAgICAgIH1cblxuICAgICAgLy8gcmVhZCBlYWNoIG9mIHRoZSBmb3VyIGNoYW5uZWxzIGZvciB0aGUgc2NhbmxpbmUgaW50byB0aGUgYnVmZmVyXG4gICAgICAvLyBmaXJzdCByZWQsIHRoZW4gZ3JlZW4sIHRoZW4gYmx1ZSwgdGhlbiBleHBvbmVudFxuXG4gICAgICBsZXQgcHRyID0gMCxcbiAgICAgICAgY291bnQ7XG5cbiAgICAgIHdoaWxlIChwdHIgPCBwdHJFbmQgJiYgcG9zIDwgYnl0ZUxlbmd0aCkge1xuICAgICAgICBjb3VudCA9IGJ1ZmZlcltwb3MrK107XG4gICAgICAgIGNvbnN0IGlzRW5jb2RlZFJ1biA9IGNvdW50ID4gMTI4O1xuICAgICAgICBpZiAoaXNFbmNvZGVkUnVuKSBjb3VudCAtPSAxMjg7XG5cbiAgICAgICAgaWYgKDAgPT09IGNvdW50IHx8IHB0ciArIGNvdW50ID4gcHRyRW5kKSB7XG4gICAgICAgICAgdGhyb3cgXCJIRFIgQmFkIEZvcm1hdCwgYmFkIHNjYW5saW5lIGRhdGEgKHJ1bilcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0VuY29kZWRSdW4pIHtcbiAgICAgICAgICAvLyBhIChlbmNvZGVkKSBydW4gb2YgdGhlIHNhbWUgdmFsdWVcbiAgICAgICAgICBjb25zdCBieXRlVmFsdWUgPSBidWZmZXJbcG9zKytdO1xuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBzY2FuTGluZUJ1ZmZlcltwdHIrK10gPSBieXRlVmFsdWU7XG4gICAgICAgICAgfSAvL3B0ciArPSBjb3VudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBhIGxpdGVyYWwtcnVuXG4gICAgICAgICAgc2NhbkxpbmVCdWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShwb3MsIHBvcyArIGNvdW50KSwgcHRyKTtcbiAgICAgICAgICBwdHIgKz0gY291bnQ7XG4gICAgICAgICAgcG9zICs9IGNvdW50O1xuICAgICAgICB9XG4gICAgICB9IC8vIG5vdyBjb252ZXJ0IGRhdGEgZnJvbSBidWZmZXIgaW50byByZ2JhXG4gICAgICAvLyBmaXJzdCByZWQsIHRoZW4gZ3JlZW4sIHRoZW4gYmx1ZSwgdGhlbiBleHBvbmVudCAoYWxwaGEpXG5cbiAgICAgIGNvbnN0IGwgPSBzY2FuTGluZVdpZHRoOyAvL3NjYW5MaW5lX2J1ZmZlci5ieXRlTGVuZ3RoO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgICBsZXQgb2ZmID0gMDtcbiAgICAgICAgZGF0YVJHQkFbb2Zmc2V0XSA9IHNjYW5MaW5lQnVmZmVyW2kgKyBvZmZdO1xuICAgICAgICBvZmYgKz0gc2NhbkxpbmVXaWR0aDtcblxuICAgICAgICBkYXRhUkdCQVtvZmZzZXQgKyAxXSA9IHNjYW5MaW5lQnVmZmVyW2kgKyBvZmZdO1xuICAgICAgICBvZmYgKz0gc2NhbkxpbmVXaWR0aDtcblxuICAgICAgICBkYXRhUkdCQVtvZmZzZXQgKyAyXSA9IHNjYW5MaW5lQnVmZmVyW2kgKyBvZmZdO1xuICAgICAgICBvZmYgKz0gc2NhbkxpbmVXaWR0aDtcblxuICAgICAgICBkYXRhUkdCQVtvZmZzZXQgKyAzXSA9IHNjYW5MaW5lQnVmZmVyW2kgKyBvZmZdO1xuICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgIH1cblxuICAgICAgbnVtU2NhbkxpbmVzLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGFSR0JBO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX1JHQkVUb0xpbmVhcihjb2xvcjogQ29sb3IpOiB2b2lkIHtcbiAgICBjb25zdCBzY2FsZUZhY3RvciA9IE1hdGgucG93KDIsIGNvbG9yLmEgLSAxMjgpIC8gMjU1O1xuICAgIGNvbG9yLnIgKj0gc2NhbGVGYWN0b3I7XG4gICAgY29sb3IuZyAqPSBzY2FsZUZhY3RvcjtcbiAgICBjb2xvci5iICo9IHNjYWxlRmFjdG9yO1xuICAgIGNvbG9yLmEgPSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2xpbmVhclRvUkdCTShjb2xvcjogQ29sb3IsIG1heFJhbmdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBtYXhSR0IgPSBNYXRoLm1heChjb2xvci5yLCBNYXRoLm1heChjb2xvci5nLCBjb2xvci5iKSk7XG4gICAgbGV0IE0gPSBNYXRoLm1pbihtYXhSR0IgLyBtYXhSYW5nZSwgMSk7XG4gICAgTSA9IE1hdGguY2VpbChNICogMjU1KTtcbiAgICBjb25zdCBzY2FsZUZhY3RvciA9IDY1MDI1IC8gKE0gKiBtYXhSYW5nZSk7IC8vIDI1NSAqICgyNTUgLyAoTSAqIG1heFJhbmdlKSApXG5cbiAgICBjb2xvci5yICo9IHNjYWxlRmFjdG9yO1xuICAgIGNvbG9yLmcgKj0gc2NhbGVGYWN0b3I7XG4gICAgY29sb3IuYiAqPSBzY2FsZUZhY3RvcjtcbiAgICBjb2xvci5hICo9IE07XG4gIH1cblxuICBsb2FkKGl0ZW06IExvYWRJdGVtLCByZXNvdXJjZU1hbmFnZXI6IFJlc291cmNlTWFuYWdlcik6IEFzc2V0UHJvbWlzZTxUZXh0dXJlQ3ViZT4ge1xuICAgIHJldHVybiBuZXcgQXNzZXRQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGVuZ2luZSA9IHJlc291cmNlTWFuYWdlci5lbmdpbmU7XG5cbiAgICAgIHRoaXMucmVxdWVzdDxBcnJheUJ1ZmZlcj4oaXRlbS51cmwsIHsgdHlwZTogXCJhcnJheWJ1ZmZlclwiIH0pXG4gICAgICAgIC50aGVuKChidWZmZXIpID0+IHtcbiAgICAgICAgICBjb25zdCB1aW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQsIGRhdGFQb3NpdGlvbiB9ID0gSERSTG9hZGVyLl9wYXJzZUhlYWRlcih1aW50OEFycmF5KTtcbiAgICAgICAgICBjb25zdCBwaXhlbHMgPSBIRFJMb2FkZXIuX3JlYWRQaXhlbHModWludDhBcnJheS5zdWJhcnJheShkYXRhUG9zaXRpb24pLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICBjb25zdCBjdWJlU2l6ZSA9IGhlaWdodCA+PiAxO1xuXG4gICAgICAgICAgY29uc3QgY3ViZU1hcERhdGEgPSBIRFJMb2FkZXIuX2NvbnZlcnRUb0N1YmVtYXAocGl4ZWxzLCB3aWR0aCwgaGVpZ2h0LCBjdWJlU2l6ZSk7XG4gICAgICAgICAgY29uc3QgdGV4dHVyZSA9IG5ldyBUZXh0dXJlQ3ViZShlbmdpbmUsIGN1YmVTaXplKTtcblxuICAgICAgICAgIGZvciAobGV0IGZhY2VJbmRleCA9IDA7IGZhY2VJbmRleCA8IDY7IGZhY2VJbmRleCsrKSB7XG4gICAgICAgICAgICB0ZXh0dXJlLnNldFBpeGVsQnVmZmVyKFRleHR1cmVDdWJlRmFjZS5Qb3NpdGl2ZVggKyBmYWNlSW5kZXgsIGN1YmVNYXBEYXRhW2ZhY2VJbmRleF0sIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcygpO1xuICAgICAgICAgIHJlc29sdmUodGV4dHVyZSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgIH0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyByZXNvdXJjZUxvYWRlciwgTG9hZGVyLCBBc3NldFByb21pc2UsIEFzc2V0VHlwZSwgTG9hZEl0ZW0gfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5cbkByZXNvdXJjZUxvYWRlcihBc3NldFR5cGUuSlNPTiwgW1wianNvblwiXSwgZmFsc2UpXG5jbGFzcyBKU09OTG9hZGVyIGV4dGVuZHMgTG9hZGVyPHN0cmluZz4ge1xuICBsb2FkKGl0ZW06IExvYWRJdGVtKTogQXNzZXRQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoaXRlbS51cmwsIHtcbiAgICAgIC4uLml0ZW0sXG4gICAgICB0eXBlOiBcImpzb25cIlxuICAgIH0pO1xuICB9XG59XG4iLCIvKipcbiAqXG4gKiBwb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vQmFieWxvbkpTL0JhYnlsb24uanMvYmxvYi9tYXN0ZXIvc3JjL1Rvb2xzL2JhYnlsb24ua2hyb25vc1RleHR1cmVDb250YWluZXIudHNcbiAqL1xuXG5pbXBvcnQgeyBUZXh0dXJlRm9ybWF0IH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgR0xDb21wcmVzc2VkVGV4dHVyZUludGVybmFsRm9ybWF0IH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtcmhpLXdlYmdsXCI7XG5pbXBvcnQgeyBLVFhDb250YWluZXIsIE1pcG1hcCB9IGZyb20gXCIuL3R5cGVcIjtcblxuY29uc3QgSEVBREVSX0xFTiA9IDEyICsgMTMgKiA0OyAvLyBpZGVudGlmaWVyICsgaGVhZGVyIGVsZW1lbnRzIChub3QgaW5jbHVkaW5nIGtleSB2YWx1ZSBtZXRhLWRhdGEgcGFpcnMpXG5cbi8vIGxvYWQgdHlwZXNcbmNvbnN0IENPTVBSRVNTRURfMkQgPSAwOyAvLyB1c2VzIGEgZ2wuY29tcHJlc3NlZFRleEltYWdlMkQoKVxuY29uc3QgQ09NUFJFU1NFRF8zRCA9IDE7IC8vIHVzZXMgYSBnbC5jb21wcmVzc2VkVGV4SW1hZ2UzRCgpXG5jb25zdCBURVhfMkQgPSAyOyAvLyB1c2VzIGEgZ2wudGV4SW1hZ2UyRCgpXG5jb25zdCBURVhfM0QgPSAzOyAvLyB1c2VzIGEgZ2wudGV4SW1hZ2UzRCgpXG5cbmZ1bmN0aW9uIGdldE1pcG1hcHMoa3R4Q29udGFpbmVyOiBLVFhDb250YWluZXIsIGxvYWRNaXBtYXBzOiBib29sZWFuKTogTWlwbWFwW10ge1xuICBjb25zdCBtaXBtYXBzID0gW107XG5cbiAgLy8gaW5pdGlhbGl6ZSB3aWR0aCAmIGhlaWdodCBmb3IgbGV2ZWwgMVxuICB2YXIgZGF0YU9mZnNldCA9IEhFQURFUl9MRU4gKyBrdHhDb250YWluZXIuYnl0ZXNPZktleVZhbHVlRGF0YTtcbiAgdmFyIHdpZHRoID0ga3R4Q29udGFpbmVyLnBpeGVsV2lkdGg7XG4gIHZhciBoZWlnaHQgPSBrdHhDb250YWluZXIucGl4ZWxIZWlnaHQ7XG4gIHZhciBtaXBtYXBDb3VudCA9IGxvYWRNaXBtYXBzID8ga3R4Q29udGFpbmVyLm51bWJlck9mTWlwbWFwTGV2ZWxzIDogMTtcblxuICBmb3IgKHZhciBsZXZlbCA9IDA7IGxldmVsIDwgbWlwbWFwQ291bnQ7IGxldmVsKyspIHtcbiAgICB2YXIgaW1hZ2VTaXplID0gbmV3IEludDMyQXJyYXkoa3R4Q29udGFpbmVyLmJ1ZmZlciwgZGF0YU9mZnNldCwgMSlbMF07IC8vIHNpemUgcGVyIGZhY2UsIHNpbmNlIG5vdCBzdXBwb3J0aW5nIGFycmF5IGN1YmVtYXBzXG4gICAgZGF0YU9mZnNldCArPSA0OyAvLyBzaXplIG9mIHRoZSBpbWFnZSArIDQgZm9yIHRoZSBpbWFnZVNpemUgZmllbGRcblxuICAgIGZvciAodmFyIGZhY2UgPSAwOyBmYWNlIDwga3R4Q29udGFpbmVyLm51bWJlck9mRmFjZXM7IGZhY2UrKykge1xuICAgICAgdmFyIGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGt0eENvbnRhaW5lci5idWZmZXIsIGRhdGFPZmZzZXQsIGltYWdlU2l6ZSk7XG5cbiAgICAgIG1pcG1hcHMucHVzaCh7IGRhdGE6IGJ5dGVBcnJheSwgd2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodCB9KTtcblxuICAgICAgZGF0YU9mZnNldCArPSBpbWFnZVNpemU7XG4gICAgICBkYXRhT2Zmc2V0ICs9IDMgLSAoKGltYWdlU2l6ZSArIDMpICUgNCk7IC8vIGFkZCBwYWRkaW5nIGZvciBvZGQgc2l6ZWQgaW1hZ2VcbiAgICB9XG4gICAgd2lkdGggPSBNYXRoLm1heCgxLjAsIHdpZHRoICogMC41KTtcbiAgICBoZWlnaHQgPSBNYXRoLm1heCgxLjAsIGhlaWdodCAqIDAuNSk7XG4gIH1cblxuICByZXR1cm4gbWlwbWFwcztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGRhdGEgc3RhcnRzIHdpdGggYSBLVFggZmlsZSBpZGVudGlmaWVyLlxuICogQHBhcmFtIGRhdGEgdGhlIGRhdGEgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGRhdGEgaXMgYSBLVFggZmlsZSBvciBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZChkYXRhOiBBcnJheUJ1ZmZlcik6IGJvb2xlYW4ge1xuICBpZiAoZGF0YS5ieXRlTGVuZ3RoID49IDEyKSB7XG4gICAgLy8gJ8KrJywgJ0snLCAnVCcsICdYJywgJyAnLCAnMScsICcxJywgJ8K7JywgJ1xccicsICdcXG4nLCAnXFx4MUEnLCAnXFxuJ1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSBuZXcgVWludDhBcnJheShkYXRhLCAwLCAxMik7XG4gICAgaWYgKFxuICAgICAgaWRlbnRpZmllclswXSA9PT0gMHhhYiAmJlxuICAgICAgaWRlbnRpZmllclsxXSA9PT0gMHg0YiAmJlxuICAgICAgaWRlbnRpZmllclsyXSA9PT0gMHg1NCAmJlxuICAgICAgaWRlbnRpZmllclszXSA9PT0gMHg1OCAmJlxuICAgICAgaWRlbnRpZmllcls0XSA9PT0gMHgyMCAmJlxuICAgICAgaWRlbnRpZmllcls1XSA9PT0gMHgzMSAmJlxuICAgICAgaWRlbnRpZmllcls2XSA9PT0gMHgzMSAmJlxuICAgICAgaWRlbnRpZmllcls3XSA9PT0gMHhiYiAmJlxuICAgICAgaWRlbnRpZmllcls4XSA9PT0gMHgwZCAmJlxuICAgICAgaWRlbnRpZmllcls5XSA9PT0gMHgwYSAmJlxuICAgICAgaWRlbnRpZmllclsxMF0gPT09IDB4MWEgJiZcbiAgICAgIGlkZW50aWZpZXJbMTFdID09PSAweDBhXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldEVuZ2luZUZvcm1hdChpbnRlcm5hbEZvcm1hdDogR0xpbnQpOiBUZXh0dXJlRm9ybWF0IHtcbiAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkge1xuICAgIC8vIGNhc2UgR0xDb21wcmVzc2VkVGV4dHVyZUludGVybmFsRm9ybWF0LlJHQkFfUzNUQ19EWFQzX0VYVDpcbiAgICAvLyBjYXNlIEdMQ29tcHJlc3NlZFRleHR1cmVJbnRlcm5hbEZvcm1hdC5SR0JBX1MzVENfRFhUNV9FWFQ6XG4gICAgLy8gYnJlYWs7XG4gICAgY2FzZSBHTENvbXByZXNzZWRUZXh0dXJlSW50ZXJuYWxGb3JtYXQuUkdCX1MzVENfRFhUMV9FWFQ6XG4gICAgICByZXR1cm4gVGV4dHVyZUZvcm1hdC5EWFQxO1xuICAgIGNhc2UgR0xDb21wcmVzc2VkVGV4dHVyZUludGVybmFsRm9ybWF0LlJHQkFfUzNUQ19EWFQ1X0VYVDpcbiAgICAgIHJldHVybiBUZXh0dXJlRm9ybWF0LkRYVDU7XG4gICAgY2FzZSBHTENvbXByZXNzZWRUZXh0dXJlSW50ZXJuYWxGb3JtYXQuUkdCX0VUQzFfV0VCR0w6XG4gICAgICByZXR1cm4gVGV4dHVyZUZvcm1hdC5FVEMxX1JHQjtcbiAgICBjYXNlIEdMQ29tcHJlc3NlZFRleHR1cmVJbnRlcm5hbEZvcm1hdC5SR0I4X0VUQzI6XG4gICAgICByZXR1cm4gVGV4dHVyZUZvcm1hdC5FVEMyX1JHQjtcbiAgICBjYXNlIEdMQ29tcHJlc3NlZFRleHR1cmVJbnRlcm5hbEZvcm1hdC5SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjpcbiAgICAgIHJldHVybiBUZXh0dXJlRm9ybWF0LkVUQzJfUkdCQTU7XG4gICAgY2FzZSBHTENvbXByZXNzZWRUZXh0dXJlSW50ZXJuYWxGb3JtYXQuUkdCQThfRVRDMl9FQUM6XG4gICAgICByZXR1cm4gVGV4dHVyZUZvcm1hdC5FVEMyX1JHQkE4O1xuICAgIGNhc2UgR0xDb21wcmVzc2VkVGV4dHVyZUludGVybmFsRm9ybWF0LlJHQl9QVlJUQ18yQlBQVjFfSU1HOlxuICAgICAgcmV0dXJuIFRleHR1cmVGb3JtYXQuUFZSVENfUkdCMjtcbiAgICBjYXNlIEdMQ29tcHJlc3NlZFRleHR1cmVJbnRlcm5hbEZvcm1hdC5SR0JBX1BWUlRDXzJCUFBWMV9JTUc6XG4gICAgICByZXR1cm4gVGV4dHVyZUZvcm1hdC5QVlJUQ19SR0JBMjtcbiAgICBjYXNlIEdMQ29tcHJlc3NlZFRleHR1cmVJbnRlcm5hbEZvcm1hdC5SR0JfUFZSVENfNEJQUFYxX0lNRzpcbiAgICAgIHJldHVybiBUZXh0dXJlRm9ybWF0LlBWUlRDX1JHQjQ7XG4gICAgY2FzZSBHTENvbXByZXNzZWRUZXh0dXJlSW50ZXJuYWxGb3JtYXQuUkdCQV9QVlJUQ180QlBQVjFfSU1HOlxuICAgICAgcmV0dXJuIFRleHR1cmVGb3JtYXQuUFZSVENfUkdCQTQ7XG4gICAgY2FzZSBHTENvbXByZXNzZWRUZXh0dXJlSW50ZXJuYWxGb3JtYXQuUkdCQV9BU1RDXzRYNF9LSFI6XG4gICAgICByZXR1cm4gVGV4dHVyZUZvcm1hdC5BU1RDXzR4NDtcbiAgICBjYXNlIEdMQ29tcHJlc3NlZFRleHR1cmVJbnRlcm5hbEZvcm1hdC5SR0JBX0FTVENfNVg1X0tIUjpcbiAgICAgIHJldHVybiBUZXh0dXJlRm9ybWF0LkFTVENfNXg1O1xuICAgIGNhc2UgR0xDb21wcmVzc2VkVGV4dHVyZUludGVybmFsRm9ybWF0LlJHQkFfQVNUQ182WDZfS0hSOlxuICAgICAgcmV0dXJuIFRleHR1cmVGb3JtYXQuQVNUQ182eDY7XG4gICAgY2FzZSBHTENvbXByZXNzZWRUZXh0dXJlSW50ZXJuYWxGb3JtYXQuUkdCQV9BU1RDXzhYOF9LSFI6XG4gICAgICByZXR1cm4gVGV4dHVyZUZvcm1hdC5BU1RDXzh4ODtcbiAgICBjYXNlIEdMQ29tcHJlc3NlZFRleHR1cmVJbnRlcm5hbEZvcm1hdC5SR0JBX0FTVENfMTBYMTBfS0hSOlxuICAgICAgcmV0dXJuIFRleHR1cmVGb3JtYXQuQVNUQ18xMHgxMDtcbiAgICBjYXNlIEdMQ29tcHJlc3NlZFRleHR1cmVJbnRlcm5hbEZvcm1hdC5SR0JBX0FTVENfMTJYMTJfS0hSOlxuICAgICAgcmV0dXJuIFRleHR1cmVGb3JtYXQuQVNUQ18xMngxMjtcbiAgICBkZWZhdWx0OlxuICAgICAgY29uc3QgZm9ybWF0TmFtZTogYW55ID0gR0xDb21wcmVzc2VkVGV4dHVyZUludGVybmFsRm9ybWF0W2ludGVybmFsRm9ybWF0XTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdGhpcyBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZCBpbiBHYWxhY2VhbiBFbmdpbmU6ICR7Zm9ybWF0TmFtZX1gKTtcbiAgfVxufVxuLyoqXG4gKiBmb3IgZGVzY3JpcHRpb24gc2VlIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5nbGVzL3Nkay90b29scy9LVFgvXG4gKiBmb3IgZmlsZSBsYXlvdXQgc2VlIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5nbGVzL3Nkay90b29scy9LVFgvZmlsZV9mb3JtYXRfc3BlYy9cbiAqL1xuZXhwb3J0IGNvbnN0IGtocm9ub3NUZXh0dXJlQ29udGFpbmVyUGFyc2VyID0ge1xuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGJ1ZmZlciBjb250ZW50cyBvZiB0aGUgS1RYIGNvbnRhaW5lciBmaWxlXG4gICAqIEBwYXJhbSBmYWNlc0V4cGVjdGVkIHNob3VsZCBiZSBlaXRoZXIgMSBvciA2LCBiYXNlZCB3aGV0aGVyIGEgY3ViZSB0ZXh0dXJlIG9yIG9yXG4gICAqIEBwYXJhbSB0aHJlZURFeHBlY3RlZCBwcm92aXNpb24gZm9yIGluZGljYXRpbmcgdGhhdCBkYXRhIHNob3VsZCBiZSBhIDNEIHRleHR1cmUsIG5vdCBpbXBsZW1lbnRlZFxuICAgKiBAcGFyYW0gdGV4dHVyZUFycmF5RXhwZWN0ZWQgcHJvdmlzaW9uIGZvciBpbmRpY2F0aW5nIHRoYXQgZGF0YSBzaG91bGQgYmUgYSB0ZXh0dXJlIGFycmF5LCBub3QgaW1wbGVtZW50ZWRcbiAgICogQHBhcmFtIG1hcEVuZ2luZUZvcm1hdCBnZXQgR2FsYWNlYW4gRW5naW5lIG5hdGl2ZSBUZXh0dXJlRm9ybWF0P1xuICAgKi9cbiAgcGFyc2UoXG4gICAgYnVmZmVyOiBBcnJheUJ1ZmZlcixcbiAgICBmYWNlc0V4cGVjdGVkOiBudW1iZXIsXG4gICAgd2l0aE1pcG1hcHM6IGJvb2xlYW4sXG4gICAgbWFwRW5naW5lRm9ybWF0OiBib29sZWFuID0gZmFsc2VcbiAgKTogS1RYQ29udGFpbmVyIHtcbiAgICBpZiAoIWlzVmFsaWQoYnVmZmVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwia2hyb25vc1RleHR1cmVDb250YWluZXJQYXJzZXI6IGludmFsaWQgS1RYIGZpbGUsIHRleHR1cmUgbWlzc2luZyBLVFggaWRlbnRpZmllclwiKTtcbiAgICB9XG5cbiAgICAvLyBsb2FkIHRoZSByZXNldCBvZiB0aGUgaGVhZGVyIGluIG5hdGl2ZSAzMiBiaXQgdWludFxuICAgIGNvbnN0IGRhdGFTaXplID0gVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgY29uc3QgaGVhZGVyRGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLCAxMiwgMTMgKiBkYXRhU2l6ZSk7XG4gICAgY29uc3QgZW5kaWFubmVzcyA9IGhlYWRlckRhdGFWaWV3LmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICBjb25zdCBsaXR0bGVFbmRpYW4gPSBlbmRpYW5uZXNzID09PSAweDA0MDMwMjAxO1xuXG4gICAgY29uc3QgcGFyc2VkUmVzdWx0OiBLVFhDb250YWluZXIgPSB7XG4gICAgICBidWZmZXI6IGJ1ZmZlcixcbiAgICAgIGdsVHlwZTogaGVhZGVyRGF0YVZpZXcuZ2V0VWludDMyKDEgKiBkYXRhU2l6ZSwgbGl0dGxlRW5kaWFuKSwgLy8gbXVzdCBiZSAwIGZvciBjb21wcmVzc2VkIHRleHR1cmVzXG4gICAgICBnbFR5cGVTaXplOiBoZWFkZXJEYXRhVmlldy5nZXRVaW50MzIoMiAqIGRhdGFTaXplLCBsaXR0bGVFbmRpYW4pLCAvLyBtdXN0IGJlIDEgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXNcbiAgICAgIGdsRm9ybWF0OiBoZWFkZXJEYXRhVmlldy5nZXRVaW50MzIoMyAqIGRhdGFTaXplLCBsaXR0bGVFbmRpYW4pLCAvLyBtdXN0IGJlIDAgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXNcbiAgICAgIGdsSW50ZXJuYWxGb3JtYXQ6IGhlYWRlckRhdGFWaWV3LmdldFVpbnQzMig0ICogZGF0YVNpemUsIGxpdHRsZUVuZGlhbiksIC8vIHRoZSB2YWx1ZSBvZiBhcmcgcGFzc2VkIHRvIGdsLmNvbXByZXNzZWRUZXhJbWFnZTJEKCwseCwsLCwpXG4gICAgICBnbEJhc2VJbnRlcm5hbEZvcm1hdDogaGVhZGVyRGF0YVZpZXcuZ2V0VWludDMyKDUgKiBkYXRhU2l6ZSwgbGl0dGxlRW5kaWFuKSwgLy8gc3BlY2lmeSBHTF9SR0IsIEdMX1JHQkEsIEdMX0FMUEhBLCBldGMgKHVuLWNvbXByZXNzZWQgb25seSlcbiAgICAgIHBpeGVsV2lkdGg6IGhlYWRlckRhdGFWaWV3LmdldFVpbnQzMig2ICogZGF0YVNpemUsIGxpdHRsZUVuZGlhbiksIC8vIGxldmVsIDAgdmFsdWUgb2YgYXJnIHBhc3NlZCB0byBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRCgsLCx4LCwsKVxuICAgICAgcGl4ZWxIZWlnaHQ6IGhlYWRlckRhdGFWaWV3LmdldFVpbnQzMig3ICogZGF0YVNpemUsIGxpdHRsZUVuZGlhbiksIC8vIGxldmVsIDAgdmFsdWUgb2YgYXJnIHBhc3NlZCB0byBnbC5jb21wcmVzc2VkVGV4SW1hZ2UyRCgsLCwseCwsKVxuICAgICAgcGl4ZWxEZXB0aDogaGVhZGVyRGF0YVZpZXcuZ2V0VWludDMyKDggKiBkYXRhU2l6ZSwgbGl0dGxlRW5kaWFuKSwgLy8gbGV2ZWwgMCB2YWx1ZSBvZiBhcmcgcGFzc2VkIHRvIGdsLmNvbXByZXNzZWRUZXhJbWFnZTNEKCwsLCwseCwsKVxuICAgICAgbnVtYmVyT2ZBcnJheUVsZW1lbnRzOiBoZWFkZXJEYXRhVmlldy5nZXRVaW50MzIoOSAqIGRhdGFTaXplLCBsaXR0bGVFbmRpYW4pLCAvLyB1c2VkIGZvciB0ZXh0dXJlIGFycmF5c1xuICAgICAgbnVtYmVyT2ZGYWNlczogaGVhZGVyRGF0YVZpZXcuZ2V0VWludDMyKDEwICogZGF0YVNpemUsIGxpdHRsZUVuZGlhbiksIC8vIHVzZWQgZm9yIGN1YmVtYXAgdGV4dHVyZXMsIHNob3VsZCBlaXRoZXIgYmUgMSBvciA2XG4gICAgICBudW1iZXJPZk1pcG1hcExldmVsczogaGVhZGVyRGF0YVZpZXcuZ2V0VWludDMyKDExICogZGF0YVNpemUsIGxpdHRsZUVuZGlhbiksIC8vIG51bWJlciBvZiBsZXZlbHM7IGRpc3JlZ2FyZCBwb3NzaWJpbGl0eSBvZiAwIGZvciBjb21wcmVzc2VkIHRleHR1cmVzXG4gICAgICBieXRlc09mS2V5VmFsdWVEYXRhOiBoZWFkZXJEYXRhVmlldy5nZXRVaW50MzIoMTIgKiBkYXRhU2l6ZSwgbGl0dGxlRW5kaWFuKSwgLy8gdGhlIGFtb3VudCBvZiBzcGFjZSBhZnRlciB0aGUgaGVhZGVyIGZvciBtZXRhLWRhdGFcbiAgICAgIC8vIHdvdWxkIG5lZWQgdG8gbWFrZSB0aGlzIG1vcmUgZWxhYm9yYXRlICYgYWRqdXN0IGNoZWNrcyBhYm92ZSB0byBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbG9hZCB0eXBlXG4gICAgICBsb2FkVHlwZTogQ09NUFJFU1NFRF8yRFxuICAgIH07XG5cbiAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhIGNvbXByZXNzZWQgdHlwZS4gIE5vdCBvbmx5IHJlZHVjZXMgd29yaywgYnV0IHByb2JhYmx5IGJldHRlciB0byBsZXQgZGV2IGtub3cgdGhleSBhcmUgbm90IGNvbXByZXNzaW5nLlxuICAgIGlmIChwYXJzZWRSZXN1bHQuZ2xUeXBlICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJvbmx5IGNvbXByZXNzZWQgZm9ybWF0cyBjdXJyZW50bHkgc3VwcG9ydGVkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB2YWx1ZSBvZiB6ZXJvIGlzIGFuIGluZGljYXRpb24gdG8gZ2VuZXJhdGUgbWlwbWFwcyBAIHJ1bnRpbWUuICBOb3QgdXN1YWxseSBhbGxvd2VkIGZvciBjb21wcmVzc2VkLCBzbyBkaXNyZWdhcmQuXG4gICAgICBwYXJzZWRSZXN1bHQubnVtYmVyT2ZNaXBtYXBMZXZlbHMgPSBNYXRoLm1heCgxLCBwYXJzZWRSZXN1bHQubnVtYmVyT2ZNaXBtYXBMZXZlbHMpO1xuICAgIH1cblxuICAgIGlmIChwYXJzZWRSZXN1bHQucGl4ZWxIZWlnaHQgPT09IDAgfHwgcGFyc2VkUmVzdWx0LnBpeGVsRGVwdGggIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm9ubHkgMkQgdGV4dHVyZXMgY3VycmVudGx5IHN1cHBvcnRlZFwiKTtcbiAgICB9XG5cbiAgICBpZiAocGFyc2VkUmVzdWx0Lm51bWJlck9mQXJyYXlFbGVtZW50cyAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGV4dHVyZSBhcnJheXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWRcIik7XG4gICAgfVxuXG4gICAgaWYgKHBhcnNlZFJlc3VsdC5udW1iZXJPZkZhY2VzICE9PSBmYWNlc0V4cGVjdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJudW1iZXIgb2YgZmFjZXMgZXhwZWN0ZWRcIiArIGZhY2VzRXhwZWN0ZWQgKyBcIiwgYnV0IGZvdW5kIFwiICsgcGFyc2VkUmVzdWx0Lm51bWJlck9mRmFjZXMpO1xuICAgIH1cblxuICAgIGlmICh3aXRoTWlwbWFwcykge1xuICAgICAgcGFyc2VkUmVzdWx0Lm1pcG1hcHMgPSBnZXRNaXBtYXBzKHBhcnNlZFJlc3VsdCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG1hcEVuZ2luZUZvcm1hdCkge1xuICAgICAgcGFyc2VkUmVzdWx0LmVuZ2luZUZvcm1hdCA9IGdldEVuZ2luZUZvcm1hdChwYXJzZWRSZXN1bHQuZ2xJbnRlcm5hbEZvcm1hdCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRSZXN1bHQ7XG4gIH1cbn07XG4iLCJpbXBvcnQgeyBDb21wcmVzc2VkVGV4dHVyZURhdGEsIENvbXByZXNzZWRDdWJlRGF0YSB9IGZyb20gXCIuL3R5cGVcIjtcbmltcG9ydCB7IGtocm9ub3NUZXh0dXJlQ29udGFpbmVyUGFyc2VyIH0gZnJvbSBcIi4vS2hyb25vc1RleHR1cmVDb250YWluZXJcIjtcbmltcG9ydCB7IFRleHR1cmVGb3JtYXQgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNpbmdsZUtUWChkYXRhOiBBcnJheUJ1ZmZlcik6IENvbXByZXNzZWRUZXh0dXJlRGF0YSB7XG4gIGNvbnN0IGt0eCA9IGtocm9ub3NUZXh0dXJlQ29udGFpbmVyUGFyc2VyLnBhcnNlKGRhdGEsIDEsIHRydWUsIHRydWUpO1xuICByZXR1cm4ge1xuICAgIG1pcG1hcHM6IGt0eC5taXBtYXBzLFxuICAgIGVuZ2luZUZvcm1hdDoga3R4LmVuZ2luZUZvcm1hdCxcbiAgICBpbnRlcm5hbEZvcm1hdDoga3R4LmdsSW50ZXJuYWxGb3JtYXQsXG4gICAgd2lkdGg6IGt0eC5waXhlbFdpZHRoLFxuICAgIGhlaWdodDoga3R4LnBpeGVsSGVpZ2h0XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUN1YmVLVFgoZGF0YUFycmF5OiBBcnJheUJ1ZmZlcltdKTogQ29tcHJlc3NlZEN1YmVEYXRhIHtcbiAgY29uc3QgbWlwbWFwc0ZhY2VzID0gW107XG4gIGxldCBpbnRlcm5hbEZvcm1hdDogbnVtYmVyO1xuICBsZXQgZW5naW5lRm9ybWF0OiBUZXh0dXJlRm9ybWF0O1xuICBsZXQgd2lkdGg6IG51bWJlcjtcbiAgbGV0IGhlaWdodDogbnVtYmVyO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFBcnJheS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGt0eCA9IGtocm9ub3NUZXh0dXJlQ29udGFpbmVyUGFyc2VyLnBhcnNlKGRhdGFBcnJheVtpXSwgMSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgbWlwbWFwc0ZhY2VzLnB1c2goa3R4Lm1pcG1hcHMpO1xuICAgIGlmIChpID09PSAwKSB7XG4gICAgICB3aWR0aCA9IGt0eC5waXhlbFdpZHRoO1xuICAgICAgaGVpZ2h0ID0ga3R4LnBpeGVsSGVpZ2h0O1xuICAgICAgaW50ZXJuYWxGb3JtYXQgPSBrdHguZ2xJbnRlcm5hbEZvcm1hdDtcbiAgICAgIGVuZ2luZUZvcm1hdCA9IGt0eC5lbmdpbmVGb3JtYXQ7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgbWlwbWFwc0ZhY2VzLFxuICAgIGVuZ2luZUZvcm1hdCxcbiAgICBpbnRlcm5hbEZvcm1hdCxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfTtcbn1cbiIsImltcG9ydCB7XG4gIEFzc2V0UHJvbWlzZSxcbiAgQXNzZXRUeXBlLFxuICBMb2FkZXIsXG4gIExvYWRJdGVtLFxuICByZXNvdXJjZUxvYWRlcixcbiAgUmVzb3VyY2VNYW5hZ2VyLFxuICBUZXh0dXJlQ3ViZUZhY2UsXG4gIFRleHR1cmVDdWJlXG59IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IHBhcnNlQ3ViZUtUWCB9IGZyb20gXCIuL2NvbXByZXNzZWQtdGV4dHVyZVwiO1xuXG5AcmVzb3VyY2VMb2FkZXIoQXNzZXRUeXBlLktUWEN1YmUsIFtdKVxuY2xhc3MgS1RYQ3ViZUxvYWRlciBleHRlbmRzIExvYWRlcjxUZXh0dXJlQ3ViZT4ge1xuICBsb2FkKGl0ZW06IExvYWRJdGVtLCByZXNvdXJjZU1hbmFnZXI6IFJlc291cmNlTWFuYWdlcik6IEFzc2V0UHJvbWlzZTxUZXh0dXJlQ3ViZT4ge1xuICAgIHJldHVybiBuZXcgQXNzZXRQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIFByb21pc2UuYWxsKFxuICAgICAgICBpdGVtLnVybHMubWFwKCh1cmwpID0+XG4gICAgICAgICAgdGhpcy5yZXF1ZXN0PEFycmF5QnVmZmVyPih1cmwsIHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICB0eXBlOiBcImFycmF5YnVmZmVyXCJcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHBhcnNlQ3ViZUtUWChkYXRhKTtcbiAgICAgICAgICBjb25zdCB7IHdpZHRoLCBtaXBtYXBzRmFjZXMsIGVuZ2luZUZvcm1hdCB9ID0gcGFyc2VkRGF0YTtcbiAgICAgICAgICBjb25zdCBtaXBtYXAgPSBtaXBtYXBzRmFjZXNbMF0ubGVuZ3RoID4gMTtcbiAgICAgICAgICBjb25zdCB0ZXh0dXJlID0gbmV3IFRleHR1cmVDdWJlKHJlc291cmNlTWFuYWdlci5lbmdpbmUsIHdpZHRoLCBlbmdpbmVGb3JtYXQsIG1pcG1hcCk7XG5cbiAgICAgICAgICBmb3IgKGxldCBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykge1xuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gbWlwbWFwc0ZhY2VzW2ZhY2VdLmxlbmd0aDtcblxuICAgICAgICAgICAgZm9yIChsZXQgbWlwbGV2ZWwgPSAwOyBtaXBsZXZlbCA8IGxlbmd0aDsgbWlwbGV2ZWwrKykge1xuICAgICAgICAgICAgICBjb25zdCB7IGRhdGEsIHdpZHRoLCBoZWlnaHQgfSA9IG1pcG1hcHNGYWNlc1tmYWNlXVttaXBsZXZlbF07XG5cbiAgICAgICAgICAgICAgdGV4dHVyZS5zZXRQaXhlbEJ1ZmZlcihUZXh0dXJlQ3ViZUZhY2UuUG9zaXRpdmVYICsgZmFjZSwgZGF0YSwgbWlwbGV2ZWwsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUodGV4dHVyZSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFzc2V0UHJvbWlzZSxcbiAgQXNzZXRUeXBlLFxuICBMb2FkZXIsXG4gIExvYWRJdGVtLFxuICByZXNvdXJjZUxvYWRlcixcbiAgUmVzb3VyY2VNYW5hZ2VyLFxuICBUZXh0dXJlMkRcbn0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgcGFyc2VTaW5nbGVLVFggfSBmcm9tIFwiLi9jb21wcmVzc2VkLXRleHR1cmVcIjtcblxuQHJlc291cmNlTG9hZGVyKEFzc2V0VHlwZS5LVFgsIFtcImt0eFwiXSlcbmV4cG9ydCBjbGFzcyBLVFhMb2FkZXIgZXh0ZW5kcyBMb2FkZXI8VGV4dHVyZTJEPiB7XG4gIGxvYWQoaXRlbTogTG9hZEl0ZW0sIHJlc291cmNlTWFuYWdlcjogUmVzb3VyY2VNYW5hZ2VyKTogQXNzZXRQcm9taXNlPFRleHR1cmUyRD4ge1xuICAgIHJldHVybiBuZXcgQXNzZXRQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdDxBcnJheUJ1ZmZlcj4oaXRlbS51cmwsIHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgdHlwZTogXCJhcnJheWJ1ZmZlclwiXG4gICAgICB9KVxuICAgICAgICAudGhlbigoYmluKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHBhcnNlU2luZ2xlS1RYKGJpbik7XG4gICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCBtaXBtYXBzLCBlbmdpbmVGb3JtYXQgfSA9IHBhcnNlZERhdGE7XG4gICAgICAgICAgY29uc3QgbWlwbWFwID0gbWlwbWFwcy5sZW5ndGggPiAxO1xuICAgICAgICAgIGNvbnN0IHRleHR1cmUgPSBuZXcgVGV4dHVyZTJEKHJlc291cmNlTWFuYWdlci5lbmdpbmUsIHdpZHRoLCBoZWlnaHQsIGVuZ2luZUZvcm1hdCwgbWlwbWFwKTtcblxuICAgICAgICAgIGZvciAobGV0IG1pcGxldmVsID0gMDsgbWlwbGV2ZWwgPCBtaXBtYXBzLmxlbmd0aDsgbWlwbGV2ZWwrKykge1xuICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCBkYXRhIH0gPSBtaXBtYXBzW21pcGxldmVsXTtcbiAgICAgICAgICAgIHRleHR1cmUuc2V0UGl4ZWxCdWZmZXIoZGF0YSwgbWlwbGV2ZWwsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUodGV4dHVyZSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFzc2V0UHJvbWlzZSxcbiAgQXNzZXRUeXBlLFxuICBCbGlublBob25nTWF0ZXJpYWwsXG4gIExvYWRlcixcbiAgTG9hZEl0ZW0sXG4gIFBCUkJhc2VNYXRlcmlhbCxcbiAgUEJSTWF0ZXJpYWwsXG4gIFBCUlNwZWN1bGFyTWF0ZXJpYWwsXG4gIHJlc291cmNlTG9hZGVyLFxuICBSZXNvdXJjZU1hbmFnZXIsXG4gIFNoYWRlcixcbiAgVGV4dHVyZTJELFxuICBVbmxpdE1hdGVyaWFsXG59IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IENvbG9yLCBWZWN0b3IyLCBWZWN0b3IzLCBWZWN0b3I0IH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtbWF0aFwiO1xuXG5AcmVzb3VyY2VMb2FkZXIoQXNzZXRUeXBlLk1hdGVyaWFsLCBbXCJqc29uXCJdKVxuY2xhc3MgTWF0ZXJpYWxMb2FkZXIgZXh0ZW5kcyBMb2FkZXI8c3RyaW5nPiB7XG4gIGxvYWQoaXRlbTogTG9hZEl0ZW0sIHJlc291cmNlTWFuYWdlcjogUmVzb3VyY2VNYW5hZ2VyKTogQXNzZXRQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgQXNzZXRQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdChpdGVtLnVybCwge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICB0eXBlOiBcImpzb25cIlxuICAgICAgfSlcbiAgICAgICAgLnRoZW4oKGpzb246IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IHtcbiAgICAgICAgICBjb25zdCBlbmdpbmUgPSByZXNvdXJjZU1hbmFnZXIuZW5naW5lO1xuICAgICAgICAgIGNvbnN0IHsgbmFtZSwgc2hhZGVyLCBzaGFkZXJEYXRhLCBtYWNyb3MsIHJlbmRlclN0YXRlIH0gPSBqc29uO1xuXG4gICAgICAgICAgbGV0IG1hdGVyaWFsO1xuICAgICAgICAgIHN3aXRjaCAoc2hhZGVyKSB7XG4gICAgICAgICAgICBjYXNlIFwicGJyXCI6XG4gICAgICAgICAgICAgIG1hdGVyaWFsID0gbmV3IFBCUk1hdGVyaWFsKGVuZ2luZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcInBici1zcGVjdWxhclwiOlxuICAgICAgICAgICAgICBtYXRlcmlhbCA9IG5ldyBQQlJTcGVjdWxhck1hdGVyaWFsKGVuZ2luZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcInVubGl0XCI6XG4gICAgICAgICAgICAgIG1hdGVyaWFsID0gbmV3IFVubGl0TWF0ZXJpYWwoZW5naW5lKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiYmxpbm4tcGhvbmdcIjpcbiAgICAgICAgICAgICAgbWF0ZXJpYWwgPSBuZXcgQmxpbm5QaG9uZ01hdGVyaWFsKGVuZ2luZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImJha2UtcGJyXCI6XG4gICAgICAgICAgICAgIC8vIEB0b2RvIHJlZmFjdG9yIGN1c3RvbSBzaGFkZXIgbGF0ZXJcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBtYXRlcmlhbCA9IG5ldyBQQlJCYXNlTWF0ZXJpYWwoZW5naW5lLCBTaGFkZXIuZmluZChcImJha2UtcGJyXCIpKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIG1hdGVyaWFsLm5hbWUgPSBuYW1lO1xuXG4gICAgICAgICAgY29uc3QgdGV4dHVyZVByb21pc2VzID0gbmV3IEFycmF5PFByb21pc2U8VGV4dHVyZTJEIHwgdm9pZD4+KCk7XG4gICAgICAgICAgY29uc3QgbWF0ZXJpYWxTaGFkZXJEYXRhID0gbWF0ZXJpYWwuc2hhZGVyRGF0YTtcbiAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gc2hhZGVyRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCB2YWx1ZSB9ID0gc2hhZGVyRGF0YVtrZXldO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSBcIlZlY3RvcjJcIjpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbFNoYWRlckRhdGEuc2V0VmVjdG9yMihrZXksIG5ldyBWZWN0b3IyKHZhbHVlLngsIHZhbHVlLnkpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcIlZlY3RvcjNcIjpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbFNoYWRlckRhdGEuc2V0VmVjdG9yMyhrZXksIG5ldyBWZWN0b3IzKHZhbHVlLngsIHZhbHVlLnksIHZhbHVlLnopKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcIlZlY3RvcjRcIjpcbiAgICAgICAgICAgICAgICBtYXRlcmlhbFNoYWRlckRhdGEuc2V0VmVjdG9yNChrZXksIG5ldyBWZWN0b3I0KHZhbHVlLngsIHZhbHVlLnksIHZhbHVlLnosIHZhbHVlLncpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcIkNvbG9yXCI6XG4gICAgICAgICAgICAgICAgbWF0ZXJpYWxTaGFkZXJEYXRhLnNldENvbG9yKGtleSwgbmV3IENvbG9yKHZhbHVlLnIsIHZhbHVlLmcsIHZhbHVlLmIsIHZhbHVlLmEpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcIkZsb2F0XCI6XG4gICAgICAgICAgICAgICAgbWF0ZXJpYWxTaGFkZXJEYXRhLnNldEZsb2F0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiVGV4dHVyZVwiOlxuICAgICAgICAgICAgICAgIHRleHR1cmVQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgcmVzb3VyY2VNYW5hZ2VyLmdldFJlc291cmNlQnlSZWY8VGV4dHVyZTJEPih2YWx1ZSkudGhlbigodGV4dHVyZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbFNoYWRlckRhdGEuc2V0VGV4dHVyZShrZXksIHRleHR1cmUpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBtYWNyb3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbmFtZSwgdmFsdWUgfSA9IG1hY3Jvc1tpXTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgbWF0ZXJpYWxTaGFkZXJEYXRhLmVuYWJsZU1hY3JvKG5hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWF0ZXJpYWxTaGFkZXJEYXRhLmVuYWJsZU1hY3JvKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gcmVuZGVyU3RhdGUpIHtcbiAgICAgICAgICAgIG1hdGVyaWFsW2tleV0gPSByZW5kZXJTdGF0ZVtrZXldO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbCh0ZXh0dXJlUHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShtYXRlcmlhbCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgIH0pO1xuICB9XG59XG4iLCJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcblxuICAgICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gX2NyZWF0ZV9jbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG5cbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG59XG5leHBvcnQgeyBfY3JlYXRlX2NsYXNzIGFzIF8gfTtcbiIsImltcG9ydCB7IEdMVEZVdGlsIH0gZnJvbSBcIi4uLy4uL2dsdGYvR0xURlV0aWxcIjtcbmltcG9ydCB7IGFiMnN0ciB9IGZyb20gXCIuL1V0aWxzXCI7XG5cbmNsYXNzIEltYWdlRGF0YSB7XG4gIHR5cGU6IFwiaW1hZ2UvcG5nXCIgfCBcImltYWdlL2pwZ1wiIHwgXCJpbWFnZS93ZWJwXCIgfCBcImt0eFwiO1xuICBidWZmZXI6IEFycmF5QnVmZmVyO1xufVxuXG5leHBvcnQgY2xhc3MgQnVmZmVyUmVhZGVyIHtcbiAgcHJpdmF0ZSBfZGF0YVZpZXc6IERhdGFWaWV3O1xuICBwcml2YXRlIF9saXR0bGVFbmRpYW46IGJvb2xlYW47XG4gIHByaXZhdGUgX29mZnNldDogbnVtYmVyO1xuXG4gIHB1YmxpYyBzdGF0aWMgaW1hZ2VNYXBwaW5nID0ge1xuICAgIDA6IFwiaW1hZ2UvcG5nXCIsXG4gICAgMTogXCJpbWFnZS9qcGdcIixcbiAgICAyOiBcImltYWdlL3dlYnBcIixcbiAgICAzOiBcImt0eFwiXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHVibGljIGJ1ZmZlcjogQXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQ6IG51bWJlciA9IDAsIGJ5dGVMZW5ndGg/OiBudW1iZXIsIGxpdHRsZUVuZGlhbjogYm9vbGVhbiA9IHRydWUpIHtcbiAgICAvLyBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA/PyBfYnVmZmVyLmJ5dGVMZW5ndGg7XG4gICAgdGhpcy5fZGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTtcbiAgICB0aGlzLl9saXR0bGVFbmRpYW4gPSBsaXR0bGVFbmRpYW47XG4gICAgdGhpcy5fb2Zmc2V0ID0gYnl0ZU9mZnNldDtcbiAgfVxuXG4gIGdldCBvZmZzZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29mZnNldDtcbiAgfVxuXG4gIG5leHRVaW50OCgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2RhdGFWaWV3LmdldFVpbnQ4KHRoaXMuX29mZnNldCk7XG4gICAgdGhpcy5fb2Zmc2V0ICs9IDE7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbmV4dFVpbnQxNigpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2RhdGFWaWV3LmdldFVpbnQxNih0aGlzLl9vZmZzZXQsIHRoaXMuX2xpdHRsZUVuZGlhbik7XG4gICAgdGhpcy5fb2Zmc2V0ICs9IDI7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbmV4dFVpbnQzMigpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2RhdGFWaWV3LmdldFVpbnQzMih0aGlzLl9vZmZzZXQsIHRoaXMuX2xpdHRsZUVuZGlhbik7XG4gICAgdGhpcy5fb2Zmc2V0ICs9IDQ7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbmV4dEludDMyKCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZGF0YVZpZXcuZ2V0SW50MzIodGhpcy5fb2Zmc2V0LCB0aGlzLl9saXR0bGVFbmRpYW4pO1xuICAgIHRoaXMuX29mZnNldCArPSA0O1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIG5leHRJbnQzMkFycmF5KGxlbjogbnVtYmVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBuZXcgSW50MzJBcnJheSh0aGlzLmJ1ZmZlciwgdGhpcy5fb2Zmc2V0LCBsZW4pO1xuICAgIHRoaXMuX29mZnNldCArPSA0ICogbGVuO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIG5leHRGbG9hdDMyKCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZGF0YVZpZXcuZ2V0RmxvYXQzMih0aGlzLl9vZmZzZXQsIHRoaXMuX2xpdHRsZUVuZGlhbik7XG4gICAgdGhpcy5fb2Zmc2V0ICs9IDQ7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbmV4dEZsb2F0MzJBcnJheShsZW46IG51bWJlcikge1xuICAgIGNvbnN0IHZhbHVlID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLmJ1ZmZlciwgdGhpcy5fb2Zmc2V0LCBsZW4pO1xuICAgIHRoaXMuX29mZnNldCArPSA0ICogbGVuO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIG5leHRVaW50MzJBcnJheShsZW46IG51bWJlcikge1xuICAgIGNvbnN0IHZhbHVlID0gbmV3IFVpbnQzMkFycmF5KHRoaXMuYnVmZmVyLCB0aGlzLl9vZmZzZXQsIGxlbik7XG4gICAgdGhpcy5fb2Zmc2V0ICs9IDQgKiBsZW47XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgbmV4dFVpbnQ4QXJyYXkobGVuOiBudW1iZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyLCB0aGlzLl9vZmZzZXQsIGxlbik7XG4gICAgdGhpcy5fb2Zmc2V0ICs9IGxlbjtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBuZXh0VWludDY0KCkge1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLl9kYXRhVmlldy5nZXRVaW50MzIodGhpcy5fb2Zmc2V0LCB0aGlzLl9saXR0bGVFbmRpYW4pO1xuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5fZGF0YVZpZXcuZ2V0VWludDMyKHRoaXMuX29mZnNldCArIDQsIHRoaXMuX2xpdHRsZUVuZGlhbik7XG4gICAgY29uc3QgdmFsdWUgPSBsZWZ0ICsgMiAqKiAzMiAqIHJpZ2h0O1xuICAgIHRoaXMuX29mZnNldCArPSA4O1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIG5leHRTdHIoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHJCeXRlTGVuZ3RoID0gdGhpcy5uZXh0VWludDE2KCk7XG4gICAgY29uc3QgdWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyLCB0aGlzLl9vZmZzZXQsIHN0ckJ5dGVMZW5ndGgpO1xuICAgIHRoaXMuX29mZnNldCArPSBzdHJCeXRlTGVuZ3RoO1xuICAgIHJldHVybiBHTFRGVXRpbC5kZWNvZGVUZXh0KHVpbnQ4QXJyYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGltYWdlIGRhdGEg5pS+5Zyo5pyA5ZCOXG4gICAqL1xuICBuZXh0SW1hZ2VEYXRhKGNvdW50OiBudW1iZXIgPSAwKTogQXJyYXlCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlci5zbGljZSh0aGlzLl9vZmZzZXQpO1xuICB9XG5cbiAgbmV4dEltYWdlc0RhdGEoY291bnQ6IG51bWJlcik6IEFycmF5QnVmZmVyW10ge1xuICAgIGNvbnN0IGltYWdlc0xlbiA9IG5ldyBBcnJheShjb3VudCk7XG4gICAgLy8gU3RhcnQgb2Zmc2V0IG9mIFVpbnQzMkFycmF5IHNob3VsZCBiZSBhIG11bHRpcGxlIG9mIDQuIHJlZjogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTU0MTczMTAvd2h5LXR5cGVkLWFycmF5LWNvbnN0cnVjdG9ycy1yZXF1aXJlLW9mZnNldC10by1iZS1tdWx0aXBsZS1vZi11bmRlcmx5aW5nLXR5cGUtc2lcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgIGNvbnN0IGxlbiA9IHRoaXMuX2RhdGFWaWV3LmdldFVpbnQzMih0aGlzLl9vZmZzZXQsIHRoaXMuX2xpdHRsZUVuZGlhbik7XG4gICAgICBpbWFnZXNMZW5baV0gPSBsZW47XG4gICAgICB0aGlzLl9vZmZzZXQgKz0gNDtcbiAgICB9XG4gICAgY29uc3QgaW1hZ2VzRGF0YTogQXJyYXlCdWZmZXJbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICBjb25zdCBsZW4gPSBpbWFnZXNMZW5baV07XG4gICAgICBjb25zdCBidWZmZXIgPSB0aGlzLmJ1ZmZlci5zbGljZSh0aGlzLl9vZmZzZXQsIHRoaXMuX29mZnNldCArIGxlbik7XG4gICAgICB0aGlzLl9vZmZzZXQgKz0gbGVuO1xuICAgICAgaW1hZ2VzRGF0YS5wdXNoKGJ1ZmZlcik7XG4gICAgfVxuICAgIHJldHVybiBpbWFnZXNEYXRhO1xuICB9XG5cbiAgc2tpcChieXRlczogbnVtYmVyKSB7XG4gICAgdGhpcy5fb2Zmc2V0ICs9IGJ5dGVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2NhbihtYXhCeXRlTGVuZ3RoOiBudW1iZXIsIHRlcm06IG51bWJlciA9IDB4MDApOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBieXRlT2Zmc2V0ID0gdGhpcy5fb2Zmc2V0O1xuICAgIGxldCBieXRlTGVuZ3RoID0gMDtcbiAgICB3aGlsZSAodGhpcy5fZGF0YVZpZXcuZ2V0VWludDgodGhpcy5fb2Zmc2V0KSAhPT0gdGVybSAmJiBieXRlTGVuZ3RoIDwgbWF4Qnl0ZUxlbmd0aCkge1xuICAgICAgYnl0ZUxlbmd0aCsrO1xuICAgICAgdGhpcy5fb2Zmc2V0Kys7XG4gICAgfVxuXG4gICAgaWYgKGJ5dGVMZW5ndGggPCBtYXhCeXRlTGVuZ3RoKSB0aGlzLl9vZmZzZXQrKztcblxuICAgIHJldHVybiBuZXcgVWludDhBcnJheSh0aGlzLl9kYXRhVmlldy5idWZmZXIsIHRoaXMuX2RhdGFWaWV3LmJ5dGVPZmZzZXQgKyBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgRW5naW5lIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBCdWZmZXJSZWFkZXIgfSBmcm9tIFwiLi9CdWZmZXJSZWFkZXJcIjtcblxuZXhwb3J0IGNvbnN0IGRlY29kZXJNYXA6IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7XG4gICAgZGVjb2RlOiAoZW5naW5lOiBFbmdpbmUsIGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKSA9PiBQcm9taXNlPGFueT47XG4gIH1cbj4gPSB7fTtcblxuLyoqXG4gKiBEZWNvZGVyIGRlY29yYXRvciBnZW5lcmF0b3IuXG4gKiBAcGFyYW0gdHlwZSAtIHJlc291cmNlIGZpbGUgdHlwZS5cbiAqIEByZXR1cm5zIERlY29kZXIgZGVjb3JhdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVyKHR5cGU6IHN0cmluZyk6IENsYXNzRGVjb3JhdG9yIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSkgPT4ge1xuICAgIGRlY29kZXJNYXBbdHlwZV0gPSB0YXJnZXQ7XG4gIH07XG59IiwiaW1wb3J0IHsgR0xURlV0aWwgfSBmcm9tIFwiLi4vLi4vZ2x0Zi9HTFRGVXRpbFwiO1xuXG5leHBvcnQgY2xhc3MgRmlsZUhlYWRlciB7XG4gIHRvdGFsTGVuZ3RoOiBudW1iZXIgPSAwO1xuICB2ZXJzaW9uOiBudW1iZXIgPSAwO1xuICB0eXBlOiBzdHJpbmcgPSBcIlwiO1xuICBuYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBoZWFkZXJMZW5ndGg6IG51bWJlciA9IDA7XG5cbiAgc3RhdGljIGRlY29kZShhcnJheUJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBGaWxlSGVhZGVyIHtcbiAgICBjb25zdCBkYXRhVmlldyA9IG5ldyBEYXRhVmlldyhhcnJheUJ1ZmZlcik7XG4gICAgY29uc3QgdG90YWxMZW4gPSBkYXRhVmlldy5nZXRVaW50MzIoMCwgdHJ1ZSk7XG4gICAgY29uc3QgZmlsZVZlcnNpb24gPSBkYXRhVmlldy5nZXRVaW50OCg0KTtcbiAgICBjb25zdCB0eXBlTGVuID0gZGF0YVZpZXcuZ2V0VWludDE2KDUsIHRydWUpO1xuICAgIGNvbnN0IHR5cGVVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIsIDcsIHR5cGVMZW4pO1xuICAgIGNvbnN0IG5hbWVMZW4gPSBkYXRhVmlldy5nZXRVaW50MTYoNyArIHR5cGVMZW4sIHRydWUpO1xuICAgIGNvbnN0IG5hbWVVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIsIDkgKyB0eXBlTGVuLCBuYW1lTGVuKTtcblxuICAgIGNvbnN0IG5hbWUgPSBHTFRGVXRpbC5kZWNvZGVUZXh0KG5hbWVVaW50OEFycmF5KTtcbiAgICBjb25zdCB0eXBlID0gR0xURlV0aWwuZGVjb2RlVGV4dCh0eXBlVWludDhBcnJheSk7XG4gICAgY29uc3QgaGVhZGVyID0gbmV3IEZpbGVIZWFkZXIoKTtcbiAgICBoZWFkZXIudG90YWxMZW5ndGggPSB0b3RhbExlbjtcbiAgICBoZWFkZXIubmFtZSA9IG5hbWU7XG4gICAgaGVhZGVyLnR5cGUgPSB0eXBlO1xuICAgIGhlYWRlci52ZXJzaW9uID0gZmlsZVZlcnNpb247XG4gICAgaGVhZGVyLmhlYWRlckxlbmd0aCA9IG5hbWVVaW50OEFycmF5LmJ5dGVMZW5ndGggKyB0eXBlVWludDhBcnJheS5ieXRlTGVuZ3RoICsgOTtcbiAgICByZXR1cm4gaGVhZGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhTGVuZ3RoKCkge1xuICAgIHJldHVybiB0aGlzLnRvdGFsTGVuZ3RoIC0gdGhpcy5oZWFkZXJMZW5ndGg7XG4gIH1cbn1cbiIsImltcG9ydCB7IE1vZGVsTWVzaCwgQmxlbmRTaGFwZSB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IGRlY29kZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvRGVjb3JhdG9yXCI7XG5pbXBvcnQgdHlwZSB7IEVuZ2luZSB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB0eXBlIHsgQnVmZmVyUmVhZGVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzL0J1ZmZlclJlYWRlclwiO1xuaW1wb3J0IHsgSUVuY29kZWRNb2RlbE1lc2ggfSBmcm9tIFwiLi9JTW9kZWxNZXNoXCI7XG5pbXBvcnQgeyBDb2xvciwgVmVjdG9yMiwgVmVjdG9yMywgVmVjdG9yNCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLW1hdGhcIjtcblxuLyoqXG4gKiBAdG9kbyByZWZhY3RvciBcbiAqL1xuQGRlY29kZXIoXCJNZXNoXCIpXG5leHBvcnQgY2xhc3MgTWVzaERlY29kZXIge1xuICBwdWJsaWMgc3RhdGljIGRlY29kZShlbmdpbmU6IEVuZ2luZSwgYnVmZmVyUmVhZGVyOiBCdWZmZXJSZWFkZXIpOiBQcm9taXNlPE1vZGVsTWVzaD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgbW9kZWxNZXNoID0gbmV3IE1vZGVsTWVzaChlbmdpbmUpO1xuICAgICAgY29uc3QganNvbkRhdGFTdHJpbmcgPSBidWZmZXJSZWFkZXIubmV4dFN0cigpO1xuICAgICAgY29uc3QgZW5jb2RlZE1lc2hEYXRhOiBJRW5jb2RlZE1vZGVsTWVzaCA9IEpTT04ucGFyc2UoanNvbkRhdGFTdHJpbmcpO1xuXG4gICAgICAvLyBAdHMtaWdub3JlIFZlY3RvcjMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB7eDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcn0uXG4gICAgICBlbmNvZGVkTWVzaERhdGEuYm91bmRzICYmIG1vZGVsTWVzaC5ib3VuZHMuY29weUZyb20oZW5jb2RlZE1lc2hEYXRhLmJvdW5kcyk7XG5cbiAgICAgIGNvbnN0IG9mZnNldCA9IE1hdGguY2VpbChidWZmZXJSZWFkZXIub2Zmc2V0IC8gNCkgKiA0O1xuXG4gICAgICBjb25zdCBmbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFxuICAgICAgICBidWZmZXJSZWFkZXIuYnVmZmVyLFxuICAgICAgICBlbmNvZGVkTWVzaERhdGEucG9zaXRpb25zLnN0YXJ0ICsgb2Zmc2V0LFxuICAgICAgICAoZW5jb2RlZE1lc2hEYXRhLnBvc2l0aW9ucy5lbmQgLSBlbmNvZGVkTWVzaERhdGEucG9zaXRpb25zLnN0YXJ0KSAvIDRcbiAgICAgICk7XG4gICAgICBjb25zdCB2ZXJ0ZXhDb3VudCA9IGZsb2F0MzJBcnJheS5sZW5ndGggLyAzO1xuICAgICAgY29uc3QgcG9zaXRpb25zID0gZmxvYXQzMkFycmF5VG9WZWN0b3IzKGZsb2F0MzJBcnJheSwgdmVydGV4Q291bnQpO1xuICAgICAgbW9kZWxNZXNoLnNldFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuICAgICAgaWYgKGVuY29kZWRNZXNoRGF0YS5ub3JtYWxzKSB7XG4gICAgICAgIGNvbnN0IGZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoXG4gICAgICAgICAgYnVmZmVyUmVhZGVyLmJ1ZmZlcixcbiAgICAgICAgICBlbmNvZGVkTWVzaERhdGEubm9ybWFscy5zdGFydCArIG9mZnNldCxcbiAgICAgICAgICAoZW5jb2RlZE1lc2hEYXRhLm5vcm1hbHMuZW5kIC0gZW5jb2RlZE1lc2hEYXRhLm5vcm1hbHMuc3RhcnQpIC8gNFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBub3JtYWxzID0gZmxvYXQzMkFycmF5VG9WZWN0b3IzKGZsb2F0MzJBcnJheSwgdmVydGV4Q291bnQpO1xuICAgICAgICBtb2RlbE1lc2guc2V0Tm9ybWFscyhub3JtYWxzKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmNvZGVkTWVzaERhdGEudXZzKSB7XG4gICAgICAgIGNvbnN0IGZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoXG4gICAgICAgICAgYnVmZmVyUmVhZGVyLmJ1ZmZlcixcbiAgICAgICAgICBlbmNvZGVkTWVzaERhdGEudXZzLnN0YXJ0ICsgb2Zmc2V0LFxuICAgICAgICAgIChlbmNvZGVkTWVzaERhdGEudXZzLmVuZCAtIGVuY29kZWRNZXNoRGF0YS51dnMuc3RhcnQpIC8gNFxuICAgICAgICApO1xuICAgICAgICBtb2RlbE1lc2guc2V0VVZzKGZsb2F0MzJBcnJheVRvVmVjdG9yMihmbG9hdDMyQXJyYXksIHZlcnRleENvdW50KSk7XG4gICAgICB9XG4gICAgICBpZiAoZW5jb2RlZE1lc2hEYXRhLnV2MSkge1xuICAgICAgICBjb25zdCBmbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFxuICAgICAgICAgIGJ1ZmZlclJlYWRlci5idWZmZXIsXG4gICAgICAgICAgZW5jb2RlZE1lc2hEYXRhLnV2MS5zdGFydCArIG9mZnNldCxcbiAgICAgICAgICAoZW5jb2RlZE1lc2hEYXRhLnV2MS5lbmQgLSBlbmNvZGVkTWVzaERhdGEudXYxLnN0YXJ0KSAvIDRcbiAgICAgICAgKTtcbiAgICAgICAgbW9kZWxNZXNoLnNldFVWcyhmbG9hdDMyQXJyYXlUb1ZlY3RvcjIoZmxvYXQzMkFycmF5LCB2ZXJ0ZXhDb3VudCksIDEpO1xuICAgICAgfVxuICAgICAgaWYgKGVuY29kZWRNZXNoRGF0YS51djIpIHtcbiAgICAgICAgY29uc3QgZmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShcbiAgICAgICAgICBidWZmZXJSZWFkZXIuYnVmZmVyLFxuICAgICAgICAgIGVuY29kZWRNZXNoRGF0YS51djIuc3RhcnQgKyBvZmZzZXQsXG4gICAgICAgICAgKGVuY29kZWRNZXNoRGF0YS51djIuZW5kIC0gZW5jb2RlZE1lc2hEYXRhLnV2Mi5zdGFydCkgLyA0XG4gICAgICAgICk7XG4gICAgICAgIG1vZGVsTWVzaC5zZXRVVnMoZmxvYXQzMkFycmF5VG9WZWN0b3IyKGZsb2F0MzJBcnJheSwgdmVydGV4Q291bnQpLCAyKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmNvZGVkTWVzaERhdGEudXYzKSB7XG4gICAgICAgIGNvbnN0IGZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoXG4gICAgICAgICAgYnVmZmVyUmVhZGVyLmJ1ZmZlcixcbiAgICAgICAgICBlbmNvZGVkTWVzaERhdGEudXYzLnN0YXJ0ICsgb2Zmc2V0LFxuICAgICAgICAgIChlbmNvZGVkTWVzaERhdGEudXYzLmVuZCAtIGVuY29kZWRNZXNoRGF0YS51djMuc3RhcnQpIC8gNFxuICAgICAgICApO1xuICAgICAgICBtb2RlbE1lc2guc2V0VVZzKGZsb2F0MzJBcnJheVRvVmVjdG9yMihmbG9hdDMyQXJyYXksIHZlcnRleENvdW50KSwgMyk7XG4gICAgICB9XG4gICAgICBpZiAoZW5jb2RlZE1lc2hEYXRhLnV2NCkge1xuICAgICAgICBjb25zdCBmbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFxuICAgICAgICAgIGJ1ZmZlclJlYWRlci5idWZmZXIsXG4gICAgICAgICAgZW5jb2RlZE1lc2hEYXRhLnV2NC5zdGFydCArIG9mZnNldCxcbiAgICAgICAgICAoZW5jb2RlZE1lc2hEYXRhLnV2NC5lbmQgLSBlbmNvZGVkTWVzaERhdGEudXY0LnN0YXJ0KSAvIDRcbiAgICAgICAgKTtcbiAgICAgICAgbW9kZWxNZXNoLnNldFVWcyhmbG9hdDMyQXJyYXlUb1ZlY3RvcjIoZmxvYXQzMkFycmF5LCB2ZXJ0ZXhDb3VudCksIDQpO1xuICAgICAgfVxuICAgICAgaWYgKGVuY29kZWRNZXNoRGF0YS51djUpIHtcbiAgICAgICAgY29uc3QgZmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShcbiAgICAgICAgICBidWZmZXJSZWFkZXIuYnVmZmVyLFxuICAgICAgICAgIGVuY29kZWRNZXNoRGF0YS51djUuc3RhcnQgKyBvZmZzZXQsXG4gICAgICAgICAgKGVuY29kZWRNZXNoRGF0YS51djUuZW5kIC0gZW5jb2RlZE1lc2hEYXRhLnV2NS5zdGFydCkgLyA0XG4gICAgICAgICk7XG4gICAgICAgIG1vZGVsTWVzaC5zZXRVVnMoZmxvYXQzMkFycmF5VG9WZWN0b3IyKGZsb2F0MzJBcnJheSwgdmVydGV4Q291bnQpLCA1KTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmNvZGVkTWVzaERhdGEudXY2KSB7XG4gICAgICAgIGNvbnN0IGZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoXG4gICAgICAgICAgYnVmZmVyUmVhZGVyLmJ1ZmZlcixcbiAgICAgICAgICBlbmNvZGVkTWVzaERhdGEudXY2LnN0YXJ0ICsgb2Zmc2V0LFxuICAgICAgICAgIChlbmNvZGVkTWVzaERhdGEudXY2LmVuZCAtIGVuY29kZWRNZXNoRGF0YS51djYuc3RhcnQpIC8gNFxuICAgICAgICApO1xuICAgICAgICBtb2RlbE1lc2guc2V0VVZzKGZsb2F0MzJBcnJheVRvVmVjdG9yMihmbG9hdDMyQXJyYXksIHZlcnRleENvdW50KSwgNik7XG4gICAgICB9XG4gICAgICBpZiAoZW5jb2RlZE1lc2hEYXRhLnV2Nykge1xuICAgICAgICBjb25zdCBmbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFxuICAgICAgICAgIGJ1ZmZlclJlYWRlci5idWZmZXIsXG4gICAgICAgICAgZW5jb2RlZE1lc2hEYXRhLnV2Ny5zdGFydCArIG9mZnNldCxcbiAgICAgICAgICAoZW5jb2RlZE1lc2hEYXRhLnV2Ny5lbmQgLSBlbmNvZGVkTWVzaERhdGEudXY3LnN0YXJ0KSAvIDRcbiAgICAgICAgKTtcbiAgICAgICAgbW9kZWxNZXNoLnNldFVWcyhmbG9hdDMyQXJyYXlUb1ZlY3RvcjIoZmxvYXQzMkFycmF5LCB2ZXJ0ZXhDb3VudCksIDcpO1xuICAgICAgfVxuICAgICAgaWYgKGVuY29kZWRNZXNoRGF0YS5jb2xvcnMpIHtcbiAgICAgICAgY29uc3QgZmxvYXQzMkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShcbiAgICAgICAgICBidWZmZXJSZWFkZXIuYnVmZmVyLFxuICAgICAgICAgIGVuY29kZWRNZXNoRGF0YS5jb2xvcnMuc3RhcnQgKyBvZmZzZXQsXG4gICAgICAgICAgKGVuY29kZWRNZXNoRGF0YS5jb2xvcnMuZW5kIC0gZW5jb2RlZE1lc2hEYXRhLmNvbG9ycy5zdGFydCkgLyA0XG4gICAgICAgICk7XG4gICAgICAgIG1vZGVsTWVzaC5zZXRDb2xvcnMoZmxvYXQzMkFycmF5VG9WQ29sb3IoZmxvYXQzMkFycmF5LCB2ZXJ0ZXhDb3VudCkpO1xuICAgICAgfVxuICAgICAgaWYgKGVuY29kZWRNZXNoRGF0YS5ib25lV2VpZ2h0cykge1xuICAgICAgICBjb25zdCBmbG9hdDMyQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFxuICAgICAgICAgIGJ1ZmZlclJlYWRlci5idWZmZXIsXG4gICAgICAgICAgZW5jb2RlZE1lc2hEYXRhLmJvbmVXZWlnaHRzLnN0YXJ0ICsgb2Zmc2V0LFxuICAgICAgICAgIChlbmNvZGVkTWVzaERhdGEuYm9uZVdlaWdodHMuZW5kIC0gZW5jb2RlZE1lc2hEYXRhLmJvbmVXZWlnaHRzLnN0YXJ0KSAvIDRcbiAgICAgICAgKTtcbiAgICAgICAgbW9kZWxNZXNoLnNldEJvbmVXZWlnaHRzKGZsb2F0MzJBcnJheVRvVmVjdG9yNChmbG9hdDMyQXJyYXksIHZlcnRleENvdW50KSk7XG4gICAgICB9XG4gICAgICBpZiAoZW5jb2RlZE1lc2hEYXRhLmJvbmVJbmRpY2VzKSB7XG4gICAgICAgIGNvbnN0IGZsb2F0MzJBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoXG4gICAgICAgICAgYnVmZmVyUmVhZGVyLmJ1ZmZlcixcbiAgICAgICAgICBlbmNvZGVkTWVzaERhdGEuYm9uZUluZGljZXMuc3RhcnQgKyBvZmZzZXQsXG4gICAgICAgICAgKGVuY29kZWRNZXNoRGF0YS5ib25lSW5kaWNlcy5lbmQgLSBlbmNvZGVkTWVzaERhdGEuYm9uZUluZGljZXMuc3RhcnQpIC8gNFxuICAgICAgICApO1xuICAgICAgICBtb2RlbE1lc2guc2V0Qm9uZUluZGljZXMoZmxvYXQzMkFycmF5VG9WZWN0b3I0KGZsb2F0MzJBcnJheSwgdmVydGV4Q291bnQpKTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmNvZGVkTWVzaERhdGEuYmxlbmRTaGFwZXMpIHtcbiAgICAgICAgZW5jb2RlZE1lc2hEYXRhLmJsZW5kU2hhcGVzLmZvckVhY2goKGJsZW5kU2hhcGVEYXRhKSA9PiB7XG4gICAgICAgICAgY29uc3QgYmxlbmRTaGFwZSA9IG5ldyBCbGVuZFNoYXBlKGJsZW5kU2hhcGVEYXRhLm5hbWUpO1xuICAgICAgICAgIGJsZW5kU2hhcGVEYXRhLmZyYW1lcy5mb3JFYWNoKChmcmFtZURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFxuICAgICAgICAgICAgICBidWZmZXJSZWFkZXIuYnVmZmVyLFxuICAgICAgICAgICAgICBmcmFtZURhdGEuZGVsdGFQb3NpdGlvbi5zdGFydCArIG9mZnNldCxcbiAgICAgICAgICAgICAgKGZyYW1lRGF0YS5kZWx0YVBvc2l0aW9uLmVuZCAtIGZyYW1lRGF0YS5kZWx0YVBvc2l0aW9uLnN0YXJ0KSAvIDRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBjb3VudCA9IHBvc2l0aW9uQXJyYXkubGVuZ3RoIC8gMztcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhUG9zaXRpb24gPSBmbG9hdDMyQXJyYXlUb1ZlY3RvcjMocG9zaXRpb25BcnJheSwgY291bnQpO1xuICAgICAgICAgICAgbGV0IGRlbHRhTm9ybWFsczogVmVjdG9yM1tdIHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgICBpZiAoZnJhbWVEYXRhLmRlbHRhTm9ybWFscykge1xuICAgICAgICAgICAgICBjb25zdCBub3JtYWxzQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5idWZmZXIsXG4gICAgICAgICAgICAgICAgZnJhbWVEYXRhLmRlbHRhTm9ybWFscy5zdGFydCArIG9mZnNldCxcbiAgICAgICAgICAgICAgICAoZnJhbWVEYXRhLmRlbHRhTm9ybWFscy5lbmQgLSBmcmFtZURhdGEuZGVsdGFOb3JtYWxzLnN0YXJ0KSAvIDRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgZGVsdGFOb3JtYWxzID0gZmxvYXQzMkFycmF5VG9WZWN0b3IzKG5vcm1hbHNBcnJheSwgY291bnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGRlbHRhVGFuZ2VudHM6IFZlY3RvcjRbXSB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGZyYW1lRGF0YS5kZWx0YVRhbmdlbnRzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRhbmdlbnRzQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5idWZmZXIsXG4gICAgICAgICAgICAgICAgZnJhbWVEYXRhLmRlbHRhVGFuZ2VudHMuc3RhcnQgKyBvZmZzZXQsXG4gICAgICAgICAgICAgICAgKGZyYW1lRGF0YS5kZWx0YVRhbmdlbnRzLmVuZCAtIGZyYW1lRGF0YS5kZWx0YVRhbmdlbnRzLnN0YXJ0KSAvIDRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgZGVsdGFUYW5nZW50cyA9IGZsb2F0MzJBcnJheVRvVmVjdG9yNCh0YW5nZW50c0FycmF5LCBjb3VudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBibGVuZFNoYXBlLmFkZEZyYW1lKGZyYW1lRGF0YS53ZWlnaHQsIGRlbHRhUG9zaXRpb24pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIG1vZGVsTWVzaC5hZGRCbGVuZFNoYXBlKGJsZW5kU2hhcGUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmNvZGVkTWVzaERhdGEuaW5kaWNlcykge1xuICAgICAgICBsZXQgaW5kaWNlczogVWludDE2QXJyYXkgfCBVaW50MzJBcnJheSA9IG51bGw7XG4gICAgICAgIGlmIChlbmNvZGVkTWVzaERhdGEuaW5kaWNlcy50eXBlID09PSAwKSB7XG4gICAgICAgICAgaW5kaWNlcyA9IG5ldyBVaW50MTZBcnJheShcbiAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5idWZmZXIsXG4gICAgICAgICAgICBlbmNvZGVkTWVzaERhdGEuaW5kaWNlcy5zdGFydCArIG9mZnNldCxcbiAgICAgICAgICAgIChlbmNvZGVkTWVzaERhdGEuaW5kaWNlcy5lbmQgLSBlbmNvZGVkTWVzaERhdGEuaW5kaWNlcy5zdGFydCkgLyAyXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRpY2VzID0gbmV3IFVpbnQzMkFycmF5KFxuICAgICAgICAgICAgYnVmZmVyUmVhZGVyLmJ1ZmZlcixcbiAgICAgICAgICAgIGVuY29kZWRNZXNoRGF0YS5pbmRpY2VzLnN0YXJ0ICsgb2Zmc2V0LFxuICAgICAgICAgICAgKGVuY29kZWRNZXNoRGF0YS5pbmRpY2VzLmVuZCAtIGVuY29kZWRNZXNoRGF0YS5pbmRpY2VzLnN0YXJ0KSAvIDRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIG1vZGVsTWVzaC5zZXRJbmRpY2VzKGluZGljZXMpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBlbmNvZGVkTWVzaERhdGEuc3ViTWVzaGVzLmZvckVhY2goKHN1Yk1lc2gpID0+IG1vZGVsTWVzaC5hZGRTdWJNZXNoKHN1Yk1lc2gpKTtcbiAgICAgIG1vZGVsTWVzaC51cGxvYWREYXRhKGZhbHNlKTtcbiAgICAgIHJlc29sdmUobW9kZWxNZXNoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmbG9hdDMyQXJyYXlUb1ZDb2xvcihmbG9hdDMyQXJyYXk6IEZsb2F0MzJBcnJheSwgdmVydGV4Q291bnQ6IG51bWJlcikge1xuICBjb25zdCBhcnJheSA9IG5ldyBBcnJheSh2ZXJ0ZXhDb3VudCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKykge1xuICAgIGFycmF5W2ldID0gbmV3IENvbG9yKFxuICAgICAgZmxvYXQzMkFycmF5W2kgKiA0XSxcbiAgICAgIGZsb2F0MzJBcnJheVtpICogNCArIDFdLFxuICAgICAgZmxvYXQzMkFycmF5W2kgKiA0ICsgMl0sXG4gICAgICBmbG9hdDMyQXJyYXlbaSAqIDQgKyAzXVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBmbG9hdDMyQXJyYXlUb1ZlY3RvcjQoZmxvYXQzMkFycmF5OiBGbG9hdDMyQXJyYXksIHZlcnRleENvdW50OiBudW1iZXIpIHtcbiAgY29uc3QgYXJyYXkgPSBuZXcgQXJyYXkodmVydGV4Q291bnQpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspIHtcbiAgICBhcnJheVtpXSA9IG5ldyBWZWN0b3I0KFxuICAgICAgZmxvYXQzMkFycmF5W2kgKiA0XSxcbiAgICAgIGZsb2F0MzJBcnJheVtpICogNCArIDFdLFxuICAgICAgZmxvYXQzMkFycmF5W2kgKiA0ICsgMl0sXG4gICAgICBmbG9hdDMyQXJyYXlbaSAqIDQgKyAzXVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBmbG9hdDMyQXJyYXlUb1ZlY3RvcjMoZmxvYXQzMkFycmF5OiBGbG9hdDMyQXJyYXksIHZlcnRleENvdW50OiBudW1iZXIpIHtcbiAgY29uc3QgYXJyYXkgPSBuZXcgQXJyYXkodmVydGV4Q291bnQpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspIHtcbiAgICBhcnJheVtpXSA9IG5ldyBWZWN0b3IzKGZsb2F0MzJBcnJheVtpICogM10sIGZsb2F0MzJBcnJheVtpICogMyArIDFdLCBmbG9hdDMyQXJyYXlbaSAqIDMgKyAyXSk7XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBmbG9hdDMyQXJyYXlUb1ZlY3RvcjIoZmxvYXQzMkFycmF5OiBGbG9hdDMyQXJyYXksIHZlcnRleENvdW50OiBudW1iZXIpIHtcbiAgY29uc3QgYXJyYXkgPSBuZXcgQXJyYXkodmVydGV4Q291bnQpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspIHtcbiAgICBhcnJheVtpXSA9IG5ldyBWZWN0b3IyKGZsb2F0MzJBcnJheVtpICogMl0sIGZsb2F0MzJBcnJheVtpICogMiArIDFdKTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG4iLCJpbXBvcnQgeyBFbmdpbmUsIFRleHR1cmUyRCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IEJ1ZmZlclJlYWRlciB9IGZyb20gXCIuLi8uLi91dGlscy9CdWZmZXJSZWFkZXJcIjtcbmltcG9ydCB7IGRlY29kZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvRGVjb3JhdG9yXCI7XG5cbkBkZWNvZGVyKFwiVGV4dHVyZTJEXCIpXG5leHBvcnQgY2xhc3MgVGV4dHVyZTJERGVjb2RlciB7XG4gIHN0YXRpYyBkZWNvZGUoZW5naW5lOiBFbmdpbmUsIGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogUHJvbWlzZTxUZXh0dXJlMkQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0SWQgPSBidWZmZXJSZWFkZXIubmV4dFN0cigpO1xuICAgICAgY29uc3QgbWlwbWFwID0gISFidWZmZXJSZWFkZXIubmV4dFVpbnQ4KCk7XG4gICAgICBjb25zdCBmaWx0ZXJNb2RlID0gYnVmZmVyUmVhZGVyLm5leHRVaW50OCgpO1xuICAgICAgY29uc3QgYW5pc29MZXZlbCA9IGJ1ZmZlclJlYWRlci5uZXh0VWludDgoKTtcbiAgICAgIGNvbnN0IHdyYXBNb2RlVSA9IGJ1ZmZlclJlYWRlci5uZXh0VWludDgoKTtcbiAgICAgIGNvbnN0IHdyYXBNb2RlViA9IGJ1ZmZlclJlYWRlci5uZXh0VWludDgoKTtcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGJ1ZmZlclJlYWRlci5uZXh0VWludDgoKTtcbiAgICAgIGNvbnN0IHdpZHRoID0gYnVmZmVyUmVhZGVyLm5leHRVaW50MTYoKTtcbiAgICAgIGNvbnN0IGhlaWdodCA9IGJ1ZmZlclJlYWRlci5uZXh0VWludDE2KCk7XG4gICAgICBjb25zdCBpc1BpeGVsQnVmZmVyID0gYnVmZmVyUmVhZGVyLm5leHRVaW50OCgpO1xuXG4gICAgICBjb25zdCBtaXBDb3VudCA9IGJ1ZmZlclJlYWRlci5uZXh0VWludDgoKTtcbiAgICAgIGNvbnN0IGltYWdlc0RhdGEgPSBidWZmZXJSZWFkZXIubmV4dEltYWdlc0RhdGEobWlwQ291bnQpO1xuXG4gICAgICBjb25zdCB0ZXh0dXJlMkQgPSBuZXcgVGV4dHVyZTJEKGVuZ2luZSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCBtaXBtYXApO1xuICAgICAgdGV4dHVyZTJELmZpbHRlck1vZGUgPSBmaWx0ZXJNb2RlO1xuICAgICAgdGV4dHVyZTJELmFuaXNvTGV2ZWwgPSBhbmlzb0xldmVsO1xuICAgICAgdGV4dHVyZTJELndyYXBNb2RlVSA9IHdyYXBNb2RlVTtcbiAgICAgIHRleHR1cmUyRC53cmFwTW9kZVYgPSB3cmFwTW9kZVY7XG5cbiAgICAgIGlmIChpc1BpeGVsQnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IHBpeGVsQnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoaW1hZ2VzRGF0YVswXSk7XG4gICAgICAgIHRleHR1cmUyRC5zZXRQaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlcik7XG4gICAgICAgIGlmIChtaXBtYXApIHtcbiAgICAgICAgICB0ZXh0dXJlMkQuZ2VuZXJhdGVNaXBtYXBzKCk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBtaXBDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwaXhlbEJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGltYWdlc0RhdGFbaV0pO1xuICAgICAgICAgICAgdGV4dHVyZTJELnNldFBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLCBpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBlbmdpbmUucmVzb3VyY2VNYW5hZ2VyLl9vYmplY3RQb29sW29iamVjdElkXSA9IHRleHR1cmUyRDtcbiAgICAgICAgcmVzb2x2ZSh0ZXh0dXJlMkQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyB3aW5kb3cuQmxvYihbaW1hZ2VzRGF0YVswXV0pO1xuICAgICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICB0ZXh0dXJlMkQuc2V0SW1hZ2VTb3VyY2UoaW1nKTtcbiAgICAgICAgICBsZXQgY29tcGxldGVkQ291bnQgPSAwO1xuICAgICAgICAgIGNvbnN0IG9uQ29tcGxldGUgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb21wbGV0ZWRDb3VudCsrO1xuICAgICAgICAgICAgaWYgKGNvbXBsZXRlZENvdW50ID49IG1pcENvdW50KSB7XG4gICAgICAgICAgICAgIHJlc29sdmUodGV4dHVyZTJEKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIG9uQ29tcGxldGUoKTtcbiAgICAgICAgICBpZiAobWlwbWFwKSB7XG4gICAgICAgICAgICB0ZXh0dXJlMkQuZ2VuZXJhdGVNaXBtYXBzKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG1pcENvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyB3aW5kb3cuQmxvYihbaW1hZ2VzRGF0YVtpXV0pO1xuICAgICAgICAgICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0ZXh0dXJlMkQuc2V0SW1hZ2VTb3VyY2UoaW1nLCBpKTtcbiAgICAgICAgICAgICAgICBvbkNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGltZy5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaW1nLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBfaXNfbmF0aXZlX3JlZmxlY3RfY29uc3RydWN0KCkge1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgICBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uKCkge30pKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5leHBvcnQgeyBfaXNfbmF0aXZlX3JlZmxlY3RfY29uc3RydWN0IGFzIF8gfTtcbiIsImltcG9ydCB7IF9pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3QgfSBmcm9tIFwiLi9faXNfbmF0aXZlX3JlZmxlY3RfY29uc3RydWN0LmpzXCI7XG5pbXBvcnQgeyBfc2V0X3Byb3RvdHlwZV9vZiB9IGZyb20gXCIuL19zZXRfcHJvdG90eXBlX29mLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7XG4gICAgaWYgKF9pc19uYXRpdmVfcmVmbGVjdF9jb25zdHJ1Y3QoKSkgX2NvbnN0cnVjdCA9IFJlZmxlY3QuY29uc3RydWN0O1xuICAgIGVsc2Uge1xuICAgICAgICBfY29uc3RydWN0ID0gZnVuY3Rpb24gY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHtcbiAgICAgICAgICAgIHZhciBhID0gW251bGxdO1xuICAgICAgICAgICAgYS5wdXNoLmFwcGx5KGEsIGFyZ3MpO1xuICAgICAgICAgICAgdmFyIENvbnN0cnVjdG9yID0gRnVuY3Rpb24uYmluZC5hcHBseShQYXJlbnQsIGEpO1xuICAgICAgICAgICAgdmFyIGluc3RhbmNlID0gbmV3IENvbnN0cnVjdG9yKCk7XG5cbiAgICAgICAgICAgIGlmIChDbGFzcykgX3NldF9wcm90b3R5cGVfb2YoaW5zdGFuY2UsIENsYXNzLnByb3RvdHlwZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gX2NvbnN0cnVjdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xufVxuZXhwb3J0IHsgX2NvbnN0cnVjdCBhcyBfIH07XG4iLCJpbXBvcnQgeyBFbmdpbmUsIEVudGl0eSwgTG9hZGVyIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgSUJhc2ljVHlwZSwgSUNsYXNzT2JqZWN0LCBJRW50aXR5LCBJQXNzZXRSZWYgfSBmcm9tIFwiLi9QcmVmYWJEZXNpZ25cIjtcblxuZXhwb3J0IGNsYXNzIFJlZmxlY3Rpb25QYXJzZXIge1xuICBzdGF0aWMgY3VzdG9tUGFyc2VDb21wb25lbnRIYW5kbGVzID0gbmV3IE1hcDxzdHJpbmcsIEZ1bmN0aW9uPigpO1xuXG4gIHN0YXRpYyByZWdpc3RlckN1c3RvbVBhcnNlQ29tcG9uZW50KGNvbXBvbmVudFR5cGU6IHN0cmluZywgaGFuZGxlOiBGdW5jdGlvbikge1xuICAgIHRoaXMuY3VzdG9tUGFyc2VDb21wb25lbnRIYW5kbGVzW2NvbXBvbmVudFR5cGVdID0gaGFuZGxlO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlRW50aXR5KGVudGl0eUNvbmZpZzogSUVudGl0eSwgZW5naW5lOiBFbmdpbmUpOiBQcm9taXNlPEVudGl0eT4ge1xuICAgIHJldHVybiBSZWZsZWN0aW9uUGFyc2VyLmdldEVudGl0eUJ5Q29uZmlnKGVudGl0eUNvbmZpZywgZW5naW5lKS50aGVuKChlbnRpdHkpID0+IHtcbiAgICAgIGVudGl0eS5pc0FjdGl2ZSA9IGVudGl0eUNvbmZpZy5pc0FjdGl2ZSA/PyB0cnVlO1xuICAgICAgY29uc3QgeyBwb3NpdGlvbiwgcm90YXRpb24sIHNjYWxlIH0gPSBlbnRpdHlDb25maWc7XG4gICAgICBpZiAocG9zaXRpb24pIGVudGl0eS50cmFuc2Zvcm0ucG9zaXRpb24uY29weUZyb20ocG9zaXRpb24pO1xuICAgICAgaWYgKHJvdGF0aW9uKSBlbnRpdHkudHJhbnNmb3JtLnJvdGF0aW9uLmNvcHlGcm9tKHJvdGF0aW9uKTtcbiAgICAgIGlmIChzY2FsZSkgZW50aXR5LnRyYW5zZm9ybS5zY2FsZS5jb3B5RnJvbShzY2FsZSk7XG4gICAgICByZXR1cm4gZW50aXR5O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0RW50aXR5QnlDb25maWcoZW50aXR5Q29uZmlnOiBJRW50aXR5LCBlbmdpbmU6IEVuZ2luZSk6IFByb21pc2U8RW50aXR5PiB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGFzc2V0UmVmSWQ6IHN0cmluZyA9IGVudGl0eUNvbmZpZy5hc3NldFJlZklkO1xuICAgIGlmIChhc3NldFJlZklkKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBlbmdpbmUucmVzb3VyY2VNYW5hZ2VyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIC5nZXRSZXNvdXJjZUJ5UmVmPEVudGl0eT4oeyByZWZJZDogYXNzZXRSZWZJZCwga2V5OiBlbnRpdHlDb25maWcua2V5LCBpc0Nsb25lOiBlbnRpdHlDb25maWcuaXNDbG9uZSB9KVxuICAgICAgICAgIC50aGVuKChlbnRpdHkpID0+IHtcbiAgICAgICAgICAgIGVudGl0eS5uYW1lID0gZW50aXR5Q29uZmlnLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gZW50aXR5O1xuICAgICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbnRpdHkgPSBuZXcgRW50aXR5KGVuZ2luZSwgZW50aXR5Q29uZmlnLm5hbWUpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnRpdHkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBwYXJzZUNsYXNzT2JqZWN0KFxuICAgIGl0ZW06IElDbGFzc09iamVjdCxcbiAgICBlbmdpbmU6IEVuZ2luZSxcbiAgICByZXNvdXJjZU1hbmFnZXI6IGFueSA9IGVuZ2luZS5yZXNvdXJjZU1hbmFnZXJcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBDbGFzcyA9IExvYWRlci5nZXRDbGFzcyhpdGVtLmNsYXNzKTtcbiAgICBjb25zdCBwYXJhbXMgPSBpdGVtLmNvbnN0cnVjdFBhcmFtcyA/PyBbXTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBDbGFzcyguLi5wYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLnBhcnNlUHJvcHNBbmRNZXRob2RzKGluc3RhbmNlLCBpdGVtLCBlbmdpbmUsIHJlc291cmNlTWFuYWdlcik7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VCYXNpY1R5cGUoXG4gICAgdmFsdWU6IElCYXNpY1R5cGUsXG4gICAgZW5naW5lOiBFbmdpbmUsXG4gICAgcmVzb3VyY2VNYW5hZ2VyOiBhbnkgPSBlbmdpbmUucmVzb3VyY2VNYW5hZ2VyXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwodmFsdWUubWFwKChpdGVtKSA9PiB0aGlzLnBhcnNlQmFzaWNUeXBlKGl0ZW0sIGVuZ2luZSwgcmVzb3VyY2VNYW5hZ2VyKSkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLl9pc0NsYXNzKHZhbHVlKSkge1xuICAgICAgICAvLyBjbGFzcyBvYmplY3RcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDbGFzc09iamVjdCh2YWx1ZSwgZW5naW5lLCByZXNvdXJjZU1hbmFnZXIpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl9pc1JlZih2YWx1ZSkpIHtcbiAgICAgICAgLy8gcmVmZXJlbmNlIG9iamVjdFxuICAgICAgICByZXR1cm4gcmVzb3VyY2VNYW5hZ2VyLmdldFJlc291cmNlQnlSZWYodmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYmFzaWMgdHlwZVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHBhcnNlUHJvcHNBbmRNZXRob2RzKFxuICAgIGluc3RhbmNlOiBhbnksXG4gICAgaXRlbTogT21pdDxJQ2xhc3NPYmplY3QsIFwiY2xhc3NcIj4sXG4gICAgZW5naW5lOiBFbmdpbmUsXG4gICAgcmVzb3VyY2VNYW5hZ2VyOiBhbnkgPSBlbmdpbmUucmVzb3VyY2VNYW5hZ2VyXG4gICkge1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgaWYgKGl0ZW0ubWV0aG9kcykge1xuICAgICAgZm9yIChsZXQgbWV0aG9kTmFtZSBpbiBpdGVtLm1ldGhvZHMpIHtcbiAgICAgICAgY29uc3QgbWV0aG9kUGFyYW1zID0gaXRlbS5tZXRob2RzW21ldGhvZE5hbWVdO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgY291bnQgPSBtZXRob2RQYXJhbXMubGVuZ3RoOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IG1ldGhvZFBhcmFtc1tpXTtcbiAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5wYXJzZU1ldGhvZChpbnN0YW5jZSwgbWV0aG9kTmFtZSwgcGFyYW1zLCBlbmdpbmUsIHJlc291cmNlTWFuYWdlcik7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpdGVtLnByb3BzKSB7XG4gICAgICBmb3IgKGxldCBrZXkgaW4gaXRlbS5wcm9wcykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0ucHJvcHNba2V5XTtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMucGFyc2VCYXNpY1R5cGUodmFsdWUsIGVuZ2luZSkudGhlbigodikgPT4ge1xuICAgICAgICAgIHJldHVybiAoaW5zdGFuY2Vba2V5XSA9IHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlID0gdGhpcy5jdXN0b21QYXJzZUNvbXBvbmVudEhhbmRsZXNbaW5zdGFuY2UuY29uc3RydWN0b3IubmFtZV07XG4gICAgICBpZiAoaGFuZGxlKSByZXR1cm4gaGFuZGxlKGluc3RhbmNlLCBpdGVtLCBlbmdpbmUpO1xuICAgICAgZWxzZSByZXR1cm4gaW5zdGFuY2U7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VNZXRob2QoXG4gICAgaW5zdGFuY2U6IGFueSxcbiAgICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gICAgbWV0aG9kUGFyYW1zOiBBcnJheTxJQmFzaWNUeXBlPixcbiAgICBlbmdpbmU6IEVuZ2luZSxcbiAgICByZXNvdXJjZU1hbmFnZXI6IGFueSA9IGVuZ2luZS5yZXNvdXJjZU1hbmFnZXJcbiAgKSB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKG1ldGhvZFBhcmFtcy5tYXAoKHBhcmFtKSA9PiB0aGlzLnBhcnNlQmFzaWNUeXBlKHBhcmFtLCBlbmdpbmUsIHJlc291cmNlTWFuYWdlcikpKS50aGVuKFxuICAgICAgKHJlc3VsdCkgPT4ge1xuICAgICAgICByZXR1cm4gaW5zdGFuY2VbbWV0aG9kTmFtZV0oLi4ucmVzdWx0KTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2lzQ2xhc3ModmFsdWU6IGFueSk6IHZhbHVlIGlzIElDbGFzc09iamVjdCB7XG4gICAgcmV0dXJuIHZhbHVlW1wiY2xhc3NcIl0gIT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2lzUmVmKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBJQXNzZXRSZWYge1xuICAgIHJldHVybiB2YWx1ZVtcInJlZklkXCJdICE9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgRW5naW5lLCBFbnRpdHkgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IElFbnRpdHksIElQcmVmYWJGaWxlIH0gZnJvbSBcIi4vUHJlZmFiRGVzaWduXCI7XG5pbXBvcnQgeyBSZWZsZWN0aW9uUGFyc2VyIH0gZnJvbSBcIi4vUmVmbGVjdGlvblBhcnNlclwiO1xuXG5leHBvcnQgY2xhc3MgUHJlZmFiUGFyc2VyIHtcbiAgc3RhdGljIHBhcnNlQ2hpbGRyZW4oZW50aXRpZXNDb25maWc6IE1hcDxzdHJpbmcsIElFbnRpdHk+LCBlbnRpdGllczogTWFwPHN0cmluZywgRW50aXR5PiwgcGFyZW50SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gZW50aXRpZXNDb25maWcuZ2V0KHBhcmVudElkKS5jaGlsZHJlbjtcbiAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcGFyZW50ID0gZW50aXRpZXMuZ2V0KHBhcmVudElkKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2hpbGRJZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICBjb25zdCBlbnRpdHkgPSBlbnRpdGllcy5nZXQoY2hpbGRJZCk7XG4gICAgICAgIHBhcmVudC5hZGRDaGlsZChlbnRpdHkpO1xuICAgICAgICB0aGlzLnBhcnNlQ2hpbGRyZW4oZW50aXRpZXNDb25maWcsIGVudGl0aWVzLCBjaGlsZElkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFuaW1hdG9yLFxuICBDYW1lcmEsXG4gIENvbXBvbmVudCxcbiAgRGlyZWN0TGlnaHQsXG4gIEVudGl0eSxcbiAgTWVzaFJlbmRlcmVyLFxuICBQYXJ0aWNsZVJlbmRlcmVyLFxuICBUcmFuc2Zvcm0sXG4gIFBvaW50TGlnaHQsXG4gIFNwb3RMaWdodCxcbiAgU2NyaXB0LFxuICBTcHJpdGVNYXNrLFxuICBTcHJpdGVSZW5kZXJlcixcbiAgVGV4dFJlbmRlcmVyXG59IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcblxuZXhwb3J0IGNvbnN0IENvbXBvbmVudE1hcDogUmVjb3JkPHN0cmluZywgbmV3IChlbnRpdHk6IEVudGl0eSkgPT4gQ29tcG9uZW50PiA9IHtcbiAgVHJhbnNmb3JtLFxuICBBbmltYXRvcixcbiAgRGlyZWN0TGlnaHQsXG4gIENhbWVyYSxcbiAgTWVzaFJlbmRlcmVyLFxuICBQYXJ0aWNsZVJlbmRlcmVyLFxuICBQb2ludExpZ2h0LFxuICBTcG90TGlnaHQsXG4gIFNjcmlwdCxcbiAgU3ByaXRlTWFzayxcbiAgU3ByaXRlUmVuZGVyZXIsXG4gIFRleHRSZW5kZXJlclxufTtcbiIsImltcG9ydCB7XG4gIEFuaW1hdGlvbkFycmF5Q3VydmUsXG4gIEFuaW1hdGlvbkNsaXAsXG4gIEFuaW1hdGlvbkNvbG9yQ3VydmUsXG4gIEFuaW1hdGlvbkN1cnZlLFxuICBBbmltYXRpb25FdmVudCxcbiAgQW5pbWF0aW9uRmxvYXRBcnJheUN1cnZlLFxuICBBbmltYXRpb25GbG9hdEN1cnZlLFxuICBBbmltYXRpb25RdWF0ZXJuaW9uQ3VydmUsXG4gIEFuaW1hdGlvblZlY3RvcjJDdXJ2ZSxcbiAgQW5pbWF0aW9uVmVjdG9yM0N1cnZlLFxuICBBbmltYXRpb25WZWN0b3I0Q3VydmUsXG4gIEVuZ2luZSxcbiAgS2V5ZnJhbWUsXG4gIEtleWZyYW1lVmFsdWVUeXBlXG59IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IENvbG9yLCBRdWF0ZXJuaW9uLCBWZWN0b3IyLCBWZWN0b3IzLCBWZWN0b3I0IH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtbWF0aFwiO1xuaW1wb3J0IHR5cGUgeyBCdWZmZXJSZWFkZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvQnVmZmVyUmVhZGVyXCI7XG5pbXBvcnQgeyBkZWNvZGVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzL0RlY29yYXRvclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwIH0gZnJvbSBcIi4vQ29tcG9uZW50TWFwXCI7XG5cbmV4cG9ydCB7IENvbXBvbmVudE1hcCB9IGZyb20gXCIuL0NvbXBvbmVudE1hcFwiO1xuXG5leHBvcnQgZW51bSBJbnRlcnBvbGFibGVWYWx1ZVR5cGUge1xuICBGbG9hdCxcbiAgRmxvYXRBcnJheSxcbiAgVmVjdG9yMixcbiAgVmVjdG9yMyxcbiAgVmVjdG9yNCxcbiAgUXVhdGVybmlvbixcbiAgQ29sb3IsXG4gIEFycmF5LFxuICBCb29sZWFuXG59XG5cbkBkZWNvZGVyKFwiQW5pbWF0aW9uQ2xpcFwiKVxuZXhwb3J0IGNsYXNzIEFuaW1hdGlvbkNsaXBEZWNvZGVyIHtcbiAgcHVibGljIHN0YXRpYyBkZWNvZGUoZW5naW5lOiBFbmdpbmUsIGJ1ZmZlclJlYWRlcjogQnVmZmVyUmVhZGVyKTogUHJvbWlzZTxBbmltYXRpb25DbGlwPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gYnVmZmVyUmVhZGVyLm5leHRTdHIoKTtcbiAgICAgIGNvbnN0IGNsaXAgPSBuZXcgQW5pbWF0aW9uQ2xpcChuYW1lKTtcbiAgICAgIGNvbnN0IGV2ZW50c0xlbiA9IGJ1ZmZlclJlYWRlci5uZXh0VWludDE2KCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV2ZW50c0xlbjsgKytpKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEFuaW1hdGlvbkV2ZW50KCk7XG4gICAgICAgIGV2ZW50LnRpbWUgPSBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKTtcbiAgICAgICAgZXZlbnQuZnVuY3Rpb25OYW1lID0gYnVmZmVyUmVhZGVyLm5leHRTdHIoKTtcbiAgICAgICAgZXZlbnQucGFyYW1ldGVyID0gSlNPTi5wYXJzZShidWZmZXJSZWFkZXIubmV4dFN0cigpKS52YWw7XG4gICAgICAgIGNsaXAuYWRkRXZlbnQoZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJ2ZUJpbmRpbmdzTGVuID0gYnVmZmVyUmVhZGVyLm5leHRVaW50MTYoKTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJ2ZUJpbmRpbmdzTGVuOyArK2kpIHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gYnVmZmVyUmVhZGVyLm5leHRTdHIoKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50U3RyID0gYnVmZmVyUmVhZGVyLm5leHRTdHIoKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IENvbXBvbmVudE1hcFtjb21wb25lbnRTdHJdO1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGJ1ZmZlclJlYWRlci5uZXh0U3RyKCk7XG4gICAgICAgIGxldCBjdXJ2ZTogQW5pbWF0aW9uQ3VydmU8S2V5ZnJhbWVWYWx1ZVR5cGU+O1xuICAgICAgICBjb25zdCBpbnRlcnBvbGF0aW9uID0gYnVmZmVyUmVhZGVyLm5leHRVaW50OCgpO1xuICAgICAgICBjb25zdCBrZXlzTGVuID0gYnVmZmVyUmVhZGVyLm5leHRVaW50MTYoKTtcbiAgICAgICAgY29uc3QgY3VydmVUeXBlID0gYnVmZmVyUmVhZGVyLm5leHRTdHIoKTtcblxuICAgICAgICBzd2l0Y2ggKGN1cnZlVHlwZSkge1xuICAgICAgICAgIGNhc2UgXCJBbmltYXRpb25GbG9hdEN1cnZlXCI6IHtcbiAgICAgICAgICAgIGN1cnZlID0gY3VydmUgfHwgbmV3IEFuaW1hdGlvbkZsb2F0Q3VydmUoKTtcbiAgICAgICAgICAgIGN1cnZlLmludGVycG9sYXRpb24gPSBpbnRlcnBvbGF0aW9uO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBrZXlzTGVuOyArK2opIHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ZnJhbWUgPSBuZXcgS2V5ZnJhbWU8bnVtYmVyPigpO1xuICAgICAgICAgICAgICBrZXlmcmFtZS50aW1lID0gYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLnZhbHVlID0gYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLmluVGFuZ2VudCA9IGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpO1xuICAgICAgICAgICAgICBrZXlmcmFtZS5vdXRUYW5nZW50ID0gYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCk7XG4gICAgICAgICAgICAgICg8QW5pbWF0aW9uRmxvYXRDdXJ2ZT5jdXJ2ZSkuYWRkS2V5KGtleWZyYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiQW5pbWF0aW9uQXJyYXlDdXJ2ZVwiOiB7XG4gICAgICAgICAgICBjdXJ2ZSA9IGN1cnZlIHx8IG5ldyBBbmltYXRpb25BcnJheUN1cnZlKCk7XG4gICAgICAgICAgICBjdXJ2ZS5pbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvbjtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwga2V5c0xlbjsgKytqKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGtleWZyYW1lID0gbmV3IEtleWZyYW1lPG51bWJlcltdPigpO1xuICAgICAgICAgICAgICBrZXlmcmFtZS50aW1lID0gYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGxlbiA9IGJ1ZmZlclJlYWRlci5uZXh0VWludDE2KCk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLnZhbHVlID0gQXJyYXkuZnJvbShidWZmZXJSZWFkZXIubmV4dEZsb2F0MzJBcnJheShsZW4pKTtcbiAgICAgICAgICAgICAga2V5ZnJhbWUuaW5UYW5nZW50ID0gQXJyYXkuZnJvbShidWZmZXJSZWFkZXIubmV4dEZsb2F0MzJBcnJheShsZW4pKTtcbiAgICAgICAgICAgICAga2V5ZnJhbWUub3V0VGFuZ2VudCA9IEFycmF5LmZyb20oYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyQXJyYXkobGVuKSk7XG4gICAgICAgICAgICAgICg8QW5pbWF0aW9uQXJyYXlDdXJ2ZT5jdXJ2ZSkuYWRkS2V5KGtleWZyYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiQW5pbWF0aW9uRmxvYXRBcnJheUN1cnZlXCI6IHtcbiAgICAgICAgICAgIGN1cnZlID0gY3VydmUgfHwgbmV3IEFuaW1hdGlvbkZsb2F0QXJyYXlDdXJ2ZSgpO1xuICAgICAgICAgICAgY3VydmUuaW50ZXJwb2xhdGlvbiA9IGludGVycG9sYXRpb247XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGtleXNMZW47ICsraikge1xuICAgICAgICAgICAgICBjb25zdCBrZXlmcmFtZSA9IG5ldyBLZXlmcmFtZTxGbG9hdDMyQXJyYXk+KCk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLnRpbWUgPSBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKTtcbiAgICAgICAgICAgICAgY29uc3QgbGVuID0gYnVmZmVyUmVhZGVyLm5leHRVaW50MTYoKTtcbiAgICAgICAgICAgICAga2V5ZnJhbWUudmFsdWUgPSBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzJBcnJheShsZW4pO1xuICAgICAgICAgICAgICBrZXlmcmFtZS5pblRhbmdlbnQgPSBBcnJheS5mcm9tKGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMkFycmF5KGxlbikpO1xuICAgICAgICAgICAgICBrZXlmcmFtZS5vdXRUYW5nZW50ID0gQXJyYXkuZnJvbShidWZmZXJSZWFkZXIubmV4dEZsb2F0MzJBcnJheShsZW4pKTtcbiAgICAgICAgICAgICAgKDxBbmltYXRpb25GbG9hdEFycmF5Q3VydmU+Y3VydmUpLmFkZEtleShrZXlmcmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIkFuaW1hdGlvblZlY3RvcjJDdXJ2ZVwiOiB7XG4gICAgICAgICAgICBjdXJ2ZSA9IGN1cnZlIHx8IG5ldyBBbmltYXRpb25WZWN0b3IyQ3VydmUoKTtcbiAgICAgICAgICAgIGN1cnZlLmludGVycG9sYXRpb24gPSBpbnRlcnBvbGF0aW9uO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBrZXlzTGVuOyArK2opIHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ZnJhbWUgPSBuZXcgS2V5ZnJhbWU8VmVjdG9yMj4oKTtcbiAgICAgICAgICAgICAga2V5ZnJhbWUudGltZSA9IGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpO1xuICAgICAgICAgICAgICBrZXlmcmFtZS52YWx1ZSA9IG5ldyBWZWN0b3IyKGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLCBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLmluVGFuZ2VudCA9IG5ldyBWZWN0b3IyKGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLCBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLm91dFRhbmdlbnQgPSBuZXcgVmVjdG9yMihidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSwgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCkpO1xuICAgICAgICAgICAgICAoPEFuaW1hdGlvblZlY3RvcjJDdXJ2ZT5jdXJ2ZSkuYWRkS2V5KGtleWZyYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiQW5pbWF0aW9uVmVjdG9yM0N1cnZlXCI6IHtcbiAgICAgICAgICAgIGN1cnZlID0gY3VydmUgfHwgbmV3IEFuaW1hdGlvblZlY3RvcjNDdXJ2ZSgpO1xuICAgICAgICAgICAgY3VydmUuaW50ZXJwb2xhdGlvbiA9IGludGVycG9sYXRpb247XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGtleXNMZW47ICsraikge1xuICAgICAgICAgICAgICBjb25zdCBrZXlmcmFtZSA9IG5ldyBLZXlmcmFtZTxWZWN0b3IzPigpO1xuICAgICAgICAgICAgICBrZXlmcmFtZS50aW1lID0gYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLnZhbHVlID0gbmV3IFZlY3RvcjMoXG4gICAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCksXG4gICAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCksXG4gICAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAga2V5ZnJhbWUuaW5UYW5nZW50ID0gbmV3IFZlY3RvcjMoXG4gICAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCksXG4gICAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCksXG4gICAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAga2V5ZnJhbWUub3V0VGFuZ2VudCA9IG5ldyBWZWN0b3IzKFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICg8QW5pbWF0aW9uVmVjdG9yM0N1cnZlPmN1cnZlKS5hZGRLZXkoa2V5ZnJhbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgXCJBbmltYXRpb25WZWN0b3I0Q3VydmVcIjoge1xuICAgICAgICAgICAgY3VydmUgPSBjdXJ2ZSB8fCBuZXcgQW5pbWF0aW9uVmVjdG9yNEN1cnZlKCk7XG4gICAgICAgICAgICBjdXJ2ZS5pbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IGtleWZyYW1lID0gbmV3IEtleWZyYW1lPFZlY3RvcjQ+KCk7XG4gICAgICAgICAgICBrZXlmcmFtZS50aW1lID0gYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCk7XG4gICAgICAgICAgICBrZXlmcmFtZS52YWx1ZSA9IG5ldyBWZWN0b3I0KFxuICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSxcbiAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCksXG4gICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGtleWZyYW1lLmluVGFuZ2VudCA9IG5ldyBWZWN0b3I0KFxuICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSxcbiAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCksXG4gICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGtleWZyYW1lLm91dFRhbmdlbnQgPSBuZXcgVmVjdG9yNChcbiAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCksXG4gICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSxcbiAgICAgICAgICAgICAgYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAoPEFuaW1hdGlvblZlY3RvcjRDdXJ2ZT5jdXJ2ZSkuYWRkS2V5KGtleWZyYW1lKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFwiQW5pbWF0aW9uQ29sb3JDdXJ2ZVwiOiB7XG4gICAgICAgICAgICBjdXJ2ZSA9IGN1cnZlIHx8IG5ldyBBbmltYXRpb25Db2xvckN1cnZlKCk7XG4gICAgICAgICAgICBjdXJ2ZS5pbnRlcnBvbGF0aW9uID0gaW50ZXJwb2xhdGlvbjtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwga2V5c0xlbjsgKytqKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGtleWZyYW1lID0gbmV3IEtleWZyYW1lPENvbG9yPigpO1xuICAgICAgICAgICAgICBrZXlmcmFtZS50aW1lID0gYnVmZmVyUmVhZGVyLm5leHRGbG9hdDMyKCk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLnZhbHVlID0gbmV3IENvbG9yKFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLmluVGFuZ2VudCA9IG5ldyBWZWN0b3I0KFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLm91dFRhbmdlbnQgPSBuZXcgVmVjdG9yNChcbiAgICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSxcbiAgICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSxcbiAgICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSxcbiAgICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAoPEFuaW1hdGlvbkNvbG9yQ3VydmU+Y3VydmUpLmFkZEtleShrZXlmcmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcIkFuaW1hdGlvblF1YXRlcm5pb25DdXJ2ZVwiOiB7XG4gICAgICAgICAgICBjdXJ2ZSA9IGN1cnZlIHx8IG5ldyBBbmltYXRpb25RdWF0ZXJuaW9uQ3VydmUoKTtcbiAgICAgICAgICAgIGN1cnZlLmludGVycG9sYXRpb24gPSBpbnRlcnBvbGF0aW9uO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBrZXlzTGVuOyArK2opIHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ZnJhbWUgPSBuZXcgS2V5ZnJhbWU8UXVhdGVybmlvbj4oKTtcbiAgICAgICAgICAgICAga2V5ZnJhbWUudGltZSA9IGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpO1xuICAgICAgICAgICAgICBrZXlmcmFtZS52YWx1ZSA9IG5ldyBRdWF0ZXJuaW9uKFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLmluVGFuZ2VudCA9IG5ldyBWZWN0b3I0KFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpLFxuICAgICAgICAgICAgICAgIGJ1ZmZlclJlYWRlci5uZXh0RmxvYXQzMigpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGtleWZyYW1lLm91dFRhbmdlbnQgPSBuZXcgVmVjdG9yNChcbiAgICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSxcbiAgICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSxcbiAgICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKSxcbiAgICAgICAgICAgICAgICBidWZmZXJSZWFkZXIubmV4dEZsb2F0MzIoKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAoPEFuaW1hdGlvblF1YXRlcm5pb25DdXJ2ZT5jdXJ2ZSkuYWRkS2V5KGtleWZyYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjbGlwLmFkZEN1cnZlQmluZGluZyhyZWxhdGl2ZVBhdGgsIGNvbXBvbmVudFR5cGUsIHByb3BlcnR5LCBjdXJ2ZSk7XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoY2xpcCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IENvbXBvbmVudCwgRW50aXR5LCBTY2VuZSB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcbmltcG9ydCB7IElFbnRpdHksIElTY2VuZSB9IGZyb20gXCIuLi9wcmVmYWIvUHJlZmFiRGVzaWduXCI7XG5cbmV4cG9ydCBjbGFzcyBTY2VuZVBhcnNlckNvbnRleHQge1xuICBlbnRpdHlNYXA6IE1hcDxzdHJpbmcsIEVudGl0eT4gPSBuZXcgTWFwKCk7XG4gIGNvbXBvbmVudHM6IE1hcDxzdHJpbmcsIENvbXBvbmVudD4gPSBuZXcgTWFwKCk7XG4gIGFzc2V0czogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcbiAgZW50aXR5Q29uZmlnTWFwOiBNYXA8c3RyaW5nLCBJRW50aXR5PiA9IG5ldyBNYXAoKTtcbiAgcm9vdElkczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IG9yaWdpbmFsRGF0YTogSVNjZW5lLCBwdWJsaWMgcmVhZG9ubHkgc2NlbmU6IFNjZW5lKSB7fVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5lbnRpdHlNYXAuY2xlYXIoKTtcbiAgICB0aGlzLmNvbXBvbmVudHMuY2xlYXIoKTtcbiAgICB0aGlzLmFzc2V0cy5jbGVhcigpO1xuICAgIHRoaXMuZW50aXR5Q29uZmlnTWFwLmNsZWFyKCk7XG4gICAgdGhpcy5yb290SWRzLmxlbmd0aCA9IDA7XG4gIH1cbn1cbiIsImltcG9ydCB7IEVuZ2luZSwgRW50aXR5LCBMb2FkZXIsIFNjZW5lIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgSUVudGl0eSwgSVNjZW5lIH0gZnJvbSBcIi4uL3ByZWZhYi9QcmVmYWJEZXNpZ25cIjtcbmltcG9ydCB7IFByZWZhYlBhcnNlciB9IGZyb20gXCIuLi9wcmVmYWIvUHJlZmFiUGFyc2VyXCI7XG5pbXBvcnQgeyBSZWZsZWN0aW9uUGFyc2VyIH0gZnJvbSBcIi4uL3ByZWZhYi9SZWZsZWN0aW9uUGFyc2VyXCI7XG5pbXBvcnQgeyBTY2VuZVBhcnNlckNvbnRleHQgfSBmcm9tIFwiLi9TY2VuZVBhcnNlckNvbnRleHRcIjtcblxuLyoqIEBJbnRlcm5hbCAqL1xuZXhwb3J0IGNsYXNzIFNjZW5lUGFyc2VyIHtcbiAgLyoqXG4gICAqIFBhcnNlIHNjZW5lIGRhdGEuXG4gICAqIEBwYXJhbSBlbmdpbmUgLSB0aGUgZW5naW5lIG9mIHRoZSBwYXJzZXIgY29udGV4dFxuICAgKiBAcGFyYW0gc2NlbmVEYXRhIC0gc2NlbmUgZGF0YSB3aGljaCBpcyBleHBvcnRlZCBieSBlZGl0b3JcbiAgICogQHJldHVybnMgYSBwcm9taXNlIG9mIHNjZW5lXG4gICAqL1xuICBzdGF0aWMgcGFyc2UoZW5naW5lOiBFbmdpbmUsIHNjZW5lRGF0YTogSVNjZW5lKTogUHJvbWlzZTxTY2VuZT4ge1xuICAgIGNvbnN0IHNjZW5lID0gbmV3IFNjZW5lKGVuZ2luZSk7XG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBTY2VuZVBhcnNlckNvbnRleHQoc2NlbmVEYXRhLCBzY2VuZSk7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFNjZW5lUGFyc2VyKGNvbnRleHQpO1xuICAgIHBhcnNlci5zdGFydCgpO1xuICAgIHJldHVybiBwYXJzZXIucHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcHJvbWlzZSBvZiBwYXJzZWQgc2NlbmUuXG4gICAqL1xuICByZWFkb25seSBwcm9taXNlOiBQcm9taXNlPFNjZW5lPjtcblxuICBwcml2YXRlIF9yZXNvbHZlOiAoc2NlbmU6IFNjZW5lKSA9PiB2b2lkO1xuICBwcml2YXRlIF9yZWplY3Q6IChyZWFzb246IGFueSkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfZW5naW5lOiBFbmdpbmU7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNvbnRleHQ6IFNjZW5lUGFyc2VyQ29udGV4dCkge1xuICAgIHRoaXMuX2VuZ2luZSA9IHRoaXMuY29udGV4dC5zY2VuZS5lbmdpbmU7XG4gICAgdGhpcy5fb3JnYW5pemVFbnRpdGllcyA9IHRoaXMuX29yZ2FuaXplRW50aXRpZXMuYmluZCh0aGlzKTtcbiAgICB0aGlzLl9wYXJzZUNvbXBvbmVudHMgPSB0aGlzLl9wYXJzZUNvbXBvbmVudHMuYmluZCh0aGlzKTtcbiAgICB0aGlzLl9jbGVhckFuZFJlc29sdmVTY2VuZSA9IHRoaXMuX2NsZWFyQW5kUmVzb2x2ZVNjZW5lLmJpbmQodGhpcyk7XG4gICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2U8U2NlbmU+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX3JlamVjdCA9IHJlamVjdDtcbiAgICAgIHRoaXMuX3Jlc29sdmUgPSByZXNvbHZlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIHN0YXJ0IHBhcnNlIHRoZSBzY2VuZSAqL1xuICBzdGFydCgpIHtcbiAgICB0aGlzLl9wYXJzZUVudGl0aWVzKClcbiAgICAgIC50aGVuKHRoaXMuX29yZ2FuaXplRW50aXRpZXMpXG4gICAgICAudGhlbih0aGlzLl9wYXJzZUNvbXBvbmVudHMpXG4gICAgICAudGhlbih0aGlzLl9jbGVhckFuZFJlc29sdmVTY2VuZSlcbiAgICAgIC50aGVuKHRoaXMuX3Jlc29sdmUpXG4gICAgICAuY2F0Y2godGhpcy5fcmVqZWN0KTtcbiAgfVxuXG4gIHByaXZhdGUgX3BhcnNlRW50aXRpZXMoKTogUHJvbWlzZTxFbnRpdHlbXT4ge1xuICAgIGNvbnN0IGVudGl0aWVzQ29uZmlnID0gdGhpcy5jb250ZXh0Lm9yaWdpbmFsRGF0YS5lbnRpdGllcztcbiAgICBjb25zdCBlbnRpdHlDb25maWdNYXAgPSB0aGlzLmNvbnRleHQuZW50aXR5Q29uZmlnTWFwO1xuICAgIGNvbnN0IGVudGl0aWVzTWFwID0gdGhpcy5jb250ZXh0LmVudGl0eU1hcDtcbiAgICBjb25zdCByb290SWRzID0gdGhpcy5jb250ZXh0LnJvb3RJZHM7XG4gICAgY29uc3QgZW5naW5lID0gdGhpcy5fZW5naW5lO1xuICAgIGNvbnN0IHByb21pc2VzID0gZW50aXRpZXNDb25maWcubWFwKChlbnRpdHlDb25maWcpID0+IHtcbiAgICAgIGVudGl0eUNvbmZpZ01hcC5zZXQoZW50aXR5Q29uZmlnLmlkLCBlbnRpdHlDb25maWcpO1xuICAgICAgLy8gcmVjb3JkIHJvb3QgZW50aXRpZXNcbiAgICAgIGlmICghZW50aXR5Q29uZmlnLnBhcmVudCkgcm9vdElkcy5wdXNoKGVudGl0eUNvbmZpZy5pZCk7XG4gICAgICByZXR1cm4gUmVmbGVjdGlvblBhcnNlci5wYXJzZUVudGl0eShlbnRpdHlDb25maWcsIGVuZ2luZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKGVudGl0aWVzKSA9PiB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGVudGl0aWVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBlbnRpdGllc01hcC5zZXQoZW50aXRpZXNDb25maWdbaV0uaWQsIGVudGl0aWVzW2ldKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbnRpdGllcztcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX29yZ2FuaXplRW50aXRpZXMoKSB7XG4gICAgY29uc3QgeyBlbnRpdHlDb25maWdNYXAsIGVudGl0eU1hcCwgc2NlbmUsIHJvb3RJZHMgfSA9IHRoaXMuY29udGV4dDtcbiAgICBmb3IgKGNvbnN0IHJvb3RJZCBvZiByb290SWRzKSB7XG4gICAgICBQcmVmYWJQYXJzZXIucGFyc2VDaGlsZHJlbihlbnRpdHlDb25maWdNYXAsIGVudGl0eU1hcCwgcm9vdElkKTtcbiAgICB9XG4gICAgY29uc3Qgcm9vdEVudGl0aWVzID0gcm9vdElkcy5tYXAoKGlkKSA9PiBlbnRpdHlNYXAuZ2V0KGlkKSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb290RW50aXRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNjZW5lLmFkZFJvb3RFbnRpdHkocm9vdEVudGl0aWVzW2ldKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUNvbXBvbmVudHMoKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGNvbnN0IGVudGl0aWVzQ29uZmlnID0gdGhpcy5jb250ZXh0Lm9yaWdpbmFsRGF0YS5lbnRpdGllcztcbiAgICBjb25zdCBlbnRpdHlNYXAgPSB0aGlzLmNvbnRleHQuZW50aXR5TWFwO1xuXG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGVudGl0aWVzQ29uZmlnLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgZW50aXR5Q29uZmlnID0gZW50aXRpZXNDb25maWdbaV07XG4gICAgICBjb25zdCBlbnRpdHkgPSBlbnRpdHlNYXAuZ2V0KGVudGl0eUNvbmZpZy5pZCk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVudGl0eUNvbmZpZy5jb21wb25lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudENvbmZpZyA9IGVudGl0eUNvbmZpZy5jb21wb25lbnRzW2ldO1xuICAgICAgICBjb25zdCBrZXkgPSAhY29tcG9uZW50Q29uZmlnLnJlZklkID8gY29tcG9uZW50Q29uZmlnLmNsYXNzIDogY29tcG9uZW50Q29uZmlnLnJlZklkO1xuICAgICAgICBsZXQgY29tcG9uZW50O1xuICAgICAgICAvLyBUT0RPOiByZW1vdmUgaGFjayBjb2RlIHdoZW4gc3VwcG9ydCBhZGRpdGlvbmFsIGVkaXRcbiAgICAgICAgaWYgKGtleSA9PT0gXCJBbmltYXRvclwiKSB7XG4gICAgICAgICAgY29tcG9uZW50ID0gZW50aXR5LmdldENvbXBvbmVudChMb2FkZXIuZ2V0Q2xhc3Moa2V5KSk7XG4gICAgICAgIH1cbiAgICAgICAgY29tcG9uZW50ID0gY29tcG9uZW50IHx8IGVudGl0eS5hZGRDb21wb25lbnQoTG9hZGVyLmdldENsYXNzKGtleSkpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gUmVmbGVjdGlvblBhcnNlci5wYXJzZVByb3BzQW5kTWV0aG9kcyhjb21wb25lbnQsIGNvbXBvbmVudENvbmZpZywgZW50aXR5LmVuZ2luZSk7XG4gICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhckFuZFJlc29sdmVTY2VuZSgpIHtcbiAgICBjb25zdCBzY2VuZSA9IHRoaXMuY29udGV4dC5zY2VuZTtcbiAgICB0aGlzLmNvbnRleHQuZGVzdHJveSgpO1xuICAgIHJldHVybiBzY2VuZTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQXNzZXRQcm9taXNlLFxuICBMb2FkZXIsXG4gIExvYWRJdGVtLFxuICBNZXNoLFxuICBNb2RlbE1lc2gsXG4gIHJlc291cmNlTG9hZGVyLFxuICBSZXNvdXJjZU1hbmFnZXIsXG4gIFVubGl0TWF0ZXJpYWxcbn0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSBcIi4uLy4uXCI7XG5cbkByZXNvdXJjZUxvYWRlcihcIk1lc2hcIiwgW1wicHJlZmFiXCJdLCB0cnVlKVxuZXhwb3J0IGNsYXNzIE1lc2hMb2FkZXIgZXh0ZW5kcyBMb2FkZXI8TW9kZWxNZXNoPiB7XG4gIGxvYWQoaXRlbTogTG9hZEl0ZW0sIHJlc291cmNlTWFuYWdlcjogUmVzb3VyY2VNYW5hZ2VyKTogQXNzZXRQcm9taXNlPE1vZGVsTWVzaD4ge1xuICAgIHJldHVybiBuZXcgQXNzZXRQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdDxBcnJheUJ1ZmZlcj4oaXRlbS51cmwsIHsgdHlwZTogXCJhcnJheWJ1ZmZlclwiIH0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgZGVjb2RlPE1vZGVsTWVzaD4oZGF0YSwgcmVzb3VyY2VNYW5hZ2VyLmVuZ2luZSkudGhlbigobWVzaCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobWVzaCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFzc2V0UHJvbWlzZSxcbiAgTG9hZGVyLFxuICBMb2FkSXRlbSxcbiAgcmVzb3VyY2VMb2FkZXIsXG4gIFJlc291cmNlTWFuYWdlcixcbiAgVGV4dHVyZTJEfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tIFwiLi4vLi5cIjtcblxuQHJlc291cmNlTG9hZGVyKFwiRWRpdG9yVGV4dHVyZTJEXCIsIFtcInByZWZhYlwiXSwgdHJ1ZSlcbmV4cG9ydCBjbGFzcyBFZGl0b3JUZXh0dXJlTG9hZGVyIGV4dGVuZHMgTG9hZGVyPFRleHR1cmUyRD4ge1xuICBsb2FkKGl0ZW06IExvYWRJdGVtLCByZXNvdXJjZU1hbmFnZXI6IFJlc291cmNlTWFuYWdlcik6IEFzc2V0UHJvbWlzZTxUZXh0dXJlMkQ+IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0UHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5yZXF1ZXN0PEFycmF5QnVmZmVyPihpdGVtLnVybCwgeyB0eXBlOiBcImFycmF5YnVmZmVyXCIgfSkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICBkZWNvZGU8VGV4dHVyZTJEPihkYXRhLCByZXNvdXJjZU1hbmFnZXIuZW5naW5lKS50aGVuKCh0ZXh0dXJlKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSh0ZXh0dXJlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgRW5naW5lIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgQnVmZmVyUmVhZGVyIH0gZnJvbSBcIi4vdXRpbHMvQnVmZmVyUmVhZGVyXCI7XG5pbXBvcnQgeyBkZWNvZGVyTWFwLCBkZWNvZGVyIH0gZnJvbSBcIi4vdXRpbHMvRGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBGaWxlSGVhZGVyIH0gZnJvbSBcIi4vdXRpbHMvRmlsZUhlYWRlclwiO1xuXG5leHBvcnQgeyBNZXNoRGVjb2RlciB9IGZyb20gXCIuL3Jlc291cmNlcy9tZXNoL01lc2hEZWNvZGVyXCI7XG5leHBvcnQgeyBUZXh0dXJlMkREZWNvZGVyIH0gZnJvbSBcIi4vcmVzb3VyY2VzL3RleHR1cmUyRC9UZXh0dXJlRGVjb2RlclwiO1xuZXhwb3J0IHsgUmVmbGVjdGlvblBhcnNlciB9IGZyb20gXCIuL3Jlc291cmNlcy9wcmVmYWIvUmVmbGVjdGlvblBhcnNlclwiO1xuZXhwb3J0IHsgUHJlZmFiUGFyc2VyIH0gZnJvbSBcIi4vcmVzb3VyY2VzL3ByZWZhYi9QcmVmYWJQYXJzZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jlc291cmNlcy9hbmltYXRpb25DbGlwL0FuaW1hdGlvbkNsaXBEZWNvZGVyXCI7XG5leHBvcnQgdHlwZSB7IElNb2RlbE1lc2ggfSBmcm9tIFwiLi9yZXNvdXJjZXMvbWVzaC9JTW9kZWxNZXNoXCI7XG5cbi8qKlxuICogRGVjb2RlIGVuZ2luZSBiaW5hcnkgcmVzb3VyY2UuXG4gKiBAcGFyYW0gYXJyYXlCdWZmZXIgLSBhcnJheSBidWZmZXIgb2YgZGVjb2RlIGJpbmFyeSBmaWxlXG4gKiBAcGFyYW0gZW5naW5lIC0gZW5naW5lXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlPFQ+KGFycmF5QnVmZmVyOiBBcnJheUJ1ZmZlciwgZW5naW5lOiBFbmdpbmUpOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgaGVhZGVyID0gRmlsZUhlYWRlci5kZWNvZGUoYXJyYXlCdWZmZXIpO1xuICBjb25zdCBidWZmZXJSZWFkZXIgPSBuZXcgQnVmZmVyUmVhZGVyKGFycmF5QnVmZmVyLCBoZWFkZXIuaGVhZGVyTGVuZ3RoLCBoZWFkZXIuZGF0YUxlbmd0aCk7XG4gIHJldHVybiBkZWNvZGVyTWFwW2hlYWRlci50eXBlXS5kZWNvZGUoZW5naW5lLCBidWZmZXJSZWFkZXIpLnRoZW4oKG9iamVjdCkgPT4ge1xuICAgIG9iamVjdC5uYW1lID0gaGVhZGVyLm5hbWU7XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbmV4cG9ydCAqIGZyb20gXCIuL3Jlc291cmNlcy9wcmVmYWIvUHJlZmFiRGVzaWduXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvdXJjZXMvc2NlbmUvU2NlbmVQYXJzZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jlc291cmNlcy9zY2VuZS9NZXNoTG9hZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZXNvdXJjZXMvc2NlbmUvRWRpdG9yVGV4dHVyZUxvYWRlclwiO1xuIiwiaW1wb3J0IHtcbiAgcmVzb3VyY2VMb2FkZXIsXG4gIExvYWRlcixcbiAgQXNzZXRQcm9taXNlLFxuICBBc3NldFR5cGUsXG4gIExvYWRJdGVtLFxuICBSZXNvdXJjZU1hbmFnZXIsXG4gIE1vZGVsTWVzaFxufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tIFwiLi9yZXNvdXJjZS1kZXNlcmlhbGl6ZVwiO1xuXG5AcmVzb3VyY2VMb2FkZXIoQXNzZXRUeXBlLk1lc2gsIFtcIm1lc2hcIl0pXG5jbGFzcyBNZXNoTG9hZGVyIGV4dGVuZHMgTG9hZGVyPE1vZGVsTWVzaD4ge1xuICBsb2FkKGl0ZW06IExvYWRJdGVtLCByZXNvdXJjZU1hbmFnZXI6IFJlc291cmNlTWFuYWdlcik6IEFzc2V0UHJvbWlzZTxNb2RlbE1lc2g+IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0UHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlcXVlc3Q8YW55PihpdGVtLnVybCwge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICB0eXBlOiBcImFycmF5YnVmZmVyXCJcbiAgICAgIH0pXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGRlY29kZTxNb2RlbE1lc2g+KGRhdGEsIHJlc291cmNlTWFuYWdlci5lbmdpbmUpO1xuICAgICAgICB9KVxuICAgICAgICAudGhlbigobWVzaCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUobWVzaCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgIH0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBBc3NldFByb21pc2UsIEFzc2V0VHlwZSwgRm9udCwgTG9hZGVyLCBMb2FkSXRlbSwgcmVzb3VyY2VMb2FkZXIsIFJlc291cmNlTWFuYWdlciB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWNvcmVcIjtcblxuQHJlc291cmNlTG9hZGVyKEFzc2V0VHlwZS5Tb3VyY2VGb250LCBbXCJ0dGZcIiwgXCJvdGZcIiwgXCJ3b2ZmXCJdLCBmYWxzZSlcbmNsYXNzIFNvdXJjZUZvbnRMb2FkZXIgZXh0ZW5kcyBMb2FkZXI8Rm9udD4ge1xuICBsb2FkKGl0ZW06IExvYWRJdGVtLCByZXNvdXJjZU1hbmFnZXI6IFJlc291cmNlTWFuYWdlcik6IEFzc2V0UHJvbWlzZTxGb250PiB7XG4gICAgcmV0dXJuIG5ldyBBc3NldFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgeyB1cmwgfSA9IGl0ZW07XG4gICAgICB0aGlzLl9yZWdpc3RlckZvbnQodXJsLCB1cmwpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBmb250ID0gbmV3IEZvbnQocmVzb3VyY2VNYW5hZ2VyLmVuZ2luZSwgdXJsKTtcbiAgICAgICAgICByZXNvbHZlKGZvbnQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZWplY3QoYGxvYWQgZm9udCAke3VybH0gZmFpbGApO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlZ2lzdGVyRm9udChmb250TmFtZTogc3RyaW5nLCBmb250VXJsOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb250RmFjZSA9IG5ldyBGb250RmFjZShmb250TmFtZSwgYHVybCgke2ZvbnRVcmx9KWApO1xuICAgIGF3YWl0IGZvbnRGYWNlLmxvYWQoKTtcbiAgICBkb2N1bWVudC5mb250cy5hZGQoZm9udEZhY2UpO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBBc3NldFByb21pc2UsXG4gIEFzc2V0VHlwZSxcbiAgRW5naW5lLFxuICBMb2FkZXIsXG4gIExvYWRJdGVtLFxuICByZXNvdXJjZUxvYWRlcixcbiAgUmVzb3VyY2VNYW5hZ2VyLFxuICBTcHJpdGUsXG4gIFNwcml0ZUF0bGFzLFxuICBUZXh0dXJlMkRcbn0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgQXRsYXNDb25maWcsIEF0bGFzU3ByaXRlIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZS90eXBlcy8yZC9hdGxhcy90eXBlc1wiO1xuaW1wb3J0IHsgUmVjdCwgVmVjdG9yMiwgVmVjdG9yNCB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLW1hdGhcIjtcblxuQHJlc291cmNlTG9hZGVyKEFzc2V0VHlwZS5TcHJpdGVBdGxhcywgW1wiYXRsYXNcIl0sIGZhbHNlKVxuY2xhc3MgU3ByaXRlQXRsYXNMb2FkZXIgZXh0ZW5kcyBMb2FkZXI8U3ByaXRlQXRsYXM+IHtcbiAgcHJpdmF0ZSBfdGVtcFJlY3Q6IFJlY3QgPSBuZXcgUmVjdCgpO1xuICBwcml2YXRlIF90ZW1wVmVjMjogVmVjdG9yMiA9IG5ldyBWZWN0b3IyKCk7XG4gIHByaXZhdGUgX3RlbXBWZWM0OiBWZWN0b3I0ID0gbmV3IFZlY3RvcjQoKTtcbiAgbG9hZChpdGVtOiBMb2FkSXRlbSwgcmVzb3VyY2VNYW5hZ2VyOiBSZXNvdXJjZU1hbmFnZXIpOiBBc3NldFByb21pc2U8U3ByaXRlQXRsYXM+IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0UHJvbWlzZTxTcHJpdGVBdGxhcz4oKHJlc29sdmUsIHJlamVjdCwgXywgb25DYW5jZWwpID0+IHtcbiAgICAgIGNvbnN0IGNoYWluUHJvbWlzZXMgPSBbXTtcbiAgICAgIG9uQ2FuY2VsKCgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFpblByb21pc2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY2hhaW5Qcm9taXNlc1tpXS5jYW5jZWwoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBjb25maWdQcm9taXNlID0gdGhpcy5yZXF1ZXN0PEF0bGFzQ29uZmlnPihpdGVtLnVybCwge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICB0eXBlOiBcImpzb25cIlxuICAgICAgfSk7XG4gICAgICBjaGFpblByb21pc2VzLnB1c2goY29uZmlnUHJvbWlzZSk7XG4gICAgICBjb25maWdQcm9taXNlXG4gICAgICAgIC50aGVuKChhdGxhc0RhdGEpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGF0bGFzSXRlbXMsIG1pcG1hcCwgYW5pc29MZXZlbCwgZmlsdGVyTW9kZSwgd3JhcE1vZGVVLCB3cmFwTW9kZVYsIGZvcm1hdCB9ID0gYXRsYXNEYXRhO1xuICAgICAgICAgIGNvbnN0IGF0bGFzSXRlbXNMZW4gPSBhdGxhc0l0ZW1zID8gYXRsYXNJdGVtcy5sZW5ndGggOiAwO1xuICAgICAgICAgIGNvbnN0IHsgZW5naW5lIH0gPSByZXNvdXJjZU1hbmFnZXI7XG4gICAgICAgICAgY29uc3Qgc3ByaXRlQXRsYXMgPSBuZXcgU3ByaXRlQXRsYXMoZW5naW5lKTtcbiAgICAgICAgICBpZiAoYXRsYXNJdGVtc0xlbiA8IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUoc3ByaXRlQXRsYXMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaGFpblByb21pc2VzLmxlbmd0aCA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdGxhc0l0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhdGxhc0l0ZW0gPSBhdGxhc0l0ZW1zW2ldO1xuICAgICAgICAgICAgaWYgKGF0bGFzSXRlbS5pbWcpIHtcbiAgICAgICAgICAgICAgY2hhaW5Qcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHJlc291cmNlTWFuYWdlclxuICAgICAgICAgICAgICAgICAgLmxvYWQ8VGV4dHVyZTJEPih7XG4gICAgICAgICAgICAgICAgICAgIHVybDogYXRsYXNJdGVtLmltZyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogQXNzZXRUeXBlLlRleHR1cmUyRCxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IGZvcm1hdCwgbWlwbWFwIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAudGhlbigodGV4dHVyZTogVGV4dHVyZTJEKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFuaXNvTGV2ZWwgJiYgKHRleHR1cmUuYW5pc29MZXZlbCA9IGFuaXNvTGV2ZWwpO1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJNb2RlICE9PSB1bmRlZmluZWQgJiYgKHRleHR1cmUuZmlsdGVyTW9kZSA9IGZpbHRlck1vZGUpO1xuICAgICAgICAgICAgICAgICAgICB3cmFwTW9kZVUgIT09IHVuZGVmaW5lZCAmJiAodGV4dHVyZS53cmFwTW9kZVUgPSB3cmFwTW9kZVUpO1xuICAgICAgICAgICAgICAgICAgICB3cmFwTW9kZVYgIT09IHVuZGVmaW5lZCAmJiAodGV4dHVyZS53cmFwTW9kZVYgPSB3cmFwTW9kZVYpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0bGFzSXRlbS5zcHJpdGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgIHNwcml0ZUF0bGFzLl9hZGRTcHJpdGUodGhpcy5fbWFrZVNwcml0ZShlbmdpbmUsIGF0bGFzSXRlbS5zcHJpdGVzW2ldLCB0ZXh0dXJlKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdGxhc0l0ZW0uc3ByaXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBzcHJpdGVBdGxhcy5fYWRkU3ByaXRlKHRoaXMuX21ha2VTcHJpdGUoZW5naW5lLCBhdGxhc0l0ZW0uc3ByaXRlc1tpXSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEFzc2V0UHJvbWlzZS5hbGwoY2hhaW5Qcm9taXNlcylcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShzcHJpdGVBdGxhcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWFrZVNwcml0ZShlbmdpbmU6IEVuZ2luZSwgY29uZmlnOiBBdGxhc1Nwcml0ZSwgdGV4dHVyZT86IFRleHR1cmUyRCk6IFNwcml0ZSB7XG4gICAgLy8gR2VuZXJhdGUgYSBTcHJpdGVBdGxhcyBvYmplY3QuXG4gICAgY29uc3QgeyByZWdpb24sIGF0bGFzUmVnaW9uT2Zmc2V0LCBhdGxhc1JlZ2lvbiwgcGl2b3QsIGJvcmRlciB9ID0gY29uZmlnO1xuICAgIGNvbnN0IHNwcml0ZSA9IG5ldyBTcHJpdGUoXG4gICAgICBlbmdpbmUsXG4gICAgICB0ZXh0dXJlLFxuICAgICAgcmVnaW9uID8gdGhpcy5fdGVtcFJlY3Quc2V0KHJlZ2lvbi54LCByZWdpb24ueSwgcmVnaW9uLncsIHJlZ2lvbi5oKSA6IHVuZGVmaW5lZCxcbiAgICAgIHBpdm90ID8gdGhpcy5fdGVtcFZlYzIuc2V0KHBpdm90LngsIHBpdm90LnkpIDogdW5kZWZpbmVkLFxuICAgICAgYm9yZGVyID8gdGhpcy5fdGVtcFZlYzQuc2V0KGJvcmRlci54LCBib3JkZXIueSwgYm9yZGVyLnosIGJvcmRlci53KSA6IHVuZGVmaW5lZCxcbiAgICAgIGNvbmZpZy5uYW1lXG4gICAgKTtcbiAgICBpZiAodGV4dHVyZSkge1xuICAgICAgY29uc3QgaW52VyA9IDEgLyB0ZXh0dXJlLndpZHRoO1xuICAgICAgY29uc3QgaW52SCA9IDEgLyB0ZXh0dXJlLmhlaWdodDtcbiAgICAgIHNwcml0ZS5hdGxhc1JlZ2lvbi5zZXQoYXRsYXNSZWdpb24ueCAqIGludlcsIGF0bGFzUmVnaW9uLnkgKiBpbnZILCBhdGxhc1JlZ2lvbi53ICogaW52VywgYXRsYXNSZWdpb24uaCAqIGludkgpO1xuICAgICAgaWYgKGF0bGFzUmVnaW9uT2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHsgeDogb2Zmc2V0TGVmdCwgeTogb2Zmc2V0VG9wLCB6OiBvZmZzZXRSaWdodCwgdzogb2Zmc2V0Qm90dG9tIH0gPSBhdGxhc1JlZ2lvbk9mZnNldDtcbiAgICAgICAgc3ByaXRlLmF0bGFzUmVnaW9uT2Zmc2V0LnNldChvZmZzZXRMZWZ0ICogaW52Vywgb2Zmc2V0VG9wICogaW52SCwgb2Zmc2V0UmlnaHQgKiBpbnZXLCBvZmZzZXRCb3R0b20gKiBpbnZIKTtcbiAgICAgIH1cbiAgICAgIGNvbmZpZy5hdGxhc1JvdGF0ZWQgJiYgKHNwcml0ZS5hdGxhc1JvdGF0ZWQgPSB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHNwcml0ZTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgcmVzb3VyY2VMb2FkZXIsXG4gIExvYWRlcixcbiAgQXNzZXRQcm9taXNlLFxuICBBc3NldFR5cGUsXG4gIExvYWRJdGVtLFxuICBTcHJpdGUsXG4gIFRleHR1cmUyRCxcbiAgUmVzb3VyY2VNYW5hZ2VyLFxuICBTcHJpdGVBdGxhc1xufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5cbkByZXNvdXJjZUxvYWRlcihBc3NldFR5cGUuU3ByaXRlLCBbXCJzcHJpdGVcIl0sIGZhbHNlKVxuY2xhc3MgU3ByaXRlTG9hZGVyIGV4dGVuZHMgTG9hZGVyPFNwcml0ZT4ge1xuICBsb2FkKGl0ZW06IExvYWRJdGVtLCByZXNvdXJjZU1hbmFnZXI6IFJlc291cmNlTWFuYWdlcik6IEFzc2V0UHJvbWlzZTxTcHJpdGU+IHtcbiAgICByZXR1cm4gbmV3IEFzc2V0UHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlcXVlc3Q8YW55PihpdGVtLnVybCwge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICB0eXBlOiBcImpzb25cIlxuICAgICAgfSlcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoZGF0YS5iZWxvbmdUb0F0bGFzKSB7XG4gICAgICAgICAgICByZXNvdXJjZU1hbmFnZXJcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAuZ2V0UmVzb3VyY2VCeVJlZjxTcHJpdGVBdGxhcz4oZGF0YS5iZWxvbmdUb0F0bGFzKVxuICAgICAgICAgICAgICAudGhlbigoYXRsYXMpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKGF0bGFzLmdldFNwcml0ZShkYXRhLmZ1bGxQYXRoKSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS50ZXh0dXJlKSB7XG4gICAgICAgICAgICByZXNvdXJjZU1hbmFnZXJcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAuZ2V0UmVzb3VyY2VCeVJlZjxUZXh0dXJlMkQ+KGRhdGEudGV4dHVyZSlcbiAgICAgICAgICAgICAgLnRoZW4oKHRleHR1cmUpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG5ldyBTcHJpdGUocmVzb3VyY2VNYW5hZ2VyLmVuZ2luZSwgdGV4dHVyZSwgZGF0YS5yZWdpb24sIGRhdGEucGl2b3QsIGRhdGEuYm9yZGVyKSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKG5ldyBTcHJpdGUocmVzb3VyY2VNYW5hZ2VyLmVuZ2luZSwgbnVsbCwgZGF0YS5yZWdpb24sIGRhdGEucGl2b3QsIGRhdGEuYm9yZGVyKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gocmVqZWN0KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQXNzZXRQcm9taXNlLFxuICBBc3NldFR5cGUsXG4gIExvYWRlcixcbiAgTG9hZEl0ZW0sXG4gIHJlc291cmNlTG9hZGVyLFxuICBSZXNvdXJjZU1hbmFnZXIsXG4gIFRleHR1cmUyRCxcbiAgVGV4dHVyZUZvcm1hdFxufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1jb3JlXCI7XG5cbkByZXNvdXJjZUxvYWRlcihBc3NldFR5cGUuVGV4dHVyZTJELCBbXCJwbmdcIiwgXCJqcGdcIiwgXCJ3ZWJwXCIsIFwianBlZ1wiXSlcbmNsYXNzIFRleHR1cmUyRExvYWRlciBleHRlbmRzIExvYWRlcjxUZXh0dXJlMkQ+IHtcbiAgbG9hZChpdGVtOiBMb2FkSXRlbSwgcmVzb3VyY2VNYW5hZ2VyOiBSZXNvdXJjZU1hbmFnZXIpOiBBc3NldFByb21pc2U8VGV4dHVyZTJEPiB7XG4gICAgcmV0dXJuIG5ldyBBc3NldFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXF1ZXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGl0ZW0udXJsLCB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIHR5cGU6IFwiaW1hZ2VcIlxuICAgICAgfSlcbiAgICAgICAgLnRoZW4oKGltYWdlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyYW1zID0gaXRlbS5wYXJhbXMgPz8ge307XG4gICAgICAgICAgY29uc3QgdGV4dHVyZSA9IG5ldyBUZXh0dXJlMkQoXG4gICAgICAgICAgICByZXNvdXJjZU1hbmFnZXIuZW5naW5lLFxuICAgICAgICAgICAgaW1hZ2Uud2lkdGgsXG4gICAgICAgICAgICBpbWFnZS5oZWlnaHQsXG4gICAgICAgICAgICBwYXJhbXMuZm9ybWF0LFxuICAgICAgICAgICAgcGFyYW1zLm1pcG1hcFxuICAgICAgICAgICk7XG4gICAgICAgICAgLyoqIEB0cy1pZ25vcmUgKi9cbiAgICAgICAgICBpZiAoIXRleHR1cmUuX3BsYXRmb3JtVGV4dHVyZSkgcmV0dXJuO1xuICAgICAgICAgIHRleHR1cmUuc2V0SW1hZ2VTb3VyY2UoaW1hZ2UpO1xuICAgICAgICAgIHRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzKCk7XG5cbiAgICAgICAgICBpZiAoaXRlbS51cmwuaW5kZXhPZihcImRhdGE6XCIpICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBzcGxpdFBhdGggPSBpdGVtLnVybC5zcGxpdChcIi9cIik7XG4gICAgICAgICAgICB0ZXh0dXJlLm5hbWUgPSBzcGxpdFBhdGhbc3BsaXRQYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKHRleHR1cmUpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVGV4dHVyZTJEIGxvYWRlciBwYXJhbXMgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRleHR1cmUyRFBhcmFtcyB7XG4gIC8qKiBUZXh0dXJlIGZvcm1hdC4gZGVmYXVsdCAgYFRleHR1cmVGb3JtYXQuUjhHOEI4QThgICovXG4gIGZvcm1hdDogVGV4dHVyZUZvcm1hdDtcbiAgLyoqIFdoZXRoZXIgdG8gdXNlIG11bHRpLWxldmVsIHRleHR1cmUsIGRlZmF1bHQgaXMgdHJ1ZS4gKi9cbiAgbWlwbWFwOiBib29sZWFuO1xufVxuIiwiaW1wb3J0IHtcbiAgQXNzZXRQcm9taXNlLFxuICBBc3NldFR5cGUsXG4gIExvYWRlcixcbiAgTG9hZEl0ZW0sXG4gIHJlc291cmNlTG9hZGVyLFxuICBSZXNvdXJjZU1hbmFnZXIsXG4gIFRleHR1cmVDdWJlRmFjZSxcbiAgVGV4dHVyZUN1YmVcbn0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuXG5AcmVzb3VyY2VMb2FkZXIoQXNzZXRUeXBlLlRleHR1cmVDdWJlLCBbXCJcIl0pXG5jbGFzcyBUZXh0dXJlQ3ViZUxvYWRlciBleHRlbmRzIExvYWRlcjxUZXh0dXJlQ3ViZT4ge1xuICBsb2FkKGl0ZW06IExvYWRJdGVtLCByZXNvdXJjZU1hbmFnZXI6IFJlc291cmNlTWFuYWdlcik6IEFzc2V0UHJvbWlzZTxUZXh0dXJlQ3ViZT4ge1xuICAgIHJldHVybiBuZXcgQXNzZXRQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIFByb21pc2UuYWxsKFxuICAgICAgICBpdGVtLnVybHMubWFwKCh1cmwpID0+XG4gICAgICAgICAgdGhpcy5yZXF1ZXN0PEhUTUxJbWFnZUVsZW1lbnQ+KHVybCwge1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIHR5cGU6IFwiaW1hZ2VcIlxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgICAgLnRoZW4oKGltYWdlcykgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gaW1hZ2VzWzBdO1xuXG4gICAgICAgICAgaWYgKHdpZHRoICE9PSBoZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgY3ViZSB0ZXh0dXJlIG11c3QgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhbmQgaGVpZ2h0XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHRleCA9IG5ldyBUZXh0dXJlQ3ViZShyZXNvdXJjZU1hbmFnZXIuZW5naW5lLCB3aWR0aCk7XG5cbiAgICAgICAgICAvKiogQHRzLWlnbm9yZSAqL1xuICAgICAgICAgIGlmICghdGV4Ll9wbGF0Zm9ybVRleHR1cmUpIHJldHVybjtcblxuICAgICAgICAgIGZvciAobGV0IGZhY2VJbmRleCA9IDA7IGZhY2VJbmRleCA8IDY7IGZhY2VJbmRleCsrKSB7XG4gICAgICAgICAgICB0ZXguc2V0SW1hZ2VTb3VyY2UoVGV4dHVyZUN1YmVGYWNlLlBvc2l0aXZlWCArIGZhY2VJbmRleCwgaW1hZ2VzW2ZhY2VJbmRleF0sIDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRleC5nZW5lcmF0ZU1pcG1hcHMoKTtcbiAgICAgICAgICByZXNvbHZlKHRleCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFzc2V0UHJvbWlzZSxcbiAgQXNzZXRUeXBlLFxuICBCYWNrZ3JvdW5kTW9kZSxcbiAgRW5naW5lLFxuICBGb250LFxuICBMb2FkZXIsXG4gIExvYWRJdGVtLFxuICBQcmltaXRpdmVNZXNoLFxuICByZXNvdXJjZUxvYWRlcixcbiAgUmVzb3VyY2VNYW5hZ2VyLFxuICBTY2VuZSxcbiAgU2t5Qm94TWF0ZXJpYWxcbn0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtY29yZVwiO1xuaW1wb3J0IHsgSUNsYXNzT2JqZWN0LCBSZWZsZWN0aW9uUGFyc2VyLCBTY2VuZVBhcnNlciB9IGZyb20gXCIuL3Jlc291cmNlLWRlc2VyaWFsaXplXCI7XG5cbkByZXNvdXJjZUxvYWRlcihBc3NldFR5cGUuU2NlbmUsIFtcInByZWZhYlwiXSwgdHJ1ZSlcbmNsYXNzIFNjZW5lTG9hZGVyIGV4dGVuZHMgTG9hZGVyPFNjZW5lPiB7XG4gIGxvYWQoaXRlbTogTG9hZEl0ZW0sIHJlc291cmNlTWFuYWdlcjogUmVzb3VyY2VNYW5hZ2VyKTogQXNzZXRQcm9taXNlPFNjZW5lPiB7XG4gICAgY29uc3QgeyBlbmdpbmUgfSA9IHJlc291cmNlTWFuYWdlcjtcbiAgICByZXR1cm4gbmV3IEFzc2V0UHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnJlcXVlc3Q8YW55PihpdGVtLnVybCwgeyB0eXBlOiBcImpzb25cIiB9KVxuICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBlbmdpbmUucmVzb3VyY2VNYW5hZ2VyLmluaXRWaXJ0dWFsUmVzb3VyY2VzKGRhdGEuZmlsZXMpO1xuICAgICAgICAgIHJldHVybiBTY2VuZVBhcnNlci5wYXJzZShlbmdpbmUsIGRhdGEpLnRoZW4oKHNjZW5lKSA9PiB7XG4gICAgICAgICAgICAvLyBwYXJzZSBhbWJpZW50IGxpZ2h0XG4gICAgICAgICAgICBjb25zdCBhbWJpZW50ID0gZGF0YS5zY2VuZS5hbWJpZW50O1xuICAgICAgICAgICAgbGV0IGFtYmllbnRMaWdodFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIGlmIChhbWJpZW50LmFtYmllbnRMaWdodCkge1xuICAgICAgICAgICAgICBhbWJpZW50TGlnaHRQcm9taXNlID0gcmVzb3VyY2VNYW5hZ2VyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIC5nZXRSZXNvdXJjZUJ5UmVmPGFueT4oZGF0YS5zY2VuZS5hbWJpZW50LmFtYmllbnRMaWdodClcbiAgICAgICAgICAgICAgICAudGhlbigobGlnaHQpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNjZW5lLmFtYmllbnRMaWdodCA9IGxpZ2h0O1xuICAgICAgICAgICAgICAgICAgc2NlbmUuYW1iaWVudExpZ2h0LmRpZmZ1c2VJbnRlbnNpdHkgPSBhbWJpZW50LmRpZmZ1c2VJbnRlbnNpdHk7XG4gICAgICAgICAgICAgICAgICBzY2VuZS5hbWJpZW50TGlnaHQuc3BlY3VsYXJJbnRlbnNpdHkgPSBhbWJpZW50LnNwZWN1bGFySW50ZW5zaXR5O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2NlbmUuYW1iaWVudExpZ2h0LmRpZmZ1c2VJbnRlbnNpdHkgPSBhbWJpZW50LmRpZmZ1c2VJbnRlbnNpdHk7XG4gICAgICAgICAgICAgIHNjZW5lLmFtYmllbnRMaWdodC5zcGVjdWxhckludGVuc2l0eSA9IGFtYmllbnQuc3BlY3VsYXJJbnRlbnNpdHk7XG4gICAgICAgICAgICAgIHNjZW5lLmFtYmllbnRMaWdodC5kaWZmdXNlU29saWRDb2xvci5jb3B5RnJvbShhbWJpZW50LmRpZmZ1c2VTb2xpZENvbG9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYmFja2dyb3VuZCA9IGRhdGEuc2NlbmUuYmFja2dyb3VuZDtcbiAgICAgICAgICAgIHNjZW5lLmJhY2tncm91bmQubW9kZSA9IGJhY2tncm91bmQubW9kZTtcblxuICAgICAgICAgICAgbGV0IGJhY2tncm91bmRQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgICAgICAgICAgIHN3aXRjaCAoc2NlbmUuYmFja2dyb3VuZC5tb2RlKSB7XG4gICAgICAgICAgICAgIGNhc2UgQmFja2dyb3VuZE1vZGUuU29saWRDb2xvcjpcbiAgICAgICAgICAgICAgICBzY2VuZS5iYWNrZ3JvdW5kLnNvbGlkQ29sb3IuY29weUZyb20oYmFja2dyb3VuZC5jb2xvcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgQmFja2dyb3VuZE1vZGUuU2t5OlxuICAgICAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kLnNreSkge1xuICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZFByb21pc2UgPSByZXNvdXJjZU1hbmFnZXIuZ2V0UmVzb3VyY2VCeVJlZjxhbnk+KGJhY2tncm91bmQuc2t5KS50aGVuKChsaWdodCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBza3kgPSBzY2VuZS5iYWNrZ3JvdW5kLnNreTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2t5TWF0ZXJpYWwgPSBuZXcgU2t5Qm94TWF0ZXJpYWwoZW5naW5lKTtcbiAgICAgICAgICAgICAgICAgICAgc2t5TWF0ZXJpYWwudGV4dHVyZUN1YmVNYXAgPSBsaWdodC5zcGVjdWxhclRleHR1cmU7XG4gICAgICAgICAgICAgICAgICAgIHNreU1hdGVyaWFsLnRleHR1cmVEZWNvZGVSR0JNID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc2t5Lm1hdGVyaWFsID0gc2t5TWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgICAgIHNreS5tZXNoID0gUHJpbWl0aXZlTWVzaC5jcmVhdGVDdWJvaWQoZW5naW5lLCAxLCAxLCAxKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBCYWNrZ3JvdW5kTW9kZS5UZXh0dXJlOlxuICAgICAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kLnRleHR1cmUpIHtcbiAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRQcm9taXNlID0gcmVzb3VyY2VNYW5hZ2VyLmdldFJlc291cmNlQnlSZWY8YW55PihiYWNrZ3JvdW5kLnRleHR1cmUpLnRoZW4oKHRleHR1cmUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2NlbmUuYmFja2dyb3VuZC50ZXh0dXJlID0gdGV4dHVyZTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcGFyc2Ugc2hhZG93XG4gICAgICAgICAgICBjb25zdCBzaGFkb3cgPSBkYXRhLnNjZW5lLnNoYWRvdztcbiAgICAgICAgICAgIGlmIChzaGFkb3cpIHtcbiAgICAgICAgICAgICAgaWYgKHNoYWRvdy5jYXN0U2hhZG93cyAhPSB1bmRlZmluZWQpIHNjZW5lLmNhc3RTaGFkb3dzID0gc2hhZG93LmNhc3RTaGFkb3dzO1xuICAgICAgICAgICAgICBpZiAoc2hhZG93LnNoYWRvd1Jlc29sdXRpb24gIT0gdW5kZWZpbmVkKSBzY2VuZS5zaGFkb3dSZXNvbHV0aW9uID0gc2hhZG93LnNoYWRvd1Jlc29sdXRpb247XG4gICAgICAgICAgICAgIGlmIChzaGFkb3cuc2hhZG93RGlzdGFuY2UgIT0gdW5kZWZpbmVkKSBzY2VuZS5zaGFkb3dEaXN0YW5jZSA9IHNoYWRvdy5zaGFkb3dEaXN0YW5jZTtcbiAgICAgICAgICAgICAgaWYgKHNoYWRvdy5zaGFkb3dDYXNjYWRlcyAhPSB1bmRlZmluZWQpIHNjZW5lLnNoYWRvd0Nhc2NhZGVzID0gc2hhZG93LnNoYWRvd0Nhc2NhZGVzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW2FtYmllbnRMaWdodFByb21pc2UsIGJhY2tncm91bmRQcm9taXNlXSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmUoc2NlbmUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgIH0pO1xuICB9XG59XG5cblJlZmxlY3Rpb25QYXJzZXIucmVnaXN0ZXJDdXN0b21QYXJzZUNvbXBvbmVudChcbiAgXCJUZXh0UmVuZGVyZXJcIixcbiAgYXN5bmMgKGluc3RhbmNlOiBhbnksIGl0ZW06IE9taXQ8SUNsYXNzT2JqZWN0LCBcImNsYXNzXCI+LCBlbmdpbmU6IEVuZ2luZSkgPT4ge1xuICAgIGNvbnN0IHsgcHJvcHMgfSA9IGl0ZW07XG4gICAgaWYgKCFwcm9wcy5mb250KSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpbnN0YW5jZS5mb250ID0gRm9udC5jcmVhdGVGcm9tT1MoZW5naW5lLCBwcm9wcy5mb250RmFtaWx5IHx8IFwiQXJpYWxcIik7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuKTtcbiJdLCJuYW1lcyI6WyJBbmltYXRvckNvbnRyb2xsZXJMb2FkZXIiLCJsb2FkIiwiaXRlbSIsInJlc291cmNlTWFuYWdlciIsIkFzc2V0UHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZXF1ZXN0IiwidXJsIiwidHlwZSIsInRoZW4iLCJkYXRhIiwiYW5pbWF0b3JDb250cm9sbGVyIiwiQW5pbWF0b3JDb250cm9sbGVyIiwibGF5ZXJzIiwicHJvbWlzZXMiLCJmb3JFYWNoIiwibGF5ZXJEYXRhIiwibGF5ZXJJbmRleCIsIm5hbWUiLCJibGVuZGluZ01vZGUiLCJ3ZWlnaHQiLCJzdGF0ZU1hY2hpbmUiLCJzdGF0ZU1hY2hpbmVEYXRhIiwibGF5ZXIiLCJBbmltYXRvckNvbnRyb2xsZXJMYXllciIsInN0YXRlcyIsIkFuaW1hdG9yU3RhdGVNYWNoaW5lIiwic3RhdGVEYXRhIiwic3RhdGVJbmRleCIsInNwZWVkIiwid3JhcE1vZGUiLCJjbGlwU3RhcnROb3JtYWxpemVkVGltZSIsImNsaXBFbmROb3JtYWxpemVkVGltZSIsImlzRGVmYXVsdFN0YXRlIiwiY2xpcCIsImNsaXBEYXRhIiwic3RhdGUiLCJhZGRTdGF0ZSIsImRlZmF1bHRTdGF0ZSIsImNsaXBTdGFydFRpbWUiLCJjbGlwRW5kVGltZSIsInB1c2giLCJQcm9taXNlIiwiZ2V0UmVzb3VyY2VCeVJlZiIsInRyYW5zaXRpb25zIiwidHJhbnNpdGlvbkRhdGEiLCJ0YXJnZXRTdGF0ZU5hbWUiLCJkdXJhdGlvbiIsIm9mZnNldCIsImV4aXRUaW1lIiwic291cmNlU3RhdGUiLCJmaW5kU3RhdGVCeU5hbWUiLCJkZXN0U3RhdGUiLCJ0cmFuc2l0aW9uIiwiQW5pbWF0b3JTdGF0ZVRyYW5zaXRpb24iLCJkZXN0aW5hdGlvblN0YXRlIiwiYWRkVHJhbnNpdGlvbiIsImFkZExheWVyIiwiYWxsIiwiY2F0Y2giLCJMb2FkZXIiLCJyZXNvdXJjZUxvYWRlciIsIkFzc2V0VHlwZSIsImlzQmFzZTY0IiwidGVzdCIsIkJ1ZmZlckxvYWRlciIsImJhc2U2NFN0ciIsInNsaWNlIiwiUmVnRXhwIiwiJDEiLCJsZW5ndGgiLCJyZXN1bHQiLCJVaW50OEFycmF5IiwiZnJvbSIsImF0b2IiLCJjIiwiY2hhckNvZGVBdCIsImJ1ZmZlciIsIkJ1ZmZlciIsIkVudkxvYWRlciIsImFycmF5YnVmZmVyIiwic2hBcnJheSIsIkZsb2F0MzJBcnJheSIsInNoQnl0ZUxlbmd0aCIsInNpemUiLCJVaW50MTZBcnJheSIsInRleHR1cmUiLCJUZXh0dXJlQ3ViZSIsImVuZ2luZSIsImZpbHRlck1vZGUiLCJUZXh0dXJlRmlsdGVyTW9kZSIsIlRyaWxpbmVhciIsIm1pcG1hcENvdW50IiwibWlwTGV2ZWwiLCJtaXBTaXplIiwiZmFjZSIsImRhdGFTaXplIiwic2V0UGl4ZWxCdWZmZXIiLCJUZXh0dXJlQ3ViZUZhY2UiLCJQb3NpdGl2ZVgiLCJhbWJpZW50TGlnaHQiLCJBbWJpZW50TGlnaHQiLCJzaCIsIlNwaGVyaWNhbEhhcm1vbmljczMiLCJkaWZmdXNlTW9kZSIsIkRpZmZ1c2VNb2RlIiwiU3BoZXJpY2FsSGFybW9uaWNzIiwiY29weUZyb21BcnJheSIsImRpZmZ1c2VTcGhlcmljYWxIYXJtb25pY3MiLCJzcGVjdWxhclRleHR1cmUiLCJzcGVjdWxhclRleHR1cmVEZWNvZGVSR0JNIiwiZSIsIkVudiIsIkZvbnRMb2FkZXIiLCJmb250TmFtZSIsImZvbnRVcmwiLCJfcmVnaXN0ZXJGb250IiwiZm9udCIsIkZvbnQiLCJmb250RmFjZSIsIkZvbnRGYWNlIiwiZG9jdW1lbnQiLCJmb250cyIsImFkZCIsIlBhcnNlckNvbnRleHQiLCJoYXNTa2lubmVkIiwiY2hhaW5Qcm9taXNlcyIsImFjY2Vzc29yQnVmZmVyQ2FjaGUiLCJ0ZXh0dXJlc1Byb21pc2VJbmZvIiwiUHJvbWlzZUluZm8iLCJtYXRlcmlhbHNQcm9taXNlSW5mbyIsIm1lc2hlc1Byb21pc2VJbmZvIiwiYW5pbWF0aW9uQ2xpcHNQcm9taXNlSW5mbyIsImRlZmF1bHRTY2VuZVJvb3RQcm9taXNlSW5mbyIsIm1hc3RlclByb21pc2VJbmZvIiwicHJvbWlzZU1hcCIsIl9pbml0UHJvbWlzZUluZm8iLCJwcm9taXNlSW5mbyIsInByb21pc2UiLCJzZXRQcm9ncmVzcyIsIm9uQ2FuY2VsIiwiQnVmZmVySW5mbyIsImludGVybGVhdmVkIiwic3RyaWRlIiwidmVydGV4QmluZGluZ0luZm9zIiwiQWNjZXNzb3JDb21wb25lbnRUeXBlIiwiQllURSIsIlVOU0lHTkVEX0JZVEUiLCJTSE9SVCIsIlVOU0lHTkVEX1NIT1JUIiwiVU5TSUdORURfSU5UIiwiRkxPQVQiLCJBY2Nlc3NvclR5cGUiLCJTQ0FMQVIiLCJWRUMyIiwiVkVDMyIsIlZFQzQiLCJNQVQyIiwiTUFUMyIsIk1BVDQiLCJBbmltYXRpb25DaGFubmVsVGFyZ2V0UGF0aCIsIlRSQU5TTEFUSU9OIiwiUk9UQVRJT04iLCJTQ0FMRSIsIldFSUdIVFMiLCJBbmltYXRpb25TYW1wbGVySW50ZXJwb2xhdGlvbiIsIkxpbmVhciIsIlN0ZXAiLCJDdWJpY1NwaW5lIiwiQ2FtZXJhVHlwZSIsIlBFUlNQRUNUSVZFIiwiT1JUSE9HUkFQSElDIiwiSW1hZ2VNaW1lVHlwZSIsIkpQRUciLCJQTkciLCJNYXRlcmlhbEFscGhhTW9kZSIsIk9QQVFVRSIsIk1BU0siLCJCTEVORCIsIlRleHR1cmVNYWdGaWx0ZXIiLCJORUFSRVNUIiwiTElORUFSIiwiVGV4dHVyZU1pbkZpbHRlciIsIk5FQVJFU1RfTUlQTUFQX05FQVJFU1QiLCJMSU5FQVJfTUlQTUFQX05FQVJFU1QiLCJORUFSRVNUX01JUE1BUF9MSU5FQVIiLCJMSU5FQVJfTUlQTUFQX0xJTkVBUiIsIlRleHR1cmVXcmFwTW9kZSIsIkNMQU1QX1RPX0VER0UiLCJNSVJST1JFRF9SRVBFQVQiLCJSRVBFQVQiLCJHTFRGVXRpbCIsImZsb2F0QnVmZmVyVG9WZWN0b3IyQXJyYXkiLCJidWZmZXJMZW4iLCJhcnJheSIsIkFycmF5IiwiaSIsIlZlY3RvcjIiLCJmbG9hdEJ1ZmZlclRvVmVjdG9yM0FycmF5IiwiVmVjdG9yMyIsImZsb2F0QnVmZmVyVG9WZWN0b3I0QXJyYXkiLCJWZWN0b3I0IiwiZmxvYXRCdWZmZXJUb0NvbG9yQXJyYXkiLCJpc0NvbG9yMyIsImNvbG9ycyIsIkNvbG9yIiwiZGVjb2RlVGV4dCIsIlRleHREZWNvZGVyIiwiZGVjb2RlIiwicyIsImlsIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZ2V0QWNjZXNzb3JUeXBlU2l6ZSIsImFjY2Vzc29yVHlwZSIsImdldENvbXBvbmVudFR5cGUiLCJjb21wb25lbnRUeXBlIiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQzMkFycmF5IiwiZ2V0Tm9ybWFsaXplZENvbXBvbmVudFNjYWxlIiwiRXJyb3IiLCJnZXRBY2Nlc3NvckJ1ZmZlciIsImNvbnRleHQiLCJnbHRmIiwiYWNjZXNzb3IiLCJidWZmZXJzIiwiYnVmZmVyVmlld3MiLCJidWZmZXJWaWV3IiwiYnVmZmVyQnl0ZU9mZnNldCIsImJ5dGVPZmZzZXQiLCJUeXBlZEFycmF5IiwiZGF0YUVsbWVudFNpemUiLCJkYXRhRWxlbWVudEJ5dGVzIiwiQllURVNfUEVSX0VMRU1FTlQiLCJlbGVtZW50U3RyaWRlIiwiYWNjZXNzb3JDb3VudCIsImNvdW50IiwiYnVmZmVyU3RyaWRlIiwiYnl0ZVN0cmlkZSIsImJ1ZmZlckluZm8iLCJ1bmRlZmluZWQiLCJidWZmZXJTbGljZSIsIk1hdGgiLCJmbG9vciIsImJ1ZmZlckNhY2hlS2V5Iiwic3BhcnNlIiwicHJvY2Vzc2luZ1NwYXJzZURhdGEiLCJnZXRBY2Nlc3NvckRhdGEiLCJhcnJheUJ1ZmZlciIsImFjY2Vzc29yQnl0ZU9mZnNldCIsImhhc093blByb3BlcnR5IiwiYnVmZmVyVmlld0J5dGVPZmZzZXQiLCJhY2Nlc3NvclR5cGVTaXplIiwiYXJyYXlUeXBlIiwidWludDhBcnJheSIsImFjY2Vzc29yQnl0ZVNpemUiLCJvcmlnaW5hbEJ1ZmZlclZpZXciLCJieXRlTGVuZ3RoIiwiaiIsInR5cGVkQXJyYXkiLCJpbmRpY2VzIiwidmFsdWVzIiwiaW5kaWNlc0J1ZmZlclZpZXciLCJ2YWx1ZXNCdWZmZXJWaWV3IiwiaW5kaWNlc0FycmF5QnVmZmVyIiwidmFsdWVzQXJyYXlCdWZmZXIiLCJpbmRpY2VzQnl0ZU9mZnNldCIsImluZGljZXNCeXRlTGVuZ3RoIiwidmFsdWVzQnl0ZU9mZnNldCIsInZhbHVlc0J5dGVMZW5ndGgiLCJpbmRpY2VzVHlwZSIsImluZGljZXNBcnJheSIsInZhbHVlc0FycmF5IiwicmVwbGFjZUluZGV4IiwiZ2V0QnVmZmVyVmlld0RhdGEiLCJvcmlnaW5EYXRhIiwiSW5kZXhUeXBlQXJyYXkiLCJnZXRJbmRleEZvcm1hdCIsIkluZGV4Rm9ybWF0IiwiVUludDgiLCJVSW50MTYiLCJVSW50MzIiLCJnZXRFbGVtZW50Rm9ybWF0Iiwibm9ybWFsaXplZCIsIlZlcnRleEVsZW1lbnRGb3JtYXQiLCJGbG9hdCIsIk5vcm1hbGl6ZWRTaG9ydDIiLCJTaG9ydDIiLCJOb3JtYWxpemVkU2hvcnQ0IiwiU2hvcnQ0IiwiTm9ybWFsaXplZFVTaG9ydDIiLCJVU2hvcnQyIiwiTm9ybWFsaXplZFVTaG9ydDQiLCJVU2hvcnQ0IiwiTm9ybWFsaXplZEJ5dGU0IiwiQnl0ZTQiLCJOb3JtYWxpemVkVUJ5dGU0IiwiVUJ5dGU0IiwibG9hZEltYWdlQnVmZmVyIiwiaW1hZ2VCdWZmZXIiLCJibG9iIiwid2luZG93IiwiQmxvYiIsImltZyIsIkltYWdlIiwib25lcnJvciIsIm9ubG9hZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9uYWJvcnQiLCJjcm9zc09yaWdpbiIsInNyYyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImlzQWJzb2x1dGVVcmwiLCJwYXJzZVJlbGF0aXZlVXJsIiwiYmFzZVVybCIsInJlbGF0aXZlVXJsIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJfZm9ybWF0UmVsYXRpdmVQYXRoIiwicGFyc2VHTEIiLCJnbGIiLCJVSU5UMzJfTEVOR1RIIiwiR0xCX0hFQURFUl9NQUdJQyIsIkdMQl9IRUFERVJfTEVOR1RIIiwiR0xCX0NIVU5LX1RZUEVTIiwiSlNPTiIsIkJJTiIsImRhdGFWaWV3IiwiRGF0YVZpZXciLCJoZWFkZXIiLCJtYWdpYyIsImdldFVpbnQzMiIsInZlcnNpb24iLCJjb25zb2xlIiwiZXJyb3IiLCJ0b1N0cmluZyIsImNodW5rTGVuZ3RoIiwiY2h1bmtUeXBlIiwiZ2xURkRhdGEiLCJwYXJzZSIsImN1cnJlbnRPZmZzZXQiLCJwYXRoIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwicmVkdWNlIiwiYWNjIiwiY3VyIiwicG9wIiwiam9pbiIsIlBhcnNlciIsInBhcnNlRW5naW5lUmVzb3VyY2UiLCJleHRlbnNpb25OYW1lIiwiZXh0ZW5zaW9uU2NoZW1hIiwicGFyc2VSZXNvdXJjZSIsImV4dHJhIiwicGFyc2VycyIsIl9leHRlbnNpb25QYXJzZXJzIiwiY3JlYXRlRW5naW5lUmVzb3VyY2UiLCJoYXNFeHRlbnNpb25QYXJzZXIiLCJpbml0aWFsaXplIiwiX2FkZEV4dGVuc2lvblBhcnNlciIsImV4dGVuc2lvblBhcnNlciIsInJlZ2lzdGVyRXh0ZW5zaW9uIiwicGFyc2VyIiwiRXh0ZW5zaW9uUGFyc2VyIiwic2NoZW1hIiwiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iLCJfZGVjb2RlciIsIkRSQUNPRGVjb2RlciIsImdsdGZQcmltaXRpdmUiLCJhY2Nlc3NvcnMiLCJhdHRyaWJ1dGVzIiwiZ2x0ZkF0dHJpYnV0ZU1hcCIsImF0dHJpYnV0ZU1hcCIsImF0dHJpYnV0ZVR5cGVNYXAiLCJhdHRyaWJ1dGVOYW1lIiwiYWNjZXNzb3JEZWYiLCJpbmRleEFjY2Vzc29yIiwiaW5kZXhUeXBlIiwidGFza0NvbmZpZyIsImF0dHJpYnV0ZUlEcyIsImF0dHJpYnV0ZVR5cGVzIiwidXNlVW5pcXVlSURzIiwiYnVmZmVyVmlld0luZGV4IiwicGFyc2VkR2VvbWV0cnkiLCJLSFJfbGlnaHRzX3B1bmN0dWFsIiwiZW50aXR5IiwiY29sb3IiLCJpbnRlbnNpdHkiLCJyYW5nZSIsInNwb3QiLCJnbFRGUmVzb3VyY2UiLCJsaWdodCIsImFkZENvbXBvbmVudCIsIkRpcmVjdExpZ2h0IiwiUG9pbnRMaWdodCIsIlNwb3RMaWdodCIsInNldCIsImRpc3RhbmNlIiwiaW5uZXJDb25lQW5nbGUiLCJvdXRlckNvbmVBbmdsZSIsIlBJIiwiYW5nbGUiLCJwZW51bWJyYSIsImxpZ2h0cyIsIk1hdGVyaWFsUGFyc2VyIiwidGV4dHVyZXMiLCJtYXRlcmlhbHMiLCJleHRlbnNpb25zIiwicGJyTWV0YWxsaWNSb3VnaG5lc3MiLCJub3JtYWxUZXh0dXJlIiwib2NjbHVzaW9uVGV4dHVyZSIsImVtaXNzaXZlVGV4dHVyZSIsImVtaXNzaXZlRmFjdG9yIiwiYWxwaGFNb2RlIiwiYWxwaGFDdXRvZmYiLCJkb3VibGVTaWRlZCIsIktIUl9tYXRlcmlhbHNfdW5saXQiLCJLSFJfbWF0ZXJpYWxzX3BiclNwZWN1bGFyR2xvc3NpbmVzcyIsIktIUl9tYXRlcmlhbHNfY2xlYXJjb2F0IiwiT0FTSVNfbWF0ZXJpYWxzX3JlbWFwIiwibWF0ZXJpYWwiLCJQQlJNYXRlcmlhbCIsImJhc2VDb2xvckZhY3RvciIsImJhc2VDb2xvclRleHR1cmUiLCJtZXRhbGxpY0ZhY3RvciIsInJvdWdobmVzc0ZhY3RvciIsIm1ldGFsbGljUm91Z2huZXNzVGV4dHVyZSIsImJhc2VDb2xvciIsImxpbmVhclRvR2FtbWFTcGFjZSIsImJhc2VUZXh0dXJlIiwiaW5kZXgiLCJfcGFyc2VUZXh0dXJlVHJhbnNmb3JtIiwibSIsIm1ldGFsbGljIiwicm91Z2huZXNzIiwicm91Z2huZXNzTWV0YWxsaWNUZXh0dXJlIiwiZW1pc3NpdmVDb2xvciIsInNjYWxlIiwibm9ybWFsVGV4dHVyZUludGVuc2l0eSIsInN0cmVuZ3RoIiwidGV4Q29vcmQiLCJvY2NsdXNpb25UZXh0dXJlSW50ZW5zaXR5IiwiVGV4dHVyZUNvb3JkaW5hdGUiLCJVVjEiLCJvY2NsdXNpb25UZXh0dXJlQ29vcmQiLCJMb2dnZXIiLCJ3YXJuIiwicmVuZGVyRmFjZSIsIlJlbmRlckZhY2UiLCJEb3VibGUiLCJGcm9udCIsImlzVHJhbnNwYXJlbnQiLCJLSFJfdGV4dHVyZV90cmFuc2Zvcm0iLCJjbGVhcmNvYXRGYWN0b3IiLCJjbGVhcmNvYXRUZXh0dXJlIiwiY2xlYXJjb2F0Um91Z2huZXNzRmFjdG9yIiwiY2xlYXJjb2F0Um91Z2huZXNzVGV4dHVyZSIsImNsZWFyY29hdE5vcm1hbFRleHR1cmUiLCJjbGVhckNvYXQiLCJjbGVhckNvYXRSb3VnaG5lc3MiLCJjbGVhckNvYXRUZXh0dXJlIiwiY2xlYXJDb2F0Um91Z2huZXNzVGV4dHVyZSIsImNsZWFyQ29hdE5vcm1hbFRleHR1cmUiLCJQQlJTcGVjdWxhck1hdGVyaWFsIiwiZGlmZnVzZUZhY3RvciIsImRpZmZ1c2VUZXh0dXJlIiwic3BlY3VsYXJGYWN0b3IiLCJnbG9zc2luZXNzRmFjdG9yIiwic3BlY3VsYXJHbG9zc2luZXNzVGV4dHVyZSIsInNwZWN1bGFyQ29sb3IiLCJnbG9zc2luZXNzIiwiVW5saXRNYXRlcmlhbCIsIktIUl9tYXRlcmlhbHNfdmFyaWFudHMiLCJyZW5kZXJlciIsInZhcmlhbnRzIiwibWFwcGluZ3MiLCJtYXAiLCJ2YXJpYW50TmFtZXMiLCJLSFJfbWVzaF9xdWFudGl6YXRpb24iLCJyb3RhdGlvbiIsInRpbGluZ09mZnNldCIsInoiLCJ3IiwieCIsInkiLCJHYWxhY2Vhbk1hdGVyaWFsc1JlbWFwIiwiQW5pbWF0aW9uUGFyc2VyIiwiZW50aXRpZXMiLCJhbmltYXRpb25zIiwiYW5pbWF0aW9uQ2xpcENvdW50IiwiYW5pbWF0aW9uQ2xpcHMiLCJhbmltYXRpb25zSW5kaWNlcyIsImdsdGZBbmltYXRpb24iLCJjaGFubmVscyIsInNhbXBsZXJzIiwiYW5pbWF0aW9uQ2xpcCIsIkFuaW1hdGlvbkNsaXAiLCJzYW1wbGVEYXRhQ29sbGVjdGlvbiIsImdsdGZTYW1wbGVyIiwiaW5wdXRBY2Nlc3NvciIsImlucHV0Iiwib3V0cHV0QWNjZXNzb3IiLCJvdXRwdXQiLCJzY2FsZWQiLCJrIiwidiIsIm91dHB1dFN0cmlkZSIsImludGVycG9sYXRpb24iLCJzYW1wbGVySW50ZXJwb2xhdGlvbiIsIkludGVycG9sYXRpb25UeXBlIiwib3V0cHV0U2l6ZSIsImdsdGZDaGFubmVsIiwidGFyZ2V0IiwiY2hhbm5lbFRhcmdldEVudGl0eSIsIm5vZGUiLCJyZWxhdGl2ZVBhdGgiLCJwYXJlbnQiLCJDb21wb25lbnRUeXBlIiwicHJvcGVydHlOYW1lIiwiVHJhbnNmb3JtIiwiU2tpbm5lZE1lc2hSZW5kZXJlciIsImN1cnZlIiwiX2FkZEN1cnZlIiwiYWRkQ3VydmVCaW5kaW5nIiwiX2FuaW1hdGlvbnNJbmRpY2VzIiwiYW5pbWF0aW9uY2hhbm5lbFRhcmdldFBhdGgiLCJzYW1wbGVEYXRhIiwic2FtcGxlciIsIkFuaW1hdGlvblZlY3RvcjNDdXJ2ZSIsIm4iLCJrZXlmcmFtZSIsIktleWZyYW1lIiwidGltZSIsImluVGFuZ2VudCIsInZhbHVlIiwib3V0VGFuZ2VudCIsImFkZEtleSIsIkFuaW1hdGlvblF1YXRlcm5pb25DdXJ2ZSIsIlF1YXRlcm5pb24iLCJBbmltYXRpb25GbG9hdEFycmF5Q3VydmUiLCJzdWJhcnJheSIsIkJ1ZmZlclBhcnNlciIsIl9pc0dMQiIsInVyaSIsIkVudGl0eVBhcnNlciIsIm5vZGVzIiwiZ2x0Zk5vZGUiLCJtYXRyaXgiLCJ0cmFuc2xhdGlvbiIsIkVudGl0eSIsIl9kZWZhdWx0TmFtZSIsInRyYW5zZm9ybSIsImxvY2FsTWF0cml4Iiwic2V0UG9zaXRpb24iLCJzZXRSb3RhdGlvblF1YXRlcm5pb24iLCJzZXRTY2FsZSIsIl9idWlsZEVudGl0eVRyZWUiLCJfY3JlYXRlU2NlbmVSb290cyIsImNoaWxkcmVuIiwiY2hpbGRFbnRpdHkiLCJhZGRDaGlsZCIsInNjZW5lSUQiLCJzY2VuZSIsInNjZW5lcyIsInNjZW5lUm9vdHMiLCJyb290RW50aXR5IiwiZGVmYXVsdFNjZW5lUm9vdCIsIk1lc2hQYXJzZXIiLCJnbHRmTWVzaCIsInByaW1pdGl2ZXMiLCJwcmltaXRpdmVQcm9taXNlcyIsIm1lc2giLCJNb2RlbE1lc2giLCJkZWNvZGVkR2VvbWV0cnkiLCJfcGFyc2VNZXNoRnJvbUdMVEZQcmltaXRpdmVEcmFjbyIsImF0dHJpYnV0ZVNlbWFudGljIiwic2hhcGVJbmRleCIsImtlZXBNZXNoRGF0YSIsIl9wYXJzZU1lc2hGcm9tR0xURlByaW1pdGl2ZSIsInNoYXBlQWNjZXNzb3JJZHgiLCJ0YXJnZXRzIiwiYXR0cmlidXRlQWNjZXNzb3JJZHgiLCJtZXNoZXMiLCJtZXNoUHJvbWlzZXMiLCJnZXRWZXJ0ZXhCdWZmZXJEYXRhIiwiZ2V0QmxlbmRTaGFwZURhdGEiLCJnZXRJbmRleEJ1ZmZlckRhdGEiLCJtb2RlIiwidmVydGV4RWxlbWVudHMiLCJ2ZXJ0ZXhDb3VudCIsImJ1ZmZlckJpbmRJbmRleCIsInBvc2l0aW9ucyIsImJvbmVJbmRpY2VzIiwiYm9uZVdlaWdodHMiLCJhdHRyaWJ1dGUiLCJhY2Nlc3NvckJ1ZmZlciIsImRhdGFFbGVtZW50U2l6ZSIsInZlcnRpY2VzIiwidmVydGV4RWxlbWVudCIsIm1lc2hJZCIsImluc3RhbmNlSWQiLCJlbGVtZW50Tm9ybWFsaXplZCIsImVsZW1lbnRGb3JtYXQiLCJzY2FsZUZhY3RvciIsImVsZW1lbnRPZmZzZXQiLCJWZXJ0ZXhFbGVtZW50IiwidmVydGV4QnVmZmVyIiwiQnVmZmVyQmluZEZsYWciLCJWZXJ0ZXhCdWZmZXIiLCJCdWZmZXJVc2FnZSIsIlN0YXRpYyIsInNldERhdGEiLCJzZXRWZXJ0ZXhCdWZmZXJCaW5kaW5nIiwiYm91bmRzIiwibWluIiwibWF4IiwiYmFzZU9mZnNldCIsInBvc2l0aW9uIiwiX3RlbXBWZWN0b3IzIiwiTnVtYmVyIiwiTUFYX1ZBTFVFIiwiY2xvbmVQb3NpdGlvbiIsImNsb25lIiwiYm9uZUluZGV4IiwiYm9uZVdlaWdodCIsInNldFZlcnRleEVsZW1lbnRzIiwiaW5kZXhEYXRhIiwic2V0SW5kaWNlcyIsImFkZFN1Yk1lc2giLCJfY3JlYXRlQmxlbmRTaGFwZSIsInVwbG9hZERhdGEiLCJfcG9zaXRpb25zIiwiX2JvbmVJbmRpY2VzIiwiX2JvbmVXZWlnaHRzIiwiZ2xURk1lc2giLCJnbFRGVGFyZ2V0cyIsImJsZW5kU2hhcGVOYW1lcyIsImV4dHJhcyIsInRhcmdldE5hbWVzIiwiZGVsdGFQb3NCdWZmZXIiLCJkZWx0YU5vckJ1ZmZlciIsImRlbHRhVGFuQnVmZmVyIiwiZGVsdGFQb3NpdGlvbnMiLCJkZWx0YU5vcm1hbHMiLCJkZWx0YVRhbmdlbnRzIiwiYmxlbmRTaGFwZSIsIkJsZW5kU2hhcGUiLCJhZGRGcmFtZSIsImFkZEJsZW5kU2hhcGUiLCJwb3NpdGlvbkJ1ZmZlciIsInNldFBvc2l0aW9ucyIsImJ1ZmZlckRhdGEiLCJub3JtYWxzIiwic2V0Tm9ybWFscyIsInRleHR1cmVjb29yZHMiLCJzZXRVVnMiLCJ0ZXh0dXJlY29vcmRzMSIsInRleHR1cmVjb29yZHMyIiwidGV4dHVyZWNvb3JkczMiLCJ0ZXh0dXJlY29vcmRzNCIsInRleHR1cmVjb29yZHM1IiwidGV4dHVyZWNvb3JkczYiLCJ0ZXh0dXJlY29vcmRzNyIsInNldENvbG9ycyIsInRhbmdlbnRzIiwic2V0VGFuZ2VudHMiLCJqb2ludHMiLCJzZXRCb25lSW5kaWNlcyIsIndlaWdodHMiLCJzZXRCb25lV2VpZ2h0cyIsIlNjZW5lUGFyc2VyIiwiY2FtZXJhcyIsImdsdGZDYW1lcmFzIiwiY2FtZXJhSUQiLCJjYW1lcmEiLCJtZXNoSUQiLCJfY3JlYXRlQ2FtZXJhIiwiX2NyZWF0ZVJlbmRlcmVyIiwibGlnaHRJbmRleCIsIl9jcmVhdGVBbmltYXRvciIsImNhbWVyYVNjaGVtYSIsIm9ydGhvZ3JhcGhpYyIsInBlcnNwZWN0aXZlIiwiQ2FtZXJhIiwieG1hZyIsInltYWciLCJ6ZmFyIiwiem5lYXIiLCJpc09ydGhvZ3JhcGhpYyIsIm5lYXJDbGlwUGxhbmUiLCJmYXJDbGlwUGxhbmUiLCJvcnRob2dyYXBoaWNTaXplIiwiYXNwZWN0UmF0aW8iLCJ5Zm92IiwiZmllbGRPZlZpZXciLCJlbmFibGVkIiwic2tpbklEIiwiYmxlbmRTaGFwZVdlaWdodHMiLCJza2luUmVuZGVyZXIiLCJza2luIiwic2tpbnMiLCJNZXNoUmVuZGVyZXIiLCJtYXRlcmlhbEluZGV4IiwiZ2x0Zk1lc2hQcmltaXRpdmVzIiwicmVtYXBNYXRlcmlhbHMiLCJtdGwiLCJzZXRNYXRlcmlhbCIsIl9nZXREZWZhdWx0TWF0ZXJpYWwiLCJnbHRmTWVzaGVzIiwiYW5pbWF0b3IiLCJBbmltYXRvciIsImFuaW1hdG9yU3RhdGVNYWNoaW5lIiwidW5pcXVlTmFtZSIsIm1ha2VVbmlxdWVTdGF0ZU5hbWUiLCJhbmltYXRvclN0YXRlIiwiX2RlZmF1bHRNYXRlcmlhbCIsIkJsaW5uUGhvbmdNYXRlcmlhbCIsIlNraW5QYXJzZXIiLCJnbHRmU2tpbnMiLCJpbnZlcnNlQmluZE1hdHJpY2VzIiwic2tlbGV0b24iLCJqb2ludENvdW50IiwiU2tpbiIsImludmVyc2VCaW5kTWF0cml4IiwiTWF0cml4Iiwiam9pbnRJbmRleCIsImpvaW50TmFtZSIsInJvb3RCb25lIiwiX2ZpbmRTa2VsZXRvblJvb3RCb25lIiwicGF0aHMiLCJ1bnNoaWZ0Iiwicm9vdE5vZGUiLCJUZXh0dXJlUGFyc2VyIiwic291cmNlIiwiaW1hZ2VzIiwibWltZVR5cGUiLCJpbWFnZU5hbWUiLCJleHQiLCJzdGFydHNXaXRoIiwiS1RYIiwiVGV4dHVyZTJEIiwidGV4dHVyZU5hbWUiLCJfcGFyc2VTYW1wbGVyIiwiYnVmZmVyVmlld0RhdGEiLCJpbWFnZSIsIndpZHRoIiwiaGVpZ2h0Iiwic2V0SW1hZ2VTb3VyY2UiLCJnZW5lcmF0ZU1pcG1hcHMiLCJtYWdGaWx0ZXIiLCJtaW5GaWx0ZXIiLCJ3cmFwUyIsIndyYXBUIiwiUG9pbnQiLCJCaWxpbmVhciIsIndyYXBNb2RlVSIsIl93cmFwTWFwIiwid3JhcE1vZGVWIiwiR0xURlRleHR1cmVXcmFwTW9kZSIsIkNsYW1wIiwiTWlycm9yIiwiUmVwZWF0IiwiVmFsaWRhdG9yIiwiYXNzZXQiLCJleHRlbnNpb25zVXNlZCIsImV4dGVuc2lvbnNSZXF1aXJlZCIsImdsdGZWZXJzaW9uIiwiaW5mbyIsImV4dGVuc2lvblJlcXVpcmVkIiwiR0xURlBhcnNlciIsInBpcGVzIiwiX3BpcGVzIiwicGlwZSIsImxhc3RQaXBlIiwiY2FuY2VsIiwiZGVmYXVsdFBpcGVsaW5lIiwiR0xURlJlc291cmNlIiwiZGVzdHJveSIsIl9kZXN0cm95ZWQiLCJFbmdpbmVPYmplY3QiLCJHTFRGTG9hZGVyIiwicGFyYW1zIiwiUHJlZmFiIiwiSERSTG9hZGVyIiwiX3BhcnNlSGVhZGVyIiwiZGF0YVBvc2l0aW9uIiwicGl4ZWxzIiwiX3JlYWRQaXhlbHMiLCJjdWJlU2l6ZSIsImN1YmVNYXBEYXRhIiwiX2NvbnZlcnRUb0N1YmVtYXAiLCJmYWNlSW5kZXgiLCJpbnB1dFdpZHRoIiwiaW5wdXRIZWlnaHQiLCJ0ZXh0dXJlUmlnaHQiLCJfY3JlYXRlQ3ViZW1hcERhdGEiLCJfZmFjZVJpZ2h0IiwidGV4dHVyZUxlZnQiLCJfZmFjZUxlZnQiLCJ0ZXh0dXJlVXAiLCJfZmFjZVVwIiwidGV4dHVyZURvd24iLCJfZmFjZUJvdHRvbSIsInRleHR1cmVGcm9udCIsIl9mYWNlRnJvbnQiLCJ0ZXh0dXJlQmFjayIsIl9mYWNlQmFjayIsInRleFNpemUiLCJmYWNlRGF0YSIsInRleHR1cmVBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5Iiwicm90RFgxIiwic3VidHJhY3QiLCJyb3REWDIiLCJfdGVtcDJWZWN0b3IzIiwiZHkiLCJmeSIsInh2MSIsIl90ZW1wM1ZlY3RvcjMiLCJ4djIiLCJfdGVtcDRWZWN0b3IzIiwiX3RlbXA1VmVjdG9yMyIsIm5vcm1hbGl6ZSIsIl9jYWxjUHJvamVjdGlvblNwaGVyaWNhbCIsIl9SR0JFVG9MaW5lYXIiLCJfbGluZWFyVG9SR0JNIiwiciIsImciLCJiIiwiYSIsInZEaXIiLCJ0aGV0YSIsImF0YW4yIiwicGhpIiwiYWNvcyIsImR4IiwicHgiLCJyb3VuZCIsInB5IiwiaW5wdXRZIiwiX3JlYWRTdHJpbmdMaW5lIiwidWludDhhcnJheSIsInN0YXJ0SW5kZXgiLCJsaW5lIiwiY2hhcmFjdGVyIiwiZW5kT2ZIZWFkZXIiLCJmaW5kRm9ybWF0IiwibGluZUluZGV4Iiwic2l6ZVJlZ2V4cCIsIm1hdGNoIiwiZXhlYyIsInBhcnNlSW50Iiwic2NhbkxpbmVXaWR0aCIsImRhdGFSR0JBIiwicG9zIiwicHRyRW5kIiwicmdiZVN0YXJ0Iiwic2NhbkxpbmVCdWZmZXIiLCJudW1TY2FuTGluZXMiLCJwdHIiLCJpc0VuY29kZWRSdW4iLCJieXRlVmFsdWUiLCJsIiwib2ZmIiwicG93IiwibWF4UmFuZ2UiLCJtYXhSR0IiLCJNIiwiY2VpbCIsIl9yaWdodEJvdHRvbUJhY2siLCJfcmlnaHRCb3R0b21Gcm9udCIsIl9yaWdodFVwQmFjayIsIl9yaWdodFVwRnJvbnQiLCJfbGVmdEJvdHRvbUJhY2siLCJfbGVmdEJvdHRvbUZyb250IiwiX2xlZnRVcEJhY2siLCJfbGVmdFVwRnJvbnQiLCJIRFIiLCJKU09OTG9hZGVyIiwiSEVBREVSX0xFTiIsIkNPTVBSRVNTRURfMkQiLCJnZXRNaXBtYXBzIiwia3R4Q29udGFpbmVyIiwibG9hZE1pcG1hcHMiLCJtaXBtYXBzIiwiZGF0YU9mZnNldCIsImJ5dGVzT2ZLZXlWYWx1ZURhdGEiLCJwaXhlbFdpZHRoIiwicGl4ZWxIZWlnaHQiLCJudW1iZXJPZk1pcG1hcExldmVscyIsImxldmVsIiwiaW1hZ2VTaXplIiwiSW50MzJBcnJheSIsIm51bWJlck9mRmFjZXMiLCJieXRlQXJyYXkiLCJpc1ZhbGlkIiwiaWRlbnRpZmllciIsImdldEVuZ2luZUZvcm1hdCIsImludGVybmFsRm9ybWF0IiwiR0xDb21wcmVzc2VkVGV4dHVyZUludGVybmFsRm9ybWF0IiwiUkdCX1MzVENfRFhUMV9FWFQiLCJUZXh0dXJlRm9ybWF0IiwiRFhUMSIsIlJHQkFfUzNUQ19EWFQ1X0VYVCIsIkRYVDUiLCJSR0JfRVRDMV9XRUJHTCIsIkVUQzFfUkdCIiwiUkdCOF9FVEMyIiwiRVRDMl9SR0IiLCJSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiIsIkVUQzJfUkdCQTUiLCJSR0JBOF9FVEMyX0VBQyIsIkVUQzJfUkdCQTgiLCJSR0JfUFZSVENfMkJQUFYxX0lNRyIsIlBWUlRDX1JHQjIiLCJSR0JBX1BWUlRDXzJCUFBWMV9JTUciLCJQVlJUQ19SR0JBMiIsIlJHQl9QVlJUQ180QlBQVjFfSU1HIiwiUFZSVENfUkdCNCIsIlJHQkFfUFZSVENfNEJQUFYxX0lNRyIsIlBWUlRDX1JHQkE0IiwiUkdCQV9BU1RDXzRYNF9LSFIiLCJBU1RDXzR4NCIsIlJHQkFfQVNUQ181WDVfS0hSIiwiQVNUQ181eDUiLCJSR0JBX0FTVENfNlg2X0tIUiIsIkFTVENfNng2IiwiUkdCQV9BU1RDXzhYOF9LSFIiLCJBU1RDXzh4OCIsIlJHQkFfQVNUQ18xMFgxMF9LSFIiLCJBU1RDXzEweDEwIiwiUkdCQV9BU1RDXzEyWDEyX0tIUiIsIkFTVENfMTJ4MTIiLCJmb3JtYXROYW1lIiwia2hyb25vc1RleHR1cmVDb250YWluZXJQYXJzZXIiLCJmYWNlc0V4cGVjdGVkIiwid2l0aE1pcG1hcHMiLCJtYXBFbmdpbmVGb3JtYXQiLCJoZWFkZXJEYXRhVmlldyIsImVuZGlhbm5lc3MiLCJsaXR0bGVFbmRpYW4iLCJwYXJzZWRSZXN1bHQiLCJnbFR5cGUiLCJnbFR5cGVTaXplIiwiZ2xGb3JtYXQiLCJnbEludGVybmFsRm9ybWF0IiwiZ2xCYXNlSW50ZXJuYWxGb3JtYXQiLCJwaXhlbERlcHRoIiwibnVtYmVyT2ZBcnJheUVsZW1lbnRzIiwibG9hZFR5cGUiLCJlbmdpbmVGb3JtYXQiLCJwYXJzZVNpbmdsZUtUWCIsImt0eCIsInBhcnNlQ3ViZUtUWCIsImRhdGFBcnJheSIsIm1pcG1hcHNGYWNlcyIsIktUWEN1YmVMb2FkZXIiLCJ1cmxzIiwicGFyc2VkRGF0YSIsIm1pcG1hcCIsIm1pcGxldmVsIiwiS1RYQ3ViZSIsIktUWExvYWRlciIsImJpbiIsIk1hdGVyaWFsTG9hZGVyIiwianNvbiIsInNoYWRlckRhdGEiLCJrZXkiLCJtYXRlcmlhbFNoYWRlckRhdGEiLCJzZXRWZWN0b3IyIiwic2V0VmVjdG9yMyIsInNldFZlY3RvcjQiLCJzZXRDb2xvciIsInNldEZsb2F0IiwidGV4dHVyZVByb21pc2VzIiwic2V0VGV4dHVyZSIsInNoYWRlciIsIm1hY3JvcyIsInJlbmRlclN0YXRlIiwiUEJSQmFzZU1hdGVyaWFsIiwiU2hhZGVyIiwiZmluZCIsImVuYWJsZU1hY3JvIiwiTWF0ZXJpYWwiLCJCdWZmZXJSZWFkZXIiLCJfZGF0YVZpZXciLCJfbGl0dGxlRW5kaWFuIiwiX29mZnNldCIsIm5leHRVaW50OCIsImdldFVpbnQ4IiwibmV4dFVpbnQxNiIsImdldFVpbnQxNiIsIm5leHRVaW50MzIiLCJuZXh0SW50MzIiLCJnZXRJbnQzMiIsIm5leHRJbnQzMkFycmF5IiwibGVuIiwibmV4dEZsb2F0MzIiLCJnZXRGbG9hdDMyIiwibmV4dEZsb2F0MzJBcnJheSIsIm5leHRVaW50MzJBcnJheSIsIm5leHRVaW50OEFycmF5IiwibmV4dFVpbnQ2NCIsImxlZnQiLCJyaWdodCIsIm5leHRTdHIiLCJzdHJCeXRlTGVuZ3RoIiwibmV4dEltYWdlRGF0YSIsIm5leHRJbWFnZXNEYXRhIiwiaW1hZ2VzTGVuIiwiaW1hZ2VzRGF0YSIsInNraXAiLCJieXRlcyIsInNjYW4iLCJtYXhCeXRlTGVuZ3RoIiwidGVybSIsImltYWdlTWFwcGluZyIsImRlY29kZXJNYXAiLCJkZWNvZGVyIiwiRmlsZUhlYWRlciIsInRvdGFsTGVuZ3RoIiwiaGVhZGVyTGVuZ3RoIiwidG90YWxMZW4iLCJmaWxlVmVyc2lvbiIsInR5cGVMZW4iLCJ0eXBlVWludDhBcnJheSIsIm5hbWVMZW4iLCJuYW1lVWludDhBcnJheSIsImRhdGFMZW5ndGgiLCJNZXNoRGVjb2RlciIsImJ1ZmZlclJlYWRlciIsIm1vZGVsTWVzaCIsImpzb25EYXRhU3RyaW5nIiwiZW5jb2RlZE1lc2hEYXRhIiwiY29weUZyb20iLCJmbG9hdDMyQXJyYXkiLCJzdGFydCIsImVuZCIsImZsb2F0MzJBcnJheVRvVmVjdG9yMyIsInV2cyIsImZsb2F0MzJBcnJheVRvVmVjdG9yMiIsInV2MSIsInV2MiIsInV2MyIsInV2NCIsInV2NSIsInV2NiIsInV2NyIsImZsb2F0MzJBcnJheVRvVkNvbG9yIiwiZmxvYXQzMkFycmF5VG9WZWN0b3I0IiwiYmxlbmRTaGFwZXMiLCJibGVuZFNoYXBlRGF0YSIsImZyYW1lcyIsImZyYW1lRGF0YSIsInBvc2l0aW9uQXJyYXkiLCJkZWx0YVBvc2l0aW9uIiwibm9ybWFsc0FycmF5IiwidGFuZ2VudHNBcnJheSIsInN1Yk1lc2hlcyIsInN1Yk1lc2giLCJUZXh0dXJlMkREZWNvZGVyIiwib2JqZWN0SWQiLCJhbmlzb0xldmVsIiwiZm9ybWF0IiwiaXNQaXhlbEJ1ZmZlciIsIm1pcENvdW50IiwidGV4dHVyZTJEIiwicGl4ZWxCdWZmZXIiLCJfb2JqZWN0UG9vbCIsImNvbXBsZXRlZENvdW50Iiwib25Db21wbGV0ZSIsIlJlZmxlY3Rpb25QYXJzZXIiLCJyZWdpc3RlckN1c3RvbVBhcnNlQ29tcG9uZW50IiwiaGFuZGxlIiwiY3VzdG9tUGFyc2VDb21wb25lbnRIYW5kbGVzIiwicGFyc2VFbnRpdHkiLCJlbnRpdHlDb25maWciLCJnZXRFbnRpdHlCeUNvbmZpZyIsImlzQWN0aXZlIiwiYXNzZXRSZWZJZCIsInJlZklkIiwiaXNDbG9uZSIsInBhcnNlQ2xhc3NPYmplY3QiLCJDbGFzcyIsImdldENsYXNzIiwiY2xhc3MiLCJjb25zdHJ1Y3RQYXJhbXMiLCJpbnN0YW5jZSIsInBhcnNlUHJvcHNBbmRNZXRob2RzIiwicGFyc2VCYXNpY1R5cGUiLCJpc0FycmF5IiwiX2lzQ2xhc3MiLCJfaXNSZWYiLCJtZXRob2RzIiwibWV0aG9kTmFtZSIsIm1ldGhvZFBhcmFtcyIsInBhcnNlTWV0aG9kIiwicHJvcHMiLCJjb25zdHJ1Y3RvciIsInBhcmFtIiwiTWFwIiwiUHJlZmFiUGFyc2VyIiwicGFyc2VDaGlsZHJlbiIsImVudGl0aWVzQ29uZmlnIiwicGFyZW50SWQiLCJnZXQiLCJjaGlsZElkIiwiQ29tcG9uZW50TWFwIiwiUGFydGljbGVSZW5kZXJlciIsIlNjcmlwdCIsIlNwcml0ZU1hc2siLCJTcHJpdGVSZW5kZXJlciIsIlRleHRSZW5kZXJlciIsIkludGVycG9sYWJsZVZhbHVlVHlwZSIsIkZsb2F0QXJyYXkiLCJBbmltYXRpb25DbGlwRGVjb2RlciIsImV2ZW50c0xlbiIsImV2ZW50IiwiQW5pbWF0aW9uRXZlbnQiLCJmdW5jdGlvbk5hbWUiLCJwYXJhbWV0ZXIiLCJ2YWwiLCJhZGRFdmVudCIsImN1cnZlQmluZGluZ3NMZW4iLCJjb21wb25lbnRTdHIiLCJwcm9wZXJ0eSIsImtleXNMZW4iLCJjdXJ2ZVR5cGUiLCJBbmltYXRpb25GbG9hdEN1cnZlIiwiQW5pbWF0aW9uQXJyYXlDdXJ2ZSIsIkFuaW1hdGlvblZlY3RvcjJDdXJ2ZSIsIkFuaW1hdGlvblZlY3RvcjRDdXJ2ZSIsIkFuaW1hdGlvbkNvbG9yQ3VydmUiLCJTY2VuZVBhcnNlckNvbnRleHQiLCJvcmlnaW5hbERhdGEiLCJlbnRpdHlNYXAiLCJjb21wb25lbnRzIiwiYXNzZXRzIiwiZW50aXR5Q29uZmlnTWFwIiwicm9vdElkcyIsImNsZWFyIiwiX2VuZ2luZSIsIl9vcmdhbml6ZUVudGl0aWVzIiwiYmluZCIsIl9wYXJzZUNvbXBvbmVudHMiLCJfY2xlYXJBbmRSZXNvbHZlU2NlbmUiLCJfcmVqZWN0IiwiX3Jlc29sdmUiLCJfcGFyc2VFbnRpdGllcyIsImVudGl0aWVzTWFwIiwiaWQiLCJyb290SWQiLCJyb290RW50aXRpZXMiLCJhZGRSb290RW50aXR5IiwiY29tcG9uZW50Q29uZmlnIiwiY29tcG9uZW50IiwiZ2V0Q29tcG9uZW50Iiwic2NlbmVEYXRhIiwiU2NlbmUiLCJNZXNoTG9hZGVyIiwiRWRpdG9yVGV4dHVyZUxvYWRlciIsIm9iamVjdCIsIk1lc2giLCJTb3VyY2VGb250TG9hZGVyIiwiU291cmNlRm9udCIsIlNwcml0ZUF0bGFzTG9hZGVyIiwiX3RlbXBSZWN0IiwiUmVjdCIsIl90ZW1wVmVjMiIsIl90ZW1wVmVjNCIsIl8iLCJjb25maWdQcm9taXNlIiwiYXRsYXNEYXRhIiwiYXRsYXNJdGVtIiwiYXRsYXNJdGVtcyIsInNwcml0ZXMiLCJzcHJpdGVBdGxhcyIsIl9hZGRTcHJpdGUiLCJfbWFrZVNwcml0ZSIsImF0bGFzSXRlbXNMZW4iLCJTcHJpdGVBdGxhcyIsImNvbmZpZyIsInJlZ2lvbiIsImF0bGFzUmVnaW9uT2Zmc2V0IiwiYXRsYXNSZWdpb24iLCJwaXZvdCIsImJvcmRlciIsInNwcml0ZSIsIlNwcml0ZSIsImgiLCJpbnZXIiwiaW52SCIsIm9mZnNldExlZnQiLCJvZmZzZXRSaWdodCIsIm9mZnNldEJvdHRvbSIsIm9mZnNldFRvcCIsImF0bGFzUm90YXRlZCIsIlNwcml0ZUxvYWRlciIsImJlbG9uZ1RvQXRsYXMiLCJhdGxhcyIsImdldFNwcml0ZSIsImZ1bGxQYXRoIiwiVGV4dHVyZTJETG9hZGVyIiwiX3BsYXRmb3JtVGV4dHVyZSIsImluZGV4T2YiLCJzcGxpdFBhdGgiLCJUZXh0dXJlQ3ViZUxvYWRlciIsInRleCIsIlNjZW5lTG9hZGVyIiwiaW5pdFZpcnR1YWxSZXNvdXJjZXMiLCJmaWxlcyIsImFtYmllbnQiLCJhbWJpZW50TGlnaHRQcm9taXNlIiwiZGlmZnVzZUludGVuc2l0eSIsInNwZWN1bGFySW50ZW5zaXR5IiwiZGlmZnVzZVNvbGlkQ29sb3IiLCJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZFByb21pc2UiLCJCYWNrZ3JvdW5kTW9kZSIsIlNvbGlkQ29sb3IiLCJzb2xpZENvbG9yIiwiU2t5Iiwic2t5Iiwic2t5TWF0ZXJpYWwiLCJTa3lCb3hNYXRlcmlhbCIsInRleHR1cmVDdWJlTWFwIiwidGV4dHVyZURlY29kZVJHQk0iLCJQcmltaXRpdmVNZXNoIiwiY3JlYXRlQ3Vib2lkIiwiVGV4dHVyZSIsInNoYWRvdyIsImNhc3RTaGFkb3dzIiwic2hhZG93UmVzb2x1dGlvbiIsInNoYWRvd0Rpc3RhbmNlIiwic2hhZG93Q2FzY2FkZXMiLCJjcmVhdGVGcm9tT1MiLCJmb250RmFtaWx5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBTyxTQUFTLFFBQVEsR0FBRztBQUMzQixJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsTUFBTSxDQUFDLE1BQU0sRUFBRTtBQUN4RCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ25ELFlBQVksSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLFlBQVksS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckgsU0FBUztBQUNUO0FBQ0EsUUFBUSxPQUFPLE1BQU0sQ0FBQztBQUN0QixLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMs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QUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckgsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxNQUFNLEtBQUssVUFBVSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3SixJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3RFLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxFQUFFO0FBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3RFLFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDdEQsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FB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QUc7QUFDL0MsSUFBSSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDM0UsSUFBSSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQzdDLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDakQ7QUFDQSxJQUFJLElBQUk7QUFDUixRQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RGO0FBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDaEIsUUFBUSxPQUFPLEtBQUssQ0FBQztBQUNyQixLQUFLO0FBQ0w7O0FDVk8sU0FBUyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDaEQsSUFBSSxJQUFJLDRCQUE0QixFQUFFLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDdkUsU0FBUztBQUNULFFBQVEsVUFBVSxHQUFHLFNBQVMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQzdELFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsQyxZQUFZLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RCxZQUFZLElBQUksUUFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDN0M7QUFDQSxZQUFZLElBQUksS0FBSyxFQUFF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