{"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\\dataResource\\dataManage\\dataDWCatalog\\fieldsManage.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataManage\\dataDWCatalog\\fieldsManage.vue","mtime":1746730556257},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc3BsaWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50ZXN0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgZGlhbG9nTWl4aW4gZnJvbSAnQC9taXhpbnMvZGlhbG9nLmpzJzsKaW1wb3J0IHV0aWxzIGZyb20gJ0AvaG90ZW50LXVpLXV0aWwuanMnOwppbXBvcnQgZW51bURpY3REaWFsb2cgZnJvbSAnLi9lbnVtRGljdERpYWxvZy52dWUnOwppbXBvcnQgbXVsdGlEaWN0RGlhbG9nIGZyb20gJy4vbXVsdGlEaWN0RGlhbG9nLnZ1ZSc7CmltcG9ydCB7IGdldERpY3Rpb25hcnlCeUNvZGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnkuanMnOwppbXBvcnQgQVBJIGZyb20gJ0AvYXBpL2J1c2luZXNzL2RhdGFEV0NhdGFsb2cnOwppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0ZpZWxkc01hbmFnZScsCiAgY29tcG9uZW50czogewogICAgZW51bURpY3REaWFsb2c6IGVudW1EaWN0RGlhbG9nLAogICAgbXVsdGlEaWN0RGlhbG9nOiBtdWx0aURpY3REaWFsb2cKICB9LAogIG1peGluczogW2RpYWxvZ01peGluXSwKICBwcm9wczogW10sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB2YXIgY2hlY2tleSA9IGZ1bmN0aW9uIGNoZWNrZXkocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCflrZfmrrXnvJbnoIHkuI3og73kuLrnqbonKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKF90aGlzLmZvcm0uYXR0ckRhdGEuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5jb2RlID09PSB2YWx1ZTsKICAgICAgICB9KS5sZW5ndGggPiAxKSB7CiAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoJ+Wtl+autee8lueggeS4jeiDvemHjeWkjSEnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogICAgcmV0dXJuIHsKICAgICAgZmllbGRzUnVsZXM6IHsKICAgICAgICBuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5a2X5q615ZCN56ew5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGNvZGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICflrZfmrrXnvJbnoIHkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfSwgewogICAgICAgICAgcGF0dGVybjogL15bYS16QS1aXVthLXpBLVowLTlfXSokLywKICAgICAgICAgIG1lc3NhZ2U6ICfku6XlrZfmr43lvIDlpLTnmoTlrZfmr43jgIHmlbDlrZfjgIHkuIvliJLnur/nu4TlkIgnLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfSwgewogICAgICAgICAgdmFsaWRhdG9yOiBjaGVja2V5LAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgZm9ybTogewogICAgICAgIGF0dHJEYXRhOiBbXQogICAgICB9LAogICAgICBpbXBvcnREYXRhOiB7CiAgICAgICAgdGFibGVJZDogJycKICAgICAgfSwKICAgICAgZGlhbG9nVmlzaWJsZUVudW06IGZhbHNlLAogICAgICBkaWFsb2dWaXNpYmxlTXVsdGk6IGZhbHNlLAogICAgICBjdXJyZW50Um93OiBudWxsLAogICAgICBpbmRleDogbnVsbCwKICAgICAgdGFiZWxEYXRhOiBudWxsLAogICAgICB0YWJsZUxvYWRpbmc6IGZhbHNlLAogICAgICB1cGxvYWRMb2FkaW5nOiBmYWxzZSwKICAgICAgdXBsb2FkVmlzaWJsZTogZmFsc2UsCiAgICAgIHB1Ymxpc2hlZDogZmFsc2UKICAgIH07CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICBkb2N1bWVudC5vbmtleWRvd24gPSBmdW5jdGlvbiAoKSB7CiAgICAgIGlmIChfdGhpczIuZm9ybS5hdHRyRGF0YSkgewogICAgICAgIHZhciBrZXkgPSB3aW5kb3cuZXZlbnQua2V5Q29kZTsKICAgICAgICBpZiAoa2V5ID09IDExMykgewogICAgICAgICAgLy8gPT0gODMgJiYgZXZlbnQuY3RybEtleQogICAgICAgICAgX3RoaXMyLmFkZEF0dHJSb3dzKCk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgX3RoaXMyLiRyZWZzLmF0dHJUYWJsZVNjcm9sbGJhckhlaWdodC5ib2R5V3JhcHBlci5zY3JvbGxUb3AgPSBfdGhpczIuJHJlZnMuYXR0clRhYmxlU2Nyb2xsYmFySGVpZ2h0LmJvZHlXcmFwcGVyLnNjcm9sbEhlaWdodDsKICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogIH0sCiAgY29tcHV0ZWQ6IF9vYmplY3RTcHJlYWQoewogICAgYWN0aW9uVXJsOiBmdW5jdGlvbiBhY3Rpb25VcmwoXykgewogICAgICByZXR1cm4gIiIuY29uY2F0KHdpbmRvdy5jb250ZXh0LnBvcnRhbCwgIi9iaXovZGF0YVJlc291cmNlL2R3RmllbGQvdjEvaW1wb3J0RmlsZSIpOwogICAgfQogIH0sIG1hcFN0YXRlKHsKICAgIGhlYWRlcnM6IGZ1bmN0aW9uIGhlYWRlcnMoc3RhdGUpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBBdXRob3JpemF0aW9uOiAiQmVhcmVyICIuY29uY2F0KHN0YXRlLmxvZ2luLmN1cnJlbnRVc2VyLnRva2VuKQogICAgICB9OwogICAgfQogIH0pKSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkge30sCiAgbWV0aG9kczogewogICAgaW5pdERhdGE6IGZ1bmN0aW9uIGluaXREYXRhKGRhdGEpIHsKICAgICAgdGhpcy50YWJlbERhdGEgPSBkYXRhOwogICAgICB0aGlzLmltcG9ydERhdGEudGFibGVJZCA9IGRhdGEuaWQ7CiAgICAgIHRoaXMucHVibGlzaGVkID0gdGhpcy50YWJlbERhdGEuZGVwbG95ZWQgPT09ICcxJzsKICAgICAgdGhpcy5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICB9LAogICAgZ2V0RmllbGRzQnlUYWJsZTogZnVuY3Rpb24gZ2V0RmllbGRzQnlUYWJsZSgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRxdWVyeUZpZWxkLCBfeWllbGQkQVBJJHF1ZXJ5RmllbGQyLCBmaWVsZExpc3Q7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXMzLnRhYmxlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE7CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5xdWVyeUZpZWxkc0J5VGFibGVJZChfdGhpczMudGFiZWxEYXRhLmlkKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCRBUEkkcXVlcnlGaWVsZCA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRxdWVyeUZpZWxkMiA9IF95aWVsZCRBUEkkcXVlcnlGaWVsZC5maWVsZExpc3Q7CiAgICAgICAgICAgICAgZmllbGRMaXN0ID0gX3lpZWxkJEFQSSRxdWVyeUZpZWxkMiA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkQVBJJHF1ZXJ5RmllbGQyOwogICAgICAgICAgICAgIGlmIChmaWVsZExpc3QubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBmaWVsZExpc3QuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICBpZiAoaXRlbS5maWVsZFZhbHVlVHlwZSkgewogICAgICAgICAgICAgICAgICAgIGl0ZW0uZmllbGRWYWx1ZVR5cGUgPSBpdGVtLmZpZWxkVmFsdWVUeXBlLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgX3RoaXMzLmZvcm0uYXR0ckRhdGEgPSBmaWVsZExpc3QuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmZpZWxkVHlwZSA9PT0gJzInOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBfdGhpczMuZm9ybS5hdHRyRGF0YS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBhLnNuIC0gYi5zbjsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczMuZm9ybS5hdHRyRGF0YSA9IFtdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTM7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDEwOwogICAgICAgICAgICAgIF9jb250ZXh0LnQwID0gX2NvbnRleHRbImNhdGNoIl0oMSk7CiAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQudDAgfHwgJ+i1hOa6kOmhueWtl+auteafpeivouWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxMzsKICAgICAgICAgICAgICBfdGhpczMudGFibGVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmZpbmlzaCgxMyk7CiAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlLCBudWxsLCBbWzEsIDEwLCAxMywgMTZdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICBjaGFuZ2VEaWN0OiBmdW5jdGlvbiBjaGFuZ2VEaWN0KGRhdGEsIGtleSkgewogICAgICB0aGlzLmN1cnJlbnRSb3cuZGltZW5zaW9uSWQgPSBkYXRhW2tleV07CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UodGhpcy5pbmRleCwgMSwgdGhpcy5jdXJyZW50Um93KTsKICAgIH0sCiAgICAvLyDmlrDlop7lrZfmrrUKICAgIGFkZEF0dHJSb3dzOiBmdW5jdGlvbiBhZGRBdHRyUm93cygpIHsKICAgICAgdmFyIGxhc3QgPSB0aGlzLmZvcm0uYXR0ckRhdGFbdGhpcy5mb3JtLmF0dHJEYXRhLmxlbmd0aCAtIDFdOwogICAgICB2YXIgc24gPSBsYXN0ICYmIGxhc3Quc24gPyBsYXN0LnNuICsgMSA6IDE7CiAgICAgIHZhciByb3cgPSB7CiAgICAgICAgdGFibGVJZDogdGhpcy50YWJlbERhdGEuaWQsCiAgICAgICAgY29kZTogJycsCiAgICAgICAgbmFtZTogJycsCiAgICAgICAgZGVzYzogJycsCiAgICAgICAgZmllbGRUeXBlOiAnMicsCiAgICAgICAgaXNJbml0RmlsZWQ6ICdOJywKICAgICAgICBpc1BrOiAnMCcsCiAgICAgICAgaXNSZXF1aXJlZDogJzAnLAogICAgICAgIHVpQ29tQ29kZTogJ2lucHV0JywKICAgICAgICBkYXRhVHlwZTogJ3ZhcmNoYXInLAogICAgICAgIGRlZmF1bHRWYWx1ZTogJycsCiAgICAgICAgZm9ybWF0OiAnJywKICAgICAgICBmaWVsZFZhbHVlVHlwZTogJzEnLAogICAgICAgIGRpbWVuc2lvbklkOiAnJywKICAgICAgICB1bml0OiAnJywKICAgICAgICBhdHRyTGVuZ3RoOiAyMDAsCiAgICAgICAgZGVjaW1hbExlbjogMCwKICAgICAgICBpc0VuY3J5cHQ6ICcwJywKICAgICAgICBpc0VkaXQ6ICcwJywKICAgICAgICBpc0Rlc2Vuc2l0aXplOiAnMCcsCiAgICAgICAgaW5kZXg6IHRoaXMuZm9ybS5hdHRyRGF0YS5sZW5ndGggKyAxCiAgICAgIH07CiAgICAgIHNuID8gcm93LnNuID0gc24gOiBudWxsOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKHRoaXMuZm9ybS5hdHRyRGF0YS5sZW5ndGgsIDAsIHJvdyk7CiAgICB9LAogICAgY2hhbmdlRmllbGRWYWx1ZVR5cGU6IGZ1bmN0aW9uIGNoYW5nZUZpZWxkVmFsdWVUeXBlKHZhbCwgcm93LCBpbmRleCkgewogICAgICByb3cuZGltZW5zaW9uSWQgPSAnJzsKICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gdmFsOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxLCByb3cpOwogICAgfSwKICAgIC8vIFVJ57G75Z6L5YiH5o2i6K6+572u6buY6K6k5YC8CiAgICBjaGFuZ2VVSVR5cGU6IGZ1bmN0aW9uIGNoYW5nZVVJVHlwZSh2YWwsIHJvdywgaW5kZXgpIHsKICAgICAgaWYgKCF0aGlzLnB1Ymxpc2hlZCAmJiAhcm93LmlkKSB7CiAgICAgICAgcm93LmRhdGFUeXBlID0gJ3ZhcmNoYXInOwogICAgICB9CiAgICAgIHJvdy5mb3JtYXQgPSAnJzsKICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gJzEnOwogICAgICBpZiAodmFsID09PSAnZGF0ZScpIHsKICAgICAgICBpZiAoIXRoaXMucHVibGlzaGVkICYmICFyb3cuaWQpIHsKICAgICAgICAgIHJvdy5kYXRhVHlwZSA9ICdkYXRlJzsgLy8g5Y+R5biD5ZCOVUnlkozmlbDmja7nsbvlnovkuI3lhbPogZQKICAgICAgICB9CiAgICAgICAgcm93LmZvcm1hdCA9ICd5eXl5LU1NLWRkJzsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdkYXRldGltZScpIHsKICAgICAgICBpZiAoIXRoaXMucHVibGlzaGVkICYmICFyb3cuaWQpIHsKICAgICAgICAgIHJvdy5kYXRhVHlwZSA9ICdkYXRldGltZSc7IC8vIOWPkeW4g+WQjlVJ5ZKM5pWw5o2u57G75Z6L5LiN5YWz6IGUCiAgICAgICAgfQogICAgICAgIHJvdy5mb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbTpzcyc7CiAgICAgIH0gZWxzZSBpZiAodmFsID09PSAnc2VsZWN0JyB8fCB2YWwgPT09ICdjaGVja2JveCcgfHwgdmFsID09PSAncmFkaW8nKSB7CiAgICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gJzInOwogICAgICB9CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEsIHJvdyk7CiAgICB9LAogICAgLy8g5pWw5o2u57G75Z6L5YiH5o2i6K6+572u6buY6K6k5YC8CiAgICBjaGFuZ2VEYXRhVHlwZTogZnVuY3Rpb24gY2hhbmdlRGF0YVR5cGUodmFsLCByb3csIGluZGV4KSB7CiAgICAgIHJvdy5hdHRyTGVuZ3RoID0gMDsKICAgICAgcm93LmRlY2ltYWxMZW4gPSAwOwogICAgICByb3cuZm9ybWF0ID0gJyc7CiAgICAgIHJvdy5maWVsZFZhbHVlVHlwZSA9ICcxJzsKICAgICAgcm93LmRpbWVuc2lvbklkID0gJyc7CiAgICAgIGlmICh2YWwgPT09ICdkYXRlJykgewogICAgICAgIHJvdy5mb3JtYXQgPSAneXl5eS1NTS1kZCc7CiAgICAgIH0gZWxzZSBpZiAodmFsID09PSAnZGF0ZXRpbWUnKSB7CiAgICAgICAgcm93LmZvcm1hdCA9ICd5eXl5LU1NLWRkIEhIOm1tOnNzJzsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICd2YXJjaGFyJykgewogICAgICAgIHJvdy5hdHRyTGVuZ3RoID0gMjAwOwogICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gJ251bWJlcicpIHsKICAgICAgICByb3cuYXR0ckxlbmd0aCA9IDEwOwogICAgICAgIHJvdy5kZWNpbWFsTGVuID0gMjsKICAgICAgfQogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxLCByb3cpOwogICAgfSwKICAgIC8vIOmAieaLqeWtl+WFuAogICAgaGFuZGxlU2VhcmNoRGljdDogZnVuY3Rpb24gaGFuZGxlU2VhcmNoRGljdChyb3csICRpbmRleCkgewogICAgICAvLyBpZiAodGhpcy5wdWJsaXNoZWQgJiYgcm93LmlkKSB7CiAgICAgIC8vICAgcmV0dXJuOwogICAgICAvLyB9CiAgICAgIHRoaXMuY3VycmVudFJvdyA9IHJvdzsKICAgICAgdGhpcy5pbmRleCA9ICRpbmRleDsKICAgICAgaWYgKHJvdy5maWVsZFZhbHVlVHlwZSA9PT0gJzInKSB7CiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlRW51bSA9IHRydWU7CiAgICAgIH0gZWxzZSBpZiAocm93LmZpZWxkVmFsdWVUeXBlID09PSAnMycpIHsKICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGVNdWx0aSA9IHRydWU7CiAgICAgIH0KICAgIH0sCiAgICBoYW5kbGVEZWxldGU6IGZ1bmN0aW9uIGhhbmRsZURlbGV0ZShwYXJhbSwgZGVwbG95ZWQpIHsKICAgICAgaWYgKGRlcGxveWVkICYmIHBhcmFtLnJvdy5pZCkgcmV0dXJuOwogICAgICB0aGlzLmhhbmRsZUNvbW1hbmQocGFyYW0pOwogICAgfSwKICAgIGhhbmRsZUNvbW1hbmQ6IGZ1bmN0aW9uIGhhbmRsZUNvbW1hbmQocGFyYW0pIHsKICAgICAgc3dpdGNoIChwYXJhbS5jb21tYW5kKSB7CiAgICAgICAgY2FzZSAnZGVsJzoKICAgICAgICAgIHRoaXMuZGVsZXRlQXR0clJvd3MocGFyYW0ucm93LCBwYXJhbS5pbmRleCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd1cCc6CiAgICAgICAgICB0aGlzLmF0dHJVcChwYXJhbS5yb3csIHBhcmFtLmluZGV4KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2Rvd24nOgogICAgICAgICAgdGhpcy5hdHRyRG93bihwYXJhbS5yb3csIHBhcmFtLmluZGV4KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfSwKICAgIGlzRGVsOiBmdW5jdGlvbiBpc0RlbChyb3csIGluZGV4KSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJGRlbGV0ZUZpZWwsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkuZGVsZXRlRmllbGQocm93LmlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkZGVsZXRlRmllbCA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRkZWxldGVGaWVsLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJGRlbGV0ZUZpZWwubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNC5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2Uuc3VjY2Vzcygn5a2X5q615Yig6Zmk5oiQ5YqfJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTI7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDk7CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyWyJjYXRjaCJdKDApOwogICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Mi50MCB8fCAn5pON5L2c5aSx6LSlJyk7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxMjsKICAgICAgICAgICAgICBfdGhpczQubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuZmluaXNoKDEyKTsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgbnVsbCwgW1swLCA5LCAxMiwgMTVdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOWIoOmZpOWtl+autQogICAgZGVsZXRlQXR0clJvd3M6IGZ1bmN0aW9uIGRlbGV0ZUF0dHJSb3dzKHJvdywgaW5kZXgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIGlmICh0aGlzLnB1Ymxpc2hlZCAmJiByb3cuaWQpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKHJvdy5pc0luaXRGaWxlZCA9PT0gJ1knKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor6XlrZfmrrXkuLrliJ3lp4vlrZfmrrXvvIzkuI3lj6/liKDpmaTvvIEnKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy4kY29uZmlybSgiXHU2QjY0XHU2NENEXHU0RjVDXHU1QzA2XHU1MjIwXHU5NjY0XHU1QjU3XHU2QkI1XHVGRjA4Ii5jb25jYXQocm93Lm5hbWUsICJcdUZGMDksIFx1NjYyRlx1NTQyNlx1N0VFN1x1N0VFRD8iKSwgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKHJvdy5pZCkgewogICAgICAgICAgICAgICAgX3RoaXM1LmlzRGVsKHJvdywgaW5kZXgpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczUuZm9ybS5hdHRyRGF0YS5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLnN1Y2Nlc3MoJ+Wtl+auteWIoOmZpOaIkOWKnycpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzKTsKICAgICAgfSkpKS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAogICAgYXR0clVwOiBmdW5jdGlvbiBhdHRyVXAocm93LCBpbmRleCkgewogICAgICAvLyBpZiAodGhpcy5wdWJsaXNoZWQgJiYgcm93LmlkKSB7CiAgICAgIC8vICAgcmV0dXJuOwogICAgICAvLyB9CgogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4ID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5pbmRleCAtIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uc24gPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggLSAxXS5zbjsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4IC0gMV0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggLSAxXS5pbmRleCArIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCAtIDFdLnNuID0gdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4IC0gMV0uc24gKyAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEgPSB1dGlscy5hcnJheU1vdmUodGhpcy5mb3JtLmF0dHJEYXRhLCByb3csICd1cCcpOwogICAgfSwKICAgIGF0dHJEb3duOiBmdW5jdGlvbiBhdHRyRG93bihyb3csIGluZGV4KSB7CiAgICAgIC8vIGlmICh0aGlzLnB1Ymxpc2hlZCAmJiByb3cuaWQpIHsKICAgICAgLy8gICByZXR1cm47CiAgICAgIC8vIH0KCiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4ICsgMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5zbiA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uc24gKyAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggKyAxXS5pbmRleCA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCArIDFdLmluZGV4IC0gMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4ICsgMV0uc24gPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLnNuIC0gMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhID0gdXRpbHMuYXJyYXlNb3ZlKHRoaXMuZm9ybS5hdHRyRGF0YSwgcm93LCAnZG93bicpOwogICAgfSwKICAgIG9uQ2FuY2VsOiBmdW5jdGlvbiBvbkNhbmNlbCgpIHsKICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7CiAgICB9LAogICAgb25Db25maXJtOiBmdW5jdGlvbiBvbkNvbmZpcm0oKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICB0aGlzLiRyZWZzLmZvcm0udmFsaWRhdGUoLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQodmFsaWQsIG9iamVjdCkgewogICAgICAgICAgdmFyIFFVRVJZQVBJLCBfeWllbGQkUVVFUllBUEksIHN0YXRlLCBtZXNzYWdlOwogICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGlmICghdmFsaWQpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAyMDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfdGhpczYuZm9ybS5hdHRyRGF0YSk7CiAgICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDI7CiAgICAgICAgICAgICAgICBpZiAoX3RoaXM2LnB1Ymxpc2hlZCkgewogICAgICAgICAgICAgICAgICBRVUVSWUFQSSA9IEFQSS5zYXZlT3JVcGRhdGVGaWVsZHM7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBRVUVSWUFQSSA9IEFQSS5zYXZlRmllbGRzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA2OwogICAgICAgICAgICAgICAgcmV0dXJuIFFVRVJZQVBJKF90aGlzNi5mb3JtLmF0dHJEYXRhKTsKICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICBfeWllbGQkUVVFUllBUEkgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJFFVRVJZQVBJLnN0YXRlOwogICAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRRVUVSWUFQSS5tZXNzYWdlOwogICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS5zdWNjZXNzKCflrZfmrrXkv53lrZjmiJDlip8nKTsKICAgICAgICAgICAgICAgICAgX3RoaXM2LiRlbWl0KCdjb25maXJtJyk7CiAgICAgICAgICAgICAgICAgIF90aGlzNi52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfmk43kvZzlpLHotKUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAxMjsKICAgICAgICAgICAgICAgIF9jb250ZXh0NC50MCA9IF9jb250ZXh0NFsiY2F0Y2giXSgyKTsKICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0NC50MCB8fCAn5pON5L2c5aSx6LSlJyk7CiAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgIF9jb250ZXh0NC5wcmV2ID0gMTU7CiAgICAgICAgICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5maW5pc2goMTUpOwogICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDIyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSAyMDoKICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgIF90aGlzNi5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgY2FzZSAyMjoKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sIF9jYWxsZWU0LCBudWxsLCBbWzIsIDEyLCAxNSwgMThdXSk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94MikgewogICAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sCiAgICBkb3dubG9hZDogZnVuY3Rpb24gZG93bmxvYWQoKSB7CiAgICAgIHZhciBmaWxlVHlwZTIgPSAn5pWw5o2u5piO57uG5bGC5Yqo5oCB6KGo5a2X5q615riF5Y2VLnhsc3gnOwogICAgICB2YXIgZmlsZVR5cGUxID0gJ+aVsOaNruaYjue7huWxgueJqeeQhuihqOWtl+autea4heWNlS54bHN4JzsKICAgICAgdmFyIGZpbGVUeXBlOwogICAgICBpZiAodGhpcy50YWJlbERhdGEudGFibGVDbGFzcyA9PT0gJzEnKSB7CiAgICAgICAgZmlsZVR5cGUgPSBmaWxlVHlwZTE7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZmlsZVR5cGUgPSBmaWxlVHlwZTI7CiAgICAgIH0KICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgIGEuaHJlZiA9IHdpbmRvdy5jb250ZXh0LmRvd25sb2FkICsgZmlsZVR5cGU7CiAgICAgIGEuZG93bmxvYWQgPSBmaWxlVHlwZTsgLy8g6K6+572u5LiL6L295paH5Lu25paH5Lu25ZCNCiAgICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsKICAgICAgYS5jbGljaygpOwogICAgICBhLnJlbW92ZSgpOwogICAgfSwKICAgIC8vICDlr7zlhaXmlofku7bkuIrkvKDliY0KICAgIGJlZm9yZVVwbG9hZDogZnVuY3Rpb24gYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgX3RoaXM3LnVwbG9hZExvYWRpbmcgPSB0cnVlOwogICAgICAgIHZhciBzaXplID0gZmlsZS5zaXplLAogICAgICAgICAgbmFtZSA9IGZpbGUubmFtZTsKICAgICAgICBfdGhpczcuJGNvbmZpcm0oIlx1OEJGN1x1Nzg2RVx1OEJBNFx1NjYyRlx1NTQyNlx1NUJGQ1x1NTE2NSBcdTIwMUMiLmNvbmNhdChuYW1lLCAiXHUyMDFEIFx1RkYxRiIpLCAn5o+Q56S6JywgewogICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICB2YXIgcGFzc2VkT3JOb3QgPSB0cnVlOyAvLyDmmK/lkKbpgJrov4fpqozor4EKICAgICAgICAgIHZhciB0eXBlUmVndWxhciA9IC9cLih4bHN8eGxzeCkkL2k7CiAgICAgICAgICB2YXIgdmVyaWZpY2F0aW9uID0gW3sKICAgICAgICAgICAgY29uZGl0aW9uOiAhdHlwZVJlZ3VsYXIudGVzdChuYW1lKSwKICAgICAgICAgICAgcmVzdWx0OiBmdW5jdGlvbiByZXN1bHQoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNy4kbWVzc2FnZS5lcnJvcign5Y+q6IO95LiK5LygeGxz5oiWeGxzeOaWh+S7tuexu+WeiycpOwogICAgICAgICAgICB9CiAgICAgICAgICB9XTsKICAgICAgICAgIHZlcmlmaWNhdGlvbi5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgIGlmIChpdGVtLmNvbmRpdGlvbikgewogICAgICAgICAgICAgIGl0ZW0ucmVzdWx0KCk7CiAgICAgICAgICAgICAgcGFzc2VkT3JOb3QgPSBmYWxzZTsKICAgICAgICAgICAgICBfdGhpczcudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHBhc3NlZE9yTm90ID8gcmVzb2x2ZSgpIDogcmVqZWN0KCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgX3RoaXM3LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIF90aGlzNy4kbWVzc2FnZS53YXJuaW5nKCflt7Llj5bmtojkuIrkvKAnKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5a+85YWl5paH5Lu25LiK5Lyg5oiQ5YqfCiAgICBoYW5kbGVTdWNjZXNzOiBmdW5jdGlvbiBoYW5kbGVTdWNjZXNzKHJlcykgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKCFyZXMuc3RhdGUpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gNzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uuc3VjY2Vzcygn5a+85YWl5oiQ5YqfJyk7CiAgICAgICAgICAgICAgX3RoaXM4LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzOC5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDg7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2UuZXJyb3IocmVzLm1lc3NhZ2UpOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDlr7zlhaXmlofku7bkuIrkvKDlpLHotKUKICAgIGhhbmRsZUVycm9yOiBmdW5jdGlvbiBoYW5kbGVFcnJvcihlcnIpIHsKICAgICAgaWYgKGVycikgewogICAgICAgIHZhciBlcnJEYXRhID0gZXJyLnRvU3RyaW5nKCkucmVwbGFjZSgnRXJyb3I6JywgJycpOwogICAgICAgIGVyckRhdGEgPSBKU09OLnBhcnNlKGVyckRhdGEpOwogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyRGF0YS5tZXNzYWdlIHx8ICflr7zlhaXlpLHotKXvvIzor7fph43or5UnKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCflr7zlhaXlpLHotKXvvIzor7fph43or5UnKTsKICAgICAgfQogICAgICB0aGlzLnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgIH0KICB9Cn07"},null]}