{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataManage\\dataDWCatalog\\fieldsManage.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataManage\\dataDWCatalog\\fieldsManage.vue","mtime":1736276117576},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGxpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudGVzdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBkaWFsb2dNaXhpbiBmcm9tICdAL21peGlucy9kaWFsb2cuanMnOwppbXBvcnQgdXRpbHMgZnJvbSAnQC9ob3RlbnQtdWktdXRpbC5qcyc7CmltcG9ydCBlbnVtRGljdERpYWxvZyBmcm9tICcuL2VudW1EaWN0RGlhbG9nLnZ1ZSc7CmltcG9ydCBtdWx0aURpY3REaWFsb2cgZnJvbSAnLi9tdWx0aURpY3REaWFsb2cudnVlJzsKaW1wb3J0IHsgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeS5qcyc7CmltcG9ydCBBUEkgZnJvbSAnQC9hcGkvYnVzaW5lc3MvZGF0YURXQ2F0YWxvZyc7CmltcG9ydCB7IG1hcFN0YXRlIH0gZnJvbSAndnVleCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRmllbGRzTWFuYWdlJywKICBjb21wb25lbnRzOiB7CiAgICBlbnVtRGljdERpYWxvZzogZW51bURpY3REaWFsb2csCiAgICBtdWx0aURpY3REaWFsb2c6IG11bHRpRGljdERpYWxvZwogIH0sCiAgbWl4aW5zOiBbZGlhbG9nTWl4aW5dLAogIHByb3BzOiBbXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIHZhciBjaGVja2V5ID0gZnVuY3Rpb24gY2hlY2tleShydWxlLCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ+Wtl+autee8lueggeS4jeiDveS4uuepuicpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAoX3RoaXMuZm9ybS5hdHRyRGF0YS5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLmNvZGUgPT09IHZhbHVlOwogICAgICAgIH0pLmxlbmd0aCA+IDEpIHsKICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcign5a2X5q6157yW56CB5LiN6IO96YeN5aSNIScpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgICByZXR1cm4gewogICAgICBmaWVsZHNSdWxlczogewogICAgICAgIG5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICflrZfmrrXlkI3np7DkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgY29kZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+Wtl+autee8lueggeS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9LCB7CiAgICAgICAgICBwYXR0ZXJuOiAvXlthLXpBLVpdW2EtekEtWjAtOV9dKiQvLAogICAgICAgICAgbWVzc2FnZTogJ+S7peWtl+avjeW8gOWktOeahOWtl+avjeOAgeaVsOWtl+OAgeS4i+WIkue6v+e7hOWQiCcsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9LCB7CiAgICAgICAgICB2YWxpZGF0b3I6IGNoZWNrZXksCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XQogICAgICB9LAogICAgICBmb3JtOiB7CiAgICAgICAgYXR0ckRhdGE6IFtdCiAgICAgIH0sCiAgICAgIGltcG9ydERhdGE6IHsKICAgICAgICB0YWJsZUlkOiAnJwogICAgICB9LAogICAgICBkaWFsb2dWaXNpYmxlRW51bTogZmFsc2UsCiAgICAgIGRpYWxvZ1Zpc2libGVNdWx0aTogZmFsc2UsCiAgICAgIGN1cnJlbnRSb3c6IG51bGwsCiAgICAgIGluZGV4OiBudWxsLAogICAgICB0YWJlbERhdGE6IG51bGwsCiAgICAgIHRhYmxlTG9hZGluZzogZmFsc2UsCiAgICAgIHVwbG9hZExvYWRpbmc6IGZhbHNlLAogICAgICB1cGxvYWRWaXNpYmxlOiBmYWxzZSwKICAgICAgcHVibGlzaGVkOiBmYWxzZQogICAgfTsKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgIGRvY3VtZW50Lm9ua2V5ZG93biA9IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKF90aGlzMi5mb3JtLmF0dHJEYXRhKSB7CiAgICAgICAgdmFyIGtleSA9IHdpbmRvdy5ldmVudC5rZXlDb2RlOwogICAgICAgIGlmIChrZXkgPT0gMTEzKSB7CiAgICAgICAgICAvLyA9PSA4MyAmJiBldmVudC5jdHJsS2V5CiAgICAgICAgICBfdGhpczIuYWRkQXR0clJvd3MoKTsKICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBfdGhpczIuJHJlZnMuYXR0clRhYmxlU2Nyb2xsYmFySGVpZ2h0LmJvZHlXcmFwcGVyLnNjcm9sbFRvcCA9IF90aGlzMi4kcmVmcy5hdHRyVGFibGVTY3JvbGxiYXJIZWlnaHQuYm9keVdyYXBwZXIuc2Nyb2xsSGVpZ2h0OwogICAgICAgICAgfSwgNTAwKTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgfSwKICBjb21wdXRlZDogX29iamVjdFNwcmVhZCh7CiAgICBhY3Rpb25Vcmw6IGZ1bmN0aW9uIGFjdGlvblVybChfKSB7CiAgICAgIHJldHVybiAiIi5jb25jYXQod2luZG93LmNvbnRleHQucG9ydGFsLCAiL2Jpei9kYXRhUmVzb3VyY2UvZHdGaWVsZC92MS9pbXBvcnRGaWxlIik7CiAgICB9CiAgfSwgbWFwU3RhdGUoewogICAgaGVhZGVyczogZnVuY3Rpb24gaGVhZGVycyhzdGF0ZSkgewogICAgICByZXR1cm4gewogICAgICAgIEF1dGhvcml6YXRpb246ICJCZWFyZXIgIi5jb25jYXQoc3RhdGUubG9naW4uY3VycmVudFVzZXIudG9rZW4pCiAgICAgIH07CiAgICB9CiAgfSkpLAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7fSwKICBtZXRob2RzOiB7CiAgICBpbml0RGF0YTogZnVuY3Rpb24gaW5pdERhdGEoZGF0YSkgewogICAgICB0aGlzLnRhYmVsRGF0YSA9IGRhdGE7CiAgICAgIHRoaXMuaW1wb3J0RGF0YS50YWJsZUlkID0gZGF0YS5pZDsKICAgICAgdGhpcy5wdWJsaXNoZWQgPSB0aGlzLnRhYmVsRGF0YS5kZXBsb3llZCA9PT0gJzEnOwogICAgICB0aGlzLmdldEZpZWxkc0J5VGFibGUoKTsKICAgIH0sCiAgICBnZXRGaWVsZHNCeVRhYmxlOiBmdW5jdGlvbiBnZXRGaWVsZHNCeVRhYmxlKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHF1ZXJ5RmllbGQsIF95aWVsZCRBUEkkcXVlcnlGaWVsZDIsIGZpZWxkTGlzdDsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczMudGFibGVMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTsKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnF1ZXJ5RmllbGRzQnlUYWJsZUlkKF90aGlzMy50YWJlbERhdGEuaWQpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRxdWVyeUZpZWxkID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkQVBJJHF1ZXJ5RmllbGQyID0gX3lpZWxkJEFQSSRxdWVyeUZpZWxkLmZpZWxkTGlzdDsKICAgICAgICAgICAgICBmaWVsZExpc3QgPSBfeWllbGQkQVBJJHF1ZXJ5RmllbGQyID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRBUEkkcXVlcnlGaWVsZDI7CiAgICAgICAgICAgICAgaWYgKGZpZWxkTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGZpZWxkTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmZpZWxkVmFsdWVUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgaXRlbS5maWVsZFZhbHVlVHlwZSA9IGl0ZW0uZmllbGRWYWx1ZVR5cGUudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBfdGhpczMuZm9ybS5hdHRyRGF0YSA9IGZpZWxkTGlzdC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZmllbGRUeXBlID09PSAnMic7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXMzLmZvcm0uYXR0ckRhdGEgPSBbXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDEzOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxMDsKICAgICAgICAgICAgICBfY29udGV4dC50MCA9IF9jb250ZXh0WyJjYXRjaCJdKDEpOwogICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0LnQwIHx8ICfotYTmupDpobnlrZfmrrXmn6Xor6LlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTM7CiAgICAgICAgICAgICAgX3RoaXMzLnRhYmxlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMTMpOwogICAgICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1sxLCAxMCwgMTMsIDE2XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlOiBnZXREaWN0aW9uYXJ5QnlDb2RlLAogICAgY2hhbmdlRGljdDogZnVuY3Rpb24gY2hhbmdlRGljdChkYXRhLCBrZXkpIHsKICAgICAgdGhpcy5jdXJyZW50Um93LmRpbWVuc2lvbklkID0gZGF0YVtrZXldOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKHRoaXMuaW5kZXgsIDEsIHRoaXMuY3VycmVudFJvdyk7CiAgICB9LAogICAgLy8g5paw5aKe5a2X5q61CiAgICBhZGRBdHRyUm93czogZnVuY3Rpb24gYWRkQXR0clJvd3MoKSB7CiAgICAgIHZhciByb3cgPSB7CiAgICAgICAgdGFibGVJZDogdGhpcy50YWJlbERhdGEuaWQsCiAgICAgICAgY29kZTogJycsCiAgICAgICAgbmFtZTogJycsCiAgICAgICAgZGVzYzogJycsCiAgICAgICAgZmllbGRUeXBlOiAnMicsCiAgICAgICAgaXNJbml0RmlsZWQ6ICdOJywKICAgICAgICBpc1BrOiAnMCcsCiAgICAgICAgaXNSZXF1aXJlZDogJzAnLAogICAgICAgIHVpQ29tQ29kZTogJ2lucHV0JywKICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsCiAgICAgICAgZGVmYXVsdFZhbHVlOiAnJywKICAgICAgICBmb3JtYXQ6ICcnLAogICAgICAgIGZpZWxkVmFsdWVUeXBlOiAnMScsCiAgICAgICAgZGltZW5zaW9uSWQ6ICcnLAogICAgICAgIHVuaXQ6ICcnLAogICAgICAgIGF0dHJMZW5ndGg6IDIwMCwKICAgICAgICBkZWNpbWFsTGVuOiAwLAogICAgICAgIGlzRW5jcnlwdDogJzAnLAogICAgICAgIGlzRWRpdDogJzAnLAogICAgICAgIGlzRGVzZW5zaXRpemU6ICcwJywKICAgICAgICBpbmRleDogdGhpcy5mb3JtLmF0dHJEYXRhLmxlbmd0aCArIDEKICAgICAgfTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZSh0aGlzLmZvcm0uYXR0ckRhdGEubGVuZ3RoLCAwLCByb3cpOwogICAgfSwKICAgIGNoYW5nZUZpZWxkVmFsdWVUeXBlOiBmdW5jdGlvbiBjaGFuZ2VGaWVsZFZhbHVlVHlwZSh2YWwsIHJvdywgaW5kZXgpIHsKICAgICAgcm93LmRpbWVuc2lvbklkID0gJyc7CiAgICAgIHJvdy5maWVsZFZhbHVlVHlwZSA9IHZhbDsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSwgcm93KTsKICAgIH0sCiAgICAvLyBVSeexu+Wei+WIh+aNouiuvue9rum7mOiupOWAvAogICAgY2hhbmdlVUlUeXBlOiBmdW5jdGlvbiBjaGFuZ2VVSVR5cGUodmFsLCByb3csIGluZGV4KSB7CiAgICAgIGNvbnNvbGUubG9nKHZhbCwgcm93LCBpbmRleCk7CiAgICAgIHJvdy5kYXRhVHlwZSA9ICdzdHJpbmcnOwogICAgICByb3cuZm9ybWF0ID0gJyc7CiAgICAgIHJvdy5maWVsZFZhbHVlVHlwZSA9ICcxJzsKICAgICAgaWYgKHZhbCA9PT0gJ2RhdGUnKSB7CiAgICAgICAgcm93LmRhdGFUeXBlID0gJ2RhdGV0aW1lJzsKICAgICAgICByb3cuZm9ybWF0ID0gJ3l5eXktTU0tZGQnOwogICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gJ3NlbGVjdCcgfHwgdmFsID09PSAnY2hlY2tib3gnIHx8IHZhbCA9PT0gJ3JhZGlvJykgewogICAgICAgIHJvdy5maWVsZFZhbHVlVHlwZSA9ICcyJzsKICAgICAgfQogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxLCByb3cpOwogICAgfSwKICAgIC8vIOaVsOaNruexu+Wei+WIh+aNouiuvue9rum7mOiupOWAvAogICAgY2hhbmdlRGF0YVR5cGU6IGZ1bmN0aW9uIGNoYW5nZURhdGFUeXBlKHZhbCwgcm93LCBpbmRleCkgewogICAgICByb3cuYXR0ckxlbmd0aCA9IDA7CiAgICAgIHJvdy5kZWNpbWFsTGVuID0gMDsKICAgICAgcm93LmZvcm1hdCA9ICcnOwogICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSAnMSc7CiAgICAgIHJvdy5kaW1lbnNpb25JZCA9ICcnOwogICAgICBpZiAodmFsID09PSAnZGF0ZXRpbWUnKSB7CiAgICAgICAgcm93LmZvcm1hdCA9ICd5eXl5LU1NLWRkJzsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgcm93LmF0dHJMZW5ndGggPSAyMDA7CiAgICAgIH0gZWxzZSBpZiAodmFsID09PSAnbnVtYmVyJykgewogICAgICAgIHJvdy5hdHRyTGVuZ3RoID0gMTA7CiAgICAgICAgcm93LmRlY2ltYWxMZW4gPSAyOwogICAgICB9CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEsIHJvdyk7CiAgICB9LAogICAgLy8g6YCJ5oup5a2X5YW4CiAgICBoYW5kbGVTZWFyY2hEaWN0OiBmdW5jdGlvbiBoYW5kbGVTZWFyY2hEaWN0KHJvdywgJGluZGV4KSB7CiAgICAgIGlmICh0aGlzLnB1Ymxpc2hlZCAmJiByb3cuaWQpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5jdXJyZW50Um93ID0gcm93OwogICAgICB0aGlzLmluZGV4ID0gJGluZGV4OwogICAgICBpZiAocm93LmZpZWxkVmFsdWVUeXBlID09PSAnMicpIHsKICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGVFbnVtID0gdHJ1ZTsKICAgICAgfSBlbHNlIGlmIChyb3cuZmllbGRWYWx1ZVR5cGUgPT09ICczJykgewogICAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZU11bHRpID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIGhhbmRsZUNvbW1hbmQ6IGZ1bmN0aW9uIGhhbmRsZUNvbW1hbmQocGFyYW0pIHsKICAgICAgc3dpdGNoIChwYXJhbS5jb21tYW5kKSB7CiAgICAgICAgY2FzZSAnZGVsJzoKICAgICAgICAgIHRoaXMuZGVsZXRlQXR0clJvd3MocGFyYW0ucm93LCBwYXJhbS5pbmRleCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd1cCc6CiAgICAgICAgICB0aGlzLmF0dHJVcChwYXJhbS5yb3csIHBhcmFtLmluZGV4KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2Rvd24nOgogICAgICAgICAgdGhpcy5hdHRyRG93bihwYXJhbS5yb3csIHBhcmFtLmluZGV4KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfSwKICAgIGlzRGVsOiBmdW5jdGlvbiBpc0RlbChyb3csIGluZGV4KSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJGRlbGV0ZUZpZWwsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkuZGVsZXRlRmllbGQocm93LmlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkZGVsZXRlRmllbCA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRkZWxldGVGaWVsLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJGRlbGV0ZUZpZWwubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNC5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2Uuc3VjY2Vzcygn5a2X5q615Yig6Zmk5oiQ5YqfJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTI7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDk7CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyWyJjYXRjaCJdKDApOwogICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Mi50MCB8fCAn5pON5L2c5aSx6LSlJyk7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxMjsKICAgICAgICAgICAgICBfdGhpczQubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuZmluaXNoKDEyKTsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgbnVsbCwgW1swLCA5LCAxMiwgMTVdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOWIoOmZpOWtl+autQogICAgZGVsZXRlQXR0clJvd3M6IGZ1bmN0aW9uIGRlbGV0ZUF0dHJSb3dzKHJvdywgaW5kZXgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIGlmICh0aGlzLnB1Ymxpc2hlZCAmJiByb3cuaWQpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKHJvdy5pc0luaXRGaWxlZCA9PT0gJ1knKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor6XlrZfmrrXkuLrliJ3lp4vlrZfmrrXvvIzkuI3lj6/liKDpmaTvvIEnKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy4kY29uZmlybSgiXHU2QjY0XHU2NENEXHU0RjVDXHU1QzA2XHU1MjIwXHU5NjY0XHU1QjU3XHU2QkI1XHVGRjA4Ii5jb25jYXQocm93Lm5hbWUsICJcdUZGMDksIFx1NjYyRlx1NTQyNlx1N0VFN1x1N0VFRD8iKSwgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKHJvdy5pZCkgewogICAgICAgICAgICAgICAgX3RoaXM1LmlzRGVsKHJvdywgaW5kZXgpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczUuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLnN1Y2Nlc3MoJ+Wtl+auteWIoOmZpOaIkOWKnycpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzKTsKICAgICAgfSkpKS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAogICAgYXR0clVwOiBmdW5jdGlvbiBhdHRyVXAocm93LCBpbmRleCkgewogICAgICBpZiAodGhpcy5wdWJsaXNoZWQgJiYgcm93LmlkKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4IC0gMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4IC0gMV0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggLSAxXS5pbmRleCArIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YSA9IHV0aWxzLmFycmF5TW92ZSh0aGlzLmZvcm0uYXR0ckRhdGEsIHJvdywgJ3VwJyk7CiAgICB9LAogICAgYXR0ckRvd246IGZ1bmN0aW9uIGF0dHJEb3duKHJvdywgaW5kZXgpIHsKICAgICAgaWYgKHRoaXMucHVibGlzaGVkICYmIHJvdy5pZCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4ID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5pbmRleCArIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCArIDFdLmluZGV4ID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4ICsgMV0uaW5kZXggLSAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEgPSB1dGlscy5hcnJheU1vdmUodGhpcy5mb3JtLmF0dHJEYXRhLCByb3csICdkb3duJyk7CiAgICB9LAogICAgb25DYW5jZWw6IGZ1bmN0aW9uIG9uQ2FuY2VsKCkgewogICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTsKICAgIH0sCiAgICBvbkNvbmZpcm06IGZ1bmN0aW9uIG9uQ29uZmlybSgpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHRoaXMuJHJlZnMuZm9ybS52YWxpZGF0ZSgvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCh2YWxpZCwgb2JqZWN0KSB7CiAgICAgICAgICB2YXIgX3lpZWxkJEFQSSRzYXZlRmllbGRzLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMTk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc29sZS5sb2coX3RoaXM2LmZvcm0uYXR0ckRhdGEpOwogICAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAyOwogICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA1OwogICAgICAgICAgICAgICAgcmV0dXJuIEFQSS5zYXZlRmllbGRzKF90aGlzNi5mb3JtLmF0dHJEYXRhKTsKICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICBfeWllbGQkQVBJJHNhdmVGaWVsZHMgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRzYXZlRmllbGRzLnN0YXRlOwogICAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkc2F2ZUZpZWxkcy5tZXNzYWdlOwogICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS5zdWNjZXNzKCflrZfmrrXkv53lrZjmiJDlip8nKTsKICAgICAgICAgICAgICAgICAgX3RoaXM2LiRlbWl0KCdjb25maXJtJyk7CiAgICAgICAgICAgICAgICAgIF90aGlzNi52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfmk43kvZzlpLHotKUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMTQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAxMTsKICAgICAgICAgICAgICAgIF9jb250ZXh0NC50MCA9IF9jb250ZXh0NFsiY2F0Y2giXSgyKTsKICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0NC50MCB8fCAn5pON5L2c5aSx6LSlJyk7CiAgICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgICAgIF9jb250ZXh0NC5wcmV2ID0gMTQ7CiAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5maW5pc2goMTQpOwogICAgICAgICAgICAgIGNhc2UgMTc6CiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDIxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAxOToKICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgIF90aGlzNi5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgY2FzZSAyMToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU0LCBudWxsLCBbWzIsIDExLCAxNCwgMTddXSk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94MikgewogICAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sCiAgICBkb3dubG9hZDogZnVuY3Rpb24gZG93bmxvYWQoKSB7CiAgICAgIHZhciBmaWxlVHlwZTIgPSAn5pWw5o2u5piO57uG5bGC5Yqo5oCB6KGo5a2X5q615riF5Y2VLnhsc3gnOwogICAgICB2YXIgZmlsZVR5cGUxID0gJ+aVsOaNruaYjue7huWxgueJqeeQhuihqOWtl+autea4heWNlS54bHN4JzsKICAgICAgdmFyIGZpbGVUeXBlOwogICAgICBpZiAodGhpcy50YWJlbERhdGEudGFibGVDbGFzcyA9PT0gJzEnKSB7CiAgICAgICAgZmlsZVR5cGUgPSBmaWxlVHlwZTE7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZmlsZVR5cGUgPSBmaWxlVHlwZTI7CiAgICAgIH0KICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgIGEuaHJlZiA9IHdpbmRvdy5jb250ZXh0LmRvd25sb2FkICsgZmlsZVR5cGU7CiAgICAgIGEuZG93bmxvYWQgPSBmaWxlVHlwZTsgLy8g6K6+572u5LiL6L295paH5Lu25paH5Lu25ZCNCiAgICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsKICAgICAgYS5jbGljaygpOwogICAgICBhLnJlbW92ZSgpOwogICAgfSwKICAgIC8vICDlr7zlhaXmlofku7bkuIrkvKDliY0KICAgIGJlZm9yZVVwbG9hZDogZnVuY3Rpb24gYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgX3RoaXM3LnVwbG9hZExvYWRpbmcgPSB0cnVlOwogICAgICAgIHZhciBzaXplID0gZmlsZS5zaXplLAogICAgICAgICAgbmFtZSA9IGZpbGUubmFtZTsKICAgICAgICBfdGhpczcuJGNvbmZpcm0oIlx1OEJGN1x1Nzg2RVx1OEJBNFx1NjYyRlx1NTQyNlx1NUJGQ1x1NTE2NSBcdTIwMUMiLmNvbmNhdChuYW1lLCAiXHUyMDFEIFx1RkYxRiIpLCAn5o+Q56S6JywgewogICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICB2YXIgcGFzc2VkT3JOb3QgPSB0cnVlOyAvLyDmmK/lkKbpgJrov4fpqozor4EKICAgICAgICAgIHZhciB0eXBlUmVndWxhciA9IC9cLih4bHN8eGxzeCkkL2k7CiAgICAgICAgICB2YXIgdmVyaWZpY2F0aW9uID0gW3sKICAgICAgICAgICAgY29uZGl0aW9uOiAhdHlwZVJlZ3VsYXIudGVzdChuYW1lKSwKICAgICAgICAgICAgcmVzdWx0OiBmdW5jdGlvbiByZXN1bHQoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNy4kbWVzc2FnZS5lcnJvcign5Y+q6IO95LiK5LygeGxz5oiWeGxzeOaWh+S7tuexu+WeiycpOwogICAgICAgICAgICB9CiAgICAgICAgICB9XTsKICAgICAgICAgIHZlcmlmaWNhdGlvbi5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgIGlmIChpdGVtLmNvbmRpdGlvbikgewogICAgICAgICAgICAgIGl0ZW0ucmVzdWx0KCk7CiAgICAgICAgICAgICAgcGFzc2VkT3JOb3QgPSBmYWxzZTsKICAgICAgICAgICAgICBfdGhpczcudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHBhc3NlZE9yTm90ID8gcmVzb2x2ZSgpIDogcmVqZWN0KCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgX3RoaXM3LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIF90aGlzNy4kbWVzc2FnZS53YXJuaW5nKCflt7Llj5bmtojkuIrkvKAnKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5a+85YWl5paH5Lu25LiK5Lyg5oiQ5YqfCiAgICBoYW5kbGVTdWNjZXNzOiBmdW5jdGlvbiBoYW5kbGVTdWNjZXNzKHJlcykgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKCFyZXMuc3RhdGUpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gNzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uuc3VjY2Vzcygn5a+85YWl5oiQ5YqfJyk7CiAgICAgICAgICAgICAgX3RoaXM4LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzOC5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDg7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2UuZXJyb3IocmVzLm1lc3NhZ2UpOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDlr7zlhaXmlofku7bkuIrkvKDlpLHotKUKICAgIGhhbmRsZUVycm9yOiBmdW5jdGlvbiBoYW5kbGVFcnJvcihlcnIpIHsKICAgICAgaWYgKGVycikgewogICAgICAgIHZhciBlcnJEYXRhID0gZXJyLnRvU3RyaW5nKCkucmVwbGFjZSgnRXJyb3I6JywgJycpOwogICAgICAgIGVyckRhdGEgPSBKU09OLnBhcnNlKGVyckRhdGEpOwogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyRGF0YS5tZXNzYWdlIHx8ICflr7zlhaXlpLHotKXvvIzor7fph43or5UnKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCflr7zlhaXlpLHotKXvvIzor7fph43or5UnKTsKICAgICAgfQogICAgICB0aGlzLnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgIH0KICB9Cn07"},null]}