{"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\\sourceLayer\\dataODSCatalog\\FieldsManage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\sourceLayer\\dataODSCatalog\\FieldsManage\\index.vue","mtime":1736276117592},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGxpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudGVzdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBkaWFsb2dNaXhpbiBmcm9tICdAL21peGlucy9kaWFsb2cuanMnOwppbXBvcnQgdXRpbHMgZnJvbSAnQC9ob3RlbnQtdWktdXRpbC5qcyc7CmltcG9ydCBFbnVtRGljdERpYWxvZyBmcm9tICcuL0VudW1EaWN0RGlhbG9nLnZ1ZSc7CmltcG9ydCBNdWx0aURpY3REaWFsb2cgZnJvbSAnLi9NdWx0aURpY3REaWFsb2cudnVlJzsKaW1wb3J0IHsgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeS5qcyc7CmltcG9ydCBBUEkgZnJvbSAnQC9hcGkvYnVzaW5lc3MvZGF0YU9EU0NhdGFsb2cnOwppbXBvcnQgeyBtYXBTdGF0ZSB9IGZyb20gJ3Z1ZXgnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ1NvdXJjZUZpZWxkc01hbmFnZScsCiAgY29tcG9uZW50czogewogICAgRW51bURpY3REaWFsb2c6IEVudW1EaWN0RGlhbG9nLAogICAgTXVsdGlEaWN0RGlhbG9nOiBNdWx0aURpY3REaWFsb2cKICB9LAogIG1peGluczogW2RpYWxvZ01peGluXSwKICBwcm9wczogewogICAgZGF0YTogewogICAgICB0eXBlOiBPYmplY3QsCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uIF9kZWZhdWx0KCkgewogICAgICAgIHJldHVybiB7fTsKICAgICAgfQogICAgfQogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB2YXIgY2hlY2tleSA9IGZ1bmN0aW9uIGNoZWNrZXkocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCflrZfmrrXnvJbnoIHkuI3og73kuLrnqbonKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKF90aGlzLmZvcm0uYXR0ckRhdGEuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5jb2RlID09PSB2YWx1ZTsKICAgICAgICB9KS5sZW5ndGggPiAxKSB7CiAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoJ+Wtl+autee8lueggeS4jeiDvemHjeWkjSEnKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogICAgcmV0dXJuIHsKICAgICAgZmllbGRzUnVsZXM6IHsKICAgICAgICBuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5a2X5q615ZCN56ew5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGNvZGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICflrZfmrrXnvJbnoIHkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfSwgewogICAgICAgICAgcGF0dGVybjogL15bYS16QS1aXVthLXpBLVowLTlfXSokLywKICAgICAgICAgIG1lc3NhZ2U6ICfku6XlrZfmr43lvIDlpLTnmoTlrZfmr43jgIHmlbDlrZfjgIHkuIvliJLnur/nu4TlkIgnLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfSwgewogICAgICAgICAgdmFsaWRhdG9yOiBjaGVja2V5LAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgZm9ybTogewogICAgICAgIGF0dHJEYXRhOiBbXQogICAgICB9LAogICAgICBpbXBvcnREYXRhOiB7CiAgICAgICAgdGFibGVJZDogJycKICAgICAgfSwKICAgICAgZGlhbG9nVmlzaWJsZUVudW06IGZhbHNlLAogICAgICBkaWFsb2dWaXNpYmxlTXVsdGk6IGZhbHNlLAogICAgICBjdXJyZW50Um93OiBudWxsLAogICAgICBpbmRleDogbnVsbCwKICAgICAgdGFiZWxEYXRhOiBudWxsLAogICAgICB0YWJsZUxvYWRpbmc6IGZhbHNlLAogICAgICB1cGxvYWRMb2FkaW5nOiBmYWxzZSwKICAgICAgdXBsb2FkVmlzaWJsZTogZmFsc2UsCiAgICAgIGxvYWRpbmc6IGZhbHNlCiAgICB9OwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgZG9jdW1lbnQub25rZXlkb3duID0gZnVuY3Rpb24gKCkgewogICAgICBpZiAoX3RoaXMyLmZvcm0uYXR0ckRhdGEpIHsKICAgICAgICB2YXIga2V5ID0gd2luZG93LmV2ZW50LmtleUNvZGU7CiAgICAgICAgaWYgKGtleSA9PSAxMTMpIHsKICAgICAgICAgIC8vID09IDgzICYmIGV2ZW50LmN0cmxLZXkKICAgICAgICAgIF90aGlzMi5hZGRBdHRyUm93cygpOwogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIF90aGlzMi4kcmVmcy5hdHRyVGFibGVTY3JvbGxiYXJIZWlnaHQuYm9keVdyYXBwZXIuc2Nyb2xsVG9wID0gX3RoaXMyLiRyZWZzLmF0dHJUYWJsZVNjcm9sbGJhckhlaWdodC5ib2R5V3JhcHBlci5zY3JvbGxIZWlnaHQ7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfTsKICB9LAogIGNvbXB1dGVkOiBfb2JqZWN0U3ByZWFkKHsKICAgIGFjdGlvblVybDogZnVuY3Rpb24gYWN0aW9uVXJsKF8pIHsKICAgICAgcmV0dXJuICIiLmNvbmNhdCh3aW5kb3cuY29udGV4dC5wb3J0YWwsICIvYml6L2RhdGFSZXNvdXJjZS9vZHNGaWVsZC92MS9pbXBvcnRGaWxlIik7CiAgICB9CiAgfSwgbWFwU3RhdGUoewogICAgaGVhZGVyczogZnVuY3Rpb24gaGVhZGVycyhzdGF0ZSkgewogICAgICByZXR1cm4gewogICAgICAgIEF1dGhvcml6YXRpb246ICJCZWFyZXIgIi5jb25jYXQoc3RhdGUubG9naW4uY3VycmVudFVzZXIudG9rZW4pCiAgICAgIH07CiAgICB9CiAgfSkpLAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7fSwKICBtZXRob2RzOiB7CiAgICBpbml0RGF0YTogZnVuY3Rpb24gaW5pdERhdGEoZGF0YSkgewogICAgICB0aGlzLnRhYmVsRGF0YSA9IGRhdGE7CiAgICAgIHRoaXMuaW1wb3J0RGF0YS50YWJsZUlkID0gZGF0YS5pZDsKICAgICAgdGhpcy5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICB9LAogICAgZ2V0RmllbGRzQnlUYWJsZTogZnVuY3Rpb24gZ2V0RmllbGRzQnlUYWJsZSgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRnZXRGaWVsZHNMLCBmaWVsZExpc3Q7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXMzLnRhYmxlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE7CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5nZXRGaWVsZHNMaXN0KF90aGlzMy5kYXRhLmlkKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCRBUEkkZ2V0RmllbGRzTCA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgZmllbGRMaXN0ID0gX3lpZWxkJEFQSSRnZXRGaWVsZHNMLmZpZWxkTGlzdDsKICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhmaWVsZExpc3QpOwogICAgICAgICAgICAgIGlmIChmaWVsZExpc3QgJiYgZmllbGRMaXN0Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgLy8gdGhpcy5mb3JtLmF0dHJEYXRhID0gZmllbGRMaXN0OwogICAgICAgICAgICAgICAgX3RoaXMzLmZvcm0uYXR0ckRhdGEgPSBmaWVsZExpc3QuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmZpZWxkVHlwZSA9PT0gJzInOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0LnQwID0gX2NvbnRleHRbImNhdGNoIl0oMSk7CiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZXJyKTsKICAgICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dC50MCB8fCAn6LWE5rqQ6aG55a2X5q615p+l6K+i5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDEyOwogICAgICAgICAgICAgIF90aGlzMy50YWJsZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuZmluaXNoKDEyKTsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUsIG51bGwsIFtbMSwgOSwgMTIsIDE1XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlOiBnZXREaWN0aW9uYXJ5QnlDb2RlLAogICAgLy8gY2hhbmdlRGljdChkYXRhKSB7CiAgICAvLyAgIHRoaXMuY3VycmVudFJvdy5kaW1lbnNpb25JZCA9IGRhdGEuaWQ7CiAgICAvLyAgIHRoaXMuZm9ybS5hdHRyRGF0YS5zcGxpY2UodGhpcy5pbmRleCwgMSwgZGF0YSk7CiAgICAvLyB9LAogICAgY2hhbmdlRGljdDogZnVuY3Rpb24gY2hhbmdlRGljdChkYXRhLCBrZXkpIHsKICAgICAgLy8gdGhpcy5jdXJyZW50Um93LmRpbWVuc2lvbklkID0gZGF0YS5pZDsKICAgICAgLy8gdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZSh0aGlzLmluZGV4LCAxLCBkYXRhKTsKICAgICAgdGhpcy5jdXJyZW50Um93LmRpbWVuc2lvbklkID0gZGF0YVtrZXldOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKHRoaXMuaW5kZXgsIDEsIHRoaXMuY3VycmVudFJvdyk7CiAgICB9LAogICAgLy8g5paw5aKe5a2X5q61CiAgICBhZGRBdHRyUm93czogZnVuY3Rpb24gYWRkQXR0clJvd3MoKSB7CiAgICAgIHZhciByb3cgPSB7CiAgICAgICAgdGFibGVJZDogdGhpcy50YWJlbERhdGEuaWQsCiAgICAgICAgY29kZTogJycsCiAgICAgICAgbmFtZTogJycsCiAgICAgICAgZGVzYzogJycsCiAgICAgICAgZmllbGRUeXBlOiAnMicsCiAgICAgICAgaXNJbml0RmlsZWQ6ICdOJywKICAgICAgICBpc1BrOiAnMCcsCiAgICAgICAgaXNSZXF1aXJlZDogJzAnLAogICAgICAgIFVpQ29tQ29kZTogJ2lucHV0JywKICAgICAgICBkYXRhVHlwZTogJ3ZhcmNoYXInLAogICAgICAgIGRlZmF1bHRWYWx1ZTogJycsCiAgICAgICAgZm9ybWF0OiAnJywKICAgICAgICBmaWVsZFZhbHVlVHlwZTogJzEnLAogICAgICAgIGRpbWVuc2lvbklkOiAnJywKICAgICAgICB1bml0OiAnJywKICAgICAgICBhdHRyTGVuZ3RoOiAyMDAsCiAgICAgICAgZGVjaW1hbExlbjogMCwKICAgICAgICBpc0VuY3J5cHQ6ICcwJywKICAgICAgICBpc0VkaXQ6ICcwJywKICAgICAgICBpc0Rlc2Vuc2l0aXplOiAnMCcsCiAgICAgICAgaXNQYXJ0aXRpb246ICcwJywKICAgICAgICBpbmRleDogdGhpcy5mb3JtLmF0dHJEYXRhLmxlbmd0aCArIDEKICAgICAgfTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZSh0aGlzLmZvcm0uYXR0ckRhdGEubGVuZ3RoLCAwLCByb3cpOwogICAgfSwKICAgIGNoYW5nZUZpZWxkVmFsdWVUeXBlOiBmdW5jdGlvbiBjaGFuZ2VGaWVsZFZhbHVlVHlwZSh2YWwsIHJvdywgaW5kZXgpIHsKICAgICAgcm93LmRpbWVuc2lvbklkID0gJyc7CiAgICAgIHJvdy5maWVsZFZhbHVlVHlwZSA9IHZhbDsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSwgcm93KTsKICAgIH0sCiAgICAvLyBVSeexu+Wei+WIh+aNouiuvue9rum7mOiupOWAvAogICAgY2hhbmdlVUlUeXBlOiBmdW5jdGlvbiBjaGFuZ2VVSVR5cGUodmFsLCByb3csIGluZGV4KSB7CiAgICAgIGNvbnNvbGUubG9nKHZhbCwgcm93LCBpbmRleCk7CiAgICAgIHJvdy5kYXRhVHlwZSA9ICd2YXJjaGFyJzsKICAgICAgcm93LmZvcm1hdCA9ICcnOwogICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSAnMSc7CiAgICAgIGlmICh2YWwgPT09ICdkYXRlJykgewogICAgICAgIHJvdy5kYXRhVHlwZSA9ICdkYXRldGltZSc7CiAgICAgICAgcm93LmZvcm1hdCA9ICd5eXl5LU1NLWRkJzsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdzZWxlY3QnIHx8IHZhbCA9PT0gJ2NoZWNrYm94JyB8fCB2YWwgPT09ICdyYWRpbycpIHsKICAgICAgICByb3cuZmllbGRWYWx1ZVR5cGUgPSAnMic7CiAgICAgIH0KICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSwgcm93KTsKICAgIH0sCiAgICAvLyDmlbDmja7nsbvlnovliIfmjaLorr7nva7pu5jorqTlgLwKICAgIGNoYW5nZURhdGFUeXBlOiBmdW5jdGlvbiBjaGFuZ2VEYXRhVHlwZSh2YWwsIHJvdywgaW5kZXgpIHsKICAgICAgcm93LmF0dHJMZW5ndGggPSAwOwogICAgICByb3cuZGVjaW1hbExlbiA9IDA7CiAgICAgIHJvdy5mb3JtYXQgPSAnJzsKICAgICAgcm93LmZpZWxkVmFsdWVUeXBlID0gJzEnOwogICAgICByb3cuZGltZW5zaW9uSWQgPSAnJzsKICAgICAgaWYgKHZhbCA9PT0gJ2RhdGV0aW1lJykgewogICAgICAgIHJvdy5mb3JtYXQgPSAneXl5eS1NTS1kZCc7CiAgICAgIH0gZWxzZSBpZiAodmFsID09PSAndmFyY2hhcicpIHsKICAgICAgICByb3cuYXR0ckxlbmd0aCA9IDIwMDsKICAgICAgfSBlbHNlIGlmICh2YWwgPT09ICdudW1iZXInKSB7CiAgICAgICAgcm93LmF0dHJMZW5ndGggPSAxMDsKICAgICAgICByb3cuZGVjaW1hbExlbiA9IDI7CiAgICAgIH0KICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhLnNwbGljZShpbmRleCwgMSwgcm93KTsKICAgIH0sCiAgICAvLyDpgInmi6nlrZflhbgKICAgIGhhbmRsZVNlYXJjaERpY3Q6IGZ1bmN0aW9uIGhhbmRsZVNlYXJjaERpY3Qocm93LCAkaW5kZXgpIHsKICAgICAgdGhpcy5jdXJyZW50Um93ID0gcm93OwogICAgICB0aGlzLmluZGV4ID0gJGluZGV4OwogICAgICBpZiAocm93LmZpZWxkVmFsdWVUeXBlID09PSAnMicpIHsKICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGVFbnVtID0gdHJ1ZTsKICAgICAgfSBlbHNlIGlmIChyb3cuZmllbGRWYWx1ZVR5cGUgPT09ICczJykgewogICAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZU11bHRpID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIGhhbmRsZUNvbW1hbmQ6IGZ1bmN0aW9uIGhhbmRsZUNvbW1hbmQocGFyYW0pIHsKICAgICAgc3dpdGNoIChwYXJhbS5jb21tYW5kKSB7CiAgICAgICAgY2FzZSAnZGVsJzoKICAgICAgICAgIHRoaXMuZGVsZXRlQXR0clJvd3MocGFyYW0ucm93LCBwYXJhbS5pbmRleCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICd1cCc6CiAgICAgICAgICB0aGlzLmF0dHJVcChwYXJhbS5yb3csIHBhcmFtLmluZGV4KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2Rvd24nOgogICAgICAgICAgdGhpcy5hdHRyRG93bihwYXJhbS5yb3csIHBhcmFtLmluZGV4KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfSwKICAgIC8vIOWIoOmZpOWtl+autSDkvKrliKDpmaQg6K6+572u5a2X5q61IHN0YXR1cyDlgLwgaGlkZQogICAgaXNEZWw6IGZ1bmN0aW9uIGlzRGVsKHJvdywgaW5kZXgpIHt9LAogICAgLy8g5Yig6Zmk5a2X5q61CiAgICBkZWxldGVBdHRyUm93czogZnVuY3Rpb24gZGVsZXRlQXR0clJvd3Mocm93LCBpbmRleCkgewogICAgICBpZiAocm93LmlzSW5pdEZpbGVkID09PSAnWScpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivpeWtl+auteS4uuWIneWni+Wtl+aute+8jOS4jeWPr+WIoOmZpO+8gScpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgLy8gaWYgKCFyb3cuaWQpIHsKICAgICAgLy8gICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgLy8gICByZXR1cm47CiAgICAgIC8vIH0KICAgICAgLy8KICAgICAgLy8gdGhpcy4kY29uZmlybShg5piv5ZCm5Yig6Zmk5a2X5q6177yIJHtyb3cubmFtZX3vvIk/YCwgJ+aPkOekuicsIHsKICAgICAgLy8gICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgIC8vICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgIC8vICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAvLyB9KS50aGVuKGFzeW5jICgpID0+IHsKICAgICAgLy8gICBhd2FpdCBBUEkuZGVsRmllbGRzKHJvdy5pZCk7CiAgICAgIC8vICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfliKDpmaTmiJDlip8nKTsKICAgICAgLy8gICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgLy8gfSk7CgogICAgICAvLyAgIGlmICghcm93LmlkKSB7CiAgICAgIC8vICAgICB0aGlzLmZvcm0uYXR0ckRhdGEuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgLy8gICB9CiAgICAgIC8vICAgdGhpcy5pc0RlbChyb3csIGluZGV4KTsKICAgIH0sCiAgICBhdHRyVXA6IGZ1bmN0aW9uIGF0dHJVcChyb3csIGluZGV4KSB7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXhdLmluZGV4IC0gMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4IC0gMV0uaW5kZXggPSB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggLSAxXS5pbmRleCArIDE7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YSA9IHV0aWxzLmFycmF5TW92ZSh0aGlzLmZvcm0uYXR0ckRhdGEsIHJvdywgJ3VwJyk7CiAgICB9LAogICAgYXR0ckRvd246IGZ1bmN0aW9uIGF0dHJEb3duKHJvdywgaW5kZXgpIHsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhW2luZGV4XS5pbmRleCA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleF0uaW5kZXggKyAxOwogICAgICB0aGlzLmZvcm0uYXR0ckRhdGFbaW5kZXggKyAxXS5pbmRleCA9IHRoaXMuZm9ybS5hdHRyRGF0YVtpbmRleCArIDFdLmluZGV4IC0gMTsKICAgICAgdGhpcy5mb3JtLmF0dHJEYXRhID0gdXRpbHMuYXJyYXlNb3ZlKHRoaXMuZm9ybS5hdHRyRGF0YSwgcm93LCAnZG93bicpOwogICAgfSwKICAgIG9uQ2FuY2VsOiBmdW5jdGlvbiBvbkNhbmNlbCgpIHsKICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7CiAgICAgIHRoaXMuZm9ybS5hdHRyRGF0YSA9IFtdOwogICAgfSwKICAgIC8vIGFzeW5jIGhhbmRsZVB1Ymxpc2goKSB7CiAgICAvLyAgIHRoaXMuJGNvbmZpcm0oJ+WPkeW4g+WQjuaVsOaNruWwhuaXoOazleS/ruaUueWSjOWIoOmZpCwg5piv5ZCm57un57utPycsICfmj5DnpLonLCB7CiAgICAvLyAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgLy8gICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgLy8gICAgIHR5cGU6ICd3YXJuaW5nJywKICAgIC8vICAgfSkudGhlbihhc3luYyAoKSA9PiB7CiAgICAvLyAgICAgdHJ5IHsKICAgIC8vICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAvLyAgICAgICBhd2FpdCBBUEkucHVibGlzaFRhYmxlKHRoaXMuZGF0YS5pZCk7CiAgICAvLyAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+WPkeW4g+aIkOWKnycpOwogICAgLy8gICAgICAgdGhpcy5nZXRGaWVsZHNCeVRhYmxlKCk7CiAgICAvLyAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTsKICAgIC8vICAgICB9IGZpbmFsbHkgewogICAgLy8gICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAvLyAgICAgfQogICAgLy8gICB9KTsKICAgIC8vIH0sCiAgICAvLyBvbkNvbmZpcm0oKSB7CiAgICAvLyAgIHRoaXMuJHJlZnMuZm9ybS52YWxpZGF0ZShhc3luYyAodmFsaWQsIG9iamVjdCkgPT4gewogICAgLy8gICAgIGlmICh2YWxpZCkgewogICAgLy8gICAgICAgY29uc29sZS5sb2codGhpcy5mb3JtLmF0dHJEYXRhKTsKICAgIC8vICAgICAgIHRyeSB7CiAgICAvLyAgICAgICAgIGNvbnN0IHsgc3RhdGUsIG1lc3NhZ2UgfSA9IGF3YWl0IEFQSS5zYXZlRmllbGRzKHRoaXMuZm9ybS5hdHRyRGF0YSk7CiAgICAvLyAgICAgICAgIGlmIChzdGF0ZSkgewogICAgLy8gICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5a2X5q615L+d5a2Y5oiQ5YqfJyk7CiAgICAvLyAgICAgICAgICAgdGhpcy4kZW1pdCgnY29uZmlybScpOwogICAgLy8gICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlOwogICAgLy8gICAgICAgICB9IGVsc2UgewogICAgLy8gICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfmk43kvZzlpLHotKUnKTsKICAgIC8vICAgICAgICAgfQogICAgLy8gICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAvLyAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhlcnIgfHwgJ+aTjeS9nOWksei0pScpOwogICAgLy8gICAgICAgfSBmaW5hbGx5IHsKICAgIC8vICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAvLyAgICAgICB9CiAgICAvLyAgICAgfSBlbHNlIHsKICAgIC8vICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZyhg5pyJJHtPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aH3kuKrlrZfmrrXmnKrpgJrov4fmoKHpqozvvIzor7fmraPnoa7loavlhpnooajljZXjgIJgKTsKICAgIC8vICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgLy8gICAgIH0KICAgIC8vICAgfSk7CiAgICAvLyB9LAogICAgb25Db25maXJtOiBmdW5jdGlvbiBvbkNvbmZpcm0oKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLmZvcm0udmFsaWRhdGUoLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMih2YWxpZCwgb2JqZWN0KSB7CiAgICAgICAgICB2YXIgZmllbGQsIHBhcmFtczsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjA7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgZmllbGQgPSBfdGhpczQuZm9ybS5hdHRyRGF0YTsKICAgICAgICAgICAgICAgIHBhcmFtcyA9IGZpZWxkOwogICAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSA0OwogICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSA3OwogICAgICAgICAgICAgICAgcmV0dXJuIEFQSS5zYXZlRmllbGRzKHBhcmFtcyk7CiAgICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLnN1Y2Nlc3MoJ+Wtl+auteS/neWtmOaIkOWKnycpOwogICAgICAgICAgICAgICAgX3RoaXM0LnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIF90aGlzNC4kZW1pdCgnY29uZmlybScpOwogICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxNTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDEyOwogICAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyWyJjYXRjaCJdKDQpOwogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQyLnQwIHx8ICfmk43kvZzlpLHotKUnKTsKICAgICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxNTsKICAgICAgICAgICAgICAgIF90aGlzNC5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmZpbmlzaCgxNSk7CiAgICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMjI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDIwOgogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcoIlx1NjcwOSIuY29uY2F0KE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoLCAiXHU0RTJBXHU1QjU3XHU2QkI1XHU2NzJBXHU5MDFBXHU4RkM3XHU2ODIxXHU5QThDXHVGRjBDXHU4QkY3XHU2QjYzXHU3ODZFXHU1ODZCXHU1MTk5XHU4ODY4XHU1MzU1XHUzMDAyIikpOwogICAgICAgICAgICAgICAgX3RoaXM0LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbNCwgMTIsIDE1LCAxOF1dKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChfeCwgX3gyKSB7CiAgICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LAogICAgZG93bmxvYWQ6IGZ1bmN0aW9uIGRvd25sb2FkKCkgewogICAgICB2YXIgZmlsZU5hbWUgPSAn5pWw5o2u6LS05rqQ5bGCLeaVsOaNruihqOWtl+autea4heWNlS54bHN4JzsKICAgICAgLy8gY29uc3QgZmlsZSA9IGAuL2ZpbGUvZG93bmxvYWQvJHtmaWxlTmFtZX1gOwogICAgICB2YXIgZmlsZSA9IHdpbmRvdy5jb250ZXh0LmRvd25sb2FkICsgZmlsZU5hbWU7CiAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICBhLmhyZWYgPSBmaWxlOwogICAgICBhLmRvd25sb2FkID0gZmlsZU5hbWU7IC8vIOiuvue9ruS4i+i9veaWh+S7tuaWh+S7tuWQjQogICAgICBhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGEuY2xpY2soKTsKICAgICAgYS5yZW1vdmUoKTsKICAgIH0sCiAgICAvLyAg5a+85YWl5paH5Lu25LiK5Lyg5YmNCiAgICBiZWZvcmVVcGxvYWQ6IGZ1bmN0aW9uIGJlZm9yZVVwbG9hZChmaWxlKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICB0aGlzLnVwbG9hZFZpc2libGUgPSBmYWxzZTsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICBfdGhpczUudXBsb2FkTG9hZGluZyA9IHRydWU7CiAgICAgICAgdmFyIHNpemUgPSBmaWxlLnNpemUsCiAgICAgICAgICBuYW1lID0gZmlsZS5uYW1lOwogICAgICAgIF90aGlzNS4kY29uZmlybSgiXHU4QkY3XHU3ODZFXHU4QkE0XHU2NjJGXHU1NDI2XHU1QkZDXHU1MTY1IFx1MjAxQyIuY29uY2F0KG5hbWUsICJcdTIwMUQgXHVGRjFGIiksICfmj5DnpLonLCB7CiAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHZhciBwYXNzZWRPck5vdCA9IHRydWU7IC8vIOaYr+WQpumAmui/h+mqjOivgQogICAgICAgICAgdmFyIHR5cGVSZWd1bGFyID0gL1wuKHhsc3x4bHN4KSQvaTsKICAgICAgICAgIHZhciB2ZXJpZmljYXRpb24gPSBbewogICAgICAgICAgICBjb25kaXRpb246ICF0eXBlUmVndWxhci50ZXN0KG5hbWUpLAogICAgICAgICAgICByZXN1bHQ6IGZ1bmN0aW9uIHJlc3VsdCgpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM1LiRtZXNzYWdlLmVycm9yKCflj6rog73kuIrkvKB4bHPmiJZ4bHN45paH5Lu257G75Z6LJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH1dOwogICAgICAgICAgdmVyaWZpY2F0aW9uLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgaWYgKGl0ZW0uY29uZGl0aW9uKSB7CiAgICAgICAgICAgICAgaXRlbS5yZXN1bHQoKTsKICAgICAgICAgICAgICBwYXNzZWRPck5vdCA9IGZhbHNlOwogICAgICAgICAgICAgIF90aGlzNS51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgcGFzc2VkT3JOb3QgPyByZXNvbHZlKCkgOiByZWplY3QoKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoXykgewogICAgICAgICAgcmVqZWN0KCk7CiAgICAgICAgICBfdGhpczUudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLndhcm5pbmcoJ+W3suWPlua2iOS4iuS8oCcpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDlr7zlhaXmlofku7bkuIrkvKDmiJDlip8KICAgIGhhbmRsZVN1Y2Nlc3M6IGZ1bmN0aW9uIGhhbmRsZVN1Y2Nlc3MocmVzKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBpZiAoIXJlcy5zdGF0ZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA3OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS5zdWNjZXNzKCflr7zlhaXmiJDlip8nKTsKICAgICAgICAgICAgICBfdGhpczYudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM2LmdldEZpZWxkc0J5VGFibGUoKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gODsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS5lcnJvcihyZXMubWVzc2FnZSk7CiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOWvvOWFpeaWh+S7tuS4iuS8oOWksei0pQogICAgaGFuZGxlRXJyb3I6IGZ1bmN0aW9uIGhhbmRsZUVycm9yKCkgewogICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCflr7zlhaXlpLHotKXvvIzor7fph43or5UnKTsKICAgICAgdGhpcy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICB9CiAgfQp9Ow=="},null]}