{"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\\rescuePersonnelMgmt\\components\\TablePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\rescuePersonnelMgmt\\components\\TablePage\\index.vue","mtime":1752055336202},{"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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL3hjanktZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmpvaW4uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucmVkdWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgeyBnZXRTb3J0ZXJEaXJlY3Rpb24sIHJlZmluZVJlcXVlc3RCb2R5LCBzZXRRdWVyeVZhbHVlIH0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnOwppbXBvcnQgcGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvU3VwZXJQYWdpbmF0aW9uL2luZGV4LnZ1ZSc7CmltcG9ydCB7IFRhYmxlTWl4aW4gfSBmcm9tICdAL21peGlucy90YWJsZU1peGluJzsKaW1wb3J0IHRyZWVTaWRlIGZyb20gJ0AvY29tcG9uZW50cy90cmVlU2lkZS9pbmRleC52dWUnOwppbXBvcnQgU2VhcmNoQ29tbW9uIGZyb20gJ0AvY29tcG9uZW50cy9TZWFyY2hDb21tb24vaW5kZXgudnVlJzsKaW1wb3J0IHsgdGFibGVEYXRhLCB0YWJsZURhdGEgYXMgdGVhbURhdGEsIHRhYmxlRGVsZXRlIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvcmVzY3VlUGVyc29ubmVsTWdtdCc7CmltcG9ydCBQdWJTdWIgZnJvbSAncHVic3ViLWpzJzsKaW1wb3J0IHsgZGljdGlvbmFyeUVzY2FwZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeSc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyBjb21wYW55RGF0YSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL291dHNvdXJjaW5nQ29tcGFueU1nbXQnOwppbXBvcnQgeyBnZXRUcmVlIH0gZnJvbSAnQC9hcGkvdHJlZSc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnVGFibGVQYWdlJywKICBjb21wb25lbnRzOiB7CiAgICBwYWdpbmF0aW9uOiBwYWdpbmF0aW9uLAogICAgdHJlZVNpZGU6IHRyZWVTaWRlLAogICAgU2VhcmNoQ29tbW9uOiBTZWFyY2hDb21tb24KICB9LAogIG1peGluczogW1RhYmxlTWl4aW5dLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBpc0FkZERpc2FibGVkOiB0cnVlLAogICAgICBwdWJTdWI6IG51bGwsCiAgICAgIHRhYmxlTWF4SGVpZ2h0OiAnNjAwcHgnLAogICAgICB0YWJsZUxvYWRpbmc6IHRydWUsCiAgICAgIHRyZWVMb2FkaW5nOiB0cnVlLAogICAgICBidG5Mb2FkaW5nOiBmYWxzZSwKICAgICAgdHJlZURhdGE6IFtdLAogICAgICAvL+W3pui+ueagkQogICAgICB0YWJMaXN0OiBbJ+aUv+etluazleinhCddLAogICAgICAvL+W3pui+uXRhYgogICAgICBkZWZhdWx0UHJvcHM6IHsKICAgICAgICBjaGlsZHJlbjogJ2NoaWxkcmVuJywKICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgIH0sCiAgICAgIHRhYmxlRGF0YTogW10sCiAgICAgIG9wdGlvbkxpc3Q6IFt7CiAgICAgICAgdGl0bGU6ICfpmJ/lkZjlp5PlkI0nLAogICAgICAgIHByb3A6ICd0bS5uYW1lXycsCiAgICAgICAgdHlwZTogJ2lucHV0JywKICAgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+aJi+acuuWPtycsCiAgICAgICAgcHJvcDogJyB0bS50ZWxfJywKICAgICAgICB0eXBlOiAnaW5wdXQnLAogICAgICAgIGRlZmF1bHQ6IHRydWUKICAgICAgfQogICAgICAvLyB7dGl0bGU6ICfotKblj7flkI3jgIHpmJ/lkZjlp5PlkI3jgIHmiYvmnLrlj7cnLCBwcm9wOiBbJ2FjY291bnQnLCAnbmFtZScsICd0ZWwnXSwgdHlwZTogJ2lucHV0JywgZGVmYXVsdDogdHJ1ZX0sCiAgICAgIC8vIHt0aXRsZTogJ+i6q+S7veivgeWPtycsIHByb3A6ICdjb2RlJywgdHlwZTogJ2lucHV0J30KICAgICAgLy8ge3RpdGxlOiAn5aSW5YyF5YWs5Y+4JywgcHJvcDogJ29jLm5hbWVfJywgdHlwZTogJ2lucHV0JywgZGVmYXVsdDogZmFsc2V9LAogICAgICAvLyB7dGl0bGU6ICflpJbljIXlhazlj7gnLCBwcm9wOiAnb3V0X2NvbXBhbnlfbmFtZV8nLCB0eXBlOiAnaW5wdXQnfSwKICAgICAgLy8gLy8ge3RpdGxlOiAn5Lq65ZGY57G75Z6LJywgcHJvcDogJ3R5cGUnLCB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCdyeWx4LXhjanlyeScpLCBtdWx0aXBsZTogZmFsc2V9LAogICAgICAvLyB7CiAgICAgIC8vICAgdGl0bGU6ICfkurrlkZjogYzliqEnLAogICAgICAvLyAgIHByb3A6ICd0bS5wb3N0XycsCiAgICAgIC8vICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgIC8vICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCdyeXp3LXhjanlyeScpLAogICAgICAvLyAgIG11bHRpcGxlOiBmYWxzZQogICAgICAvLyB9CiAgICAgIC8vIHt0aXRsZTogJ+S6uuWRmOiBjOWKoScsIHByb3A6ICd0bS5wb3N0XycsIHR5cGU6ICdpbnB1dCcsIGRlZmF1bHQ6IHRydWV9CiAgICAgIC8vIHt0aXRsZTogJ+aYr+WQpuWklua0vuS6uuWRmCcsIHByb3A6ICdpc091dCcsIHR5cGU6ICdzZWxlY3QnLCBvcHRpb246IGdldERpY3Rpb25hcnlCeUNvZGUoJ3NmcGonKSwgbXVsdGlwbGU6IGZhbHNlfQogICAgICBdLAogICAgICBwYXJhbXM6IHsKICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgcGFnZVNpemU6IDIwLAogICAgICAgICAgcGFnZTogMSwKICAgICAgICAgIHRvdGFsOiAwCiAgICAgICAgfSwKICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICBwcm9wZXJ0eTogJ3RtLnJvYWRfaWRfJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHByb3BlcnR5OiAndG0udHlwZV8nLAogICAgICAgICAgdmFsdWU6ICcyJwogICAgICAgIH0sCiAgICAgICAgLy8geyBvcGVyYXRpb246ICdMSUtFJywgcHJvcGVydHk6ICdURUFNX0ZVTExfSURfJyB9LAogICAgICAgIHsKICAgICAgICAgIGdyb3VwOiAnYWNjb3VudE5hbWVUZWwnLAogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICByZWxhdGlvbjogJ09SJywKICAgICAgICAgIHByb3BlcnR5OiAnYWNjb3VudCcKICAgICAgICB9LCB7CiAgICAgICAgICBncm91cDogJ2FjY291bnROYW1lVGVsJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0xJS0UnLAogICAgICAgICAgcmVsYXRpb246ICdPUicsCiAgICAgICAgICBwcm9wZXJ0eTogJ25hbWUnCiAgICAgICAgfSwgewogICAgICAgICAgZ3JvdXA6ICdhY2NvdW50TmFtZVRlbCcsCiAgICAgICAgICBvcGVyYXRpb246ICdMSUtFJywKICAgICAgICAgIHJlbGF0aW9uOiAnT1InLAogICAgICAgICAgcHJvcGVydHk6ICd0ZWwnCiAgICAgICAgfSwgewogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICBwcm9wZXJ0eTogJ2NvZGUnCiAgICAgICAgfSwgewogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICBwcm9wZXJ0eTogJ291dF9jb21wYW55X25hbWVfJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHByb3BlcnR5OiAndGVhbV9JZF8nCiAgICAgICAgfSwKICAgICAgICAvLyB7b3BlcmF0aW9uOiAnRVFVQUwnLCBwcm9wZXJ0eTogJ3R5cGUnfSwKICAgICAgICB7CiAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgICBwcm9wZXJ0eTogJ3Bvc3QnCiAgICAgICAgfSwgewogICAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLAogICAgICAgICAgcHJvcGVydHk6ICdpc091dCcKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdMSUtFJywKICAgICAgICAgIHByb3BlcnR5OiAndG0ubmFtZV8nCiAgICAgICAgfSwgewogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICBwcm9wZXJ0eTogJyB0bS50ZWxfJwogICAgICAgIH1dLAogICAgICAgIHNvcnRlcjogW3sKICAgICAgICAgIGRpcmVjdGlvbjogJycsCiAgICAgICAgICBwcm9wZXJ0eTogJ2FjY291bnQnCiAgICAgICAgfSwgewogICAgICAgICAgZGlyZWN0aW9uOiAnJywKICAgICAgICAgIHByb3BlcnR5OiAnbmFtZScKICAgICAgICB9LCB7CiAgICAgICAgICBkaXJlY3Rpb246ICcnLAogICAgICAgICAgcHJvcGVydHk6ICd0ZWwnCiAgICAgICAgfSwgewogICAgICAgICAgZGlyZWN0aW9uOiAnJywKICAgICAgICAgIHByb3BlcnR5OiAnaXNPdXQnCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgdHJlZUl0ZW06IHt9IC8vIOagkeW9ouiKgueCuemAieS4reWvueixoQogICAgfTsKICB9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgLy8g6I635Y+W5qCR5b2i55uu5b2VCiAgICB0aGlzLmdldE9yZ1RyZWVEYXRhKGZ1bmN0aW9uICh0cmVlRGF0YSkgewogICAgICAvLyDlm57osIPkuK3pu5jorqTpgInkuK3nrKzkuIDpobnlubblsIblhbZpZOS9nOS4uuWPguaVsOivt+axguihqOagvAogICAgICBfdGhpcy50cmVlSXRlbSA9IHRyZWVEYXRhWzBdIHx8IHt9OwogICAgICB2YXIgYXJyYXkgPSBbXTsKICAgICAgaWYgKF90aGlzLnRyZWVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsKICAgICAgICBhcnJheSA9IF90aGlzLmV4dHJhY3RJZHMoX3RoaXMudHJlZUl0ZW0pOwogICAgICB9CiAgICAgIC8vIOS7jui3r+eUseWPguaVsOS4reiOt+WPlnRlYW1JZAogICAgICB2YXIgdGVhbUlkID0gX3RoaXMuJHJvdXRlLnF1ZXJ5LnRlYW1JZDsKICAgICAgLy8g5aaC5p6c5pyJdGVhbUlk5Y+C5pWw77yM5YiZ5p+l5om+5a+55bqU55qE5qCR6IqC54K5CiAgICAgIC8vIGlmICh0ZWFtSWQpIHsKICAgICAgLy8gICBjb25zdCBmaW5kTm9kZSA9IHRoaXMuZmluZFRyZWVOb2RlKHRyZWVEYXRhLCB0ZWFtSWQpCiAgICAgIC8vICAgaWYgKGZpbmROb2RlKSB7CiAgICAgIC8vICAgICB0aGlzLnRyZWVJdGVtID0gZmluZE5vZGUKICAgICAgLy8gICAgIHRoaXMuJG5leHRUaWNrKF8gPT4gewogICAgICAvLyAgICAgICB0aGlzLiRyZWZzLnRyZWVTaWRlPy5zZXRDdXJyZW50S2V5KGZpbmROb2RlLmlkKQogICAgICAvLyAgICAgICB0aGlzLiRyZWZzLnRyZWVTaWRlPy5leHBhbmRIYW5kbGUodHJ1ZSwgMikKICAgICAgLy8gICAgIH0pCiAgICAgIC8vICAgICAvLyDorr7nva7mn6Xor6Llj4LmlbAKICAgICAgLy8gICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICd0bS5yb2FkX2lkXycsIFtmaW5kTm9kZS5pZF0pCiAgICAgIC8vICAgfQogICAgICAvLyB9IGVsc2UgewogICAgICAvLyDpu5jorqTpgInkuK3nrKzkuIDpobkKICAgICAgX3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgdmFyIF90aGlzJCRyZWZzJHRyZWVTaWRlLCBfdHJlZURhdGEkLCBfdGhpcyQkcmVmcyR0cmVlU2lkZTI7CiAgICAgICAgKF90aGlzJCRyZWZzJHRyZWVTaWRlID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUuc2V0Q3VycmVudEtleSgoX3RyZWVEYXRhJCA9IHRyZWVEYXRhWzBdKSA9PT0gbnVsbCB8fCBfdHJlZURhdGEkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHJlZURhdGEkLmlkKTsKICAgICAgICAoX3RoaXMkJHJlZnMkdHJlZVNpZGUyID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMiA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMi5leHBhbmRIYW5kbGUodHJ1ZSwgMik7CiAgICAgIH0pOwogICAgICBzZXRRdWVyeVZhbHVlKF90aGlzLnBhcmFtcywgJ3RtLnJvYWRfaWRfJywgYXJyYXkpOwogICAgICAvLyB9CiAgICAgIF90aGlzLmxvYWREYXRhKCk7CiAgICB9KTsKICAgIC8vIHRoaXMuZ2V0VGVhbURhdGEoKQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgdGhpcy5wdWJTdWIgPSBQdWJTdWIuc3Vic2NyaWJlKCdUYWJsZVBhZ2UnLCBmdW5jdGlvbiAoXywgZGF0YSkgewogICAgICBzd2l0Y2ggKGRhdGEudHlwZSkgewogICAgICAgIGNhc2UgJ2FkZCc6CiAgICAgICAgICBfdGhpczIuaGFuZGxlQ3VycmVudENoYW5nZSgxKTsKICAgICAgICAgIF90aGlzMi5wYXJhbXMucGFnZUJlYW4ucGFnZSA9IDE7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdlZGl0JzoKICAgICAgICAgIF90aGlzMi5sb2FkRGF0YSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0pOwogICAgdGhpcy5nZXRDb21wYW55YXRhKCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBleHRyYWN0SWRzOiBmdW5jdGlvbiBleHRyYWN0SWRzKG5vZGUpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHZhciBpZHMgPSBbXTsKICAgICAgLy8g5aaC5p6c5b2T5YmN6IqC54K55pyJIGNoaWxkcmVu77yM5YiZ6YCS5b2S5o+Q5Y+WCiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7CiAgICAgICAgaWRzID0gbm9kZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4gY2hpbGQuaWQ7CiAgICAgICAgfSk7IC8vIOaPkOWPluW9k+WJjeiKgueCueeahCBpZAogICAgICAgIC8vIOmAkuW9kuaPkOWPluWtkOiKgueCueeahCBpZAogICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIGlkcyA9IGlkcy5jb25jYXQoX3RoaXMzLmV4dHJhY3RJZHMoY2hpbGQpKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gaWRzOwogICAgfSwKICAgIC8vIOi+heWKqeaWueazle+8muWcqOagkeaVsOaNruS4reafpeaJvueJueWumuiKgueCuQogICAgZmluZFRyZWVOb2RlOiBmdW5jdGlvbiBmaW5kVHJlZU5vZGUodHJlZURhdGEsIGlkKSB7CiAgICAgIGNvbnNvbGUubG9nKHRyZWVEYXRhLCBpZCwgJzk5OTknKTsKICAgICAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRyZWVEYXRhKSwKICAgICAgICBfc3RlcDsKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykgewogICAgICAgICAgdmFyIG5vZGUgPSBfc3RlcC52YWx1ZTsKICAgICAgICAgIGlmIChub2RlLmlkID09PSBpZCkgcmV0dXJuIG5vZGU7CiAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikgewogICAgICAgICAgICB2YXIgZm91bmQgPSB0aGlzLmZpbmRUcmVlTm9kZShub2RlLmNoaWxkcmVuLCBpZCk7CiAgICAgICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgX2l0ZXJhdG9yLmUoZXJyKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBfaXRlcmF0b3IuZigpOwogICAgICB9CiAgICAgIHJldHVybiBudWxsOwogICAgfSwKICAgIG1hbmFnZXJDaGFuZ2U6IGZ1bmN0aW9uIG1hbmFnZXJDaGFuZ2UoaWQpIHsKICAgICAgcmV0dXJuIHRoaXMuY29tcGFueU9wdGlvbnMuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgPT09IGlkOwogICAgICB9KVswXS5uYW1lOwogICAgfSwKICAgIGdldENvbXBhbnlhdGE6IGZ1bmN0aW9uIGdldENvbXBhbnlhdGEoKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF95aWVsZCRjb21wYW55RGF0YSwgX3lpZWxkJGNvbXBhbnlEYXRhJHJvLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBjb21wYW55RGF0YSgpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJGNvbXBhbnlEYXRhID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkY29tcGFueURhdGEkcm8gPSBfeWllbGQkY29tcGFueURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJGNvbXBhbnlEYXRhJHJvID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRjb21wYW55RGF0YSRybzsKICAgICAgICAgICAgICBfdGhpczQuY29tcGFueU9wdGlvbnMgPSByb3dzOwogICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJvd3MsICflpJbljIXlhazlj7gnKTsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGRpY3Rpb25hcnlFc2NhcGU6IGRpY3Rpb25hcnlFc2NhcGUsCiAgICBnZXRTb3J0ZXJEaXJlY3Rpb246IGdldFNvcnRlckRpcmVjdGlvbiwKICAgIGdldFRlYW1EYXRhOiBmdW5jdGlvbiBnZXRUZWFtRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0ZWFtRGF0YSwgX3lpZWxkJHRlYW1EYXRhJHJvd3MsIHJvd3MsIHRlYW1JZDsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0ZWFtRGF0YSgpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHRlYW1EYXRhID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHRlYW1EYXRhJHJvd3MgPSBfeWllbGQkdGVhbURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHRlYW1EYXRhJHJvd3MgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHRlYW1EYXRhJHJvd3M7CiAgICAgICAgICAgICAgX3RoaXM1Lm9wdGlvbkxpc3RbM10ub3B0aW9uID0gcm93cy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgIGl0ZW0udmFsdWUgPSBpdGVtLmlkOwogICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgdGVhbUlkID0gX3RoaXM1LiRyb3V0ZS5xdWVyeS50ZWFtSWQ7CiAgICAgICAgICAgICAgaWYgKHRlYW1JZCkgewogICAgICAgICAgICAgICAgX3RoaXM1LnBhcmFtcy5xdWVyeXNbNV0udmFsdWUgPSB0ZWFtSWQ7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzNS4kbmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgX3RoaXM1LmxvYWREYXRhKCk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMik7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOiOt+WPluWFrOWPuOagkQogICAgZ2V0T3JnVHJlZURhdGE6IGZ1bmN0aW9uIGdldE9yZ1RyZWVEYXRhKGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHZhciBfeWllbGQkZ2V0VHJlZSwgdmFsdWU7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMDsKICAgICAgICAgICAgICBfdGhpczYudHJlZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gZ2V0VHJlZSgpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJGdldFRyZWUgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICB2YWx1ZSA9IF95aWVsZCRnZXRUcmVlLnZhbHVlOwogICAgICAgICAgICAgIF90aGlzNi50cmVlRGF0YSA9IFt2YWx1ZV07CgogICAgICAgICAgICAgIC8vIOWmguaenOaciei3r+eUseWPguaVsO+8jOWcqOagkeWKoOi9veWujOaIkOWQjuiHquWKqOmAieS4reWvueW6lOiKgueCuQogICAgICAgICAgICAgIC8vIGNvbnN0IHt0ZWFtSWR9ID0gdGhpcy4kcm91dGUucXVlcnkKICAgICAgICAgICAgICAvLyBpZiAodGVhbUlkKSB7CiAgICAgICAgICAgICAgLy8gICBjb25zdCBmaW5kTm9kZSA9IHRoaXMuZmluZFRyZWVOb2RlKHRoaXMudHJlZURhdGEsIHRlYW1JZCkKICAgICAgICAgICAgICAvLyAgIGlmIChmaW5kTm9kZSkgewogICAgICAgICAgICAgIC8vICAgICB0aGlzLnRyZWVJdGVtID0gZmluZE5vZGUKICAgICAgICAgICAgICAvLyAgICAgdGhpcy4kbmV4dFRpY2soXyA9PiB7CiAgICAgICAgICAgICAgLy8gICAgICAgdGhpcy4kcmVmcy50cmVlU2lkZT8uc2V0Q3VycmVudEtleShmaW5kTm9kZS5pZCkKICAgICAgICAgICAgICAvLyAgICAgICB0aGlzLiRyZWZzLnRyZWVTaWRlPy5leHBhbmRIYW5kbGUodHJ1ZSwgMikKICAgICAgICAgICAgICAvLyAgICAgfSkKICAgICAgICAgICAgICAvLyAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3RtLnJvYWRfaWRfJywgW2ZpbmROb2RlLmlkXSkKICAgICAgICAgICAgICAvLyAgIH0KICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDc7CiAgICAgICAgICAgICAgX3RoaXM2LnRyZWVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soX3RoaXM2LnRyZWVEYXRhKTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmZpbmlzaCg3KTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMywgbnVsbCwgW1swLCwgNywgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHRyYW5zZm9ybVRyZWVEYXRhOiBmdW5jdGlvbiB0cmFuc2Zvcm1UcmVlRGF0YShkYXRhKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgbmFtZTogZGF0YS5uYW1lLAogICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgIGNoaWxkcmVuOiBkYXRhLmNoaWxkcmVuLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjaGlsZCkgewogICAgICAgICAgYWNjLnB1c2goewogICAgICAgICAgICBpZDogY2hpbGQuaWQsCiAgICAgICAgICAgIG5hbWU6IGNoaWxkLm5hbWUsCiAgICAgICAgICAgIHBhdGg6IGNoaWxkLnBhdGgsCiAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZC5yb2FkTGlzdC5tYXAoZnVuY3Rpb24gKHJvYWQpIHsKICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgaWQ6IHJvYWQuaWQsCiAgICAgICAgICAgICAgICBuYW1lOiByb2FkLm5hbWUsCiAgICAgICAgICAgICAgICBwYXRoOiByb2FkLnBhdGgKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KQogICAgICAgICAgfSk7CiAgICAgICAgICByZXR1cm4gYWNjOwogICAgICAgIH0sIFtdKQogICAgICB9OwogICAgfSwKICAgIC8v5bem6L655qCR6IqC54K5CiAgICBjdXJyZW50Q2hhbmdlOiBmdW5jdGlvbiBjdXJyZW50Q2hhbmdlKG5vZGVJdGVtKSB7CiAgICAgIGlmIChub2RlSXRlbS5pZCA9PT0gJzE3NjYwMTc0Njg0NDQ0NTA4MTYnKSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gdHJ1ZTsKICAgICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAndG0ucm9hZF9pZF8gJywgdGhpcy5leHRyYWN0SWRzKG5vZGVJdGVtKSk7CiAgICAgIH0gZWxzZSBpZiAobm9kZUl0ZW0uY2hpbGRyZW4gJiYgbm9kZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGFycmF5ID0gbm9kZUl0ZW0uY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgICB9KTsKICAgICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAndG0ucm9hZF9pZF8gJywgYXJyYXkpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IGZhbHNlOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICd0bS5yb2FkX2lkXyAnLCBbbm9kZUl0ZW0gPT09IG51bGwgfHwgbm9kZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVJdGVtLmlkXSB8fCBbXSk7CiAgICAgIH0KCiAgICAgIC8vIGlmIChub2RlSXRlbS5jaGlsZHJlbiAmJiBub2RlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgIC8vICAgdGhpcy5pc0FkZERpc2FibGVkID0gdHJ1ZSAvLyDnpoHnlKjmlrDlop7mjInpkq4KICAgICAgLy8gICBjb25zdCBhcnJheSA9IG5vZGVJdGVtLmNoaWxkcmVuLm1hcChpdGVtID0+IGl0ZW0uaWQpCiAgICAgIC8vICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3RtLnJvYWRfaWRfJywgYXJyYXkpCiAgICAgIC8vICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nkuoznuqfnm67lvZXov5vooYzmlrDlop7mk43kvZwnKQogICAgICAvLyB9IGVsc2UgewogICAgICAvLyAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IGZhbHNlIC8vIOWQr+eUqOaWsOWinuaMiemSrgogICAgICAvLyAgIC8vIOS/ruaUueWvueW6lOeahOWtl+auteWAvAogICAgICAvLyAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICd0bS5yb2FkX2lkXycsIFtub2RlSXRlbT8uaWRdIHx8IFtdKQogICAgICAvLyB9CiAgICAgIHRoaXMudHJlZUl0ZW0gPSBub2RlSXRlbSB8fCB7fTsKICAgICAgLy8g5L+u5pS55a+55bqU55qE5a2X5q615YC8CiAgICAgIHRoaXMuY2FsY1RhYmxlSGVpZ2h0KDUwMCk7CgogICAgICAvLyDmm7TmlrBVUkzkuK3nmoR0ZWFtSWTlj4LmlbDvvIzkvYbkuI3op6blj5HpobXpnaLliLfmlrAKICAgICAgLy8gdGhpcy4kcm91dGVyLnJlcGxhY2UoewogICAgICAvLyAgIHF1ZXJ5OiB7CiAgICAgIC8vICAgICAuLi50aGlzLiRyb3V0ZS5xdWVyeSwKICAgICAgLy8gICAgIHRlYW1JZDogbm9kZUl0ZW0/LmlkIHx8ICcnCiAgICAgIC8vICAgfQogICAgICAvLyB9KQoKICAgICAgUHViU3ViLnB1Ymxpc2goJ1RyZWVJdGVtU2VsZWN0ZWQnLCB7CiAgICAgICAgaWQ6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0uaWQpIHx8ICcnLAogICAgICAgIG5hbWU6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0ubmFtZSkgfHwgJycsCiAgICAgICAgcGF0aDogKG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5wYXRoKSB8fCAnJywKICAgICAgICBvcmdJZDogKG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5vcmdJZCkgfHwgJycKICAgICAgfSk7CiAgICAgIHRoaXMucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9LAogICAgLy/ojrflj5bmlbDmja4KICAgIGxvYWREYXRhOiBmdW5jdGlvbiBsb2FkRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0YWJsZURhdGEsIF95aWVsZCR0YWJsZURhdGEkdG90YSwgdG90YWwsIF95aWVsZCR0YWJsZURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAwOwogICAgICAgICAgICAgIF90aGlzNy50YWJsZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gdGFibGVEYXRhKHJlZmluZVJlcXVlc3RCb2R5KF90aGlzNy5wYXJhbXMpKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhJHRvdGEgPSBfeWllbGQkdGFibGVEYXRhLnRvdGFsOwogICAgICAgICAgICAgIHRvdGFsID0gX3lpZWxkJHRhYmxlRGF0YSR0b3RhID09PSB2b2lkIDAgPyAwIDogX3lpZWxkJHRhYmxlRGF0YSR0b3RhOwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEkcm93cyA9IF95aWVsZCR0YWJsZURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHRhYmxlRGF0YSRyb3dzID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCR0YWJsZURhdGEkcm93czsKICAgICAgICAgICAgICBfdGhpczcucGFyYW1zLnBhZ2VCZWFuLnRvdGFsID0gdG90YWw7CiAgICAgICAgICAgICAgX3RoaXM3LnRhYmxlRGF0YSA9IHJvd3MubWFwKGZ1bmN0aW9uIChyb3cpIHsKICAgICAgICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJvdyksIHt9LCB7CiAgICAgICAgICAgICAgICAgIHJvYWROYW1lOiByb3cucm9hZE5hbWUgfHwgX3RoaXM3LnRyZWVJdGVtLm5hbWUgLy8g5aaC5p6cIHJvdy5vcmdOYW1lIOS4uuepuu+8jOS9v+eUqCB0cmVlSXRlbS5uYW1lCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDExOwogICAgICAgICAgICAgIF90aGlzNy50YWJsZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LmZpbmlzaCgxMSk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQsIG51bGwsIFtbMCwsIDExLCAxNF1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy/lj4zlh7vkv67mlLkKICAgIGhhbmRsZURiQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZURiQ2xpY2socm93KSB7CiAgICAgIGlmICh0aGlzLmNsaWNrVGltZXIpIHJldHVybiB0aGlzLmNsaWNrVGltZXIgPSBmYWxzZTsKICAgICAgLy8g56Gu5L+dIHJvdyDkuK3ljIXlkKsgb3JnTmFtZQogICAgICB2YXIgcGF5bG9hZCA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcm93KSwge30sIHsKICAgICAgICByb2FkTmFtZTogcm93LnJvYWROYW1lIHx8IHRoaXMudHJlZUl0ZW0ubmFtZSwKICAgICAgICAvLyDlpoLmnpwgcm93Lm9yZ05hbWUg5Li656m677yM5L2/55SoIHRyZWVJdGVtLm5hbWUKICAgICAgICByb2FkSWQ6IHJvdy5yb2FkSWQgfHwgdGhpcy50cmVlSXRlbS5pZCAvLyDlpoLmnpwgcm93LnRlYW1JZCDkuLrnqbrvvIzkvb/nlKggdHJlZUl0ZW0uaWQKICAgICAgfSk7CiAgICAgIHRoaXMuY2hhbmdlUGFnZSgnRWRpdEFkZFBhZ2UnLCBwYXlsb2FkKTsKICAgIH0sCiAgICAvLyDliKDpmaQKICAgIGhhbmRsZURlbGV0ZTogZnVuY3Rpb24gaGFuZGxlRGVsZXRlKHJvdykgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgdGhpcy5jbGlja1RpbWVyID0gdHJ1ZTsKICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoXykgewogICAgICAgIHJldHVybiBfdGhpczguY2xpY2tUaW1lciA9IGZhbHNlOwogICAgICB9KTsKICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5Yig6Zmk6YCJ5Lit55qE5beh5qOA5pWR5o+06Zif5ZGY5ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgaWRzLCBfeWllbGQkdGFibGVEZWxldGUsIHN0YXRlLCBfdGhpczgkcGFyYW1zJHBhZ2VCZWEsIHBhZ2UsIHBhZ2VTaXplLCB0b3RhbCwgdG90YWxQYWdlczsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM4LmJ0bkxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIGlkcyA9IHJvdyA/IHJvdy5pZCA6IF90aGlzOC5jdXJyZW50RGF0YURlbC5qb2luKCk7CiAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAyOwogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gdGFibGVEZWxldGUoaWRzKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURlbGV0ZSA9IF9jb250ZXh0NS5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJHRhYmxlRGVsZXRlLnN0YXRlOwogICAgICAgICAgICAgIGlmICghc3RhdGUpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMTQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXM4LiRtZXNzYWdlLnN1Y2Nlc3MoIlx1NURFMVx1NjhDMFx1NjU1MVx1NjNGNFx1OTYxRlx1NTQ1OFx1NTIyMFx1OTY2NFx1NjIxMFx1NTI5RiIpOwogICAgICAgICAgICAgIF90aGlzOCRwYXJhbXMkcGFnZUJlYSA9IF90aGlzOC5wYXJhbXMucGFnZUJlYW4sIHBhZ2UgPSBfdGhpczgkcGFyYW1zJHBhZ2VCZWEucGFnZSwgcGFnZVNpemUgPSBfdGhpczgkcGFyYW1zJHBhZ2VCZWEucGFnZVNpemUsIHRvdGFsID0gX3RoaXM4JHBhcmFtcyRwYWdlQmVhLnRvdGFsOwogICAgICAgICAgICAgIHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodG90YWwgLyBwYWdlU2l6ZSk7IC8vIOiuoeeul+aAu+mhteaVsAogICAgICAgICAgICAgIGlmICh0b3RhbFBhZ2VzID4gMSAmJiBwYWdlID09PSB0b3RhbFBhZ2VzKSB7CiAgICAgICAgICAgICAgICBpZiAoX3RoaXM4LnRhYmxlRGF0YS5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgICAgLy8g5b2T5YmN6aG15Y+q5pyJ5LiA5p2h5pWw5o2uCiAgICAgICAgICAgICAgICAgIF90aGlzOC5wYXJhbXMucGFnZUJlYW4ucGFnZSAtPSAxOyAvLyDov5Tlm57liY3kuIDpobUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxNDsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM4LmxvYWREYXRhKCk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAxNDsKICAgICAgICAgICAgICBfdGhpczguYnRuTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuZmluaXNoKDE0KTsKICAgICAgICAgICAgY2FzZSAxNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSwgbnVsbCwgW1syLCwgMTQsIDE3XV0pOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF87CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOaUueWPmOmhtemdogogICAgY2hhbmdlUGFnZTogZnVuY3Rpb24gY2hhbmdlUGFnZSgpIHsKICAgICAgdmFyIHBhZ2VOYW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnJzsKICAgICAgdmFyIHJvdyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307CiAgICAgIGlmICghcGFnZU5hbWUpIHJldHVybjsKICAgICAgLy8g5Lyg6YCS5b2T5YmN6YCJ5Lit55qE5qCR6IqC54K55L+h5oGvCiAgICAgIHZhciBwYXlsb2FkID0gcm93LmlkID8gcm93IDogewogICAgICAgIGNhdGFsb2dJZDogdGhpcy50cmVlSXRlbS5pZCwKICAgICAgICByb2FkTmFtZTogdGhpcy50cmVlSXRlbS5uYW1lLAogICAgICAgIHBhdGg6IHRoaXMudHJlZUl0ZW0ucGF0aCwKICAgICAgICByb2FkSWQ6IHRoaXMudHJlZUl0ZW0uaWQsCiAgICAgICAgLy8g56Gu5L+d5Lyg6YCSIHRlYW1JZAogICAgICAgIGNsZWFyRm9ybTogdHJ1ZSwKICAgICAgICAvLyDmuIXnqbrooajljZXmoIflv5cKICAgICAgICB0cmVlSXRlbTogdGhpcy50cmVlSXRlbQogICAgICB9OwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VQYWdlJywgcGFnZU5hbWUsIGZ1bmN0aW9uIChfKSB7CiAgICAgICAgUHViU3ViLnB1Ymxpc2gocGFnZU5hbWUsIHBheWxvYWQpOwogICAgICB9LCByb3cuaWQgPyAn57yW6L6RJyA6ICfmt7vliqAnKTsKICAgIH0KICB9LAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICAvLyDlnKjnu4Tku7bplIDmr4HkuYvliY0g5riF6Zmk6K6i6ZiF5raI5oGvCiAgICBQdWJTdWIudW5zdWJzY3JpYmUodGhpcy5wdWJTdWIpOwogIH0KfTs="},null]}