{"remainingRequest":"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\\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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgZG9tdG9pbWFnZSBmcm9tICdkb20tdG8taW1hZ2UnOw0KaW1wb3J0IHV0aWxzIGZyb20gJ0AvdXRpbHMuanMnOw0KaW1wb3J0ICdqc21pbmQvc3R5bGUvanNtaW5kLmNzcyc7DQppbXBvcnQgJ2pzbWluZC9lczYvanNtaW5kLmRyYWdnYWJsZS1ub2RlLmpzJzsNCmltcG9ydCAnanNtaW5kL2VzNi9qc21pbmQuc2NyZWVuc2hvdC5qcyc7DQppbXBvcnQganNNaW5kIGZyb20gJ2pzbWluZCc7DQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdtaW5kTWFwJywNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgLy8g6YWN572u5L+h5oGvDQogICAgICBzaG93U2lkZUVkaXRvcjogZmFsc2UsDQoNCiAgICAgIGFkZFRhcmdldDogew0KICAgICAgICB0b3BpYzogJycsDQogICAgICAgIGNvZGU6ICcnLA0KICAgICAgICB0eXBlOiAxLA0KICAgICAgICBkZXNjOiAnJywNCiAgICAgICAgc291cmNlOiAxLA0KICAgICAgfSwNCg0KICAgICAgZGVmYXVsdFByb3BzOiB7DQogICAgICAgIHZhbHVlOiAnaWQnLA0KICAgICAgICBsYWJlbDogJ25hbWUnLA0KICAgICAgfSwNCiAgICAgIHZlcnNpb25EYXRhOiBbDQogICAgICAgIHsNCiAgICAgICAgICB2ZXJzaW9uTnVtOiAnMS4yJywNCiAgICAgICAgICB0aW1lOiAnMjAyNS0wMS0xMCAxMDo1NToyMicsDQogICAgICAgIH0sDQoNCiAgICAgICAgew0KICAgICAgICAgIHZlcnNpb25OdW06ICcxLjEnLA0KICAgICAgICAgIHRpbWU6ICcyMDI1LTAxLTExIDExOjU1OjIyJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZlcnNpb25OdW06ICcxLjAnLA0KICAgICAgICAgIHRpbWU6ICcyMDI1LTAxLTEwIDEwOjU1OjIyJywNCiAgICAgICAgfSwNCiAgICAgIF0sDQogICAgICBtYXBUeXBlOiAnU2luZ2xlVG9NdWx0aScsIC8vTXVsdGlUb1NpbmdsZSAgU2luZ2xlVG9NdWx0aQ0KICAgICAgLy8g6ISR5Zu+5L+h5oGvDQogICAgICAvLyDohJHlm77mlbDmja4NCiAgICAgIGptOiBudWxsLA0KICAgICAgZWRpdG9yOiBudWxsLA0KICAgICAgbWluZERhdGE6IHsNCiAgICAgICAgbWV0YTogew0KICAgICAgICAgIG5hbWU6ICfmjIfmoIflhbPogZTmgJ3nu7Tlr7zlm74nLA0KICAgICAgICAgIGF1dGhvcjogJ2FydGZlc3MnLA0KICAgICAgICAgIHZlcnNpb246ICcwLjAuMScsDQogICAgICAgIH0sDQogICAgICAgIGZvcm1hdDogJ25vZGVfdHJlZScsDQogICAgICAgIGRhdGE6IHsNCiAgICAgICAgICBpZDogJ3Jvb3QnLA0KICAgICAgICAgIHRvcGljOiAn5oyH5qCH77ya5L2g54us56uL5ZCXPycsDQogICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnIzQwOWVmZicsDQogICAgICAgICAgbGV2ZWw6IDAsDQogICAgICAgICAgY2hpbGRyZW46IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgaWQ6IHV0aWxzLnV1aWQoKSwgLy8gW+W/hemAiV0gSUQsIOaJgOacieiKgueCueeahElE5LiN5bqU5pyJ6YeN5aSN77yM5ZCm5YiZSUTph43lpI3nmoTnu5PoioLlsIbooqvlv73nlaUNCiAgICAgICAgICAgICAgdG9waWM6ICfku7vliqE6UERQ566X5rOV5qih5Z6LJywgLy8gW+W/hemAiV0g6IqC54K55LiK5pi+56S655qE5YaF5a65DQogICAgICAgICAgICAgIGRpcmVjdGlvbjogJ3JpZ2h0JywgLy8gW+WPr+mAiV0g6IqC54K555qE5pa55ZCR77yM5q2k5pWw5o2u5LuF5Zyo56ys5LiA5bGC6IqC54K55LiK5pyJ5pWI77yM55uu5YmN5LuF5pSv5oyBIGxlZnQg5ZKMIHJpZ2h0IOS4pOenje+8jOm7mOiupOS4uiByaWdodA0KICAgICAgICAgICAgICBleHBhbmRlZDogdHJ1ZSwgLy8gW+WPr+mAiV0g6K+l6IqC54K55piv5ZCm5piv5bGV5byA54q25oCB77yM6buY6K6k5Li6IHRydWUNCiAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnIzY3YzIzYScsDQogICAgICAgICAgICAgIGxldmVsOiAxLA0KICAgICAgICAgICAgICBjaGlsZHJlbjogWw0KICAgICAgICAgICAgICAgIHsgaWQ6IHV0aWxzLnV1aWQoKSwgdG9waWM6ICfmjIfmoIfvvJrnjKvlpLTpubDlnosnLCAnYmFja2dyb3VuZC1jb2xvcic6ICcjZTZhMjNjJywgbGV2ZWw6IDIgfSwNCiAgICAgICAgICAgICAgICB7IGlkOiB1dGlscy51dWlkKCksIHRvcGljOiAn5oyH5qCH77ya5L2g5aSW5ZCR5ZCX77yfJywgJ2JhY2tncm91bmQtY29sb3InOiAnI2U2YTIzYycsIGxldmVsOiAyIH0sDQogICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgaWQ6IHV0aWxzLnV1aWQoKSwNCiAgICAgICAgICAgICAgICAgIHRvcGljOiAn5oyH5qCH77ya5L2g54ix6K+06K+d5ZCX77yfJywNCiAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNlNmEyM2MnLA0KICAgICAgICAgICAgICAgICAgbGV2ZWw6IDIsDQogICAgICAgICAgICAgICAgICBtZW1vOiAn6L+Z5piv5YWz57O75o+P6L+wJywgLy8g5YWz57O75o+P6L+wDQogICAgICAgICAgICAgICAgICBmb3JtdWxhOiAn6L+Z5piv6K6h566X5YWs5byPJywgLy8g6K6h566X5YWs5byP6K+05piODQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgIGlkOiB1dGlscy51dWlkKCksDQogICAgICAgICAgICAgIHRvcGljOiAn5Lu75YqhOjnlnovkurrmoLznrpfms5UnLA0KICAgICAgICAgICAgICBkaXJlY3Rpb246ICdyaWdodCcsDQogICAgICAgICAgICAgIGV4cGFuZGVkOiB0cnVlLA0KICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjNjdjMjNhJywNCiAgICAgICAgICAgICAgbGV2ZWw6IDEsDQogICAgICAgICAgICAgIGNoaWxkcmVuOiBbDQogICAgICAgICAgICAgICAgeyBpZDogdXRpbHMudXVpZCgpLCAnYmFja2dyb3VuZC1jb2xvcic6ICcjZTZhMjNjJywgdG9waWM6ICfnjKvlpLTpubDlnosnLCBsZXZlbDogMiB9LA0KICAgICAgICAgICAgICAgIHsgaWQ6IHV0aWxzLnV1aWQoKSwgJ2JhY2tncm91bmQtY29sb3InOiAnI2U2YTIzYycsIHRvcGljOiAn6ICB6JmO5Z6LJywgbGV2ZWw6IDIgfSwNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICBpZDogdXRpbHMudXVpZCgpLA0KICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnI2U2YTIzYycsDQogICAgICAgICAgICAgICAgICBtZW1vOiAn6L+Z5piv5YWz57O75o+P6L+wJywgLy8g5YWz57O75o+P6L+wDQogICAgICAgICAgICAgICAgICBmb3JtdWxhOiAn6L+Z5piv6K6h566X5YWs5byPJywgLy8g6K6h566X5YWs5byP6K+05piODQogICAgICAgICAgICAgICAgICB0b3BpYzogJ+WPmOiJsum+meWeiycsDQogICAgICAgICAgICAgICAgICBsZXZlbDogMiwNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgaWQ6IHV0aWxzLnV1aWQoKSwNCiAgICAgICAgICAgICAgdG9waWM6ICfku7vliqE6MTblnovkurrmoLznrpfms5UnLCAvLyDmoIfpopgNCiAgICAgICAgICAgICAgZGlyZWN0aW9uOiAncmlnaHQnLCAvLyDmlrnlkJEgICByaWdodCAgbGVmdA0KICAgICAgICAgICAgICAnZm9udC13ZWlnaHQnOiAnbm9ybWFsJywgLy8g5a2X5L2T57KX57uGIGJvbGQgIG5vcm1hbA0KICAgICAgICAgICAgICAnZm9udC1zdHlsZSc6ICdub3JtYWwnLCAvLyDlrZfkvZPmoLflvI8gaXRhbGljICBub3JtYWwNCiAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IDE4LCAvLyDlrZfkvZPlpKflsI8NCiAgICAgICAgICAgICAgJ2ZvcmVncm91bmQtY29sb3InOiAnI2ZmZicsIC8vIOaWh+Wtl+minOiJsg0KICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjNjdjMjNhJywgLy8g6IOM5pmv6aKc6ImyDQogICAgICAgICAgICAgIGxldmVsOiAxLCAvLyDlsYLnuqcNCiAgICAgICAgICAgICAgY2hpbGRyZW46IFsNCiAgICAgICAgICAgICAgICAvLyDlrZDoioLngrkNCiAgICAgICAgICAgICAgICB7IGlkOiB1dGlscy51dWlkKCksICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNlNmEyM2MnLCB0b3BpYzogJ+iAgeiZjuWeiycsIGxldmVsOiAyIH0sDQogICAgICAgICAgICAgICAgeyBpZDogdXRpbHMudXVpZCgpLCAnYmFja2dyb3VuZC1jb2xvcic6ICcjZTZhMjNjJywgdG9waWM6ICflrZTpm4DlnosnLCBsZXZlbDogMiB9LA0KICAgICAgICAgICAgICAgIHsgaWQ6IHV0aWxzLnV1aWQoKSwgJ2JhY2tncm91bmQtY29sb3InOiAnI2U2YTIzYycsIHRvcGljOiAn6ICD5ouJ5Z6LJywgbGV2ZWw6IDIgfSwNCiAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgXSwNCiAgICAgICAgfSwNCiAgICAgIH0sDQogICAgICAvLyDohJHlm77phY3nva4NCiAgICAgIG9wdGlvbnM6IHsNCiAgICAgICAgY29udGFpbmVyOiAnanNtaW5kX2NvbnRhaW5lcicsIC8vIFvlv4XpgIldIOWuueWZqOeahElEDQogICAgICAgIGVkaXRhYmxlOiB0cnVlLCAvLyBb5Y+v6YCJXSDmmK/lkKblkK/nlKjnvJbovpENCiAgICAgICAgdGhlbWU6ICdwcmltYXJ5JywgLy8gW+WPr+mAiV0g5Li76aKYDQogICAgICAgIHN1cHBvcnRfaHRtbDogdHJ1ZSwNCiAgICAgICAgbG9nX2xldmVsOiAnZGVidWcnLCAvLyDorr7nva7ml6Xlv5fnuqfliKvkuLogZGVidWcNCiAgICAgICAgdmlldzogew0KICAgICAgICAgIGVuZ2luZTogJ2NhbnZhcycsIC8vIOaAnee7tOWvvOWbvuWQhOiKgueCueS5i+mXtOe6v+adoeeahOe7mOWItuW8leaTjg0KICAgICAgICAgIGVuYWJsZV9kZXZpY2VfcGl4ZWxfcmF0aW86IHRydWUsIC8vIOaMieiuvuWkh+WDj+e0oOavlOS+i+e7mOWItumrmOa4heaAnee7tOWvvOWbvg0KICAgICAgICAgIGhtYXJnaW46IDEwMCwgLy8g5oCd57u05a+85Zu+6Led5a655Zmo5aSW5qGG55qE5pyA5bCP5rC05bmz6Led56a7DQogICAgICAgICAgdm1hcmdpbjogNTAsIC8vIOaAnee7tOWvvOWbvui3neWuueWZqOWkluahhueahOacgOWwj+WeguebtOi3neemuw0KICAgICAgICAgIGxpbmVfd2lkdGg6IDIsIC8vIOaAnee7tOWvvOWbvue6v+adoeeahOeyl+e7hg0KICAgICAgICAgIGxpbmVfY29sb3I6ICcjNjY2JywgLy8g5oCd57u05a+85Zu+57q/5p2h55qE6aKc6ImyDQogICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLCAvLyDmmK/lkKblhYHorrjmi5bliqjnlLvluIMNCiAgICAgICAgICBoaWRlX3Njcm9sbGJhcnNfd2hlbl9kcmFnZ2FibGU6IHRydWUsDQogICAgICAgICAgbm9kZV9vdmVyZmxvdzogJ2hpZGRlbicsDQogICAgICAgICAgem9vbTogew0KICAgICAgICAgICAgLy8g57yp5pS+6YWN572uDQogICAgICAgICAgICBtaW46IDAuMSwgLy8g5pyA5bCP57yp5pS+5q+U5L6LDQogICAgICAgICAgICBtYXg6IDIuMSwgLy8g5pyA5aSn57yp5pS+5q+U5L6LDQogICAgICAgICAgICBzdGVwOiAwLjEsIC8vIOe8qeaUvuavlOS+i+atpemVvw0KICAgICAgICAgIH0sDQogICAgICAgICAgZXhwYW5kZXJfc3R5bGU6ICdudW1iZXInLA0KICAgICAgICAgIGxpbmVfc3R5bGU6ICdjdXJ2ZWQnLA0KICAgICAgICAgIC8vICAgY3VzdG9tX25vZGVfcmVuZGVyOiBmdW5jdGlvbiAoam0sIGVsZW1lbnQsIG5vZGUpIHsNCiAgICAgICAgICAvLyAgICAgZWxlbWVudC5pbm5lckhUTUwgPSBgJHtub2RlLnRvcGljfTxkaXYgY2xhc3M9J3RpcC1pY29uJHtub2RlLmRhdGEubWVtbyA/ICcgc2hvd1RpcCcgOiAnJ30nIGRhdGEtbWVtbz0nJHsNCiAgICAgICAgICAvLyAgICAgICBub2RlLmRhdGEubWVtbyB8fCAnJw0KICAgICAgICAgIC8vICAgICB9Jz48aSBjbGFzcz0iZWwtaWNvbi1jaGF0LWRvdC1zcXVhcmUiPjwvaT48L2Rpdj48ZGl2IGNsYXNzPSd0aXAtaWNvbiR7bm9kZS5kYXRhLmZvcm11bGEgPyAnIHNob3dGb3JtdWxhJyA6ICcnfScgZGF0YS1mb3JtdWxhPSckew0KICAgICAgICAgIC8vICAgICAgIG5vZGUuZGF0YS5mb3JtdWxhIHx8ICcnDQogICAgICAgICAgLy8gICAgIH0nPjxpIGNsYXNzPSJlbC1pY29uLWNvbm5lY3Rpb24iPjwvaT48L2Rpdj5gOw0KICAgICAgICAgIC8vICAgICByZXR1cm4gdHJ1ZTsgLy8g6KGo56S65bey57uP5riy5p+T5q2k6IqC54K5DQogICAgICAgICAgLy8gICB9LA0KICAgICAgICB9LA0KICAgICAgICBsYXlvdXQ6IHsNCiAgICAgICAgICBoc3BhY2U6IDEwMCwgLy8g6IqC54K55LmL6Ze055qE5rC05bmz6Ze06LedDQogICAgICAgICAgdnNwYWNlOiAyMCwgLy8g6IqC54K55LmL6Ze055qE5Z6C55u06Ze06LedDQogICAgICAgIH0sDQogICAgICAgIHNob3J0Y3V0OiB7DQogICAgICAgICAgLy8g56aB55So5b+r5o236ZSuDQogICAgICAgICAgZW5hYmxlOiBmYWxzZSwNCiAgICAgICAgfSwNCiAgICAgIH0sDQoNCiAgICAgIHN0cnVjdHVyZTogew0KICAgICAgICBhY3RpdmU6ICdyaWdodCcsDQogICAgICB9LA0KDQogICAgICBjcmVhdGVUeXBlOiAnJywgLy8g5re75Yqg5bmz57qnb3LlrZDnuqcNCiAgICAgIGN1cnJlbnROb2RlOiBudWxsLCAvLyDpgInkuK3oioLngrnkv6Hmga8NCiAgICAgIHNob3dNZW51OiBmYWxzZSwgLy8g5piv5ZCm5pi+56S65Y+z6ZSu6I+c5Y2V5qCPDQogICAgICBpc3Jvb3Q6IGZhbHNlLA0KICAgICAgbWVudVN0eWxlOiB7DQogICAgICAgIHRvcDogJycsDQogICAgICAgIGJvdHRvbTogJycsDQogICAgICAgIGxlZnQ6ICcnLA0KICAgICAgICByaWdodDogJycsDQogICAgICB9LA0KICAgICAgdGlwU3R5bGU6IHsgdG9wOiAnJywgYm90dG9tOiAnJywgbGVmdDogJycsIHJpZ2h0OiAnJyB9LA0KICAgICAgc2hvd1BvcG92ZXI6IGZhbHNlLA0KICAgICAgY3VycmVudE1lbW86ICcnLA0KICAgICAgc2hvd0Zvcm11bGFQb3BvdmVyOiBmYWxzZSwNCiAgICAgIGN1cnJlbnRGb3JtdWxhOiAnJywNCiAgICAgIHZpZXdNb2RlOiAnbWluZCcsDQogICAgICB0YWJsZURhdGE6IFtdLA0KDQogICAgICAvLyDooajmoLwNCiAgICAgIGNvbHVtbnM6IFtdLA0KICAgICAgY29sdW1uc1NpbmdsZVRvTXVsdGk6IFsNCiAgICAgICAgew0KICAgICAgICAgIHByb3A6ICd0eXBlJywNCiAgICAgICAgICBsYWJlbDogJ+aMh+agh+exu+WeiycsDQogICAgICAgICAgd2lkdGg6ICcxNTAnLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgcHJvcDogJ25hbWUnLA0KICAgICAgICAgIGxhYmVsOiAn5oyH5qCH5ZCN56ewJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHByb3A6ICdpbmZlcmVuY2VUeXBlJywNCiAgICAgICAgICBsYWJlbDogJ+aOqOeQhuexu+WeiycsDQogICAgICAgICAgd2lkdGg6ICcxNTAnLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgcHJvcDogJ3Rhc2tOYW1lJywNCiAgICAgICAgICBsYWJlbDogJ+eul+azleaOqOeQhuS7u+WKoeWQjeensCcsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBwcm9wOiAnc3ViVGFyZ2V0TmFtZScsDQogICAgICAgICAgbGFiZWw6ICflhbPogZTmjIfmoIcnLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgcHJvcDogJ3N1YlRhcmdldFR5cGUnLA0KICAgICAgICAgIGxhYmVsOiAn5YWz6IGU5oyH5qCH57G75Z6LJywNCiAgICAgICAgICB3aWR0aDogJzE1MCcsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBwcm9wOiAndGFyZ2V0UmVsYXRpb24nLA0KICAgICAgICAgIGxhYmVsOiAn5YWz6IGU5o+P6L+wJywNCiAgICAgICAgICB3aWR0aDogJzIwMCcsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBwcm9wOiAndGFyZ2V0Rm9ybXVsYScsDQogICAgICAgICAgbGFiZWw6ICforqHnrpfor7TmmI4nLA0KICAgICAgICAgIHdpZHRoOiAnMjAwJywNCiAgICAgICAgfSwNCiAgICAgIF0sDQogICAgICBjb2x1bW5zTXVsdGlUb1NpbmdsZTogWw0KICAgICAgICB7DQogICAgICAgICAgcHJvcDogJ3N1YlRhcmdldE5hbWUnLA0KICAgICAgICAgIGxhYmVsOiAn5YWz6IGU5oyH5qCHJywNCiAgICAgICAgICB3aWR0aDogJzIwMCcsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBwcm9wOiAnc3ViVGFyZ2V0VHlwZScsDQogICAgICAgICAgbGFiZWw6ICflhbPogZTmjIfmoIfnsbvlnosnLA0KICAgICAgICAgIHdpZHRoOiAnMTUwJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHByb3A6ICd0YXJnZXRSZWxhdGlvbicsDQogICAgICAgICAgbGFiZWw6ICflhbPogZTmj4/ov7AnLA0KICAgICAgICAgIHdpZHRoOiAnMjAwJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHByb3A6ICd0YXJnZXRGb3JtdWxhJywNCiAgICAgICAgICBsYWJlbDogJ+iuoeeul+ivtOaYjicsDQogICAgICAgICAgd2lkdGg6ICcyMDAnLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgcHJvcDogJ3Rhc2tOYW1lJywNCiAgICAgICAgICBsYWJlbDogJ+eul+azleaOqOeQhuS7u+WKoeWQjeensCcsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBwcm9wOiAnaW5mZXJlbmNlVHlwZScsDQogICAgICAgICAgbGFiZWw6ICfmjqjnkIbnsbvlnosnLA0KICAgICAgICAgIHdpZHRoOiAnMTUwJywNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHByb3A6ICduYW1lJywNCiAgICAgICAgICBsYWJlbDogJ+aMh+agh+WQjeensCcsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBwcm9wOiAndHlwZScsDQogICAgICAgICAgbGFiZWw6ICfmjIfmoIfnsbvlnosnLA0KICAgICAgICAgIHdpZHRoOiAnMTUwJywNCiAgICAgICAgfSwNCiAgICAgIF0sDQogICAgfTsNCiAgfSwNCiAgbW91bnRlZCgpIHsNCiAgICB2YXIgdGhhdCA9IHRoaXM7DQogICAgdGhpcy5sb2FkTWluZCgpOw0KICB9LA0KICBtZXRob2RzOiB7DQogICAgaGFuZGxlVmlld01vZGUodmlld01vZGUpIHsNCiAgICAgIHRoaXMudmlld01vZGUgPSB2aWV3TW9kZTsNCiAgICAgIGlmICh0aGlzLm1hcFR5cGUgPT09ICdTaW5nbGVUb011bHRpJykgew0KICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnNTaW5nbGVUb011bHRpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zTXVsdGlUb1NpbmdsZTsNCiAgICAgIH0NCiAgICAgIGlmICh0aGlzLnZpZXdNb2RlID09PSAnbWluZCcpIHsNCiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7DQogICAgICAgICAgdGhpcy5yZXNldCgpOw0KICAgICAgICB9LCAxMCk7DQogICAgICB9DQogICAgfSwNCiAgICBsb2FkTWluZCgpIHsNCiAgICAgIHRoaXMuam0gPSBudWxsOw0KICAgICAgdGhpcy5qbSA9IG5ldyBqc01pbmQodGhpcy5vcHRpb25zKTsNCiAgICAgIHRoaXMuam0uc2hvdyh0aGlzLm1pbmREYXRhKTsNCiAgICAgIHRoaXMuZWRpdG9yID0gdGhpcy5qbS52aWV3LmVfZWRpdG9yOw0KICAgICAgdGhpcy5pbml0KCk7DQogICAgICB0aGlzLm1vdXNlV2hlZWwoKTsNCiAgICAgIHRoaXMubW91c2VEcmFnKCk7DQogICAgICB0aGlzLnJvb3ROb2RlID0gdGhpcy5qbS5nZXRfcm9vdCgpOw0KICAgIH0sDQoNCiAgICAvLyDnsbvlnovliIfmjaINCiAgICBjaGFuZ2VNYXBUeXBlKHR5cGUpIHsNCiAgICAgIHRoaXMubWFwVHlwZSA9IHR5cGU7DQogICAgICB0aGlzLnJlbG9hZE1pbmQoKTsNCiAgICB9LA0KICAgIC8vIHRhYuWIh+aNog0KICAgIGhhbmRsZUNsaWNrVGFiKCkge30sDQogICAgLy8g6YWN572u57yW6L6R5pi+56S66ZqQ6JePDQogICAgdG9nZ2xlU2lkZUVkaXRvcih0eXBlKSB7DQogICAgICB0aGlzLnNob3dTaWRlRWRpdG9yID0gdHlwZSA9PT0gdW5kZWZpbmVkID8gIXRoaXMuc2hvd1NpZGVFZGl0b3IgOiB0eXBlOw0KICAgICAgc2V0VGltZW91dCgoKSA9PiB7DQogICAgICAgIHRoaXMucmVzZXQoKTsNCiAgICAgIH0sIDIwMCk7DQogICAgfSwNCiAgICAvLyDnvKnlsI8NCiAgICB6b29tT3V0KCkgew0KICAgICAgdGhpcy5qbS52aWV3Lnpvb21fb3V0KCk7DQogICAgfSwNCiAgICAvLyDmlL7lpKcNCiAgICB6b29tSW4oKSB7DQogICAgICB0aGlzLmptLnZpZXcuem9vbV9pbigpOw0KICAgIH0sDQoNCiAgICAvLyDph43nva7op4blm74NCiAgICByZXNldCgpIHsNCiAgICAgIHRoaXMuam0ucmVzaXplKCk7DQogICAgfSwNCg0KICAgIGV4cG9ydEltYWdlKCkgew0KICAgICAgbGV0IGptID0ganNNaW5kLmN1cnJlbnQ7DQogICAgICBqbS5zaG9vdCgpOw0KICAgIH0sDQoNCiAgICAvLyDlvqrnjq/moJHnu5PmnoQNCiAgICBsb29wVHJlZURhdGEobGlzdCwgY2FsbGJhY2spIHsNCiAgICAgIChmdW5jdGlvbiBkb09uZUZsb29yKGxpc3QpIHsNCiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdCkpIHsNCiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBsaXN0W2ldOw0KICAgICAgICAgICAgY2FsbGJhY2soaXRlbSwgaSk7DQogICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgZG9PbmVGbG9vcihpdGVtLmNoaWxkcmVuKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0pKGxpc3QpOw0KICAgIH0sDQoNCiAgICAvLyDnvJbovpHoioLngrkNCg0KICAgIC8vIOemgeeUqOWPjOWHu+e8lui+kQ0KICAgIHN0b3BEQmNsaWNrKCkgew0KICAgICAgY29uc3Qgam1ub2RlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdqbW5vZGUnKTsNCiAgICAgIE9iamVjdC52YWx1ZXMoam1ub2RlcykuZm9yRWFjaCgoam1ub2RlKSA9PiB7DQogICAgICAgIGptbm9kZS5vbmRibGNsaWNrID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsNCiAgICAgICAgfTsNCiAgICAgIH0pOw0KICAgIH0sDQoNCiAgICBzaG93VGlwKGV2ZW50KSB7DQogICAgICBpZiAodGhpcy5zaG93UG9wb3Zlcikgew0KICAgICAgICByZXR1cm47DQogICAgICB9DQogICAgICB0aGlzLmN1cnJlbnRNZW1vID0gZXZlbnQ/LmZyb21FbGVtZW50Py5jaGlsZHJlblswXT8uZGF0YXNldD8ubWVtbyB8fCAnJzsNCiAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvbW1vbi10aXAnKTsNCiAgICAgIGNvbnN0IHdpZHRoID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCkud2lkdGgpOw0KICAgICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCkuaGVpZ2h0KSAqIDMgKyAxMjsNCiAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDsNCiAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7DQogICAgICAvLyDmnoHpmZDkvY3nva4g6YG/5YWN6LaK55WMDQogICAgICBpZiAoZXZlbnQuY2xpZW50WSArIGhlaWdodCA+IHdpbmRvd0hlaWdodCkgew0KICAgICAgICB0aGlzLnRpcFN0eWxlLmxlZnQgPSBldmVudC5jbGllbnRYICsgJ3B4JzsNCiAgICAgICAgdGhpcy50aXBTdHlsZS50b3AgPSAndW5zZXQnOw0KICAgICAgICB0aGlzLnRpcFN0eWxlLmJvdHRvbSA9IDA7DQogICAgICB9IGVsc2UgaWYgKGV2ZW50LmNsaWVudFggKyB3aWR0aCA+IHdpbmRvd1dpZHRoKSB7DQogICAgICAgIHRoaXMudGlwU3R5bGUudG9wID0gZXZlbnQuY2xpZW50WSArICdweCc7DQogICAgICAgIHRoaXMudGlwU3R5bGUubGVmdCA9ICd1bnNldCc7DQogICAgICAgIHRoaXMudGlwU3R5bGUucmlnaHQgPSAwOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy50aXBTdHlsZS5sZWZ0ID0gZXZlbnQuY2xpZW50WCArICdweCc7DQogICAgICAgIHRoaXMudGlwU3R5bGUudG9wID0gZXZlbnQuY2xpZW50WSArICdweCc7DQogICAgICAgIHRoaXMudGlwU3R5bGUuYm90dG9tID0gJ3Vuc2V0JzsNCiAgICAgIH0NCiAgICAgIGlmICh0aGlzLmN1cnJlbnRNZW1vKSB7DQogICAgICAgIHRoaXMuc2hvd1BvcG92ZXIgPSB0cnVlOw0KICAgICAgfQ0KICAgIH0sDQoNCiAgICBoaWRlVGlwKCkgew0KICAgICAgdGhpcy5jdXJyZW50TWVtbyA9ICcnOw0KICAgICAgdGhpcy5zaG93UG9wb3ZlciA9IGZhbHNlOw0KICAgIH0sDQoNCiAgICBzaG93Rm9ybXVsYShldmVudCkgew0KICAgICAgaWYgKHRoaXMuc2hvd0Zvcm11bGFQb3BvdmVyKSB7DQogICAgICAgIHJldHVybjsNCiAgICAgIH0NCiAgICAgIHRoaXMuY3VycmVudEZvcm11bGEgPSBldmVudD8uZnJvbUVsZW1lbnQ/LmNoaWxkcmVuWzFdPy5kYXRhc2V0Py5mb3JtdWxhIHx8ICcnOw0KICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29tbW9uLWZvcm11bGEnKTsNCiAgICAgIGNvbnN0IHdpZHRoID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCkud2lkdGgpOw0KICAgICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCkuaGVpZ2h0KSAqIDMgKyAxMjsNCiAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDsNCiAgICAgIGNvbnN0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7DQogICAgICAvLyDmnoHpmZDkvY3nva4g6YG/5YWN6LaK55WMDQogICAgICBpZiAoZXZlbnQuY2xpZW50WSArIGhlaWdodCA+IHdpbmRvd0hlaWdodCkgew0KICAgICAgICB0aGlzLnRpcFN0eWxlLmxlZnQgPSBldmVudC5jbGllbnRYICsgJ3B4JzsNCiAgICAgICAgdGhpcy50aXBTdHlsZS50b3AgPSAndW5zZXQnOw0KICAgICAgICB0aGlzLnRpcFN0eWxlLmJvdHRvbSA9IDA7DQogICAgICB9IGVsc2UgaWYgKGV2ZW50LmNsaWVudFggKyB3aWR0aCA+IHdpbmRvd1dpZHRoKSB7DQogICAgICAgIHRoaXMudGlwU3R5bGUudG9wID0gZXZlbnQuY2xpZW50WSArICdweCc7DQogICAgICAgIHRoaXMudGlwU3R5bGUubGVmdCA9ICd1bnNldCc7DQogICAgICAgIHRoaXMudGlwU3R5bGUucmlnaHQgPSAwOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy50aXBTdHlsZS5sZWZ0ID0gZXZlbnQuY2xpZW50WCArICdweCc7DQogICAgICAgIHRoaXMudGlwU3R5bGUudG9wID0gZXZlbnQuY2xpZW50WSArICdweCc7DQogICAgICAgIHRoaXMudGlwU3R5bGUuYm90dG9tID0gJ3Vuc2V0JzsNCiAgICAgIH0NCiAgICAgIGlmICh0aGlzLmN1cnJlbnRGb3JtdWxhKSB7DQogICAgICAgIHRoaXMuc2hvd0Zvcm11bGFQb3BvdmVyID0gdHJ1ZTsNCiAgICAgIH0NCiAgICB9LA0KDQogICAgaGlkZUZvcm11bGEoKSB7DQogICAgICB0aGlzLmN1cnJlbnRGb3JtdWxhID0gJyc7DQogICAgICB0aGlzLnNob3dGb3JtdWxhUG9wb3ZlciA9IGZhbHNlOw0KICAgIH0sDQoNCiAgICAvLyDlpIfms6jnu5Hlrprngrnlh7vkuovku7YNCiAgICB0aXBzQ2xpY2soKSB7DQogICAgICBjb25zdCB0aXBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGlwLWljb24gc2hvd1RpcCcpOw0KICAgICAgT2JqZWN0LnZhbHVlcyh0aXBzKS5mb3JFYWNoKCh0aXApID0+IHsNCiAgICAgICAgdGlwLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHRoaXMuc2hvd1RpcCk7DQogICAgICAgIHRpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCB0aGlzLnNob3dUaXApOw0KICAgICAgfSk7DQogICAgICBPYmplY3QudmFsdWVzKHRpcHMpLmZvckVhY2goKHRpcCkgPT4gew0KICAgICAgICB0aXAucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMuaGlkZVRpcCk7DQogICAgICAgIHRpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5oaWRlVGlwKTsNCiAgICAgIH0pOw0KDQogICAgICBjb25zdCBGb3JtdWxhID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGlwLWljb24gc2hvd0Zvcm11bGEnKTsNCiAgICAgIE9iamVjdC52YWx1ZXMoRm9ybXVsYSkuZm9yRWFjaCgoZm9ybXVsYSkgPT4gew0KICAgICAgICBmb3JtdWxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHRoaXMuc2hvd0Zvcm11bGEpOw0KICAgICAgICBmb3JtdWxhLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHRoaXMuc2hvd0Zvcm11bGEpOw0KICAgICAgfSk7DQogICAgICBPYmplY3QudmFsdWVzKEZvcm11bGEpLmZvckVhY2goKGZvcm11bGEpID0+IHsNCiAgICAgICAgZm9ybXVsYS5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5oaWRlRm9ybXVsYSk7DQogICAgICAgIGZvcm11bGEuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMuaGlkZUZvcm11bGEpOw0KICAgICAgfSk7DQogICAgfSwNCg0KICAgIC8vIOWIneWni+WMlumFjee9rg0KICAgIGluaXQoKSB7DQogICAgICB0aGlzLmptLmV4cGFuZF9hbGwoKTsNCg0KICAgICAgdGhpcy5zdG9wREJjbGljaygpOw0KDQogICAgICB0aGlzLnRpcHNDbGljaygpOw0KICAgIH0sDQogICAgLy8g6I635Y+W6YCJ5Lit5qCH562+55qEIElEDQogICAgZ2V0X3NlbGVjdGVkX25vZGVpZCgpIHsNCiAgICAgIGNvbnN0IHNlbGVjdGVkTm9kZSA9IHRoaXMuam0uZ2V0X3NlbGVjdGVkX25vZGUoKTsNCiAgICAgIGlmIChzZWxlY3RlZE5vZGUpIHsNCiAgICAgICAgcmV0dXJuIHNlbGVjdGVkTm9kZS5pZDsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiBudWxsOw0KICAgICAgfQ0KICAgIH0sDQoNCiAgICAvLyDliIfmjaLmgJ3nu7Tlr7zlm77nu5PmnoQNCiAgICB0b2dnbGVTdHVjdHVyZSh0eXBlKSB7DQogICAgICBpZiAodGhpcy5zdHJ1Y3R1cmUuYWN0aXZlID09PSB0eXBlKSByZXR1cm47DQogICAgICB0aGlzLnN0cnVjdHVyZS5hY3RpdmUgPSB0eXBlOw0KICAgICAgc3dpdGNoICh0eXBlKSB7DQogICAgICAgIGNhc2UgJ3NpZGUnOg0KICAgICAgICAgIC8vIOS4pOi+ueWIhuW4gw0KICAgICAgICAgIHRoaXMubG9vcFRyZWVEYXRhKHRoaXMubWluZERhdGEuZGF0YS5jaGlsZHJlbiwgKGl0ZW0sIGkpID0+IHsNCiAgICAgICAgICAgIGl0ZW0uZGlyZWN0aW9uID0gaSAlIDIgPyAnbGVmdCcgOiAncmlnaHQnOw0KICAgICAgICAgIH0pOw0KICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgJ011bHRpVG9TaW5nbGUnOg0KICAgICAgICAgIC8vIOWQkeW3puWIhuW4gw0KICAgICAgICAgIHRoaXMubG9vcFRyZWVEYXRhKHRoaXMubWluZERhdGEuZGF0YS5jaGlsZHJlbiwgKGl0ZW0pID0+IHsNCiAgICAgICAgICAgIGl0ZW0uZGlyZWN0aW9uID0gJ2xlZnQnOw0KICAgICAgICAgIH0pOw0KICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgJ1NpbmdsZVRvTXVsdGknOg0KICAgICAgICAgIC8vIOWQkeWPs+WIhuW4gw0KICAgICAgICAgIHRoaXMubG9vcFRyZWVEYXRhKHRoaXMubWluZERhdGEuZGF0YS5jaGlsZHJlbiwgKGl0ZW0pID0+IHsNCiAgICAgICAgICAgIGl0ZW0uZGlyZWN0aW9uID0gJ3JpZ2h0JzsNCiAgICAgICAgICB9KTsNCiAgICAgICAgICBicmVhazsNCg0KICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgIGJyZWFrOw0KICAgICAgfQ0KDQogICAgICB0aGlzLmptLnNob3codGhpcy5taW5kRGF0YSk7DQogICAgICB0aGlzLmluaXQoKTsNCiAgICB9LA0KDQogICAgaGFuZGxlQ2hhbmdlTWFwVHlwZSh0eXBlKSB7DQogICAgICB0aGlzLnRvZ2dsZVN0dWN0dXJlKHR5cGUpOw0KICAgICAgdGhpcy5tYXBUeXBlID0gdHlwZTsNCiAgICAgIGlmICh0aGlzLm1hcFR5cGUgPT09ICdTaW5nbGVUb011bHRpJykgew0KICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnNTaW5nbGVUb011bHRpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zTXVsdGlUb1NpbmdsZTsNCiAgICAgIH0NCiAgICB9LA0KDQogICAgLy8g5ouW5ou9DQogICAgaGFuZGxlRHJvcChkcmFnZ2luZ05vZGUsIGRyb3BOb2RlKSB7DQogICAgICAvLyDliY3kuIDkuKrlhYTlvJ/oioLngrkNCiAgICAgIGNvbnN0IHByZXZOb2RlID0gdGhpcy5qbS5maW5kX25vZGVfYmVmb3JlKGRyb3BOb2RlKTsNCiAgICAgIC8vIOiOt+WPluenu+WKqOWQjueahG5vZGUNCiAgICAgIGNvbnN0IGRyYWdGb3JtID0gew0KICAgICAgICBtb2RlbElkOiAnJywNCiAgICAgICAgdHJlZU51bTogIXByZXZOb2RlID8gZHJhZ2dpbmdOb2RlIDogcHJldk5vZGUuaWQsDQogICAgICAgIHRoaXNUcmVlTnVtOiBkcm9wTm9kZSwNCiAgICAgIH07DQogICAgICBjb25zb2xlLmxvZygnZHJhZ0Zvcm0nLCBkcmFnRm9ybSk7DQoNCiAgICAgIC8vIFRPRE8g6LCD5o6l5Y+jDQogICAgfSwNCiAgICAvLyDljZXlh7vph43nva7pgInkuK3og4zmma/popzoibINCiAgICBub2RlQ2xpY2soKSB7DQogICAgICB0aGlzLnNob3dNZW51ID0gZmFsc2U7DQogICAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSB0aGlzLmptLmdldF9zZWxlY3RlZF9ub2RlKCk7DQogICAgICBjb25zb2xlLmxvZyhzZWxlY3RlZE5vZGUsICdzZWxlY3RlZE5vZGUnKTsNCiAgICAgIGlmIChzZWxlY3RlZE5vZGUpIHsNCiAgICAgICAgdGhpcy5jdXJyZW50Tm9kZSA9IHNlbGVjdGVkTm9kZTsNCiAgICAgICAgdGhpcy5hZGRUYXJnZXQudG9waWMgPSB0aGlzLmN1cnJlbnROb2RlLnRvcGljIHx8ICcnOw0KICAgICAgICBpZiAoc2VsZWN0ZWROb2RlLmRhdGEubGV2ZWwgPT09IDIgJiYgdGhpcy5yb290Tm9kZS5pZCAhPT0gdGhpcy5jdXJyZW50Tm9kZS5pZCkgew0KICAgICAgICAgIHRoaXMudG9nZ2xlU2lkZUVkaXRvcih0cnVlKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLnRvZ2dsZVNpZGVFZGl0b3IoZmFsc2UpOw0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgICAvLyDpmLvmraLlhpLms6ENCiAgICBub2RlUHJldmVudENsaWNrKCkge30sDQoNCiAgICAvLyDojrflj5bmlbDmja4NCiAgICBnZXRNaW5kRGF0YSgpIHsNCiAgICAgIHRoaXMubWluZERhdGEgPSB0aGlzLmptLmdldF9kYXRhKCk7DQogICAgICBjb25zb2xlLmxvZyh0aGlzLm1pbmREYXRhLCAndGhpcy5kYXRhVXBkYXRhJyk7DQogICAgfSwNCg0KICAgIC8vIOm8oOagh+a7mui9ruaUvuWkp+e8qeWwjw0KICAgIG1vdXNlV2hlZWwoKSB7DQogICAgICBpZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgew0KICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdkb21Nb3VzZVNjcm9sbCcsIHRoaXMuc2Nyb2xsRnVuYywgZmFsc2UpOw0KICAgICAgfQ0KICAgICAgdGhpcy4kcmVmcy5jb250YWluZXIub25tb3VzZXdoZWVsID0gdGhpcy5zY3JvbGxGdW5jOw0KICAgIH0sDQoNCiAgICAvLyDmu5rova7nvKnmlL4NCiAgICBzY3JvbGxGdW5jKGUpIHsNCiAgICAgIHRoaXMuc2hvd01lbnUgPSBmYWxzZTsNCiAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsNCiAgICAgIGlmIChlLndoZWVsRGVsdGEpIHsNCiAgICAgICAgaWYgKGUud2hlZWxEZWx0YSA+IDApIHsNCiAgICAgICAgICB0aGlzLnpvb21JbigpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuem9vbU91dCgpOw0KICAgICAgICB9DQogICAgICB9IGVsc2UgaWYgKGUuZGV0YWlsKSB7DQogICAgICAgIGlmIChlLmRldGFpbCA+IDApIHsNCiAgICAgICAgICB0aGlzLnpvb21JbigpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuem9vbU91dCgpOw0KICAgICAgICB9DQogICAgICB9DQogICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQoNCiAgICAgIHRoaXMuam0ucmVzaXplKCk7DQogICAgfSwNCg0KICAgIC8vIOm8oOagh+aLluaLvQ0KICAgIG1vdXNlRHJhZygpIHsNCiAgICAgIC8vIOmHjOWxgg0KICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuanNtaW5kLWlubmVyJyk7DQogICAgICAvLyDpgInkuK3oioLngrkNCiAgICAgIGxldCBzZWxlY3RlZDsNCg0KICAgICAgZWwub25tb3VzZWRvd24gPSAoZXYpID0+IHsNCiAgICAgICAgLy8g6YCJ5Lit6IqC54K5DQogICAgICAgIHNlbGVjdGVkID0gdGhpcy5qbS5nZXRfc2VsZWN0ZWRfbm9kZSgpOw0KICAgICAgICAvLyDmoIfor4Yg5piv5ZCm5ouW5ou96IqC54K5IOmBv+WFjeWGsueqgQ0KICAgICAgICB0aGlzLmRyYWdOb2RlRmxhZyA9ICEhc2VsZWN0ZWQ7DQoNCiAgICAgICAgY29uc3QgZGlzWCA9IGV2LmNsaWVudFg7DQogICAgICAgIGNvbnN0IGRpc1kgPSBldi5jbGllbnRZOw0KICAgICAgICBjb25zdCBvcmlnaW5hbFNjcm9sbExlZnQgPSBlbC5zY3JvbGxMZWZ0Ow0KICAgICAgICBjb25zdCBvcmlnaW5hbFNjcm9sbFRvcCA9IGVsLnNjcm9sbFRvcDsNCiAgICAgICAgY29uc3Qgb3JpZ2luYWxTY3JvbGxCZWhhdmlvciA9IGVsLnN0eWxlWydzY3JvbGwtYmVoYXZpb3InXTsNCiAgICAgICAgY29uc3Qgb3JpZ2luYWxQb2ludGVyRXZlbnRzID0gZWwuc3R5bGVbJ3BvaW50ZXItZXZlbnRzJ107DQogICAgICAgIC8vIGF1dG86IOm7mOiupOWAvO+8jOihqOekuua7muWKqOahhueri+WNs+a7muWKqOWIsOaMh+WumuS9jee9ruOAgg0KICAgICAgICBlbC5zdHlsZVsnc2Nyb2xsLWJlaGF2aW9yJ10gPSAnYXV0byc7DQogICAgICAgIC8vIOm8oOagh+enu+WKqOS6i+S7tuaYr+ebkeWQrOeahOaVtOS4qmRvY3VtZW5077yM6L+Z5qC35Y+v5Lul5L2/6byg5qCH6IO95aSf5Zyo5YWD57Sg5aSW6YOo56e75Yqo55qE5pe25YCZ5Lmf6IO95a6e546w5ouW5YqoDQogICAgICAgIGRvY3VtZW50Lm9ubW91c2Vtb3ZlID0gKGV2KSA9PiB7DQogICAgICAgICAgaWYgKHRoaXMuZHJhZ05vZGVGbGFnKSByZXR1cm47DQogICAgICAgICAgdGhpcy5kcmFnID0gZmFsc2U7DQogICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAvLyDorqHnrpfmi5bmi73nmoTlgY/np7vot53nprsNCiAgICAgICAgICBjb25zdCBkaXN0YW5jZVggPSBldi5jbGllbnRYIC0gZGlzWDsNCiAgICAgICAgICBjb25zdCBkaXN0YW5jZVkgPSBldi5jbGllbnRZIC0gZGlzWTsNCg0KICAgICAgICAgIGVsLnNjcm9sbFRvKG9yaWdpbmFsU2Nyb2xsTGVmdCAtIGRpc3RhbmNlWCwgb3JpZ2luYWxTY3JvbGxUb3AgLSBkaXN0YW5jZVkpOw0KDQogICAgICAgICAgLy8g5Zyo6byg5qCH5ouW5Yqo55qE5pe25YCZ5bCG54K55Ye75LqL5Lu25bGP6JS95o6JDQogICAgICAgICAgZWwuc3R5bGVbJ3BvaW50ZXItZXZlbnRzJ10gPSAnbm9uZSc7DQogICAgICAgICAgZWwuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJzsNCiAgICAgICAgfTsNCiAgICAgICAgZG9jdW1lbnQub25tb3VzZXVwID0gKCkgPT4gew0KICAgICAgICAgIGlmICghdGhpcy5kcmFnTm9kZUZsYWcpIHsNCiAgICAgICAgICAgIGVsLnN0eWxlWydzY3JvbGwtYmVoYXZpb3InXSA9IG9yaWdpbmFsU2Nyb2xsQmVoYXZpb3I7DQogICAgICAgICAgICBlbC5zdHlsZVsncG9pbnRlci1ldmVudHMnXSA9IG9yaWdpbmFsUG9pbnRlckV2ZW50czsNCiAgICAgICAgICAgIGVsLnN0eWxlLmN1cnNvciA9ICdncmFiJzsNCiAgICAgICAgICB9DQogICAgICAgICAgZG9jdW1lbnQub25tb3VzZW1vdmUgPSBkb2N1bWVudC5vbm1vdXNldXAgPSBudWxsOw0KICAgICAgICB9Ow0KICAgICAgfTsNCiAgICB9LA0KICB9LA0KDQogIGJlZm9yZURlc3Ryb3koKSB7DQogICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZG9tTW91c2VTY3JvbGwnLCB0aGlzLnNjcm9sbEZ1bmMsIGZhbHNlKTsNCiAgfSwNCn07DQo="},null]}