{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\PatrolAndRescuePersonnelMgmt\\components\\EditAddPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\PatrolAndRescuePersonnelMgmt\\components\\EditAddPage\\index.vue","mtime":1741723721200},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS94Y2p5LWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKdmFyIF9leGNsdWRlZCA9IFsicG9zdCJdLAogIF9leGNsdWRlZDIgPSBbImFjY291bnQiLCAidGVsIiwgIm91dENvbXBhbnlOYW1lIiwgIm91dENvbXBhbnlJZCIsICJ0ZWFtSWQiXTsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maWx0ZXIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50ZXN0LmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBQdWJTdWIgZnJvbSAncHVic3ViLWpzJzsKaW1wb3J0IHsgdGFibGVBZGQsIHRhYmxlRGV0YWlsLCB0YWJsZUVkaXQgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9wYXRyb2xBbmRSZXNjdWVQZXJzb25uZWxNZ210JzsKaW1wb3J0IHsgZ2V0Q2FzY2FkZURpY3RCeUNvZGVFdmVudCwgZ2V0RGljdGlvbmFyeUJ5Q29kZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeSc7CmltcG9ydCBPdXRDb21wYW55RGlhbG9nIGZyb20gJy4vY29tcG9uZW50cy9PdXRDb21wYW55RGlhbG9nJzsKaW1wb3J0IHsgb3JnVHJlZSB9IGZyb20gJ0AvYXBpL3N5c3RlbUludGVyZmFjZSc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyB0ZWFtRGF0YSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3BhdHJvbEFuZFJlc2N1ZVRlYW1zTWdtdCc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyBjb21wYW55RGF0YSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL291dHNvdXJjaW5nQ29tcGFueU1nbXQnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0VkaXRBZGRQYWdlJywKICBjb21wb25lbnRzOiB7CiAgICBPdXRDb21wYW55RGlhbG9nOiBPdXRDb21wYW55RGlhbG9nCiAgfSwKICBwcm9wczogewogICAgY29tcG9uZW50TmFtZTogewogICAgICBkZWZhdWx0OiAnVGFibGVQYWdlJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgdmFyIHZhbGlkYXRlQWNjb3VudFRlbCA9IGZ1bmN0aW9uIHZhbGlkYXRlQWNjb3VudFRlbCh0ZXh0LCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgdmFyIHBob25lUmVnZXggPSAvXjFbMy05XVxkezl9JC87CiAgICAgIGlmIChwaG9uZVJlZ2V4LnRlc3QodmFsdWUpKSB7CiAgICAgICAgY2FsbGJhY2soKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIiIuY29uY2F0KHRleHQsICJcdTk3MDBcdTRFM0ExMVx1NEY0RFx1NjI0Qlx1NjczQVx1NTNGNyIpKSk7CiAgICAgIH0KICAgIH07CiAgICB2YXIgdmFsaWRhdGVDb2RlID0gZnVuY3Rpb24gdmFsaWRhdGVDb2RlKF8sIHZhbHVlLCBjYWxsYmFjaykgewogICAgICB2YXIgaWRDYXJkUmVnZXggPSAvXig/OlxkezE1fXxcZHsxN31bXGRYeF0pJC87CiAgICAgIGlmIChpZENhcmRSZWdleC50ZXN0KHZhbHVlKSkgewogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCfor7fovpPlhaXlkIjms5XnmoTouqvku73or4Hlj7cnKSk7CiAgICAgIH0KICAgIH07CiAgICByZXR1cm4gewogICAgICBhZGRFZGl0Rm9ybTogewogICAgICAgIHR5cGU6ICcwJywKICAgICAgICBwb3N0OiAnJywKICAgICAgICBpc091dDogJzEnLAogICAgICAgIHRlYW1JZDogJycsCiAgICAgICAgdGVhbU5hbWU6ICcnLAogICAgICAgIHJvYWRGdWxsSWQ6ICcnCiAgICAgIH0sCiAgICAgIGZpbHRlcmVkRHdseDogW10sCiAgICAgIC8vIOeUqOS6juWtmOWCqOi/h+a7pOWQjueahOWtl+WFuOWAvAogICAgICBhZGRFZGl0UnVsZXM6IHsKICAgICAgICBhY2NvdW50OiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6LSm5Y+35ZCN5LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH0sIHsKICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSwKICAgICAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKF8sIHZhbCwgY2IpIHsKICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWNjb3VudFRlbCgn6LSm5Y+35ZCNJywgdmFsLCBjYik7CiAgICAgICAgICB9LAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgdGVsOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5omL5py65Y+35LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH0sIHsKICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSwKICAgICAgICAgIHZhbGlkYXRvcjogZnVuY3Rpb24gdmFsaWRhdG9yKF8sIHZhbCwgY2IpIHsKICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlQWNjb3VudFRlbCgn5omL5py65Y+3JywgdmFsLCBjYik7CiAgICAgICAgICB9LAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgY29kZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+i6q+S7veivgeWPt+S4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9LCB7CiAgICAgICAgICByZXF1aXJlZDogZmFsc2UsCiAgICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRlQ29kZSwKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIG5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfpmJ/lkZjlp5PlkI3kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgb3V0Q29tcGFueUlkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5aSW5YyF5YWs5Y+45LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJywgJ2JsdXInXQogICAgICAgIH1dLAogICAgICAgIHR5cGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfkurrlkZjnsbvlnovkuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgcG9zdDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+S6uuWRmOiBjOWKoeS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZScsICdibHVyJ10KICAgICAgICB9XSwKICAgICAgICB0ZWFtSWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmiYDlsZ7pmJ/kvI3kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydibHVyJ10KICAgICAgICB9XSwKICAgICAgICBpc091dDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+aYr+WQpuWklua0vuS6uuWRmOS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgc2F2ZUxvYWRpbmc6IGZhbHNlLAogICAgICAvLyDkuIrkvKBsb2FkaW5nCiAgICAgIGlkOiAnJywKICAgICAgLy8gaWTmoIfor4bnrKYKICAgICAgcHViU3ViOiBudWxsLAogICAgICBvdXRDb21wYW55RGlhbG9nOiBmYWxzZSwKICAgICAgLy8g5piv5ZCm5bGV56S66YCJ5oup5aSW5YyF5YWs5Y+46YCJ5oupCiAgICAgIHRyZWVEYXRhOiBbXSwKICAgICAgLy8g57uE57uH5qCRCiAgICAgIHRlYW1PcHRpb25zOiBbXSwKICAgICAgY29tcGFueU9wdGlvbnM6IFtdCiAgICB9OwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIHBvc3RPcHQ6IGZ1bmN0aW9uIHBvc3RPcHQoKSB7CiAgICAgIC8vIOiOt+WPlue6p+iBlOWtl+WFuAogICAgICByZXR1cm4gZ2V0Q2FzY2FkZURpY3RCeUNvZGVFdmVudCgncnlseC14Y2p5cnknLCB0aGlzLmFkZEVkaXRGb3JtLnR5cGUpOwogICAgfQogIH0sCiAgd2F0Y2g6IHsKICAgIGNvbXBvbmVudE5hbWU6IGZ1bmN0aW9uIGNvbXBvbmVudE5hbWUobmV3VmFsKSB7CiAgICAgIGlmIChuZXdWYWwgPT09IHRoaXMuJG9wdGlvbnMubmFtZSkgewogICAgICAgIHRoaXMub3BlblBhZ2UoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmNsb3NlUGFnZSgpOwogICAgICB9CiAgICB9CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgLy8gdGhpcy5nZXRPcmdUcmVlRGF0YSgpCiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIC8vIOa3u+WKoFRyZWVJdGVtU2VsZWN0ZWTorqLpmIUKICAgIHRoaXMudHJlZVB1YlN1YiA9IFB1YlN1Yi5zdWJzY3JpYmUoJ1RyZWVJdGVtU2VsZWN0ZWQnLCBmdW5jdGlvbiAoXywgZGF0YSkgewogICAgICBfdGhpcy5hZGRFZGl0Rm9ybS50ZWFtSWQgPSBkYXRhLmlkOwogICAgICBfdGhpcy5hZGRFZGl0Rm9ybS50ZWFtTmFtZSA9IGRhdGEubmFtZTsKICAgICAgX3RoaXMuYWRkRWRpdEZvcm0ucm9hZEZ1bGxJZCA9IGRhdGEucGF0aDsKICAgIH0pOwogICAgdGhpcy5wdWJTdWIgPSBQdWJTdWIuc3Vic2NyaWJlKCdFZGl0QWRkUGFnZScsIGZ1bmN0aW9uIChfLCBkYXRhKSB7CiAgICAgIGlmIChkYXRhLnRyZWVJdGVtKSB7CiAgICAgICAgY29uc29sZS5sb2coZGF0YS50cmVlSXRlbSwgJ1RSRUVpdGVtMTExMTExMTExJyk7CiAgICAgICAgX3RoaXMuYWRkRWRpdEZvcm0udGVhbU5hbWUgPSBkYXRhLnRyZWVJdGVtLm5hbWU7CiAgICAgICAgX3RoaXMuYWRkRWRpdEZvcm0udGVhbUlkID0gZGF0YS50cmVlSXRlbS5pZDsKICAgICAgICAvLyB0aGlzLmFkZEVkaXRGb3JtLnJvYWRGdWxsSWQgPSBkYXRhLnRyZWVJdGVtLmlkCiAgICAgIH0KICAgICAgaWYgKGRhdGEuaWQpIHsKICAgICAgICBfdGhpcy5pZCA9IGRhdGEuaWQ7CiAgICAgICAgX3RoaXMuZ2V0RGV0YWlsKGRhdGEuaWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBfZGF0YSR0cmVlSXRlbSwgX2RhdGEkdHJlZUl0ZW0yOwogICAgICAgIC8vIGNvbnN0IHtpZDogdGVhbUlkID0gJycsIHBhdGg6IHRlYW1GdWxsSWQgPSAnJ30gPSBkYXRhLnRyZWVJdGVtIHx8IHt9CiAgICAgICAgX3RoaXMuYWRkRWRpdEZvcm0gPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF90aGlzLmFkZEVkaXRGb3JtKSwge30sIHsKICAgICAgICAgIC8vIHRlYW1JZCwgLAogICAgICAgICAgLy8gdGVhbUlkOiBkYXRhLnRlYW1JZCB8fCAnJywKICAgICAgICAgIC8vIHRlYW1OYW1lOiBkYXRhPy50ZWFtTmFtZSB8fCAnJyAvLyDnoa7kv53mlrDlop7ml7YgdGVhbU5hbWUg6KKr5Yid5aeL5YyWCiAgICAgICAgICB0ZWFtSWQ6IGRhdGEudGVhbUlkIHx8ICgoX2RhdGEkdHJlZUl0ZW0gPSBkYXRhLnRyZWVJdGVtKSA9PT0gbnVsbCB8fCBfZGF0YSR0cmVlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RhdGEkdHJlZUl0ZW0uaWQpIHx8ICcnLAogICAgICAgICAgLy8g56Gu5L+dIHRlYW1JZCDooqvmraPnoa7otYvlgLwKICAgICAgICAgIHRlYW1OYW1lOiBkYXRhLnRlYW1OYW1lIHx8ICgoX2RhdGEkdHJlZUl0ZW0yID0gZGF0YS50cmVlSXRlbSkgPT09IG51bGwgfHwgX2RhdGEkdHJlZUl0ZW0yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZGF0YSR0cmVlSXRlbTIubmFtZSkgfHwgJycgLy8g56Gu5L+dIHRlYW1OYW1lIOiiq+ato+ehrui1i+WAvAogICAgICAgIH0pOwogICAgICB9CiAgICB9KTsKICAgIHRoaXMuZ2V0VGVhbURhdGEoKTsKICAgIHRoaXMuZ2V0Q29tcGFueWF0YSgpOwogIH0sCiAgbWV0aG9kczogewogICAgLy8g6L+H5ruk5a2X5YW45YC877yM5Y+q5L+d55WZ56ys5LiA5LiqCiAgICBmaWx0ZXJEd2x4OiBmdW5jdGlvbiBmaWx0ZXJEd2x4KCkgewogICAgICB2YXIgZHdseCA9IHRoaXMuZ2V0RGljdGlvbmFyeUJ5Q29kZSgncnlseC14Y2p5cnknKTsKICAgICAgaWYgKGR3bHggJiYgZHdseC5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy5maWx0ZXJlZER3bHggPSBbZHdseFswXV07IC8vIOWPquS/neeVmeesrOS4gOS4quWAvAogICAgICAgIHRoaXMuYWRkRWRpdEZvcm0udHlwZSA9IGR3bHhbMF0udmFsdWU7IC8vIOiuvue9rum7mOiupOWAvAogICAgICB9CiAgICB9LAogICAgZ2V0RGljdGlvbmFyeUJ5Q29kZTogZ2V0RGljdGlvbmFyeUJ5Q29kZSwKICAgIC8v5aSW5YyF5YWs5Y+45p+l6K+iCiAgICBnZXRDb21wYW55YXRhOiBmdW5jdGlvbiBnZXRDb21wYW55YXRhKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkY29tcGFueURhdGEsIF95aWVsZCRjb21wYW55RGF0YSRybywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gY29tcGFueURhdGEoKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCRjb21wYW55RGF0YSA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJGNvbXBhbnlEYXRhJHJvID0gX3lpZWxkJGNvbXBhbnlEYXRhLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRjb21wYW55RGF0YSRybyA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkY29tcGFueURhdGEkcm87CiAgICAgICAgICAgICAgX3RoaXMyLmNvbXBhbnlPcHRpb25zID0gcm93czsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluW3oeafpeaVkeaPtOmYn+S8jeS/oeaBrwogICAgZ2V0VGVhbURhdGE6IGZ1bmN0aW9uIGdldFRlYW1EYXRhKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgX3lpZWxkJHRlYW1EYXRhLCBfeWllbGQkdGVhbURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0ZWFtRGF0YSgpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHRlYW1EYXRhID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHRlYW1EYXRhJHJvd3MgPSBfeWllbGQkdGVhbURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHRlYW1EYXRhJHJvd3MgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHRlYW1EYXRhJHJvd3M7CiAgICAgICAgICAgICAgX3RoaXMzLnRlYW1PcHRpb25zID0gcm93czsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5omT5byA6aG16Z2i5omn6KGMCiAgICBvcGVuUGFnZTogZnVuY3Rpb24gb3BlblBhZ2UoKSB7CiAgICAgIHRoaXMudHlwZUNoYW5nZSgpOwogICAgICB0aGlzLmZpbHRlckR3bHgoKTsgLy8g6L+H5ruk5a2X5YW45YC8CiAgICB9LAogICAgLy8g5YWz6Zet6aG16Z2i5omn6KGMCiAgICBjbG9zZVBhZ2U6IGZ1bmN0aW9uIGNsb3NlUGFnZSgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHZhciBwdWJTdWIgPSB0aGlzLnB1YlN1YiwKICAgICAgICBhZGRFZGl0UnVsZXMgPSB0aGlzLmFkZEVkaXRSdWxlcywKICAgICAgICB0cmVlRGF0YSA9IHRoaXMudHJlZURhdGEsCiAgICAgICAgdGVhbU9wdGlvbnMgPSB0aGlzLnRlYW1PcHRpb25zLAogICAgICAgIGNvbXBhbnlPcHRpb25zID0gdGhpcy5jb21wYW55T3B0aW9uczsKICAgICAgLy8g6YeN572u57uE5Lu25pWw5o2uCiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy4kZGF0YSwgdGhpcy4kb3B0aW9ucy5kYXRhLmNhbGwodGhpcyksIHsKICAgICAgICBwdWJTdWI6IHB1YlN1YiwKICAgICAgICBhZGRFZGl0UnVsZXM6IGFkZEVkaXRSdWxlcywKICAgICAgICB0cmVlRGF0YTogdHJlZURhdGEsCiAgICAgICAgdGVhbU9wdGlvbnM6IHRlYW1PcHRpb25zLAogICAgICAgIGNvbXBhbnlPcHRpb25zOiBjb21wYW55T3B0aW9ucwogICAgICB9KTsKICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICBfdGhpczQuJHJlZnMuYWRkRWRpdEZvcm0uJGVsLnNjcm9sbFRvcCA9IDA7CiAgICAgICAgX3RoaXM0LiRyZWZzLmFkZEVkaXRGb3JtLmNsZWFyVmFsaWRhdGUoKTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g6I635Y+W6K+m5oOFCiAgICBnZXREZXRhaWw6IGZ1bmN0aW9uIGdldERldGFpbChpZCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgX3lpZWxkJHRhYmxlRGV0YWlsLCBfeWllbGQkdGFibGVEZXRhaWwkcG8sIHBvc3QsIGFkZEVkaXRGb3JtLCBvbGRQb3N0OwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGV0YWlsKGlkKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURldGFpbCA9IF9jb250ZXh0My5zZW50OwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURldGFpbCRwbyA9IF95aWVsZCR0YWJsZURldGFpbC5wb3N0OwogICAgICAgICAgICAgIHBvc3QgPSBfeWllbGQkdGFibGVEZXRhaWwkcG8gPT09IHZvaWQgMCA/ICcnIDogX3lpZWxkJHRhYmxlRGV0YWlsJHBvOwogICAgICAgICAgICAgIGFkZEVkaXRGb3JtID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF95aWVsZCR0YWJsZURldGFpbCwgX2V4Y2x1ZGVkKTsKICAgICAgICAgICAgICBvbGRQb3N0ID0gcG9zdDsgLy8g5L+d5oyB6K+m5oOF5Y6f5aeLcG9zdOWGheWuue+8jOmBv+WFjeWboOihqOWNlei1i+WAvOWQjuinpuWPkXR5cGVDaGFuZ2Xkuovku7bogIzkuKLlpLFwb3N055qE5YC8CiAgICAgICAgICAgICAgX3RoaXM1LmFkZEVkaXRGb3JtID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBhZGRFZGl0Rm9ybSksIHt9LCB7CiAgICAgICAgICAgICAgICBwb3N0OiBwb3N0LAogICAgICAgICAgICAgICAgdGVhbU5hbWU6IGFkZEVkaXRGb3JtLnRlYW1OYW1lIHx8IF90aGlzNS5hZGRFZGl0Rm9ybS50ZWFtTmFtZSAvLyDnoa7kv50gdGVhbU5hbWUg6KKr6LWL5YC8CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgX3RoaXM1LmFkZEVkaXRGb3JtLnBvc3QgPSBvbGRQb3N0OwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDojrflj5blhazlj7jmoJEKICAgIGdldE9yZ1RyZWVEYXRhOiBmdW5jdGlvbiBnZXRPcmdUcmVlRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gb3JnVHJlZSgpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3RoaXM2LnRyZWVEYXRhID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOeCueS9jeexu+Wei+WPkeeUn+WPmOWMlgogICAgdHlwZUNoYW5nZTogZnVuY3Rpb24gdHlwZUNoYW5nZSgpIHsKICAgICAgdmFyIF90aGlzJHBvc3RPcHQkOwogICAgICAvLyDlvZPooajljZXkuK3ngrnkvY3nsbvlnovlj5HnlJ/mlLnlj5jnmoTml7blgJnvvIzotYvlgLzlhoXlrrnlrZflhbjkuK3nmoTnrKzkuIDpobnlrZflhbjlgLznu5nooajljZXkuK3lhoXlrrnlrZfmrrUKICAgICAgdGhpcy5hZGRFZGl0Rm9ybS5wb3N0ID0gKChfdGhpcyRwb3N0T3B0JCA9IHRoaXMucG9zdE9wdFswXSkgPT09IG51bGwgfHwgX3RoaXMkcG9zdE9wdCQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHBvc3RPcHQkLnZhbHVlKSB8fCAnJzsKICAgIH0sCiAgICAvLyDlt6Hmn6XpmJ/kvI3liIfmjaIKICAgIHRlYW1JZENoYW5nZTogZnVuY3Rpb24gdGVhbUlkQ2hhbmdlKCkgewogICAgICB2YXIgX3RoaXMkJHJlZnMkY2FzY2FkZXI7CiAgICAgIHRoaXMuYWRkRWRpdEZvcm0udGVhbUZ1bGxJZCA9ICgoX3RoaXMkJHJlZnMkY2FzY2FkZXIgPSB0aGlzLiRyZWZzLmNhc2NhZGVyKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyRjYXNjYWRlciA9PT0gdm9pZCAwIHx8IChfdGhpcyQkcmVmcyRjYXNjYWRlciA9IF90aGlzJCRyZWZzJGNhc2NhZGVyLmdldENoZWNrZWROb2RlcygpWzBdKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyRjYXNjYWRlciA9PT0gdm9pZCAwIHx8IChfdGhpcyQkcmVmcyRjYXNjYWRlciA9IF90aGlzJCRyZWZzJGNhc2NhZGVyLmRhdGEpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJGNhc2NhZGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyQkcmVmcyRjYXNjYWRlci5wYXRoKSB8fCAnJzsKICAgIH0sCiAgICAvLyDkv53lrZgKICAgIGhhbmRsZVNhdmU6IGZ1bmN0aW9uIGhhbmRsZVNhdmUoKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLmFkZEVkaXRGb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUodmFsaWQsIG9iamVjdCkgewogICAgICAgICAgdmFyIG15SW50ZXJGYWNlLCBfdGhpczckYWRkRWRpdEZvcm0sIF90aGlzNyRhZGRFZGl0Rm9ybSRhYywgYWNjb3VudCwgX3RoaXM3JGFkZEVkaXRGb3JtJHRlLCB0ZWwsIF90aGlzNyRhZGRFZGl0Rm9ybSRvdSwgb3V0Q29tcGFueU5hbWUsIF90aGlzNyRhZGRFZGl0Rm9ybSRvdTIsIG91dENvbXBhbnlJZCwgX3RoaXM3JGFkZEVkaXRGb3JtJHRlMiwgdGVhbUlkLCBhZGRFZGl0Rm9ybSwgY29tcGFueUluZm8sIHRlYW1JbmZvLCBfeWllbGQkbXlJbnRlckZhY2UsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLndhcm5pbmcoIlx1NjcwOSIuY29uY2F0KE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoLCAiXHU0RTJBXHU1QjU3XHU2QkI1XHU2NzJBXHU5MDFBXHU4RkM3XHU2ODIxXHU5QThDXHVGRjBDXHU4QkY3XHU2QjYzXHU3ODZFXHU1ODZCXHU1MTk5XHU4ODY4XHU1MzU1XHU1MTg1XHU1QkI5XHUzMDAyIikpOwogICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxOTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgIF90aGlzNy5zYXZlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICBteUludGVyRmFjZSA9IF90aGlzNy5pZCA/IHRhYmxlRWRpdCA6IHRhYmxlQWRkOwogICAgICAgICAgICAgICAgX3RoaXM3JGFkZEVkaXRGb3JtID0gX3RoaXM3LmFkZEVkaXRGb3JtLCBfdGhpczckYWRkRWRpdEZvcm0kYWMgPSBfdGhpczckYWRkRWRpdEZvcm0uYWNjb3VudCwgYWNjb3VudCA9IF90aGlzNyRhZGRFZGl0Rm9ybSRhYyA9PT0gdm9pZCAwID8gJycgOiBfdGhpczckYWRkRWRpdEZvcm0kYWMsIF90aGlzNyRhZGRFZGl0Rm9ybSR0ZSA9IF90aGlzNyRhZGRFZGl0Rm9ybS50ZWwsIHRlbCA9IF90aGlzNyRhZGRFZGl0Rm9ybSR0ZSA9PT0gdm9pZCAwID8gJycgOiBfdGhpczckYWRkRWRpdEZvcm0kdGUsIF90aGlzNyRhZGRFZGl0Rm9ybSRvdSA9IF90aGlzNyRhZGRFZGl0Rm9ybS5vdXRDb21wYW55TmFtZSwgb3V0Q29tcGFueU5hbWUgPSBfdGhpczckYWRkRWRpdEZvcm0kb3UgPT09IHZvaWQgMCA/ICcnIDogX3RoaXM3JGFkZEVkaXRGb3JtJG91LCBfdGhpczckYWRkRWRpdEZvcm0kb3UyID0gX3RoaXM3JGFkZEVkaXRGb3JtLm91dENvbXBhbnlJZCwgb3V0Q29tcGFueUlkID0gX3RoaXM3JGFkZEVkaXRGb3JtJG91MiA9PT0gdm9pZCAwID8gJycgOiBfdGhpczckYWRkRWRpdEZvcm0kb3UyLCBfdGhpczckYWRkRWRpdEZvcm0kdGUyID0gX3RoaXM3JGFkZEVkaXRGb3JtLnRlYW1JZCwgdGVhbUlkID0gX3RoaXM3JGFkZEVkaXRGb3JtJHRlMiA9PT0gdm9pZCAwID8gJycgOiBfdGhpczckYWRkRWRpdEZvcm0kdGUyLCBhZGRFZGl0Rm9ybSA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpczckYWRkRWRpdEZvcm0sIF9leGNsdWRlZDIpOwogICAgICAgICAgICAgICAgY29tcGFueUluZm8gPSBfdGhpczcuY29tcGFueU9wdGlvbnMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmlkID09PSBvdXRDb21wYW55SWQ7CiAgICAgICAgICAgICAgICB9KVswXTsKICAgICAgICAgICAgICAgIHRlYW1JbmZvID0gX3RoaXM3LnRlYW1PcHRpb25zLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gdGVhbUlkOwogICAgICAgICAgICAgICAgfSlbMF07CiAgICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDk7CiAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDEyOwogICAgICAgICAgICAgICAgcmV0dXJuIG15SW50ZXJGYWNlKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgYWRkRWRpdEZvcm0pLCB7fSwgewogICAgICAgICAgICAgICAgICB0ZWw6IHRlbCwKICAgICAgICAgICAgICAgICAgYWNjb3VudDogYWNjb3VudCwKICAgICAgICAgICAgICAgICAgLy8gb3V0Q29tcGFueU5hbWU6IGNvbXBhbnlJbmZvLm5hbWUsCiAgICAgICAgICAgICAgICAgIG91dENvbXBhbnlJZDogb3V0Q29tcGFueUlkLAogICAgICAgICAgICAgICAgICB0ZWFtSWQ6IHRlYW1JZAogICAgICAgICAgICAgICAgICAvLyB0ZWFtTmFtZTogdGVhbUluZm8ubmFtZQogICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICBfeWllbGQkbXlJbnRlckZhY2UgPSBfY29udGV4dDUuc2VudDsKICAgICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJG15SW50ZXJGYWNlLnN0YXRlOwogICAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRteUludGVyRmFjZS5tZXNzYWdlOwogICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBfdGhpczcuaWQgPyAn57yW6L6RJyA6ICfmlrDlop4nOwogICAgICAgICAgICAgICAgICBfdGhpczcuJG1lc3NhZ2Uuc3VjY2VzcygiXHU1REUxXHU2N0U1XHU0RUJBXHU1NDU4Ii5jb25jYXQobWVzc2FnZSwgIlx1NjIxMFx1NTI5RiIpKTsKICAgICAgICAgICAgICAgICAgLy8gZGF0YS50ZWFtTmFtZSA9IHRoaXMuYWRkRWRpdEZvcm0udGVhbU5hbWUKICAgICAgICAgICAgICAgICAgX3RoaXM3LmNoYW5nZVBhZ2UoJ1RhYmxlUGFnZScsIF90aGlzNy5pZCA/ICdlZGl0JyA6ICdhZGQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAxNjsKICAgICAgICAgICAgICAgIF90aGlzNy5zYXZlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5maW5pc2goMTYpOwogICAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlNSwgbnVsbCwgW1s5LCwgMTYsIDE5XV0pOwogICAgICAgIH0pKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94LCBfeDIpIHsKICAgICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sCiAgICAvLyDlsZXnpLrlvLnlsYIKICAgIHNob3dEaWFsb2c6IGZ1bmN0aW9uIHNob3dEaWFsb2coZGlhbG9nTmFtZSkgewogICAgICBpZiAoIWRpYWxvZ05hbWUpIHJldHVybjsKICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgIH0sCiAgICAvLyDmlLnlj5jpobXpnaIKICAgIGNoYW5nZVBhZ2U6IGZ1bmN0aW9uIGNoYW5nZVBhZ2UoKSB7CiAgICAgIHZhciBwYWdlTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7CiAgICAgIHZhciB0eXBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnJzsKICAgICAgaWYgKCFwYWdlTmFtZSkgcmV0dXJuOwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VQYWdlJywgcGFnZU5hbWUsIGZ1bmN0aW9uIChfKSB7CiAgICAgICAgUHViU3ViLnB1Ymxpc2gocGFnZU5hbWUsIHsKICAgICAgICAgIHR5cGU6IHR5cGUKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMudHJlZVB1YlN1Yik7IC8vIOaWsOWinuWPlua2iOiuoumYhQogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrwogICAgUHViU3ViLnVuc3Vic2NyaWJlKHRoaXMucHViU3ViKTsKICB9Cn07"},null]}