{"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\\components\\mindMap\\targetRelationMap.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\components\\mindMap\\targetRelationMap.vue","mtime":1739300167374},{"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:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC52YWx1ZXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBkb210b2ltYWdlIGZyb20gJ2RvbS10by1pbWFnZSc7CmltcG9ydCB1dGlscyBmcm9tICdAL3V0aWxzLmpzJzsKaW1wb3J0ICdqc21pbmQvc3R5bGUvanNtaW5kLmNzcyc7CmltcG9ydCAnanNtaW5kL2VzNi9qc21pbmQuZHJhZ2dhYmxlLW5vZGUuanMnOwppbXBvcnQgJ2pzbWluZC9lczYvanNtaW5kLnNjcmVlbnNob3QuanMnOwppbXBvcnQganNNaW5kIGZyb20gJ2pzbWluZCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnbWluZE1hcCcsCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIC8vIOmFjee9ruS/oeaBrwogICAgICBzaG93U2lkZUVkaXRvcjogZmFsc2UsCiAgICAgIGFkZFRhcmdldDogewogICAgICAgIHRvcGljOiAnJywKICAgICAgICBjb2RlOiAnJywKICAgICAgICB0eXBlOiAxLAogICAgICAgIGRlc2M6ICcnLAogICAgICAgIHNvdXJjZTogMQogICAgICB9LAogICAgICBkZWZhdWx0UHJvcHM6IHsKICAgICAgICB2YWx1ZTogJ2lkJywKICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgIH0sCiAgICAgIHZlcnNpb25EYXRhOiBbewogICAgICAgIHZlcnNpb25OdW06ICcxLjInLAogICAgICAgIHRpbWU6ICcyMDI1LTAxLTEwIDEwOjU1OjIyJwogICAgICB9LCB7CiAgICAgICAgdmVyc2lvbk51bTogJzEuMScsCiAgICAgICAgdGltZTogJzIwMjUtMDEtMTEgMTE6NTU6MjInCiAgICAgIH0sIHsKICAgICAgICB2ZXJzaW9uTnVtOiAnMS4wJywKICAgICAgICB0aW1lOiAnMjAyNS0wMS0xMCAxMDo1NToyMicKICAgICAgfV0sCiAgICAgIG1hcFR5cGU6ICdTaW5nbGVUb011bHRpJywKICAgICAgLy9NdWx0aVRvU2luZ2xlICBTaW5nbGVUb011bHRpCiAgICAgIC8vIOiEkeWbvuS/oeaBrwogICAgICAvLyDohJHlm77mlbDmja4KICAgICAgam06IG51bGwsCiAgICAgIGVkaXRvcjogbnVsbCwKICAgICAgbWluZERhdGE6IHsKICAgICAgICBtZXRhOiB7CiAgICAgICAgICBuYW1lOiAn5oyH5qCH5YWz6IGU5oCd57u05a+85Zu+JywKICAgICAgICAgIGF1dGhvcjogJ2FydGZlc3MnLAogICAgICAgICAgdmVyc2lvbjogJzAuMC4xJwogICAgICAgIH0sCiAgICAgICAgZm9ybWF0OiAnbm9kZV90cmVlJywKICAgICAgICBkYXRhOiB7CiAgICAgICAgICBpZDogJ3Jvb3QnLAogICAgICAgICAgdG9waWM6ICfmjIfmoIfvvJrkvaDni6znq4vlkJc/JywKICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyM0MDllZmYnLAogICAgICAgICAgbGV2ZWw6IDAsCiAgICAgICAgICBjaGlsZHJlbjogW3sKICAgICAgICAgICAgaWQ6IHV0aWxzLnV1aWQoKSwKICAgICAgICAgICAgLy8gW+W/hemAiV0gSUQsIOaJgOacieiKgueCueeahElE5LiN5bqU5pyJ6YeN5aSN77yM5ZCm5YiZSUTph43lpI3nmoTnu5PoioLlsIbooqvlv73nlaUKICAgICAgICAgICAgdG9waWM6ICfku7vliqE6UERQ566X5rOV5qih5Z6LJywKICAgICAgICAgICAgLy8gW+W/hemAiV0g6IqC54K55LiK5pi+56S655qE5YaF5a65CiAgICAgICAgICAgIGRpcmVjdGlvbjogJ3JpZ2h0JywKICAgICAgICAgICAgLy8gW+WPr+mAiV0g6IqC54K555qE5pa55ZCR77yM5q2k5pWw5o2u5LuF5Zyo56ys5LiA5bGC6IqC54K55LiK5pyJ5pWI77yM55uu5YmN5LuF5pSv5oyBIGxlZnQg5ZKMIHJpZ2h0IOS4pOenje+8jOm7mOiupOS4uiByaWdodAogICAgICAgICAgICBleHBhbmRlZDogdHJ1ZSwKICAgICAgICAgICAgLy8gW+WPr+mAiV0g6K+l6IqC54K55piv5ZCm5piv5bGV5byA54q25oCB77yM6buY6K6k5Li6IHRydWUKICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnIzY3YzIzYScsCiAgICAgICAgICAgIGxldmVsOiAxLAogICAgICAgICAgICBjaGlsZHJlbjogW3sKICAgICAgICAgICAgICBpZDogdXRpbHMudXVpZCgpLAogICAgICAgICAgICAgIHRvcGljOiAn5oyH5qCH77ya54yr5aS06bmw5Z6LJywKICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjZTZhMjNjJywKICAgICAgICAgICAgICBsZXZlbDogMgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgaWQ6IHV0aWxzLnV1aWQoKSwKICAgICAgICAgICAgICB0b3BpYzogJ+aMh+agh++8muS9oOWkluWQkeWQl++8nycsCiAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2U2YTIzYycsCiAgICAgICAgICAgICAgbGV2ZWw6IDIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgIGlkOiB1dGlscy51dWlkKCksCiAgICAgICAgICAgICAgdG9waWM6ICfmjIfmoIfvvJrkvaDniLHor7Tor53lkJfvvJ8nLAogICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNlNmEyM2MnLAogICAgICAgICAgICAgIGxldmVsOiAyLAogICAgICAgICAgICAgIG1lbW86ICfov5nmmK/lhbPns7vmj4/ov7AnLAogICAgICAgICAgICAgIC8vIOWFs+ezu+aPj+i/sAogICAgICAgICAgICAgIGZvcm11bGE6ICfov5nmmK/orqHnrpflhazlvI8nIC8vIOiuoeeul+WFrOW8j+ivtOaYjgogICAgICAgICAgICB9XQogICAgICAgICAgfSwgewogICAgICAgICAgICBpZDogdXRpbHMudXVpZCgpLAogICAgICAgICAgICB0b3BpYzogJ+S7u+WKoTo55Z6L5Lq65qC8566X5rOVJywKICAgICAgICAgICAgZGlyZWN0aW9uOiAncmlnaHQnLAogICAgICAgICAgICBleHBhbmRlZDogdHJ1ZSwKICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnIzY3YzIzYScsCiAgICAgICAgICAgIGxldmVsOiAxLAogICAgICAgICAgICBjaGlsZHJlbjogW3sKICAgICAgICAgICAgICBpZDogdXRpbHMudXVpZCgpLAogICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNlNmEyM2MnLAogICAgICAgICAgICAgIHRvcGljOiAn54yr5aS06bmw5Z6LJywKICAgICAgICAgICAgICBsZXZlbDogMgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgaWQ6IHV0aWxzLnV1aWQoKSwKICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjZTZhMjNjJywKICAgICAgICAgICAgICB0b3BpYzogJ+iAgeiZjuWeiycsCiAgICAgICAgICAgICAgbGV2ZWw6IDIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgIGlkOiB1dGlscy51dWlkKCksCiAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2U2YTIzYycsCiAgICAgICAgICAgICAgbWVtbzogJ+i/meaYr+WFs+ezu+aPj+i/sCcsCiAgICAgICAgICAgICAgLy8g5YWz57O75o+P6L+wCiAgICAgICAgICAgICAgZm9ybXVsYTogJ+i/meaYr+iuoeeul+WFrOW8jycsCiAgICAgICAgICAgICAgLy8g6K6h566X5YWs5byP6K+05piOCiAgICAgICAgICAgICAgdG9waWM6ICflj5joibLpvpnlnosnLAogICAgICAgICAgICAgIGxldmVsOiAyCiAgICAgICAgICAgIH1dCiAgICAgICAgICB9LCB7CiAgICAgICAgICAgIGlkOiB1dGlscy51dWlkKCksCiAgICAgICAgICAgIHRvcGljOiAn5Lu75YqhOjE25Z6L5Lq65qC8566X5rOVJywKICAgICAgICAgICAgLy8g5qCH6aKYCiAgICAgICAgICAgIGRpcmVjdGlvbjogJ3JpZ2h0JywKICAgICAgICAgICAgLy8g5pa55ZCRICAgcmlnaHQgIGxlZnQKICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0JzogJ25vcm1hbCcsCiAgICAgICAgICAgIC8vIOWtl+S9k+eyl+e7hiBib2xkICBub3JtYWwKICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnOiAnbm9ybWFsJywKICAgICAgICAgICAgLy8g5a2X5L2T5qC35byPIGl0YWxpYyAgbm9ybWFsCiAgICAgICAgICAgICdmb250LXNpemUnOiAxOCwKICAgICAgICAgICAgLy8g5a2X5L2T5aSn5bCPCiAgICAgICAgICAgICdmb3JlZ3JvdW5kLWNvbG9yJzogJyNmZmYnLAogICAgICAgICAgICAvLyDmloflrZfpopzoibIKICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnIzY3YzIzYScsCiAgICAgICAgICAgIC8vIOiDjOaZr+minOiJsgogICAgICAgICAgICBsZXZlbDogMSwKICAgICAgICAgICAgLy8g5bGC57qnCiAgICAgICAgICAgIGNoaWxkcmVuOiBbCiAgICAgICAgICAgIC8vIOWtkOiKgueCuQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWQ6IHV0aWxzLnV1aWQoKSwKICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjZTZhMjNjJywKICAgICAgICAgICAgICB0b3BpYzogJ+iAgeiZjuWeiycsCiAgICAgICAgICAgICAgbGV2ZWw6IDIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgIGlkOiB1dGlscy51dWlkKCksCiAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2U2YTIzYycsCiAgICAgICAgICAgICAgdG9waWM6ICflrZTpm4DlnosnLAogICAgICAgICAgICAgIGxldmVsOiAyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICBpZDogdXRpbHMudXVpZCgpLAogICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNlNmEyM2MnLAogICAgICAgICAgICAgIHRvcGljOiAn6ICD5ouJ5Z6LJywKICAgICAgICAgICAgICBsZXZlbDogMgogICAgICAgICAgICB9XQogICAgICAgICAgfV0KICAgICAgICB9CiAgICAgIH0sCiAgICAgIC8vIOiEkeWbvumFjee9rgogICAgICBvcHRpb25zOiB7CiAgICAgICAgY29udGFpbmVyOiAnanNtaW5kX2NvbnRhaW5lcicsCiAgICAgICAgLy8gW+W/hemAiV0g5a655Zmo55qESUQKICAgICAgICBlZGl0YWJsZTogdHJ1ZSwKICAgICAgICAvLyBb5Y+v6YCJXSDmmK/lkKblkK/nlKjnvJbovpEKICAgICAgICB0aGVtZTogJ3ByaW1hcnknLAogICAgICAgIC8vIFvlj6/pgIldIOS4u+mimAogICAgICAgIHN1cHBvcnRfaHRtbDogdHJ1ZSwKICAgICAgICBsb2dfbGV2ZWw6ICdkZWJ1ZycsCiAgICAgICAgLy8g6K6+572u5pel5b+X57qn5Yir5Li6IGRlYnVnCiAgICAgICAgdmlldzogewogICAgICAgICAgZW5naW5lOiAnY2FudmFzJywKICAgICAgICAgIC8vIOaAnee7tOWvvOWbvuWQhOiKgueCueS5i+mXtOe6v+adoeeahOe7mOWItuW8leaTjgogICAgICAgICAgZW5hYmxlX2RldmljZV9waXhlbF9yYXRpbzogdHJ1ZSwKICAgICAgICAgIC8vIOaMieiuvuWkh+WDj+e0oOavlOS+i+e7mOWItumrmOa4heaAnee7tOWvvOWbvgogICAgICAgICAgaG1hcmdpbjogMTAwLAogICAgICAgICAgLy8g5oCd57u05a+85Zu+6Led5a655Zmo5aSW5qGG55qE5pyA5bCP5rC05bmz6Led56a7CiAgICAgICAgICB2bWFyZ2luOiA1MCwKICAgICAgICAgIC8vIOaAnee7tOWvvOWbvui3neWuueWZqOWkluahhueahOacgOWwj+WeguebtOi3neemuwogICAgICAgICAgbGluZV93aWR0aDogMiwKICAgICAgICAgIC8vIOaAnee7tOWvvOWbvue6v+adoeeahOeyl+e7hgogICAgICAgICAgbGluZV9jb2xvcjogJyM2NjYnLAogICAgICAgICAgLy8g5oCd57u05a+85Zu+57q/5p2h55qE6aKc6ImyCiAgICAgICAgICBkcmFnZ2FibGU6IHRydWUsCiAgICAgICAgICAvLyDmmK/lkKblhYHorrjmi5bliqjnlLvluIMKICAgICAgICAgIGhpZGVfc2Nyb2xsYmFyc193aGVuX2RyYWdnYWJsZTogdHJ1ZSwKICAgICAgICAgIG5vZGVfb3ZlcmZsb3c6ICdoaWRkZW4nLAogICAgICAgICAgem9vbTogewogICAgICAgICAgICAvLyDnvKnmlL7phY3nva4KICAgICAgICAgICAgbWluOiAwLjEsCiAgICAgICAgICAgIC8vIOacgOWwj+e8qeaUvuavlOS+iwogICAgICAgICAgICBtYXg6IDIuMSwKICAgICAgICAgICAgLy8g5pyA5aSn57yp5pS+5q+U5L6LCiAgICAgICAgICAgIHN0ZXA6IDAuMSAvLyDnvKnmlL7mr5TkvovmraXplb8KICAgICAgICAgIH0sCiAgICAgICAgICBleHBhbmRlcl9zdHlsZTogJ251bWJlcicsCiAgICAgICAgICBsaW5lX3N0eWxlOiAnY3VydmVkJwogICAgICAgICAgLy8gICBjdXN0b21fbm9kZV9yZW5kZXI6IGZ1bmN0aW9uIChqbSwgZWxlbWVudCwgbm9kZSkgewogICAgICAgICAgLy8gICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gYCR7bm9kZS50b3BpY308ZGl2IGNsYXNzPSd0aXAtaWNvbiR7bm9kZS5kYXRhLm1lbW8gPyAnIHNob3dUaXAnIDogJyd9JyBkYXRhLW1lbW89JyR7CiAgICAgICAgICAvLyAgICAgICBub2RlLmRhdGEubWVtbyB8fCAnJwogICAgICAgICAgLy8gICAgIH0nPjxpIGNsYXNzPSJlbC1pY29uLWNoYXQtZG90LXNxdWFyZSI+PC9pPjwvZGl2PjxkaXYgY2xhc3M9J3RpcC1pY29uJHtub2RlLmRhdGEuZm9ybXVsYSA/ICcgc2hvd0Zvcm11bGEnIDogJyd9JyBkYXRhLWZvcm11bGE9JyR7CiAgICAgICAgICAvLyAgICAgICBub2RlLmRhdGEuZm9ybXVsYSB8fCAnJwogICAgICAgICAgLy8gICAgIH0nPjxpIGNsYXNzPSJlbC1pY29uLWNvbm5lY3Rpb24iPjwvaT48L2Rpdj5gOwogICAgICAgICAgLy8gICAgIHJldHVybiB0cnVlOyAvLyDooajnpLrlt7Lnu4/muLLmn5PmraToioLngrkKICAgICAgICAgIC8vICAgfSwKICAgICAgICB9LAogICAgICAgIGxheW91dDogewogICAgICAgICAgaHNwYWNlOiAxMDAsCiAgICAgICAgICAvLyDoioLngrnkuYvpl7TnmoTmsLTlubPpl7Tot50KICAgICAgICAgIHZzcGFjZTogMjAgLy8g6IqC54K55LmL6Ze055qE5Z6C55u06Ze06LedCiAgICAgICAgfSwKICAgICAgICBzaG9ydGN1dDogewogICAgICAgICAgLy8g56aB55So5b+r5o236ZSuCiAgICAgICAgICBlbmFibGU6IGZhbHNlCiAgICAgICAgfQogICAgICB9LAogICAgICBzdHJ1Y3R1cmU6IHsKICAgICAgICBhY3RpdmU6ICdyaWdodCcKICAgICAgfSwKICAgICAgY3JlYXRlVHlwZTogJycsCiAgICAgIC8vIOa3u+WKoOW5s+e6p29y5a2Q57qnCiAgICAgIGN1cnJlbnROb2RlOiBudWxsLAogICAgICAvLyDpgInkuK3oioLngrnkv6Hmga8KICAgICAgc2hvd01lbnU6IGZhbHNlLAogICAgICAvLyDmmK/lkKbmmL7npLrlj7PplK7oj5zljZXmoI8KICAgICAgaXNyb290OiBmYWxzZSwKICAgICAgbWVudVN0eWxlOiB7CiAgICAgICAgdG9wOiAnJywKICAgICAgICBib3R0b206ICcnLAogICAgICAgIGxlZnQ6ICcnLAogICAgICAgIHJpZ2h0OiAnJwogICAgICB9LAogICAgICB0aXBTdHlsZTogewogICAgICAgIHRvcDogJycsCiAgICAgICAgYm90dG9tOiAnJywKICAgICAgICBsZWZ0OiAnJywKICAgICAgICByaWdodDogJycKICAgICAgfSwKICAgICAgc2hvd1BvcG92ZXI6IGZhbHNlLAogICAgICBjdXJyZW50TWVtbzogJycsCiAgICAgIHNob3dGb3JtdWxhUG9wb3ZlcjogZmFsc2UsCiAgICAgIGN1cnJlbnRGb3JtdWxhOiAnJywKICAgICAgdmlld01vZGU6ICdtaW5kJywKICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgLy8g6KGo5qC8CiAgICAgIGNvbHVtbnM6IFtdLAogICAgICBjb2x1bW5zU2luZ2xlVG9NdWx0aTogW3sKICAgICAgICBwcm9wOiAndHlwZScsCiAgICAgICAgbGFiZWw6ICfmjIfmoIfnsbvlnosnLAogICAgICAgIHdpZHRoOiAnMTUwJwogICAgICB9LCB7CiAgICAgICAgcHJvcDogJ25hbWUnLAogICAgICAgIGxhYmVsOiAn5oyH5qCH5ZCN56ewJwogICAgICB9LCB7CiAgICAgICAgcHJvcDogJ2luZmVyZW5jZVR5cGUnLAogICAgICAgIGxhYmVsOiAn5o6o55CG57G75Z6LJywKICAgICAgICB3aWR0aDogJzE1MCcKICAgICAgfSwgewogICAgICAgIHByb3A6ICd0YXNrTmFtZScsCiAgICAgICAgbGFiZWw6ICfnrpfms5XmjqjnkIbku7vliqHlkI3np7AnCiAgICAgIH0sIHsKICAgICAgICBwcm9wOiAnc3ViVGFyZ2V0TmFtZScsCiAgICAgICAgbGFiZWw6ICflhbPogZTmjIfmoIcnCiAgICAgIH0sIHsKICAgICAgICBwcm9wOiAnc3ViVGFyZ2V0VHlwZScsCiAgICAgICAgbGFiZWw6ICflhbPogZTmjIfmoIfnsbvlnosnLAogICAgICAgIHdpZHRoOiAnMTUwJwogICAgICB9LCB7CiAgICAgICAgcHJvcDogJ3RhcmdldFJlbGF0aW9uJywKICAgICAgICBsYWJlbDogJ+WFs+iBlOaPj+i/sCcsCiAgICAgICAgd2lkdGg6ICcyMDAnCiAgICAgIH0sIHsKICAgICAgICBwcm9wOiAndGFyZ2V0Rm9ybXVsYScsCiAgICAgICAgbGFiZWw6ICforqHnrpfor7TmmI4nLAogICAgICAgIHdpZHRoOiAnMjAwJwogICAgICB9XSwKICAgICAgY29sdW1uc011bHRpVG9TaW5nbGU6IFt7CiAgICAgICAgcHJvcDogJ3N1YlRhcmdldE5hbWUnLAogICAgICAgIGxhYmVsOiAn5YWz6IGU5oyH5qCHJywKICAgICAgICB3aWR0aDogJzIwMCcKICAgICAgfSwgewogICAgICAgIHByb3A6ICdzdWJUYXJnZXRUeXBlJywKICAgICAgICBsYWJlbDogJ+WFs+iBlOaMh+agh+exu+WeiycsCiAgICAgICAgd2lkdGg6ICcxNTAnCiAgICAgIH0sIHsKICAgICAgICBwcm9wOiAndGFyZ2V0UmVsYXRpb24nLAogICAgICAgIGxhYmVsOiAn5YWz6IGU5o+P6L+wJywKICAgICAgICB3aWR0aDogJzIwMCcKICAgICAgfSwgewogICAgICAgIHByb3A6ICd0YXJnZXRGb3JtdWxhJywKICAgICAgICBsYWJlbDogJ+iuoeeul+ivtOaYjicsCiAgICAgICAgd2lkdGg6ICcyMDAnCiAgICAgIH0sIHsKICAgICAgICBwcm9wOiAndGFza05hbWUnLAogICAgICAgIGxhYmVsOiAn566X5rOV5o6o55CG5Lu75Yqh5ZCN56ewJwogICAgICB9LCB7CiAgICAgICAgcHJvcDogJ2luZmVyZW5jZVR5cGUnLAogICAgICAgIGxhYmVsOiAn5o6o55CG57G75Z6LJywKICAgICAgICB3aWR0aDogJzE1MCcKICAgICAgfSwgewogICAgICAgIHByb3A6ICduYW1lJywKICAgICAgICBsYWJlbDogJ+aMh+agh+WQjeensCcKICAgICAgfSwgewogICAgICAgIHByb3A6ICd0eXBlJywKICAgICAgICBsYWJlbDogJ+aMh+agh+exu+WeiycsCiAgICAgICAgd2lkdGg6ICcxNTAnCiAgICAgIH1dCiAgICB9OwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciB0aGF0ID0gdGhpczsKICAgIHRoaXMubG9hZE1pbmQoKTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGhhbmRsZVZpZXdNb2RlOiBmdW5jdGlvbiBoYW5kbGVWaWV3TW9kZSh2aWV3TW9kZSkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgICB0aGlzLnZpZXdNb2RlID0gdmlld01vZGU7CiAgICAgIGlmICh0aGlzLm1hcFR5cGUgPT09ICdTaW5nbGVUb011bHRpJykgewogICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1uc1NpbmdsZVRvTXVsdGk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zTXVsdGlUb1NpbmdsZTsKICAgICAgfQogICAgICBpZiAodGhpcy52aWV3TW9kZSA9PT0gJ21pbmQnKSB7CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpcy5yZXNldCgpOwogICAgICAgIH0sIDEwKTsKICAgICAgfQogICAgfSwKICAgIGxvYWRNaW5kOiBmdW5jdGlvbiBsb2FkTWluZCgpIHsKICAgICAgdGhpcy5qbSA9IG51bGw7CiAgICAgIHRoaXMuam0gPSBuZXcganNNaW5kKHRoaXMub3B0aW9ucyk7CiAgICAgIHRoaXMuam0uc2hvdyh0aGlzLm1pbmREYXRhKTsKICAgICAgdGhpcy5lZGl0b3IgPSB0aGlzLmptLnZpZXcuZV9lZGl0b3I7CiAgICAgIHRoaXMuaW5pdCgpOwogICAgICB0aGlzLm1vdXNlV2hlZWwoKTsKICAgICAgdGhpcy5tb3VzZURyYWcoKTsKICAgICAgdGhpcy5yb290Tm9kZSA9IHRoaXMuam0uZ2V0X3Jvb3QoKTsKICAgIH0sCiAgICAvLyDnsbvlnovliIfmjaIKICAgIGNoYW5nZU1hcFR5cGU6IGZ1bmN0aW9uIGNoYW5nZU1hcFR5cGUodHlwZSkgewogICAgICB0aGlzLm1hcFR5cGUgPSB0eXBlOwogICAgICB0aGlzLnJlbG9hZE1pbmQoKTsKICAgIH0sCiAgICAvLyB0YWLliIfmjaIKICAgIGhhbmRsZUNsaWNrVGFiOiBmdW5jdGlvbiBoYW5kbGVDbGlja1RhYigpIHt9LAogICAgLy8g6YWN572u57yW6L6R5pi+56S66ZqQ6JePCiAgICB0b2dnbGVTaWRlRWRpdG9yOiBmdW5jdGlvbiB0b2dnbGVTaWRlRWRpdG9yKHR5cGUpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHRoaXMuc2hvd1NpZGVFZGl0b3IgPSB0eXBlID09PSB1bmRlZmluZWQgPyAhdGhpcy5zaG93U2lkZUVkaXRvciA6IHR5cGU7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzMi5yZXNldCgpOwogICAgICB9LCAyMDApOwogICAgfSwKICAgIC8vIOe8qeWwjwogICAgem9vbU91dDogZnVuY3Rpb24gem9vbU91dCgpIHsKICAgICAgdGhpcy5qbS52aWV3Lnpvb21fb3V0KCk7CiAgICB9LAogICAgLy8g5pS+5aSnCiAgICB6b29tSW46IGZ1bmN0aW9uIHpvb21JbigpIHsKICAgICAgdGhpcy5qbS52aWV3Lnpvb21faW4oKTsKICAgIH0sCiAgICAvLyDph43nva7op4blm74KICAgIHJlc2V0OiBmdW5jdGlvbiByZXNldCgpIHsKICAgICAgdGhpcy5qbS5yZXNpemUoKTsKICAgIH0sCiAgICBleHBvcnRJbWFnZTogZnVuY3Rpb24gZXhwb3J0SW1hZ2UoKSB7CiAgICAgIHZhciBqbSA9IGpzTWluZC5jdXJyZW50OwogICAgICBqbS5zaG9vdCgpOwogICAgfSwKICAgIC8vIOW+queOr+agkee7k+aehAogICAgbG9vcFRyZWVEYXRhOiBmdW5jdGlvbiBsb29wVHJlZURhdGEobGlzdCwgY2FsbGJhY2spIHsKICAgICAgKGZ1bmN0aW9uIGRvT25lRmxvb3IobGlzdCkgewogICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3QpKSB7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGl0ZW0gPSBsaXN0W2ldOwogICAgICAgICAgICBjYWxsYmFjayhpdGVtLCBpKTsKICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgZG9PbmVGbG9vcihpdGVtLmNoaWxkcmVuKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSkobGlzdCk7CiAgICB9LAogICAgLy8g57yW6L6R6IqC54K5CiAgICAvLyDnpoHnlKjlj4zlh7vnvJbovpEKICAgIHN0b3BEQmNsaWNrOiBmdW5jdGlvbiBzdG9wREJjbGljaygpIHsKICAgICAgdmFyIGptbm9kZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnam1ub2RlJyk7CiAgICAgIE9iamVjdC52YWx1ZXMoam1ub2RlcykuZm9yRWFjaChmdW5jdGlvbiAoam1ub2RlKSB7CiAgICAgICAgam1ub2RlLm9uZGJsY2xpY2sgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICB9OwogICAgICB9KTsKICAgIH0sCiAgICBzaG93VGlwOiBmdW5jdGlvbiBzaG93VGlwKGV2ZW50KSB7CiAgICAgIHZhciBfZXZlbnQkZnJvbUVsZW1lbnQ7CiAgICAgIGlmICh0aGlzLnNob3dQb3BvdmVyKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuY3VycmVudE1lbW8gPSAoZXZlbnQgPT09IG51bGwgfHwgZXZlbnQgPT09IHZvaWQgMCB8fCAoX2V2ZW50JGZyb21FbGVtZW50ID0gZXZlbnQuZnJvbUVsZW1lbnQpID09PSBudWxsIHx8IF9ldmVudCRmcm9tRWxlbWVudCA9PT0gdm9pZCAwIHx8IChfZXZlbnQkZnJvbUVsZW1lbnQgPSBfZXZlbnQkZnJvbUVsZW1lbnQuY2hpbGRyZW5bMF0pID09PSBudWxsIHx8IF9ldmVudCRmcm9tRWxlbWVudCA9PT0gdm9pZCAwIHx8IChfZXZlbnQkZnJvbUVsZW1lbnQgPSBfZXZlbnQkZnJvbUVsZW1lbnQuZGF0YXNldCkgPT09IG51bGwgfHwgX2V2ZW50JGZyb21FbGVtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZXZlbnQkZnJvbUVsZW1lbnQubWVtbykgfHwgJyc7CiAgICAgIHZhciBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb21tb24tdGlwJyk7CiAgICAgIHZhciB3aWR0aCA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLndpZHRoKTsKICAgICAgdmFyIGhlaWdodCA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLmhlaWdodCkgKiAzICsgMTI7CiAgICAgIHZhciB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICAgIHZhciB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOwogICAgICAvLyDmnoHpmZDkvY3nva4g6YG/5YWN6LaK55WMCiAgICAgIGlmIChldmVudC5jbGllbnRZICsgaGVpZ2h0ID4gd2luZG93SGVpZ2h0KSB7CiAgICAgICAgdGhpcy50aXBTdHlsZS5sZWZ0ID0gZXZlbnQuY2xpZW50WCArICdweCc7CiAgICAgICAgdGhpcy50aXBTdHlsZS50b3AgPSAndW5zZXQnOwogICAgICAgIHRoaXMudGlwU3R5bGUuYm90dG9tID0gMDsKICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYICsgd2lkdGggPiB3aW5kb3dXaWR0aCkgewogICAgICAgIHRoaXMudGlwU3R5bGUudG9wID0gZXZlbnQuY2xpZW50WSArICdweCc7CiAgICAgICAgdGhpcy50aXBTdHlsZS5sZWZ0ID0gJ3Vuc2V0JzsKICAgICAgICB0aGlzLnRpcFN0eWxlLnJpZ2h0ID0gMDsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnRpcFN0eWxlLmxlZnQgPSBldmVudC5jbGllbnRYICsgJ3B4JzsKICAgICAgICB0aGlzLnRpcFN0eWxlLnRvcCA9IGV2ZW50LmNsaWVudFkgKyAncHgnOwogICAgICAgIHRoaXMudGlwU3R5bGUuYm90dG9tID0gJ3Vuc2V0JzsKICAgICAgfQogICAgICBpZiAodGhpcy5jdXJyZW50TWVtbykgewogICAgICAgIHRoaXMuc2hvd1BvcG92ZXIgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgaGlkZVRpcDogZnVuY3Rpb24gaGlkZVRpcCgpIHsKICAgICAgdGhpcy5jdXJyZW50TWVtbyA9ICcnOwogICAgICB0aGlzLnNob3dQb3BvdmVyID0gZmFsc2U7CiAgICB9LAogICAgc2hvd0Zvcm11bGE6IGZ1bmN0aW9uIHNob3dGb3JtdWxhKGV2ZW50KSB7CiAgICAgIHZhciBfZXZlbnQkZnJvbUVsZW1lbnQyOwogICAgICBpZiAodGhpcy5zaG93Rm9ybXVsYVBvcG92ZXIpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhpcy5jdXJyZW50Rm9ybXVsYSA9IChldmVudCA9PT0gbnVsbCB8fCBldmVudCA9PT0gdm9pZCAwIHx8IChfZXZlbnQkZnJvbUVsZW1lbnQyID0gZXZlbnQuZnJvbUVsZW1lbnQpID09PSBudWxsIHx8IF9ldmVudCRmcm9tRWxlbWVudDIgPT09IHZvaWQgMCB8fCAoX2V2ZW50JGZyb21FbGVtZW50MiA9IF9ldmVudCRmcm9tRWxlbWVudDIuY2hpbGRyZW5bMV0pID09PSBudWxsIHx8IF9ldmVudCRmcm9tRWxlbWVudDIgPT09IHZvaWQgMCB8fCAoX2V2ZW50JGZyb21FbGVtZW50MiA9IF9ldmVudCRmcm9tRWxlbWVudDIuZGF0YXNldCkgPT09IG51bGwgfHwgX2V2ZW50JGZyb21FbGVtZW50MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2V2ZW50JGZyb21FbGVtZW50Mi5mb3JtdWxhKSB8fCAnJzsKICAgICAgdmFyIGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbW1vbi1mb3JtdWxhJyk7CiAgICAgIHZhciB3aWR0aCA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLndpZHRoKTsKICAgICAgdmFyIGhlaWdodCA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpLmhlaWdodCkgKiAzICsgMTI7CiAgICAgIHZhciB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICAgIHZhciB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOwogICAgICAvLyDmnoHpmZDkvY3nva4g6YG/5YWN6LaK55WMCiAgICAgIGlmIChldmVudC5jbGllbnRZICsgaGVpZ2h0ID4gd2luZG93SGVpZ2h0KSB7CiAgICAgICAgdGhpcy50aXBTdHlsZS5sZWZ0ID0gZXZlbnQuY2xpZW50WCArICdweCc7CiAgICAgICAgdGhpcy50aXBTdHlsZS50b3AgPSAndW5zZXQnOwogICAgICAgIHRoaXMudGlwU3R5bGUuYm90dG9tID0gMDsKICAgICAgfSBlbHNlIGlmIChldmVudC5jbGllbnRYICsgd2lkdGggPiB3aW5kb3dXaWR0aCkgewogICAgICAgIHRoaXMudGlwU3R5bGUudG9wID0gZXZlbnQuY2xpZW50WSArICdweCc7CiAgICAgICAgdGhpcy50aXBTdHlsZS5sZWZ0ID0gJ3Vuc2V0JzsKICAgICAgICB0aGlzLnRpcFN0eWxlLnJpZ2h0ID0gMDsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnRpcFN0eWxlLmxlZnQgPSBldmVudC5jbGllbnRYICsgJ3B4JzsKICAgICAgICB0aGlzLnRpcFN0eWxlLnRvcCA9IGV2ZW50LmNsaWVudFkgKyAncHgnOwogICAgICAgIHRoaXMudGlwU3R5bGUuYm90dG9tID0gJ3Vuc2V0JzsKICAgICAgfQogICAgICBpZiAodGhpcy5jdXJyZW50Rm9ybXVsYSkgewogICAgICAgIHRoaXMuc2hvd0Zvcm11bGFQb3BvdmVyID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIGhpZGVGb3JtdWxhOiBmdW5jdGlvbiBoaWRlRm9ybXVsYSgpIHsKICAgICAgdGhpcy5jdXJyZW50Rm9ybXVsYSA9ICcnOwogICAgICB0aGlzLnNob3dGb3JtdWxhUG9wb3ZlciA9IGZhbHNlOwogICAgfSwKICAgIC8vIOWkh+azqOe7keWumueCueWHu+S6i+S7tgogICAgdGlwc0NsaWNrOiBmdW5jdGlvbiB0aXBzQ2xpY2soKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB2YXIgdGlwcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RpcC1pY29uIHNob3dUaXAnKTsKICAgICAgT2JqZWN0LnZhbHVlcyh0aXBzKS5mb3JFYWNoKGZ1bmN0aW9uICh0aXApIHsKICAgICAgICB0aXAucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgX3RoaXMzLnNob3dUaXApOwogICAgICAgIHRpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBfdGhpczMuc2hvd1RpcCk7CiAgICAgIH0pOwogICAgICBPYmplY3QudmFsdWVzKHRpcHMpLmZvckVhY2goZnVuY3Rpb24gKHRpcCkgewogICAgICAgIHRpcC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgX3RoaXMzLmhpZGVUaXApOwogICAgICAgIHRpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgX3RoaXMzLmhpZGVUaXApOwogICAgICB9KTsKICAgICAgdmFyIEZvcm11bGEgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0aXAtaWNvbiBzaG93Rm9ybXVsYScpOwogICAgICBPYmplY3QudmFsdWVzKEZvcm11bGEpLmZvckVhY2goZnVuY3Rpb24gKGZvcm11bGEpIHsKICAgICAgICBmb3JtdWxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIF90aGlzMy5zaG93Rm9ybXVsYSk7CiAgICAgICAgZm9ybXVsYS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBfdGhpczMuc2hvd0Zvcm11bGEpOwogICAgICB9KTsKICAgICAgT2JqZWN0LnZhbHVlcyhGb3JtdWxhKS5mb3JFYWNoKGZ1bmN0aW9uIChmb3JtdWxhKSB7CiAgICAgICAgZm9ybXVsYS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgX3RoaXMzLmhpZGVGb3JtdWxhKTsKICAgICAgICBmb3JtdWxhLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBfdGhpczMuaGlkZUZvcm11bGEpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDliJ3lp4vljJbphY3nva4KICAgIGluaXQ6IGZ1bmN0aW9uIGluaXQoKSB7CiAgICAgIHRoaXMuam0uZXhwYW5kX2FsbCgpOwogICAgICB0aGlzLnN0b3BEQmNsaWNrKCk7CiAgICAgIHRoaXMudGlwc0NsaWNrKCk7CiAgICB9LAogICAgLy8g6I635Y+W6YCJ5Lit5qCH562+55qEIElECiAgICBnZXRfc2VsZWN0ZWRfbm9kZWlkOiBmdW5jdGlvbiBnZXRfc2VsZWN0ZWRfbm9kZWlkKCkgewogICAgICB2YXIgc2VsZWN0ZWROb2RlID0gdGhpcy5qbS5nZXRfc2VsZWN0ZWRfbm9kZSgpOwogICAgICBpZiAoc2VsZWN0ZWROb2RlKSB7CiAgICAgICAgcmV0dXJuIHNlbGVjdGVkTm9kZS5pZDsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfSwKICAgIC8vIOWIh+aNouaAnee7tOWvvOWbvue7k+aehAogICAgdG9nZ2xlU3R1Y3R1cmU6IGZ1bmN0aW9uIHRvZ2dsZVN0dWN0dXJlKHR5cGUpIHsKICAgICAgaWYgKHRoaXMuc3RydWN0dXJlLmFjdGl2ZSA9PT0gdHlwZSkgcmV0dXJuOwogICAgICB0aGlzLnN0cnVjdHVyZS5hY3RpdmUgPSB0eXBlOwogICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICBjYXNlICdzaWRlJzoKICAgICAgICAgIC8vIOS4pOi+ueWIhuW4gwogICAgICAgICAgdGhpcy5sb29wVHJlZURhdGEodGhpcy5taW5kRGF0YS5kYXRhLmNoaWxkcmVuLCBmdW5jdGlvbiAoaXRlbSwgaSkgewogICAgICAgICAgICBpdGVtLmRpcmVjdGlvbiA9IGkgJSAyID8gJ2xlZnQnIDogJ3JpZ2h0JzsKICAgICAgICAgIH0pOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnTXVsdGlUb1NpbmdsZSc6CiAgICAgICAgICAvLyDlkJHlt6bliIbluIMKICAgICAgICAgIHRoaXMubG9vcFRyZWVEYXRhKHRoaXMubWluZERhdGEuZGF0YS5jaGlsZHJlbiwgZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgaXRlbS5kaXJlY3Rpb24gPSAnbGVmdCc7CiAgICAgICAgICB9KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ1NpbmdsZVRvTXVsdGknOgogICAgICAgICAgLy8g5ZCR5Y+z5YiG5biDCiAgICAgICAgICB0aGlzLmxvb3BUcmVlRGF0YSh0aGlzLm1pbmREYXRhLmRhdGEuY2hpbGRyZW4sIGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgIGl0ZW0uZGlyZWN0aW9uID0gJ3JpZ2h0JzsKICAgICAgICAgIH0pOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIHRoaXMuam0uc2hvdyh0aGlzLm1pbmREYXRhKTsKICAgICAgdGhpcy5pbml0KCk7CiAgICB9LAogICAgaGFuZGxlQ2hhbmdlTWFwVHlwZTogZnVuY3Rpb24gaGFuZGxlQ2hhbmdlTWFwVHlwZSh0eXBlKSB7CiAgICAgIHRoaXMudG9nZ2xlU3R1Y3R1cmUodHlwZSk7CiAgICAgIHRoaXMubWFwVHlwZSA9IHR5cGU7CiAgICAgIGlmICh0aGlzLm1hcFR5cGUgPT09ICdTaW5nbGVUb011bHRpJykgewogICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY29sdW1uc1NpbmdsZVRvTXVsdGk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zTXVsdGlUb1NpbmdsZTsKICAgICAgfQogICAgfSwKICAgIC8vIOaLluaLvQogICAgaGFuZGxlRHJvcDogZnVuY3Rpb24gaGFuZGxlRHJvcChkcmFnZ2luZ05vZGUsIGRyb3BOb2RlKSB7CiAgICAgIC8vIOWJjeS4gOS4quWFhOW8n+iKgueCuQogICAgICB2YXIgcHJldk5vZGUgPSB0aGlzLmptLmZpbmRfbm9kZV9iZWZvcmUoZHJvcE5vZGUpOwogICAgICAvLyDojrflj5bnp7vliqjlkI7nmoRub2RlCiAgICAgIHZhciBkcmFnRm9ybSA9IHsKICAgICAgICBtb2RlbElkOiAnJywKICAgICAgICB0cmVlTnVtOiAhcHJldk5vZGUgPyBkcmFnZ2luZ05vZGUgOiBwcmV2Tm9kZS5pZCwKICAgICAgICB0aGlzVHJlZU51bTogZHJvcE5vZGUKICAgICAgfTsKICAgICAgY29uc29sZS5sb2coJ2RyYWdGb3JtJywgZHJhZ0Zvcm0pOwoKICAgICAgLy8gVE9ETyDosIPmjqXlj6MKICAgIH0sCiAgICAvLyDljZXlh7vph43nva7pgInkuK3og4zmma/popzoibIKICAgIG5vZGVDbGljazogZnVuY3Rpb24gbm9kZUNsaWNrKCkgewogICAgICB0aGlzLnNob3dNZW51ID0gZmFsc2U7CiAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSB0aGlzLmptLmdldF9zZWxlY3RlZF9ub2RlKCk7CiAgICAgIGNvbnNvbGUubG9nKHNlbGVjdGVkTm9kZSwgJ3NlbGVjdGVkTm9kZScpOwogICAgICBpZiAoc2VsZWN0ZWROb2RlKSB7CiAgICAgICAgdGhpcy5jdXJyZW50Tm9kZSA9IHNlbGVjdGVkTm9kZTsKICAgICAgICB0aGlzLmFkZFRhcmdldC50b3BpYyA9IHRoaXMuY3VycmVudE5vZGUudG9waWMgfHwgJyc7CiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZS5kYXRhLmxldmVsID09PSAyICYmIHRoaXMucm9vdE5vZGUuaWQgIT09IHRoaXMuY3VycmVudE5vZGUuaWQpIHsKICAgICAgICAgIHRoaXMudG9nZ2xlU2lkZUVkaXRvcih0cnVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy50b2dnbGVTaWRlRWRpdG9yKGZhbHNlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvLyDpmLvmraLlhpLms6EKICAgIG5vZGVQcmV2ZW50Q2xpY2s6IGZ1bmN0aW9uIG5vZGVQcmV2ZW50Q2xpY2soKSB7fSwKICAgIC8vIOiOt+WPluaVsOaNrgogICAgZ2V0TWluZERhdGE6IGZ1bmN0aW9uIGdldE1pbmREYXRhKCkgewogICAgICB0aGlzLm1pbmREYXRhID0gdGhpcy5qbS5nZXRfZGF0YSgpOwogICAgICBjb25zb2xlLmxvZyh0aGlzLm1pbmREYXRhLCAndGhpcy5kYXRhVXBkYXRhJyk7CiAgICB9LAogICAgLy8g6byg5qCH5rua6L2u5pS+5aSn57yp5bCPCiAgICBtb3VzZVdoZWVsOiBmdW5jdGlvbiBtb3VzZVdoZWVsKCkgewogICAgICBpZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RvbU1vdXNlU2Nyb2xsJywgdGhpcy5zY3JvbGxGdW5jLCBmYWxzZSk7CiAgICAgIH0KICAgICAgdGhpcy4kcmVmcy5jb250YWluZXIub25tb3VzZXdoZWVsID0gdGhpcy5zY3JvbGxGdW5jOwogICAgfSwKICAgIC8vIOa7mui9rue8qeaUvgogICAgc2Nyb2xsRnVuYzogZnVuY3Rpb24gc2Nyb2xsRnVuYyhlKSB7CiAgICAgIHRoaXMuc2hvd01lbnUgPSBmYWxzZTsKICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50OwogICAgICBpZiAoZS53aGVlbERlbHRhKSB7CiAgICAgICAgaWYgKGUud2hlZWxEZWx0YSA+IDApIHsKICAgICAgICAgIHRoaXMuem9vbUluKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuem9vbU91dCgpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChlLmRldGFpbCkgewogICAgICAgIGlmIChlLmRldGFpbCA+IDApIHsKICAgICAgICAgIHRoaXMuem9vbUluKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuem9vbU91dCgpOwogICAgICAgIH0KICAgICAgfQogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIHRoaXMuam0ucmVzaXplKCk7CiAgICB9LAogICAgLy8g6byg5qCH5ouW5ou9CiAgICBtb3VzZURyYWc6IGZ1bmN0aW9uIG1vdXNlRHJhZygpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIC8vIOmHjOWxggogICAgICB2YXIgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanNtaW5kLWlubmVyJyk7CiAgICAgIC8vIOmAieS4reiKgueCuQogICAgICB2YXIgc2VsZWN0ZWQ7CiAgICAgIGVsLm9ubW91c2Vkb3duID0gZnVuY3Rpb24gKGV2KSB7CiAgICAgICAgLy8g6YCJ5Lit6IqC54K5CiAgICAgICAgc2VsZWN0ZWQgPSBfdGhpczQuam0uZ2V0X3NlbGVjdGVkX25vZGUoKTsKICAgICAgICAvLyDmoIfor4Yg5piv5ZCm5ouW5ou96IqC54K5IOmBv+WFjeWGsueqgQogICAgICAgIF90aGlzNC5kcmFnTm9kZUZsYWcgPSAhIXNlbGVjdGVkOwogICAgICAgIHZhciBkaXNYID0gZXYuY2xpZW50WDsKICAgICAgICB2YXIgZGlzWSA9IGV2LmNsaWVudFk7CiAgICAgICAgdmFyIG9yaWdpbmFsU2Nyb2xsTGVmdCA9IGVsLnNjcm9sbExlZnQ7CiAgICAgICAgdmFyIG9yaWdpbmFsU2Nyb2xsVG9wID0gZWwuc2Nyb2xsVG9wOwogICAgICAgIHZhciBvcmlnaW5hbFNjcm9sbEJlaGF2aW9yID0gZWwuc3R5bGVbJ3Njcm9sbC1iZWhhdmlvciddOwogICAgICAgIHZhciBvcmlnaW5hbFBvaW50ZXJFdmVudHMgPSBlbC5zdHlsZVsncG9pbnRlci1ldmVudHMnXTsKICAgICAgICAvLyBhdXRvOiDpu5jorqTlgLzvvIzooajnpLrmu5rliqjmoYbnq4vljbPmu5rliqjliLDmjIflrprkvY3nva7jgIIKICAgICAgICBlbC5zdHlsZVsnc2Nyb2xsLWJlaGF2aW9yJ10gPSAnYXV0byc7CiAgICAgICAgLy8g6byg5qCH56e75Yqo5LqL5Lu25piv55uR5ZCs55qE5pW05LiqZG9jdW1lbnTvvIzov5nmoLflj6/ku6Xkvb/pvKDmoIfog73lpJ/lnKjlhYPntKDlpJbpg6jnp7vliqjnmoTml7blgJnkuZ/og73lrp7njrDmi5bliqgKICAgICAgICBkb2N1bWVudC5vbm1vdXNlbW92ZSA9IGZ1bmN0aW9uIChldikgewogICAgICAgICAgaWYgKF90aGlzNC5kcmFnTm9kZUZsYWcpIHJldHVybjsKICAgICAgICAgIF90aGlzNC5kcmFnID0gZmFsc2U7CiAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgLy8g6K6h566X5ouW5ou955qE5YGP56e76Led56a7CiAgICAgICAgICB2YXIgZGlzdGFuY2VYID0gZXYuY2xpZW50WCAtIGRpc1g7CiAgICAgICAgICB2YXIgZGlzdGFuY2VZID0gZXYuY2xpZW50WSAtIGRpc1k7CiAgICAgICAgICBlbC5zY3JvbGxUbyhvcmlnaW5hbFNjcm9sbExlZnQgLSBkaXN0YW5jZVgsIG9yaWdpbmFsU2Nyb2xsVG9wIC0gZGlzdGFuY2VZKTsKCiAgICAgICAgICAvLyDlnKjpvKDmoIfmi5bliqjnmoTml7blgJnlsIbngrnlh7vkuovku7blsY/olL3mjokKICAgICAgICAgIGVsLnN0eWxlWydwb2ludGVyLWV2ZW50cyddID0gJ25vbmUnOwogICAgICAgICAgZWwuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJzsKICAgICAgICB9OwogICAgICAgIGRvY3VtZW50Lm9ubW91c2V1cCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgIGlmICghX3RoaXM0LmRyYWdOb2RlRmxhZykgewogICAgICAgICAgICBlbC5zdHlsZVsnc2Nyb2xsLWJlaGF2aW9yJ10gPSBvcmlnaW5hbFNjcm9sbEJlaGF2aW9yOwogICAgICAgICAgICBlbC5zdHlsZVsncG9pbnRlci1ldmVudHMnXSA9IG9yaWdpbmFsUG9pbnRlckV2ZW50czsKICAgICAgICAgICAgZWwuc3R5bGUuY3Vyc29yID0gJ2dyYWInOwogICAgICAgICAgfQogICAgICAgICAgZG9jdW1lbnQub25tb3VzZW1vdmUgPSBkb2N1bWVudC5vbm1vdXNldXAgPSBudWxsOwogICAgICAgIH07CiAgICAgIH07CiAgICB9CiAgfSwKICBiZWZvcmVEZXN0cm95OiBmdW5jdGlvbiBiZWZvcmVEZXN0cm95KCkgewogICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZG9tTW91c2VTY3JvbGwnLCB0aGlzLnNjcm9sbEZ1bmMsIGZhbHNlKTsKICB9Cn07"},null]}