1 |
- {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\boman-framwork\\ruoyi-ui\\src\\components\\DynamicProcessNodeConfig\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\components\\DynamicProcessNodeConfig\\index.vue","mtime":1619607677254},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgY29tcGxleFBvcCBmcm9tICJAL2NvbXBvbmVudHMvY29tcGxleFBvcCI7DQppbXBvcnQgUnVsZUNvbmZpZyBmcm9tICJAL2NvbXBvbmVudHMvUnVsZUNvbmZpZyINCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogIkR5bmFtaWNQcm9jZXNzTm9kZUNvbmZpZyIsDQogIGNvbXBvbmVudHM6IHsgY29tcGxleFBvcCwgUnVsZUNvbmZpZyB9LA0KICBwcm9wczogew0KICAgIGNvbmZpZ0RhdGE6IHsNCiAgICAgIHR5cGU6IE9iamVjdCwNCiAgICAgIGRlZmF1bHQoKSB7DQogICAgICAgIHJldHVybiB7fTsNCiAgICAgIH0NCiAgICB9LA0KICAgIFRBQkxFX0lEOiB7DQogICAgfSwgLy/mqKHniYjnrKzkuIDmraXphY3nva7ooajmlbDmja4NCiAgICBub2RlOnt9LCAgLy/lvZPliY3oioLngrkNCiAgICBzdGF0dXM6bnVsbCwNCiAgICByZWplY3RlZE5vZGVzOnsNCiAgICAgIHR5cGU6IEFycmF5LA0KICAgICAgZGVmYXVsdDogKCkgPT4gew0KICAgICAgICByZXR1cm4gW10NCiAgICAgIH0NCiAgICB9LA0KICAgIGFzc2lnbmVkTm9kZXM6ew0KICAgICAgdHlwZTogQXJyYXksDQogICAgICBkZWZhdWx0OiAoKSA9PiB7DQogICAgICAgIHJldHVybiBbXQ0KICAgICAgfQ0KICAgIH0sDQogICAgcmVhZE9ubHk6ew0KICAgICAgdHlwZTpCb29sZWFuLA0KICAgICAgZGVmYXVsdDpmYWxzZQ0KICAgIH0NCiAgfSwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgLy/oioLngrnooajnmoTphY3nva4NCiAgICAgIHRhYmxlQ29uZmlnOnsNCiAgICAgICAgcHJvcHM6ew0KICAgICAgICAgIGNvbHVtbnNLZXk6IFsnTkFNRSddLA0KICAgICAgICAgIEF1dG9EYXRhOiBbXSwNCiAgICAgICAgICBoaWRlY29sdW1uczogWydpZCddLA0KICAgICAgICAgIGRhdGE6IHt9LA0KICAgICAgICAgIHRvdGFsUm93Q291bnQ6IDAsDQogICAgICAgICAgZGVmYXVsdFNlbGVjdGVkOiBbXSwNCiAgICAgICAgICBpc0JhY2tSb3dJdGVtOiB0cnVlDQogICAgICAgIH0sDQogICAgICAgIGV2ZW50OnsNCiAgICAgICAgICAnb24taW5wdXQtdmFsdWUtY2hhbmdlJzogKHZhbHVlKSA9PiB7DQogICAgICAgICAgICAgIC8vIOWklumUrueahOaooeeziuaQnOe0og0KICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnByb3BzLkF1dG9EYXRhID0gW10NCiAgICAgICAgICAgICAgdGhpcy4kbmV0d29yay5wb3N0KCcvcC9jL21ldGEvdGFibGUvbGlzdCcse0RFU0NSSVBUSU9OOnZhbHVlfSkudGhlbihyZXMgPT4gew0KICAgICAgICAgICAgICAgIGlmKHJlcy5kYXRhLmNvZGUgPT09IDApew0KICAgICAgICAgICAgICAgICAgLy8gdGhpcy5yb3cgPSByZXMuZGF0YS5kYXRhLnJvdy5jb25jYXQoW10pDQogICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnByb3BzLkF1dG9EYXRhID0gcmVzLmRhdGEuZGF0YS5yb3cucmVkdWNlKChhcnIsaXRlbSkgPT4gew0KICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7DQogICAgICAgICAgICAgICAgICAgICAgdmFsdWU6aXRlbS5OQU1FLnZhbCwNCiAgICAgICAgICAgICAgICAgICAgICBpZDppdGVtLklELnZhbCwNCiAgICAgICAgICAgICAgICAgICAgICBOQU1FOml0ZW0uREVTQ1JJUFRJT04udmFsDQogICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnINCiAgICAgICAgICAgICAgICAgIH0sW10pOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICB9KQ0KICAgICAgICAgIH0sDQogICAgICAgICAgJ29uLXBvcHBlci1zaG93JzogKCR0aGlzKSA9PiB7DQogICAgICAgICAgICAvLyDlvZPlpJbplK7kuIvmi4nnq5nlvIDlp4vljrvor7fmsYLmlbDmja4NCiAgICAgICAgICAgIC8vIHRoaXMuZnJlc2hEcm9wRG93blNlbGVjdEZpbHRlckRhdGEoJHRoaXMpDQogICAgICAgICAgICB0aGlzLiRuZXR3b3JrLnBvc3QoJy9wL2MvbWV0YS90YWJsZS9saXN0Jyx7DQogICAgICAgICAgICAgIHBhZ2VTaXplOiR0aGlzLnBhZ2VTaXplLA0KICAgICAgICAgICAgICBwYWdlOjENCiAgICAgICAgICAgIH0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICAgICAgaWYocmVzLmRhdGEuY29kZSA9PT0gMCl7DQogICAgICAgICAgICAgICAgcmVzLmRhdGEuZGF0YS50YWJ0aC5mb3JFYWNoKGl0ZW0gPT4gew0KICAgICAgICAgICAgICAgICAgaWYoaXRlbS5jb2xuYW1lID09PSAnREVTQ1JJUFRJT04nKXsNCiAgICAgICAgICAgICAgICAgICAgaXRlbS5pc2FrID0gdHJ1ZQ0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0NCiAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgIHRoaXMudGFibGVDb25maWcucHJvcHMuZGF0YSA9IHJlcy5kYXRhLmRhdGE7DQogICAgICAgICAgICAgICAgdGhpcy50YWJsZUNvbmZpZy5wcm9wcy50b3RhbFJvd0NvdW50ID0gcmVzLmRhdGEuZGF0YS50b3RhbFJvd0NvdW50Ow0KICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgfSwNCiAgICAgICAgICAnb24tcGFnZS1jaGFuZ2UnOiAoY3VycmVudFBhZ2UsICR0aGlzKSA9PiB7DQogICAgICAgICAgICAvLyDlpJbplK7nmoTliIbpobXmn6Xor6INCiAgICAgICAgICAgIC8vIHRoaXMuZnJlc2hEcm9wRG93blNlbGVjdEZpbHRlckRhdGEoJHRoaXMsY3VycmVudFBhZ2UpDQogICAgICAgICAgICB0aGlzLiRuZXR3b3JrLnBvc3QoJy9wL2MvbWV0YS90YWJsZS9saXN0Jyx7DQogICAgICAgICAgICAgIHBhZ2VTaXplOiR0aGlzLnBhZ2VTaXplLA0KICAgICAgICAgICAgICBwYWdlOmN1cnJlbnRQYWdlDQogICAgICAgICAgICB9KS50aGVuKHJlcyA9PiB7DQogICAgICAgICAgICAgIGlmKHJlcy5kYXRhLmNvZGUgPT09IDApew0KICAgICAgICAgICAgICAgIHJlcy5kYXRhLmRhdGEudGFidGguZm9yRWFjaChpdGVtID0+IHsNCiAgICAgICAgICAgICAgICAgIGlmKGl0ZW0uY29sbmFtZSA9PT0gJ0RFU0NSSVBUSU9OJyl7DQogICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNhayA9IHRydWUNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtDQogICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnByb3BzLmRhdGEgPSByZXMuZGF0YS5kYXRhOw0KICAgICAgICAgICAgICAgIHRoaXMudGFibGVDb25maWcucHJvcHMudG90YWxSb3dDb3VudCA9IHJlcy5kYXRhLmRhdGEudG90YWxSb3dDb3VudDsNCiAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0sDQogICAgICAgICAgJ29uLWJsdXInOihldmVudCxpbnN0YW5jZSkgPT4gew0KICAgICAgICAgICAgLy8gaWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMuZGF0YS5idXNpbmVzc1R5cGUpICE9PSAnW29iamVjdCBBcnJheV0nIHx8IHRoaXMuZGF0YS5idXNpbmVzc1R5cGUubGVuZ3RoID09PSAwKXsNCiAgICAgICAgICAgIC8vICAgaW5zdGFuY2UuaW5wdXRWYWx1ZSA9ICcnDQoNCiAgICAgICAgICAgIC8vICAgLyoNCiAgICAgICAgICAgIC8vICAgICB0b2RvDQogICAgICAgICAgICAvLyAgICAg5riF56m65omA5pyJ5ZKM5Li76KGo5pyJ5YWz55qE5pWw5o2uDQogICAgICAgICAgICAvLyAgICovDQoNCiAgICAgICAgICAgIC8vIH0NCiAgICAgICAgICB9LA0KICAgICAgICAgICdvbi1ma3JwLXNlbGVjdGVkJzogKHZhbHVlKSA9PiB7DQogICAgICAgICAgICBpZih2YWx1ZS5sZW5ndGggPiAwKXsNCiAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtID0gdmFsdWVbMF0ucm93SXRlbS5OQU1FLnZhbD92YWx1ZVswXS5yb3dJdGVtLk5BTUUudmFsOnZhbHVlWzBdLnJvd0l0ZW0uTkFNRQ0KICAgICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEubm9kZUZvcm1JZCA9IHZhbHVlWzBdLklEDQogICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybU5hbWUgPSB2YWx1ZVswXS5MYWJlbA0KDQogICAgICAgICAgICAgIHRoaXMuZ2V0VmlzaWJsZUJ1dHRvbnMoKQ0KICAgICAgICAgICAgfWVsc2V7DQogICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybSA9IG51bGwNCiAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQgPSBudWxsDQogICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybU5hbWUgPSBudWxsDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIOa4hemZpOacieWFs+Wtl+auteaVsOaNrg0KICAgICAgICAgICAgdGhpcy5vbkNsZWFyKCkNCiAgICAgICAgICAgIHRoaXMubW9kaWZ5RmllbGQuZGVmYXVsdFNlbGVjdGVkID0gW10NCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5iZWhpbmRFdmVudCA9IFtdDQogICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEucHJlRXZlbnQgPSBbXQ0KICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmluZXZpdGFibGVFeHRzID0gW10NCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS52aXNpYmxlQnQgPSBbXQ0KICAgICAgICAgIH0sDQogICAgICAgICAgJ29uLWNsZWFyJzogKCkgPT4gew0KICAgICAgICAgICAgLy8g5riF6Zmk5pyJ5YWz5a2X5q615pWw5o2uDQogICAgICAgICAgICB0aGlzLm9uQ2xlYXIoKQ0KICAgICAgICAgICAgdGhpcy5tb2RpZnlGaWVsZC5kZWZhdWx0U2VsZWN0ZWQgPSBbXQ0KICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLmJlaGluZEV2ZW50ID0gW10NCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5wcmVFdmVudCA9IFtdDQogICAgICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuaW5ldml0YWJsZUV4dHMgPSBbXQ0KICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLnZpc2libGVCdCA9IFtdDQoNCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybSA9IG51bGwNCiAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybUlkID0gbnVsbA0KICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtTmFtZSA9IG51bGwNCiAgICAgICAgICAgIHRoaXMudGFibGVDb25maWcucHJvcHMuQXV0b0RhdGEgPSBbXQ0KICAgICAgICAgICAgICB0aGlzLiRuZXR3b3JrLnBvc3QoJy9wL2MvbWV0YS90YWJsZS9saXN0Jyx7REVTQ1JJUFRJT046Jyd9KS50aGVuKHJlcyA9PiB7DQogICAgICAgICAgICAgICAgaWYocmVzLmRhdGEuY29kZSA9PT0gMCl7DQogICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlnLnByb3BzLkF1dG9EYXRhID0gcmVzLmRhdGEuZGF0YS5yb3cucmVkdWNlKChhcnIsaXRlbSkgPT4gew0KICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7DQogICAgICAgICAgICAgICAgICAgICAgdmFsdWU6aXRlbS5OQU1FLnZhbCwNCiAgICAgICAgICAgICAgICAgICAgICBpZDppdGVtLklELnZhbCwNCiAgICAgICAgICAgICAgICAgICAgICBOQU1FOml0ZW0uREVTQ1JJUFRJT04udmFsDQogICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnINCiAgICAgICAgICAgICAgICAgIH0sW10pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfSkNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0sDQoNCiAgICAgIHZpc2libGVCdXR0b25zOltdLCAvLyDlj6/op4HmjInpkq4NCg0KDQogICAgICAvL+S/ruaUueWtl+autemFjee9rg0KDQogICAgICAvLyDlj6/mmL7npLrlrZfmrrUNCiAgICAgIG1vZGlmeUZpZWxkOiB7DQogICAgICAgIG1vZGlmaWFibGVfZmllbGQ6ICLpgInkuK3nmoTlrZfmrrUiLA0KICAgICAgICBtb2RpZmlhYmxlX2ZpZWxkX25hbWU6ICIiLCAvL+mAieS4reeahOWtl+auteWQjeensDENCiAgICAgICAgdG90YWxSb3dDb3VudDogMCwgLy/mlbDmja7mgLvmnaHmlbANCiAgICAgICAgcGFnZVNpemU6IDEwLCAvL+avj+mhteaVsOaNruadoeaVsA0KICAgICAgICBkYXRhRW1wdHlNZXNzYWdlOiAi5pWw5o2u5Li656m6IiwgLy/msqHmlbDmja7ml7bnmoTmj5DnpLoNCiAgICAgICAgZGF0YToge30sIC8v6KGo5qC85pWw5o2uDQogICAgICAgIGNvbHVtbnNLZXk6IFsidmFsdWUiXSwgLy9pbnB1dOaYvuekuueahOWtl+autQ0KICAgICAgICBjb2x1bW5zOiBbImlkIl0sIC8v5qih57OK5pCc57Si6ZqQ6JeP55qE5YiXDQogICAgICAgIEF1dG9EYXRhOiBbXSwNCiAgICAgICAgZGVmYXVsdFNlbGVjdGVkOiBbXQ0KICAgICAgfSwNCiAgICAgIG1vZGlmeVRhYmxlU2hvdzogZmFsc2UsDQogICAgICBtb2RpZnlDb2x1bW5zOlsNCiAgICAgICAgew0KICAgICAgICAgIHRpdGxlOiAn5bqP5Y+3JywNCiAgICAgICAgICByZW5kZXI6IChoLCBwYXJhbXMpID0+IHsNCiAgICAgICAgICAgICAgcmV0dXJuIGgoJ3NwYW4nLCB7fSxwYXJhbXMuaW5kZXggKyAxKTsNCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICB0aXRsZTogJ+Wtl+auteWQjScsDQogICAgICAgICAga2V5OiAnTGFiZWwnDQogICAgICAgIH0sDQogICAgICAgIC8vIHsNCiAgICAgICAgLy8gICB0aXRsZTogJ+W/heWhqycsDQogICAgICAgIC8vICAga2V5OiAnaXNub3RudWxsJywNCiAgICAgICAgLy8gICByZW5kZXI6IChoLCBwYXJhbXMpID0+IHsNCiAgICAgICAgLy8gICAgICAgcmV0dXJuIGgoJ0NoZWNrYm94Jywgew0KICAgICAgICAvLyAgICAgICAgIHByb3BzOnsNCiAgICAgICAgLy8gICAgICAgICAgICd2YWx1ZSc6cGFyYW1zLnJvdy5pc25vdG51bGwNCiAgICAgICAgLy8gICAgICAgICB9LA0KICAgICAgICAvLyAgICAgICAgIG9uOnsNCiAgICAgICAgLy8gICAgICAgICAgICdvbi1jaGFuZ2UnOiAodmFsdWUpID0+IHsNCiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm1vZGlmaWFibGVGaWVsZFtwYXJhbXMuaW5kZXhdLmlzbm90bnVsbCA9IHZhbHVlDQogICAgICAgIC8vICAgICAgICAgICB9DQogICAgICAgIC8vICAgICAgICAgfQ0KICAgICAgICAvLyAgICAgICB9KTsNCiAgICAgICAgLy8gICB9DQogICAgICAgIC8vIH0sDQogICAgICAgIHsNCiAgICAgICAgICB0aXRsZTogJ+WPquivuycsDQogICAgICAgICAga2V5OiAncmVhZG9ubHknLA0KICAgICAgICAgIHJlbmRlcjogKGgsIHBhcmFtcykgPT4gew0KICAgICAgICAgICAgICByZXR1cm4gaCgnQ2hlY2tib3gnLCB7DQogICAgICAgICAgICAgICAgcHJvcHM6ew0KICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzpwYXJhbXMucm93LnJlYWRvbmx5DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBvbjp7DQogICAgICAgICAgICAgICAgICAnb24tY2hhbmdlJzogKHZhbHVlKSA9PiB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5tb2RpZmlhYmxlRmllbGRbcGFyYW1zLmluZGV4XS5yZWFkb25seSA9IHZhbHVlDQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICB0aXRsZTon5pON5L2cJywNCiAgICAgICAgICByZW5kZXI6KGgscGFyYW1zKSA9PiB7DQogICAgICAgICAgICByZXR1cm4gaCgnc3Bhbicsew0KICAgICAgICAgICAgICBzdHlsZTp7DQogICAgICAgICAgICAgICAgY29sb3I6J3JnYmEoMTYsIDE0MiwgMjMzLCAxKScsDQogICAgICAgICAgICAgICAgY3Vyc29yOidwb2ludGVyJw0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICBvbjp7DQogICAgICAgICAgICAgICAgY2xpY2s6KCkgPT4gew0KICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdEYXRhLm1vZGlmaWFibGVGaWVsZCA9IHRoaXMuY29uZmlnRGF0YS5tb2RpZmlhYmxlRmllbGQuZmlsdGVyKChpdGVtLGluZGV4KSA9PiBpbmRleCAhPT0gcGFyYW1zLmluZGV4KQ0KICAgICAgICAgICAgICAgICAgdGhpcy5tb2RpZnlGaWVsZC5kZWZhdWx0U2VsZWN0ZWQgPSB0aGlzLmNvbmZpZ0RhdGEubW9kaWZpYWJsZUZpZWxkDQogICAgICAgICAgICAgICAgICBpZih0aGlzLm1vZGlmeUZpZWxkLmRlZmF1bHRTZWxlY3RlZC5sZW5ndGggPT09IDApew0KICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGlmeVRhYmxlU2hvdyA9IGZhbHNlDQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LCfliKDpmaQnKQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgXSwNCg0KICAgICAgcGFnZUJ0bkRhdGE6IFsNCiAgICAgICAgew0KICAgICAgICAgIGxhYmVsOiAi5pyA5bCR5ZCM5oSP5Lq65pWwIiwNCiAgICAgICAgICBpY29udHlwZTogMSwNCiAgICAgICAgICBjb2xvcjogIiMwOUExNTUiLA0KICAgICAgICAgIHZhbHVlOiAiIg0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgbGFiZWw6ICLlkIzmhI/nirbmgIHliKvlkI0iLA0KICAgICAgICAgIGljb250eXBlOiAxLA0KICAgICAgICAgIGNvbG9yOiAiIzA5QTE1NSIsDQogICAgICAgICAgdmFsdWU6ICIiDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBsYWJlbDogIuacgOWwkeaLkue7neS6uuaVsCIsDQogICAgICAgICAgaWNvbnR5cGU6IDIsDQogICAgICAgICAgY29sb3I6ICIjRUQ0MDE0IiwNCiAgICAgICAgICB2YWx1ZTogIiINCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIGxhYmVsOiAi5ouS57ud54q25oCB5Yir5ZCNIiwNCiAgICAgICAgICBpY29udHlwZTogMiwNCiAgICAgICAgICBjb2xvcjogIiNFRDQwMTQiLA0KICAgICAgICAgIHZhbHVlOiAiIg0KICAgICAgICB9DQogICAgICBdLA0KICAgICAgc3RhdHVzMTogZmFsc2UsIC8v6LaF5pe25o+Q6YaSDQogICAgICBzdGF0dXMyOiBmYWxzZSwgLy/oh6rliqjlpITnkIYNCiAgICAgIG9wZW5Db250cm9sOiBmYWxzZSwgLy/mjqfliLblvLnmoYbmmK/lkKbmmL7npLoNCiAgICAgIGxvYWRpbmc6IGZhbHNlLCAvLyB65pyA5aSnbG9hZGluZw0KICAgICAgcmVzdWx0RGF0YToge30sIC8vIOmAieS4ree7k+aenA0KICAgICAgb3BlbjogZmFsc2UsIC8vIOaYr+WQpuaJk+W8gA0KICAgICAgb2JqOiB7fSwgLy/kvKDnu5l0YWJsZeeahOWvueixoQ0KICAgICAgc2F2ZU9iajoge30sIC8v5a2Y5YKo55qE5q+P5qyh6IqC54K555qE5a+56LGhDQogICAgICBzZWxlY3RSb3c6IFtdLCAvL+W8ueahhuWkmumAieWNleWHu+S4gOihjOeahOaVsOaNrg0KICAgICAgYXBwcm92ZXM6ICIiLCAvL+WuoeaJueebuOWFs+aVsOaNrg0KICAgICAgc2V0T3ZlcnRpbWU6IHsNCiAgICAgICAgdGhyZXNob2xkOiAiIiwNCiAgICAgICAgc291cmNlczogMCwNCiAgICAgICAgc3RhdHVzOiAxLA0KICAgICAgICBoYW5kbGVWYWx1ZTogIiIsDQogICAgICAgIGhhbmRsZVR5cGU6IDExLA0KICAgICAgICBleHRyYU1zZzogIiINCiAgICAgIH0sDQogICAgICBhdXRvRGV0YWlsOiB7DQogICAgICAgIHRocmVzaG9sZDogIiIsDQogICAgICAgIHNvdXJjZXM6IDAsDQogICAgICAgIHN0YXR1czogMSwNCiAgICAgICAgaGFuZGxlVHlwZTogMjAsDQogICAgICAgIGV4dHJhTXNnOiAiIiwNCiAgICAgICAgaGFuZGxlVmFsdWU6ICIiDQogICAgICB9LA0KICAgICAgYXBwcm92ZWxMaXN0OiBbXSwgLy/lrZjmlL7lrqHmibnnm7jlhbPnmoTmlbDmja4NCiAgICAgIGNsb3NlVHlwZTogZmFsc2UsIC8v5o6n5Yi25a6h5om556Gu5a6a5Y+W5raI5pi+56S654q25oCBDQogICAgICBpc0NhbGxJbnRlcmZhY2U6IGZhbHNlLA0KDQogICAgICBkZWZhdWx0T2JqOnt9LCAgLy/pu5jorqTmlbDmja4NCg0KDQoNCiAgICB9Ow0KICB9LA0KICBjb21wdXRlZDogew0KICAgIHRhYmxlSW5mbyAoKSB7DQogICAgICByZXR1cm4ge3RhYmxlSWQ6dGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQsdGFibGVOYW1lOnRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybX0NCiAgICB9LA0KICAgIGFjdFNlcnZpY2VTKCkgew0KICAgICAgcmV0dXJuIFt0aGlzLnNldE92ZXJ0aW1lLCB0aGlzLmF1dG9EZXRhaWxdOw0KICAgIH0NCiAgfSwNCiAgd2F0Y2g6IHsNCiAgICBwYWdlQnRuRGF0YTogew0KICAgICAgaGFuZGxlcihuZXdWYWwpIHsNCg0KICAgICAgICBsZXQgdGVtQXJyID0gWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIGFjdFR5cGU6IDAsDQogICAgICAgICAgICBhY3ROYW1lOiBuZXdWYWxbMV0udmFsdWUsDQogICAgICAgICAgICBhY3RMaW1pdDogbmV3VmFsWzBdLnZhbHVlDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBhY3RUeXBlOiAxLA0KICAgICAgICAgICAgYWN0TmFtZTogbmV3VmFsWzNdLnZhbHVlLA0KICAgICAgICAgICAgYWN0TGltaXQ6IG5ld1ZhbFsyXS52YWx1ZQ0KICAgICAgICAgIH0NCiAgICAgICAgXTsNCiAgICAgICAgaWYgKHRoaXMuY29uZmlnRGF0YS5ydWxlTGlzdC5sZW5ndGggPCAxKSB7DQogICAgICAgICAgdGhpcy5jb25maWdEYXRhLnJ1bGVMaXN0ID0gdGVtQXJyOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuY29uZmlnRGF0YS5ydWxlTGlzdC5tYXAoKGl0ZW0pID0+IHsNCiAgICAgICAgICAgIHRlbUFyci5tYXAoaW5uZXIgPT4gew0KICAgICAgICAgICAgICBpZiAoaXRlbS5hY3RUeXBlID09PSBpbm5lci5hY3RUeXBlKSB7DQogICAgICAgICAgICAgICAgaXRlbSA9IE9iamVjdC5hc3NpZ24oaXRlbSwgaW5uZXIpOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgfSwNCiAgICAgIGRlZXA6IHRydWUNCiAgICB9LA0KICAgIGFjdFNlcnZpY2VTOiB7DQogICAgICBoYW5kbGVyKG5ld1ZhbCkgew0KICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuYWN0U2VydmljZVMgPSBuZXdWYWw7DQogICAgICB9LA0KICAgICAgZGVlcDogdHJ1ZQ0KICAgIH0sDQogICAgYXBwcm92ZWxMaXN0OiB7DQogICAgICBoYW5kbGVyKG5ld1ZhbCkgew0KICAgICAgICB0aGlzLmNvbmZpZ0RhdGEuYXBwcm92ZWxMaXN0ID0gbmV3VmFsOw0KICAgICAgfSwNCiAgICAgIGRlZXA6IHRydWUNCiAgICB9DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICBvbkJsdXIoZXZlbnQsIGlucywga2V5KSB7DQogICAgICBsZXQgcmVzID0gL15bMC05XSokLzsNCiAgICAgIGlmIChyZXMudGVzdChrZXkpKSB7DQogICAgICAgIGlmICh0aGlzLnBhZ2VCdG5EYXRhW2tleV0udmFsdWUgPT09ICIiICYmIGtleSA9PSAwKSB7DQogICAgICAgICAgdGhpcy4kTWVzc2FnZS53YXJuaW5nKCLmnIDlsJHlkIzmhI/kurrmlbDkuI3og73kuLrnqboiKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAodGhpcy5wYWdlQnRuRGF0YVtrZXldLnZhbHVlID09PSAiIiAmJiBrZXkgPT0gMSkgew0KICAgICAgICAgIHRoaXMuJE1lc3NhZ2Uud2FybmluZygi5ZCM5oSP54q25oCB5Yir5ZCN5LiN6IO95Li656m6Iik7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHRoaXMucGFnZUJ0bkRhdGFba2V5XS52YWx1ZSA9PT0gIiIgJiYga2V5ID09IDIpIHsNCiAgICAgICAgICB0aGlzLiRNZXNzYWdlLndhcm5pbmcoIuacgOWwkeaLkue7neS6uuaVsOS4jeiDveS4uuepuiIpOw0KICAgICAgICB9DQogICAgICAgIGlmICh0aGlzLnBhZ2VCdG5EYXRhW2tleV0udmFsdWUgPT09ICIiICYmIGtleSA9PSAzKSB7DQogICAgICAgICAgdGhpcy4kTWVzc2FnZS53YXJuaW5nKCLmi5Lnu53nirbmgIHliKvlkI3kuI3og73kuLrnqboiKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy/lj6/mmL7lrZfmrrXkuIvmi4nlpJrpgInkuovku7YNCiAgICBPbkZrcnBTZWxlY3RlZChzZWxlY3RlZCkgew0KICAgICAgaWYoc2VsZWN0ZWQubGVuZ3RoID09PSAwKXsNCiAgICAgICAgdGhpcy5tb2RpZnlUYWJsZVNob3cgPSBmYWxzZQ0KICAgICAgfQ0KICAgICAgc2VsZWN0ZWQubWFwKGl0ZW0gPT4gew0KICAgICAgICAvLyBpdGVtLmlzbm90bnVsbCA9IGZhbHNlDQogICAgICAgIGl0ZW0ucmVhZG9ubHkgPSBmYWxzZQ0KICAgICAgICByZXR1cm4gaXRlbQ0KICAgICAgfSkNCiAgICAgIHRoaXMubW9kaWZ5RmllbGQubW9kaWZpYWJsZUZpZWxkID0gc2VsZWN0ZWQ7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEubW9kaWZpYWJsZUZpZWxkID0gc2VsZWN0ZWQ7DQogICAgfSwNCiAgICBvblBvcHBlclNob3coKSB7DQogICAgICAvL+S4i+aLieWkmumAiQ0KICAgICAgdGhpcy5maW5kRmllbGQoeyBBRF9UQUJMRV9JRDogdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQgfSk7DQogICAgfSwNCiAgICBjaGFuZ2VQYWdlKHZhbCkgew0KICAgICAgdGhpcy5maW5kRmllbGQoew0KICAgICAgICBwYWdlU2l6ZTogdGhpcy5tb2RpZnlGaWVsZC5wYWdlU2l6ZSwNCiAgICAgICAgcGFnZTogdmFsLA0KICAgICAgICBBRF9UQUJMRV9JRDogdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQNCiAgICAgIH0pOw0KICAgIH0sDQogICAgbW9kaWZpYWJsZUZpZWxkQ2xpY2sgKCkgeyAgLy/lj6/mmL7lrZfmrrXlj6ror7sv5b+F5aGr5o6n5Yi2DQogICAgICBpZih0aGlzLm1vZGlmeVRhYmxlU2hvdyl7ICAvL+S/neWtmOadg+mZkA0KDQogICAgICB9ZWxzZXsgIC8v5pu05pS55p2D6ZmQDQoNCiAgICAgIH0NCg0KICAgICAgdGhpcy5tb2RpZnlUYWJsZVNob3cgPSAhdGhpcy5tb2RpZnlUYWJsZVNob3cNCiAgICB9LA0KICAgIC8v5qih57OK5p+l5om+aW5wdXTkuovku7YNCiAgICBpbnB1dENoYW5nZSh2YWwpIHsNCiAgICAgIHRoaXMuZmluZEZpZWxkKHsgREVTQ1JJUFRJT046IHZhbCwgQURfVEFCTEVfSUQ6IHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybUlkIH0pOw0KICAgIH0sDQogICAgb25DbGVhcigpIHsNCiAgICAgIHRoaXMubW9kaWZ5VGFibGVTaG93ID0gZmFsc2UNCiAgICAgIHRoaXMubW9kaWZ5RmllbGQubW9kaWZpYWJsZUZpZWxkID0gW107DQogICAgICB0aGlzLmNvbmZpZ0RhdGEubW9kaWZpYWJsZUZpZWxkID0gW107DQogICAgfSwgLy/lj6/mmL7lrZfmrrXmuIXpmaTkuovku7YNCiAgICBjaGFuZ2UxKHZhbCkgew0KICAgICAgdGhpcy5zdGF0dXMxID0gdmFsOw0KICAgICAgdGhpcy5zZXRPdmVydGltZSA9IHsNCiAgICAgICAgdGhyZXNob2xkOiAiIiwNCiAgICAgICAgc291cmNlczogMCwNCiAgICAgICAgc3RhdHVzOiAxLA0KICAgICAgICBoYW5kbGVWYWx1ZTogIiIsDQogICAgICAgIGhhbmRsZVR5cGU6IDExLA0KICAgICAgICBleHRyYU1zZzogIiIsDQogICAgICAgIGlkOnRoaXMuc2V0T3ZlcnRpbWUuaWQNCiAgICAgIH0NCg0KICAgICAgaWYgKHZhbCkgew0KICAgICAgICB0aGlzLnNldE92ZXJ0aW1lLnN0YXR1cyA9IDA7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLnNldE92ZXJ0aW1lLnN0YXR1cyA9IDE7DQogICAgICB9DQogICAgfSwNCiAgICBjaGFuZ2UyKHZhbCkgew0KICAgICAgdGhpcy5zdGF0dXMyID0gdmFsOw0KICAgICAgdGhpcy5hdXRvRGV0YWlsID0gew0KICAgICAgICB0aHJlc2hvbGQ6ICIiLA0KICAgICAgICBzb3VyY2VzOiAwLA0KICAgICAgICBzdGF0dXM6IDEsDQogICAgICAgIGhhbmRsZVR5cGU6IDIwLA0KICAgICAgICBleHRyYU1zZzogIiIsDQogICAgICAgIGhhbmRsZVZhbHVlOiAiIiwNCiAgICAgICAgaWQ6dGhpcy5hdXRvRGV0YWlsLmlkDQogICAgICB9DQogICAgICBpZiAodmFsKSB7DQogICAgICAgIHRoaXMuYXV0b0RldGFpbC5zdGF0dXMgPSAwOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5hdXRvRGV0YWlsLnN0YXR1cyA9IDE7DQogICAgICB9DQogICAgfSwNCiAgICBnZXRSZXN1bHQoZGF0YSkgew0KICAgICAgdGhpcy5yZXN1bHREYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgZGF0YSk7DQogICAgICBpZiAodGhpcy5yZXN1bHREYXRhLmxpc3QubGVuZ3RoID4gMCkgew0KICAgICAgICB0aGlzLmFwcHJvdmVsTGlzdCA9IHRoaXMucmVzdWx0RGF0YS5saXN0Lm1hcChpdGVtID0+IHsNCiAgICAgICAgICBsZXQgdGVtID0gT2JqZWN0LmFzc2lnbih7fSwgaXRlbSk7DQogICAgICAgICAgZGVsZXRlIHRlbS5zdHJpbmc7DQogICAgICAgICAgcmV0dXJuIHRlbTsNCiAgICAgICAgfSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmFwcHJvdmVsTGlzdCA9IFtdOw0KICAgICAgfQ0KICAgIH0sDQogICAgLy/ojrflj5blj6/kv67mlLnlrZfmrrUNCiAgICBmaW5kRmllbGQocGFyYW0pIHsNCiAgICAgIHRoaXMuJG5ldHdvcmsucG9zdCgiL3AvYy9tZXRhL2NvbHVtbi9saXN0IiwgcGFyYW0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgaWYgKHJlcy5kYXRhLmNvZGUgPT09IDApIHsNCiAgICAgICAgICBpZiAocGFyYW0uaGFzT3duUHJvcGVydHkoIkRFU0NSSVBUSU9OIikpIHsNCiAgICAgICAgICAgIHRoaXMubW9kaWZ5RmllbGQuQXV0b0RhdGEgPSBbXTsNCiAgICAgICAgICAgIHRoaXMubW9kaWZ5RmllbGQuQXV0b0RhdGEgPSByZXMuZGF0YS5kYXRhLnJvdy5yZWR1Y2UoDQogICAgICAgICAgICAgIChhcnIsIGl0ZW0pID0+IHsNCiAgICAgICAgICAgICAgICBhcnIucHVzaCh7DQogICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5ERVNDUklQVElPTi52YWwsDQogICAgICAgICAgICAgICAgICBpZDogaXRlbS5JRC52YWwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYXJyOw0KICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICBbXQ0KICAgICAgICAgICAgKTsNCiAgICAgICAgICB9DQogICAgICAgICAgcmVzLmRhdGEuZGF0YS50YWJ0aC5tYXAoaXRlbSA9PiB7DQogICAgICAgICAgICBpZiAoaXRlbS5jb2xuYW1lID09PSAiREVTQ1JJUFRJT04iKSB7DQogICAgICAgICAgICAgIGl0ZW0uaXNhayA9IHRydWU7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICBpdGVtLmlzYWsgPSBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KTsNCiAgICAgICAgICB0aGlzLm1vZGlmeUZpZWxkLmRhdGEgPSByZXMuZGF0YS5kYXRhOw0KICAgICAgICAgIHRoaXMubW9kaWZ5RmllbGQudG90YWxSb3dDb3VudCA9IHJlcy5kYXRhLmRhdGEudG90YWxSb3dDb3VudDsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgfSwNCg0KICAgIHNhdmVDb25maWcgKCkgeyAgLy/noa7lrprmjInpkq7ngrnlh7sNCg0KICAgICAgLy8g6IqC54K55b+F57uPDQogICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuaW5ldml0YWJsZSA9PT0gMiAmJiAoIXRoaXMuY29uZmlnRGF0YS5pbmV2aXRhYmxlRXh0cyB8fCB0aGlzLmNvbmZpZ0RhdGEuaW5ldml0YWJsZUV4dHMubGVuZ3RoID09PSAwKSl7DQogICAgICAgIHRoaXMuJE1vZGFsLmZjRXJyb3Ioew0KICAgICAgICAgICAgdGl0bGU6ICfplJnor68nLA0KICAgICAgICAgICAgY29udGVudDogJ+inhOWImemFjee9ruS4jeiDveS4uuepuicsDQogICAgICAgICAgICBtYXNrOiB0cnVlDQogICAgICAgICAgfSkNCiAgICAgICAgICByZXR1cm4NCiAgICAgIH0NCg0KICAgICAgLy8g5pON5L2c5Lq6DQogICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuYXBwcm92ZXJTdHlsZSA9PT0gMCl7ICAvL+ebtOaOpemAieaLqQ0KICAgICAgICAvLyDlrqHmibnkurrkuLrnqboNCiAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmFwcHJvdmVsTGlzdCAmJiB0aGlzLmNvbmZpZ0RhdGEuYXBwcm92ZWxMaXN0Lmxlbmd0aCA9PT0gMCl7DQogICAgICAgICAgdGhpcy4kTW9kYWwuZmNFcnJvcih7DQogICAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgICBjb250ZW50OiAn5a6h5om55Lq65LiN6IO95Li656m6JywNCiAgICAgICAgICAgIG1hc2s6IHRydWUNCiAgICAgICAgICB9KQ0KDQogICAgICAgICAgcmV0dXJuDQogICAgICAgIH0NCiAgICAgIH1lbHNleyAgLy/mianlsZXnqIvluo8NCiAgICAgICAgLy8g5omp5bGV56iL5bqP5Li656m6DQogICAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5hY3Rpb25Db25maWdbMF0gJiYgIXRoaXMuY29uZmlnRGF0YS5hY3Rpb25Db25maWdbMF0uaGFuZGxlVmFsdWUpew0KICAgICAgICAgIHRoaXMuJE1vZGFsLmZjRXJyb3Ioew0KICAgICAgICAgICAgdGl0bGU6ICfplJnor68nLA0KICAgICAgICAgICAgY29udGVudDogJ+aJqeWxleeoi+W6j+S4jeiDveS4uuepuicsDQogICAgICAgICAgICBtYXNrOiB0cnVlDQogICAgICAgICAgfSkNCiAgICAgICAgICByZXR1cm4NCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICAvLyDlrqHmibnmnaHku7YNCiAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5hcHByb3ZlQ29uZGl0aW9uID09PSAwKXsNCiAgICAgICAgLy8g5pyA5bCR5ZCM5oSP5Lq65pWwDQogICAgICAgIGlmKCF0aGlzLnBhZ2VCdG5EYXRhWzBdLnZhbHVlKXsNCiAgICAgICAgICB0aGlzLiRNb2RhbC5mY0Vycm9yKHsNCiAgICAgICAgICAgICAgdGl0bGU6ICfplJnor68nLA0KICAgICAgICAgICAgICBjb250ZW50OiAn5pyA5bCR5ZCM5oSP5Lq65pWw5LiN6IO95Li656m6JywNCiAgICAgICAgICAgICAgbWFzazogdHJ1ZQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICByZXR1cm4NCiAgICAgICAgfQ0KICAgICAgICAvLyDmnIDlsJHmi5Lnu53kurrmlbANCiAgICAgICAgaWYoIXRoaXMucGFnZUJ0bkRhdGFbMl0udmFsdWUpew0KICAgICAgICAgIHRoaXMuJE1vZGFsLmZjRXJyb3Ioew0KICAgICAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgICAgIGNvbnRlbnQ6ICfmnIDlsJHmi5Lnu53kurrmlbDkuI3og73kuLrnqbonLA0KICAgICAgICAgICAgICBtYXNrOiB0cnVlDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIHJldHVybg0KICAgICAgICB9DQogICAgICB9DQoNCg0KICAgICAgLy8g6amz5Zue6IqC54K5DQogICAgICBpZih0aGlzLmNvbmZpZ0RhdGEuYXNzaWduQmFjayA9PT0gMSAmJiAhdGhpcy5jb25maWdEYXRhLmJhY2tJZCl7DQogICAgICAgIHRoaXMuJE1vZGFsLmZjRXJyb3Ioew0KICAgICAgICAgICAgdGl0bGU6ICfplJnor68nLA0KICAgICAgICAgICAgY29udGVudDogJ+mps+WbnuiKgueCueS4jeiDveS4uuepuicsDQogICAgICAgICAgICBtYXNrOiB0cnVlDQogICAgICAgICAgfSkNCiAgICAgICAgcmV0dXJuDQogICAgICB9DQoNCiAgICAgIC8vIOS9nOW6n+aTjeS9nCAtLeWPkei1t+S9nOW6n+eUs+ivtw0KICAgICAgaWYodGhpcy5jb25maWdEYXRhLm5vZGVDYW5jbGUgPT09IDEgJiYgIXRoaXMuY29uZmlnRGF0YS5jYW5jbGVVcmwpew0KICAgICAgICB0aGlzLiRNb2RhbC5mY0Vycm9yKHsNCiAgICAgICAgICAgIHRpdGxlOiAn6ZSZ6K+vJywNCiAgICAgICAgICAgIGNvbnRlbnQ6ICfkvZzlup/nlLPor7flnLDlnYDkuI3og73kuLrnqbonLA0KICAgICAgICAgICAgbWFzazogdHJ1ZQ0KICAgICAgICAgIH0pDQogICAgICAgIHJldHVybg0KICAgICAgfQ0KDQogICAgICAvLyDmjIfmtL7mtYHovazoioLngrkNCiAgICAgIGlmKHRoaXMuY29uZmlnRGF0YS5hc3NpZ25OZXh0ID09PSAwICYmICghdGhpcy5jb25maWdEYXRhLmFzc2lnblJhbmdlIHx8IHRoaXMuY29uZmlnRGF0YS5hc3NpZ25SYW5nZS5sZW5ndGggPT09IDApKXsNCiAgICAgICAgdGhpcy4kTW9kYWwuZmNFcnJvcih7DQogICAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgICBjb250ZW50OiAn6IqC54K56IyD5Zu05LiN6IO95Li656m6JywNCiAgICAgICAgICAgIG1hc2s6IHRydWUNCiAgICAgICAgICB9KQ0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCg0KICAgICAgLy8g6LaF5pe25o+Q6YaSDQogICAgICBpZih0aGlzLnN0YXR1czEgJiYgKCF0aGlzLnNldE92ZXJ0aW1lLnRocmVzaG9sZCB8fCAhdGhpcy5zZXRPdmVydGltZS5oYW5kbGVWYWx1ZSkpew0KICAgICAgICB0aGlzLiRNb2RhbC5mY0Vycm9yKHsNCiAgICAgICAgICAgIHRpdGxlOiAn6ZSZ6K+vJywNCiAgICAgICAgICAgIGNvbnRlbnQ6ICfor7floavlhpnlrozlloTotoXml7bmj5DphpLkv6Hmga8nLA0KICAgICAgICAgICAgbWFzazogdHJ1ZQ0KICAgICAgICAgIH0pDQogICAgICAgIHJldHVybg0KICAgICAgfQ0KICAgICAgLy/oh6rliqjlpITnkIYNCiAgICAgIGlmKHRoaXMuc3RhdHVzMiAmJiAoIXRoaXMuYXV0b0RldGFpbC50aHJlc2hvbGQpKXsNCiAgICAgICAgdGhpcy4kTW9kYWwuZmNFcnJvcih7DQogICAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgICBjb250ZW50OiAn6K+35aGr5YaZ5a6M5ZaE6Ieq5Yqo5aSE55CG5L+h5oGvJywNCiAgICAgICAgICAgIG1hc2s6IHRydWUNCiAgICAgICAgICB9KQ0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCg0KICAgICAgLy8g5o6n5Yi26Ieq5Yqo5aSE55CG5pe26Ze05aSn5LqO6LaF5pe25o+Q6YaS5pe26Ze0DQogICAgICBpZih0aGlzLnN0YXR1czEgJiYgdGhpcy5zdGF0dXMyKXsNCiAgICAgICAgbGV0IHN0YXJ0ID0gdGhpcy5zZXRPdmVydGltZS5zb3VyY2VzID09PSAwP051bWJlcih0aGlzLnNldE92ZXJ0aW1lLnRocmVzaG9sZCk6TnVtYmVyKHRoaXMuc2V0T3ZlcnRpbWUudGhyZXNob2xkKSoyNA0KICAgICAgICBsZXQgZW5kID0gdGhpcy5hdXRvRGV0YWlsLnNvdXJjZXMgPT09IDA/TnVtYmVyKHRoaXMuYXV0b0RldGFpbC50aHJlc2hvbGQpOk51bWJlcih0aGlzLmF1dG9EZXRhaWwudGhyZXNob2xkKSoyNA0KDQogICAgICAgIGlmKHN0YXJ0ID49IGVuZCl7DQogICAgICAgICAgdGhpcy4kTW9kYWwuZmNFcnJvcih7DQogICAgICAgICAgICAgIHRpdGxlOiAn6ZSZ6K+vJywNCiAgICAgICAgICAgICAgY29udGVudDogJ+i2heaXtuaPkOmGkuaXtumXtOS4jeiDveWkp+S6juiHquWKqOWkhOeQhuaXtumXtCcsDQogICAgICAgICAgICAgIG1hc2s6IHRydWUNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgcmV0dXJuDQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgICAgbGV0IGd1aVN0eWxlID0gSlNPTi5wYXJzZSh0aGlzLiRwYXJlbnQuJHBhcmVudC5teURlc2lnbmVyLmdldEZsb3dEYXRhKCkpDQogICAgICBndWlTdHlsZS5ub2RlRGF0YUFycmF5Lm1hcChpdGVtID0+IHsNCiAgICAgICAgaWYodGhpcy5jb25maWdEYXRhLmtleSA9PT0gaXRlbS5rZXkpew0KICAgICAgICAgIGl0ZW0udGV4dCA9IHRoaXMuY29uZmlnRGF0YS5uYW1lDQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGl0ZW0NCiAgICAgIH0pDQoNCg0KICAgICAgaWYoKHRoaXMuZGVmYXVsdE9iai5ub2RlRm9ybUlkICE9PSB0aGlzLmNvbmZpZ0RhdGEubm9kZUZvcm1JZCkgJiYgdGhpcy5kZWZhdWx0T2JqLm5vZGVGb3JtSWQpew0KICAgICAgICB0aGlzLiRNb2RhbC5mY0Vycm9yKHsNCiAgICAgICAgICB0aXRsZTogJ+mUmeivrycsDQogICAgICAgICAgY29udGVudDogJ+W9k+WJjeiKgueCueeahOihqOWNleW3suS/ruaUue+8jOiKgueCueWQjueahOi/nue6v+mFjee9ruWwhuS8mua4heepuu+8jOaYr+WQpuehruiupOS/neWtmO+8nycsDQogICAgICAgICAgbWFzazogdHJ1ZSwNCiAgICAgICAgICBzaG93Q2FuY2VsOiB0cnVlLA0KICAgICAgICAgIG9uT2s6ICgpID0+IHsNCiAgICAgICAgICAgIHRoaXMubm9kZS5maW5kTGlua3NPdXRPZigpLm1hcChpdGVtID0+IHsNCiAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuJHBhcmVudC4kcGFyZW50LnBhdGhNc2dbaXRlbS5kYXRhLmtleV0NCg0KICAgICAgICAgICAgICBsZXQgZ3VpU3R5bGUgPSBKU09OLnBhcnNlKHRoaXMuJHBhcmVudC4kcGFyZW50Lm15RGVzaWduZXIuZ2V0Rmxvd0RhdGEoKSkNCiAgICAgICAgICAgICAgZ3VpU3R5bGUubGlua0RhdGFBcnJheSA9IGd1aVN0eWxlLmxpbmtEYXRhQXJyYXkuZmlsdGVyKHRlbXAgPT4gdGVtcC5rZXkgIT09IGl0ZW0uZGF0YS5rZXkpDQogICAgICAgICAgICB9KQ0KICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRwYXJlbnQuZGF0YS5ndWlTdHlsZSA9IEpTT04uc3RyaW5naWZ5KGd1aVN0eWxlKQ0KICAgICAgICAgICAgdGhpcy4kcGFyZW50LiRwYXJlbnQuaW5pdCgpDQogICAgICAgICAgICB0aGlzLiRlbWl0KCdjbG9zZURyYXdlcicpDQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgICByZXR1cm4NCiAgICAgIH1lbHNlew0KICAgICAgICB0aGlzLiRwYXJlbnQuJHBhcmVudC5kYXRhLmd1aVN0eWxlID0gSlNPTi5zdHJpbmdpZnkoZ3VpU3R5bGUpDQogICAgICAgIHRoaXMuJHBhcmVudC4kcGFyZW50LmluaXQoKQ0KICAgICAgICB0aGlzLiRlbWl0KCdjbG9zZURyYXdlcicpDQogICAgICB9DQoNCiAgICB9LA0KICAgIGNsb3NlRHJhd2VyICgpIHsgIC8v5Y+W5raI5oyJ6ZKu54K55Ye7DQogICAgICB0aGlzLiRwYXJlbnQuJHBhcmVudC5ub2RlTXNnW051bWJlcih0aGlzLmNvbmZpZ0RhdGEua2V5KV0gPSB0aGlzLmRlZmF1bHRPYmoNCiAgICAgIHRoaXMuJGVtaXQoJ2Nsb3NlRHJhd2VyJykNCiAgICB9LA0KICAgIGFwcHJvdmVyU3R5bGVDaGFuZ2UgKCkgeyAgLy/pgInmi6nlrqHmibnkurrnsbvlnovliIfmjaINCiAgICAgIHRoaXMuY29uZmlnRGF0YS5hY3Rpb25Db25maWdbMF0uaGFuZGxlVmFsdWUgPSBudWxsDQogICAgICB0aGlzLnJlc3VsdERhdGEgPSB7fQ0KICAgICAgdGhpcy5hcHByb3ZlbExpc3QgPSBbXTsNCiAgICB9LA0KDQogICAgLy8g5a6h5om55p2h5Lu2IOaJqeWxlQ0KICAgIGluZXZpdGFibGVSZXN1bHQgKHZhbHVlKSB7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEuaW5ldml0YWJsZUV4dHMgPSB2YWx1ZQ0KICAgIH0sDQogICAgcHJlRXZlbnRSZXN1bHQgKHZhbHVlKSB7ICAvL+WJjee9ruS6i+S7tuWkhOeQhg0KICAgICAgdGhpcy5jb25maWdEYXRhLnByZUV2ZW50ID0gdmFsdWUNCiAgICB9LA0KICAgIGJlaGluZEV2ZW50UmVzdWx0ICh2YWx1ZSkgeyAvL+WQjue9ruS6i+S7tuWkhOeQhg0KICAgICAgdGhpcy5jb25maWdEYXRhLmJlaGluZEV2ZW50ID0gdmFsdWUNCiAgICB9LA0KICAgIGdldFZpc2libGVCdXR0b25zICgpIHsgLy/ojrflj5blj6/op4HmjInpkq4NCiAgICAgIHRoaXMuJG5ldHdvcmsucG9zdCgnL3AvY3Mvbm9kZS9kZWZpbmUvYnQnLHsNCiAgICAgICAgaWQ6IHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybUlkLA0KICAgICAgICB2dWVEaXNwYWx5OiAwDQogICAgICB9KQ0KICAgICAgLnRoZW4ocmVzID0+IHsNCiAgICAgICAgaWYocmVzLmRhdGEucmVzdWx0Q29kZSA9PT0gMCl7DQogICAgICAgICAgdGhpcy52aXNpYmxlQnV0dG9ucyA9IHJlcy5kYXRhLmRhdGEuZGlmaW5lRGF0YQ0KICAgICAgICB9ZWxzZXsNCiAgICAgICAgICB0aGlzLnZpc2libGVCdXR0b25zID0gW10NCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9LA0KICAgIHZpc2libGVCdENoYW5nZSAodmFsdWUpIHsgIC8v5Y+v6KeB5oyJ6ZKu6YCJ5oupDQogICAgICBpZih2YWx1ZVswXSA9PT0gJ2JTZWxlY3QtYWxsJyl7DQogICAgICAgIHRoaXMuY29uZmlnRGF0YS52aXNpYmxlQnQgPSB0aGlzLnZpc2libGVCdXR0b25zLnJlZHVjZSgoYXJyLGN1cnJlbnQpID0+IHsNCiAgICAgICAgICBhcnIucHVzaChjdXJyZW50LklEKQ0KICAgICAgICAgIHJldHVybiBhcnINCiAgICAgICAgfSxbXSkNCiAgICAgIH0NCiAgICB9DQogIH0sDQogIGNyZWF0ZWQoKSB7DQogICAgLy8g5L+d5a2Y6buY6K6k5YC8DQogICAgdGhpcy5kZWZhdWx0T2JqID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZ0RhdGEpKQ0KDQogICAgaWYgKHRoaXMuY29uZmlnRGF0YS5hY3Rpb25Db25maWcubGVuZ3RoID09PSAwKSB7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEuYWN0aW9uQ29uZmlnID0gWw0KICAgICAgICB7DQogICAgICAgICAgaWQ6IG51bGwsDQogICAgICAgICAgaGFuZGxlVHlwZTogMzMsDQogICAgICAgICAgaGFuZGxlVmFsdWU6IG51bGwsDQogICAgICAgICAgZXh0cmFNc2c6IG51bGwNCiAgICAgICAgfQ0KICAgICAgXTsNCiAgICB9IGVsc2Ugew0KICAgICAgdGhpcy5jb25maWdEYXRhLmFjdGlvbkNvbmZpZyA9IFsNCiAgICAgICAgew0KICAgICAgICAgIGlkOiB0aGlzLmNvbmZpZ0RhdGEuYWN0aW9uQ29uZmlnWzBdLmlkLA0KICAgICAgICAgIGhhbmRsZVR5cGU6IDMzLA0KICAgICAgICAgIGhhbmRsZVZhbHVlOiB0aGlzLmNvbmZpZ0RhdGEuYWN0aW9uQ29uZmlnWzBdLmhhbmRsZVZhbHVlLA0KICAgICAgICAgIGV4dHJhTXNnOiB0aGlzLmNvbmZpZ0RhdGEuYWN0aW9uQ29uZmlnWzBdLmV4dHJhTXNnDQogICAgICAgIH0NCiAgICAgIF07DQogICAgfQ0KDQogICAgaWYgKHRoaXMuY29uZmlnRGF0YS5tb2RpZmlhYmxlRmllbGQpIHsNCiAgICAgIHRoaXMubW9kaWZ5RmllbGQuZGVmYXVsdFNlbGVjdGVkID0gdGhpcy5jb25maWdEYXRhLm1vZGlmaWFibGVGaWVsZA0KICAgIH0NCg0KDQogICAgaWYgKA0KICAgICAgdGhpcy5jb25maWdEYXRhLmFwcHJvdmVsTGlzdCAmJg0KICAgICAgdGhpcy5jb25maWdEYXRhLmFwcHJvdmVsTGlzdC5sZW5ndGggPiAwDQogICAgKSB7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEuYXBwcm92ZWxMaXN0Lm1hcChpdGVtID0+IHsNCiAgICAgICAgbGV0IHRlbU9iaiA9IE9iamVjdC5hc3NpZ24oe30sIGl0ZW0pOw0KICAgICAgICB0aGlzLmFwcHJvdmVzICs9IGl0ZW0uYXBwcm92ZVZhbHVlTmFtZT9pdGVtLmFwcHJvdmVWYWx1ZU5hbWU6aXRlbS5hcHByb3ZlX3ZhbHVlX25hbWUgKyAiLCI7DQogICAgICAgIHRlbU9iai5hcHByb3ZlX3R5cGUgPSB0ZW1PYmouYXBwcm92ZVR5cGU/dGVtT2JqLmFwcHJvdmVUeXBlOnRlbU9iai5hcHByb3ZlX3R5cGU7DQogICAgICAgIHRlbU9iai5hcHByb3ZlX3ZhbHVlID0gdGVtT2JqLmFwcHJvdmVWYWx1ZT90ZW1PYmouYXBwcm92ZVZhbHVlOnRlbU9iai5hcHByb3ZlX3ZhbHVlOw0KICAgICAgICB0ZW1PYmouYXBwcm92ZV92YWx1ZV9uYW1lID0gaXRlbS5hcHByb3ZlVmFsdWVOYW1lP2l0ZW0uYXBwcm92ZVZhbHVlTmFtZTppdGVtLmFwcHJvdmVfdmFsdWVfbmFtZTsNCiAgICAgICAgZGVsZXRlIHRlbU9iai5hcHByb3ZlVHlwZTsNCiAgICAgICAgZGVsZXRlIHRlbU9iai5hcHByb3ZlVmFsdWU7DQogICAgICAgIGRlbGV0ZSB0ZW1PYmouYXBwcm92ZVZhbHVlTmFtZTsNCg0KICAgICAgICBsZXQgdGVtTCA9IE9iamVjdC5hc3NpZ24oe30sIHRlbU9iaik7DQogICAgICAgIHRoaXMuYXBwcm92ZWxMaXN0LnB1c2godGVtT2JqKTsNCiAgICAgICAgdGVtTC5zdHJpbmcgPSBpdGVtLmFwcHJvdmVWYWx1ZU5hbWU/aXRlbS5hcHByb3ZlVmFsdWVOYW1lOml0ZW0uYXBwcm92ZV92YWx1ZV9uYW1lOw0KICAgICAgICB0aGlzLnJlc3VsdERhdGEubGlzdA0KICAgICAgICAgID8gdGhpcy5yZXN1bHREYXRhLmxpc3QucHVzaCh0ZW1MKQ0KICAgICAgICAgIDogdGhpcy4kc2V0KHRoaXMucmVzdWx0RGF0YSwgImxpc3QiLCBbdGVtTF0pOw0KICAgICAgfSk7DQogICAgICB0aGlzLnJlc3VsdERhdGEudG90YWwNCiAgICAgICAgPyAodGhpcy5yZXN1bHREYXRhLnRvdGFsID0gdGhpcy5yZXN1bHREYXRhLmxpc3QubGVuZ3RoKQ0KICAgICAgICA6IHRoaXMuJHNldCh0aGlzLnJlc3VsdERhdGEsICJ0b3RhbCIsIHRoaXMucmVzdWx0RGF0YS5saXN0Lmxlbmd0aCk7DQogICAgICBpZiAodGhpcy5hcHByb3Zlcy5sZW5ndGggPiAwKSB7DQogICAgICAgIHRoaXMuYXBwcm92ZXMgPSB0aGlzLmFwcHJvdmVzLnN1YnN0cmluZygwLCB0aGlzLmFwcHJvdmVzLmxlbmd0aCAtIDEpOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIGlmICgNCiAgICAgIHRoaXMuY29uZmlnRGF0YS5ydWxlTGlzdCAmJg0KICAgICAgdGhpcy5jb25maWdEYXRhLnJ1bGVMaXN0Lmxlbmd0aCA+IDANCiAgICApIHsNCiAgICAgIHRoaXMuY29uZmlnRGF0YS5ydWxlTGlzdC5tYXAoaXRlbSA9PiB7DQogICAgICAgIGlmIChpdGVtLmFjdFR5cGUgPT09IDApIHsNCiAgICAgICAgICB0aGlzLnBhZ2VCdG5EYXRhWzFdLnZhbHVlID0gaXRlbS5hY3ROYW1lOw0KICAgICAgICAgIHRoaXMucGFnZUJ0bkRhdGFbMF0udmFsdWUgPSBpdGVtLmFjdExpbWl0Ow0KICAgICAgICB9DQogICAgICAgIGlmIChpdGVtLmFjdFR5cGUgPT09IDEpIHsNCiAgICAgICAgICB0aGlzLnBhZ2VCdG5EYXRhWzNdLnZhbHVlID0gaXRlbS5hY3ROYW1lOw0KICAgICAgICAgIHRoaXMucGFnZUJ0bkRhdGFbMl0udmFsdWUgPSBpdGVtLmFjdExpbWl0Ow0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9DQoNCiAgICBpZiAoDQogICAgICB0aGlzLmNvbmZpZ0RhdGEuYWN0U2VydmljZVMgJiYNCiAgICAgIHRoaXMuY29uZmlnRGF0YS5hY3RTZXJ2aWNlUy5sZW5ndGggPiAwDQogICAgKSB7DQogICAgICB0aGlzLmNvbmZpZ0RhdGEuYWN0U2VydmljZVMubWFwKGl0ZW0gPT4gew0KICAgICAgICBpZiAoaXRlbS5oYW5kbGVUeXBlID49IDIwKSB7DQogICAgICAgICAgdGhpcy5hdXRvRGV0YWlsID0gaXRlbTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLnNldE92ZXJ0aW1lID0gaXRlbTsNCiAgICAgICAgfQ0KICAgICAgfSk7DQogICAgICB0aGlzLnNldE92ZXJ0aW1lLnN0YXR1cyA9PT0gMA0KICAgICAgICA/ICh0aGlzLnN0YXR1czEgPSB0cnVlKQ0KICAgICAgICA6ICh0aGlzLnN0YXR1czEgPSBmYWxzZSk7DQogICAgICB0aGlzLmF1dG9EZXRhaWwuc3RhdHVzID09PSAwDQogICAgICAgID8gKHRoaXMuc3RhdHVzMiA9IHRydWUpDQogICAgICAgIDogKHRoaXMuc3RhdHVzMiA9IGZhbHNlKTsNCiAgICB9IGVsc2Ugew0KICAgICAgdGhpcy5jb25maWdEYXRhLmFjdFNlcnZpY2VTID0gWw0KICAgICAgICB7DQogICAgICAgICAgdGhyZXNob2xkOiAiIiwNCiAgICAgICAgICBzb3VyY2VzOiAwLA0KICAgICAgICAgIHN0YXR1czogMSwNCiAgICAgICAgICBoYW5kbGVWYWx1ZTogIiIsDQogICAgICAgICAgaGFuZGxlVHlwZTogMTENCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHRocmVzaG9sZDogIiIsDQogICAgICAgICAgc291cmNlczogMCwNCiAgICAgICAgICBzdGF0dXM6IDEsDQogICAgICAgICAgaGFuZGxlVHlwZTogMjAsDQogICAgICAgICAgaGFuZGxlVmFsdWU6ICIiDQogICAgICAgIH0NCiAgICAgIF07DQogICAgfQ0KDQogICAgLy8g5aSE55CG6IqC54K56KGo6YWN572u6buY6K6k5YC8DQogICAgaWYodGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQpew0KICAgICAgdGhpcy50YWJsZUNvbmZpZy5wcm9wcy5kZWZhdWx0U2VsZWN0ZWQgPSBbDQogICAgICAgIHsNCiAgICAgICAgICBJRDogdGhpcy5jb25maWdEYXRhLm5vZGVGb3JtSWQsDQogICAgICAgICAgTGFiZWw6IHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybU5hbWUNCiAgICAgICAgfQ0KICAgICAgXQ0KICAgIH0NCg0KICAgIC8vIOWPr+ingeaMiemSrg0KICAgIGlmKHRoaXMuY29uZmlnRGF0YS5ub2RlRm9ybUlkKXsNCiAgICAgIHRoaXMuZ2V0VmlzaWJsZUJ1dHRvbnMoKQ0KICAgIH0NCiAgfSwNCiAgbW91bnRlZCgpIHsNCiAgICAvL3RoaXMuZ2V0VHJlZURhdGEoKTsNCiAgICAvKiovDQogIH0NCn07DQo="},null]}
|