b610b41ee27e01fae2721509c2290280.json 28 KB

1
  1. {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\boman-framwork\\ruoyi-ui\\src\\views\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\views\\index.vue","mtime":1618565769567},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIGZyb20gIkU6L2JvbWFuLWZyYW13b3JrL3J1b3lpLXVpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbHRlci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwppbXBvcnQgeyBsaXN0SW5kZXgsIGxpc3RJbmRleHR3bywgbGlzdEluZGV4dGhlcnIsIGxpc3RJbmRleGZvdSwgbGlzdEluZGV4dGFubCwgZ2V0Q29uZmlnLCBkZWxDb25maWcsIGFkZENvbmZpZywgYWRkQ29uZmlnaW5kZXgsIHVwZGF0ZUNvbmZpZywgY2xlYXJDYWNoZSB9IGZyb20gIkAvYXBpL3N5c3RlbS9jb25maWciOwppbXBvcnQgRWRpdG9yIGZyb20gJ0AvY29tcG9uZW50cy9FZGl0b3InOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogImluZGV4IiwKICBjb21wb25lbnRzOiB7CiAgICBFZGl0b3I6IEVkaXRvcgogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIC8vIOeJiOacrOWPtwogICAgICB2ZXJzaW9uOiAiMi41LjAiLAogICAgICBjdXJyZW50UGFnZTM6IDEsCiAgICAgIHRvdGFsOiAwLAogICAgICB0b3RhbHByb2ZpbGU6IDAsCiAgICAgIHRvdGFsYWxpOiAwLAogICAgICBwYWdlU2l6ZTogNiwKICAgICAgYWN0aXZlTmFtZTogJ3NlY29uZCcsCiAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxggogICAgICBvcGVuOiBmYWxzZSwKICAgICAgLy8g5by55Ye65bGC5qCH6aKYCiAgICAgIHRpdGxlOiAiIiwKICAgICAgdmFsdWU6IG5ldyBEYXRlKCksCiAgICAgIGVkaXRhYmxlVGFiczogW10sCiAgICAgIGF0dGVuZGFuY2U6IFsn5b6F5oiR5a6h5om5JywgJ+W3suWKnueQhicsICfmiJHnmoTmtYHnqIsnLCAn6amz5Zue5a6h5om5J10sCiAgICAgIGVkaXRhYmxlVGFic3RlbzogW10sCiAgICAgIGNvbmZpZ0xpc3Q6IFtdLAogICAgICBxdWVyeVBhcmFtczogewogICAgICAgIHRhYmxlOiAnc3lzX25vdGljZScsCiAgICAgICAgb3JkZXJCeTogJ2NyZWF0ZV90aW1lIGRlc2MnLAogICAgICAgIHBhZ2VObzogMSwKICAgICAgICBwYWdlU2l6ZTogNiwKICAgICAgICBjb25kaXRpb246IHsKICAgICAgICAgIG5vdGljZV90eXBlOiAxCiAgICAgICAgfQogICAgICB9LAogICAgICBxdWVyeVBhcmFtc3RhYjogewogICAgICAgIHRhYmxlOiAnc3lzX25vdGljZScsCiAgICAgICAgb3JkZXJCeTogJ2NyZWF0ZV90aW1lIGRlc2MnLAogICAgICAgIHBhZ2VObzogMSwKICAgICAgICBwYWdlU2l6ZTogNiwKICAgICAgICBjb25kaXRpb246IHsKICAgICAgICAgIG5vdGljZV90eXBlOiAxCiAgICAgICAgfQogICAgICB9LAogICAgICAvLyDlhazlj7jmpoLlhrUKICAgICAgcXVlcnlQYXJhbXN0YWJwcm9maWxlOiB7CiAgICAgICAgdGFibGU6ICdzeXNfaW5mbycsCiAgICAgICAgb3JkZXJCeTogJ2NyZWF0ZV90aW1lIGRlc2MnLAogICAgICAgIHBhZ2VObzogMSwKICAgICAgICBwYWdlU2l6ZTogMSwKICAgICAgICBjb25kaXRpb246IHsKICAgICAgICAgIG5vdGljZV90eXBlOiAxCiAgICAgICAgfQogICAgICB9LAogICAgICAvLyDml6XljoYKICAgICAgcXVlcnlQYXJhbXNjYWxlbmRhcjogewogICAgICAgIHRhYmxlOiAnc3lzX3NjaGVkdWxlJywKICAgICAgICBvcmRlckJ5OiAnY3JlYXRlX3RpbWUgZGVzYycsCiAgICAgICAgcGFnZU5vOiAxLAogICAgICAgIHBhZ2VTaXplOiAxMAogICAgICB9LAogICAgICAvLyDlpIflv5jlvZUKICAgICAgcXVlcnlQYXJhbXN0YWJtZW1vcmFuZHVtOiB7CiAgICAgICAgdGFibGU6ICdzeXNfbWVtb3JhbmR1bScsCiAgICAgICAgb3JkZXJCeTogJ2NyZWF0ZV90aW1lIGRlc2MnLAogICAgICAgIHBhZ2VObzogMSwKICAgICAgICBwYWdlU2l6ZTogNgogICAgICB9LAogICAgICAvLyDpgJrorq/lvZUKICAgICAgcXVlcnlQYXJhbXNhaWw6IHsKICAgICAgICB0YWJsZTogJ3N5c19jb250YWN0cycsCiAgICAgICAgb3JkZXJCeTogJ2NyZWF0ZV90aW1lIGRlc2MnLAogICAgICAgIHBhZ2VObzogMSwKICAgICAgICBwYWdlU2l6ZTogNgogICAgICB9LAogICAgICBudW06IDAsCiAgICAgIG51bWxpc3Q6IDAsCiAgICAgIG51bXByb2ZpbGU6IDAsCiAgICAgIGRpY3RUeXBlOiAnc3lzX25vdGljZV90eXBlJywKICAgICAgLy8g5YWs5Y+45qaC5Ya1CiAgICAgIGRpY3RUeXBldHdvOiAnc3lzX2Rlc2NyaWJlX3R5cGUnLAogICAgICBnZXR0YWJMaXN0OiBbXSwKICAgICAgZ2V0TGlzcHJvZmlsZW9uZTogW10sCiAgICAgIC8vIOWkh+W/mOW9lQogICAgICBnZXRtZW1vcmFuZHVtOiBbXSwKICAgICAgLy/pgJrorq/lvZXlj4LmlbAKICAgICAgYWxpZW1nOiB7CiAgICAgICAgdGFibGU6ICdzeXNfY29udGFjdHMnLAogICAgICAgIG9yZGVyQnk6ICdjcmVhdGVfdGltZSBkZXNjJywKICAgICAgICBwYWdlTm86IDEsCiAgICAgICAgcGFnZVNpemU6IDYKICAgICAgfSwKICAgICAgdGFibGVEYXRhYWxpZDogW10sCiAgICAgIGdldExpc2FpbGxpZTogW10sCiAgICAgIGFsZW5kYXJMaXN0OiBbXSwKICAgICAgY2FsZW5kYXJEYXRhOiBbXSwKICAgICAgYXJ5OiBbXSwKICAgICAgdGlla3U6ICcnLAogICAgICBjb21nOiAnJywKICAgICAgYWVrdGk6ICcnLAogICAgICAvLyDlvLnmoYbmlbDmja4KICAgICAgZm9ybToge30sCiAgICAgIC8vIOihqOWNleagoemqjAogICAgICBydWxlczoge30sCiAgICAgIC8v5pel5Y6G5by55qGGCiAgICAgIGNhbGVuZGFyYWRkOiB7CiAgICAgICAgdGFibGU6ICdzeXNfc2NoZWR1bGUnLAogICAgICAgIGlzVWk6IGZhbHNlCiAgICAgIH0sCiAgICAgIC8v5aSH5b+Y5b2V5by55qGGCiAgICAgIGNhbGVuZGFyYWRkbWVyOiB7CiAgICAgICAgdGFibGU6ICdzeXNfbWVtb3JhbmR1bScsCiAgICAgICAgaXNVaTogZmFsc2UKICAgICAgfSwKICAgICAgLy8gaW5wdXQKICAgICAgaW5wdXRMaXN0OiBbXSwKICAgICAgLy8g5pe26Ze0CiAgICAgIGRhdGFMaXN0OiBbXSwKICAgICAgLy/ljZXpgInmoYYKICAgICAgcmFkaW9saXN0OiBbXSwKICAgICAgLy8g5aSN6YCJ5qGGCiAgICAgIGNoZWtib3NMaXN0OiBbXSwKICAgICAgLy/kuIvmi4nmoYYKICAgICAgc2VsZWN0TGlzdDogW10sCiAgICAgIGVkaXRvckxpc3Q6IFtdLAogICAgICBxdWVyeURhdGE6IHt9LAogICAgICBxdWVyeURhdGF0d286IHt9LAogICAgICBudW1tZXI6IDAsCiAgICAgIC8vMCDmmK/ml6XljoYgIDEg5piv5aSH5b+Y5b2VCiAgICAgIGZvcm1lOiB7CiAgICAgICAgdGFibGU6ICcnLAogICAgICAgIG9iaklkOiAtMSwKICAgICAgICBmaXhlZERhdGE6IHt9CiAgICAgIH0sCiAgICAgIHJqdHU6IFtdLAogICAgICB0cnVldzogW10sCiAgICAgIGZhbGVzOiBbXSwKICAgICAgcG9zdExpc3Q6IHt9LAogICAgICBhcnI6ICcyLDIsMywzLDQsNCcKICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdGhpcy51bmlxdWUodGhpcy5hcnIpOwogICAgdGhpcy5nZXRMaXNhbGVuZGFyKCk7IC8v5pel5Y6GCgogICAgdGhpcy5nZXRMaXN0KCk7CiAgICB0aGlzLmdldExpc3R0YWIoKTsKICAgIHRoaXMuZ2V0TGlzZXIoKTsKICAgIHRoaXMuZ2V0TGlzcHJvZmlsZSgpOwogICAgdGhpcy5nZXRMaXNtZW1vcmFuZHVtKCk7IC8v5aSH5b+Y5b2VCgogICAgdGhpcy5nZXRMaXNhaWwoKTsgLy/pgJrorq/lvZUKCiAgICB0aGlzLmdldExpc2FpbHR3bygpOwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIC8vIOaXtumXtOmrmOS6rueahOaVsOe7hAogICAgYnJpZ2h0RGF0ZTogZnVuY3Rpb24gYnJpZ2h0RGF0ZSgpIHsKICAgICAgLy8gbGV0IGFyeSA9IFtdCiAgICAgIHZhciB0aGF0ID0gdGhpczsgLy8gY29uc29sZS5sb2codGhhdC5jYWxlbmRhckRhdGEsODg3KQoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGF0LmNhbGVuZGFyRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgIC8vIHRoYXQuYXJ5LnB1c2godGhhdC5jYWxlbmRhckRhdGFbaV0uc3RhcnREYXRlKQogICAgICAgIC8vIHRoYXQuYXJ5LnB1c2godGhhdC5jYWxlbmRhckRhdGFbaV0uYmVnaW5fdGltZS5zbGljZSgwLDEwKSkKICAgICAgICAvLyB0aGF0LmFyeS5wdXNoKHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLnNwbGl0KCcsJykpCiAgICAgICAgdGhhdC5jYWxlbmRhckRhdGFbaV0ubG92ZSA9ICJ5dSI7CgogICAgICAgIGlmICh0aGF0LmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAvLyB0aGF0LnJqdHUuY29uY2F0KHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmpvaW4oJywnKSkKICAgICAgICAgIHRoYXQuYXJ5LnB1c2godGhhdC5jYWxlbmRhckRhdGFbaV0uYWxsX2RhdGUuam9pbignLCcpKTsgLy8gdGhhdC5jYWxlbmRhckRhdGFbaV0uYWxsX2RhdGUuZmkKCiAgICAgICAgICB0aGF0LmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5maWx0ZXIoZnVuY3Rpb24gKHJvdXRlKSB7CiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlLDk4NzUpCiAgICAgICAgICAgIHRoYXQuYXJ5LnB1c2gocm91dGUpOwogICAgICAgICAgfSk7IC8vIHRoYXQuYXJ5ID0gdGhhdC5jYWxlbmRhckRhdGFbaV0uYWxsX2RhdGUKICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoYXQuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmpvaW4oJywnKSw3NTQpCiAgICAgICAgfSAvLyBjb25zb2xlLmxvZyh0aGF0LmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZSw3NTQpCgogICAgICB9IC8vIGNvbnNvbGUubG9nKCB0aGF0LnJqdHUsNzU0NSkKCgogICAgICBjb25zb2xlLmxvZyh0aGF0LmFyeSk7CiAgICAgIHJldHVybiB0aGF0LmFyeTsKICAgIH0KICB9LAogIG1ldGhvZHM6IHsKICAgIC8vIFRvb2x0aXAg5paH5a2X5o+Q56S6CiAgICBjb250ZW50OiBmdW5jdGlvbiBjb250ZW50KGRhdGUpIHsKICAgICAgY29uc29sZS5sb2coZGF0ZSwgMzc2NDUpOwogICAgICB2YXIgZGF0YSA9IGRhdGU7CiAgICAgIHZhciBjb250ZW50ID0gJyc7CiAgICAgIHZhciBjb25lcnQgPSAnJzsKICAgICAgdmFyIGNvbmVydHJlID0gJyc7CiAgICAgIHZhciBudWp1ZSA9IDA7CiAgICAgIHZhciBudWpldWcgPSBbXTsKICAgICAgdmFyIHNldHJlID0gW107CiAgICAgIHRoaXMudHJ1ZXcgPSBbXTsKICAgICAgY29uc29sZS5sb2codGhpcy5jYWxlbmRhckRhdGEpOyAvLyBjb25zb2xlLmxvZyhkYXRhLDM3NjQ1KQoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNhbGVuZGFyRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgIC8vIGlmIChkYXRlID09PSB0aGlzLmNhbGVuZGFyRGF0YVtpXS5iZWdpbl90aW1lKSB7CiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jYWxlbmRhckRhdGFbaV0pCiAgICAgICAgaWYgKHRoaXMuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmluY2x1ZGVzKGRhdGEpKTsKCiAgICAgICAgICBpZiAodGhpcy5jYWxlbmRhckRhdGFbaV0uYWxsX2RhdGUuaW5jbHVkZXMoZGF0YSkgPT0gdHJ1ZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5pbmNsdWRlcyhkYXRhKSk7CiAgICAgICAgICAgIHRoaXMudHJ1ZXcucHVzaCh0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5pbmNsdWRlcyhkYXRhKSk7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudHJ1ZXcpOwoKICAgICAgICAgICAgaWYgKHRoaXMudHJ1ZXcubGVuZ3RoID4gMSkgewogICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50ICsgJywnICsgdGhpcy5jYWxlbmRhckRhdGFbaV0uc2NoZWR1bGVfY29udGVudDsgLy8gbnVqZXVnID0gY29udGVudC5zcGxpdCgnLCcpCiAgICAgICAgICAgICAgLy8gZm9yKHZhciBpID0gMCA7IGkgPCBudWpldWcubGVuZ3RoOyBpKyspewogICAgICAgICAgICAgIC8vICAgaWYgKHNldHJlLmluZGV4T2YobnVqZXVnW2ldKSA9PT0gLTEpIHsKICAgICAgICAgICAgICAvLyAgICAgIHNldHJlLnB1c2gobnVqZXVnW2ldKQogICAgICAgICAgICAgIC8vICAgICAgfQogICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAvLyBjb250ZW50ID0gc2V0cmUuam9pbignLCcpCiAgICAgICAgICAgICAgLy8gc2V0cmUgPSBbLi4ubmV3IHNldChudWpldWcpXQogICAgICAgICAgICAgIC8vIGNvbmVydCA9IHNldHJlLmpvaW4oJywnKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLmNhbGVuZGFyRGF0YVtpXS5zY2hlZHVsZV9jb250ZW50OwogICAgICAgICAgICB9IC8vIGNvbnRlbnQgID0gdGhpcy5jYWxlbmRhckRhdGFbaV0uc2NoZWR1bGVfY29udGVudAogICAgICAgICAgICAvLyByZXR1cm4gY29udGVudAoKICAgICAgICAgIH0KCiAgICAgICAgICBjb25zb2xlLmxvZyhjb250ZW50KTsgLy8gIGlmKHRoaXMuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmluY2x1ZGVzKGRhdGEpID09IGZhbHNlKXsKICAgICAgICAgIC8vICAgIGNvbnNvbGUubG9nKHRoaXMuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlLmluY2x1ZGVzKGRhdGEpKQogICAgICAgICAgLy8gICAvLyB0aGlzLnJqdHUucHVzaCh0aGlzLmNhbGVuZGFyRGF0YVtpXS5zY2hlZHVsZV9jb250ZW50KQogICAgICAgICAgLy8gICAvLyBjb250ZW50ICA9IHRoaXMuY2FsZW5kYXJEYXRhW2ldLnNjaGVkdWxlX2NvbnRlbnQKICAgICAgICAgIC8vIH0KICAgICAgICAgIC8vCiAgICAgICAgfSAvLyByZXR1cm4gY29udGVudAogICAgICAgIC8vIH0KICAgICAgICAvLyBpZih0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZSAhPT0gdW5kZWZpbmVkKXsKICAgICAgICAvLyAgIGZvcih2YXIgaj0gMCA7IGo8dGhpcy5jYWxlbmRhckRhdGFbaV0uYWxsX2RhdGUubGVuZ3RoOyBqKyspewogICAgICAgIC8vICAgICAvLyBpZihkYXRhID09IHRoaXMuY2FsZW5kYXJEYXRhW2ldLmFsbF9kYXRlW2pdKXsKICAgICAgICAvLyAgICAgLy8gICAvLyBjb25zb2xlLmxvZygxMjQpCiAgICAgICAgLy8gICAgIC8vICAgLy8gY29uc29sZS5sb2codGhpcy5jYWxlbmRhckRhdGFbaV0pCiAgICAgICAgLy8gICAgIC8vICAgLy8gY29udGVudCAgPSB0aGlzLmNhbGVuZGFyRGF0YVtpXS5zY2hlZHVsZV9jb250ZW50CiAgICAgICAgLy8gICAgIC8vICAgLy8gY29uc29sZS5sb2coY29udGVudCkKICAgICAgICAvLyAgICAgLy8gfWVsc2UgaWYoZGF0YSAhPT0gdGhpcy5jYWxlbmRhckRhdGFbaV0uYWxsX2RhdGVbal0pewogICAgICAgIC8vICAgICAvLyAgIGNvbnRlbnQgID0gdGhpcy5jYWxlbmRhckRhdGFbaV0uc2NoZWR1bGVfY29udGVudAogICAgICAgIC8vICAgICAvLyAgIGNvbnNvbGUubG9nKDg3NjU0MykKICAgICAgICAvLyAgICAgLy8gICBjb25zb2xlLmxvZyhjb250ZW50KQogICAgICAgIC8vICAgICAvLyB9CiAgICAgICAgLy8gICB9CiAgICAgICAgLy8gICAvLyB0aGlzLmNhbGVuZGFyRGF0YVtpXS5hbGxfZGF0ZS5maWx0ZXIocm91dGUgPT4gewogICAgICAgIC8vICAgLy8gICBpZihkYXRhID09IHJvdXRlKXsKICAgICAgICAvLyAgIC8vICAgICBjb25zb2xlLmxvZygxMjQpCiAgICAgICAgLy8gICAvLyAgICAgY29uc29sZS5sb2cocm91dGUuc2NoZWR1bGVfY29udGVudCkKICAgICAgICAvLyAgIC8vICAgICBjb250ZW50ICA9IHJvdXRlLnNjaGVkdWxlX2NvbnRlbnQKICAgICAgICAvLyAgIC8vICAgICBjb25zb2xlLmxvZyhjb250ZW50KQogICAgICAgIC8vICAgLy8gICB9ZWxzZXsKICAgICAgICAvLyAgIC8vICAgICBjb25zb2xlLmxvZyg4NzY1NDMpCiAgICAgICAgLy8gICAvLyAgIH0KICAgICAgICAvLyAgIC8vIH0pCiAgICAgICAgLy8gfQogICAgICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlLDk4NzUpCiAgICAgICAgLy8gdGhhdC5hcnkucHVzaChyb3V0ZSkKICAgICAgICAvLyBpZih0aGlzLmNhbGVuZGFyRGF0YVtpXS5zY2hlZHVsZV9jb250ZW50ICE9PSB1bmRlZmluZWQpewogICAgICAgIC8vICAgbnVqdWUgPSBudWp1ZSArMQogICAgICAgIC8vICAgaWYodGhpcy5jYWxlbmRhckRhdGFbaV0uc2NoZWR1bGVfY29udGVudCAhPT0gdGhpcy5jYWxlbmRhckRhdGFbbnVqdWVdLnNjaGVkdWxlX2NvbnRlbnQpewogICAgICAgIC8vICAgICAvLyB0aGlzLnJqdHUucHVzaCh0aGlzLmNhbGVuZGFyRGF0YVtpXS5zY2hlZHVsZV9jb250ZW50KQogICAgICAgIC8vICAgfQogICAgICAgIC8vICAgLy8gY29udGVudCA9IHRoaXMucmp0dS5qb2luKCcsJykKICAgICAgICAvLyB9CiAgICAgICAgLy8gfQoKICAgICAgfSAvLyB0aGlzLmNhbGVuZGFyRGF0YS5maWx0ZXIocm91dGUgPT57CiAgICAgIC8vICAgaWYocm91dGUuc2NoZWR1bGVfY29udGVudCAhPT0gdW5kZWZpbmVkKXsKICAgICAgLy8gICAgIC8vIGlmKGRhdGUgPT0gcm91dGUuYWxsX2RhdGUpCiAgICAgIC8vICAgICBjb25zb2xlLmxvZyhyb3V0ZS5zY2hlZHVsZV9jb250ZW50LDIzNDU2KQogICAgICAvLyAgICAgY29udGVudCAgPSByb3V0ZS5zY2hlZHVsZV9jb250ZW50CiAgICAgIC8vICAgfQogICAgICAvLyB9KQogICAgICAvLyBpZihjb250ZW50Lmxlbmd0aCA+MSl7CiAgICAgIC8vICAgZm9yKHZhciBrID0gMCA7IGsgPCBjb250ZW50Lmxlbmd0aDsgaysrKXsKICAgICAgLy8gICAgIGNvbnNvbGUubG9nKGNvbnRlbnRbaV0pCiAgICAgIC8vICAgICAvLyBpZihjb25lcnRyZS5pbmRleE9mKGNvbmVydFtpXSk9PS0xKXsKICAgICAgLy8gICAgIC8vIGNvbmVydHJlKz1jb25lcnRbaV07CiAgICAgIC8vICAgICB9CiAgICAgIC8vIH0KCgogICAgICBjb25zb2xlLmxvZyhjb250ZW50KTsgLy8gY29uc29sZS5sb2codGhpcy5yanR1LDEyMzQ1KQogICAgICAvLyBjb250ZW50ID0gdGhpcy5yanR1LmpvaW4oJywnKQoKICAgICAgcmV0dXJuIGNvbnRlbnQ7CiAgICB9LAogICAgLy/mlbDmja4gIOesrOS4gOmDqOWIhuWIl+ihqAogICAgZ2V0TGlzdDogZnVuY3Rpb24gZ2V0TGlzdCgpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIGxpc3RJbmRleCh0aGlzLnF1ZXJ5UGFyYW1zKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzLmNvbmZpZ0xpc3QgPSByZXNwb25zZS5kYXRhLnJvd3M7CiAgICAgICAgY29uc29sZS5sb2coX3RoaXMuY29uZmlnTGlzdCk7CiAgICAgICAgX3RoaXMudG90YWwgPSByZXNwb25zZS5kYXRhLnRvdGFsOwogICAgICAgIF90aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy/mlbDmja4gIOesrOS6jOmDqOWIhuWIl+ihqAogICAgZ2V0TGlzdHRhYm9uZTogZnVuY3Rpb24gZ2V0TGlzdHRhYm9uZSgpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICBsaXN0SW5kZXgodGhpcy5xdWVyeVBhcmFtcykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBfdGhpczIuY29uZmlnTGlzdCA9IHJlc3BvbnNlLmRhdGEucm93czsKICAgICAgICBjb25zb2xlLmxvZyhfdGhpczIuY29uZmlnTGlzdCk7CiAgICAgICAgX3RoaXMyLnRvdGFsID0gcmVzcG9uc2UuZGF0YS50b3RhbDsKICAgICAgICBfdGhpczIubG9hZGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICAvL+aVsOaNriAg56ys5LiJ6YOo5YiG5YiX6KGoCiAgICBnZXRMaXNwcm9maWxlOiBmdW5jdGlvbiBnZXRMaXNwcm9maWxlKCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIGxpc3RJbmRleCh0aGlzLnF1ZXJ5UGFyYW1zdGFicHJvZmlsZSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBfdGhpczMuZ2V0TGlzcHJvZmlsZW9uZSA9IHJlc3BvbnNlLmRhdGEucm93czsKICAgICAgICAgIF90aGlzMy50aWVrdSA9IF90aGlzMy5nZXRMaXNwcm9maWxlb25lWzBdLmluZm9fdGl0bGU7CiAgICAgICAgICBfdGhpczMuY29tZyA9IF90aGlzMy5nZXRMaXNwcm9maWxlb25lWzBdLmluZm9fY29udGVudDsKICAgICAgICAgIGNvbnNvbGUubG9nKF90aGlzMy5nZXRMaXNwcm9maWxlb25lWzBdLmluZm9fdGl0bGUsIDk4KTsKICAgICAgICAgIF90aGlzMy50b3RhbHByb2ZpbGUgPSByZXNwb25zZS5kYXRhLnRvdGFsOwogICAgICAgIH0KCiAgICAgICAgX3RoaXMzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy/mlbDmja4gIOaXpeWOhuaVsOaNruWIl+ihqAogICAgZ2V0TGlzYWxlbmRhcjogZnVuY3Rpb24gZ2V0TGlzYWxlbmRhcigpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICBsaXN0SW5kZXgodGhpcy5xdWVyeVBhcmFtc2NhbGVuZGFyKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIGlmIChyZXNwb25zZS5kYXRhICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIF90aGlzNC5jYWxlbmRhckRhdGEgPSByZXNwb25zZS5kYXRhLnJvd3M7CiAgICAgICAgICBjb25zb2xlLmxvZyhfdGhpczQuY2FsZW5kYXJEYXRhLCA5ODQ1NzY1KTsKICAgICAgICB9CgogICAgICAgIF90aGlzNC5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8v5pWw5o2uICDlpIflv5jlvZXmlbDmja7liJfooagKICAgIGdldExpc21lbW9yYW5kdW06IGZ1bmN0aW9uIGdldExpc21lbW9yYW5kdW0oKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwoKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgbGlzdEluZGV4KHRoaXMucXVlcnlQYXJhbXN0YWJtZW1vcmFuZHVtKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIGlmIChyZXNwb25zZS5kYXRhICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIF90aGlzNS5nZXRtZW1vcmFuZHVtID0gcmVzcG9uc2UuZGF0YS5yb3dzOwogICAgICAgICAgY29uc29sZS5sb2coX3RoaXM1LmdldG1lbW9yYW5kdW0sIDk4NzY1KTsKICAgICAgICB9CgogICAgICAgIF90aGlzNS5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOaVsOaNruWIl+ihqCAgIOmAmuiur+W9leaVsOaNrgogICAgZ2V0TGlzYWlsdHdvOiBmdW5jdGlvbiBnZXRMaXNhaWx0d28oKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwoKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgbGlzdEluZGV4KHRoaXMucXVlcnlQYXJhbXNhaWwpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgX3RoaXM2LmdldExpc2FpbGxpZSA9IHJlc3BvbnNlLmRhdGEucm93czsgLy8gY29uc29sZS5sb2codGhpcy5jb25maWdMaXN0KQogICAgICAgIH0KCiAgICAgICAgX3RoaXM2LnRvdGFsYWxpID0gcmVzcG9uc2UuZGF0YS50b3RhbDsKICAgICAgICBfdGhpczYubG9hZGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICAvL3RhYiDlhazlkYog5qCP5pWw5o2uCiAgICBnZXRMaXN0dGFiOiBmdW5jdGlvbiBnZXRMaXN0dGFiKCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIGxpc3RJbmRleHR3byh0aGlzLmRpY3RUeXBlKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzNy5lZGl0YWJsZVRhYnMgPSByZXNwb25zZS5kYXRhOwogICAgICAgIF90aGlzNy5xdWVyeVBhcmFtcy5kaWN0VHlwZSA9IHJlc3BvbnNlLmRhdGFbMV0uZGljdFR5cGU7CiAgICAgICAgY29uc29sZS5sb2coX3RoaXM3LmVkaXRhYmxlVGFicyk7IC8vIHRoaXMudG90YWwgPSByZXNwb25zZS50b3RhbDsKCiAgICAgICAgX3RoaXM3LmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5YWs5Y+45qaC5Ya1ICB0YWIKICAgIGdldExpc2VyOiBmdW5jdGlvbiBnZXRMaXNlcigpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICBsaXN0SW5kZXh0aGVycih0aGlzLmRpY3RUeXBldHdvKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzOC5lZGl0YWJsZVRhYnN0ZW8gPSByZXNwb25zZS5kYXRhOwogICAgICAgIGNvbnNvbGUubG9nKF90aGlzOC5lZGl0YWJsZVRhYnN0ZW8pOyAvLyB0aGlzLnRvdGFsID0gcmVzcG9uc2UudG90YWw7CgogICAgICAgIF90aGlzOC5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOmAmuiur+W9leihqOWktAogICAgZ2V0TGlzYWlsOiBmdW5jdGlvbiBnZXRMaXNhaWwoKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwoKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgbGlzdEluZGV4Zm91KHRoaXMuYWxpZW1nKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIGlmIChyZXNwb25zZS5kYXRhICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIF90aGlzOS50YWJsZURhdGFhbGlkID0gcmVzcG9uc2UuZGF0YS50YWJsZUhlYWRMaXN0OwogICAgICAgICAgX3RoaXM5LnBvc3RMaXN0ID0gcmVzcG9uc2UuZGF0YTsKICAgICAgICAgIGNvbnNvbGUubG9nKF90aGlzOS50YWJsZURhdGFhbGlkLCA2Nyk7CiAgICAgICAgICBfdGhpczkudG90YWxwcm9maWxlID0gcmVzcG9uc2UuZGF0YS50b3RhbDsKICAgICAgICB9CgogICAgICAgIF90aGlzOS5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8v5pel5Y6G5paw5aKe5by55qGG5pWw5o2uCiAgICBnZXRMaXNhbGVuZGFyYWRkZDogZnVuY3Rpb24gZ2V0TGlzYWxlbmRhcmFkZGQoKSB7CiAgICAgIHZhciBfdGhpczEwID0gdGhpczsKCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIHRoaXMucXVlcnlEYXRhID0gW107CiAgICAgIGxpc3RJbmRleHRhbmwodGhpcy5jYWxlbmRhcmFkZCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBfdGhpczEwLnF1ZXJ5RGF0YSA9IHJlc3BvbnNlLmRhdGE7CgogICAgICAgICAgX3RoaXMxMC5xdWVyeURhdGEuY29sdW1ucy5maWx0ZXIoZnVuY3Rpb24gKHJvdXRlKSB7CiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlKQogICAgICAgICAgICBpZiAocm91dGUuaHRtbFR5cGUgPT0gImlucHV0IiB8fCByb3V0ZS5odG1sVHlwZSA9PSAndGV4dGFyZWEnKSB7CiAgICAgICAgICAgICAgX3RoaXMxMC5pbnB1dExpc3QucHVzaChyb3V0ZSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocm91dGUuaHRtbFR5cGUgPT0gInNlbGVjdCIpIHsKICAgICAgICAgICAgICBfdGhpczEwLnNlbGVjdExpc3QucHVzaChyb3V0ZSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocm91dGUuaHRtbFR5cGUgPT0gImRhdGV0aW1lIikgewogICAgICAgICAgICAgIF90aGlzMTAuZGF0YUxpc3QucHVzaChyb3V0ZSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocm91dGUuaHRtbFR5cGUgPT0gImVkaXRvciIpIHsKICAgICAgICAgICAgICBfdGhpczEwLmVkaXRvckxpc3QucHVzaChyb3V0ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOyAvLyBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdExpc3QpCgogICAgICAgIH0KCiAgICAgICAgX3RoaXMxMC5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIC8v5aSH5b+Y5b2V5paw5aKe5by55qGG5pWw5o2uCiAgICBnZXRMaXNhbGVuZGFyYWRkZG1lcjogZnVuY3Rpb24gZ2V0TGlzYWxlbmRhcmFkZGRtZXIoKSB7CiAgICAgIHZhciBfdGhpczExID0gdGhpczsKCiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CiAgICAgIHRoaXMucXVlcnlEYXRhID0gW107CiAgICAgIGxpc3RJbmRleHRhbmwodGhpcy5jYWxlbmRhcmFkZG1lcikudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBfdGhpczExLnF1ZXJ5RGF0YSA9IHJlc3BvbnNlLmRhdGE7CgogICAgICAgICAgX3RoaXMxMS5xdWVyeURhdGEuY29sdW1ucy5maWx0ZXIoZnVuY3Rpb24gKHJvdXRlKSB7CiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHJvdXRlKQogICAgICAgICAgICBpZiAocm91dGUuaHRtbFR5cGUgPT0gImlucHV0IiB8fCByb3V0ZS5odG1sVHlwZSA9PSAndGV4dGFyZWEnKSB7CiAgICAgICAgICAgICAgX3RoaXMxMS5pbnB1dExpc3QucHVzaChyb3V0ZSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocm91dGUuaHRtbFR5cGUgPT0gInNlbGVjdCIpIHsKICAgICAgICAgICAgICBfdGhpczExLnNlbGVjdExpc3QucHVzaChyb3V0ZSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocm91dGUuaHRtbFR5cGUgPT0gImRhdGV0aW1lIikgewogICAgICAgICAgICAgIF90aGlzMTEuZGF0YUxpc3QucHVzaChyb3V0ZSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAocm91dGUuaHRtbFR5cGUgPT0gImVkaXRvciIpIHsKICAgICAgICAgICAgICBfdGhpczExLmVkaXRvckxpc3QucHVzaChyb3V0ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOyAvLyBjb25zb2xlLmxvZyh0aGlzLnNlbGVjdExpc3QpCgogICAgICAgIH0KCiAgICAgICAgX3RoaXMxMS5sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0pOwogICAgfSwKICAgIGdvVGFyZ2V0OiBmdW5jdGlvbiBnb1RhcmdldChocmVmKSB7CiAgICAgIHdpbmRvdy5vcGVuKGhyZWYsICJfYmxhbmsiKTsKICAgIH0sCiAgICBoYW5kbGVTaXplQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTaXplQ2hhbmdlKHZhbCkgewogICAgICBjb25zb2xlLmxvZygiXHU2QkNGXHU5ODc1ICIuY29uY2F0KHZhbCwgIiBcdTY3NjEiKSk7CiAgICB9LAogICAgaGFuZGxlQ3VycmVudENoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ3VycmVudENoYW5nZSh2YWwpIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlTm8gPSB2YWw7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgICBjb25zb2xlLmxvZygiXHU1RjUzXHU1MjREXHU5ODc1OiAiLmNvbmNhdCh2YWwpKTsKICAgIH0sCiAgICAvLyDlhazlj7jmpoLlhrUKICAgIGhhbmRsZVNpemVDaGFuZ2Vwcm9maWxlOiBmdW5jdGlvbiBoYW5kbGVTaXplQ2hhbmdlcHJvZmlsZSh2YWwpIHsKICAgICAgY29uc29sZS5sb2coIlx1NkJDRlx1OTg3NSAiLmNvbmNhdCh2YWwsICIgXHU2NzYxIikpOwogICAgfSwKICAgIGhhbmRsZUN1cnJlbnRDaGFuZ2Vwcm9maWxlOiBmdW5jdGlvbiBoYW5kbGVDdXJyZW50Q2hhbmdlcHJvZmlsZSh2YWwpIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtc3RhYnByb2ZpbGUucGFnZU5vID0gdmFsOwogICAgICB0aGlzLmdldExpc3Byb2ZpbGUoKTsKICAgICAgY29uc29sZS5sb2coIlx1NUY1M1x1NTI0RFx1OTg3NTogIi5jb25jYXQodmFsKSk7CiAgICB9LAogICAgLy8g6YCa6K6v5b2VCiAgICBoYW5kbGVTaXplQ2hhbmdlYWxpOiBmdW5jdGlvbiBoYW5kbGVTaXplQ2hhbmdlYWxpKHZhbCkgewogICAgICBjb25zb2xlLmxvZygiXHU2QkNGXHU5ODc1ICIuY29uY2F0KHZhbCwgIiBcdTY3NjEiKSk7CiAgICB9LAogICAgaGFuZGxlQ3VycmVudENoYW5nZWFsaTogZnVuY3Rpb24gaGFuZGxlQ3VycmVudENoYW5nZWFsaSh2YWwpIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtc2FpbC5wYWdlTm8gPSB2YWw7CiAgICAgIHRoaXMuZ2V0TGlzYWlsdHdvKCk7CiAgICAgIGNvbnNvbGUubG9nKCJcdTVGNTNcdTUyNERcdTk4NzU6ICIuY29uY2F0KHZhbCkpOwogICAgfSwKICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbiBoYW5kbGVDbGljayh0YWIsIGV2ZW50KSB7CiAgICAgIGNvbnNvbGUubG9nKHRhYiwgZXZlbnQpOwogICAgfSwKICAgIC8vIOesrOS4gOmDqOWIhnRhYueCueWHuwogICAgdGFiU2J1OiBmdW5jdGlvbiB0YWJTYnUoaW5kZXgpIHsKICAgICAgY29uc29sZS5sb2coaW5kZXgpOwogICAgICB0aGlzLm51bSA9IGluZGV4IC0gMTsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy5jb25kaXRpb24ubm90aWNlX3R5cGUgPSBpbmRleDsKICAgICAgdGhpcy5nZXRMaXN0KCk7CiAgICB9LAogICAgLy8g56ys5LqM6YOo5YiGdGFi54K55Ye7bnVtbGlzdAogICAgdGFiTGlzdDogZnVuY3Rpb24gdGFiTGlzdChpbmRleCkgewogICAgICB0aGlzLm51bWxpc3QgPSBpbmRleDsKICAgIH0sCiAgICAvLyDnrKzkuInpg6jliIZ0YWLngrnlh7sKICAgIHRhYlNidXByb2ZpbGU6IGZ1bmN0aW9uIHRhYlNidXByb2ZpbGUoaW5kZXgpIHsKICAgICAgdGhpcy5udW1wcm9maWxlID0gaW5kZXggLSAxOwogICAgICB0aGlzLnF1ZXJ5UGFyYW1zdGFicHJvZmlsZS5jb25kaXRpb24ubm90aWNlX3R5cGUgPSBpbmRleDsKICAgICAgdGhpcy5nZXRMaXNwcm9maWxlKCk7CiAgICB9LAogICAgLy8g6KGo5Y2V6YeN572uCiAgICByZXNldDogZnVuY3Rpb24gcmVzZXQoKSB7CiAgICAgIHRoaXMuZm9ybSA9IHt9LCB0aGlzLnJlc2V0Rm9ybSgiZm9ybSIpOwogICAgfSwKICAgIC8vIOWPlua2iOaMiemSrgogICAgY2FuY2VsOiBmdW5jdGlvbiBjYW5jZWwoKSB7CiAgICAgIHRoaXMub3BlbiA9IGZhbHNlOwogICAgICB0aGlzLnJlc2V0KCk7CiAgICB9LAoKICAgIC8qKiDmlrDlop7mjInpkq7mk43kvZwgKi8KICAgIGhhbmRsZUFkZDogZnVuY3Rpb24gaGFuZGxlQWRkKCkgewogICAgICB0aGlzLm51bW1lciA9IDA7CiAgICAgIGNvbnNvbGUubG9nKHRoaXMub3Blbik7CiAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgdGhpcy5mb3JtID0ge307CiAgICAgIHRoaXMuZ2V0TGlzYWxlbmRhcmFkZGQoKTsKICAgICAgdGhpcy5vcGVuID0gdHJ1ZTsKICAgICAgdGhpcy50aXRsZSA9ICLmt7vliqDml6XljoYiOwogICAgfSwKCiAgICAvKiog5o+Q5Lqk5oyJ6ZKu5pON5L2cICovCiAgICBoYW5kbGVRdWVyeTogZnVuY3Rpb24gaGFuZGxlUXVlcnkoKSB7CiAgICAgIHZhciBfdGhpczEyID0gdGhpczsKCiAgICAgIHZhciBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0aGlzLnF1ZXJ5RGF0YS5jb2x1bW5zKSwKICAgICAgICAgIF9zdGVwOwoKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykgewogICAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcC52YWx1ZTsKCiAgICAgICAgICBpZiAoaXRlbS5odG1sVHlwZSA9PSAnY2hlY2tib3gnIHx8IGl0ZW0uaHRtbFR5cGUgPT0gJ2ltYWdlVXBsb2FkJyB8fCBpdGVtLmh0bWxUeXBlID09ICdmaWxlVXBsb2FkJykgewogICAgICAgICAgICB0aGlzLmZvcm1baXRlbS5jb2x1bW5OYW1lXSA9IHRoaXMuJHJlZnNbaXRlbS5jb2x1bW5OYW1lXVswXS5jb25maWc7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLmZvcm1baXRlbS5jb2x1bW5OYW1lXSA9IHRoaXMuJHJlZnNbaXRlbS5jb2x1bW5OYW1lXVswXS5jb25maWdbaXRlbS5jb2x1bW5OYW1lXTsKICAgICAgICAgIH0KICAgICAgICB9IC8vIHRoaXMuZm9ybWUgPSB0aGlzLmZvcm0KCiAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgIF9pdGVyYXRvci5lKGVycik7CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgX2l0ZXJhdG9yLmYoKTsKICAgICAgfQoKICAgICAgaWYgKHRoaXMubnVtbWVyID09IDApIHsKICAgICAgICB0aGlzLmZvcm1lLnRhYmxlID0gJ3N5c19zY2hlZHVsZSc7CiAgICAgICAgdGhpcy5mb3JtZS5vYmpJZCA9IC0xOwogICAgICAgIHRoaXMuZm9ybWUuZml4ZWREYXRhID0gdGhpcy5mb3JtOwoKICAgICAgICBpZiAodGhpcy5mb3JtZS5maXhlZERhdGEucmVtaW5kX3R5cGUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgdGhpcy5mb3JtZS5maXhlZERhdGEucmVtaW5kX3R5cGUgPSB0aGlzLmZvcm1lLmZpeGVkRGF0YS5yZW1pbmRfdHlwZS5qb2luKCcsJyk7CiAgICAgICAgfSAvL+aXpeWOhgoKCiAgICAgICAgY29uc29sZS5sb2codGhpcy5mb3JtZS5maXhlZERhdGEsIHRoaXMuZm9ybWUpOwogICAgICAgIGFkZENvbmZpZ2luZGV4KHRoaXMuZm9ybWUpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICBfdGhpczEyLm1zZ1N1Y2Nlc3MoIuaWsOWinuaIkOWKnyIpOyAvLyB0aGlzLm9wZW4gPSBmYWxzZTsKCgogICAgICAgICAgX3RoaXMxMi5nZXRMaXNhbGVuZGFyKCk7CgogICAgICAgICAgX3RoaXMxMi5jYW5jZWwoKTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIGlmICh0aGlzLm51bW1lciA9PSAxKSB7CiAgICAgICAgLy8gdGhpcy5mb3JtLnRhYmxlID0gJ3N5c19tZW1vcmFuZHVtJwogICAgICAgIHRoaXMuZm9ybWUudGFibGUgPSAnc3lzX21lbW9yYW5kdW0nOwogICAgICAgIHRoaXMuZm9ybWUub2JqSWQgPSAtMTsKICAgICAgICB0aGlzLmZvcm1lLmZpeGVkRGF0YSA9IHRoaXMuZm9ybTsKCiAgICAgICAgaWYgKHRoaXMuZm9ybWUuZml4ZWREYXRhLnJlbWluZF90eXBlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIHRoaXMuZm9ybWUuZml4ZWREYXRhLnJlbWluZF90eXBlID0gdGhpcy5mb3JtZS5maXhlZERhdGEucmVtaW5kX3R5cGUuam9pbignLCcpOwogICAgICAgIH0gLy/lpIflv5jlvZUKCgogICAgICAgIGFkZENvbmZpZ2luZGV4KHRoaXMuZm9ybWUpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICBfdGhpczEyLm1zZ1N1Y2Nlc3MoIuaWsOWinuaIkOWKnyIpOyAvLyB0aGlzLm9wZW4gPSBmYWxzZTsKCgogICAgICAgICAgX3RoaXMxMi5nZXRMaXNtZW1vcmFuZHVtKCk7CgogICAgICAgICAgX3RoaXMxMi5jYW5jZWwoKTsKICAgICAgICB9KTsKICAgICAgfQoKICAgICAgY29uc29sZS5sb2codGhpcy5mb3JtLmZpeGVkRGF0YSwgMjIzMTEpOyAvLyB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICAvLyDlvLnmoYYKICAgIGNoYW5nZUZuOiBmdW5jdGlvbiBjaGFuZ2VGbihvYmopIHsKICAgICAgY29uc29sZS5sb2cob2JqKTsKCiAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKICAgICAgICB0aGlzLmZvcm0uZml4ZWREYXRhW2tleV0gPSBvYmpba2V5XTsKICAgICAgfQogICAgfSwKICAgIC8vIOaWsOWinuWkh+W/mOW9lQogICAgbWVtb2VyZTogZnVuY3Rpb24gbWVtb2VyZSgpIHsKICAgICAgdGhpcy5udW1tZXIgPSAxOwogICAgICB0aGlzLm9wZW4gPSB0cnVlOwogICAgICB0aGlzLnRpdGxlID0gIua3u+WKoOWkh+W/mOW9lSI7CiAgICAgIHRoaXMuZ2V0TGlzYWxlbmRhcmFkZGRtZXIoKTsKICAgIH0sCiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdGlvbkNoYW5nZSgpIHt9LAogICAgLy8g5a2X56ym5Liy5Y676YeNCiAgICB1bmlxdWU6IGZ1bmN0aW9uIHVuaXF1ZShhcnIpIHsKICAgICAgdmFyIGFyZmUgPSBbXTsKICAgICAgdmFyIHNlcmZndCA9IFtdOwogICAgICBhcmZlID0gYXJyLnNwbGl0KCcsJyk7CgogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZmUubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoc2VyZmd0LmluZGV4T2YoYXJmZVtpXSkgPT09IC0xKSB7CiAgICAgICAgICBzZXJmZ3QucHVzaChhcmZlW2ldKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGNvbnNvbGUubG9nKHNlcmZndC5qb2luKCcsJykpOyAvLyBjb25zdCByZXMgPSBuZXcgTWFwKCk7CiAgICAgIC8vIGNvbnNvbGUubG9nKGFyci5maWx0ZXIoKGFycikgPT4gIXJlcy5oYXMoYXJyLmlkKSAmJiByZXMuc2V0KGFyci5pZCwgMSkpKQogICAgICAvLyByZXR1cm4gYXJyLmZpbHRlcigoYXJyKSA9PiAhcmVzLmhhcyhhcnIuaWQpICYmIHJlcy5zZXQoYXJyLmlkLCAxKSk7CiAgICB9CiAgfQp9Ow=="},null]}