{"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\\bindCar\\components\\TablePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\bindCar\\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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnJlZHVjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IHJlZmluZVJlcXVlc3RCb2R5LCBzZXRRdWVyeVZhbHVlIH0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnOwppbXBvcnQgcGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvU3VwZXJQYWdpbmF0aW9uL2luZGV4LnZ1ZSc7CmltcG9ydCB7IFRhYmxlTWl4aW4gfSBmcm9tICdAL21peGlucy90YWJsZU1peGluJzsKaW1wb3J0IHRyZWVTaWRlIGZyb20gJ0AvY29tcG9uZW50cy90cmVlU2lkZS9pbmRleC52dWUnOwppbXBvcnQgU2VhcmNoQ29tbW9uIGZyb20gJ0AvY29tcG9uZW50cy9TZWFyY2hDb21tb24vaW5kZXgudnVlJzsKaW1wb3J0IHsgZ2V0VHJlZSwgdGFibGVEYXRhLCB0YWJsZURlbGV0ZSwgdHJlZURlbGV0ZSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2JpbmRDYXInOwppbXBvcnQgUHViU3ViIGZyb20gJ3B1YnN1Yi1qcyc7CmltcG9ydCB7IGRpY3Rpb25hcnlFc2NhcGUsIGdldERpY3Rpb25hcnlCeUNvZGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnknOwovLyDot6/mrrUKaW1wb3J0IHsgdGFibGVEYXRhIGFzIGxvYWRSb2FkIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvcm9hZFNlY3Rpb25JbmZvJzsKaW1wb3J0IENhckNob2ljZURpYWxvZyBmcm9tICdAL3ZpZXdzL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2JpbmRDYXIvY29tcG9uZW50cy9DYXJDaG9pY2VEaWFsb2cvaW5kZXgudnVlJzsKLy8g5pWR5o+054K5CmltcG9ydCB7IHRhYmxlRGF0YSBhcyByZXNjdWVQb2ludCB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3Jlc2N1ZVNpdGVNZ210JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdUYWJsZVBhZ2UnLAogIGNvbXBvbmVudHM6IHsKICAgIENhckNob2ljZURpYWxvZzogQ2FyQ2hvaWNlRGlhbG9nLAogICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvbiwKICAgIHRyZWVTaWRlOiB0cmVlU2lkZSwKICAgIFNlYXJjaENvbW1vbjogU2VhcmNoQ29tbW9uCiAgfSwKICBtaXhpbnM6IFtUYWJsZU1peGluXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgYWRkRWRpdEZvcm06IHsKICAgICAgICBjYXI6IHt9CiAgICAgIH0sCiAgICAgIGNhckRhdGE6IFtdLAogICAgICBjYXJDaG9pY2VEaWFsb2c6IGZhbHNlLAogICAgICBpc0FkZERpc2FibGVkOiB0cnVlLAogICAgICAvLyDmlrDlop7mjInpkq7mmK/lkKbnpoHnlKgKICAgICAgcHViU3ViOiBudWxsLAogICAgICB0YWJsZU1heEhlaWdodDogJzYwMHB4JywKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIHRyZWVMb2FkaW5nOiB0cnVlLAogICAgICB0YWJsZUxvYWRpbmc6IGZhbHNlLAogICAgICB0cmVlRGF0YTogW10sCiAgICAgIC8v5bem6L655qCRCiAgICAgIHRhYkxpc3Q6IFsn6KGM5pS/57u05bqmJ10sCiAgICAgIC8v5bem6L65dGFiCiAgICAgIGRlZmF1bHRQcm9wczogewogICAgICAgIGNoaWxkcmVuOiAnY2hpbGRyZW4nLAogICAgICAgIGxhYmVsOiAnbmFtZScKICAgICAgfSwKICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgY3VycmVudERhdGFEZWw6IFtdLAogICAgICBvcHRpb25MaXN0OiBbewogICAgICAgIHRpdGxlOiAn6L2m54mM5Y+35oiW6L2m6L6G5ZOB54mMJywKICAgICAgICBwcm9wOiBbJ2Nhcl9OdW1iZXJfJywgJ2Nhcl9CcmFuZF8nXSwKICAgICAgICB0eXBlOiAnaW5wdXQnLAogICAgICAgIGRlZmF1bHQ6IHRydWUKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn6L2m6L6G57G75YirJywKICAgICAgICBwcm9wOiAnY2FyX0NsYXNzXycsCiAgICAgICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCdqeWNsLWNsbHgnKSwKICAgICAgICBtdWx0aXBsZTogdHJ1ZQogICAgICB9XSwKICAgICAgcGFyYW1zOiB7CiAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgIHBhZ2VTaXplOiAyMCwKICAgICAgICAgIHBhZ2U6IDEsCiAgICAgICAgICB0b3RhbDogMAogICAgICAgIH0sCiAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgb3BlcmF0aW9uOiAnSU4nLAogICAgICAgICAgcHJvcGVydHk6ICd0Yy50ZWFtX2lkXycKICAgICAgICB9LCB7CiAgICAgICAgICBncm91cDogJ3F1aWNrJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0xJS0UnLAogICAgICAgICAgcmVsYXRpb246ICdPUicsCiAgICAgICAgICBwcm9wZXJ0eTogJ2Nhcl9OdW1iZXJfJwogICAgICAgIH0sIHsKICAgICAgICAgIGdyb3VwOiAncXVpY2snLAogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICByZWxhdGlvbjogJ09SJywKICAgICAgICAgIHByb3BlcnR5OiAnY2FyX0JyYW5kXycKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICBwcm9wZXJ0eTogJ2Nhcl9DbGFzc18nCiAgICAgICAgfV0sCiAgICAgICAgc29ydGVyOiBbewogICAgICAgICAgZGlyZWN0aW9uOiAnREVTQycsCiAgICAgICAgICBwcm9wZXJ0eTogJ2J1eURhdGUnCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgdHJlZURpYWxvZzogZmFsc2UsCiAgICAgIC8vIOenkeebruS/oeaBr+W8ueWxggogICAgICB0cmVlSXRlbUlkOiAnJywKICAgICAgLy8g5qCR5b2i55uu5b2VaWQKICAgICAgdHJlZUl0ZW06IHt9LAogICAgICAvLyDmoJHlvaLoioLngrnpgInkuK3lr7nosaEKICAgICAgdHJlZUl0ZW1QYXJlbnRJZDogJycsCiAgICAgIC8vIOagkeW9ouebruW9leeItue6p2lkCiAgICAgIHJlc2N1ZVBvaW50T3B0aW9uczogW10sCiAgICAgIHJvYWRPcHRpb25zOiBbXQogICAgfTsKICB9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgLy8g6I635Y+W5qCR5b2i55uu5b2VLQogICAgdGhpcy5nZXRPcmdUcmVlRGF0YShmdW5jdGlvbiAodHJlZURhdGEpIHsKICAgICAgLy8g5Zue6LCD5Lit6buY6K6k6YCJ5Lit56ys5LiA6aG55bm25bCG5YW2aWTkvZzkuLrlj4LmlbDor7fmsYLooajmoLwKICAgICAgX3RoaXMudHJlZUl0ZW0gPSB0cmVlRGF0YVswXSB8fCB7fTsKICAgICAgdmFyIGFycmF5ID0gW107CiAgICAgIGlmIChfdGhpcy50cmVlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgYXJyYXkgPSBfdGhpcy5leHRyYWN0SWRzKF90aGlzLnRyZWVJdGVtKTsKICAgICAgfQogICAgICBfdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICB2YXIgX3RoaXMkJHJlZnMkdHJlZVNpZGUsIF90cmVlRGF0YSQsIF90aGlzJCRyZWZzJHRyZWVTaWRlMjsKICAgICAgICAoX3RoaXMkJHJlZnMkdHJlZVNpZGUgPSBfdGhpcy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUgPT09IHZvaWQgMCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZS5zZXRDdXJyZW50S2V5KChfdHJlZURhdGEkID0gdHJlZURhdGFbMF0pID09PSBudWxsIHx8IF90cmVlRGF0YSQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90cmVlRGF0YSQuaWQpOyAvL+mAmui/hyAkcmVmcyDojrflj5Z0cmVlU2lkZee7hOS7tuW8leeUqO+8jOW5tuiwg+eUqCBzZXRDdXJyZW50S2V55pa55rOV6K6+572u5b2T5YmN6YCJ5Lit55qE5qCR6IqC54K544CCCiAgICAgICAgKF90aGlzJCRyZWZzJHRyZWVTaWRlMiA9IF90aGlzLiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZTIgPT09IHZvaWQgMCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZTIuZXhwYW5kSGFuZGxlKHRydWUsIDIpOwogICAgICB9KTsKICAgICAgc2V0UXVlcnlWYWx1ZShfdGhpcy5wYXJhbXMsICd0Yy50ZWFtX2lkXycsIGFycmF5KTsgLy/lsIbpgInkuK3nmoTmoJHoioLngrnnmoQgcGF0aCDorr7nva7kuLrmn6Xor6Llj4LmlbDnmoTkuIDpg6jliIbvvIznlKjkuo7lkI7nu63nmoTooajmoLzmlbDmja7or7fmsYLjgIIKICAgICAgX3RoaXMubG9hZERhdGEoKTsgLy/liqDovb3ooajmoLzmlbDmja4KICAgIH0pOwogICAgdGhpcy5sb2FkUm9hZERhdGEoKTsKICAgIHRoaXMubG9hZFJlc2N1ZVBvaW50RGF0YSgpOwogICAgLy8gdGhpcy5sb2FkRGF0YSgpCiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICB0aGlzLnB1YlN1YiA9IFB1YlN1Yi5zdWJzY3JpYmUoJ1RhYmxlUGFnZScsIGZ1bmN0aW9uIChfLCBkYXRhKSB7CiAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7CiAgICAgICAgY2FzZSAnYWRkJzoKICAgICAgICAgIF90aGlzMi5wYXJhbXMucGFnZUJlYW4ucGFnZSA9IDE7CiAgICAgICAgICBfdGhpczIubG9hZERhdGEoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2VkaXQnOgogICAgICAgICAgX3RoaXMyLmxvYWREYXRhKCk7CiAgICAgICAgICBicmVhazsKICAgICAgfQogICAgfSk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBleHRyYWN0SWRzOiBmdW5jdGlvbiBleHRyYWN0SWRzKG5vZGUpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHZhciBpZHMgPSBbXTsKICAgICAgLy8g5aaC5p6c5b2T5YmN6IqC54K55pyJIGNoaWxkcmVu77yM5YiZ6YCS5b2S5o+Q5Y+WCiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7CiAgICAgICAgaWRzID0gbm9kZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7CiAgICAgICAgICByZXR1cm4gY2hpbGQuaWQ7CiAgICAgICAgfSk7IC8vIOaPkOWPluW9k+WJjeiKgueCueeahCBpZAogICAgICAgIC8vIOmAkuW9kuaPkOWPluWtkOiKgueCueeahCBpZAogICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIGlkcyA9IGlkcy5jb25jYXQoX3RoaXMzLmV4dHJhY3RJZHMoY2hpbGQpKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gaWRzOwogICAgfSwKICAgIC8vIOiOt+WPluWFrOWPuOagkS3lvILmraXmlrnms5XvvIznlKjkuo7ku47lkI7nq6/ojrflj5bmoJHlvaLmlbDmja4KICAgIGdldE9yZ1RyZWVEYXRhOiBmdW5jdGlvbiBnZXRPcmdUcmVlRGF0YShjYWxsYmFjaykgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkZ2V0VHJlZSwgdmFsdWU7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDA7CiAgICAgICAgICAgICAgX3RoaXM0LnRyZWVMb2FkaW5nID0gdHJ1ZTsgLy/lvIDlp4vliqDovb3ml7bmmL7npLrliqDovb3nirbmgIEKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gZ2V0VHJlZSgpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJGdldFRyZWUgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJGdldFRyZWUudmFsdWU7CiAgICAgICAgICAgICAgLy8g6LCD55SoIEFQSSDojrflj5bmoJHlvaLmlbDmja4KICAgICAgICAgICAgICBfdGhpczQudHJlZURhdGEgPSBbX3RoaXM0LnRyYW5zZm9ybVRyZWVEYXRhKHZhbHVlKV07CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gNzsKICAgICAgICAgICAgICBfdGhpczQudHJlZUxvYWRpbmcgPSBmYWxzZTsgLy8g5peg6K665oiQ5Yqf5oiW5aSx6LSl77yM6YO95YWz6Zet5Yqg6L2954q25oCBCiAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soX3RoaXM0LnRyZWVEYXRhKTsgLy8g5aaC5p6c5o+Q5L6b5LqG5Zue6LCD5Ye95pWw77yM5YiZ6LCD55So5a6D5bm25Lyg5YWl5qCR5b2i5pWw5o2uCiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmZpbmlzaCg3KTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUsIG51bGwsIFtbMCwsIDcsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBoYW5kbGVDYXJTZWxlY3Q6IGZ1bmN0aW9uIGhhbmRsZUNhclNlbGVjdCgpIHsKICAgICAgdGhpcy5sb2FkRGF0YSgpOwogICAgfSwKICAgIHRyYW5zZm9ybVRyZWVEYXRhOiBmdW5jdGlvbiB0cmFuc2Zvcm1UcmVlRGF0YShkYXRhKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgbmFtZTogZGF0YS5uYW1lLAogICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgIGNoaWxkcmVuOiBkYXRhLmNoaWxkcmVuLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjaGlsZCkgewogICAgICAgICAgYWNjLnB1c2goewogICAgICAgICAgICBpZDogY2hpbGQuaWQsCiAgICAgICAgICAgIG5hbWU6IGNoaWxkLm5hbWUsCiAgICAgICAgICAgIHBhdGg6IGNoaWxkLnBhdGgsCiAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZC50ZWFtTGlzdC5tYXAoZnVuY3Rpb24gKGdyaWQpIHsKICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgaWQ6IGdyaWQuaWQsCiAgICAgICAgICAgICAgICBuYW1lOiBncmlkLm5hbWUsCiAgICAgICAgICAgICAgICBwYXRoOiBncmlkLnBhdGgsCiAgICAgICAgICAgICAgICByb2FkSWQ6IGdyaWQucm9hZElkLAogICAgICAgICAgICAgICAgcm9hZE5hbWU6IGdyaWQucm9hZE5hbWUKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KQogICAgICAgICAgfSk7CiAgICAgICAgICByZXR1cm4gYWNjOwogICAgICAgIH0sIFtdKQogICAgICB9OwogICAgICAvLyByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiAoewogICAgICAvLyAgIGlkOiBpdGVtLmlkLAogICAgICAvLyAgIG5hbWU6IGl0ZW0ubmFtZSwgLy8g5LiA57qn55uu5b2V55qEIGxhYmVsCiAgICAgIC8vICAgY2hpbGRyZW46IGl0ZW0udGVhbUxpc3QubWFwKGdyaWQgPT4gKHsKICAgICAgLy8gICAgIGlkOiBncmlkLmlkLAogICAgICAvLyAgICAgbmFtZTogZ3JpZC5uYW1lLCAvLyDkuoznuqfnm67lvZXnmoQgbGFiZWwKICAgICAgLy8gICAgIHBhdGg6IGdyaWQucGF0aAogICAgICAvLyAgIH0pKQogICAgICAvLyB9KSkKICAgIH0sCiAgICBkaWN0aW9uYXJ5RXNjYXBlOiBkaWN0aW9uYXJ5RXNjYXBlLAogICAgLy8g6Lev5q615L+h5oGvCiAgICBsb2FkUm9hZERhdGE6IGZ1bmN0aW9uIGxvYWRSb2FkRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIF95aWVsZCRsb2FkUm9hZCwgX3lpZWxkJGxvYWRSb2FkJHJvd3MsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMDsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIGxvYWRSb2FkKHsKICAgICAgICAgICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAtMSwKICAgICAgICAgICAgICAgICAgcGFnZTogMSwKICAgICAgICAgICAgICAgICAgdG90YWw6IDAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRsb2FkUm9hZCA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRsb2FkUm9hZCRyb3dzID0gX3lpZWxkJGxvYWRSb2FkLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRsb2FkUm9hZCRyb3dzID09PSB2b2lkIDAgPyB7fSA6IF95aWVsZCRsb2FkUm9hZCRyb3dzOwogICAgICAgICAgICAgIF90aGlzNS5yb2FkT3B0aW9ucyA9IHJvd3M7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gOTsKICAgICAgICAgICAgICBfY29udGV4dDIudDAgPSBfY29udGV4dDJbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coX2NvbnRleHQyLnQwKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgbnVsbCwgW1swLCA5XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmlZHmj7Tngrnkv6Hmga8KICAgIGxvYWRSZXNjdWVQb2ludERhdGE6IGZ1bmN0aW9uIGxvYWRSZXNjdWVQb2ludERhdGEoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkgewogICAgICAgIHZhciBfeWllbGQkcmVzY3VlUG9pbnQsIF95aWVsZCRyZXNjdWVQb2ludCRybywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gcmVzY3VlUG9pbnQoewogICAgICAgICAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IC0xLAogICAgICAgICAgICAgICAgICBwYWdlOiAxLAogICAgICAgICAgICAgICAgICB0b3RhbDogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJHJlc2N1ZVBvaW50ID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHJlc2N1ZVBvaW50JHJvID0gX3lpZWxkJHJlc2N1ZVBvaW50LnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRyZXNjdWVQb2ludCRybyA9PT0gdm9pZCAwID8ge30gOiBfeWllbGQkcmVzY3VlUG9pbnQkcm87CiAgICAgICAgICAgICAgX3RoaXM2LnJlc2N1ZVBvaW50T3B0aW9ucyA9IHJvd3M7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gOTsKICAgICAgICAgICAgICBfY29udGV4dDMudDAgPSBfY29udGV4dDNbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coX2NvbnRleHQzLnQwKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMywgbnVsbCwgW1swLCA5XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvL+iOt+WPluenkeebruagkQogICAgZ2V0VHJlZURhdGE6IGZ1bmN0aW9uIGdldFRyZWVEYXRhKGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIGdldFRyZWUoJzMnKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF9jb250ZXh0NC50MCA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIF9jb250ZXh0NC50MSA9IHsKICAgICAgICAgICAgICAgIG5hbWU6ICfop4Tnq6DliLbluqYnLAogICAgICAgICAgICAgICAgZWRpdDogMSwKICAgICAgICAgICAgICAgIGlkOiAnJywKICAgICAgICAgICAgICAgIHBhcmVudElkOiAnJywKICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBfY29udGV4dDQudDAKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF90aGlzNy50cmVlRGF0YSA9IFtfY29udGV4dDQudDFdOwogICAgICAgICAgICAgIC8vIOS/neivgemHjeaWsOWIt+aWsOagkeaVsOaNruWQju+8jOmAieS4reaViOaenOS4jeWkseaViAogICAgICAgICAgICAgIGlmIChfdGhpczcudHJlZUl0ZW0uaWQpIHsKICAgICAgICAgICAgICAgIF90aGlzNy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICAgICAgdmFyIF90aGlzNyQkcmVmcyR0cmVlU2lkZTsKICAgICAgICAgICAgICAgICAgKF90aGlzNyQkcmVmcyR0cmVlU2lkZSA9IF90aGlzNy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXM3JCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXM3JCRyZWZzJHRyZWVTaWRlLnNldEN1cnJlbnRLZXkoX3RoaXM3LnRyZWVJdGVtLmlkKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhfdGhpczcudHJlZURhdGEpOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvL+W3pui+ueagkeiKgueCuQogICAgY3VycmVudENoYW5nZTogZnVuY3Rpb24gY3VycmVudENoYW5nZShub2RlSXRlbSkgewogICAgICBpZiAobm9kZUl0ZW0uaWQgPT09ICcxNzY2MDE3NDY4NDQ0NDUwODE2JykgewogICAgICAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IHRydWU7CiAgICAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3RjLnRlYW1faWRfJywgdGhpcy5leHRyYWN0SWRzKG5vZGVJdGVtKSk7CiAgICAgIH0gZWxzZSBpZiAobm9kZUl0ZW0uY2hpbGRyZW4gJiYgbm9kZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGFycmF5ID0gbm9kZUl0ZW0uY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgICB9KTsKICAgICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAndGMudGVhbV9pZF8nLCBhcnJheSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gZmFsc2U7CiAgICAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3RjLnRlYW1faWRfJywgW25vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5pZF0gfHwgW10pOwogICAgICB9CgogICAgICAvLyBjb25zb2xlLmxvZyhub2RlSXRlbSwgJ+agkeiKgueCueeCueWHuycpCiAgICAgIC8vIGNvbnNvbGUubG9nKG5vZGVJdGVtLmlkLCAn5qCR55qEaWQnKQogICAgICAvLyAvLyDliKTmlq3mmK/lkKbmmK/kuIDnuqfnm67lvZXvvIjmnIkgY2hpbGRyZW4g5bGe5oCn77yJCiAgICAgIC8vIGlmIChub2RlSXRlbS5jaGlsZHJlbiAmJiBub2RlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgIC8vICAgdGhpcy5pc0FkZERpc2FibGVkID0gdHJ1ZSAvLyDnpoHnlKjmlrDlop7mjInpkq4KICAgICAgLy8gICBjb25zdCBhcnJheSA9IG5vZGVJdGVtLmNoaWxkcmVuLm1hcChpdGVtID0+IGl0ZW0uaWQpCiAgICAgIC8vICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3RjLnRlYW1faWRfICcsIGFycmF5KQogICAgICAvLyAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup5LqM57qn55uu5b2V6L+b6KGM5paw5aKe5pON5L2cJykKICAgICAgLy8gfSBlbHNlIHsKICAgICAgLy8gICB0aGlzLmlzQWRkRGlzYWJsZWQgPSBmYWxzZSAvLyDlkK/nlKjmlrDlop7mjInpkq4KICAgICAgLy8gICAvLyDkv67mlLnlr7nlupTnmoTlrZfmrrXlgLwKICAgICAgLy8gICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAndGMudGVhbV9pZF8gJywgW25vZGVJdGVtPy5pZF0gfHwgW10pCiAgICAgIC8vIH0KICAgICAgLy8g5L+u5pS55a+55bqU55qE5a2X5q615YC8CiAgICAgIC8vIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdjYXRhbG9nX2Z1bGxfaWRfICcsIG5vZGVJdGVtPy5pZCB8fCAnJykKICAgICAgdGhpcy50cmVlSXRlbSA9IG5vZGVJdGVtIHx8IHt9OwogICAgICB0aGlzLmNhbGNUYWJsZUhlaWdodCg1MDApOwogICAgICBQdWJTdWIucHVibGlzaCgnVHJlZUl0ZW1TZWxlY3RlZCcsIHsKICAgICAgICBpZDogKG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5pZCkgfHwgJycsCiAgICAgICAgbmFtZTogKG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5uYW1lKSB8fCAnJywKICAgICAgICBwYXRoOiAobm9kZUl0ZW0gPT09IG51bGwgfHwgbm9kZUl0ZW0gPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGVJdGVtLnBhdGgpIHx8ICcnCiAgICAgIH0pOwogICAgICB0aGlzLnBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgdGhpcy5sb2FkRGF0YSgpOwogICAgfSwKICAgIC8v6I635Y+W5pWw5o2uCiAgICBsb2FkRGF0YTogZnVuY3Rpb24gbG9hZERhdGEoKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBfeWllbGQkdGFibGVEYXRhLCBfeWllbGQkdGFibGVEYXRhJHRvdGEsIHRvdGFsLCBfeWllbGQkdGFibGVEYXRhJHJvd3MsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzOC50YWJsZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gdGFibGVEYXRhKHJlZmluZVJlcXVlc3RCb2R5KF90aGlzOC5wYXJhbXMpKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEgPSBfY29udGV4dDUuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhJHRvdGEgPSBfeWllbGQkdGFibGVEYXRhLnRvdGFsOwogICAgICAgICAgICAgIHRvdGFsID0gX3lpZWxkJHRhYmxlRGF0YSR0b3RhID09PSB2b2lkIDAgPyAwIDogX3lpZWxkJHRhYmxlRGF0YSR0b3RhOwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEkcm93cyA9IF95aWVsZCR0YWJsZURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHRhYmxlRGF0YSRyb3dzID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCR0YWJsZURhdGEkcm93czsKICAgICAgICAgICAgICBfdGhpczgucGFyYW1zLnBhZ2VCZWFuLnRvdGFsID0gdG90YWw7CiAgICAgICAgICAgICAgX3RoaXM4LnRhYmxlRGF0YSA9IHJvd3MubWFwKGZ1bmN0aW9uIChyb3cpIHsKICAgICAgICAgICAgICAgIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJvdyksIHt9LCB7CiAgICAgICAgICAgICAgICAgIHJvYWROYW1lOiByb3cucm9hZE5hbWUgfHwgX3RoaXM4LnRyZWVJdGVtLm5hbWUgLy8g5aaC5p6cIHJvdy5vcmdOYW1lIOS4uuepuu+8jOS9v+eUqCB0cmVlSXRlbS5uYW1lCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfdGhpczgudGFibGVEYXRhLCAn5pWw5o2uJyk7CiAgICAgICAgICAgICAgX3RoaXM4LnRhYmxlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5qCR6IqC54K55pON5L2cCiAgICBvcGVyYXRlRXZlbnQ6IGZ1bmN0aW9uIG9wZXJhdGVFdmVudCh0eXBlLCBkYXRhKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICBjYXNlICfmlrDlop4nOgogICAgICAgICAgdGhpcy50cmVlSXRlbVBhcmVudElkID0gZGF0YS5pZDsKICAgICAgICAgIHRoaXMudHJlZURpYWxvZyA9IHRydWU7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICfnvJbovpEnOgogICAgICAgICAgdGhpcy50cmVlSXRlbUlkID0gZGF0YS5pZDsKICAgICAgICAgIHRoaXMudHJlZUl0ZW1QYXJlbnRJZCA9IGRhdGEucGFyZW50SWQ7CiAgICAgICAgICB0aGlzLnRyZWVEaWFsb2cgPSB0cnVlOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAn5Yig6ZmkJzoKICAgICAgICAgIHRoaXMuJGNvbmZpcm0oJ+ehruWumuWIoOmZpOmAieS4rei9pui+huWQl++8nycsICfmj5DnpLonLCB7CiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KCkgewogICAgICAgICAgICB2YXIgX3lpZWxkJHRyZWVEZWxldGUsIHN0YXRlOwogICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTYkKF9jb250ZXh0NikgewogICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSAyOwogICAgICAgICAgICAgICAgICByZXR1cm4gdHJlZURlbGV0ZShkYXRhLmlkKTsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgX3lpZWxkJHRyZWVEZWxldGUgPSBfY29udGV4dDYuc2VudDsKICAgICAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdHJlZURlbGV0ZS5zdGF0ZTsKICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM5LiRtZXNzYWdlLnN1Y2Nlc3MoIlx1NTIyMFx1OTY2NFx1OEY2Nlx1OEY4Nlx1NjIxMFx1NTI5RiIpOwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIF90aGlzOS4kbWVzc2FnZS5lcnJvcigiXHU1MjIwXHU5NjY0XHU4RjY2XHU4Rjg2XHU1OTMxXHU4RDI1Iik7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSA3OwogICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM5LmdldFRyZWVEYXRhKCk7CiAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIF9jYWxsZWU2KTsKICAgICAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgcmV0dXJuIF87CiAgICAgICAgICB9KTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9LAogICAgLy8g55uu5b2V5pS55Y+YCiAgICBjYXRhbG9nQ2hhbmdlOiBmdW5jdGlvbiBjYXRhbG9nQ2hhbmdlKGRpYWxvZ05hbWUpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICB0aGlzLmdldFRyZWVEYXRhKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMTBbZGlhbG9nTmFtZV0gPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5bGV56S65by55bGCCiAgICBzaG93RGlhbG9nOiBmdW5jdGlvbiBzaG93RGlhbG9nKGRpYWxvZ05hbWUpIHsKICAgICAgaWYgKCFkaWFsb2dOYW1lKSByZXR1cm47CiAgICAgIGlmIChkaWFsb2dOYW1lID09PSAndXNlckNob2ljZScpIHsKICAgICAgICBpZiAoIXRoaXMuYWRkRWRpdEZvcm0udGVhbUlkKSB7CiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCfor7flhYjpgInmi6nmlZHmj7TmtL7pgaPpmJ/kvI0nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIC8vIOWIoOmZpAogICAgaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUocm93KSB7CiAgICAgIHZhciBfdGhpczExID0gdGhpczsKICAgICAgdGhpcy5jbGlja1RpbWVyID0gdHJ1ZTsKICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5Yig6Zmk6K+l6L2m6L6G5LiO6Zif5LyN55qE57uR5a6a5ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNygpIHsKICAgICAgICB2YXIgaWRzLCBfeWllbGQkdGFibGVEZWxldGUsIHN0YXRlLCBtZXNzYWdlLCBfdGhpczExJHBhcmFtcyRwYWdlQmUsIHBhZ2UsIHBhZ2VTaXplLCB0b3RhbCwgdG90YWxQYWdlczsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTckKF9jb250ZXh0NykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ3LnByZXYgPSBfY29udGV4dDcubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWRzID0gcm93ID8gcm93LmlkIDogX3RoaXMxMS5jdXJyZW50RGF0YURlbC5qb2luKCk7CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURlbGV0ZShpZHMpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGVsZXRlID0gX2NvbnRleHQ3LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdGFibGVEZWxldGUuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCR0YWJsZURlbGV0ZS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmICghc3RhdGUpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXMxMS4kbWVzc2FnZS5zdWNjZXNzKCJcdTUyMjBcdTk2NjRcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICBfdGhpczExJHBhcmFtcyRwYWdlQmUgPSBfdGhpczExLnBhcmFtcy5wYWdlQmVhbiwgcGFnZSA9IF90aGlzMTEkcGFyYW1zJHBhZ2VCZS5wYWdlLCBwYWdlU2l6ZSA9IF90aGlzMTEkcGFyYW1zJHBhZ2VCZS5wYWdlU2l6ZSwgdG90YWwgPSBfdGhpczExJHBhcmFtcyRwYWdlQmUudG90YWw7CiAgICAgICAgICAgICAgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKTsgLy8g6K6h566X5oC76aG15pWwCiAgICAgICAgICAgICAgaWYgKHRvdGFsUGFnZXMgPiAxICYmIHBhZ2UgPT09IHRvdGFsUGFnZXMpIHsKICAgICAgICAgICAgICAgIGlmIChfdGhpczExLnRhYmxlRGF0YS5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgICAgLy8g5b2T5YmN6aG15Y+q5pyJ5LiA5p2h5pWw5o2uCiAgICAgICAgICAgICAgICAgIF90aGlzMTEucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgLT0gMTsgLy8g6L+U5Zue5YmN5LiA6aG1CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMTM7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMTEubG9hZERhdGEoKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDE2OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIF90aGlzMTEuJG1lc3NhZ2UuZXJyb3IobWVzc2FnZSk7CiAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTcpOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF87CiAgICAgIH0pOwogICAgfSwKICAgIC8v5L+u5pS5CiAgICBoYW5kbGVEYkNsaWNrOiBmdW5jdGlvbiBoYW5kbGVEYkNsaWNrKHJvdykgewogICAgICBjb25zb2xlLmxvZyhyb3csICcvLy8vL2Nhc2NhY2FzJyk7CiAgICAgIGlmICh0aGlzLmNsaWNrVGltZXIpIHJldHVybiB0aGlzLmNsaWNrVGltZXIgPSBmYWxzZTsKICAgICAgLy8g56Gu5L+dIHJvdyDkuK3ljIXlkKsgb3JnTmFtZQogICAgICB2YXIgcGF5bG9hZCA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcm93KSwge30sIHsKICAgICAgICByb2FkTmFtZTogcm93LnJvYWROYW1lIHx8IHRoaXMudHJlZUl0ZW0ubmFtZSAvLyDlpoLmnpwgcm93Lm9yZ05hbWUg5Li656m677yM5L2/55SoIHRyZWVJdGVtLm5hbWUKICAgICAgfSk7CiAgICAgIHRoaXMuY2hhbmdlUGFnZSgnRWRpdEFkZFBhZ2UnLCBwYXlsb2FkKTsKICAgIH0sCiAgICAvLyDmlLnlj5jpobXpnaIKICAgIGNoYW5nZVBhZ2U6IGZ1bmN0aW9uIGNoYW5nZVBhZ2UoKSB7CiAgICAgIHZhciBwYWdlTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJyc7CiAgICAgIHZhciByb3cgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9OwogICAgICBpZiAoIXBhZ2VOYW1lKSByZXR1cm47CiAgICAgIHZhciBwYXlsb2FkID0gcm93LmlkID8gcm93IDogewogICAgICAgIGNhdGFsb2dJZDogdGhpcy50cmVlSXRlbS5pZCwKICAgICAgICByb2FkTmFtZTogdGhpcy50cmVlSXRlbS5uYW1lLAogICAgICAgIHBhdGg6IHRoaXMudHJlZUl0ZW0ucGF0aCwKICAgICAgICBjbGVhckZvcm06IHRydWUgLy8g5riF56m66KGo5Y2V5qCH5b+XCiAgICAgIH07CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZVBhZ2UnLCBwYWdlTmFtZSwgZnVuY3Rpb24gKF8pIHsKICAgICAgICBQdWJTdWIucHVibGlzaChwYWdlTmFtZSwgcGF5bG9hZCk7CiAgICAgIH0sIHJvdy5pZCA/ICfnvJbovpEnIDogJ+a3u+WKoCcpOwogICAgfQogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIC8vIOWcqOe7hOS7tumUgOavgeS5i+WJjSDmuIXpmaTorqLpmIXmtojmga8KICAgIFB1YlN1Yi51bnN1YnNjcmliZSh0aGlzLnB1YlN1Yik7CiAgfQp9Ow=="},null]}