{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataManage\\dataDWCatalog\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataResource\\dataManage\\dataDWCatalog\\index.vue","mtime":1749236141335},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmNvbnN0cnVjdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50ZXN0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgeyBnZXREaWN0aW9uYXJ5QnlDb2RlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5LmpzJzsKaW1wb3J0IHRhYmxlTWl4aW4gZnJvbSAnQC9taXhpbnMvdGFibGUuanMnOyAvLyDliJfooahtaXhpbnMKaW1wb3J0IHNvdXJjZURpYWxvZyBmcm9tICcuL3NvdXJjZURpYWxvZy52dWUnOwppbXBvcnQgZmllbGRzTWFuYWdlIGZyb20gJy4vZmllbGRzTWFuYWdlLnZ1ZSc7CmltcG9ydCBBUEkgZnJvbSAnQC9hcGkvYnVzaW5lc3MvZGF0YURXQ2F0YWxvZyc7CmltcG9ydCB7IG1hcFN0YXRlIH0gZnJvbSAndnVleCc7CmltcG9ydCBQdXRPdXREaWFsb2cgZnJvbSAnLi9QdXRPdXREaWFsb2cudnVlJzsKaW1wb3J0IE1vdmVEaWFsb2cgZnJvbSAnLi9Nb3ZlRGlhbG9nLnZ1ZSc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRGF0YURXQ2F0YWxvZycsCiAgY29tcG9uZW50czogewogICAgTW92ZURpYWxvZzogTW92ZURpYWxvZywKICAgIFB1dE91dERpYWxvZzogUHV0T3V0RGlhbG9nLAogICAgc291cmNlRGlhbG9nOiBzb3VyY2VEaWFsb2csCiAgICBmaWVsZHNNYW5hZ2U6IGZpZWxkc01hbmFnZQogIH0sCiAgbWl4aW5zOiBbdGFibGVNaXhpbl0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB2YXIgVFJFRV9DT05GSUcgPSB7CiAgICAgIHRyZWVQcm9wczogewogICAgICAgIHZhbHVlOiAnaWQnLAogICAgICAgIGxhYmVsOiAnbmFtZScKICAgICAgfSwKICAgICAgZXhwYW5kQWxsOiBmYWxzZSwKICAgICAgZGVmYXVsdEV4cGFuZGVkS2V5czogWycxJ10sCiAgICAgIGRlZmF1bHRDaGVja2VkS2V5czogWycxJ10sCiAgICAgIC8vIOatpOWkhGZpZWxkc+WGhemFjee9ruWvueixoeWxnuaAp+WMheaLrDogbGFiZWwvcHJvcC9ydWxlcy90eXBlKOaemuS4vjpzd2l0Y2gvbnVtYmVyL2lucHV0KOm7mOiupCkpL3NwYW4vCiAgICAgIHRyZWVGaWVsZHM6IFt7CiAgICAgICAgbGFiZWw6ICfotYTmupDnm67lvZXlkI3np7AnLAogICAgICAgIHByb3A6ICduYW1lJywKICAgICAgICBsYWJlbFdpZHRoOiAnMTIwJywKICAgICAgICBydWxlczogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+i1hOa6kOebruW9leWQjeensOS4jeiDveS4uuepuicKICAgICAgICB9XQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfotYTmupDnm67lvZXnvJbnoIEnLAogICAgICAgIHByb3A6ICdjb2RlJywKICAgICAgICBsYWJlbFdpZHRoOiAnMTIwJywKICAgICAgICBydWxlczogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+i1hOa6kOebruW9lee8lueggeS4jeiDveS4uuepuicKICAgICAgICB9XQogICAgICB9XSwKICAgICAgY3VyTm9kZToge30gLy8g5b2T5YmN6YCJ5oup6IqC54K5CiAgICB9OwogICAgdmFyIFRBQkxFX0NPTkZJRyA9IHsKICAgICAgZGVwbG95U3RhdHVzOiBbewogICAgICAgIHZhbHVlOiAnMScsCiAgICAgICAgbGFiZWw6ICflt7Llj5HluIMnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJzAnLAogICAgICAgIGxhYmVsOiAn5pyq5Y+R5biDJwogICAgICB9XSwKICAgICAgdGFibGVDbGFzc0xpc3Q6IFt7CiAgICAgICAgdmFsdWU6ICcxJywKICAgICAgICBsYWJlbDogJ+eJqeeQhuihqCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMicsCiAgICAgICAgbGFiZWw6ICfliqjmgIHooagnCiAgICAgIH1dLAogICAgICAvLyDliJfooajooajlpLQKICAgICAgY29sdW1uczogW3sKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOWQjeensCcsCiAgICAgICAgcHJvcDogJ25hbWUnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOe8lueggScsCiAgICAgICAgcHJvcDogJ2NvZGUnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aVsOaNruW6k+ihqOWQjScsCiAgICAgICAgcHJvcDogJ3RhYmxlTmFtZUVuJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICflrp7kvZPooajnsbvliKsnLAogICAgICAgIHByb3A6ICd0YWJsZUNsYXNzJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIHNsb3Q6ICd0YWJsZUNsYXNzJywKICAgICAgICB3aWR0aDogJzE0MCcsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+WPkeW4g+eKtuaAgScsCiAgICAgICAgcHJvcDogJ2RlcGxveWVkJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIHNsb3Q6ICdkZXBsb3llZCcsCiAgICAgICAgd2lkdGg6ICcxNDAnLAogICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICB9LCB7CiAgICAgICAgZGF0YVR5cGU6ICdvcHRpb24nLAogICAgICAgIGxhYmVsOiAn5pON5L2cJywKICAgICAgICB3aWR0aDogJzI2MHB4JywKICAgICAgICBmaXhlZDogJ3JpZ2h0JywKICAgICAgICBvcGVyYXRpb246IFt7CiAgICAgICAgICBuYW1lOiAn5a2X5q61566h55CGJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIGljb246ICdlbC1pY29uLXMtb3JkZXInLAogICAgICAgICAgY29sb3I6ICcjNDA5ZWZmJywKICAgICAgICAgIHBsYWluOiB0cnVlLAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5yb3dEYXRhID0gcm93OwogICAgICAgICAgICBfdGhpcy5maWVsZE1hbmFnZShyb3cpOwogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICflj5HluIPlu7rooagnLAogICAgICAgICAgdHlwZTogJ3RleHQnLAogICAgICAgICAgc2l6ZTogJ21pbmknLAogICAgICAgICAgaWNvbjogJ2VsLWljb24tcy1wcm9tb3Rpb24nLAogICAgICAgICAgY29sb3I6ICcjZmE5MTJhJywKICAgICAgICAgIHBsYWluOiB0cnVlLAogICAgICAgICAgc2hvd0hpZGU6IGZ1bmN0aW9uIHNob3dIaWRlKHJvdykgewogICAgICAgICAgICByZXR1cm4gcm93LmRlcGxveWVkICE9PSAnMSc7CiAgICAgICAgICB9LAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5wdWJsaXNoVGFibGUocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5Yig6ZmkJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIGljb246ICdlbC1pY29uLWRlbGV0ZScsCiAgICAgICAgICBjb2xvcjogJ3JlZCcsCiAgICAgICAgICBwbGFpbjogdHJ1ZSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMuZGVsVGFibGUocm93KTsKICAgICAgICAgIH0KICAgICAgICB9XQogICAgICB9XSwKICAgICAgZGVmYXVsdEZpbHRlcjogW3sKICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgcHJvcGVydHk6ICdkd0NhdGFsb2dzSWQnLAogICAgICAgIHJlbGF0aW9uOiAnQU5EJywKICAgICAgICB2YWx1ZTogJycKICAgICAgfV0sCiAgICAgIHJvd0RhdGE6IHt9CiAgICB9OwogICAgdmFyIERJQUxPR19DT05GSUcgPSB7CiAgICAgIGRpYWxvZ1Zpc2libGU6IGZhbHNlLAogICAgICBkaWFsb2dUaXRsZTogJ+aWsOWinicsCiAgICAgIGZpZWxkRGlhbG9nVmlzaWJsZTogZmFsc2UsCiAgICAgIGRpYWxvZ2REYXRhOiB7fSwKICAgICAgcHV0T3V0VmlzaWJsZTogZmFsc2UsCiAgICAgIGRpYWxvZ01vdmU6IGZhbHNlLAogICAgICBNb3ZlVGl0bGU6ICfnp7vliqgnCiAgICB9OwogICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoewogICAgICBzZWxlY3RlZFJvd3M6IFtdLAogICAgICAvLyDmlrDlop7vvJrlrZjlgqjpgInkuK3nmoTooYzmlbDmja4KICAgICAgdHJlZURhdGE6IFtdCiAgICB9LCBUUkVFX0NPTkZJRyksIFRBQkxFX0NPTkZJRyksIERJQUxPR19DT05GSUcpLCB7fSwgewogICAgICB1cGxvYWRWaXNpYmxlOiBmYWxzZSwKICAgICAgdXBsb2FkTG9hZGluZzogZmFsc2UsCiAgICAgIGltcG9ydERhdGE6IHsKICAgICAgICBjYXRhbG9nSWQ6ICcnCiAgICAgIH0KICAgIH0pOwogIH0sCiAgY29tcHV0ZWQ6IF9vYmplY3RTcHJlYWQoewogICAgLy8g6YWN572u5YiX6KGo5o6l5Y+j5pa55rOV77ya5Y+q5pyJ6YWN572u5LqG6K+l6K6h566X5bGe5oCnIOaJjeS8muaJp+ihjCB0YWJsZSBtaXhpbnPkuK3nmoRnZXREYXRh5pa55rOVCiAgICBkYXRhTWV0aG9kOiBmdW5jdGlvbiBkYXRhTWV0aG9kKCkgewogICAgICByZXR1cm4gQVBJLnF1ZXJ5RFdUYWJsZTsKICAgIH0sCiAgICBhY3Rpb25Vcmw6IGZ1bmN0aW9uIGFjdGlvblVybChfKSB7CiAgICAgIHJldHVybiAiIi5jb25jYXQod2luZG93LmNvbnRleHQucG9ydGFsLCAiL2Jpei9kYXRhUmVzb3VyY2UvZHdUYWJsZS92MS9pbXBvcnRGaWxlIik7CiAgICB9CiAgfSwgbWFwU3RhdGUoewogICAgaGVhZGVyczogZnVuY3Rpb24gaGVhZGVycyhzdGF0ZSkgewogICAgICByZXR1cm4gewogICAgICAgIEF1dGhvcml6YXRpb246ICJCZWFyZXIgIi5jb25jYXQoc3RhdGUubG9naW4uY3VycmVudFVzZXIudG9rZW4pCiAgICAgIH07CiAgICB9CiAgfSkpLAogIG1ldGhvZHM6IHsKICAgIGdldERpY3Rpb25hcnlCeUNvZGU6IGdldERpY3Rpb25hcnlCeUNvZGUsCiAgICAvLyDmoJEgLS0tLS0tLS0tLS0tLS0tLS0KICAgIGdldFRyZWVOb2RlczogZnVuY3Rpb24gZ2V0VHJlZU5vZGVzKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJGdldERXVHJlZSwgX3lpZWxkJEFQSSRnZXREV1RyZWUkLCB2YWx1ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmdldERXVHJlZSgpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRnZXREV1RyZWUgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRBUEkkZ2V0RFdUcmVlJCA9IF95aWVsZCRBUEkkZ2V0RFdUcmVlLnZhbHVlOwogICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJEFQSSRnZXREV1RyZWUkID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCRBUEkkZ2V0RFdUcmVlJDsKICAgICAgICAgICAgICBfdGhpczIuZGVmYXVsdEV4cGFuZGVkS2V5cyA9IFsodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbHVlWzBdLmlkKSB8fCAnJ107CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgicmV0dXJuIiwgewogICAgICAgICAgICAgICAgZGF0YTogdmFsdWUgfHwgW10KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHJlbG9hZFRyZWU6IGZ1bmN0aW9uIHJlbG9hZFRyZWUoKSB7CiAgICAgIHRoaXMuJHJlZnMuYXBwQXN5bmNUcmVlLmdldFRyZWVEYXRhKCk7CiAgICB9LAogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uOiB0cmVlQWN0aW9uc+aUr+aMgeWHveaVsOS5n+aUr+aMgeaVsOe7hO+8jOeUseS6juWunumZheWcuuaZr+W9k+S4rSDlj6/og73kvJrliqjmgIHorr7nva7mjInpkq7vvIzmlYXku6Xlh73mlbDnpLrkvovmnaXlsZXnpLoNCiAgICAgKiBAcGFyYW0geyp9IGRhdGEg5b2T5YmN54K55Ye76IqC54K55pWw5o2uDQogICAgICogQHJldHVybiB7Kn0g5b2T5YmN6IqC54K55bGV56S655qE5pON5L2c6aG55pWw57uEDQogICAgICovCiAgICB0cmVlQWN0aW9uczogZnVuY3Rpb24gdHJlZUFjdGlvbnMoZGF0YSkgewogICAgICAvLyDmoLnoioLngrnliKTmlq3mlrnlvI/ku6XkuJrliqHkuLrlh4bvvIzmraTlpITku4XkuLrnpLrkvosKICAgICAgcmV0dXJuIFt7CiAgICAgICAgbGFiZWw6ICfmt7vliqAnLAogICAgICAgIHR5cGU6ICdhZGQnLAogICAgICAgIG1ldGhvZDogdGhpcy5hZGROb2RlCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+e8lui+kScsCiAgICAgICAgdHlwZTogJ2VkaXQnLAogICAgICAgIG1ldGhvZDogdGhpcy5lZGl0Tm9kZSwKICAgICAgICBzaG93SGlkZTogZnVuY3Rpb24gc2hvd0hpZGUocm93KSB7CiAgICAgICAgICByZXR1cm4gcm93LmlkICE9PSAnMSc7CiAgICAgICAgfQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfliKDpmaQnLAogICAgICAgIHR5cGU6ICdkZWxldGUnLAogICAgICAgIG1ldGhvZDogdGhpcy5kZWxOb2RlLAogICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgIHJldHVybiByb3cuaWQgIT09ICcxJzsKICAgICAgICB9CiAgICAgIH1dOwogICAgfSwKICAgIG9uVHJlZU5vZGVDbGljazogZnVuY3Rpb24gb25UcmVlTm9kZUNsaWNrKG5vZGUpIHsKICAgICAgdmFyIF90aGlzJGN1ck5vZGU7CiAgICAgIGlmIChub2RlLmlkID09PSAoKF90aGlzJGN1ck5vZGUgPSB0aGlzLmN1ck5vZGUpID09PSBudWxsIHx8IF90aGlzJGN1ck5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGN1ck5vZGUuaWQpKSByZXR1cm47CiAgICAgIHRoaXMuY3VyTm9kZSA9IF9vYmplY3RTcHJlYWQoe30sIG5vZGUpOwogICAgICB0aGlzLmltcG9ydERhdGEuY2F0YWxvZ0lkID0gdGhpcy5jdXJOb2RlLmlkOwogICAgICB0aGlzLmdldERhdGEoKTsKICAgIH0sCiAgICBhZGROb2RlOiBmdW5jdGlvbiBhZGROb2RlKHBhcmFtcywgbm9kZSkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgY29kZSwgbmFtZSwgaWQsIG5ld05vZGUsIF95aWVsZCRBUEkkYWRkRFdUcmVlLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgY29kZSA9IHBhcmFtcy5jb2RlLCBuYW1lID0gcGFyYW1zLm5hbWU7CiAgICAgICAgICAgICAgaWQgPSBub2RlLmlkOwogICAgICAgICAgICAgIG5ld05vZGUgPSB7CiAgICAgICAgICAgICAgICBjb2RlOiBjb2RlLAogICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgIHBhcmVudElkOiBpZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAzOwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNjsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmFkZERXVHJlZShuZXdOb2RlKTsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgIF95aWVsZCRBUEkkYWRkRFdUcmVlID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGFkZERXVHJlZS5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRhZGREV1RyZWUubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzMy5yZWxvYWRUcmVlKCk7CiAgICAgICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2Uuc3VjY2Vzcygn5re75Yqg6LWE5rqQ55uu5b2V5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxMjsKICAgICAgICAgICAgICBfY29udGV4dDIudDAgPSBfY29udGV4dDJbImNhdGNoIl0oMyk7CiAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQyLnQwIHx8ICfmt7vliqDotYTmupDnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMiwgbnVsbCwgW1szLCAxMl1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgZWRpdE5vZGU6IGZ1bmN0aW9uIGVkaXROb2RlKHBhcmFtcykgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgY29kZSwgbmFtZSwgcGFyZW50SWQsIGlkLCBuZXdOb2RlLCBfeWllbGQkQVBJJGVkaXREV1RyZWUsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBjb2RlID0gcGFyYW1zLmNvZGUsIG5hbWUgPSBwYXJhbXMubmFtZSwgcGFyZW50SWQgPSBwYXJhbXMucGFyZW50SWQsIGlkID0gcGFyYW1zLmlkOwogICAgICAgICAgICAgIG5ld05vZGUgPSB7CiAgICAgICAgICAgICAgICBjb2RlOiBjb2RlLAogICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgIHBhcmVudElkOiBwYXJlbnRJZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAyOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmVkaXREV1RyZWUobmV3Tm9kZSk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICBfeWllbGQkQVBJJGVkaXREV1RyZWUgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkZWRpdERXVHJlZS5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRlZGl0RFdUcmVlLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczQucmVsb2FkVHJlZSgpOwogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLnN1Y2Nlc3MoJ+e8lui+kei1hOa6kOebruW9leaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDE0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTE7CiAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzWyJjYXRjaCJdKDIpOwogICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0My50MCB8fCAn57yW6L6R6LWE5rqQ55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMsIG51bGwsIFtbMiwgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGRlbE5vZGU6IGZ1bmN0aW9uIGRlbE5vZGUocGFyYW1zLCBub2RlKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHJlbW92ZURXVHIsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkucmVtb3ZlRFdUcmVlKG5vZGUuaWQpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRyZW1vdmVEV1RyID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJHJlbW92ZURXVHIuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkcmVtb3ZlRFdUci5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM1LnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS5zdWNjZXNzKCfliKDpmaTotYTmupDnm67lvZXmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0NC5wcmV2ID0gOTsKICAgICAgICAgICAgICBfY29udGV4dDQudDAgPSBfY29udGV4dDRbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ0LnQwIHx8ICfliKDpmaTotYTmupDnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCwgbnVsbCwgW1swLCA5XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmlrDlop7vvJrlpITnkIbooajmoLzpgInmi6nlj5jljJYKICAgIGhhbmRsZVNlbGVjdGlvbkNoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGlvbikgewogICAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHNlbGVjdGlvbjsKICAgICAgY29uc29sZS5sb2codGhpcy5zZWxlY3RlZFJvd3MsICfli77pgInnmoTmlbDmja4nKTsKICAgIH0sCiAgICBkYXRhTW92ZTogZnVuY3Rpb24gZGF0YU1vdmUoKSB7CiAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cy5sZW5ndGggPT09IDApIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+iHs+WwkemAieaLqeS4gOadoeimgeenu+WKqOeahOaVsOaNricpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmRpYWxvZ01vdmUgPSB0cnVlOwogICAgICB0aGlzLk1vdmVUaXRsZSA9ICfnp7vliqjooagt6K+36YCJ5oup56e75Yqo55qE55uu5qCH55uu5b2VJzsKICAgIH0sCiAgICAvLyDmlrDlop7vvJrnp7vliqjnoa7orqTlkI7nmoTlpITnkIYKICAgIGhhbmRsZU1vdmVTdWNjZXNzOiBmdW5jdGlvbiBoYW5kbGVNb3ZlU3VjY2VzcygpIHsKICAgICAgdGhpcy5zZWxlY3RlZFJvd3MgPSBbXTsgLy8g5riF56m66YCJ5oupCiAgICAgIHRoaXMucmVmcmVzaCgpOyAvLyDliLfmlrDmlbDmja4KICAgIH0sCiAgICAvLyDliJfooaggLS0tLS0tLS0tLS0tCiAgICBhZGRUYWJsZTogZnVuY3Rpb24gYWRkVGFibGUoKSB7CiAgICAgIHZhciBfdGhpcyRjdXJOb2RlMjsKICAgICAgaWYgKCEoKF90aGlzJGN1ck5vZGUyID0gdGhpcy5jdXJOb2RlKSAhPT0gbnVsbCAmJiBfdGhpcyRjdXJOb2RlMiAhPT0gdm9pZCAwICYmIF90aGlzJGN1ck5vZGUyLmlkKSkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+36YCJ5oup6LWE5rqQ6aG55omA5bGe55uu5b2VJyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuZGlhbG9nVGl0bGUgPSAn5paw5aKe5pWw5o2u6LWE5rqQ6aG5JzsKICAgICAgdGhpcy5kaWFsb2dkRGF0YSA9IHsKICAgICAgICBkd0NhdGFsb2dzSWQ6IHRoaXMuY3VyTm9kZS5pZAogICAgICB9OwogICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlOwogICAgfSwKICAgIGVkaXRUYWJsZTogZnVuY3Rpb24gZWRpdFRhYmxlKHJvdykgewogICAgICB0aGlzLmRpYWxvZ1RpdGxlID0gIlx1N0YxNlx1OEY5MSAtICIuY29uY2F0KHJvdy5uYW1lKTsKICAgICAgdGhpcy5kaWFsb2dkRGF0YSA9IHJvdzsKICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBmaWVsZE1hbmFnZTogZnVuY3Rpb24gZmllbGRNYW5hZ2UoKSB7CiAgICAgIHRoaXMuZmllbGREaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBkZWxUYWJsZTogZnVuY3Rpb24gZGVsVGFibGUocm93KSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLiRjb25maXJtKCJcdTZCNjRcdTY0Q0RcdTRGNUNcdTVDMDZcdTZDMzhcdTRFNDVcdTUyMjBcdTk2NjRcdThENDRcdTZFOTBcdTk4NzlcdUZGMDgiLmNvbmNhdChyb3cubmFtZSwgIlx1RkYwOSwgXHU2NjJGXHU1NDI2XHU3RUU3XHU3RUVEPyIpLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBfeWllbGQkQVBJJHJlbW92ZURXU28sIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiBBUEkucmVtb3ZlRFdTb3VyY2Uocm93LmlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkcmVtb3ZlRFdTbyA9IF9jb250ZXh0NS5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRyZW1vdmVEV1NvLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHJlbW92ZURXU28ubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNi5nZXREYXRhKCk7CiAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk6LWE5rqQ6aG55oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzNi4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+WIoOmZpOi1hOa6kOmhueWksei0pe+8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0NS50MCA9IF9jb250ZXh0NVsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDUudDAgfHwgJ+WIoOmZpOi1hOa6kOmhueWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1LCBudWxsLCBbWzAsIDldXSk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIG9uQmVmb3JlR2V0RGF0YTogZnVuY3Rpb24gb25CZWZvcmVHZXREYXRhKHF1ZXJ5UGFyYW1zLCBmb3JtRGF0YSkgewogICAgICB0aGlzLnNldEZpbHRlclZhbHVlKHRoaXMucXVlcnlQYXJhbXMsIHRoaXMuZGVmYXVsdEZpbHRlciwgJ2R3Q2F0YWxvZ3NJZCcsIHRoaXMuY3VyTm9kZS5pZCk7CiAgICB9LAogICAgb25Db25maXJtOiBmdW5jdGlvbiBvbkNvbmZpcm0oZGF0YSwgcERhdGEpIHsKICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICB9LAogICAgcHVibGlzaFRhYmxlOiBmdW5jdGlvbiBwdWJsaXNoVGFibGUoZGF0YSkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNigpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTYkKF9jb250ZXh0NikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM3LnJvd0RhdGEgPSBkYXRhOwogICAgICAgICAgICAgIF90aGlzNy5wdXRPdXRWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAvLyB0aGlzLiRjb25maXJtKGDmraTmk43kvZzlsIblj5HluIPvvIgke2RhdGEubmFtZX3vvIksIOaYr+WQpue7p+e7rT9gLCAn5o+Q56S6JywgewogICAgICAgICAgICAgIC8vICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgIC8vICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgICAgLy8gICB0eXBlOiAnd2FybmluZycsCiAgICAgICAgICAgICAgLy8gfSkKICAgICAgICAgICAgICAvLyAgIC50aGVuKGFzeW5jICgpID0+IHsKICAgICAgICAgICAgICAvLyAgICAgdHJ5IHsKICAgICAgICAgICAgICAvLyAgICAgICBjb25zdCB7IHN0YXRlLCBtZXNzYWdlIH0gPSBhd2FpdCBBUEkucHVibGlzaERXU291cmNlKGRhdGEuaWQpOwogICAgICAgICAgICAgIC8vICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+i1hOa6kOmhueWPkeW4g+aIkOWKn++8gScpOwogICAgICAgICAgICAgIC8vICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgLy8gICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn6LWE5rqQ6aG55Y+R5biD5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgLy8gICAgICAgfQogICAgICAgICAgICAgIC8vICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgICAvLyAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoZXJyIHx8ICfotYTmupDpobnlj5HluIPlpLHotKXvvIEnKTsKICAgICAgICAgICAgICAvLyAgICAgfQogICAgICAgICAgICAgIC8vICAgfSkKICAgICAgICAgICAgICAvLyAgIC5jYXRjaCgoKSA9PiB7fSk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNik7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGRvd25sb2FkOiBmdW5jdGlvbiBkb3dubG9hZCgpIHsKICAgICAgdmFyIGZpbGVUeXBlID0gJ+aVsOaNruaYjue7huWxguaVsOaNrui1hOa6kOihqOa4heWNlS54bHN4JzsKICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CiAgICAgIGEuaHJlZiA9IHdpbmRvdy5jb250ZXh0LmRvd25sb2FkICsgZmlsZVR5cGU7CiAgICAgIGEuZG93bmxvYWQgPSBmaWxlVHlwZTsgLy8g6K6+572u5LiL6L295paH5Lu25paH5Lu25ZCNCiAgICAgIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsKICAgICAgYS5jbGljaygpOwogICAgICBhLnJlbW92ZSgpOwogICAgfSwKICAgIC8vICDlr7zlhaXmlofku7bkuIrkvKDliY0KICAgIGJlZm9yZVVwbG9hZDogZnVuY3Rpb24gYmVmb3JlVXBsb2FkKGZpbGUpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgX3RoaXM4LnVwbG9hZExvYWRpbmcgPSB0cnVlOwogICAgICAgIHZhciBzaXplID0gZmlsZS5zaXplLAogICAgICAgICAgbmFtZSA9IGZpbGUubmFtZTsKICAgICAgICBfdGhpczguJGNvbmZpcm0oIlx1OEJGN1x1Nzg2RVx1OEJBNFx1NjYyRlx1NTQyNlx1NUJGQ1x1NTE2NSBcdTIwMUMiLmNvbmNhdChuYW1lLCAiXHUyMDFEIFx1RkYxRiIpLCAn5o+Q56S6JywgewogICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICB2YXIgcGFzc2VkT3JOb3QgPSB0cnVlOyAvLyDmmK/lkKbpgJrov4fpqozor4EKICAgICAgICAgIHZhciB0eXBlUmVndWxhciA9IC9cLih4bHN8eGxzeCkkL2k7CiAgICAgICAgICB2YXIgdmVyaWZpY2F0aW9uID0gW3sKICAgICAgICAgICAgY29uZGl0aW9uOiAhdHlwZVJlZ3VsYXIudGVzdChuYW1lKSwKICAgICAgICAgICAgcmVzdWx0OiBmdW5jdGlvbiByZXN1bHQoKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzOC4kbWVzc2FnZS5lcnJvcign5Y+q6IO95LiK5LygeGxz5oiWeGxzeOaWh+S7tuexu+WeiycpOwogICAgICAgICAgICB9CiAgICAgICAgICB9XTsKICAgICAgICAgIHZlcmlmaWNhdGlvbi5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgIGlmIChpdGVtLmNvbmRpdGlvbikgewogICAgICAgICAgICAgIGl0ZW0ucmVzdWx0KCk7CiAgICAgICAgICAgICAgcGFzc2VkT3JOb3QgPSBmYWxzZTsKICAgICAgICAgICAgICBfdGhpczgudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHBhc3NlZE9yTm90ID8gcmVzb2x2ZSgpIDogcmVqZWN0KCk7CiAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgIHJlamVjdCgpOwogICAgICAgICAgX3RoaXM4LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIF90aGlzOC4kbWVzc2FnZS53YXJuaW5nKCflt7Llj5bmtojkuIrkvKAnKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5a+85YWl5paH5Lu25LiK5Lyg5oiQ5YqfCiAgICBoYW5kbGVTdWNjZXNzOiBmdW5jdGlvbiBoYW5kbGVTdWNjZXNzKHJlcykgewogICAgICBpZiAocmVzLnN0YXRlKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCflr7zlhaXmiJDlip8nKTsKICAgICAgICB0aGlzLnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICB0aGlzLmdldERhdGEoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKHJlcy5tZXNzYWdlKTsKICAgICAgfQogICAgfSwKICAgIC8vIOWvvOWFpeaWh+S7tuS4iuS8oOWksei0pQogICAgLy8g5a+85YWl5paH5Lu25LiK5Lyg5aSx6LSlCiAgICBoYW5kbGVFcnJvcjogZnVuY3Rpb24gaGFuZGxlRXJyb3IoZXJyKSB7CiAgICAgIGlmIChlcnIpIHsKICAgICAgICB2YXIgZXJyRGF0YSA9IGVyci50b1N0cmluZygpLnJlcGxhY2UoJ0Vycm9yOicsICcnKTsKICAgICAgICBlcnJEYXRhID0gSlNPTi5wYXJzZShlcnJEYXRhKTsKICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVyckRhdGEubWVzc2FnZSB8fCAn5a+85YWl5aSx6LSl77yM6K+36YeN6K+VJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcign5a+85YWl5aSx6LSl77yM6K+36YeN6K+VJyk7CiAgICAgIH0KICAgICAgdGhpcy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICB9CiAgfQp9Ow=="},null]}