gs-cae-design 1.1.48 → 1.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/docs/classes/CommonInterfaceManager.md +2 -2
- package/lib/.gz +0 -0
- package/lib/CAEDesign.common-report.html +2 -2
- package/lib/CAEDesign.common.js +18 -18
- package/lib/CAEDesign.umd-report.html +2 -2
- package/lib/CAEDesign.umd.js +18 -18
- package/lib/CAEDesign.umd.min-report.html +2 -2
- package/lib/CAEDesign.umd.min.js +18 -18
- package/package.json +1 -1
- package/src/caeCardEditor/caeCardObjects/seainp/cardLOADCN.ts +3 -0
- package/src/gsDevFx/managers/interfaceManagers/commonInterfaceManager.ts +22 -32
- package/src/gsDevFx/objects/loadObjects/loadGroupObject.ts +3 -0
- package/src/gsDevFx/objects/pretreatmentObjects/colorDivComponentGroupObject.ts +1 -1
- package/src/viewerWrapper/commands/aftertreatment/showShipImpact/commandShowShipImpact.ts +6 -1
- package/types/caeDesign/src/caeCardEditor/caeCardObjects/seainp/cardLOADCN.d.ts.map +1 -1
- package/types/caeDesign/src/gsDevFx/managers/interfaceManagers/commonInterfaceManager.d.ts +2 -2
- package/types/caeDesign/src/gsDevFx/managers/interfaceManagers/commonInterfaceManager.d.ts.map +1 -1
- package/types/caeDesign/src/gsDevFx/objects/loadObjects/loadGroupObject.d.ts.map +1 -1
- package/types/caeDesign/src/gsDevFx/operators/cAEObjectPreSelector.d.ts.map +1 -1
- package/types/caeDesign/src/viewerWrapper/commands/aftertreatment/showShipImpact/commandShowShipImpact.d.ts.map +1 -1
package/lib/CAEDesign.umd.min.js
CHANGED
|
@@ -2524,7 +2524,7 @@ eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function
|
|
|
2524
2524
|
/*! no static exports found */
|
|
2525
2525
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2526
2526
|
|
|
2527
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLWJ1dHRvbi52dWU/
|
|
2527
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLWJ1dHRvbi52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD1jNTZmY2UxYSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2NvbXBvbmVudHMvZ3MtYnV0dG9uLnZ1ZT80NDliIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE3NDMxMjc3NjE4NDZcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiQzovRGV2ZWxvcG1lbnRzL3Z1ZS10cy1ncy1jYWUtY2xvdWQtdGVzdC0wMjE5L25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdDQUtBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/components/gs-button.vue?vue&type=style&index=0&id=c56fce1a&scoped=true&lang=scss\n");
|
|
2528
2528
|
|
|
2529
2529
|
/***/ }),
|
|
2530
2530
|
|
|
@@ -2535,7 +2535,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2535
2535
|
/*! no static exports found */
|
|
2536
2536
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2537
2537
|
|
|
2538
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLWNvbG9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQ1MDViMTljJnNjb3BlZD10cnVlJmxhbmc9c2Nzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1tuYW1lXS8uL3BhY2thZ2VzL2NhZURlc2lnbi9zcmMvY29tcG9uZW50cy9ncy1jb2xvci52dWU/
|
|
2538
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLWNvbG9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTQ1MDViMTljJnNjb3BlZD10cnVlJmxhbmc9c2Nzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1tuYW1lXS8uL3BhY2thZ2VzL2NhZURlc2lnbi9zcmMvY29tcG9uZW50cy9ncy1jb2xvci52dWU/ZTEwZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNzQzMTI3NzYxODQ3XG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkM6L0RldmVsb3BtZW50cy92dWUtdHMtZ3MtY2FlLWNsb3VkLXRlc3QtMDIxOS9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJobXJcIjp0cnVlLFwicHVibGljUGF0aFwiOlwiLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxnQ0FLQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/components/gs-color.vue?vue&type=style&index=0&id=4505b19c&scoped=true&lang=scss\n");
|
|
2539
2539
|
|
|
2540
2540
|
/***/ }),
|
|
2541
2541
|
|
|
@@ -2546,7 +2546,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2546
2546
|
/*! no static exports found */
|
|
2547
2547
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2548
2548
|
|
|
2549
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLWlucHV0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTY1YWU3N2NlJnNjb3BlZD10cnVlJmxhbmc9c2Nzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1tuYW1lXS8uL3BhY2thZ2VzL2NhZURlc2lnbi9zcmMvY29tcG9uZW50cy9ncy1pbnB1dC52dWU/
|
|
2549
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLWlucHV0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTY1YWU3N2NlJnNjb3BlZD10cnVlJmxhbmc9c2Nzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1tuYW1lXS8uL3BhY2thZ2VzL2NhZURlc2lnbi9zcmMvY29tcG9uZW50cy9ncy1pbnB1dC52dWU/YjYxNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNzQzMTI3NzYxODQ5XG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkM6L0RldmVsb3BtZW50cy92dWUtdHMtZ3MtY2FlLWNsb3VkLXRlc3QtMDIxOS9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJobXJcIjp0cnVlLFwicHVibGljUGF0aFwiOlwiLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxnQ0FLQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/components/gs-input.vue?vue&type=style&index=0&id=65ae77ce&scoped=true&lang=scss\n");
|
|
2550
2550
|
|
|
2551
2551
|
/***/ }),
|
|
2552
2552
|
|
|
@@ -2557,7 +2557,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2557
2557
|
/*! no static exports found */
|
|
2558
2558
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2559
2559
|
|
|
2560
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/
|
|
2560
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLWxpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MTlhYzAyOWYmc2NvcGVkPXRydWUmbGFuZz1zY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vW25hbWVdLy4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLWxpc3QudnVlPzBhMjEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTc0MzEyNzc2MTg0OFxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJDOi9EZXZlbG9wbWVudHMvdnVlLXRzLWdzLWNhZS1jbG91ZC10ZXN0LTAyMTkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4vXCIsXCJsb2NhbHNcIjpmYWxzZX0pO1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGNzc1JlbG9hZCk7XG4gICAgICBtb2R1bGUuaG90LmFjY2VwdCh1bmRlZmluZWQsIGNzc1JlbG9hZCk7XG4gICAgfVxuICAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0NBS0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/components/gs-list.vue?vue&type=style&index=0&id=19ac029f&scoped=true&lang=scss\n");
|
|
2561
2561
|
|
|
2562
2562
|
/***/ }),
|
|
2563
2563
|
|
|
@@ -2568,7 +2568,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2568
2568
|
/*! no static exports found */
|
|
2569
2569
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2570
2570
|
|
|
2571
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLXNlbGVjdC52dWU/
|
|
2571
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLXNlbGVjdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0yNTM1MzFiZCZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2NvbXBvbmVudHMvZ3Mtc2VsZWN0LnZ1ZT9iNTNjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE3NDMxMjc3NjE4NTBcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiQzovRGV2ZWxvcG1lbnRzL3Z1ZS10cy1ncy1jYWUtY2xvdWQtdGVzdC0wMjE5L25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdDQUtBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/components/gs-select.vue?vue&type=style&index=0&id=253531bd&scoped=true&lang=scss\n");
|
|
2572
2572
|
|
|
2573
2573
|
/***/ }),
|
|
2574
2574
|
|
|
@@ -2579,7 +2579,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2579
2579
|
/*! no static exports found */
|
|
2580
2580
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2581
2581
|
|
|
2582
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLXN3aXRjaC52dWU/
|
|
2582
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9jb21wb25lbnRzL2dzLXN3aXRjaC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD03MzM1ZDdmNSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2NvbXBvbmVudHMvZ3Mtc3dpdGNoLnZ1ZT8wNTY4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE3NDMxMjc3NjE4NDhcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiQzovRGV2ZWxvcG1lbnRzL3Z1ZS10cy1ncy1jYWUtY2xvdWQtdGVzdC0wMjE5L25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdDQUtBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/components/gs-switch.vue?vue&type=style&index=0&id=7335d7f5&scoped=true&lang=scss\n");
|
|
2583
2583
|
|
|
2584
2584
|
/***/ }),
|
|
2585
2585
|
|
|
@@ -2590,7 +2590,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2590
2590
|
/*! no static exports found */
|
|
2591
2591
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2592
2592
|
|
|
2593
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9nc0RldkZ4L3Byb3BlcnR5Q29tcG9uZW50cy9wcm9wZXJ0eUNvbXBvbmVudC52dWU/
|
|
2593
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy9nc0RldkZ4L3Byb3BlcnR5Q29tcG9uZW50cy9wcm9wZXJ0eUNvbXBvbmVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD04YjhlYjE5ZSZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2RngvcHJvcGVydHlDb21wb25lbnRzL3Byb3BlcnR5Q29tcG9uZW50LnZ1ZT80ZWJiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE3NDMxMjc3NTkxODRcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiQzovRGV2ZWxvcG1lbnRzL3Z1ZS10cy1ncy1jYWUtY2xvdWQtdGVzdC0wMjE5L25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdDQUtBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/gsDevFx/propertyComponents/propertyComponent.vue?vue&type=style&index=0&id=8b8eb19e&scoped=true&lang=scss\n");
|
|
2594
2594
|
|
|
2595
2595
|
/***/ }),
|
|
2596
2596
|
|
|
@@ -2601,7 +2601,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2601
2601
|
/*! no static exports found */
|
|
2602
2602
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2603
2603
|
|
|
2604
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL2NvbXBvbmVudHMvbGVnZW5kLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc4YzlmMGNmJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1tuYW1lXS8uL3BhY2thZ2VzL2NhZURlc2lnbi9zcmMvdmlld2VyV3JhcHBlci9jb21wb25lbnRzL2xlZ2VuZC52dWU/
|
|
2604
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL2NvbXBvbmVudHMvbGVnZW5kLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTc4YzlmMGNmJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1tuYW1lXS8uL3BhY2thZ2VzL2NhZURlc2lnbi9zcmMvdmlld2VyV3JhcHBlci9jb21wb25lbnRzL2xlZ2VuZC52dWU/ODZhNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNzQzMTI3NzU4NTUxXG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkM6L0RldmVsb3BtZW50cy92dWUtdHMtZ3MtY2FlLWNsb3VkLXRlc3QtMDIxOS9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJobXJcIjp0cnVlLFwicHVibGljUGF0aFwiOlwiLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxnQ0FLQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/viewerWrapper/components/legend.vue?vue&type=style&index=0&id=78c9f0cf&lang=scss&scoped=true\n");
|
|
2605
2605
|
|
|
2606
2606
|
/***/ }),
|
|
2607
2607
|
|
|
@@ -2612,7 +2612,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2612
2612
|
/*! no static exports found */
|
|
2613
2613
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2614
2614
|
|
|
2615
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL3BhbmVsL3BhbmVsQmluZENvbXBvbmVudC52dWU/
|
|
2615
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL3BhbmVsL3BhbmVsQmluZENvbXBvbmVudC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0zYWE1Yzk2ZSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL3ZpZXdlcldyYXBwZXIvcGFuZWwvcGFuZWxCaW5kQ29tcG9uZW50LnZ1ZT83YWU3Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE3NDMxMjc3NTg5MTNcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiQzovRGV2ZWxvcG1lbnRzL3Z1ZS10cy1ncy1jYWUtY2xvdWQtdGVzdC0wMjE5L25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdDQUtBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/viewerWrapper/panel/panelBindComponent.vue?vue&type=style&index=0&id=3aa5c96e&lang=scss&scoped=true\n");
|
|
2616
2616
|
|
|
2617
2617
|
/***/ }),
|
|
2618
2618
|
|
|
@@ -2623,7 +2623,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2623
2623
|
/*! no static exports found */
|
|
2624
2624
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2625
2625
|
|
|
2626
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL3BhbmVsL3N0cnVjdHVyZVRyZWUvaW50ZXJmYWNlU3RydWN0dXJlVHJlZS52dWU/
|
|
2626
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL3BhbmVsL3N0cnVjdHVyZVRyZWUvaW50ZXJmYWNlU3RydWN0dXJlVHJlZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01MmEwMWI2OCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL3ZpZXdlcldyYXBwZXIvcGFuZWwvc3RydWN0dXJlVHJlZS9pbnRlcmZhY2VTdHJ1Y3R1cmVUcmVlLnZ1ZT83MWVhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE3NDMxMjc3NTM4MzVcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiQzovRGV2ZWxvcG1lbnRzL3Z1ZS10cy1ncy1jYWUtY2xvdWQtdGVzdC0wMjE5L25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdDQUtBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/viewerWrapper/panel/structureTree/interfaceStructureTree.vue?vue&type=style&index=0&id=52a01b68&lang=scss&scoped=true\n");
|
|
2627
2627
|
|
|
2628
2628
|
/***/ }),
|
|
2629
2629
|
|
|
@@ -2634,7 +2634,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2634
2634
|
/*! no static exports found */
|
|
2635
2635
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2636
2636
|
|
|
2637
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL3BhbmVsL3ZpZXdQb2ludC9pbnRlcmZhY2VWaWV3UG9pbnRQYW5lbC52dWU/
|
|
2637
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL3BhbmVsL3ZpZXdQb2ludC9pbnRlcmZhY2VWaWV3UG9pbnRQYW5lbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD02N2UzOTUyOCZsYW5nPXNjc3Mmc2NvcGVkPXRydWUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL3ZpZXdlcldyYXBwZXIvcGFuZWwvdmlld1BvaW50L2ludGVyZmFjZVZpZXdQb2ludFBhbmVsLnZ1ZT8yZTdjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE3NDMxMjc3NjI4MTJcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiQzovRGV2ZWxvcG1lbnRzL3Z1ZS10cy1ncy1jYWUtY2xvdWQtdGVzdC0wMjE5L25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGdDQUtBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/viewerWrapper/panel/viewPoint/interfaceViewPointPanel.vue?vue&type=style&index=0&id=67e39528&lang=scss&scoped=true\n");
|
|
2638
2638
|
|
|
2639
2639
|
/***/ }),
|
|
2640
2640
|
|
|
@@ -2645,7 +2645,7 @@ eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\
|
|
|
2645
2645
|
/*! no static exports found */
|
|
2646
2646
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2647
2647
|
|
|
2648
|
-
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/
|
|
2648
|
+
eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvc3R5bGVQb3N0TG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL3NyYy9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/IS4vbm9kZV9tb2R1bGVzL2NhY2hlLWxvYWRlci9kaXN0L2Nqcy5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL3ZpZXdlcldyYXBwZXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MjA5YmEwY2Emc2NvcGVkPXRydWUmbGFuZz1zY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vW25hbWVdLy4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL3ZpZXdlcldyYXBwZXIudnVlPzk1M2UiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTc0MzEyNzc1MzgzOFxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJDOi9EZXZlbG9wbWVudHMvdnVlLXRzLWdzLWNhZS1jbG91ZC10ZXN0LTAyMTkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4vXCIsXCJsb2NhbHNcIjpmYWxzZX0pO1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGNzc1JlbG9hZCk7XG4gICAgICBtb2R1bGUuaG90LmFjY2VwdCh1bmRlZmluZWQsIGNzc1JlbG9hZCk7XG4gICAgfVxuICAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsZ0NBS0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/mini-css-extract-plugin/dist/loader.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/sass-loader/dist/cjs.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./packages/caeDesign/src/viewerWrapper/viewerWrapper.vue?vue&type=style&index=0&id=209ba0ca&scoped=true&lang=scss\n");
|
|
2649
2649
|
|
|
2650
2650
|
/***/ }),
|
|
2651
2651
|
|
|
@@ -2874,7 +2874,7 @@ eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\
|
|
|
2874
2874
|
/*! exports provided: name, version, description, main, types, files, author, license, scripts, dependencies, devDependencies, default */
|
|
2875
2875
|
/***/ (function(module) {
|
|
2876
2876
|
|
|
2877
|
-
eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"gs-cae-design\\\",\\\"version\\\":\\\"1.1.
|
|
2877
|
+
eval("module.exports = JSON.parse(\"{\\\"name\\\":\\\"gs-cae-design\\\",\\\"version\\\":\\\"1.1.49\\\",\\\"description\\\":\\\"广州图石科技有限公司发布的基于gs-longan的CAE图形控件\\\",\\\"main\\\":\\\"lib/CAEDesign.umd.min.js\\\",\\\"types\\\":\\\"./types/caeDesign/src/index.d.ts\\\",\\\"files\\\":[\\\"*\\\"],\\\"author\\\":\\\"广州图石科技有限公司\\\",\\\"license\\\":\\\"ISC\\\",\\\"scripts\\\":{\\\"publish\\\":\\\"npm publish \\\",\\\"publishBeta\\\":\\\"npm publish --tag=beta\\\",\\\"publishBeta2\\\":\\\"npm publish --tag=beta2\\\",\\\"typedoc\\\":\\\"typedoc --plugin typedoc-plugin-markdown\\\"},\\\"dependencies\\\":{},\\\"devDependencies\\\":{}}\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vcGFja2FnZS5qc29uLmpzIiwic291cmNlcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./packages/caeDesign/package.json\n");
|
|
2878
2878
|
|
|
2879
2879
|
/***/ }),
|
|
2880
2880
|
|
|
@@ -3512,7 +3512,7 @@ eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPAC
|
|
|
3512
3512
|
/*! no static exports found */
|
|
3513
3513
|
/***/ (function(module, exports, __webpack_require__) {
|
|
3514
3514
|
|
|
3515
|
-
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! ../cardObject */ \"./packages/caeDesign/src/caeCardEditor/caeCardObjects/cardObject.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, cardObject_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CardLOADCN = void 0;\n var CardLOADCN = function (_super) {\n tslib_1.__extends(CardLOADCN, _super);\n function CardLOADCN(line) {\n var _this = _super.call(this) || this;\n _this.lineLabel = {\n value: \"LOADCN\",\n range: [0, 6],\n span: 0,\n label: \"Line Label\",\n type: \"Character\",\n unit: \"\"\n };\n _this.loadConditionName = {\n value: \"\",\n range: [6, 10],\n span: 1,\n label: \"Load Condition Name\",\n type: \"Alphanumeric\",\n unit: \"\"\n };\n _this.overLoadCaseFactor = {\n value: \"\",\n range: [11, 18],\n span: 0,\n label: \"Overall Load Case Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.deadLoad = {\n value: \"\",\n range: [18, 25],\n span: 0,\n label: \"Dead Load and Buoyancy Load Case Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.wave = {\n value: \"\",\n range: [25, 32],\n span: 0,\n label: \"Wave,Wind and Current Load Case Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.userSupplied = {\n value: \"\",\n range: [32, 39],\n span: 0,\n label: \"User Supplied Load Case Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.buoyancyFactor = {\n value: \"\",\n range: [39, 46],\n span: 0,\n label: \"Buoyancy Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.classifyAsDeadLoadCase = {\n value: \"\",\n range: [46, 50],\n span: 0,\n label: \"Classify as Dead Load Case\",\n type: \"Character\",\n unit: \"\"\n };\n _this.init(line);\n return _this;\n }\n return CardLOADCN;\n }(cardObject_1.CardObject);\n exports.CardLOADCN = CardLOADCN;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2NhZUNhcmRFZGl0b3IvY2FlQ2FyZE9iamVjdHMvc2VhaW5wL2NhcmRMT0FEQ04udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2NhZUNhcmRFZGl0b3IvY2FlQ2FyZE9iamVjdHMvc2VhaW5wL2NhcmRMT0FEQ04udHM/
|
|
3515
|
+
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! ../cardObject */ \"./packages/caeDesign/src/caeCardEditor/caeCardObjects/cardObject.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, cardObject_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CardLOADCN = void 0;\n var CardLOADCN = function (_super) {\n tslib_1.__extends(CardLOADCN, _super);\n function CardLOADCN(line) {\n var _this = _super.call(this) || this;\n _this.lineLabel = {\n value: \"LOADCN\",\n range: [0, 6],\n span: 0,\n label: \"Line Label\",\n type: \"Character\",\n unit: \"\"\n };\n _this.loadConditionName = {\n value: \"\",\n range: [6, 10],\n span: 1,\n label: \"Load Condition Name\",\n type: \"Alphanumeric\",\n unit: \"\"\n };\n _this.overLoadCaseFactor = {\n value: \"\",\n range: [11, 18],\n span: 0,\n label: \"Overall Load Case Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.deadLoad = {\n value: \"\",\n range: [18, 25],\n span: 0,\n label: \"Dead Load and Buoyancy Load Case Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.wave = {\n value: \"\",\n range: [25, 32],\n span: 0,\n label: \"Wave,Wind and Current Load Case Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.userSupplied = {\n value: \"\",\n range: [32, 39],\n span: 0,\n label: \"User Supplied Load Case Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.buoyancyFactor = {\n value: \"\",\n range: [39, 46],\n span: 0,\n label: \"Buoyancy Factor\",\n type: \"Floating Point\",\n unit: \"\"\n };\n _this.classifyAsDeadLoadCase = {\n value: \"\",\n range: [46, 50],\n span: 0,\n label: \"Classify as Dead Load Case\",\n type: \"Character\",\n unit: \"\"\n };\n _this.init(line);\n return _this;\n }\n return CardLOADCN;\n }(cardObject_1.CardObject);\n exports.CardLOADCN = CardLOADCN;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2NhZUNhcmRFZGl0b3IvY2FlQ2FyZE9iamVjdHMvc2VhaW5wL2NhcmRMT0FEQ04udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2NhZUNhcmRFZGl0b3IvY2FlQ2FyZE9iamVjdHMvc2VhaW5wL2NhcmRMT0FEQ04udHM/ZWQzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXJkT2JqZWN0IH0gZnJvbSBcIi4uL2NhcmRPYmplY3RcIjtcclxuXHJcbi8qKlxyXG4gKiDojbfovb3nu4TljaHniYflr7nosaEuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ2FyZExPQURDTiBleHRlbmRzIENhcmRPYmplY3Qge1xyXG4gIGxpbmVMYWJlbCA9IHtcclxuICAgIHZhbHVlOiBcIkxPQURDTlwiLFxyXG4gICAgcmFuZ2U6IFswLCA2XSxcclxuICAgIHNwYW46IDAsXHJcbiAgICBsYWJlbDogXCJMaW5lIExhYmVsXCIsXHJcbiAgICB0eXBlOiBcIkNoYXJhY3RlclwiLFxyXG4gICAgdW5pdDogXCJcIixcclxuICB9O1xyXG4gIGxvYWRDb25kaXRpb25OYW1lID0ge1xyXG4gICAgdmFsdWU6IFwiXCIsXHJcbiAgICByYW5nZTogWzYsIDEwXSxcclxuICAgIHNwYW46IDEsXHJcbiAgICBsYWJlbDogXCJMb2FkIENvbmRpdGlvbiBOYW1lXCIsXHJcbiAgICB0eXBlOiBcIkFscGhhbnVtZXJpY1wiLFxyXG4gICAgdW5pdDogXCJcIixcclxuICB9O1xyXG4gIG92ZXJMb2FkQ2FzZUZhY3RvciA9IHtcclxuICAgIHZhbHVlOiBcIlwiLFxyXG4gICAgcmFuZ2U6IFsxMSwgMThdLFxyXG4gICAgc3BhbjogMCxcclxuICAgIGxhYmVsOiBcIk92ZXJhbGwgTG9hZCBDYXNlIEZhY3RvclwiLFxyXG4gICAgdHlwZTogXCJGbG9hdGluZyBQb2ludFwiLFxyXG4gICAgdW5pdDogXCJcIixcclxuICB9O1xyXG4gIGRlYWRMb2FkID0ge1xyXG4gICAgdmFsdWU6IFwiXCIsXHJcbiAgICByYW5nZTogWzE4LCAyNV0sXHJcbiAgICBzcGFuOiAwLFxyXG4gICAgbGFiZWw6IFwiRGVhZCBMb2FkIGFuZCBCdW95YW5jeSBMb2FkIENhc2UgRmFjdG9yXCIsXHJcbiAgICB0eXBlOiBcIkZsb2F0aW5nIFBvaW50XCIsXHJcbiAgICB1bml0OiBcIlwiLFxyXG4gIH07XHJcbiAgd2F2ZSA9IHtcclxuICAgIHZhbHVlOiBcIlwiLFxyXG4gICAgcmFuZ2U6IFsyNSwgMzJdLFxyXG4gICAgc3BhbjogMCxcclxuICAgIGxhYmVsOiBcIldhdmUsV2luZCBhbmQgQ3VycmVudCBMb2FkIENhc2UgRmFjdG9yXCIsXHJcbiAgICB0eXBlOiBcIkZsb2F0aW5nIFBvaW50XCIsXHJcbiAgICB1bml0OiBcIlwiLFxyXG4gIH07XHJcbiAgdXNlclN1cHBsaWVkID0ge1xyXG4gICAgdmFsdWU6IFwiXCIsXHJcbiAgICByYW5nZTogWzMyLCAzOV0sXHJcbiAgICBzcGFuOiAwLFxyXG4gICAgbGFiZWw6IFwiVXNlciBTdXBwbGllZCBMb2FkIENhc2UgRmFjdG9yXCIsXHJcbiAgICB0eXBlOiBcIkZsb2F0aW5nIFBvaW50XCIsXHJcbiAgICB1bml0OiBcIlwiLFxyXG4gIH07XHJcbiAgYnVveWFuY3lGYWN0b3IgPSB7XHJcbiAgICB2YWx1ZTogXCJcIixcclxuICAgIHJhbmdlOiBbMzksIDQ2XSxcclxuICAgIHNwYW46IDAsXHJcbiAgICBsYWJlbDogXCJCdW95YW5jeSBGYWN0b3JcIixcclxuICAgIHR5cGU6IFwiRmxvYXRpbmcgUG9pbnRcIixcclxuICAgIHVuaXQ6IFwiXCIsXHJcbiAgfTtcclxuICBjbGFzc2lmeUFzRGVhZExvYWRDYXNlID0ge1xyXG4gICAgdmFsdWU6IFwiXCIsXHJcbiAgICByYW5nZTogWzQ2LCA1MF0sXHJcbiAgICBzcGFuOiAwLFxyXG4gICAgbGFiZWw6IFwiQ2xhc3NpZnkgYXMgRGVhZCBMb2FkIENhc2VcIixcclxuICAgIHR5cGU6IFwiQ2hhcmFjdGVyXCIsXHJcbiAgICB1bml0OiBcIlwiLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKGxpbmU/OiBzdHJpbmcpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmluaXQobGluZSk7XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUtBO0FBQUE7QUFrRUE7QUFBQTtBQWpFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBOztBQUNBO0FBQ0E7QUFBQTtBQXRFQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./packages/caeDesign/src/caeCardEditor/caeCardObjects/seainp/cardLOADCN.ts\n");
|
|
3516
3516
|
|
|
3517
3517
|
/***/ }),
|
|
3518
3518
|
|
|
@@ -3998,7 +3998,7 @@ eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPAC
|
|
|
3998
3998
|
/*! no static exports found */
|
|
3999
3999
|
/***/ (function(module, exports, __webpack_require__) {
|
|
4000
4000
|
|
|
4001
|
-
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeLightObject/caeLightObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeLightObject/caeLightObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/jointObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/jointObject.ts\"), __webpack_require__(/*! gs-bim-air */ \"./node_modules/gs-bim-air/lib/BimAir.umd.min.js\"), __webpack_require__(/*! ./selectionInterfaceManager */ \"./packages/caeDesign/src/gsDevFx/managers/interfaceManagers/selectionInterfaceManager.ts\"), __webpack_require__(/*! ../../../gsDevFx/tasks/caeTask */ \"./packages/caeDesign/src/gsDevFx/tasks/caeTask.ts\"), __webpack_require__(/*! ../../../api/renderObjectService */ \"./packages/caeDesign/src/api/renderObjectService.ts\"), __webpack_require__(/*! ../../../gsDevFx/process */ \"./packages/caeDesign/src/gsDevFx/process.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/optionObjects/modelTitle */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/optionObjects/modelTitle.ts\"), __webpack_require__(/*! ../../../caeCardEditor/caeCardObjects/sacinp/cardTITLE */ \"./packages/caeDesign/src/caeCardEditor/caeCardObjects/sacinp/cardTITLE.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/memberObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/memberObject.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/pretreatment/mgrovObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/pretreatment/mgrovObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/pretreatment/corrzObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/pretreatment/corrzObject.ts\"), __webpack_require__(/*! ../../../store */ \"./packages/caeDesign/src/store/index.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/plateObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/plateObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/grupObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/grupObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/objectColors */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/objectColors.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/instanceSectionObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/instanceSectionObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/sectionObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/sectionObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/loadObjects/loadConditionObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/loadConditionObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/loadObjects/loadGroupObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/loadGroupObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/loadObjects/jointLoadObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/jointLoadObject.ts\"), __webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"), __webpack_require__(/*! ../../../viewerWrapper/module/legendManage */ \"./packages/caeDesign/src/viewerWrapper/module/legendManage.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, caeLightObject_1, jointObject_1, gs_bim_air_1, selectionInterfaceManager_1, caeTask_1, renderObjectService_1, process_1, modelTitle_1, cardTITLE_1, gs_ceec_design_1, memberObject_1, gs_ceec_design_2, mgrovObject_1, corrzObject_1, store_1, plateObject_1, grupObject_1, objectColors_1, instanceSectionObject_1, sectionObject_1, loadConditionObject_1, loadGroupObject_1, jointLoadObject_1, element_ui_1, legendManage_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CommonInterfaceManager = exports.SwitchColorDivide = void 0;\n renderObjectService_1 = tslib_1.__importDefault(renderObjectService_1);\n store_1 = tslib_1.__importDefault(store_1);\n var SwitchColorDivide;\n (function (SwitchColorDivide) {\n SwitchColorDivide[SwitchColorDivide[\"GrupName\"] = 0] = \"GrupName\";\n SwitchColorDivide[SwitchColorDivide[\"GrupThickness\"] = 1] = \"GrupThickness\";\n SwitchColorDivide[SwitchColorDivide[\"Mgrov\"] = 2] = \"Mgrov\";\n SwitchColorDivide[SwitchColorDivide[\"Corrz\"] = 3] = \"Corrz\";\n SwitchColorDivide[SwitchColorDivide[\"Cancel\"] = 4] = \"Cancel\";\n SwitchColorDivide[SwitchColorDivide[\"ComponentGroup\"] = 5] = \"ComponentGroup\";\n })(SwitchColorDivide = exports.SwitchColorDivide || (exports.SwitchColorDivide = {}));\n var CommonInterfaceManager = function (_super) {\n tslib_1.__extends(CommonInterfaceManager, _super);\n function CommonInterfaceManager(viewer) {\n var _this = _super.call(this, viewer) || this;\n _this.currentSelectWaveItemName = null;\n _this.currentBoreholeObjects = null;\n _this.boreholeLegend = null;\n _this.boreholeCutLineDisplay = false;\n _this.showEnglishText = false;\n _this.copyedExternalEvent = null;\n _this.elementKey = \"cutline\";\n _this.activeBoreholeName = null;\n return _this;\n }\n CommonInterfaceManager.prototype.showPlotTitle = function () {\n var result = null;\n var process = this.viewer.process;\n var titleRO = process.findRenderObjectByType(\"ModelTitle\");\n if (titleRO) {\n if (titleRO instanceof modelTitle_1.ModelTitle) {\n result = titleRO.cardObject.title.value;\n }\n } else {\n result = \"Active Structure\";\n }\n return result;\n };\n CommonInterfaceManager.prototype.editPlotTitle = function (title) {\n var process = this.viewer.process;\n if (!title || title.trimEnd() === \"\") {\n var titleRO_1 = process.findRenderObjectByType(\"ModelTitle\");\n if (titleRO_1) {\n titleRO_1.tempDelete(this.viewer);\n return 1;\n }\n }\n var islegal = this.checTitlekNamelegal(title);\n if (!islegal) {\n return 2;\n }\n var titleRO = process.findRenderObjectByType(\"ModelTitle\");\n if (titleRO) {\n if (titleRO instanceof modelTitle_1.ModelTitle) {\n titleRO.cardObject.title.value = title;\n titleRO.cardData = titleRO.cardObject.getLine();\n }\n } else {\n var titleRO_2 = new modelTitle_1.ModelTitle();\n titleRO_2.name = \"TITLE\";\n var line = \" \" + title;\n titleRO_2.cardData = line;\n titleRO_2.cardObject = new cardTITLE_1.CardTITLE(line);\n process.addRenderObject(process.caeRenderObjectTreeManager.sacinpNode, titleRO_2);\n }\n return 1;\n };\n CommonInterfaceManager.prototype.checTitlekNamelegal = function (name) {\n var reg = /^[A-Z0-9]*$/;\n if (!reg.test(name) || name.trimEnd().length > 125) {\n console.log(\"空间点名称不符合规范\");\n return false;\n }\n return true;\n };\n CommonInterfaceManager.prototype.resetView = function (isSetViewMode) {\n var _a, _b, _c;\n if (isSetViewMode === void 0) {\n isSetViewMode = true;\n }\n var viewer = this.viewer.process.activeViewer;\n viewer.selectionManager.clearAllSelectionAndHighlight();\n viewer.process.commandManager.closeAllCommands();\n viewer.commonInterfaceManager.colorSwitch(SwitchColorDivide.Cancel);\n viewer.commonInterfaceManager.finiteElementSwitch(false);\n viewer.commonInterfaceManager.waveSwitch(false);\n viewer.commonInterfaceManager.boreholeSwitch(false);\n viewer.viewInterfaceManager.setJointNumberVisible(false);\n viewer.viewInterfaceManager.setJointRestraintVisible(false);\n viewer.viewInterfaceManager.setMemberFixityVisible(false);\n viewer.viewInterfaceManager.setMemberLocalAxisVisible(false);\n viewer.viewInterfaceManager.setMemberSectionSizeVisible(false);\n viewer.viewInterfaceManager.setGrupNumberVisible(false);\n var process = viewer.process;\n (_a = process.caeRenderObjectTreeManager.jointNode) === null || _a === void 0 ? void 0 : _a.childObjects.forEach(function (obj) {\n viewer.findInstanceObject(obj).viewerVisible = true;\n viewer.findInstanceObject(obj).visible = true;\n obj.clearSvg();\n });\n (_b = process.caeRenderObjectTreeManager.memberNode) === null || _b === void 0 ? void 0 : _b.childObjects.forEach(function (obj) {\n viewer.findInstanceObject(obj).viewerVisible = true;\n viewer.findInstanceObject(obj).visible = true;\n obj.clearSvg();\n });\n (_c = process.caeRenderObjectTreeManager.plateNode) === null || _c === void 0 ? void 0 : _c.childObjects.forEach(function (obj) {\n viewer.findInstanceObject(obj).viewerVisible = true;\n viewer.findInstanceObject(obj).visible = true;\n obj.clearSvg();\n });\n viewer.viewInterfaceManager.memberLineView(false);\n viewer.viewInterfaceManager.plateLineView(false);\n if (isSetViewMode) {\n viewer.setViewMode(gs_bim_air_1.Longan.ViewMode.OFSIso, true);\n }\n };\n CommonInterfaceManager.prototype.redraw = function () {\n var process = this.viewer.process;\n process.viewers.forEach(function (vi) {\n console.log(\"vi\");\n vi.exeSceneCameraChanged(gs_bim_air_1.Longan.LonganCore.CameraChangeType.Rotate | gs_bim_air_1.Longan.LonganCore.CameraChangeType.Scale | gs_bim_air_1.Longan.LonganCore.CameraChangeType.Translate);\n vi.updateDisplay();\n });\n };\n CommonInterfaceManager.prototype.checkIsFiniteElement = function () {\n var isFE = true;\n var viewer = this.viewer;\n var grupNode = viewer.process.caeRenderObjectTreeManager.grupNode;\n grupNode === null || grupNode === void 0 ? void 0 : grupNode.childObjects.forEach(function (grup) {\n if (grup instanceof grupObject_1.GrupObject) {\n if (grup.grupSegments.length > 1) {\n isFE = false;\n return isFE;\n }\n }\n });\n console.log(\"isFE:\", isFE);\n return isFE;\n };\n CommonInterfaceManager.prototype.openModel = function (modelId, isReplace) {\n var viewer = this.viewer;\n return new Promise(function (resolve, reject) {\n viewer.loadModel(modelId, isReplace).then(function (model) {\n viewer.process.historyManager.clearDeltaState();\n viewer.sceneSegment.renderingOptions.cullingMaximumExtent = 0;\n console.log(\"model\", model);\n var ro = viewer.renderObject;\n var caeTask = new caeTask_1.CAETask(ro, viewer);\n caeTask.workRenderObjectService = renderObjectService_1.default;\n viewer.process.taskManager.execute(caeTask);\n viewer.structureTreeManager.update();\n viewer.updateDisplay();\n viewer.setViewMode(gs_bim_air_1.Longan.ViewMode.OFSIso, true);\n viewer.postInterfaceManager.requestDBData();\n resolve();\n });\n });\n };\n CommonInterfaceManager.prototype.checkNeedSave = function () {\n var rootRO = this.viewer.process.caeRenderObjectTreeManager.rootNode;\n if (rootRO instanceof caeLightObject_1.CAELightObject) {\n var result = gs_ceec_design_1.PersistenceManager.saveDesign(rootRO);\n if (result.createList.length > 0 || result.deleteList.length > 0 || result.editList.length > 0) {\n return true;\n } else {\n return false;\n }\n }\n return false;\n };\n CommonInterfaceManager.prototype.save = function () {\n var rootRO = this.viewer.process.caeRenderObjectTreeManager.rootNode;\n if (rootRO instanceof caeLightObject_1.CAELightObject) {\n rootRO.save(this.viewer).then(function () {\n console.log(\"save3\");\n });\n }\n };\n CommonInterfaceManager.prototype.exportDATFile = function () {\n console.log(\"export\");\n var datCardData = this.viewer.datWriterManager.exportDATFile();\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.exportMemberData = function (isExportAll) {\n if (isExportAll === void 0) {\n isExportAll = true;\n }\n console.log(\"export member\");\n var datCardData = this.viewer.datWriterManager.exportMemberData(isExportAll);\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.exportPileData = function (isExportAll) {\n if (isExportAll === void 0) {\n isExportAll = true;\n }\n console.log(\"export pile\");\n var datCardData = this.viewer.datWriterManager.exportPileData(isExportAll);\n if (datCardData === null) {\n return null;\n }\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.exportDATFile_Seainp = function () {\n console.log(\"export_seainp\");\n var viewer = this.viewer;\n var datCardData = viewer.datWriterManager.exportDATFile_Seainp();\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.exportDATFile_Sacinp = function () {\n console.log(\"export_sacinp\");\n var viewer = this.viewer;\n var datCardData = viewer.datWriterManager.exportDATFile_Sacinp();\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.importDATData = function (content, overWrite) {\n if (overWrite === void 0) {\n overWrite = false;\n }\n console.log(\"importDATData\");\n this.viewer.datReaderManager.importDATData(content, overWrite);\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.importSEAData = function (content) {\n console.log(\"importSEAData\");\n var ro = this.viewer.process.findRenderObjectByType(\"SeastateLdopt\");\n if (ro) {\n var message = \"已经存在海况数据\";\n element_ui_1.Message.error(message);\n return;\n }\n this.viewer.datReaderManager.importSeainpData(content);\n this.viewer.updateDisplay();\n this.viewer.structureTreeManager.update();\n return \"importSEAData successful\";\n };\n CommonInterfaceManager.prototype.importSeaociData = function (content) {\n console.log(\"importSeaociData\");\n this.viewer.datReaderManager.importSeaociData(content);\n this.viewer.updateDisplay();\n this.viewer.structureTreeManager.update();\n return \"importSeaociData successful\";\n };\n CommonInterfaceManager.prototype.importPSIData = function (content) {\n console.log(\"importPSIData\");\n this.viewer.datReaderManager.importPSIData(content);\n this.viewer.updateDisplay();\n this.viewer.structureTreeManager.update();\n };\n CommonInterfaceManager.prototype.historyBack = function () {\n if (process_1.Process.activeProcess.historyManager.canRollBack) {\n process_1.Process.activeProcess.historyManager.rollBack();\n }\n };\n CommonInterfaceManager.prototype.historyForward = function () {\n if (process_1.Process.activeProcess.historyManager.canRollForward) {\n process_1.Process.activeProcess.historyManager.rollForward();\n }\n };\n CommonInterfaceManager.prototype.selectAll = function () {\n var viewer = this.viewer;\n viewer.selectionManager.clearAllSelectionAndHighlight();\n switch (viewer.selectionInterfaceManager.selectorFilter) {\n case selectionInterfaceManager_1.SelectorFiliter.Joint:\n this.selectAllJoints();\n break;\n case selectionInterfaceManager_1.SelectorFiliter.Member:\n this.selectAllMembers();\n break;\n case selectionInterfaceManager_1.SelectorFiliter.Plate:\n this.selectAllPlates();\n break;\n case selectionInterfaceManager_1.SelectorFiliter.All:\n this.selectAllJoints();\n this.selectAllMembers();\n this.selectAllPlates();\n break;\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.createViewPoint = function (viewPointName) {\n this.viewer.caePanelManager.viewPointPanelCae.addViewPoint(viewPointName).then(function () {});\n };\n CommonInterfaceManager.prototype.selectAllJoints = function () {\n var joints = this.viewer.process.findRenderObjectsByType(\"JointObject\");\n var keys = new Array();\n var paths = new Array();\n joints.forEach(function (item) {\n keys.push(item.segment.key);\n paths.push(item.segment.path);\n });\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n };\n CommonInterfaceManager.prototype.selectAllMembers = function () {\n var members = this.viewer.process.findRenderObjectsByType(\"MemberObject\");\n var keys = new Array();\n var paths = new Array();\n members.forEach(function (item) {\n keys.push(item.segment.key);\n paths.push(item.segment.path);\n });\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n };\n CommonInterfaceManager.prototype.selectAllPlates = function () {\n var plates = this.viewer.process.findRenderObjectsByType(\"PlateObject\");\n var keys = new Array();\n var paths = new Array();\n plates.forEach(function (item) {\n keys.push(item.segment.key);\n paths.push(item.segment.path);\n });\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n };\n CommonInterfaceManager.prototype.findJoint = function (jointName) {\n var process = this.viewer.process;\n var ro = process.findCaeObjectByNameInChildObject(process.caeRenderObjectTreeManager.jointNode, jointName);\n if (ro && ro instanceof jointObject_1.JointObject) {\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.locateWorld(ro.segment);\n this.viewer.selectionManager.selectAndHighlightKeys([ro.segment.key], [ro.segment.path]);\n this.viewer.updateDisplay();\n return ro;\n } else {\n return null;\n }\n };\n CommonInterfaceManager.prototype.renameJoint = function (originJointName, newJointName, useNextAvaliable) {\n var process = this.viewer.process;\n var result = {};\n if (!jointObject_1.JointObject.checkNamelegal(newJointName)) {\n result = 3;\n return result;\n }\n var jointNode = process.caeRenderObjectTreeManager.jointNode;\n var ro = process.findCaeObjectByNameInChildObject(jointNode, originJointName);\n if (ro && ro instanceof jointObject_1.JointObject) {\n if (!useNextAvaliable) {\n var newNameRO = process.findCaeObjectByNameInChildObject(jointNode, newJointName);\n if (newNameRO) {\n result = 3 + \",\" + newJointName;\n return result;\n }\n } else {\n newJointName = process.caeRenderObjectTreeManager.nameAscendingOrder(newJointName, 1, process.nameMapJoint)[0];\n }\n ro.name = newJointName;\n ro.setNeedUpdate();\n result = 2 + \",\" + originJointName + \",\" + newJointName;\n } else {\n result = 1 + \",\" + originJointName;\n }\n return result;\n };\n CommonInterfaceManager.prototype.findMember = function (memberName) {\n var process = this.viewer.process;\n var ro = process.findCaeObjectByNameInChildObject(process.caeRenderObjectTreeManager.memberNode, memberName);\n if (ro && ro instanceof memberObject_1.MemberObject) {\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.locateWorld(ro.segment);\n this.viewer.selectionManager.selectAndHighlightKeys([ro.segment.key], [ro.segment.path]);\n this.viewer.updateDisplay();\n return ro;\n } else {\n return null;\n }\n };\n CommonInterfaceManager.prototype.highlightMemberByNames = function (names) {\n var process = this.viewer.process;\n var keys = [];\n var paths = [];\n for (var i = 0; i < names.length; i++) {\n var obj = process.findCaeObjectByNameInChildObject(process.caeRenderObjectTreeManager.memberNode, names[i]);\n if (obj) {\n keys.push(obj.segment.key);\n paths.push(obj.segment.path);\n } else {\n console.log(\"找不到\" + names[i]);\n }\n }\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.highlightPlateByNames = function (names) {\n var keys = [];\n var paths = [];\n for (var i = 0; i < names.length; i++) {\n var obj = this.viewer.process.findCaeObjectByNameInChildObject(this.viewer.process.caeRenderObjectTreeManager.plateNode, names[i]);\n if (obj) {\n keys.push(obj.segment.key);\n paths.push(obj.segment.path);\n } else {\n console.log(\"找不到\" + names[i]);\n }\n }\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.findPlate = function (plateName) {\n var process = this.viewer.process;\n var ro = process.findCaeObjectByNameInChildObject(process.caeRenderObjectTreeManager.plateNode, plateName);\n if (ro && ro instanceof plateObject_1.PlateObject) {\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.locateWorld(ro.segment);\n this.viewer.selectionManager.selectAndHighlightKeys([ro.segment.key], [ro.segment.path]);\n this.viewer.updateDisplay();\n return ro;\n } else {\n return null;\n }\n };\n CommonInterfaceManager.prototype.getStructureTreeData = function () {\n var rootNode = this.viewer.structureTreeManager.rootNode;\n return rootNode;\n };\n CommonInterfaceManager.prototype.getMemberGrups = function () {\n var grupNameList = new Array();\n var grupObjectGroup = this.viewer.process.findRenderObjectByName(\"杆件截面组\");\n if (grupObjectGroup) {\n grupObjectGroup.childObjects.map(function (item) {\n grupNameList.push(item.name);\n });\n }\n return grupNameList;\n };\n CommonInterfaceManager.prototype.addStructureNode = function (parent, ro) {\n this.viewer.process.addRenderObject(parent, ro);\n };\n CommonInterfaceManager.prototype.removeStructureNode = function (ro) {\n this.viewer.process.removeRenderObject(ro);\n };\n CommonInterfaceManager.prototype.createMgrovObject = function () {\n var mgrov = new mgrovObject_1.MgrovObject();\n return mgrov;\n };\n CommonInterfaceManager.prototype.createCorrzObject = function () {\n var corrz = new corrzObject_1.CorrzObject();\n return corrz;\n };\n CommonInterfaceManager.prototype.clearChildObjects = function (viewer, ro) {\n if (ro) {\n while (ro.childObjects.length > 0) {\n viewer.process.removeRenderObject(ro.childObjects[0]);\n }\n }\n };\n CommonInterfaceManager.prototype.clearCaeRenderObject = function (viewer) {\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.memberNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.plateNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.jointNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.grupNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.pGrupNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.sectionInsNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.sacinpNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.seastateNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.pileNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.plGrupNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.postResultNode);\n };\n CommonInterfaceManager.prototype.colorDivSwitch_GrupName = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var colorDivideRO = process.findRenderObjectByName(\"按截面组号分色\");\n if (colorDivideRO) {\n for (var i = 0; i < colorDivideRO.childObjects.length; i++) {\n var obj = colorDivideRO.childObjects[i];\n if (obj.checkBusinessStateIsActive()) {\n if (on_off) {\n obj.active(viewer);\n } else {\n obj.inactive(viewer);\n }\n }\n }\n if (on_off) {\n var cutline = {};\n if (colorDivideRO) {\n legendManage_1.LegendManage.destory(this.elementKey);\n cutline = colorDivideRO.getCutline();\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Colored By Member Groups\";\n component.leftText = \"Color\";\n component.rightText = \"Member Groups\";\n } else {\n component.title = \"截面组分色\";\n component.leftText = \"颜色\";\n component.rightText = \"截面组名\";\n }\n }\n } else {\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.colorDivSwitch_GrupThickness = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var colorDivideRO = process.findRenderObjectByName(\"按截面壁厚分色\");\n if (colorDivideRO) {\n for (var i = 0; i < colorDivideRO.childObjects.length; i++) {\n var obj = colorDivideRO.childObjects[i];\n if (obj.checkBusinessStateIsActive()) {\n if (on_off) {\n obj.active(viewer);\n } else {\n obj.inactive(viewer);\n }\n }\n }\n if (on_off) {\n var cutline = {};\n if (colorDivideRO) {\n legendManage_1.LegendManage.destory(this.elementKey);\n cutline = colorDivideRO.getCutline();\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Colored By Thickness\";\n component.leftText = \"Color\";\n component.rightText = \"Thickness(cm)\";\n } else {\n component.title = \"壁厚分色\";\n component.leftText = \"颜色\";\n component.rightText = \"壁厚(cm)\";\n }\n }\n } else {\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.colordDivSwitch_Mgrov = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var colorDivideRO = process.findRenderObjectByName(\"海生物厚度按高程分色\");\n if (colorDivideRO && colorDivideRO.checkBusinessStateIsActive()) {\n var obj = colorDivideRO;\n if (on_off) {\n obj.active(viewer);\n var cutline = {};\n if (colorDivideRO) {\n var obj_1 = colorDivideRO;\n var thicknessIndex = 0;\n for (var i = 0; i < obj_1.heightList.length; i += 2) {\n var bottom = obj_1.heightList[i];\n var top_1 = obj_1.heightList[i + 1];\n var key = bottom + \"~\" + top_1 + \":\" + obj_1.thickness[thicknessIndex];\n var color = [obj_1.color[i / 2 * 4 + 0], obj_1.color[i / 2 * 4 + 1], obj_1.color[i / 2 * 4 + 2], obj_1.color[i / 2 * 4 + 3]];\n if (color[0] === -1 && color[1] === -1 && color[2] === -1) {\n continue;\n }\n color[0] *= 255;\n color[1] *= 255;\n color[2] *= 255;\n cutline[key] = color;\n thicknessIndex++;\n }\n legendManage_1.LegendManage.destory(this.elementKey);\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Marine Growth Zones\";\n component.leftText = \"Color\";\n component.rightText = \"Height Range(m): Thickness(mm)\";\n } else {\n component.title = \"海生物厚度分色\";\n component.leftText = \"颜色\";\n component.rightText = \"高度范围(m): 厚度(mm)\";\n }\n }\n } else {\n obj.inactive(viewer);\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.colordDivSwitch_Corrz = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var colorDivideRO = process.findRenderObjectByName(\"腐蚀余量按高程分色\");\n if (colorDivideRO && colorDivideRO.checkBusinessStateIsActive()) {\n var obj = colorDivideRO;\n if (on_off) {\n obj.active(viewer);\n var cutline = {};\n if (colorDivideRO) {\n var obj_2 = colorDivideRO;\n var thicknessIndex = 0;\n for (var i = 0; i < obj_2.heightList.length; i += 2) {\n var bottom = obj_2.heightList[i];\n var top_2 = obj_2.heightList[i + 1];\n var keyLevelBottom = obj_2.corrzList[thicknessIndex].thicknessBottom;\n if (!keyLevelBottom) {\n keyLevelBottom = 0;\n }\n var keyLevelTop = obj_2.corrzList[thicknessIndex].thicknessTop;\n if (!keyLevelTop) {\n keyLevelTop = 0;\n }\n var key = bottom + \"~\" + top_2 + \":\" + keyLevelBottom + \"~\" + keyLevelTop;\n var color = [obj_2.color[i / 2 * 4 + 0], obj_2.color[i / 2 * 4 + 1], obj_2.color[i / 2 * 4 + 2], obj_2.color[i / 2 * 4 + 3]];\n if (color[0] === -1 && color[1] === -1 && color[2] === -1) {\n continue;\n }\n color[0] *= 255;\n color[1] *= 255;\n color[2] *= 255;\n cutline[key] = color;\n thicknessIndex++;\n }\n legendManage_1.LegendManage.destory(this.elementKey);\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Corrosion Zones\";\n component.leftText = \"Color\";\n component.rightText = \"Height Range(m): Thickness(mm)\";\n } else {\n component.title = \"腐蚀余量分色\";\n component.leftText = \"颜色\";\n component.rightText = \"壁高度范围(m): 厚度(mm)\";\n }\n }\n } else {\n obj.inactive(viewer);\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.colorDivSwitch_ComponentGroup = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var componentGroups = process.findRenderObjectByName(\"构件分组分色\");\n if (componentGroups) {\n for (var i = 0; i < componentGroups.childObjects.length; i++) {\n var obj = componentGroups.childObjects[i];\n if (obj.checkBusinessStateIsActive()) {\n this.setAllComponentGroupVisible(obj.name);\n if (on_off) {\n obj.active(viewer);\n } else {\n obj.inactive(viewer);\n }\n }\n }\n if (on_off) {\n var cutline = {};\n if (componentGroups) {\n legendManage_1.LegendManage.destory(this.elementKey);\n for (var i = 0; i < componentGroups.childObjects.length; i++) {\n var obj = componentGroups.childObjects[i];\n if (obj.checkBusinessStateIsActive()) {\n var color = gs_bim_air_1.Longan.deepClone(obj.color);\n cutline[obj.name] = color;\n }\n }\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Set Colors\";\n component.leftText = \"Color\";\n component.rightText = \"Set Name\";\n } else {\n component.title = \"自定义构件分组分色\";\n component.leftText = \"颜色\";\n component.rightText = \"分组名\";\n }\n }\n } else {\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.setAllComponentGroupVisible = function (groupName) {\n var viewer = this.viewer;\n var process = this.viewer.process;\n var componentGroups = process.findRenderObjectByName(\"构件分组分色\");\n if (componentGroups) {\n for (var i = 0; i < componentGroups.childObjects.length; i++) {\n var obj = componentGroups.childObjects[i];\n if (obj.name === groupName) {\n if (obj.checkBusinessStateIsActive()) {\n obj.isVisible = true;\n obj.businessState = gs_ceec_design_2.BusinessState.Editing;\n obj.setChildVisible(viewer, true);\n }\n break;\n }\n }\n }\n };\n CommonInterfaceManager.prototype.colorSwitch = function (state, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n switch (state) {\n case SwitchColorDivide.GrupName:\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n this.colorDivSwitch_GrupName(true, isUpdate);\n break;\n case SwitchColorDivide.GrupThickness:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n this.colorDivSwitch_GrupThickness(true, isUpdate);\n break;\n case SwitchColorDivide.Mgrov:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n this.colordDivSwitch_Mgrov(true, isUpdate);\n break;\n case SwitchColorDivide.Corrz:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n this.colordDivSwitch_Corrz(true, isUpdate);\n break;\n case SwitchColorDivide.ComponentGroup:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(true, isUpdate);\n break;\n case SwitchColorDivide.Cancel:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n break;\n }\n };\n CommonInterfaceManager.prototype.componentGroupColorVisibleSwitch = function (groupName, on_off) {\n var viewer = this.viewer;\n var process = this.viewer.process;\n var componentGroups = process.findRenderObjectByName(\"构件分组分色\");\n if (componentGroups) {\n for (var i = 0; i < componentGroups.childObjects.length; i++) {\n var obj = componentGroups.childObjects[i];\n if (obj.name === groupName) {\n if (obj.checkBusinessStateIsActive()) {\n obj.isVisible = on_off;\n obj.businessState = gs_ceec_design_2.BusinessState.Editing;\n if (on_off) {\n obj.active(viewer);\n } else {\n obj.inactive(viewer);\n }\n obj.setChildVisible(viewer, on_off);\n }\n break;\n }\n }\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.waveSwitch = function (on_off) {\n var process = this.viewer.process;\n var wave = process.findRenderObjectByName(\"波面\");\n if (!wave) {\n return -1;\n }\n var currentWaveItemObject = process.findCaeObjectByNameInChildObject(wave, this.currentSelectWaveItemName);\n if (currentWaveItemObject) {\n if (on_off) {\n currentWaveItemObject.active(this.viewer);\n store_1.default.state.info = currentWaveItemObject.toString();\n } else {\n currentWaveItemObject.inactive(this.viewer);\n store_1.default.state.info = null;\n }\n } else {\n store_1.default.state.info = null;\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.boreholeSwitch = function (on_off) {\n var process = this.viewer.process;\n var parentNode = process.findRenderObjectByName(\"土层和波面\");\n if (!parentNode) {\n return -1;\n }\n var elementKey = \"soild\";\n if (parentNode && on_off) {\n this.boreholeCutLineDisplay = true;\n for (var i = 0; i < parentNode.childObjects.length; i++) {\n parentNode.childObjects[i].active();\n }\n legendManage_1.LegendManage.create(elementKey, this.boreholeLegend, \"土层数据\", \"\", \"土层名\", {\n right: \"0px\",\n bottom: \"0px\"\n });\n } else {\n this.boreholeCutLineDisplay = false;\n for (var i = 0; i < parentNode.childObjects.length; i++) {\n parentNode.childObjects[i].inactive();\n }\n legendManage_1.LegendManage.destory(elementKey);\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.checkPSI = function () {\n var exist = false;\n if (!this.viewer.datReaderManager.psiopt) {\n console.log(\"没有桩土数据.\");\n exist = false;\n } else {\n exist = true;\n }\n return exist;\n };\n CommonInterfaceManager.prototype.checkSeainp = function () {\n var exist = false;\n var ro = this.viewer.process.findRenderObjectByType(\"SeastateLdopt\");\n if (ro) {\n exist = true;\n }\n return exist;\n };\n CommonInterfaceManager.prototype.finiteElementSwitch = function (visible) {\n var members = this.viewer.process.findRenderObjectsByType(\"MemberObject\");\n if (visible) {\n for (var i = 0; i < members.length; i++) {\n var member = members[i];\n member.segmentLengthCoeff = memberObject_1.MemberObject.g_GridRatio;\n if (member.segmentLengthCoeff === -1) {\n member.segmentLengthCoeff = 0.9;\n }\n member.setNeedUpdate();\n }\n this.viewer.updateDisplay();\n } else {\n for (var i = 0; i < members.length; i++) {\n var member = members[i];\n member.segmentLengthCoeff = 1;\n member.setNeedUpdate();\n }\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.editColors = function (backgroundColor, jointColor, memberColorLine, memberColorFace, plateColor) {\n objectColors_1.ObjectColor.jointColor = jointColor;\n objectColors_1.ObjectColor.memberFaceColor = memberColorFace;\n objectColors_1.ObjectColor.memberLineColor = memberColorLine;\n objectColors_1.ObjectColor.plateColor = plateColor;\n this.viewer.backgroundColor = backgroundColor;\n var joints = this.viewer.process.findRenderObjectsByType(\"JointObject\");\n joints.forEach(function (item) {\n item.segment.color.setMarker(jointColor);\n });\n var members = this.viewer.process.findRenderObjectsByType(\"MemberObject\");\n members.forEach(function (item) {\n item.faceColor = memberColorFace;\n item.lineColor = memberColorLine;\n item.setNeedUpdate();\n });\n var plates = this.viewer.process.findRenderObjectsByType(\"PlateObject\");\n plates.forEach(function (item) {\n item.faceColor = plateColor;\n item.setNeedUpdate();\n });\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.editLabelColors = function (jointLabel, memberLabel, plateLabel, loadLabel) {\n objectColors_1.ObjectColor.jointLabelColor = jointLabel;\n objectColors_1.ObjectColor.memberLabelColor = memberLabel;\n objectColors_1.ObjectColor.plateLabelColor = plateLabel;\n objectColors_1.ObjectColor.loadLabelColor = loadLabel;\n var joints = this.viewer.process.findRenderObjectsByType(\"JointObject\");\n joints.forEach(function (item) {\n item.isDrawSvg = false;\n item.isDrawSvg = true;\n });\n var members = this.viewer.process.findRenderObjectsByType(\"MemberObject\");\n members.forEach(function (item) {\n item.isDrawSvg = false;\n item.isDrawSvg = true;\n });\n var plates = this.viewer.process.findRenderObjectsByType(\"PlateObject\");\n plates.forEach(function (item) {\n item.isDrawSvg = false;\n item.isDrawSvg = true;\n });\n this.viewer.exeSceneCameraChanged(gs_bim_air_1.Longan.LonganCore.CameraChangeType.Scale);\n };\n CommonInterfaceManager.prototype.editSectionLabelColors = function (sectionViewer, backgroundColor, lineLabelColor, arrowLabelColor, textLabelColor) {\n if (backgroundColor) {\n sectionViewer.backgroundColor = backgroundColor;\n }\n if (lineLabelColor) {\n instanceSectionObject_1.InstanceSectionObject.lineLabelColor = lineLabelColor;\n }\n if (arrowLabelColor) {\n instanceSectionObject_1.InstanceSectionObject.arrowLabelColor = arrowLabelColor;\n }\n if (textLabelColor) {\n instanceSectionObject_1.InstanceSectionObject.textLabelColor = textLabelColor;\n }\n var root = sectionViewer.renderObject;\n root === null || root === void 0 ? void 0 : root.childObjects.forEach(function (section) {\n if (section instanceof sectionObject_1.SectionObject) {\n var iro_1 = sectionViewer.findInstanceObject(section);\n if (iro_1) {\n iro_1.removeSvg();\n setTimeout(function () {\n iro_1.drawSvg();\n }, 10);\n }\n }\n });\n };\n CommonInterfaceManager.prototype.switchActiveViewer = function (elementId) {\n var process = this.viewer.process;\n process.viewers.forEach(function (vi) {\n if (vi.container.id === elementId) {\n process.activeViewer = vi;\n return;\n }\n });\n };\n CommonInterfaceManager.prototype.showHistoryList = function () {\n var historyManager = this.viewer.process.historyManager;\n var list = historyManager.stateList;\n for (var i = 0; i < list.count(); i++) {\n console.log(list.items[i].name);\n }\n return list;\n };\n CommonInterfaceManager.prototype.historyRoll = function (index) {\n var historyManager = this.viewer.process.historyManager;\n var currentIdx = historyManager.currentStateIndex;\n if (currentIdx < index) {\n var time = index - currentIdx;\n for (var i = 0; i < time; i++) {\n this.viewer.process.historyManager.rollForward();\n }\n } else if (currentIdx > index) {\n var time = currentIdx - index;\n for (var i = 0; i < time; i++) {\n this.viewer.process.historyManager.rollBack();\n }\n }\n };\n CommonInterfaceManager.prototype.getLoadConditionList = function () {\n var loadConditions = this.viewer.process.findRenderObjectsByType(\"LoadConditionObject\");\n return loadConditions;\n };\n CommonInterfaceManager.prototype.getLoadConditionCombineList = function () {\n var objects = this.viewer.process.findRenderObjectsByType(\"SeastateLcomb\");\n return objects;\n };\n CommonInterfaceManager.prototype.removeProcessData = function () {\n this.viewer.process.clearRenderObjects(true);\n };\n CommonInterfaceManager.prototype.addJointLoad = function (loadConditionName, loadGroupName, selectedJointName, fx, fy, fz, mx, my, mz) {\n var viewer = this.viewer;\n var pretreatmentRO = viewer.process.findRenderObjectByName(\"后处理计算结果\");\n if (!pretreatmentRO) {\n console.error(\"没有'后处理计算结果'的RO节点\");\n return 2;\n }\n var conditionParent = viewer.process.findCaeObjectByNameInChildObject(pretreatmentRO, \"荷载工况\");\n if (!conditionParent) {\n conditionParent = new gs_ceec_design_2.DesignBaseObject();\n conditionParent.businessState = gs_ceec_design_2.BusinessState.Creating;\n conditionParent.name = \"荷载工况\";\n viewer.process.addRenderObject(pretreatmentRO, conditionParent);\n }\n var loadConditionRO = null;\n loadConditionRO = viewer.process.findCaeObjectByNameInChildObject(conditionParent, loadConditionName);\n if (!loadConditionRO) {\n loadConditionRO = new loadConditionObject_1.LoadConditionObject(loadConditionName);\n loadConditionRO.businessState = gs_ceec_design_2.BusinessState.Creating;\n viewer.process.addRenderObject(conditionParent, loadConditionRO);\n } else {\n loadConditionRO.businessState = gs_ceec_design_2.BusinessState.Editing;\n }\n var loadGroupRO = viewer.process.findCaeObjectByNameInChildObject(loadConditionRO, loadGroupName);\n if (!loadGroupRO) {\n loadGroupRO = new loadGroupObject_1.LoadGroupObject(loadGroupName);\n loadGroupRO.businessState = gs_ceec_design_2.BusinessState.Creating;\n viewer.process.addRenderObject(loadConditionRO, loadGroupRO);\n } else {\n loadGroupRO.businessState = gs_ceec_design_2.BusinessState.Editing;\n }\n for (var i = 0; i < loadGroupRO.childObjects.length; i++) {\n var load = loadGroupRO.childObjects[i];\n if (load instanceof jointLoadObject_1.JointLoadObject) {\n if (load.jointName === selectedJointName) {\n return 3;\n }\n }\n }\n var jointLoad = new jointLoadObject_1.JointLoadObject(loadConditionRO.name, loadGroupName);\n jointLoad.name = \"Joint:\" + selectedJointName;\n jointLoad.businessState = gs_ceec_design_2.BusinessState.Creating;\n jointLoad.jointName = selectedJointName;\n jointLoad.forceXDirection = fx;\n jointLoad.forceYDirection = fy;\n jointLoad.forceZDirection = fz;\n jointLoad.momentAboutXAxis = mx;\n jointLoad.momentAboutYAxis = my;\n jointLoad.momentAboutZAxis = mz;\n viewer.process.addRenderObject(loadGroupRO, jointLoad);\n return 1;\n };\n CommonInterfaceManager.prototype.editJointLoad = function (jointLoad, fx, fy, fz, mx, my, mz) {\n jointLoad.businessState = gs_ceec_design_2.BusinessState.Editing;\n jointLoad.forceXDirection = fx;\n jointLoad.forceYDirection = fy;\n jointLoad.forceZDirection = fz;\n jointLoad.momentAboutXAxis = mx;\n jointLoad.momentAboutYAxis = my;\n jointLoad.momentAboutZAxis = mz;\n };\n CommonInterfaceManager.prototype.boreholeChange = function (boreholeName) {\n var elementKey = \"soild\";\n if (this.boreholeCutLineDisplay) {\n this.boreholeCutLineDisplay = false;\n legendManage_1.LegendManage.destory(elementKey);\n var currentBoreholeObjects = this.currentBoreholeObjects;\n for (var i = 0; i < currentBoreholeObjects.length; i++) {\n if (currentBoreholeObjects[i].name === boreholeName) {\n currentBoreholeObjects[i].cutlienAcitve = true;\n this.activeBoreholeName = boreholeName;\n this.boreholeCutLineDisplay = true;\n var cutLineLegend = currentBoreholeObjects[i].geCutline();\n legendManage_1.LegendManage.create(elementKey, cutLineLegend, \"土层数据\", \"颜色\", \"土层名\", {\n right: \"0px\",\n bottom: \"0px\"\n });\n } else {\n currentBoreholeObjects[i].cutlienAcitve = false;\n }\n }\n }\n };\n return CommonInterfaceManager;\n }(gs_bim_air_1.Longan.ViewerManagerBase);\n exports.CommonInterfaceManager = CommonInterfaceManager;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2RngvbWFuYWdlcnMvaW50ZXJmYWNlTWFuYWdlcnMvY29tbW9uSW50ZXJmYWNlTWFuYWdlci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1tuYW1lXS8uL3BhY2thZ2VzL2NhZURlc2lnbi9zcmMvZ3NEZXZGeC9tYW5hZ2Vycy9pbnRlcmZhY2VNYW5hZ2Vycy9jb21tb25JbnRlcmZhY2VNYW5hZ2VyLnRzPzcxNWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0FFTGlnaHRPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZUxpZ2h0T2JqZWN0L2NhZUxpZ2h0T2JqZWN0XCI7XG5pbXBvcnQgeyBKb2ludE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9qb2ludE9iamVjdFwiO1xuaW1wb3J0IHsgTG9uZ2FuIH0gZnJvbSBcImdzLWJpbS1haXJcIjtcbmltcG9ydCB7IFZpZXdlciB9IGZyb20gXCIuLi8uLi92aWV3ZXJcIjtcbmltcG9ydCB7IFNlbGVjdG9yRmlsaXRlciB9IGZyb20gXCIuL3NlbGVjdGlvbkludGVyZmFjZU1hbmFnZXJcIjtcbmltcG9ydCB7IENBRVRhc2sgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC90YXNrcy9jYWVUYXNrXCI7XG5pbXBvcnQgcmVuZGVyT2JqZWN0U2VydmljZSBmcm9tIFwiLi4vLi4vLi4vYXBpL3JlbmRlck9iamVjdFNlcnZpY2VcIjtcbmltcG9ydCB7IFByb2Nlc3MgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9wcm9jZXNzXCI7XG5pbXBvcnQgeyBNb2RlbFRpdGxlIH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9jYWVPYmplY3RzL29wdGlvbk9iamVjdHMvbW9kZWxUaXRsZVwiO1xuaW1wb3J0IHsgQ2FyZFRJVExFIH0gZnJvbSBcIi4uLy4uLy4uL2NhZUNhcmRFZGl0b3IvY2FlQ2FyZE9iamVjdHMvc2FjaW5wL2NhcmRUSVRMRVwiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VNYW5hZ2VyIH0gZnJvbSBcImdzLWNlZWMtZGVzaWduXCI7XG5pbXBvcnQgeyBNZW1iZXJPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZU9iamVjdHMvbWVtYmVyT2JqZWN0XCI7XG5pbXBvcnQge1xuICBCdXNpbmVzc1N0YXRlLFxuICBEZXNpZ25CYXNlT2JqZWN0LFxufSBmcm9tIFwiZ3MtY2VlYy1kZXNpZ25cIjtcbmltcG9ydCB7IE1ncm92T2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9jYWVPYmplY3RzL3ByZXRyZWF0bWVudC9tZ3Jvdk9iamVjdFwiO1xuaW1wb3J0IHsgQ29ycnpPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZU9iamVjdHMvcHJldHJlYXRtZW50L2NvcnJ6T2JqZWN0XCI7XG5pbXBvcnQgeyBDb2xvckRpdkdydXBJZE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy9jb2xvckRpdkdydXBJZE9iamVjdFwiO1xuaW1wb3J0IHsgQ29sb3JEaXZHcnVwVGhpY2tuZXNzT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2NvbG9yRGl2R3J1cFRoaWNrbmVzc09iamVjdFwiO1xuaW1wb3J0IHsgQ29sb3JEaXZNR1JPVk9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy9jb2xvckRpdk1HUk9WT2JqZWN0XCI7XG5pbXBvcnQgeyBDb2xvckRpdkNPUlJaT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2NvbG9yRGl2Q09SUlpPYmplY3RcIjtcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vLi4vLi4vc3RvcmVcIjtcbmltcG9ydCB7IEN1dGxpbmVHcnVwVGhpY2tuZXNzT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2N1dGxpbmVHcnVwVGhpY2tuZXNzT2JqZWN0XCI7XG5pbXBvcnQgeyBDdXRsaW5lR3J1cElkT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2N1dGxpbmVHcnVwSWRPYmplY3RcIjtcbmltcG9ydCB7IFBsYXRlT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9jYWVPYmplY3RzL3BsYXRlT2JqZWN0XCI7XG5pbXBvcnQgeyBDb21tYW5kTWFuYWdlciB9IGZyb20gXCIuLi9jb21tYW5kTWFuYWdlclwiO1xuaW1wb3J0IHsgR3J1cE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9ncnVwT2JqZWN0XCI7XG5pbXBvcnQgeyBXYXZlT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL3dhdmVPYmplY3RcIjtcbmltcG9ydCB7IFdhdmVJdGVtT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL3dhdmVJdGVtT2JqZWN0XCI7XG5pbXBvcnQgeyBDb2xvckRpdkNvbXBvbmVudEdyb3VwT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2NvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3RcIjtcbmltcG9ydCB7XG4gIEJvcmVob2xlc09iamVjdCxcbn0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2JvcmVob2xlT2JqZWN0XCI7XG5pbXBvcnQgeyBPYmplY3RDb2xvciB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9vYmplY3RDb2xvcnNcIjtcbmltcG9ydCB7IEluc3RhbmNlU2VjdGlvbk9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9pbnN0YW5jZVNlY3Rpb25PYmplY3RcIjtcbmltcG9ydCB7IFNlY3Rpb25PYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZU9iamVjdHMvc2VjdGlvbk9iamVjdFwiO1xuaW1wb3J0IHsgU2VjdGlvblZpZXdlciB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L3NlY3Rpb25WaWV3ZXJcIjtcbmltcG9ydCB7IExvYWRDb25kaXRpb25PYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2xvYWRPYmplY3RzL2xvYWRDb25kaXRpb25PYmplY3RcIjtcbmltcG9ydCB7IExvYWRHcm91cE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvbG9hZE9iamVjdHMvbG9hZEdyb3VwT2JqZWN0XCI7XG5pbXBvcnQgeyBKb2ludExvYWRPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2xvYWRPYmplY3RzL2pvaW50TG9hZE9iamVjdFwiO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCJlbGVtZW50LXVpXCI7XG5pbXBvcnQgeyBMZWdlbmRNYW5hZ2UgfSBmcm9tIFwiLi4vLi4vLi4vdmlld2VyV3JhcHBlci9tb2R1bGUvbGVnZW5kTWFuYWdlXCI7XG5cblxuZXhwb3J0IGVudW0gU3dpdGNoQ29sb3JEaXZpZGUge1xuICBHcnVwTmFtZSA9IDAsIC8v5oyJ5p2G5Lu25oiq6Z2i57uE5ZCN5YiG6ImyXG4gIEdydXBUaGlja25lc3MgPSAxLCAvL+aMieadhuS7tuWjgeWOmuWIhuiJslxuICBNZ3JvdiA9IDIsIC8v5oyJ5rW355Sf54mp5Y6a5bqm5YiG6ImyXG4gIENvcnJ6ID0gMywgLy/mjInohZDomoDkvZnph4/liIboibJcbiAgQ2FuY2VsID0gNCwgLy8g5Y+W5raI5YiG6Imy5pWI5p6cXG4gIENvbXBvbmVudEdyb3VwID0gNSwgLy8g6Ieq5a6a5LmJ5p6E5Lu25YiG6Imy5pWI5p6cXG4gIC8vIEJvcmVob2xlID0gNiwgLy8g5Zyf5bGC5pWI5p6cXG59XG5cbmV4cG9ydCBjbGFzcyBDb21tb25JbnRlcmZhY2VNYW5hZ2VyIGV4dGVuZHMgTG9uZ2FuLlZpZXdlck1hbmFnZXJCYXNlIHtcbiAgLy8gZWZmZWN0T2JqZWN0cyA9IG5ldyBMb25nYW4uTGlzdDxEZXNpZ25CYXNlT2JqZWN0PigpO1xuICBjdXJyZW50U2VsZWN0V2F2ZUl0ZW1OYW1lOiBzdHJpbmcgPSBudWxsO1xuICBjdXJyZW50Qm9yZWhvbGVPYmplY3RzOiBBcnJheTxCb3JlaG9sZXNPYmplY3Q+ID0gbnVsbDtcbiAgYm9yZWhvbGVMZWdlbmQgPSBudWxsO1xuICBib3JlaG9sZUN1dExpbmVEaXNwbGF5ID0gZmFsc2U7XG5cbiAgc2hvd0VuZ2xpc2hUZXh0ID0gZmFsc2U7XG5cbiAgLy8g5aSN5Yi25aSW6YOo5LqL5Lu2LlxuICBjb3B5ZWRFeHRlcm5hbEV2ZW50ID0gbnVsbDtcblxuICBlbGVtZW50S2V5ID0gXCJjdXRsaW5lXCI7XG4gIGFjdGl2ZUJvcmVob2xlTmFtZSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3Iodmlld2VyOiBWaWV3ZXIpIHtcbiAgICBzdXBlcih2aWV3ZXIpO1xuICB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIOe8lui+kemhueebruS/oeaBryjlkI3np7DjgIHlpIfms6gpXG4gIC8vICAqIEBwYXJhbSBwcm9qZWN0SWQg6aG555uuaWRcbiAgLy8gICogQHBhcmFtIHByb2plY3ROYW1lIOmhueebruWQjeensFxuICAvLyAgKiBAcGFyYW0gcHJvamVjdFJlbWFya3Mg6aG555uu5aSH5rOoXG4gIC8vICAqIEByZXR1cm5zIOaOpeWPo+S/oeaBr1xuICAvLyAgKi9cbiAgLy8gZWRpdFByb2plY3QocHJvamVjdElkOiBzdHJpbmcsIHByb2plY3ROYW1lOiBzdHJpbmcsIHByb2plY3RSZW1hcmtzOiBzdHJpbmcpIHtcbiAgLy8gICBpZiAoIXByb2plY3RJZCB8fCAhcHJvamVjdE5hbWUpIHtcbiAgLy8gICAgIHJldHVybjtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIFByb2plY3RzQXBpLmVkaXRQcm9qZWN0KHByb2plY3RJZCwge1xuICAvLyAgICAgbmFtZTogcHJvamVjdE5hbWUsXG4gIC8vICAgICByZW1hcmtzOiBwcm9qZWN0UmVtYXJrcyxcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIC8vIC8qKlxuICAvLyAgKiDojrflj5bpobnnm67liJfooahcbiAgLy8gICogQHJldHVybnMg6L+U5Zue6aG555uu5YiX6KGo5pWw5o2uXG4gIC8vICAqL1xuICAvLyBnZXRQcm9qZWN0TGlzdCgpIHtcbiAgLy8gICBQcm9qZWN0c0FwaS5nZXRQcm9qZWN0cygpLnRoZW4oKGRhdGEpID0+IHtcbiAgLy8gICAgIHJldHVybiBkYXRhO1xuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIOaWsOW7uumhueebrlxuICAvLyAgKiBAcGFyYW0gcHJvamVjdE5hbWUg6aG555uu5ZCNXG4gIC8vICAqIEBwYXJhbSBwcm9qZWN0UmVtYXJrcyDpobnnm67lpIfms6hcbiAgLy8gICogQHJldHVybnNcbiAgLy8gICovXG4gIC8vIGNyZWF0ZVByb2plY3RDb25maXJtKHByb2plY3ROYW1lOiBzdHJpbmcsIHByb2plY3RSZW1hcmtzOiBzdHJpbmcpIHtcbiAgLy8gICBpZiAoIXByb2plY3ROYW1lKSB7XG4gIC8vICAgICByZXR1cm47XG4gIC8vICAgfVxuICAvLyAgIGNvbnNvbGUubG9nKFwicHJvamVjdFJlbWFya3M6XCIsIHByb2plY3RSZW1hcmtzKTtcbiAgLy8gICByZXR1cm4gUHJvamVjdHNBcGkuY3JlYXRlUHJvamVjdCh7XG4gIC8vICAgICBuYW1lOiBwcm9qZWN0TmFtZSxcbiAgLy8gICAgIHJlbWFya3M6IHByb2plY3RSZW1hcmtzLFxuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluaooeWei1Bsb3RUaXRsZVxuICAgKiBAcmV0dXJucyDmqKHlnotQbG90VGl0bGVcbiAgICovXG4gIHNob3dQbG90VGl0bGUoKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuICAgIGxldCB0aXRsZVJPID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlUeXBlKFwiTW9kZWxUaXRsZVwiKTtcbiAgICBpZiAodGl0bGVSTykge1xuICAgICAgaWYgKHRpdGxlUk8gaW5zdGFuY2VvZiBNb2RlbFRpdGxlKSB7XG4gICAgICAgIHJlc3VsdCA9IHRpdGxlUk8uY2FyZE9iamVjdC50aXRsZS52YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gXCJBY3RpdmUgU3RydWN0dXJlXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiDnvJbovpHmqKHlnotQbG90VGl0bGUuXG4gICAqIEBwYXJhbSB0aXRsZVxuICAgKi9cbiAgZWRpdFBsb3RUaXRsZSh0aXRsZTogc3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzIGFzIFByb2Nlc3M7XG5cbiAgICBpZiAoIXRpdGxlIHx8IHRpdGxlLnRyaW1FbmQoKSA9PT0gXCJcIikge1xuICAgICAgbGV0IHRpdGxlUk8gPSBwcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeVR5cGUoXCJNb2RlbFRpdGxlXCIpIGFzIE1vZGVsVGl0bGU7XG4gICAgICBpZiAodGl0bGVSTykge1xuICAgICAgICAvLyDliKDpmaTmoIfpopjmiJDlip9cbiAgICAgICAgdGl0bGVSTy50ZW1wRGVsZXRlKHRoaXMudmlld2VyIGFzIFZpZXdlcik7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBpc2xlZ2FsID0gdGhpcy5jaGVjVGl0bGVrTmFtZWxlZ2FsKHRpdGxlKTtcblxuICAgIGlmICghaXNsZWdhbCkge1xuICAgICAgLy8g5qCH6aKY5LiN5ZCI5rOVXG4gICAgICByZXR1cm4gMjtcbiAgICB9XG5cbiAgICBsZXQgdGl0bGVSTyA9IHByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5VHlwZShcIk1vZGVsVGl0bGVcIik7XG4gICAgaWYgKHRpdGxlUk8pIHtcbiAgICAgIGlmICh0aXRsZVJPIGluc3RhbmNlb2YgTW9kZWxUaXRsZSkge1xuICAgICAgICB0aXRsZVJPLmNhcmRPYmplY3QudGl0bGUudmFsdWUgPSB0aXRsZTtcbiAgICAgICAgdGl0bGVSTy5jYXJkRGF0YSA9IHRpdGxlUk8uY2FyZE9iamVjdC5nZXRMaW5lKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0aXRsZVJPID0gbmV3IE1vZGVsVGl0bGUoKTtcbiAgICAgIHRpdGxlUk8ubmFtZSA9IFwiVElUTEVcIjtcbiAgICAgIGxldCBsaW5lID0gXCIgICAgIFwiICsgdGl0bGU7XG4gICAgICB0aXRsZVJPLmNhcmREYXRhID0gbGluZTtcbiAgICAgIHRpdGxlUk8uY2FyZE9iamVjdCA9IG5ldyBDYXJkVElUTEUobGluZSk7XG4gICAgICBwcm9jZXNzLmFkZFJlbmRlck9iamVjdChcbiAgICAgICAgcHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5zYWNpbnBOb2RlLFxuICAgICAgICB0aXRsZVJPXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVjVGl0bGVrTmFtZWxlZ2FsKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCByZWcgPSAvXltBLVowLTldKiQvO1xuICAgIGlmICghcmVnLnRlc3QobmFtZSkgfHwgbmFtZS50cmltRW5kKCkubGVuZ3RoID4gMTI1KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIuepuumXtOeCueWQjeensOS4jeespuWQiOinhOiMg1wiKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICog6YeN572u6KeG5Zu+XG4gICAqL1xuICByZXNldFZpZXcoaXNTZXRWaWV3TW9kZSA9IHRydWUpIHtcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5hY3RpdmVWaWV3ZXIgYXMgVmlld2VyO1xuICAgIC8vIOWPlua2iOmrmOS6rlxuICAgIHZpZXdlci5zZWxlY3Rpb25NYW5hZ2VyLmNsZWFyQWxsU2VsZWN0aW9uQW5kSGlnaGxpZ2h0KCk7XG4gICAgLy8g5YWz6Zet5YWo6YOo5ZG95LukXG4gICAgKHZpZXdlci5wcm9jZXNzLmNvbW1hbmRNYW5hZ2VyIGFzIENvbW1hbmRNYW5hZ2VyKS5jbG9zZUFsbENvbW1hbmRzKCk7XG4gICAgLy8g5YWz6Zet5ZCE56eN5byA5YWzXG4gICAgdmlld2VyLmNvbW1vbkludGVyZmFjZU1hbmFnZXIuY29sb3JTd2l0Y2goU3dpdGNoQ29sb3JEaXZpZGUuQ2FuY2VsKTtcbiAgICB2aWV3ZXIuY29tbW9uSW50ZXJmYWNlTWFuYWdlci5maW5pdGVFbGVtZW50U3dpdGNoKGZhbHNlKTtcbiAgICAvLyDms6LpnaLlvIDlhbNcbiAgICB2aWV3ZXIuY29tbW9uSW50ZXJmYWNlTWFuYWdlci53YXZlU3dpdGNoKGZhbHNlKTtcbiAgICAvLyDlnJ/lsYLlvIDlhbNcbiAgICB2aWV3ZXIuY29tbW9uSW50ZXJmYWNlTWFuYWdlci5ib3JlaG9sZVN3aXRjaChmYWxzZSk7XG4gICAgLy8g5Y+W5raI5ZCE56eN5qCH562+LlxuICAgIHZpZXdlci52aWV3SW50ZXJmYWNlTWFuYWdlci5zZXRKb2ludE51bWJlclZpc2libGUoZmFsc2UpO1xuICAgIHZpZXdlci52aWV3SW50ZXJmYWNlTWFuYWdlci5zZXRKb2ludFJlc3RyYWludFZpc2libGUoZmFsc2UpO1xuXG4gICAgdmlld2VyLnZpZXdJbnRlcmZhY2VNYW5hZ2VyLnNldE1lbWJlckZpeGl0eVZpc2libGUoZmFsc2UpO1xuICAgIHZpZXdlci52aWV3SW50ZXJmYWNlTWFuYWdlci5zZXRNZW1iZXJMb2NhbEF4aXNWaXNpYmxlKGZhbHNlKTtcbiAgICB2aWV3ZXIudmlld0ludGVyZmFjZU1hbmFnZXIuc2V0TWVtYmVyU2VjdGlvblNpemVWaXNpYmxlKGZhbHNlKTtcbiAgICB2aWV3ZXIudmlld0ludGVyZmFjZU1hbmFnZXIuc2V0R3J1cE51bWJlclZpc2libGUoZmFsc2UpO1xuXG4gICAgLy8gLy8g5oGi5aSN5Zyo5bmz6Z2i5LiK5pi+56S6XG4gICAgLy8gdmlld2VyLmNvbW1vbkludGVyZmFjZU1hbmFnZXIuZWZmZWN0T2JqZWN0cy5mb3JFYWNoKChvYmopID0+IHtcbiAgICAvLyAgIHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qob2JqKS52aWV3ZXJWaXNpYmxlID0gdHJ1ZTtcbiAgICAvLyAgIHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qob2JqKS52aXNpYmxlID0gdHJ1ZTtcbiAgICAvLyB9KTtcbiAgICAvLyB2aWV3ZXIuY29tbW9uSW50ZXJmYWNlTWFuYWdlci5lZmZlY3RPYmplY3RzLmNsZWFyKCk7XG5cbiAgICBsZXQgcHJvY2VzcyA9IHZpZXdlci5wcm9jZXNzIGFzIFByb2Nlc3M7XG4gICAgcHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5qb2ludE5vZGU/LmNoaWxkT2JqZWN0cy5mb3JFYWNoKFxuICAgICAgKG9iaikgPT4ge1xuICAgICAgICB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KG9iaikudmlld2VyVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qob2JqKS52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgKG9iaiBhcyBEZXNpZ25CYXNlT2JqZWN0KS5jbGVhclN2ZygpO1xuICAgICAgfVxuICAgICk7XG4gICAgcHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5tZW1iZXJOb2RlPy5jaGlsZE9iamVjdHMuZm9yRWFjaChcbiAgICAgIChvYmopID0+IHtcbiAgICAgICAgdmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChvYmopLnZpZXdlclZpc2libGUgPSB0cnVlO1xuICAgICAgICB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KG9iaikudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIChvYmogYXMgRGVzaWduQmFzZU9iamVjdCkuY2xlYXJTdmcoKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlPy5jaGlsZE9iamVjdHMuZm9yRWFjaChcbiAgICAgIChvYmopID0+IHtcbiAgICAgICAgdmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChvYmopLnZpZXdlclZpc2libGUgPSB0cnVlO1xuICAgICAgICB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KG9iaikudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIChvYmogYXMgRGVzaWduQmFzZU9iamVjdCkuY2xlYXJTdmcoKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdmlld2VyLnZpZXdJbnRlcmZhY2VNYW5hZ2VyLm1lbWJlckxpbmVWaWV3KGZhbHNlKTtcbiAgICB2aWV3ZXIudmlld0ludGVyZmFjZU1hbmFnZXIucGxhdGVMaW5lVmlldyhmYWxzZSk7XG4gICAgLy8g6ZWc5aS05aSN5L2NLlxuICAgIGlmIChpc1NldFZpZXdNb2RlKSB7XG4gICAgICB2aWV3ZXIuc2V0Vmlld01vZGUoTG9uZ2FuLlZpZXdNb2RlLk9GU0lzbywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWIt+aWsOWFqOmDqHZpZXdlci5cbiAgICovXG4gIHJlZHJhdygpIHtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3M7XG4gICAgcHJvY2Vzcy52aWV3ZXJzLmZvckVhY2goKHZpKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcInZpXCIpO1xuICAgICAgdmkuZXhlU2NlbmVDYW1lcmFDaGFuZ2VkKFxuICAgICAgICBMb25nYW4uTG9uZ2FuQ29yZS5DYW1lcmFDaGFuZ2VUeXBlLlJvdGF0ZSB8XG4gICAgICAgIExvbmdhbi5Mb25nYW5Db3JlLkNhbWVyYUNoYW5nZVR5cGUuU2NhbGUgfFxuICAgICAgICBMb25nYW4uTG9uZ2FuQ29yZS5DYW1lcmFDaGFuZ2VUeXBlLlRyYW5zbGF0ZVxuICAgICAgKTtcbiAgICAgIHZpLnVwZGF0ZURpc3BsYXkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmo4DmtYvmmK/lkKbmnInpmZDlhYPmqKHlnotcbiAgICovXG4gIGNoZWNrSXNGaW5pdGVFbGVtZW50KCkge1xuICAgIGxldCBpc0ZFID0gdHJ1ZTtcblxuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IGdydXBOb2RlID0gdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIuZ3J1cE5vZGU7XG4gICAgZ3J1cE5vZGU/LmNoaWxkT2JqZWN0cy5mb3JFYWNoKChncnVwKSA9PiB7XG4gICAgICBpZiAoZ3J1cCBpbnN0YW5jZW9mIEdydXBPYmplY3QpIHtcbiAgICAgICAgaWYgKGdydXAuZ3J1cFNlZ21lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBpc0ZFID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGlzRkU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKFwiaXNGRTpcIiwgaXNGRSk7XG4gICAgcmV0dXJuIGlzRkU7XG4gIH1cblxuICAvKipcbiAgICog5omT5byA546w5pyJ5qih5Z6LXG4gICAqIEBwYXJhbSBtb2RlbElkIOaooeWei0lkXG4gICAqIEBwYXJhbSBpc1JlcGxhY2Ug5piv5ZCm5riF6Zmkdmlld2Vy5bey5Yqg6L2955qE5pWw5o2uXG4gICAqL1xuICBvcGVuTW9kZWwobW9kZWxJZDogc3RyaW5nLCBpc1JlcGxhY2U6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXIgYXMgVmlld2VyO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHZpZXdlci5sb2FkTW9kZWwobW9kZWxJZCwgaXNSZXBsYWNlKS50aGVuKChtb2RlbCkgPT4ge1xuICAgICAgICAvLyDmuIXnqbrljoblj7Lmk43kvZwuXG4gICAgICAgIHZpZXdlci5wcm9jZXNzLmhpc3RvcnlNYW5hZ2VyLmNsZWFyRGVsdGFTdGF0ZSgpO1xuICAgICAgICB2aWV3ZXIuc2NlbmVTZWdtZW50LnJlbmRlcmluZ09wdGlvbnMuY3VsbGluZ01heGltdW1FeHRlbnQgPSAwO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwibW9kZWxcIiwgbW9kZWwpO1xuICAgICAgICBsZXQgcm8gPSB2aWV3ZXIucmVuZGVyT2JqZWN0O1xuICAgICAgICBsZXQgY2FlVGFzayA9IG5ldyBDQUVUYXNrKHJvLCB2aWV3ZXIpO1xuICAgICAgICBjYWVUYXNrLndvcmtSZW5kZXJPYmplY3RTZXJ2aWNlID0gcmVuZGVyT2JqZWN0U2VydmljZTtcbiAgICAgICAgdmlld2VyLnByb2Nlc3MudGFza01hbmFnZXIuZXhlY3V0ZShjYWVUYXNrKTtcblxuICAgICAgICB2aWV3ZXIuc3RydWN0dXJlVHJlZU1hbmFnZXIudXBkYXRlKCk7XG4gICAgICAgIHZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gICAgICAgIHZpZXdlci5zZXRWaWV3TW9kZShMb25nYW4uVmlld01vZGUuT0ZTSXNvLCB0cnVlKTtcblxuICAgICAgICAvLyDor7fmsYLlkI7lpITnkIbkvb/nlKjnmoREQuaVsOaNri5cbiAgICAgICAgdmlld2VyLnBvc3RJbnRlcmZhY2VNYW5hZ2VyLnJlcXVlc3REQkRhdGEoKTtcblxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmo4Dmn6XmqKHlnovmmK/lkKbpnIDopoHkv53lrZgo5Lmf5bCx5piv5a+55q+U5qih5Z6L5b2T5YmN54q25oCB5LiO5Y6f5aeL54q25oCB5piv5ZCm5Y+R55Sf5LqG5pS55Y+YKS5cbiAgICogQHJldHVybnMgdHJ1ZTrpnIDopoHkv53lrZg7ZmFsc2U65LiN6ZyA6KaB5L+d5a2YLlxuICAgKi9cbiAgY2hlY2tOZWVkU2F2ZSgpIHtcbiAgICAvL1xuICAgIGxldCByb290Uk8gPSAodGhpcy52aWV3ZXIucHJvY2VzcyBhcyBhbnkpLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyXG4gICAgICAucm9vdE5vZGU7XG4gICAgaWYgKHJvb3RSTyBpbnN0YW5jZW9mIENBRUxpZ2h0T2JqZWN0KSB7XG4gICAgICBsZXQgcmVzdWx0ID0gUGVyc2lzdGVuY2VNYW5hZ2VyLnNhdmVEZXNpZ24ocm9vdFJPKTtcbiAgICAgIGlmIChcbiAgICAgICAgcmVzdWx0LmNyZWF0ZUxpc3QubGVuZ3RoID4gMCB8fFxuICAgICAgICByZXN1bHQuZGVsZXRlTGlzdC5sZW5ndGggPiAwIHx8XG4gICAgICAgIHJlc3VsdC5lZGl0TGlzdC5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIOS/neWtmOW9k+WJjemhueebrlxuICAgKi9cbiAgc2F2ZSgpIHtcbiAgICAvLyBsZXQgZmxhZyA9IHRoaXMuY2hlY2tOZWVkU2F2ZSgpO1xuXG4gICAgbGV0IHJvb3RSTyA9ICh0aGlzLnZpZXdlci5wcm9jZXNzIGFzIGFueSkuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXJcbiAgICAgIC5yb290Tm9kZTtcbiAgICBpZiAocm9vdFJPIGluc3RhbmNlb2YgQ0FFTGlnaHRPYmplY3QpIHtcbiAgICAgIHJvb3RSTy5zYXZlKHRoaXMudmlld2VyKS50aGVuKCgpPT57XG4gICAgICAgIGNvbnNvbGUubG9nKFwic2F2ZTNcIik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5Y+m5a2Y5Y2h54mH5pWw5o2uXG4gICAqL1xuICBleHBvcnREQVRGaWxlKCkge1xuICAgIGNvbnNvbGUubG9nKFwiZXhwb3J0XCIpO1xuICAgIGxldCBkYXRDYXJkRGF0YSA9ICh0aGlzLnZpZXdlciBhcyBWaWV3ZXIpLmRhdFdyaXRlck1hbmFnZXIuZXhwb3J0REFURmlsZSgpO1xuICAgIGRhdENhcmREYXRhICs9IFwiRU5EXCI7XG5cbiAgICByZXR1cm4gZGF0Q2FyZERhdGE7XG4gIH1cblxuICAvKipcbiAgICog5a+85Ye65p2G5Lu25pWw5o2uXG4gICAqIEBwYXJhbSBpc0V4cG9ydEFsbCB0cnVlOuWvvOWHuuWFqOmDqOadhuS7tuaVsOaNru+8m2ZhbHNlOuS7heWvvOWHuuaRhOWDj+acuuWGheeahOadhuS7tuaVsOaNrlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZXhwb3J0TWVtYmVyRGF0YShpc0V4cG9ydEFsbCA9IHRydWUpIHtcbiAgICBjb25zb2xlLmxvZyhcImV4cG9ydCBtZW1iZXJcIik7XG4gICAgbGV0IGRhdENhcmREYXRhID0gKHRoaXMudmlld2VyIGFzIFZpZXdlcikuZGF0V3JpdGVyTWFuYWdlci5leHBvcnRNZW1iZXJEYXRhKFxuICAgICAgaXNFeHBvcnRBbGxcbiAgICApO1xuICAgIGRhdENhcmREYXRhICs9IFwiRU5EXCI7XG5cbiAgICByZXR1cm4gZGF0Q2FyZERhdGE7XG4gIH1cblxuICAvKipcbiAgICog5a+85Ye65qGp5Z+65pWw5o2uXG4gICAqIEBwYXJhbSBpc0V4cG9ydEFsbCAgdHJ1ZTrlr7zlh7rlhajpg6jmoanln7rmlbDmja7vvJtmYWxzZTrku4Xlr7zlh7rmkYTlg4/mnLrlhoXnmoTmoanln7rmlbDmja5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGV4cG9ydFBpbGVEYXRhKGlzRXhwb3J0QWxsID0gdHJ1ZSkge1xuICAgIGNvbnNvbGUubG9nKFwiZXhwb3J0IHBpbGVcIik7XG4gICAgbGV0IGRhdENhcmREYXRhID0gKHRoaXMudmlld2VyIGFzIFZpZXdlcikuZGF0V3JpdGVyTWFuYWdlci5leHBvcnRQaWxlRGF0YShcbiAgICAgIGlzRXhwb3J0QWxsXG4gICAgKTtcbiAgICBpZiAoZGF0Q2FyZERhdGEgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBkYXRDYXJkRGF0YSArPSBcIkVORFwiO1xuXG4gICAgcmV0dXJuIGRhdENhcmREYXRhO1xuICB9XG5cbiAgLy8gZXhwb3J0U2VjdGlvbkRhdGEoZGF0Q2FyZERhdGE6IHN0cmluZykge1xuICAvLyAgIGxldCB0dWJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIlR1YlNlY3Rpb25PYmplY3RcIik7XG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0dWJzLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgICBsZXQgb2JqID0gdHVic1tpXSBhcyBUdWJTZWN0aW9uT2JqZWN0O1xuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWxldGluZyB8fFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWFkXG4gIC8vICAgICApIHtcbiAgLy8gICAgICAgY29udGludWU7XG4gIC8vICAgICB9XG4gIC8vICAgICBsZXQgbGluZSA9IG9iai5zZXJpYWxpemVUb0NhcmQoKTtcbiAgLy8gICAgIGRhdENhcmREYXRhICs9IGxpbmUgKz0gXCJcXG5cIjtcbiAgLy8gICB9XG5cbiAgLy8gICBsZXQgd2ZzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIldGU2VjdGlvbk9iamVjdFwiKTtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHdmcy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgbGV0IG9iaiA9IHdmc1tpXSBhcyBXRlNlY3Rpb25PYmplY3Q7XG4gIC8vICAgICBpZiAoXG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlbGV0aW5nIHx8XG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlYWRcbiAgLy8gICAgICkge1xuICAvLyAgICAgICBjb250aW51ZTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIGxldCBsaW5lID0gb2JqLnNlcmlhbGl6ZVRvQ2FyZCgpO1xuICAvLyAgICAgZGF0Q2FyZERhdGEgKz0gbGluZSArPSBcIlxcblwiO1xuICAvLyAgIH1cblxuICAvLyAgIGxldCBib3hzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIkJveFNlY3Rpb25PYmplY3RcIik7XG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBib3hzLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgICBsZXQgb2JqID0gYm94c1tpXSBhcyBCb3hTZWN0aW9uT2JqZWN0O1xuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWxldGluZyB8fFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWFkXG4gIC8vICAgICApIHtcbiAgLy8gICAgICAgY29udGludWU7XG4gIC8vICAgICB9XG4gIC8vICAgICBsZXQgbGluZSA9IG9iai5zZXJpYWxpemVUb0NhcmQoKTtcbiAgLy8gICAgIGRhdENhcmREYXRhICs9IGxpbmUgKz0gXCJcXG5cIjtcbiAgLy8gICB9XG5cbiAgLy8gICBsZXQgcHJpcyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJQcmlTZWN0aW9uT2JqZWN0XCIpO1xuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJpcy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgbGV0IG9iaiA9IHByaXNbaV0gYXMgUHJpU2VjdGlvbk9iamVjdDtcbiAgLy8gICAgIGlmIChcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVsZXRpbmcgfHxcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVhZFxuICAvLyAgICAgKSB7XG4gIC8vICAgICAgIGNvbnRpbnVlO1xuICAvLyAgICAgfVxuICAvLyAgICAgbGV0IGxpbmUgPSBvYmouc2VyaWFsaXplVG9DYXJkKCk7XG4gIC8vICAgICBkYXRDYXJkRGF0YSArPSBsaW5lICs9IFwiXFxuXCI7XG4gIC8vICAgfVxuXG4gIC8vICAgbGV0IGNvbnMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFwiQ29uU2VjdGlvbk9iamVjdFwiKTtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgIGxldCBvYmogPSBjb25zW2ldIGFzIENvblNlY3Rpb25PYmplY3Q7XG4gIC8vICAgICBpZiAoXG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlbGV0aW5nIHx8XG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlYWRcbiAgLy8gICAgICkge1xuICAvLyAgICAgICBjb250aW51ZTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIGxldCBsaW5lID0gb2JqLnNlcmlhbGl6ZVRvQ2FyZCgpO1xuICAvLyAgICAgZGF0Q2FyZERhdGEgKz0gbGluZSArPSBcIlxcblwiO1xuICAvLyAgIH1cblxuICAvLyAgIGxldCBjaGxzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIkNobFNlY3Rpb25PYmplY3RcIik7XG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGxzLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgICBsZXQgb2JqID0gY2hsc1tpXSBhcyBDaGxTZWN0aW9uT2JqZWN0O1xuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWxldGluZyB8fFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWFkXG4gIC8vICAgICApIHtcbiAgLy8gICAgICAgY29udGludWU7XG4gIC8vICAgICB9XG4gIC8vICAgICBsZXQgbGluZSA9IG9iai5zZXJpYWxpemVUb0NhcmQoKTtcbiAgLy8gICAgIGRhdENhcmREYXRhICs9IGxpbmUgKz0gXCJcXG5cIjtcbiAgLy8gICB9XG5cbiAgLy8gICBsZXQgdGVlcyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJUZWVTZWN0aW9uT2JqZWN0XCIpO1xuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVlcy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgbGV0IG9iaiA9IHRlZXNbaV0gYXMgVGVlU2VjdGlvbk9iamVjdDtcbiAgLy8gICAgIGlmIChcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVsZXRpbmcgfHxcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVhZFxuICAvLyAgICAgKSB7XG4gIC8vICAgICAgIGNvbnRpbnVlO1xuICAvLyAgICAgfVxuICAvLyAgICAgbGV0IGxpbmUgPSBvYmouc2VyaWFsaXplVG9DYXJkKCk7XG4gIC8vICAgICBkYXRDYXJkRGF0YSArPSBsaW5lICs9IFwiXFxuXCI7XG4gIC8vICAgfVxuXG4gIC8vICAgbGV0IGFuZ3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFwiQW5nU2VjdGlvbk9iamVjdFwiKTtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IGFuZ3MubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgIGxldCBvYmogPSBhbmdzW2ldIGFzIEFuZ1NlY3Rpb25PYmplY3Q7XG4gIC8vICAgICBpZiAoXG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlbGV0aW5nIHx8XG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlYWRcbiAgLy8gICAgICkge1xuICAvLyAgICAgICBjb250aW51ZTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIGxldCBsaW5lID0gb2JqLnNlcmlhbGl6ZVRvQ2FyZCgpO1xuICAvLyAgICAgZGF0Q2FyZERhdGEgKz0gbGluZSArPSBcIlxcblwiO1xuICAvLyAgIH1cblxuICAvLyAgIGxldCBkdGJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIkR0YlNlY3Rpb25PYmplY3RcIik7XG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkdGJzLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgICBsZXQgb2JqID0gZHRic1tpXSBhcyBEdGJTZWN0aW9uT2JqZWN0O1xuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWxldGluZyB8fFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWFkXG4gIC8vICAgICApIHtcbiAgLy8gICAgICAgY29udGludWU7XG4gIC8vICAgICB9XG4gIC8vICAgICBsZXQgbGluZSA9IG9iai5zZXJpYWxpemVUb0NhcmQoKTtcbiAgLy8gICAgIGRhdENhcmREYXRhICs9IGxpbmUgKz0gXCJcXG5cIjtcbiAgLy8gICB9XG5cbiAgLy8gICBsZXQgcnRicyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJSdGJTZWN0aW9uT2JqZWN0XCIpO1xuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgcnRicy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgbGV0IG9iaiA9IHJ0YnNbaV0gYXMgUnRiU2VjdGlvbk9iamVjdDtcbiAgLy8gICAgIGlmIChcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVsZXRpbmcgfHxcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVhZFxuICAvLyAgICAgKSB7XG4gIC8vICAgICAgIGNvbnRpbnVlO1xuICAvLyAgICAgfVxuICAvLyAgICAgbGV0IGxpbmUgPSBvYmouc2VyaWFsaXplVG9DYXJkKCk7XG4gIC8vICAgICBkYXRDYXJkRGF0YSArPSBsaW5lICs9IFwiXFxuXCI7XG4gIC8vICAgfVxuXG4gIC8vIGxldCBibGJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIkJibFNlY3Rpb25PYmplY3RcIik7XG4gIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgYmxicy5sZW5ndGg7IGkrKykge1xuICAvLyAgIGxldCBvYmogPSBibGJzW2ldIGFzIEJsYlNlY3Rpb25PYmplY3Q7XG4gIC8vICAgaWYgKFxuICAvLyAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVsZXRpbmcgfHxcbiAgLy8gICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlYWRcbiAgLy8gICApIHtcbiAgLy8gICAgIGNvbnRpbnVlO1xuICAvLyAgIH1cbiAgLy8gICBsZXQgbGluZSA9IG9iai5zZXJpYWxpemVUb0NhcmQoKTtcbiAgLy8gICBkYXRDYXJkRGF0YSArPSBsaW5lICs9IFwiXFxuXCI7XG4gIC8vIH1cblxuICAvLyAgIHJldHVybiBkYXRDYXJkRGF0YTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiDlr7zlh7rmtbflhrXljaHniYfmlbDmja4uXG4gICAqL1xuICBleHBvcnREQVRGaWxlX1NlYWlucCgpIHtcbiAgICAvLyBjYXJkIGRhdGEgKyBybyAtPiBjYXJkXG4gICAgY29uc29sZS5sb2coXCJleHBvcnRfc2VhaW5wXCIpO1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IGRhdENhcmREYXRhID0gdmlld2VyLmRhdFdyaXRlck1hbmFnZXIuZXhwb3J0REFURmlsZV9TZWFpbnAoKTtcbiAgICBkYXRDYXJkRGF0YSArPSBcIkVORFwiO1xuXG4gICAgcmV0dXJuIGRhdENhcmREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIOWvvOWHuuaooeWei+WNoeeJh+aVsOaNri5cbiAgICovXG4gIGV4cG9ydERBVEZpbGVfU2FjaW5wKCkge1xuICAgIC8vXG4gICAgY29uc29sZS5sb2coXCJleHBvcnRfc2FjaW5wXCIpO1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IGRhdENhcmREYXRhID0gdmlld2VyLmRhdFdyaXRlck1hbmFnZXIuZXhwb3J0REFURmlsZV9TYWNpbnAoKTtcbiAgICBkYXRDYXJkRGF0YSArPSBcIkVORFwiO1xuXG4gICAgcmV0dXJuIGRhdENhcmREYXRhO1xuICB9XG5cbiAgLy8g5a+85YWlREFUXG4gIGltcG9ydERBVERhdGEoY29udGVudDogc3RyaW5nLCBvdmVyV3JpdGU6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnNvbGUubG9nKFwiaW1wb3J0REFURGF0YVwiKTtcbiAgICAodGhpcy52aWV3ZXIgYXMgVmlld2VyKS5kYXRSZWFkZXJNYW5hZ2VyLmltcG9ydERBVERhdGEoY29udGVudCwgb3ZlcldyaXRlKTtcblxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIC8vIOWvvOWFpea1t+WGteaWh+S7tlxuICBpbXBvcnRTRUFEYXRhKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc29sZS5sb2coXCJpbXBvcnRTRUFEYXRhXCIpO1xuICAgIGxldCBybyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5VHlwZShcIlNlYXN0YXRlTGRvcHRcIik7XG4gICAgaWYgKHJvKSB7XG4gICAgICBsZXQgbWVzc2FnZSA9IFwi5bey57uP5a2Y5Zyo5rW35Ya15pWw5o2uXCI7XG4gICAgICBNZXNzYWdlLmVycm9yKG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAodGhpcy52aWV3ZXIgYXMgVmlld2VyKS5kYXRSZWFkZXJNYW5hZ2VyLmltcG9ydFNlYWlucERhdGEoY29udGVudCk7XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gICAgKHRoaXMudmlld2VyIGFzIFZpZXdlcikuc3RydWN0dXJlVHJlZU1hbmFnZXIudXBkYXRlKCk7XG4gICAgcmV0dXJuIFwiaW1wb3J0U0VBRGF0YSBzdWNjZXNzZnVsXCI7XG4gIH1cblxuICAvKipcbiAgICog5a+85YWl5ZCO5aSE55CGc2Vhb2Np5paH5Lu277yM5LuF6Kej5p6Q6I236L295pWw5o2uXG4gICAqIEBwYXJhbSBjb250ZW50XG4gICAqL1xuICBpbXBvcnRTZWFvY2lEYXRhKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKFwiaW1wb3J0U2Vhb2NpRGF0YVwiKTtcbiAgICAodGhpcy52aWV3ZXIgYXMgVmlld2VyKS5kYXRSZWFkZXJNYW5hZ2VyLmltcG9ydFNlYW9jaURhdGEoY29udGVudCk7XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gICAgKHRoaXMudmlld2VyIGFzIFZpZXdlcikuc3RydWN0dXJlVHJlZU1hbmFnZXIudXBkYXRlKCk7XG4gICAgcmV0dXJuIFwiaW1wb3J0U2Vhb2NpRGF0YSBzdWNjZXNzZnVsXCI7XG4gIH1cblxuICAvLyDlr7zlhaXmoanlnJ/mlbDmja5cbiAgaW1wb3J0UFNJRGF0YShjb250ZW50OiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmxvZyhcImltcG9ydFBTSURhdGFcIik7XG4gICAgKHRoaXMudmlld2VyIGFzIFZpZXdlcikuZGF0UmVhZGVyTWFuYWdlci5pbXBvcnRQU0lEYXRhKGNvbnRlbnQpO1xuXG4gICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICAgICh0aGlzLnZpZXdlciBhcyBWaWV3ZXIpLnN0cnVjdHVyZVRyZWVNYW5hZ2VyLnVwZGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWOhuWPsuWbnumAgFxuICAgKi9cbiAgaGlzdG9yeUJhY2soKSB7XG4gICAgaWYgKFByb2Nlc3MuYWN0aXZlUHJvY2Vzcy5oaXN0b3J5TWFuYWdlci5jYW5Sb2xsQmFjaykge1xuICAgICAgUHJvY2Vzcy5hY3RpdmVQcm9jZXNzLmhpc3RvcnlNYW5hZ2VyLnJvbGxCYWNrKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWOhuWPsumHjeWBmlxuICAgKi9cbiAgaGlzdG9yeUZvcndhcmQoKSB7XG4gICAgaWYgKFByb2Nlc3MuYWN0aXZlUHJvY2Vzcy5oaXN0b3J5TWFuYWdlci5jYW5Sb2xsRm9yd2FyZCkge1xuICAgICAgUHJvY2Vzcy5hY3RpdmVQcm9jZXNzLmhpc3RvcnlNYW5hZ2VyLnJvbGxGb3J3YXJkKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOaMieW9k+WJjea/gOa0u+eahOmAieaLqei/h+a7pOWZqOexu+Wei++8jOmAieS4reW5tue6ouiJsumrmOS6ruW9k+WJjeinhuWPo+S4reaYvuekuueahOaJgOacieWvueW6lOWHoOS9leWFg+e0oFxuICAgKi9cbiAgc2VsZWN0QWxsKCkge1xuICAgIC8vXG4gICAgbGV0IHZpZXdlciA9IHRoaXMudmlld2VyIGFzIFZpZXdlcjtcbiAgICB2aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5jbGVhckFsbFNlbGVjdGlvbkFuZEhpZ2hsaWdodCgpO1xuICAgIHN3aXRjaCAodmlld2VyLnNlbGVjdGlvbkludGVyZmFjZU1hbmFnZXIuc2VsZWN0b3JGaWx0ZXIpIHtcbiAgICAgIC8vXG4gICAgICBjYXNlIFNlbGVjdG9yRmlsaXRlci5Kb2ludDpcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxKb2ludHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNlbGVjdG9yRmlsaXRlci5NZW1iZXI6XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsTWVtYmVycygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU2VsZWN0b3JGaWxpdGVyLlBsYXRlOlxuICAgICAgICB0aGlzLnNlbGVjdEFsbFBsYXRlcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU2VsZWN0b3JGaWxpdGVyLkFsbDpcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxKb2ludHMoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxNZW1iZXJzKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsUGxhdGVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIC8vIOaJk+W8gOe8lui+keWZqFxuXG4gIC8qKlxuICAgKiDliJvlu7rop4bngrko5a+55b2T5YmN6KeG5Y+j5oiq5Zu+KVxuICAgKiBAcGFyYW0gdmlld1BvaW50TmFtZSDop4bngrnlkI1cbiAgICovXG4gIGNyZWF0ZVZpZXdQb2ludCh2aWV3UG9pbnROYW1lOiBzdHJpbmcpIHtcbiAgICAvLyDliJvlu7rop4bngrlcbiAgICAodGhpcy52aWV3ZXIgYXMgVmlld2VyKS5jYWVQYW5lbE1hbmFnZXIudmlld1BvaW50UGFuZWxDYWVcbiAgICAgIC5hZGRWaWV3UG9pbnQodmlld1BvaW50TmFtZSlcbiAgICAgIC50aGVuKCgpID0+IHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QWxsSm9pbnRzKCkge1xuICAgIGxldCBqb2ludHMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFwiSm9pbnRPYmplY3RcIik7XG4gICAgbGV0IGtleXMgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuICAgIGxldCBwYXRocyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBqb2ludHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAga2V5cy5wdXNoKGl0ZW0uc2VnbWVudC5rZXkpO1xuICAgICAgcGF0aHMucHVzaChpdGVtLnNlZ21lbnQucGF0aCk7XG4gICAgfSk7XG4gICAgdGhpcy52aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5zZWxlY3RBbmRIaWdobGlnaHRLZXlzKGtleXMsIHBhdGhzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QWxsTWVtYmVycygpIHtcbiAgICAvL1xuICAgIGxldCBtZW1iZXJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIk1lbWJlck9iamVjdFwiKTtcbiAgICBsZXQga2V5cyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG4gICAgbGV0IHBhdGhzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIG1lbWJlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAga2V5cy5wdXNoKGl0ZW0uc2VnbWVudC5rZXkpO1xuICAgICAgcGF0aHMucHVzaChpdGVtLnNlZ21lbnQucGF0aCk7XG4gICAgfSk7XG4gICAgdGhpcy52aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5zZWxlY3RBbmRIaWdobGlnaHRLZXlzKGtleXMsIHBhdGhzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0QWxsUGxhdGVzKCkge1xuICAgIGxldCBwbGF0ZXMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFwiUGxhdGVPYmplY3RcIik7XG4gICAgbGV0IGtleXMgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuICAgIGxldCBwYXRocyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBwbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAga2V5cy5wdXNoKGl0ZW0uc2VnbWVudC5rZXkpO1xuICAgICAgcGF0aHMucHVzaChpdGVtLnNlZ21lbnQucGF0aCk7XG4gICAgfSk7XG4gICAgdGhpcy52aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5zZWxlY3RBbmRIaWdobGlnaHRLZXlzKGtleXMsIHBhdGhzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmn6Xmib7lt7LmmL7npLrnmoTnqbrpl7TngrlcbiAgICogQHBhcmFtIGpvaW50TmFtZSDnqbrpl7TngrnlkI3lrZdcbiAgICovXG4gIGZpbmRKb2ludChqb2ludE5hbWU6IHN0cmluZyk6IEpvaW50T2JqZWN0IHtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3MgYXMgUHJvY2VzcztcbiAgICBsZXQgcm8gPSBwcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxuICAgICAgcHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5qb2ludE5vZGUgYXMgRGVzaWduQmFzZU9iamVjdCxcbiAgICAgIGpvaW50TmFtZVxuICAgICk7XG4gICAgaWYgKHJvICYmIHJvIGluc3RhbmNlb2YgSm9pbnRPYmplY3QpIHtcbiAgICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuY2xlYXJBbGxTZWxlY3Rpb25BbmRIaWdobGlnaHQoKTtcbiAgICAgIHRoaXMudmlld2VyLmxvY2F0ZVdvcmxkKHJvLnNlZ21lbnQpO1xuICAgICAgdGhpcy52aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5zZWxlY3RBbmRIaWdobGlnaHRLZXlzKFxuICAgICAgICBbcm8uc2VnbWVudC5rZXldLFxuICAgICAgICBbcm8uc2VnbWVudC5wYXRoXVxuICAgICAgKTtcbiAgICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcblxuICAgICAgcmV0dXJuIHJvO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6YeN5ZG95ZCN56m66Ze054K5XG4gICAqIEBwYXJhbSBvcmlnaW5Kb2ludE5hbWUg5Y6f5aeL54K55ZCN56ewXG4gICAqIEBwYXJhbSBuZXdKb2ludE5hbWUg5paw55qE54K55ZCN56ewXG4gICAqIEByZXR1cm5zIOi/lOWbnumHjeWRveWQjeeahOe7k+aenOaPkOekulxuICAgKi9cbiAgcmVuYW1lSm9pbnQoXG4gICAgb3JpZ2luSm9pbnROYW1lOiBzdHJpbmcsXG4gICAgbmV3Sm9pbnROYW1lOiBzdHJpbmcsXG4gICAgdXNlTmV4dEF2YWxpYWJsZTogYm9vbGVhblxuICApIHtcbiAgICAvL1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuXG4gICAgbGV0IHJlc3VsdCA9IHt9O1xuICAgIGlmICghSm9pbnRPYmplY3QuY2hlY2tOYW1lbGVnYWwobmV3Sm9pbnROYW1lKSkge1xuICAgICAgcmVzdWx0ID0gMztcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgbGV0IGpvaW50Tm9kZSA9IHByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIuam9pbnROb2RlO1xuICAgIGxldCBybyA9IHByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICBqb2ludE5vZGUsXG4gICAgICBvcmlnaW5Kb2ludE5hbWVcbiAgICApO1xuICAgIGlmIChybyAmJiBybyBpbnN0YW5jZW9mIEpvaW50T2JqZWN0KSB7XG4gICAgICBpZiAoIXVzZU5leHRBdmFsaWFibGUpIHtcbiAgICAgICAgbGV0IG5ld05hbWVSTyA9IHByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICAgICAgam9pbnROb2RlLFxuICAgICAgICAgIG5ld0pvaW50TmFtZVxuICAgICAgICApO1xuICAgICAgICBpZiAobmV3TmFtZVJPKSB7XG4gICAgICAgICAgcmVzdWx0ID0gMyArIFwiLFwiICsgbmV3Sm9pbnROYW1lO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0pvaW50TmFtZSA9IHByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIubmFtZUFzY2VuZGluZ09yZGVyKFxuICAgICAgICAgIG5ld0pvaW50TmFtZSxcbiAgICAgICAgICAxLFxuICAgICAgICAgIHByb2Nlc3MubmFtZU1hcEpvaW50XG4gICAgICAgIClbMF07XG4gICAgICB9XG5cbiAgICAgIHJvLm5hbWUgPSBuZXdKb2ludE5hbWU7XG4gICAgICAvLyByby5pc0RyYXdOYW1lID0gdHJ1ZTtcbiAgICAgIHJvLnNldE5lZWRVcGRhdGUoKTtcbiAgICAgIC8vIHN1Y2Nlc3NmdWxcbiAgICAgIHJlc3VsdCA9IDIgKyBcIixcIiArIG9yaWdpbkpvaW50TmFtZSArIFwiLFwiICsgbmV3Sm9pbnROYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSAxICsgXCIsXCIgKyBvcmlnaW5Kb2ludE5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiDmn6Xmib7lt7LmmL7npLrnmoTmnYbku7ZcbiAgICogQHBhcmFtIG1lbWJlck5hbWUg5p2G5Lu25ZCN5a2XXG4gICAqL1xuICBmaW5kTWVtYmVyKG1lbWJlck5hbWU6IHN0cmluZyk6IE1lbWJlck9iamVjdCB7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzIGFzIFByb2Nlc3M7XG5cbiAgICBsZXQgcm8gPSBwcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxuICAgICAgcHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5tZW1iZXJOb2RlIGFzIERlc2lnbkJhc2VPYmplY3QsXG4gICAgICBtZW1iZXJOYW1lXG4gICAgKTtcbiAgICBpZiAocm8gJiYgcm8gaW5zdGFuY2VvZiBNZW1iZXJPYmplY3QpIHtcbiAgICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuY2xlYXJBbGxTZWxlY3Rpb25BbmRIaWdobGlnaHQoKTtcbiAgICAgIHRoaXMudmlld2VyLmxvY2F0ZVdvcmxkKHJvLnNlZ21lbnQpO1xuICAgICAgdGhpcy52aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5zZWxlY3RBbmRIaWdobGlnaHRLZXlzKFxuICAgICAgICBbcm8uc2VnbWVudC5rZXldLFxuICAgICAgICBbcm8uc2VnbWVudC5wYXRoXVxuICAgICAgKTtcbiAgICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcblxuICAgICAgcmV0dXJuIHJvO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6YCa6L+H5p2G5Lu25ZCN56ew57uE6auY5Lqu5p2G5Lu2XG4gICAqIEBwYXJhbSBuYW1lc1xuICAgKi9cbiAgaGlnaGxpZ2h0TWVtYmVyQnlOYW1lcyhuYW1lczogc3RyaW5nW10pIHtcbiAgICAvL1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuXG4gICAgbGV0IGtleXMgPSBbXTtcbiAgICBsZXQgcGF0aHMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBvYmogPSBwcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxuICAgICAgICBwcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLm1lbWJlck5vZGUsXG4gICAgICAgIG5hbWVzW2ldXG4gICAgICApO1xuXG4gICAgICBpZiAob2JqKSB7XG4gICAgICAgIGtleXMucHVzaChvYmouc2VnbWVudC5rZXkpO1xuICAgICAgICBwYXRocy5wdXNoKG9iai5zZWdtZW50LnBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coXCLmib7kuI3liLBcIiArIG5hbWVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlci5zZWxlY3Rpb25NYW5hZ2VyLmNsZWFyQWxsU2VsZWN0aW9uQW5kSGlnaGxpZ2h0KCk7XG4gICAgdGhpcy52aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5zZWxlY3RBbmRIaWdobGlnaHRLZXlzKGtleXMsIHBhdGhzKTtcbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICAvKipcbiAgICog6YCa6L+H5p2/5ZCN56ew57uE6auY5Lqu5p2/LlxuICAgKiBAcGFyYW0gbmFtZXNcbiAgICovXG4gIGhpZ2hsaWdodFBsYXRlQnlOYW1lcyhuYW1lczogc3RyaW5nW10pIHtcbiAgICAvL1xuICAgIGxldCBrZXlzID0gW107XG4gICAgbGV0IHBhdGhzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgb2JqID0gKFxuICAgICAgICB0aGlzLnZpZXdlci5wcm9jZXNzIGFzIFByb2Nlc3NcbiAgICAgICkuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICAgICh0aGlzLnZpZXdlci5wcm9jZXNzIGFzIFByb2Nlc3MpLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLnBsYXRlTm9kZSxcbiAgICAgICAgbmFtZXNbaV1cbiAgICAgICk7XG5cbiAgICAgIGlmIChvYmopIHtcbiAgICAgICAga2V5cy5wdXNoKG9iai5zZWdtZW50LmtleSk7XG4gICAgICAgIHBhdGhzLnB1c2gob2JqLnNlZ21lbnQucGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhcIuaJvuS4jeWIsFwiICsgbmFtZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuY2xlYXJBbGxTZWxlY3Rpb25BbmRIaWdobGlnaHQoKTtcbiAgICB0aGlzLnZpZXdlci5zZWxlY3Rpb25NYW5hZ2VyLnNlbGVjdEFuZEhpZ2hsaWdodEtleXMoa2V5cywgcGF0aHMpO1xuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmn6Xmib7lt7LmmL7npLrnmoTmnb9cbiAgICogQHBhcmFtIHBsYXRlTmFtZSDmnb/lkI3np7BcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRQbGF0ZShwbGF0ZU5hbWU6IHN0cmluZykge1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuXG4gICAgbGV0IHJvID0gcHJvY2Vzcy5maW5kQ2FlT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcbiAgICAgIHByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlIGFzIERlc2lnbkJhc2VPYmplY3QsXG4gICAgICBwbGF0ZU5hbWVcbiAgICApO1xuICAgIGlmIChybyAmJiBybyBpbnN0YW5jZW9mIFBsYXRlT2JqZWN0KSB7XG4gICAgICB0aGlzLnZpZXdlci5zZWxlY3Rpb25NYW5hZ2VyLmNsZWFyQWxsU2VsZWN0aW9uQW5kSGlnaGxpZ2h0KCk7XG4gICAgICB0aGlzLnZpZXdlci5sb2NhdGVXb3JsZChyby5zZWdtZW50KTtcbiAgICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuc2VsZWN0QW5kSGlnaGxpZ2h0S2V5cyhcbiAgICAgICAgW3JvLnNlZ21lbnQua2V5XSxcbiAgICAgICAgW3JvLnNlZ21lbnQucGF0aF1cbiAgICAgICk7XG4gICAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG5cbiAgICAgIHJldHVybiBybztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIOi/lOWbnkNBRee7k+aehOagkeeahOaVsOaNri5cbiAgLy8gICogQHJldHVybnNcbiAgLy8gICovXG4gIC8vIGdldFN0cnVjdHVyZVRyZWVEYXRhKCk6IHN0cmluZyB7XG4gIC8vICAgLy9cbiAgLy8gICBsZXQgcm9vdE5vZGUgPSAodGhpcy52aWV3ZXIgYXMgVmlld2VyKS5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyXG4gIC8vICAgICAucm9vdE5vZGU7XG4gIC8vICAgbGV0IG1vZGVsRGF0YSA9IEpTT04uc3RyaW5naWZ5KFxuICAvLyAgICAgdGhpcy52aWV3ZXIucHJvY2Vzcy5wZXJzaXN0ZW5jZU1hbmFnZXIuc2F2ZShyb290Tm9kZSlcbiAgLy8gICApO1xuICAvLyAgIHJldHVybiBtb2RlbERhdGE7XG4gIC8vIH1cblxuICAvKipcbiAgICog6L+U5ZueQ0FF57uT5p6E5qCR55qE5pWw5o2uLlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0U3RydWN0dXJlVHJlZURhdGEoKSB7XG4gICAgLy9cbiAgICBsZXQgcm9vdE5vZGUgPSAodGhpcy52aWV3ZXIgYXMgVmlld2VyKS5zdHJ1Y3R1cmVUcmVlTWFuYWdlci5yb290Tm9kZTtcbiAgICByZXR1cm4gcm9vdE5vZGU7XG4gIH1cblxuICBnZXRNZW1iZXJHcnVwcygpIHtcbiAgICAvLyDmnYbku7bmiKrpnaLnu4TlkI3lrZfliJfooahcbiAgICBsZXQgZ3J1cE5hbWVMaXN0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGxldCBncnVwT2JqZWN0R3JvdXAgPVxuICAgICAgdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFwi5p2G5Lu25oiq6Z2i57uEXCIpO1xuICAgIGlmIChncnVwT2JqZWN0R3JvdXApIHtcbiAgICAgIGdydXBPYmplY3RHcm91cC5jaGlsZE9iamVjdHMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGdydXBOYW1lTGlzdC5wdXNoKGl0ZW0ubmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3J1cE5hbWVMaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIOe7k+aehOagkea3u+WKoOiKgueCuS5cbiAgICovXG4gIGFkZFN0cnVjdHVyZU5vZGUocGFyZW50OiBMb25nYW4uUmVuZGVyT2JqZWN0LCBybzogRGVzaWduQmFzZU9iamVjdCkge1xuICAgIHRoaXMudmlld2VyLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KHBhcmVudCwgcm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIOe7k+aehOagkea3u+WKoOiKgueCuS5cbiAgICovXG4gIHJlbW92ZVN0cnVjdHVyZU5vZGUocm86IERlc2lnbkJhc2VPYmplY3QpIHtcbiAgICB0aGlzLnZpZXdlci5wcm9jZXNzLnJlbW92ZVJlbmRlck9iamVjdChybyk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu65rW355Sf54mp5Y6a5bqm5oyJ6auY56iL5YiG6Imy5a+56LGhXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBjcmVhdGVNZ3Jvdk9iamVjdCgpIHtcbiAgICBsZXQgbWdyb3YgPSBuZXcgTWdyb3ZPYmplY3QoKTtcbiAgICByZXR1cm4gbWdyb3Y7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu66IWQ6JqA5L2Z6YeP5oyJ6auY56iL5YiG6Imy5a+56LGhXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBjcmVhdGVDb3Jyek9iamVjdCgpIHtcbiAgICBsZXQgY29ycnogPSBuZXcgQ29ycnpPYmplY3QoKTtcbiAgICByZXR1cm4gY29ycno7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQ2hpbGRPYmplY3RzKHZpZXdlcjogVmlld2VyLCBybzogTG9uZ2FuLlJlbmRlck9iamVjdCkge1xuICAgIGlmIChybykge1xuICAgICAgd2hpbGUgKHJvLmNoaWxkT2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZpZXdlci5wcm9jZXNzLnJlbW92ZVJlbmRlck9iamVjdChyby5jaGlsZE9iamVjdHNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIOa4hemZpOWcuuaZr+aooeWei+aVsOaNrlxuICBjbGVhckNhZVJlbmRlck9iamVjdCh2aWV3ZXI6IFZpZXdlcikge1xuICAgIHRoaXMuY2xlYXJDaGlsZE9iamVjdHMoXG4gICAgICB2aWV3ZXIsXG4gICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5tZW1iZXJOb2RlXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyQ2hpbGRPYmplY3RzKFxuICAgICAgdmlld2VyLFxuICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyQ2hpbGRPYmplY3RzKFxuICAgICAgdmlld2VyLFxuICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIuam9pbnROb2RlXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyQ2hpbGRPYmplY3RzKFxuICAgICAgdmlld2VyLFxuICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIuZ3J1cE5vZGVcbiAgICApO1xuICAgIHRoaXMuY2xlYXJDaGlsZE9iamVjdHMoXG4gICAgICB2aWV3ZXIsXG4gICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5wR3J1cE5vZGVcbiAgICApO1xuICAgIHRoaXMuY2xlYXJDaGlsZE9iamVjdHMoXG4gICAgICB2aWV3ZXIsXG4gICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5zZWN0aW9uSW5zTm9kZVxuICAgICk7XG4gICAgdGhpcy5jbGVhckNoaWxkT2JqZWN0cyhcbiAgICAgIHZpZXdlcixcbiAgICAgIHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLnNhY2lucE5vZGVcbiAgICApO1xuICAgIHRoaXMuY2xlYXJDaGlsZE9iamVjdHMoXG4gICAgICB2aWV3ZXIsXG4gICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5zZWFzdGF0ZU5vZGVcbiAgICApO1xuICAgIHRoaXMuY2xlYXJDaGlsZE9iamVjdHMoXG4gICAgICB2aWV3ZXIsXG4gICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5waWxlTm9kZVxuICAgICk7XG4gICAgdGhpcy5jbGVhckNoaWxkT2JqZWN0cyhcbiAgICAgIHZpZXdlcixcbiAgICAgIHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLnBsR3J1cE5vZGVcbiAgICApO1xuICAgIHRoaXMuY2xlYXJDaGlsZE9iamVjdHMoXG4gICAgICB2aWV3ZXIsXG4gICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5wb3N0UmVzdWx0Tm9kZVxuICAgICk7XG4gIH1cblxuICAvLyDmjInmiKrpnaLnu4TlkI3liIboibLlvIDlhbNcbiAgcHJpdmF0ZSBjb2xvckRpdlN3aXRjaF9HcnVwTmFtZShvbl9vZmY6IGJvb2xlYW4sIGlzVXBkYXRlID0gdHJ1ZSkge1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzO1xuXG4gICAgbGV0IGNvbG9yRGl2aWRlUk8gPSBwcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWUoXG4gICAgICBcIuaMieaIqumdoue7hOWPt+WIhuiJslwiXG4gICAgKSBhcyBDdXRsaW5lR3J1cElkT2JqZWN0O1xuICAgIGlmIChjb2xvckRpdmlkZVJPKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbG9yRGl2aWRlUk8uY2hpbGRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBvYmogPSBjb2xvckRpdmlkZVJPLmNoaWxkT2JqZWN0c1tpXSBhcyBDb2xvckRpdkdydXBJZE9iamVjdDtcblxuICAgICAgICBpZiAob2JqLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcbiAgICAgICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgICAgICBvYmouYWN0aXZlKHZpZXdlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9iai5pbmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgIGxldCBjdXRsaW5lID0ge307XG5cbiAgICAgICAgaWYgKGNvbG9yRGl2aWRlUk8pIHtcbiAgICAgICAgICBMZWdlbmRNYW5hZ2UuZGVzdG9yeSh0aGlzLmVsZW1lbnRLZXkpO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiXCIpO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwge30pO1xuICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGN1dGxpbmUgPSBjb2xvckRpdmlkZVJPLmdldEN1dGxpbmUoKTtcbiAgICAgICAgICBsZXQgY29tcG9uZW50ID0gTGVnZW5kTWFuYWdlLmNyZWF0ZShcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudEtleSxcbiAgICAgICAgICAgIGN1dGxpbmUsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0aGlzLnNob3dFbmdsaXNoVGV4dCkge1xuICAgICAgICAgICAgY29tcG9uZW50LnRpdGxlID0gXCJDb2xvcmVkIEJ5IE1lbWJlciBHcm91cHNcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5sZWZ0VGV4dCA9IFwiQ29sb3JcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yaWdodFRleHQgPSBcIk1lbWJlciBHcm91cHNcIjtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiQ29sb3JlZCBCeSBNZW1iZXIgR3JvdXBzXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kTGVmdFRleHRcIiwgXCJDb2xvclwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIk1lbWJlciBHcm91cHNcIik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC50aXRsZSA9IFwi5oiq6Z2i57uE5YiG6ImyXCI7XG4gICAgICAgICAgICBjb21wb25lbnQubGVmdFRleHQgPSBcIuminOiJslwiO1xuICAgICAgICAgICAgY29tcG9uZW50LnJpZ2h0VGV4dCA9IFwi5oiq6Z2i57uE5ZCNXCI7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIuaIqumdoue7hOWIhuiJslwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZExlZnRUZXh0XCIsIFwi6aKc6ImyXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwi5oiq6Z2i57uE5ZCNXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyAgIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFwiLCBjdXRsaW5lKTtcbiAgICAgICAgICAvLyB9LCAyMCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIExlZ2VuZE1hbmFnZS5kZXN0b3J5KHRoaXMuZWxlbWVudEtleSk7XG4gICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFwiLCB7fSk7XG4gICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiXCIpO1xuICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCJcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKGlzVXBkYXRlKVxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29sb3JEaXZTd2l0Y2hfR3J1cFRoaWNrbmVzcyhvbl9vZmY6IGJvb2xlYW4sIGlzVXBkYXRlID0gdHJ1ZSkge1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzO1xuXG4gICAgbGV0IGNvbG9yRGl2aWRlUk8gPSBwcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWUoXG4gICAgICBcIuaMieaIqumdouWjgeWOmuWIhuiJslwiXG4gICAgKSBhcyBDdXRsaW5lR3J1cFRoaWNrbmVzc09iamVjdDtcbiAgICBpZiAoY29sb3JEaXZpZGVSTykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xvckRpdmlkZVJPLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgb2JqID0gY29sb3JEaXZpZGVSTy5jaGlsZE9iamVjdHNbaV0gYXMgQ29sb3JEaXZHcnVwVGhpY2tuZXNzT2JqZWN0O1xuICAgICAgICBpZiAob2JqLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcbiAgICAgICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgICAgICBvYmouYWN0aXZlKHZpZXdlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9iai5pbmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgIGxldCBjdXRsaW5lID0ge307XG4gICAgICAgIGlmIChjb2xvckRpdmlkZVJPKSB7XG4gICAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwge30pO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiXCIpO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjdXRsaW5lID0gY29sb3JEaXZpZGVSTy5nZXRDdXRsaW5lKCk7XG4gICAgICAgICAgbGV0IGNvbXBvbmVudCA9IExlZ2VuZE1hbmFnZS5jcmVhdGUoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRLZXksXG4gICAgICAgICAgICBjdXRsaW5lLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5zaG93RW5nbGlzaFRleHQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC50aXRsZSA9IFwiQ29sb3JlZCBCeSBUaGlja25lc3NcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5sZWZ0VGV4dCA9IFwiQ29sb3JcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yaWdodFRleHQgPSBcIlRoaWNrbmVzcyhjbSlcIjtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiQ29sb3JlZCBCeSBUaGlja25lc3NcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRMZWZ0VGV4dFwiLCBcIkNvbG9yXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwiVGhpY2tuZXNzKGNtKVwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29tcG9uZW50LnRpdGxlID0gXCLlo4HljprliIboibJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5sZWZ0VGV4dCA9IFwi6aKc6ImyXCI7XG4gICAgICAgICAgICBjb21wb25lbnQucmlnaHRUZXh0ID0gXCLlo4HljpooY20pXCI7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIuWjgeWOmuWIhuiJslwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZExlZnRUZXh0XCIsIFwi6aKc6ImyXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwi5aOB5Y6aKGNtKVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIGN1dGxpbmUpO1xuICAgICAgICAgIC8vIH0sIDIwKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIHt9KTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCJcIik7XG4gICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoaXNVcGRhdGUpXG4gICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xvcmREaXZTd2l0Y2hfTWdyb3Yob25fb2ZmOiBib29sZWFuLCBpc1VwZGF0ZSA9IHRydWUpIHtcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXIgYXMgVmlld2VyO1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcztcblxuICAgIGxldCBjb2xvckRpdmlkZVJPID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFxuICAgICAgXCLmtbfnlJ/nianljprluqbmjInpq5jnqIvliIboibJcIlxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcbiAgICBpZiAoY29sb3JEaXZpZGVSTyAmJiBjb2xvckRpdmlkZVJPLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcbiAgICAgIGxldCBvYmogPSBjb2xvckRpdmlkZVJPIGFzIENvbG9yRGl2TUdST1ZPYmplY3Q7XG5cbiAgICAgIGlmIChvbl9vZmYpIHtcbiAgICAgICAgb2JqLmFjdGl2ZSh2aWV3ZXIpO1xuXG4gICAgICAgIGxldCBjdXRsaW5lID0ge307XG4gICAgICAgIGlmIChjb2xvckRpdmlkZVJPKSB7XG4gICAgICAgICAgbGV0IG9iaiA9IGNvbG9yRGl2aWRlUk8gYXMgQ29sb3JEaXZNR1JPVk9iamVjdDtcbiAgICAgICAgICBsZXQgdGhpY2tuZXNzSW5kZXggPSAwO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLmhlaWdodExpc3QubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgIGxldCBib3R0b20gPSBvYmouaGVpZ2h0TGlzdFtpXTtcbiAgICAgICAgICAgIGxldCB0b3AgPSBvYmouaGVpZ2h0TGlzdFtpICsgMV07XG4gICAgICAgICAgICBsZXQga2V5ID0gYm90dG9tICsgXCJ+XCIgKyB0b3AgKyBcIu+8mlwiICsgb2JqLnRoaWNrbmVzc1t0aGlja25lc3NJbmRleF07XG5cbiAgICAgICAgICAgIGxldCBjb2xvciA9IFtcbiAgICAgICAgICAgICAgb2JqLmNvbG9yWyhpIC8gMikgKiA0ICsgMF0sXG4gICAgICAgICAgICAgIG9iai5jb2xvclsoaSAvIDIpICogNCArIDFdLFxuICAgICAgICAgICAgICBvYmouY29sb3JbKGkgLyAyKSAqIDQgKyAyXSxcbiAgICAgICAgICAgICAgb2JqLmNvbG9yWyhpIC8gMikgKiA0ICsgM10sXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBpZiAoY29sb3JbMF0gPT09IC0xICYmIGNvbG9yWzFdID09PSAtMSAmJiBjb2xvclsyXSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb2xvclswXSAqPSAyNTU7XG4gICAgICAgICAgICBjb2xvclsxXSAqPSAyNTU7XG4gICAgICAgICAgICBjb2xvclsyXSAqPSAyNTU7XG5cbiAgICAgICAgICAgIGN1dGxpbmVba2V5XSA9IGNvbG9yO1xuICAgICAgICAgICAgdGhpY2tuZXNzSW5kZXgrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIHt9KTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIlwiKTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCJcIik7XG4gICAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcbiAgICAgICAgICBsZXQgY29tcG9uZW50ID0gTGVnZW5kTWFuYWdlLmNyZWF0ZShcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudEtleSxcbiAgICAgICAgICAgIGN1dGxpbmUsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnNob3dFbmdsaXNoVGV4dCkge1xuICAgICAgICAgICAgY29tcG9uZW50LnRpdGxlID0gXCJNYXJpbmUgR3Jvd3RoIFpvbmVzXCI7XG4gICAgICAgICAgICBjb21wb25lbnQubGVmdFRleHQgPSBcIkNvbG9yXCI7XG4gICAgICAgICAgICBjb21wb25lbnQucmlnaHRUZXh0ID0gXCJIZWlnaHQgUmFuZ2UobSk6IFRoaWNrbmVzcyhtbSlcIjtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiTWFyaW5lIEdyb3d0aCBab25lc1wiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZExlZnRUZXh0XCIsIFwiQ29sb3JcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXG4gICAgICAgICAgICAvLyAgIFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsXG4gICAgICAgICAgICAvLyAgIFwiSGVpZ2h0IFJhbmdlKG0pOiBUaGlja25lc3MobW0pXCJcbiAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwi5rW355Sf54mp5Y6a5bqm5YiG6ImyXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kTGVmdFRleHRcIiwgXCLpopzoibJcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCLpq5jluqbojIPlm7QobSk6IOWOmuW6pihtbSlcIik7XG4gICAgICAgICAgICBjb21wb25lbnQudGl0bGUgPSBcIua1t+eUn+eJqeWOmuW6puWIhuiJslwiO1xuICAgICAgICAgICAgY29tcG9uZW50LmxlZnRUZXh0ID0gXCLpopzoibJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yaWdodFRleHQgPSBcIumrmOW6puiMg+WbtChtKTog5Y6a5bqmKG1tKVwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwgY3V0bGluZSk7XG4gICAgICAgICAgLy8gfSwgNTApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmouaW5hY3RpdmUodmlld2VyKTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIHt9KTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCJcIik7XG4gICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoaXNVcGRhdGUpXG4gICAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbG9yZERpdlN3aXRjaF9Db3Jyeihvbl9vZmY6IGJvb2xlYW4sIGlzVXBkYXRlID0gdHJ1ZSkge1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzO1xuXG4gICAgbGV0IGNvbG9yRGl2aWRlUk8gPSBwcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWUoXG4gICAgICBcIuiFkOiagOS9memHj+aMiemrmOeoi+WIhuiJslwiXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xuICAgIGlmIChjb2xvckRpdmlkZVJPICYmIGNvbG9yRGl2aWRlUk8uY2hlY2tCdXNpbmVzc1N0YXRlSXNBY3RpdmUoKSkge1xuICAgICAgbGV0IG9iaiA9IGNvbG9yRGl2aWRlUk8gYXMgQ29sb3JEaXZDT1JSWk9iamVjdDtcbiAgICAgIGlmIChvbl9vZmYpIHtcbiAgICAgICAgb2JqLmFjdGl2ZSh2aWV3ZXIpO1xuXG4gICAgICAgIGxldCBjdXRsaW5lID0ge307XG4gICAgICAgIGlmIChjb2xvckRpdmlkZVJPKSB7XG4gICAgICAgICAgbGV0IG9iaiA9IGNvbG9yRGl2aWRlUk8gYXMgQ29sb3JEaXZDT1JSWk9iamVjdDtcbiAgICAgICAgICBsZXQgdGhpY2tuZXNzSW5kZXggPSAwO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLmhlaWdodExpc3QubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgIGxldCBib3R0b20gPSBvYmouaGVpZ2h0TGlzdFtpXTtcbiAgICAgICAgICAgIGxldCB0b3AgPSBvYmouaGVpZ2h0TGlzdFtpICsgMV07XG5cbiAgICAgICAgICAgIGxldCBrZXlMZXZlbEJvdHRvbSA9IG9iai5jb3Jyekxpc3RbdGhpY2tuZXNzSW5kZXhdLnRoaWNrbmVzc0JvdHRvbTtcbiAgICAgICAgICAgIGlmICgha2V5TGV2ZWxCb3R0b20pIHtcbiAgICAgICAgICAgICAga2V5TGV2ZWxCb3R0b20gPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQga2V5TGV2ZWxUb3AgPSBvYmouY29ycnpMaXN0W3RoaWNrbmVzc0luZGV4XS50aGlja25lc3NUb3A7XG4gICAgICAgICAgICBpZiAoIWtleUxldmVsVG9wKSB7XG4gICAgICAgICAgICAgIGtleUxldmVsVG9wID0gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGtleSA9XG4gICAgICAgICAgICAgIGJvdHRvbSArIFwiflwiICsgdG9wICsgXCLvvJpcIiArIGtleUxldmVsQm90dG9tICsgXCJ+XCIgKyBrZXlMZXZlbFRvcDtcblxuICAgICAgICAgICAgbGV0IGNvbG9yID0gW1xuICAgICAgICAgICAgICBvYmouY29sb3JbKGkgLyAyKSAqIDQgKyAwXSxcbiAgICAgICAgICAgICAgb2JqLmNvbG9yWyhpIC8gMikgKiA0ICsgMV0sXG4gICAgICAgICAgICAgIG9iai5jb2xvclsoaSAvIDIpICogNCArIDJdLFxuICAgICAgICAgICAgICBvYmouY29sb3JbKGkgLyAyKSAqIDQgKyAzXSxcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIGlmIChjb2xvclswXSA9PT0gLTEgJiYgY29sb3JbMV0gPT09IC0xICYmIGNvbG9yWzJdID09PSAtMSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbG9yWzBdICo9IDI1NTtcbiAgICAgICAgICAgIGNvbG9yWzFdICo9IDI1NTtcbiAgICAgICAgICAgIGNvbG9yWzJdICo9IDI1NTtcblxuICAgICAgICAgICAgY3V0bGluZVtrZXldID0gY29sb3I7XG4gICAgICAgICAgICB0aGlja25lc3NJbmRleCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBMZWdlbmRNYW5hZ2UuZGVzdG9yeSh0aGlzLmVsZW1lbnRLZXkpO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFwiLCB7fSk7XG4gICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCJcIik7XG4gICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwiXCIpO1xuICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGxldCBjb21wb25lbnQgPSBMZWdlbmRNYW5hZ2UuY3JlYXRlKFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50S2V5LFxuICAgICAgICAgICAgY3V0bGluZSxcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0VuZ2xpc2hUZXh0KSB7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIkNvcnJvc2lvbiBab25lc1wiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZExlZnRUZXh0XCIsIFwiQ29sb3JcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXG4gICAgICAgICAgICAvLyAgIFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsXG4gICAgICAgICAgICAvLyAgIFwiSGVpZ2h0IFJhbmdlKG0pOiBUaGlja25lc3MobW0pXCJcbiAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICBjb21wb25lbnQudGl0bGUgPSBcIkNvcnJvc2lvbiBab25lc1wiO1xuICAgICAgICAgICAgY29tcG9uZW50LmxlZnRUZXh0ID0gXCJDb2xvclwiO1xuICAgICAgICAgICAgY29tcG9uZW50LnJpZ2h0VGV4dCA9IFwiSGVpZ2h0IFJhbmdlKG0pOiBUaGlja25lc3MobW0pXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwi6IWQ6JqA5L2Z6YeP5YiG6ImyXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kTGVmdFRleHRcIiwgXCLpopzoibJcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCLpq5jluqbojIPlm7QobSk6IOWOmuW6pihtbSlcIik7XG4gICAgICAgICAgICBjb21wb25lbnQudGl0bGUgPSBcIuiFkOiagOS9memHj+WIhuiJslwiO1xuICAgICAgICAgICAgY29tcG9uZW50LmxlZnRUZXh0ID0gXCLpopzoibJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yaWdodFRleHQgPSBcIuWjgemrmOW6puiMg+WbtChtKTog5Y6a5bqmKG1tKVwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwgY3V0bGluZSk7XG4gICAgICAgICAgLy8gfSwgMjApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmouaW5hY3RpdmUodmlld2VyKTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIHt9KTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCJcIik7XG4gICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoaXNVcGRhdGUpXG4gICAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbG9yRGl2U3dpdGNoX0NvbXBvbmVudEdyb3VwKG9uX29mZjogYm9vbGVhbiwgaXNVcGRhdGUgPSB0cnVlKSB7XG4gICAgbGV0IHZpZXdlciA9IHRoaXMudmlld2VyIGFzIFZpZXdlcjtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3M7XG5cbiAgICBsZXQgY29tcG9uZW50R3JvdXBzID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFxuICAgICAgXCLmnoTku7bliIbnu4TliIboibJcIlxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcbiAgICBpZiAoY29tcG9uZW50R3JvdXBzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBvbmVudEdyb3Vwcy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG9iaiA9IGNvbXBvbmVudEdyb3Vwcy5jaGlsZE9iamVjdHNbXG4gICAgICAgICAgaVxuICAgICAgICBdIGFzIENvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3Q7XG5cbiAgICAgICAgaWYgKG9iai5jaGVja0J1c2luZXNzU3RhdGVJc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgdGhpcy5zZXRBbGxDb21wb25lbnRHcm91cFZpc2libGUob2JqLm5hbWUpO1xuXG4gICAgICAgICAgaWYgKG9uX29mZikge1xuICAgICAgICAgICAgb2JqLmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmouaW5hY3RpdmUodmlld2VyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9uX29mZikge1xuICAgICAgICBsZXQgY3V0bGluZSA9IHt9O1xuICAgICAgICBpZiAoY29tcG9uZW50R3JvdXBzKSB7XG4gICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIHt9KTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIlwiKTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCJcIik7XG4gICAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcblxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcG9uZW50R3JvdXBzLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG9iaiA9IGNvbXBvbmVudEdyb3Vwcy5jaGlsZE9iamVjdHNbXG4gICAgICAgICAgICAgIGlcbiAgICAgICAgICAgIF0gYXMgQ29sb3JEaXZDb21wb25lbnRHcm91cE9iamVjdDtcbiAgICAgICAgICAgIGlmIChvYmouY2hlY2tCdXNpbmVzc1N0YXRlSXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgICBsZXQgY29sb3IgPSBMb25nYW4uZGVlcENsb25lKG9iai5jb2xvcik7XG4gICAgICAgICAgICAgIGN1dGxpbmVbb2JqLm5hbWVdID0gY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBjb21wb25lbnQgPSBMZWdlbmRNYW5hZ2UuY3JlYXRlKFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50S2V5LFxuICAgICAgICAgICAgY3V0bGluZSxcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0VuZ2xpc2hUZXh0KSB7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIlNldCBDb2xvcnNcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRMZWZ0VGV4dFwiLCBcIkNvbG9yXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwiU2V0IE5hbWVcIik7XG4gICAgICAgICAgICBjb21wb25lbnQudGl0bGUgPSBcIlNldCBDb2xvcnNcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5sZWZ0VGV4dCA9IFwiQ29sb3JcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yaWdodFRleHQgPSBcIlNldCBOYW1lXCI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwi6Ieq5a6a5LmJ5p6E5Lu25YiG57uE5YiG6ImyXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kTGVmdFRleHRcIiwgXCLpopzoibJcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCLliIbnu4TlkI1cIik7XG4gICAgICAgICAgICBjb21wb25lbnQudGl0bGUgPSBcIuiHquWumuS5ieaehOS7tuWIhue7hOWIhuiJslwiO1xuICAgICAgICAgICAgY29tcG9uZW50LmxlZnRUZXh0ID0gXCLpopzoibJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yaWdodFRleHQgPSBcIuWIhue7hOWQjVwiO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFwiLCBjdXRsaW5lKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIHt9KTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCJcIik7XG4gICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoaXNVcGRhdGUpXG4gICAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIHNldEFsbENvbXBvbmVudEdyb3VwVmlzaWJsZShncm91cE5hbWU6IHN0cmluZykge1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzO1xuXG4gICAgbGV0IGNvbXBvbmVudEdyb3VwcyA9IHByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZShcbiAgICAgIFwi5p6E5Lu25YiG57uE5YiG6ImyXCJcbiAgICApIGFzIERlc2lnbkJhc2VPYmplY3Q7XG4gICAgaWYgKGNvbXBvbmVudEdyb3Vwcykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21wb25lbnRHcm91cHMuY2hpbGRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBvYmogPSBjb21wb25lbnRHcm91cHMuY2hpbGRPYmplY3RzW1xuICAgICAgICAgIGlcbiAgICAgICAgXSBhcyBDb2xvckRpdkNvbXBvbmVudEdyb3VwT2JqZWN0O1xuXG4gICAgICAgIGlmIChvYmoubmFtZSA9PT0gZ3JvdXBOYW1lKSB7XG4gICAgICAgICAgaWYgKG9iai5jaGVja0J1c2luZXNzU3RhdGVJc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICBvYmouaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIG9iai5idXNpbmVzc1N0YXRlID0gQnVzaW5lc3NTdGF0ZS5FZGl0aW5nO1xuICAgICAgICAgICAgb2JqLnNldENoaWxkVmlzaWJsZSh2aWV3ZXIsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDliIboibLmmL7npLrlvIDlhbPvvIzovpPlhaXnmoTliIboibLmlYjmnpzotbfmlYjvvIzlhbbkvZnliIboibLmlYjmnpzlhbPpl60uXG4gICAqIEBwYXJhbSBzdGF0ZSDmnprkuL7nsbvlnotcbiAgICovXG4gIGNvbG9yU3dpdGNoKHN0YXRlOiBTd2l0Y2hDb2xvckRpdmlkZSwgaXNVcGRhdGUgPSB0cnVlKSB7XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSBTd2l0Y2hDb2xvckRpdmlkZS5HcnVwTmFtZTpcbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9HcnVwVGhpY2tuZXNzKGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX01ncm92KGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX0NvcnJ6KGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfQ29tcG9uZW50R3JvdXAoZmFsc2UsIGlzVXBkYXRlKTtcblxuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0dydXBOYW1lKHRydWUsIGlzVXBkYXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN3aXRjaENvbG9yRGl2aWRlLkdydXBUaGlja25lc3M6XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfR3J1cE5hbWUoZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvcmREaXZTd2l0Y2hfTWdyb3YoZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvcmREaXZTd2l0Y2hfQ29ycnooZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9Db21wb25lbnRHcm91cChmYWxzZSwgaXNVcGRhdGUpO1xuXG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfR3J1cFRoaWNrbmVzcyh0cnVlLCBpc1VwZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTd2l0Y2hDb2xvckRpdmlkZS5NZ3JvdjpcbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9HcnVwTmFtZShmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0dydXBUaGlja25lc3MoZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvcmREaXZTd2l0Y2hfQ29ycnooZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9Db21wb25lbnRHcm91cChmYWxzZSwgaXNVcGRhdGUpO1xuXG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX01ncm92KHRydWUsIGlzVXBkYXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN3aXRjaENvbG9yRGl2aWRlLkNvcnJ6OlxuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0dydXBOYW1lKGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfR3J1cFRoaWNrbmVzcyhmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yZERpdlN3aXRjaF9NZ3JvdihmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0NvbXBvbmVudEdyb3VwKGZhbHNlLCBpc1VwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5jb2xvcmREaXZTd2l0Y2hfQ29ycnoodHJ1ZSwgaXNVcGRhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3dpdGNoQ29sb3JEaXZpZGUuQ29tcG9uZW50R3JvdXA6XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfR3J1cE5hbWUoZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9HcnVwVGhpY2tuZXNzKGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX01ncm92KGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX0NvcnJ6KGZhbHNlLCBpc1VwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9Db21wb25lbnRHcm91cCh0cnVlLCBpc1VwZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTd2l0Y2hDb2xvckRpdmlkZS5DYW5jZWw6XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfR3J1cE5hbWUoZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9HcnVwVGhpY2tuZXNzKGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX01ncm92KGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX0NvcnJ6KGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfQ29tcG9uZW50R3JvdXAoZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOafkOS4quWIhue7hOiuvue9ruS6huminOiJsuaXtu+8jOWNleeLrOaYvuekui/pmpDol4/or6XliIbnu4TliIboibLnmoTmlYjmnpxcbiAgICogQHBhcmFtIGdyb3VwTmFtZVxuICAgKiBAcGFyYW0gb25fb2ZmXG4gICAqL1xuICBjb21wb25lbnRHcm91cENvbG9yVmlzaWJsZVN3aXRjaChncm91cE5hbWU6IHN0cmluZywgb25fb2ZmOiBib29sZWFuKSB7XG4gICAgbGV0IHZpZXdlciA9IHRoaXMudmlld2VyIGFzIFZpZXdlcjtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3M7XG5cbiAgICBsZXQgY29tcG9uZW50R3JvdXBzID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFxuICAgICAgXCLmnoTku7bliIbnu4TliIboibJcIlxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcbiAgICBpZiAoY29tcG9uZW50R3JvdXBzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBvbmVudEdyb3Vwcy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG9iaiA9IGNvbXBvbmVudEdyb3Vwcy5jaGlsZE9iamVjdHNbXG4gICAgICAgICAgaVxuICAgICAgICBdIGFzIENvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3Q7XG5cbiAgICAgICAgaWYgKG9iai5uYW1lID09PSBncm91cE5hbWUpIHtcbiAgICAgICAgICBpZiAob2JqLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIG9iai5pc1Zpc2libGUgPSBvbl9vZmY7XG4gICAgICAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuRWRpdGluZztcbiAgICAgICAgICAgIGlmIChvbl9vZmYpIHtcbiAgICAgICAgICAgICAgb2JqLmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb2JqLmluYWN0aXZlKHZpZXdlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvYmouc2V0Q2hpbGRWaXNpYmxlKHZpZXdlciwgb25fb2ZmKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICB3YXZlU3dpdGNoKG9uX29mZjogYm9vbGVhbikge1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuICAgIGxldCB3YXZlID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFwi5rOi6Z2iXCIpIGFzIFdhdmVPYmplY3Q7XG4gICAgaWYgKCF3YXZlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRXYXZlSXRlbU9iamVjdCA9IHByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICB3YXZlLFxuICAgICAgdGhpcy5jdXJyZW50U2VsZWN0V2F2ZUl0ZW1OYW1lXG4gICAgKSBhcyBXYXZlSXRlbU9iamVjdDtcbiAgICBpZiAoY3VycmVudFdhdmVJdGVtT2JqZWN0KSB7XG4gICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgIGN1cnJlbnRXYXZlSXRlbU9iamVjdC5hY3RpdmUodGhpcy52aWV3ZXIgYXMgVmlld2VyKTtcbiAgICAgICAgc3RvcmUuc3RhdGUuaW5mbyA9IGN1cnJlbnRXYXZlSXRlbU9iamVjdC50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudFdhdmVJdGVtT2JqZWN0LmluYWN0aXZlKHRoaXMudmlld2VyIGFzIFZpZXdlcik7XG4gICAgICAgIHN0b3JlLnN0YXRlLmluZm8gPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdG9yZS5zdGF0ZS5pbmZvID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICAvKipcbiAgICog5Zyf5bGC5byA5YWz5o6l5Y+jXG4gICAqIEBwYXJhbSBvbl9vZmZcbiAgICogQHJldHVybnNcbiAgICovXG4gIGJvcmVob2xlU3dpdGNoKG9uX29mZjogYm9vbGVhbikge1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuICAgIGxldCBwYXJlbnROb2RlID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFxuICAgICAgXCLlnJ/lsYLlkozms6LpnaJcIlxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcbiAgICBpZiAoIXBhcmVudE5vZGUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgbGV0IGVsZW1lbnRLZXkgPSBcInNvaWxkXCI7XG4gICAgaWYgKHBhcmVudE5vZGUgJiYgb25fb2ZmKSB7XG4gICAgICB0aGlzLmJvcmVob2xlQ3V0TGluZURpc3BsYXkgPSB0cnVlO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJlbnROb2RlLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAocGFyZW50Tm9kZS5jaGlsZE9iamVjdHNbaV0gYXMgQm9yZWhvbGVzT2JqZWN0KS5hY3RpdmUoKTtcbiAgICAgIH1cblxuICAgICAgTGVnZW5kTWFuYWdlLmNyZWF0ZShcbiAgICAgICAgZWxlbWVudEtleSxcbiAgICAgICAgdGhpcy5ib3JlaG9sZUxlZ2VuZCxcbiAgICAgICAgXCLlnJ/lsYLmlbDmja5cIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCLlnJ/lsYLlkI1cIixcbiAgICAgICAge1xuICAgICAgICAgIHJpZ2h0OiBcIjBweFwiLFxuICAgICAgICAgIGJvdHRvbTogXCIwcHhcIixcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ib3JlaG9sZUN1dExpbmVEaXNwbGF5ID0gZmFsc2U7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50Tm9kZS5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgKHBhcmVudE5vZGUuY2hpbGRPYmplY3RzW2ldIGFzIEJvcmVob2xlc09iamVjdCkuaW5hY3RpdmUoKTtcbiAgICAgIH1cbiAgICAgIExlZ2VuZE1hbmFnZS5kZXN0b3J5KGVsZW1lbnRLZXkpO1xuICAgIH1cblxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmo4Dmn6XmmK/lkKbmnInmoanlnJ/mlbDmja5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGNoZWNrUFNJKCkge1xuICAgIGxldCBleGlzdCA9IGZhbHNlO1xuICAgIGlmICghKHRoaXMudmlld2VyIGFzIFZpZXdlcikuZGF0UmVhZGVyTWFuYWdlci5wc2lvcHQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ5qGp5Zyf5pWw5o2uLlwiKTtcbiAgICAgIGV4aXN0ID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhpc3Q7XG4gIH1cblxuICAvKipcbiAgICog5qOA5p+l5piv5ZCm5a2Y5Zyo5rW35Ya15pWw5o2uXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBjaGVja1NlYWlucCgpIHtcbiAgICBsZXQgZXhpc3QgPSBmYWxzZTtcbiAgICBsZXQgcm8gPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeVR5cGUoXCJTZWFzdGF0ZUxkb3B0XCIpO1xuICAgIGlmIChybykge1xuICAgICAgZXhpc3QgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBleGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiDmnInpmZDlhYPliIfmjaLmmL7npLrpmpDol49cbiAgICovXG4gIGZpbml0ZUVsZW1lbnRTd2l0Y2godmlzaWJsZTogYm9vbGVhbikge1xuICAgIGxldCBtZW1iZXJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIk1lbWJlck9iamVjdFwiKTtcbiAgICBpZiAodmlzaWJsZSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW1iZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBtZW1iZXIgPSBtZW1iZXJzW2ldIGFzIE1lbWJlck9iamVjdDtcbiAgICAgICAgbWVtYmVyLnNlZ21lbnRMZW5ndGhDb2VmZiA9IE1lbWJlck9iamVjdC5nX0dyaWRSYXRpbztcbiAgICAgICAgaWYgKG1lbWJlci5zZWdtZW50TGVuZ3RoQ29lZmYgPT09IC0xKSB7XG4gICAgICAgICAgbWVtYmVyLnNlZ21lbnRMZW5ndGhDb2VmZiA9IDAuOTtcbiAgICAgICAgfVxuICAgICAgICBtZW1iZXIuc2V0TmVlZFVwZGF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbWJlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG1lbWJlciA9IG1lbWJlcnNbaV0gYXMgTWVtYmVyT2JqZWN0O1xuICAgICAgICBtZW1iZXIuc2VnbWVudExlbmd0aENvZWZmID0gMTtcbiAgICAgICAgbWVtYmVyLnNldE5lZWRVcGRhdGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICAvKipcbiAgICog57yW6L6R6aKc6ImyKHJnYmHmlbDnu4TvvIgwLTI1NSnnpLrkvovigJTigJRbMjU1LDI1NSwyNTUsMV1cbiAgICogQHBhcmFtIGJhY2tncm91bmRDb2xvciDog4zmma/popzoibJcbiAgICogQHBhcmFtIGpvaW50Q29sb3Ig56m66Ze054K56aKc6ImyXG4gICAqIEBwYXJhbSBtZW1iZXJDb2xvckxpbmUg5p2G5Lu26aKc6Imy4oCU4oCU57q/5Zu+XG4gICAqIEBwYXJhbSBtZW1iZXJDb2xvckZhY2Ug5p2G5Lu26aKc6Imy4oCU4oCU5LiJ57u05L2TXG4gICAqIEBwYXJhbSBwbGF0ZUNvbG9yIOadv+minOiJslxuICAgKi9cbiAgZWRpdENvbG9ycyhcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IG51bWJlcltdLFxuICAgIGpvaW50Q29sb3I6IG51bWJlcltdLFxuICAgIG1lbWJlckNvbG9yTGluZTogbnVtYmVyW10sXG4gICAgbWVtYmVyQ29sb3JGYWNlOiBudW1iZXJbXSxcbiAgICBwbGF0ZUNvbG9yOiBudW1iZXJbXVxuICApIHtcbiAgICBPYmplY3RDb2xvci5qb2ludENvbG9yID0gam9pbnRDb2xvcjtcbiAgICBPYmplY3RDb2xvci5tZW1iZXJGYWNlQ29sb3IgPSBtZW1iZXJDb2xvckZhY2U7XG4gICAgT2JqZWN0Q29sb3IubWVtYmVyTGluZUNvbG9yID0gbWVtYmVyQ29sb3JMaW5lO1xuICAgIE9iamVjdENvbG9yLnBsYXRlQ29sb3IgPSBwbGF0ZUNvbG9yO1xuXG4gICAgdGhpcy52aWV3ZXIuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yO1xuXG4gICAgbGV0IGpvaW50cyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJKb2ludE9iamVjdFwiKTtcbiAgICBqb2ludHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5zZWdtZW50LmNvbG9yLnNldE1hcmtlcihqb2ludENvbG9yKTtcbiAgICB9KTtcblxuICAgIGxldCBtZW1iZXJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcbiAgICAgIFwiTWVtYmVyT2JqZWN0XCJcbiAgICApIGFzIE1lbWJlck9iamVjdFtdO1xuICAgIG1lbWJlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5mYWNlQ29sb3IgPSBtZW1iZXJDb2xvckZhY2U7XG4gICAgICBpdGVtLmxpbmVDb2xvciA9IG1lbWJlckNvbG9yTGluZTtcbiAgICAgIGl0ZW0uc2V0TmVlZFVwZGF0ZSgpO1xuICAgIH0pO1xuXG4gICAgbGV0IHBsYXRlcyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXG4gICAgICBcIlBsYXRlT2JqZWN0XCJcbiAgICApIGFzIFBsYXRlT2JqZWN0W107XG4gICAgcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uZmFjZUNvbG9yID0gcGxhdGVDb2xvcjtcbiAgICAgIGl0ZW0uc2V0TmVlZFVwZGF0ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOminOiJsuWAvOekuuS+izpcIiNmZmZmZmZcIi0tLeeZveiJsi5cbiAgICogQHBhcmFtIGpvaW50TGFiZWwg56m66Ze054K55qCH562+6aKc6ImyXG4gICAqIEBwYXJhbSBtZW1iZXJMYWJlbCDmnYbku7bmoIfnrb7popzoibJcbiAgICogQHBhcmFtIHBsYXRlTGFiZWwg5p2/5qCH562+6aKc6ImyXG4gICAqIEBwYXJhbSBsb2FkTGFiZWwg6I236L296aKc6ImyXG4gICAqL1xuICBlZGl0TGFiZWxDb2xvcnMoXG4gICAgam9pbnRMYWJlbDogc3RyaW5nLFxuICAgIG1lbWJlckxhYmVsOiBzdHJpbmcsXG4gICAgcGxhdGVMYWJlbDogc3RyaW5nLFxuICAgIGxvYWRMYWJlbDogc3RyaW5nXG4gICkge1xuICAgIE9iamVjdENvbG9yLmpvaW50TGFiZWxDb2xvciA9IGpvaW50TGFiZWw7XG4gICAgT2JqZWN0Q29sb3IubWVtYmVyTGFiZWxDb2xvciA9IG1lbWJlckxhYmVsO1xuICAgIE9iamVjdENvbG9yLnBsYXRlTGFiZWxDb2xvciA9IHBsYXRlTGFiZWw7XG4gICAgT2JqZWN0Q29sb3IubG9hZExhYmVsQ29sb3IgPSBsb2FkTGFiZWw7XG5cbiAgICBsZXQgam9pbnRzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcbiAgICAgIFwiSm9pbnRPYmplY3RcIlxuICAgICkgYXMgSm9pbnRPYmplY3RbXTtcbiAgICBqb2ludHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5pc0RyYXdTdmcgPSBmYWxzZTtcbiAgICAgIGl0ZW0uaXNEcmF3U3ZnID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGxldCBtZW1iZXJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcbiAgICAgIFwiTWVtYmVyT2JqZWN0XCJcbiAgICApIGFzIE1lbWJlck9iamVjdFtdO1xuICAgIG1lbWJlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5pc0RyYXdTdmcgPSBmYWxzZTtcbiAgICAgIGl0ZW0uaXNEcmF3U3ZnID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGxldCBwbGF0ZXMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFxuICAgICAgXCJQbGF0ZU9iamVjdFwiXG4gICAgKSBhcyBQbGF0ZU9iamVjdFtdO1xuICAgIHBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLmlzRHJhd1N2ZyA9IGZhbHNlO1xuICAgICAgaXRlbS5pc0RyYXdTdmcgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy52aWV3ZXIuZXhlU2NlbmVDYW1lcmFDaGFuZ2VkKExvbmdhbi5Mb25nYW5Db3JlLkNhbWVyYUNoYW5nZVR5cGUuU2NhbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIOS/ruaUueaIqumdolZpZXdlcueahOiDjOaZr+minOiJsuOAgee6v+adoeminOiJsuOAgeeureWktOminOiJsuOAgeaWh+Wtl+minOiJslxuICAgKiBAcGFyYW0gc2VjdGlvblZpZXdlciDmiKrpnaJWaWV3ZXLlr7nosaFcbiAgICogQHBhcmFtIGJhY2tncm91bmRDb2xvciDog4zmma/popzoibI6IFsyNTUsMCwwLDFdXG4gICAqIEBwYXJhbSBsaW5lTGFiZWxDb2xvciDnur/mnaHpopzoibI6IFwiI2ZmZlwiXG4gICAqIEBwYXJhbSBhcnJvd0xhYmVsQ29sb3Ig566t5aS06aKc6ImyOiBcIiNmZmZcIlxuICAgKiBAcGFyYW0gdGV4dExhYmVsQ29sb3Ig5paH5a2X6aKc6ImyOiBcIiNmZmZcIlxuICAgKi9cbiAgZWRpdFNlY3Rpb25MYWJlbENvbG9ycyhcbiAgICBzZWN0aW9uVmlld2VyOiBTZWN0aW9uVmlld2VyLFxuICAgIGJhY2tncm91bmRDb2xvcjogbnVtYmVyW10sXG4gICAgbGluZUxhYmVsQ29sb3I6IHN0cmluZyxcbiAgICBhcnJvd0xhYmVsQ29sb3I6IHN0cmluZyxcbiAgICB0ZXh0TGFiZWxDb2xvcjogc3RyaW5nXG4gICkge1xuICAgIC8vXG4gICAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgICAgc2VjdGlvblZpZXdlci5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgfVxuICAgIGlmIChsaW5lTGFiZWxDb2xvcikge1xuICAgICAgSW5zdGFuY2VTZWN0aW9uT2JqZWN0LmxpbmVMYWJlbENvbG9yID0gbGluZUxhYmVsQ29sb3I7XG4gICAgfVxuICAgIGlmIChhcnJvd0xhYmVsQ29sb3IpIHtcbiAgICAgIEluc3RhbmNlU2VjdGlvbk9iamVjdC5hcnJvd0xhYmVsQ29sb3IgPSBhcnJvd0xhYmVsQ29sb3I7XG4gICAgfVxuICAgIGlmICh0ZXh0TGFiZWxDb2xvcikge1xuICAgICAgSW5zdGFuY2VTZWN0aW9uT2JqZWN0LnRleHRMYWJlbENvbG9yID0gdGV4dExhYmVsQ29sb3I7XG4gICAgfVxuXG4gICAgbGV0IHJvb3QgPSBzZWN0aW9uVmlld2VyLnJlbmRlck9iamVjdDtcbiAgICByb290Py5jaGlsZE9iamVjdHMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgaWYgKHNlY3Rpb24gaW5zdGFuY2VvZiBTZWN0aW9uT2JqZWN0KSB7XG4gICAgICAgIGxldCBpcm8gPSBzZWN0aW9uVmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChcbiAgICAgICAgICBzZWN0aW9uXG4gICAgICAgICkgYXMgSW5zdGFuY2VTZWN0aW9uT2JqZWN0O1xuICAgICAgICBpZiAoaXJvKSB7XG4gICAgICAgICAgaXJvLnJlbW92ZVN2ZygpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaXJvLmRyYXdTdmcoKTtcbiAgICAgICAgICB9LCAxMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliIfmjaJhY3RpdmVWaWV3ZXIuXG4gICAqIEBwYXJhbSBlbGVtZW50SWQgdmlld2Vy5omA5Zyo55qE5a655Zmo55qESWQuXG4gICAqL1xuICBzd2l0Y2hBY3RpdmVWaWV3ZXIoZWxlbWVudElkOiBzdHJpbmcpIHtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3M7XG4gICAgcHJvY2Vzcy52aWV3ZXJzLmZvckVhY2goKHZpKSA9PiB7XG4gICAgICBpZiAodmkuY29udGFpbmVyLmlkID09PSBlbGVtZW50SWQpIHtcbiAgICAgICAgcHJvY2Vzcy5hY3RpdmVWaWV3ZXIgPSB2aTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOaYvuekuuWQhOS4quWOhuWPsueahOWQjeensC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIHNob3dIaXN0b3J5TGlzdCgpIHtcbiAgICBsZXQgaGlzdG9yeU1hbmFnZXIgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmhpc3RvcnlNYW5hZ2VyO1xuICAgIGxldCBsaXN0ID0gaGlzdG9yeU1hbmFnZXIuc3RhdGVMaXN0O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5jb3VudCgpOyBpKyspIHtcbiAgICAgIGNvbnNvbGUubG9nKGxpc3QuaXRlbXNbaV0ubmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICAvKipcbiAgICog5Zue5ruaL+mHjeWBmuWOhuWPsuebtOWIsOS4i+agh+WkhC5cbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBoaXN0b3J5Um9sbChpbmRleDogbnVtYmVyKSB7XG4gICAgbGV0IGhpc3RvcnlNYW5hZ2VyID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5oaXN0b3J5TWFuYWdlcjtcbiAgICBsZXQgY3VycmVudElkeCA9IGhpc3RvcnlNYW5hZ2VyLmN1cnJlbnRTdGF0ZUluZGV4O1xuXG4gICAgaWYgKGN1cnJlbnRJZHggPCBpbmRleCkge1xuICAgICAgbGV0IHRpbWUgPSBpbmRleCAtIGN1cnJlbnRJZHg7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbWU7IGkrKykge1xuICAgICAgICB0aGlzLnZpZXdlci5wcm9jZXNzLmhpc3RvcnlNYW5hZ2VyLnJvbGxGb3J3YXJkKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjdXJyZW50SWR4ID4gaW5kZXgpIHtcbiAgICAgIGxldCB0aW1lID0gY3VycmVudElkeCAtIGluZGV4O1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lOyBpKyspIHtcbiAgICAgICAgdGhpcy52aWV3ZXIucHJvY2Vzcy5oaXN0b3J5TWFuYWdlci5yb2xsQmFjaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoaXMuc2hvd0hpc3RvcnlMaXN0KCk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W6aG555uu5Lit55qE5YWo6YOo5bel5Ya15a+56LGhXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRMb2FkQ29uZGl0aW9uTGlzdCgpIHtcbiAgICBsZXQgbG9hZENvbmRpdGlvbnMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFxuICAgICAgXCJMb2FkQ29uZGl0aW9uT2JqZWN0XCJcbiAgICApO1xuICAgIHJldHVybiBsb2FkQ29uZGl0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bpobnnm67kuK3nmoTlhajpg6jnu4TlkIjlt6XlhrXlr7nosaFcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldExvYWRDb25kaXRpb25Db21iaW5lTGlzdCgpIHtcbiAgICBsZXQgb2JqZWN0cyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJTZWFzdGF0ZUxjb21iXCIpO1xuICAgIHJldHVybiBvYmplY3RzO1xuICB9XG5cbiAgLyoqXG4gICAqIOa4hemZpHZpZXdlcueahFByb2Nlc3PmrovnlZnmlbDmja4uXG4gICAqL1xuICByZW1vdmVQcm9jZXNzRGF0YSgpIHtcbiAgICB0aGlzLnZpZXdlci5wcm9jZXNzLmNsZWFyUmVuZGVyT2JqZWN0cyh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmt7vliqDngrnojbfovb1cbiAgICogQHBhcmFtIGxvYWRDb25kaXRpb25STyDlt6XlhrXlr7nosaFcbiAgICogQHBhcmFtIGxvYWRHcm91cE5hbWUg6I236L2957uE5ZCNXG4gICAqIEBwYXJhbSBzZWxlY3RlZEpvaW50TmFtZSDmiYDpgInnqbrpl7TngrnlkI1cbiAgICogQHBhcmFtIGZ4XG4gICAqIEBwYXJhbSBmeVxuICAgKiBAcGFyYW0gZnpcbiAgICogQHBhcmFtIG14XG4gICAqIEBwYXJhbSBteVxuICAgKiBAcGFyYW0gbXpcbiAgICovXG4gIGFkZEpvaW50TG9hZChcbiAgICBsb2FkQ29uZGl0aW9uTmFtZTogc3RyaW5nLFxuICAgIGxvYWRHcm91cE5hbWU6IHN0cmluZyxcbiAgICBzZWxlY3RlZEpvaW50TmFtZTogc3RyaW5nLFxuICAgIGZ4OiBudW1iZXIsXG4gICAgZnk6IG51bWJlcixcbiAgICBmejogbnVtYmVyLFxuICAgIG14OiBudW1iZXIsXG4gICAgbXk6IG51bWJlcixcbiAgICBtejogbnVtYmVyXG4gICk6IG51bWJlciB7XG4gICAgbGV0IHZpZXdlciA9IHRoaXMudmlld2VyIGFzIFZpZXdlcjtcblxuICAgIC8vIOa3u+WKoOaIluS/ruaUueW3peWGtS5cbiAgICBsZXQgcHJldHJlYXRtZW50Uk8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFxuICAgICAgXCLlkI7lpITnkIborqHnrpfnu5PmnpxcIlxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcblxuICAgIGlmICghcHJldHJlYXRtZW50Uk8pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLmsqHmnIkn5ZCO5aSE55CG6K6h566X57uT5p6cJ+eahFJP6IqC54K5XCIpO1xuICAgICAgcmV0dXJuIDI7XG4gICAgfVxuXG4gICAgbGV0IGNvbmRpdGlvblBhcmVudCA9IHZpZXdlci5wcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxuICAgICAgcHJldHJlYXRtZW50Uk8sXG4gICAgICBcIuiNt+i9veW3peWGtVwiXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xuXG4gICAgaWYgKCFjb25kaXRpb25QYXJlbnQpIHtcbiAgICAgIGNvbmRpdGlvblBhcmVudCA9IG5ldyBEZXNpZ25CYXNlT2JqZWN0KCk7XG4gICAgICBjb25kaXRpb25QYXJlbnQuYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuQ3JlYXRpbmc7XG4gICAgICBjb25kaXRpb25QYXJlbnQubmFtZSA9IFwi6I236L295bel5Ya1XCI7XG4gICAgICB2aWV3ZXIucHJvY2Vzcy5hZGRSZW5kZXJPYmplY3QocHJldHJlYXRtZW50Uk8sIGNvbmRpdGlvblBhcmVudCk7XG4gICAgfVxuXG4gICAgbGV0IGxvYWRDb25kaXRpb25STyA9IG51bGw7XG4gICAgbG9hZENvbmRpdGlvblJPID0gdmlld2VyLnByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICBjb25kaXRpb25QYXJlbnQsXG4gICAgICBsb2FkQ29uZGl0aW9uTmFtZVxuICAgICkgYXMgTG9hZENvbmRpdGlvbk9iamVjdDtcbiAgICBpZiAoIWxvYWRDb25kaXRpb25STykge1xuICAgICAgbG9hZENvbmRpdGlvblJPID0gbmV3IExvYWRDb25kaXRpb25PYmplY3QobG9hZENvbmRpdGlvbk5hbWUpO1xuICAgICAgbG9hZENvbmRpdGlvblJPLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkNyZWF0aW5nO1xuICAgICAgdmlld2VyLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KGNvbmRpdGlvblBhcmVudCwgbG9hZENvbmRpdGlvblJPKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZENvbmRpdGlvblJPLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkVkaXRpbmc7XG4gICAgfVxuXG4gICAgbGV0IGxvYWRHcm91cFJPID0gdmlld2VyLnByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICBsb2FkQ29uZGl0aW9uUk8sXG4gICAgICBsb2FkR3JvdXBOYW1lXG4gICAgKSBhcyBMb2FkR3JvdXBPYmplY3Q7XG4gICAgaWYgKCFsb2FkR3JvdXBSTykge1xuICAgICAgbG9hZEdyb3VwUk8gPSBuZXcgTG9hZEdyb3VwT2JqZWN0KGxvYWRHcm91cE5hbWUpO1xuICAgICAgbG9hZEdyb3VwUk8uYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuQ3JlYXRpbmc7XG4gICAgICB2aWV3ZXIucHJvY2Vzcy5hZGRSZW5kZXJPYmplY3QobG9hZENvbmRpdGlvblJPLCBsb2FkR3JvdXBSTyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRHcm91cFJPLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkVkaXRpbmc7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb2FkR3JvdXBSTy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBsb2FkID0gbG9hZEdyb3VwUk8uY2hpbGRPYmplY3RzW2ldO1xuICAgICAgaWYgKGxvYWQgaW5zdGFuY2VvZiBKb2ludExvYWRPYmplY3QpIHtcbiAgICAgICAgaWYgKGxvYWQuam9pbnROYW1lID09PSBzZWxlY3RlZEpvaW50TmFtZSkge1xuICAgICAgICAgIC8vIOWvueW6lOeahOW3peWGteOAgeW3peWGtee7hOeahOS4i+eahOepuumXtOeCueS4iuW3sue7j+WtmOWcqOeCueiNt+i9vS5cbiAgICAgICAgICByZXR1cm4gMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBqb2ludExvYWQgPSBuZXcgSm9pbnRMb2FkT2JqZWN0KGxvYWRDb25kaXRpb25STy5uYW1lLCBsb2FkR3JvdXBOYW1lKTtcbiAgICBqb2ludExvYWQubmFtZSA9IFwiSm9pbnQ6XCIgKyBzZWxlY3RlZEpvaW50TmFtZTtcbiAgICBqb2ludExvYWQuYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuQ3JlYXRpbmc7XG4gICAgam9pbnRMb2FkLmpvaW50TmFtZSA9IHNlbGVjdGVkSm9pbnROYW1lO1xuXG4gICAgam9pbnRMb2FkLmZvcmNlWERpcmVjdGlvbiA9IGZ4O1xuICAgIGpvaW50TG9hZC5mb3JjZVlEaXJlY3Rpb24gPSBmeTtcbiAgICBqb2ludExvYWQuZm9yY2VaRGlyZWN0aW9uID0gZno7XG5cbiAgICBqb2ludExvYWQubW9tZW50QWJvdXRYQXhpcyA9IG14O1xuICAgIGpvaW50TG9hZC5tb21lbnRBYm91dFlBeGlzID0gbXk7XG4gICAgam9pbnRMb2FkLm1vbWVudEFib3V0WkF4aXMgPSBtejtcblxuICAgIHZpZXdlci5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChsb2FkR3JvdXBSTywgam9pbnRMb2FkKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiDnvJbovpHngrnojbfovb1cbiAgICogQHBhcmFtIGpvaW50TG9hZCDopoHnvJbovpHnmoTngrnojbfovb3lr7nosaFcbiAgICogQHBhcmFtIGZ4XG4gICAqIEBwYXJhbSBmeVxuICAgKiBAcGFyYW0gZnpcbiAgICogQHBhcmFtIG14XG4gICAqIEBwYXJhbSBteVxuICAgKiBAcGFyYW0gbXpcbiAgICovXG4gIGVkaXRKb2ludExvYWQoXG4gICAgam9pbnRMb2FkOiBKb2ludExvYWRPYmplY3QsXG4gICAgZng6IG51bWJlcixcbiAgICBmeTogbnVtYmVyLFxuICAgIGZ6OiBudW1iZXIsXG4gICAgbXg6IG51bWJlcixcbiAgICBteTogbnVtYmVyLFxuICAgIG16OiBudW1iZXJcbiAgKSB7XG4gICAgam9pbnRMb2FkLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkVkaXRpbmc7XG5cbiAgICBqb2ludExvYWQuZm9yY2VYRGlyZWN0aW9uID0gZng7XG4gICAgam9pbnRMb2FkLmZvcmNlWURpcmVjdGlvbiA9IGZ5O1xuICAgIGpvaW50TG9hZC5mb3JjZVpEaXJlY3Rpb24gPSBmejtcblxuICAgIGpvaW50TG9hZC5tb21lbnRBYm91dFhBeGlzID0gbXg7XG4gICAgam9pbnRMb2FkLm1vbWVudEFib3V0WUF4aXMgPSBteTtcbiAgICBqb2ludExvYWQubW9tZW50QWJvdXRaQXhpcyA9IG16O1xuICB9XG5cbiAgLyoqXG4gICAqIOmAmui/h+mSu+WtlOWQjeWIh+aNouaYvuekuueahOmSu+WtlOWbvuS+iy5cbiAgICogQHBhcmFtIGJvcmVob2xlTmFtZSBcbiAgICovXG4gIGJvcmVob2xlQ2hhbmdlKGJvcmVob2xlTmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IGVsZW1lbnRLZXkgPSBcInNvaWxkXCI7XG4gICAgaWYgKHRoaXMuYm9yZWhvbGVDdXRMaW5lRGlzcGxheSkge1xuICAgICAgdGhpcy5ib3JlaG9sZUN1dExpbmVEaXNwbGF5ID0gZmFsc2U7XG4gICAgICBMZWdlbmRNYW5hZ2UuZGVzdG9yeShlbGVtZW50S2V5KTtcbiAgICAgIGxldCBjdXJyZW50Qm9yZWhvbGVPYmplY3RzID0gdGhpcy5jdXJyZW50Qm9yZWhvbGVPYmplY3RzO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbnRCb3JlaG9sZU9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGN1cnJlbnRCb3JlaG9sZU9iamVjdHNbaV0ubmFtZSA9PT0gYm9yZWhvbGVOYW1lKSB7XG4gICAgICAgICAgY3VycmVudEJvcmVob2xlT2JqZWN0c1tpXS5jdXRsaWVuQWNpdHZlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUJvcmVob2xlTmFtZSA9IGJvcmVob2xlTmFtZTtcblxuICAgICAgICAgIHRoaXMuYm9yZWhvbGVDdXRMaW5lRGlzcGxheSA9IHRydWU7XG4gICAgICAgICAgbGV0IGN1dExpbmVMZWdlbmQgPSBjdXJyZW50Qm9yZWhvbGVPYmplY3RzW2ldLmdlQ3V0bGluZSgpO1xuICAgICAgICAgIExlZ2VuZE1hbmFnZS5jcmVhdGUoXG4gICAgICAgICAgICBlbGVtZW50S2V5LFxuICAgICAgICAgICAgY3V0TGluZUxlZ2VuZCxcbiAgICAgICAgICAgIFwi5Zyf5bGC5pWw5o2uXCIsXG4gICAgICAgICAgICBcIuminOiJslwiLFxuICAgICAgICAgICAgXCLlnJ/lsYLlkI1cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmlnaHQ6IFwiMHB4XCIsXG4gICAgICAgICAgICAgIGJvdHRvbTogXCIwcHhcIixcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGN1cnJlbnRCb3JlaG9sZU9iamVjdHNbaV0uY3V0bGllbkFjaXR2ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQTZDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUFBO0FBZUE7QUFBQTtBQWJBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUVBO0FBQ0E7O0FBSUE7QUFrREE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFHQTtBQUNBO0FBTUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7OztBQUlBO0FBRUE7QUFFQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQU1BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFLQTs7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQVNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7O0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTs7O0FBSUE7QUFDQTtBQUtBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQU9BO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7O0FBRUE7QUFFQTtBQUNBO0FBd0pBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBOztBQUVBO0FBS0E7QUFDQTtBQUNBOztBQUVBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFRQTtBQUVBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBUUE7QUFNQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFPQTtBQUVBO0FBRUE7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFNQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBTUE7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBb0JBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFHQTtBQUNBO0FBSUE7QUFJQTtBQUlBO0FBSUE7QUFJQTtBQUlBO0FBSUE7QUFJQTtBQUlBO0FBSUE7QUFJQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7OztBQVFBO0FBQ0E7OztBQU1BO0FBRUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7QUFRQTtBQUlBOzs7QUFHQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU9BO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTs7QUFLQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFPQTtBQUlBO0FBQ0E7QUFDQTs7O0FBS0E7QUFDQTtBQUlBOzs7QUFHQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFDQTs7QUFHQTtBQUdBO0FBT0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBS0E7QUFPQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBOzs7QUFLQTtBQUNBO0FBSUE7OztBQUdBO0FBRUE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUtBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTs7O0FBR0E7QUFPQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBOzs7QUFLQTtBQUlBOzs7QUFHQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdBOzs7O0FBSUE7QUFNQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBT0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUdBOzs7O0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUdBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTs7QUFFQTs7QUFHQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFJQTtBQUNBO0FBVUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQVNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBVUE7QUFRQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUtBO0FBTUE7QUFDQTtBQUdBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQWNBO0FBV0E7QUFHQTtBQUlBO0FBQ0E7QUFDQTs7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFZQTtBQVNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQUE7QUE3OERBOztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./packages/caeDesign/src/gsDevFx/managers/interfaceManagers/commonInterfaceManager.ts\n");
|
|
4001
|
+
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeLightObject/caeLightObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeLightObject/caeLightObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/jointObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/jointObject.ts\"), __webpack_require__(/*! gs-bim-air */ \"./node_modules/gs-bim-air/lib/BimAir.umd.min.js\"), __webpack_require__(/*! ./selectionInterfaceManager */ \"./packages/caeDesign/src/gsDevFx/managers/interfaceManagers/selectionInterfaceManager.ts\"), __webpack_require__(/*! ../../../gsDevFx/tasks/caeTask */ \"./packages/caeDesign/src/gsDevFx/tasks/caeTask.ts\"), __webpack_require__(/*! ../../../api/renderObjectService */ \"./packages/caeDesign/src/api/renderObjectService.ts\"), __webpack_require__(/*! ../../../gsDevFx/process */ \"./packages/caeDesign/src/gsDevFx/process.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/optionObjects/modelTitle */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/optionObjects/modelTitle.ts\"), __webpack_require__(/*! ../../../caeCardEditor/caeCardObjects/sacinp/cardTITLE */ \"./packages/caeDesign/src/caeCardEditor/caeCardObjects/sacinp/cardTITLE.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/memberObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/memberObject.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/pretreatment/mgrovObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/pretreatment/mgrovObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/pretreatment/corrzObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/pretreatment/corrzObject.ts\"), __webpack_require__(/*! ../../../store */ \"./packages/caeDesign/src/store/index.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/plateObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/plateObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/grupObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/grupObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/objectColors */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/objectColors.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/instanceSectionObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/instanceSectionObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/caeObjects/sectionObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/sectionObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/loadObjects/loadConditionObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/loadConditionObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/loadObjects/loadGroupObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/loadGroupObject.ts\"), __webpack_require__(/*! ../../../gsDevFx/objects/loadObjects/jointLoadObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/jointLoadObject.ts\"), __webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"), __webpack_require__(/*! ../../../viewerWrapper/module/legendManage */ \"./packages/caeDesign/src/viewerWrapper/module/legendManage.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, caeLightObject_1, jointObject_1, gs_bim_air_1, selectionInterfaceManager_1, caeTask_1, renderObjectService_1, process_1, modelTitle_1, cardTITLE_1, gs_ceec_design_1, memberObject_1, gs_ceec_design_2, mgrovObject_1, corrzObject_1, store_1, plateObject_1, grupObject_1, objectColors_1, instanceSectionObject_1, sectionObject_1, loadConditionObject_1, loadGroupObject_1, jointLoadObject_1, element_ui_1, legendManage_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CommonInterfaceManager = exports.SwitchColorDivide = void 0;\n renderObjectService_1 = tslib_1.__importDefault(renderObjectService_1);\n store_1 = tslib_1.__importDefault(store_1);\n var SwitchColorDivide;\n (function (SwitchColorDivide) {\n SwitchColorDivide[SwitchColorDivide[\"GrupName\"] = 0] = \"GrupName\";\n SwitchColorDivide[SwitchColorDivide[\"GrupThickness\"] = 1] = \"GrupThickness\";\n SwitchColorDivide[SwitchColorDivide[\"Mgrov\"] = 2] = \"Mgrov\";\n SwitchColorDivide[SwitchColorDivide[\"Corrz\"] = 3] = \"Corrz\";\n SwitchColorDivide[SwitchColorDivide[\"Cancel\"] = 4] = \"Cancel\";\n SwitchColorDivide[SwitchColorDivide[\"ComponentGroup\"] = 5] = \"ComponentGroup\";\n })(SwitchColorDivide = exports.SwitchColorDivide || (exports.SwitchColorDivide = {}));\n var CommonInterfaceManager = function (_super) {\n tslib_1.__extends(CommonInterfaceManager, _super);\n function CommonInterfaceManager(viewer) {\n var _this = _super.call(this, viewer) || this;\n _this.currentSelectWaveItemName = null;\n _this.currentBoreholeObjects = null;\n _this.boreholeLegend = null;\n _this.boreholeCutLineDisplay = false;\n _this.showEnglishText = false;\n _this.copyedExternalEvent = null;\n _this.elementKey = \"cutline\";\n _this.activeBoreholeName = null;\n return _this;\n }\n CommonInterfaceManager.prototype.showPlotTitle = function () {\n var result = null;\n var process = this.viewer.process;\n var titleRO = process.findRenderObjectByType(\"ModelTitle\");\n if (titleRO) {\n if (titleRO instanceof modelTitle_1.ModelTitle) {\n result = titleRO.cardObject.title.value;\n }\n } else {\n result = \"Active Structure\";\n }\n return result;\n };\n CommonInterfaceManager.prototype.editPlotTitle = function (title) {\n var process = this.viewer.process;\n if (!title || title.trimEnd() === \"\") {\n var titleRO_1 = process.findRenderObjectByType(\"ModelTitle\");\n if (titleRO_1) {\n titleRO_1.tempDelete(this.viewer);\n return 1;\n }\n }\n var islegal = this.checTitlekNamelegal(title);\n if (!islegal) {\n return 2;\n }\n var titleRO = process.findRenderObjectByType(\"ModelTitle\");\n if (titleRO) {\n if (titleRO instanceof modelTitle_1.ModelTitle) {\n titleRO.cardObject.title.value = title;\n titleRO.cardData = titleRO.cardObject.getLine();\n }\n } else {\n var titleRO_2 = new modelTitle_1.ModelTitle();\n titleRO_2.name = \"TITLE\";\n var line = \" \" + title;\n titleRO_2.cardData = line;\n titleRO_2.cardObject = new cardTITLE_1.CardTITLE(line);\n process.addRenderObject(process.caeRenderObjectTreeManager.sacinpNode, titleRO_2);\n }\n return 1;\n };\n CommonInterfaceManager.prototype.checTitlekNamelegal = function (name) {\n var reg = /^[A-Z0-9]*$/;\n if (!reg.test(name) || name.trimEnd().length > 125) {\n console.log(\"空间点名称不符合规范\");\n return false;\n }\n return true;\n };\n CommonInterfaceManager.prototype.resetView = function (isSetViewMode) {\n var _a, _b, _c;\n if (isSetViewMode === void 0) {\n isSetViewMode = true;\n }\n var viewer = this.viewer.process.activeViewer;\n viewer.selectionManager.clearAllSelectionAndHighlight();\n viewer.process.commandManager.closeAllCommands();\n viewer.commonInterfaceManager.colorSwitch(SwitchColorDivide.Cancel);\n viewer.commonInterfaceManager.finiteElementSwitch(false);\n viewer.commonInterfaceManager.waveSwitch(false);\n viewer.commonInterfaceManager.boreholeSwitch(false);\n viewer.viewInterfaceManager.setJointNumberVisible(false);\n viewer.viewInterfaceManager.setJointRestraintVisible(false);\n viewer.viewInterfaceManager.setMemberFixityVisible(false);\n viewer.viewInterfaceManager.setMemberLocalAxisVisible(false);\n viewer.viewInterfaceManager.setMemberSectionSizeVisible(false);\n viewer.viewInterfaceManager.setGrupNumberVisible(false);\n var process = viewer.process;\n (_a = process.caeRenderObjectTreeManager.jointNode) === null || _a === void 0 ? void 0 : _a.childObjects.forEach(function (obj) {\n viewer.findInstanceObject(obj).viewerVisible = true;\n viewer.findInstanceObject(obj).visible = true;\n obj.clearSvg();\n });\n (_b = process.caeRenderObjectTreeManager.memberNode) === null || _b === void 0 ? void 0 : _b.childObjects.forEach(function (obj) {\n viewer.findInstanceObject(obj).viewerVisible = true;\n viewer.findInstanceObject(obj).visible = true;\n obj.clearSvg();\n });\n (_c = process.caeRenderObjectTreeManager.plateNode) === null || _c === void 0 ? void 0 : _c.childObjects.forEach(function (obj) {\n viewer.findInstanceObject(obj).viewerVisible = true;\n viewer.findInstanceObject(obj).visible = true;\n obj.clearSvg();\n });\n viewer.viewInterfaceManager.memberLineView(false);\n viewer.viewInterfaceManager.plateLineView(false);\n if (isSetViewMode) {\n viewer.setViewMode(gs_bim_air_1.Longan.ViewMode.OFSIso, true);\n }\n };\n CommonInterfaceManager.prototype.redraw = function () {\n var process = this.viewer.process;\n process.viewers.forEach(function (vi) {\n console.log(\"vi\");\n vi.exeSceneCameraChanged(gs_bim_air_1.Longan.LonganCore.CameraChangeType.Rotate | gs_bim_air_1.Longan.LonganCore.CameraChangeType.Scale | gs_bim_air_1.Longan.LonganCore.CameraChangeType.Translate);\n vi.updateDisplay();\n });\n };\n CommonInterfaceManager.prototype.checkIsFiniteElement = function () {\n var isFE = true;\n var viewer = this.viewer;\n var grupNode = viewer.process.caeRenderObjectTreeManager.grupNode;\n grupNode === null || grupNode === void 0 ? void 0 : grupNode.childObjects.forEach(function (grup) {\n if (grup instanceof grupObject_1.GrupObject) {\n if (grup.grupSegments.length > 1) {\n isFE = false;\n return isFE;\n }\n }\n });\n console.log(\"isFE:\", isFE);\n return isFE;\n };\n CommonInterfaceManager.prototype.openModel = function (modelId, isReplace) {\n var viewer = this.viewer;\n return new Promise(function (resolve, reject) {\n viewer.loadModel(modelId, isReplace).then(function (model) {\n viewer.process.historyManager.clearDeltaState();\n viewer.sceneSegment.renderingOptions.cullingMaximumExtent = 0;\n console.log(\"model\", model);\n var ro = viewer.renderObject;\n var caeTask = new caeTask_1.CAETask(ro, viewer);\n caeTask.workRenderObjectService = renderObjectService_1.default;\n viewer.process.taskManager.execute(caeTask);\n viewer.structureTreeManager.update();\n viewer.updateDisplay();\n viewer.setViewMode(gs_bim_air_1.Longan.ViewMode.OFSIso, true);\n viewer.postInterfaceManager.requestDBData();\n resolve();\n });\n });\n };\n CommonInterfaceManager.prototype.checkNeedSave = function () {\n var rootRO = this.viewer.process.caeRenderObjectTreeManager.rootNode;\n if (rootRO instanceof caeLightObject_1.CAELightObject) {\n var result = gs_ceec_design_1.PersistenceManager.saveDesign(rootRO);\n if (result.createList.length > 0 || result.deleteList.length > 0 || result.editList.length > 0) {\n return true;\n } else {\n return false;\n }\n }\n return false;\n };\n CommonInterfaceManager.prototype.save = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var rootRO = _this.viewer.process.caeRenderObjectTreeManager.rootNode;\n if (rootRO instanceof caeLightObject_1.CAELightObject) {\n rootRO.save(_this.viewer).then(function () {\n resolve();\n });\n }\n });\n };\n CommonInterfaceManager.prototype.exportDATFile = function () {\n console.log(\"export\");\n var datCardData = this.viewer.datWriterManager.exportDATFile();\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.exportMemberData = function (isExportAll) {\n if (isExportAll === void 0) {\n isExportAll = true;\n }\n console.log(\"export member\");\n var datCardData = this.viewer.datWriterManager.exportMemberData(isExportAll);\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.exportPileData = function (isExportAll) {\n if (isExportAll === void 0) {\n isExportAll = true;\n }\n console.log(\"export pile\");\n var datCardData = this.viewer.datWriterManager.exportPileData(isExportAll);\n if (datCardData === null) {\n return null;\n }\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.exportDATFile_Seainp = function () {\n console.log(\"export_seainp\");\n var viewer = this.viewer;\n var datCardData = viewer.datWriterManager.exportDATFile_Seainp();\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.exportDATFile_Sacinp = function () {\n console.log(\"export_sacinp\");\n var viewer = this.viewer;\n var datCardData = viewer.datWriterManager.exportDATFile_Sacinp();\n datCardData += \"END\";\n return datCardData;\n };\n CommonInterfaceManager.prototype.importDATData = function (content, overWrite) {\n if (overWrite === void 0) {\n overWrite = false;\n }\n console.log(\"importDATData\");\n this.viewer.datReaderManager.importDATData(content, overWrite);\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.importSEAData = function (content) {\n console.log(\"importSEAData\");\n var ro = this.viewer.process.findRenderObjectByType(\"SeastateLdopt\");\n if (ro) {\n var message = \"已经存在海况数据\";\n element_ui_1.Message.error(message);\n return;\n }\n this.viewer.datReaderManager.importSeainpData(content);\n this.viewer.updateDisplay();\n this.viewer.structureTreeManager.update();\n return \"importSEAData successful\";\n };\n CommonInterfaceManager.prototype.importSeaociData = function (content) {\n console.log(\"importSeaociData\");\n this.viewer.datReaderManager.importSeaociData(content);\n this.viewer.updateDisplay();\n this.viewer.structureTreeManager.update();\n return \"importSeaociData successful\";\n };\n CommonInterfaceManager.prototype.importPSIData = function (content) {\n console.log(\"importPSIData\");\n this.viewer.datReaderManager.importPSIData(content);\n this.viewer.updateDisplay();\n this.viewer.structureTreeManager.update();\n };\n CommonInterfaceManager.prototype.historyBack = function () {\n if (process_1.Process.activeProcess.historyManager.canRollBack) {\n process_1.Process.activeProcess.historyManager.rollBack();\n }\n };\n CommonInterfaceManager.prototype.historyForward = function () {\n if (process_1.Process.activeProcess.historyManager.canRollForward) {\n process_1.Process.activeProcess.historyManager.rollForward();\n }\n };\n CommonInterfaceManager.prototype.selectAll = function () {\n var viewer = this.viewer;\n viewer.selectionManager.clearAllSelectionAndHighlight();\n switch (viewer.selectionInterfaceManager.selectorFilter) {\n case selectionInterfaceManager_1.SelectorFiliter.Joint:\n this.selectAllJoints();\n break;\n case selectionInterfaceManager_1.SelectorFiliter.Member:\n this.selectAllMembers();\n break;\n case selectionInterfaceManager_1.SelectorFiliter.Plate:\n this.selectAllPlates();\n break;\n case selectionInterfaceManager_1.SelectorFiliter.All:\n this.selectAllJoints();\n this.selectAllMembers();\n this.selectAllPlates();\n break;\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.createViewPoint = function (viewPointName) {\n this.viewer.caePanelManager.viewPointPanelCae.addViewPoint(viewPointName).then(function () {});\n };\n CommonInterfaceManager.prototype.selectAllJoints = function () {\n var joints = this.viewer.process.findRenderObjectsByType(\"JointObject\");\n var keys = new Array();\n var paths = new Array();\n joints.forEach(function (item) {\n keys.push(item.segment.key);\n paths.push(item.segment.path);\n });\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n };\n CommonInterfaceManager.prototype.selectAllMembers = function () {\n var members = this.viewer.process.findRenderObjectsByType(\"MemberObject\");\n var keys = new Array();\n var paths = new Array();\n members.forEach(function (item) {\n keys.push(item.segment.key);\n paths.push(item.segment.path);\n });\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n };\n CommonInterfaceManager.prototype.selectAllPlates = function () {\n var plates = this.viewer.process.findRenderObjectsByType(\"PlateObject\");\n var keys = new Array();\n var paths = new Array();\n plates.forEach(function (item) {\n keys.push(item.segment.key);\n paths.push(item.segment.path);\n });\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n };\n CommonInterfaceManager.prototype.findJoint = function (jointName) {\n var process = this.viewer.process;\n var ro = process.findCaeObjectByNameInChildObject(process.caeRenderObjectTreeManager.jointNode, jointName);\n if (ro && ro instanceof jointObject_1.JointObject) {\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.locateWorld(ro.segment);\n this.viewer.selectionManager.selectAndHighlightKeys([ro.segment.key], [ro.segment.path]);\n this.viewer.updateDisplay();\n return ro;\n } else {\n return null;\n }\n };\n CommonInterfaceManager.prototype.renameJoint = function (originJointName, newJointName, useNextAvaliable) {\n var process = this.viewer.process;\n var result = {};\n if (!jointObject_1.JointObject.checkNamelegal(newJointName)) {\n result = 3;\n return result;\n }\n var jointNode = process.caeRenderObjectTreeManager.jointNode;\n var ro = process.findCaeObjectByNameInChildObject(jointNode, originJointName);\n if (ro && ro instanceof jointObject_1.JointObject) {\n if (!useNextAvaliable) {\n var newNameRO = process.findCaeObjectByNameInChildObject(jointNode, newJointName);\n if (newNameRO) {\n result = 3 + \",\" + newJointName;\n return result;\n }\n } else {\n newJointName = process.caeRenderObjectTreeManager.nameAscendingOrder(newJointName, 1, process.nameMapJoint)[0];\n }\n ro.name = newJointName;\n ro.setNeedUpdate();\n result = 2 + \",\" + originJointName + \",\" + newJointName;\n } else {\n result = 1 + \",\" + originJointName;\n }\n return result;\n };\n CommonInterfaceManager.prototype.findMember = function (memberName) {\n var process = this.viewer.process;\n var ro = process.findCaeObjectByNameInChildObject(process.caeRenderObjectTreeManager.memberNode, memberName);\n if (ro && ro instanceof memberObject_1.MemberObject) {\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.locateWorld(ro.segment);\n this.viewer.selectionManager.selectAndHighlightKeys([ro.segment.key], [ro.segment.path]);\n this.viewer.updateDisplay();\n return ro;\n } else {\n return null;\n }\n };\n CommonInterfaceManager.prototype.highlightMemberByNames = function (names) {\n var process = this.viewer.process;\n var keys = [];\n var paths = [];\n for (var i = 0; i < names.length; i++) {\n var obj = process.findCaeObjectByNameInChildObject(process.caeRenderObjectTreeManager.memberNode, names[i]);\n if (obj) {\n keys.push(obj.segment.key);\n paths.push(obj.segment.path);\n } else {\n console.log(\"找不到\" + names[i]);\n }\n }\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.highlightPlateByNames = function (names) {\n var keys = [];\n var paths = [];\n for (var i = 0; i < names.length; i++) {\n var obj = this.viewer.process.findCaeObjectByNameInChildObject(this.viewer.process.caeRenderObjectTreeManager.plateNode, names[i]);\n if (obj) {\n keys.push(obj.segment.key);\n paths.push(obj.segment.path);\n } else {\n console.log(\"找不到\" + names[i]);\n }\n }\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.selectionManager.selectAndHighlightKeys(keys, paths);\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.findPlate = function (plateName) {\n var process = this.viewer.process;\n var ro = process.findCaeObjectByNameInChildObject(process.caeRenderObjectTreeManager.plateNode, plateName);\n if (ro && ro instanceof plateObject_1.PlateObject) {\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.locateWorld(ro.segment);\n this.viewer.selectionManager.selectAndHighlightKeys([ro.segment.key], [ro.segment.path]);\n this.viewer.updateDisplay();\n return ro;\n } else {\n return null;\n }\n };\n CommonInterfaceManager.prototype.getStructureTreeData = function () {\n var rootNode = this.viewer.structureTreeManager.rootNode;\n return rootNode;\n };\n CommonInterfaceManager.prototype.getMemberGrups = function () {\n var grupNameList = new Array();\n var grupObjectGroup = this.viewer.process.findRenderObjectByName(\"杆件截面组\");\n if (grupObjectGroup) {\n grupObjectGroup.childObjects.map(function (item) {\n grupNameList.push(item.name);\n });\n }\n return grupNameList;\n };\n CommonInterfaceManager.prototype.addStructureNode = function (parent, ro) {\n this.viewer.process.addRenderObject(parent, ro);\n };\n CommonInterfaceManager.prototype.removeStructureNode = function (ro) {\n this.viewer.process.removeRenderObject(ro);\n };\n CommonInterfaceManager.prototype.createMgrovObject = function () {\n var mgrov = new mgrovObject_1.MgrovObject();\n return mgrov;\n };\n CommonInterfaceManager.prototype.createCorrzObject = function () {\n var corrz = new corrzObject_1.CorrzObject();\n return corrz;\n };\n CommonInterfaceManager.prototype.clearChildObjects = function (viewer, ro) {\n if (ro) {\n while (ro.childObjects.length > 0) {\n viewer.process.removeRenderObject(ro.childObjects[0]);\n }\n }\n };\n CommonInterfaceManager.prototype.clearCaeRenderObject = function (viewer) {\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.memberNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.plateNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.jointNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.grupNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.pGrupNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.sectionInsNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.sacinpNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.seastateNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.pileNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.plGrupNode);\n this.clearChildObjects(viewer, viewer.process.caeRenderObjectTreeManager.postResultNode);\n };\n CommonInterfaceManager.prototype.colorDivSwitch_GrupName = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var colorDivideRO = process.findRenderObjectByName(\"按截面组号分色\");\n if (colorDivideRO) {\n for (var i = 0; i < colorDivideRO.childObjects.length; i++) {\n var obj = colorDivideRO.childObjects[i];\n if (obj.checkBusinessStateIsActive()) {\n if (on_off) {\n obj.active(viewer);\n } else {\n obj.inactive(viewer);\n }\n }\n }\n if (on_off) {\n var cutline = {};\n if (colorDivideRO) {\n legendManage_1.LegendManage.destory(this.elementKey);\n cutline = colorDivideRO.getCutline();\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Colored By Member Groups\";\n component.leftText = \"Color\";\n component.rightText = \"Member Groups\";\n } else {\n component.title = \"截面组分色\";\n component.leftText = \"颜色\";\n component.rightText = \"截面组名\";\n }\n }\n } else {\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.colorDivSwitch_GrupThickness = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var colorDivideRO = process.findRenderObjectByName(\"按截面壁厚分色\");\n if (colorDivideRO) {\n for (var i = 0; i < colorDivideRO.childObjects.length; i++) {\n var obj = colorDivideRO.childObjects[i];\n if (obj.checkBusinessStateIsActive()) {\n if (on_off) {\n obj.active(viewer);\n } else {\n obj.inactive(viewer);\n }\n }\n }\n if (on_off) {\n var cutline = {};\n if (colorDivideRO) {\n legendManage_1.LegendManage.destory(this.elementKey);\n cutline = colorDivideRO.getCutline();\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Colored By Thickness\";\n component.leftText = \"Color\";\n component.rightText = \"Thickness(cm)\";\n } else {\n component.title = \"壁厚分色\";\n component.leftText = \"颜色\";\n component.rightText = \"壁厚(cm)\";\n }\n }\n } else {\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.colordDivSwitch_Mgrov = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var colorDivideRO = process.findRenderObjectByName(\"海生物厚度按高程分色\");\n if (colorDivideRO && colorDivideRO.checkBusinessStateIsActive()) {\n var obj = colorDivideRO;\n if (on_off) {\n obj.active(viewer);\n var cutline = {};\n if (colorDivideRO) {\n var obj_1 = colorDivideRO;\n var thicknessIndex = 0;\n for (var i = 0; i < obj_1.heightList.length; i += 2) {\n var bottom = obj_1.heightList[i];\n var top_1 = obj_1.heightList[i + 1];\n var key = bottom + \"~\" + top_1 + \":\" + obj_1.thickness[thicknessIndex];\n var color = [obj_1.color[i / 2 * 4 + 0], obj_1.color[i / 2 * 4 + 1], obj_1.color[i / 2 * 4 + 2], obj_1.color[i / 2 * 4 + 3]];\n if (color[0] === -1 && color[1] === -1 && color[2] === -1) {\n continue;\n }\n color[0] *= 255;\n color[1] *= 255;\n color[2] *= 255;\n cutline[key] = color;\n thicknessIndex++;\n }\n legendManage_1.LegendManage.destory(this.elementKey);\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Marine Growth Zones\";\n component.leftText = \"Color\";\n component.rightText = \"Height Range(m): Thickness(mm)\";\n } else {\n component.title = \"海生物厚度分色\";\n component.leftText = \"颜色\";\n component.rightText = \"高度范围(m): 厚度(mm)\";\n }\n }\n } else {\n obj.inactive(viewer);\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.colordDivSwitch_Corrz = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var colorDivideRO = process.findRenderObjectByName(\"腐蚀余量按高程分色\");\n if (colorDivideRO && colorDivideRO.checkBusinessStateIsActive()) {\n var obj = colorDivideRO;\n if (on_off) {\n obj.active(viewer);\n var cutline = {};\n if (colorDivideRO) {\n var obj_2 = colorDivideRO;\n var thicknessIndex = 0;\n for (var i = 0; i < obj_2.heightList.length; i += 2) {\n var bottom = obj_2.heightList[i];\n var top_2 = obj_2.heightList[i + 1];\n var keyLevelBottom = obj_2.corrzList[thicknessIndex].thicknessBottom;\n if (!keyLevelBottom) {\n keyLevelBottom = 0;\n }\n var keyLevelTop = obj_2.corrzList[thicknessIndex].thicknessTop;\n if (!keyLevelTop) {\n keyLevelTop = 0;\n }\n var key = bottom + \"~\" + top_2 + \":\" + keyLevelBottom + \"~\" + keyLevelTop;\n var color = [obj_2.color[i / 2 * 4 + 0], obj_2.color[i / 2 * 4 + 1], obj_2.color[i / 2 * 4 + 2], obj_2.color[i / 2 * 4 + 3]];\n if (color[0] === -1 && color[1] === -1 && color[2] === -1) {\n continue;\n }\n color[0] *= 255;\n color[1] *= 255;\n color[2] *= 255;\n cutline[key] = color;\n thicknessIndex++;\n }\n legendManage_1.LegendManage.destory(this.elementKey);\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Corrosion Zones\";\n component.leftText = \"Color\";\n component.rightText = \"Height Range(m): Thickness(mm)\";\n } else {\n component.title = \"腐蚀余量分色\";\n component.leftText = \"颜色\";\n component.rightText = \"壁高度范围(m): 厚度(mm)\";\n }\n }\n } else {\n obj.inactive(viewer);\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.colorDivSwitch_ComponentGroup = function (on_off, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n var viewer = this.viewer;\n var process = this.viewer.process;\n var componentGroups = process.findRenderObjectByName(\"构件分组分色\");\n if (componentGroups) {\n for (var i = 0; i < componentGroups.childObjects.length; i++) {\n var obj = componentGroups.childObjects[i];\n if (obj.checkBusinessStateIsActive()) {\n this.setAllComponentGroupVisible(obj.name);\n if (on_off) {\n obj.active(viewer);\n } else {\n obj.inactive(viewer);\n }\n }\n }\n if (on_off) {\n var cutline = {};\n if (componentGroups) {\n legendManage_1.LegendManage.destory(this.elementKey);\n for (var i = 0; i < componentGroups.childObjects.length; i++) {\n var obj = componentGroups.childObjects[i];\n if (obj.checkBusinessStateIsActive()) {\n var color = gs_bim_air_1.Longan.deepClone(obj.color);\n cutline[obj.name] = color;\n }\n }\n var component = legendManage_1.LegendManage.create(this.elementKey, cutline, \"\", \"\", \"\");\n if (this.showEnglishText) {\n component.title = \"Set Colors\";\n component.leftText = \"Color\";\n component.rightText = \"Set Name\";\n } else {\n component.title = \"自定义构件分组分色\";\n component.leftText = \"颜色\";\n component.rightText = \"分组名\";\n }\n }\n } else {\n legendManage_1.LegendManage.destory(this.elementKey);\n }\n }\n if (isUpdate) this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.setAllComponentGroupVisible = function (groupName) {\n var viewer = this.viewer;\n var process = this.viewer.process;\n var componentGroups = process.findRenderObjectByName(\"构件分组分色\");\n if (componentGroups) {\n for (var i = 0; i < componentGroups.childObjects.length; i++) {\n var obj = componentGroups.childObjects[i];\n if (obj.name === groupName) {\n if (obj.checkBusinessStateIsActive()) {\n obj.isVisible = true;\n obj.businessState = gs_ceec_design_2.BusinessState.Editing;\n obj.setChildVisible(viewer, true);\n }\n break;\n }\n }\n }\n };\n CommonInterfaceManager.prototype.colorSwitch = function (state, isUpdate) {\n if (isUpdate === void 0) {\n isUpdate = true;\n }\n switch (state) {\n case SwitchColorDivide.GrupName:\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n this.colorDivSwitch_GrupName(true, isUpdate);\n break;\n case SwitchColorDivide.GrupThickness:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n this.colorDivSwitch_GrupThickness(true, isUpdate);\n break;\n case SwitchColorDivide.Mgrov:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n this.colordDivSwitch_Mgrov(true, isUpdate);\n break;\n case SwitchColorDivide.Corrz:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n this.colordDivSwitch_Corrz(true, isUpdate);\n break;\n case SwitchColorDivide.ComponentGroup:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(true, isUpdate);\n break;\n case SwitchColorDivide.Cancel:\n this.colorDivSwitch_GrupName(false, isUpdate);\n this.colorDivSwitch_GrupThickness(false, isUpdate);\n this.colordDivSwitch_Mgrov(false, isUpdate);\n this.colordDivSwitch_Corrz(false, isUpdate);\n this.colorDivSwitch_ComponentGroup(false, isUpdate);\n break;\n }\n };\n CommonInterfaceManager.prototype.componentGroupColorVisibleSwitch = function (groupName, on_off) {\n var viewer = this.viewer;\n var process = this.viewer.process;\n var componentGroups = process.findRenderObjectByName(\"构件分组分色\");\n if (componentGroups) {\n for (var i = 0; i < componentGroups.childObjects.length; i++) {\n var obj = componentGroups.childObjects[i];\n if (obj.name === groupName) {\n if (obj.checkBusinessStateIsActive()) {\n obj.isVisible = on_off;\n obj.businessState = gs_ceec_design_2.BusinessState.Editing;\n if (on_off) {\n obj.active(viewer);\n } else {\n obj.inactive(viewer);\n }\n obj.setChildVisible(viewer, on_off);\n }\n break;\n }\n }\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.waveSwitch = function (on_off) {\n var process = this.viewer.process;\n var wave = process.findRenderObjectByName(\"波面\");\n if (!wave) {\n return -1;\n }\n var currentWaveItemObject = process.findCaeObjectByNameInChildObject(wave, this.currentSelectWaveItemName);\n if (currentWaveItemObject) {\n if (on_off) {\n currentWaveItemObject.active(this.viewer);\n store_1.default.state.info = currentWaveItemObject.toString();\n } else {\n currentWaveItemObject.inactive(this.viewer);\n store_1.default.state.info = null;\n }\n } else {\n store_1.default.state.info = null;\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.boreholeSwitch = function (on_off) {\n var process = this.viewer.process;\n var parentNode = process.findRenderObjectByName(\"土层和波面\");\n if (!parentNode) {\n return -1;\n }\n var elementKey = \"soild\";\n if (parentNode && on_off) {\n this.boreholeCutLineDisplay = true;\n for (var i = 0; i < parentNode.childObjects.length; i++) {\n parentNode.childObjects[i].active();\n }\n legendManage_1.LegendManage.create(elementKey, this.boreholeLegend, \"土层数据\", \"\", \"土层名\", {\n right: \"0px\",\n bottom: \"0px\"\n });\n } else {\n this.boreholeCutLineDisplay = false;\n for (var i = 0; i < parentNode.childObjects.length; i++) {\n parentNode.childObjects[i].inactive();\n }\n legendManage_1.LegendManage.destory(elementKey);\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.checkPSI = function () {\n var exist = false;\n if (!this.viewer.datReaderManager.psiopt) {\n console.log(\"没有桩土数据.\");\n exist = false;\n } else {\n exist = true;\n }\n return exist;\n };\n CommonInterfaceManager.prototype.checkSeainp = function () {\n var exist = false;\n var ro = this.viewer.process.findRenderObjectByType(\"SeastateLdopt\");\n if (ro) {\n exist = true;\n }\n return exist;\n };\n CommonInterfaceManager.prototype.finiteElementSwitch = function (visible) {\n var members = this.viewer.process.findRenderObjectsByType(\"MemberObject\");\n if (visible) {\n for (var i = 0; i < members.length; i++) {\n var member = members[i];\n member.segmentLengthCoeff = memberObject_1.MemberObject.g_GridRatio;\n if (member.segmentLengthCoeff === -1) {\n member.segmentLengthCoeff = 0.9;\n }\n member.setNeedUpdate();\n }\n this.viewer.updateDisplay();\n } else {\n for (var i = 0; i < members.length; i++) {\n var member = members[i];\n member.segmentLengthCoeff = 1;\n member.setNeedUpdate();\n }\n }\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.editColors = function (backgroundColor, jointColor, memberColorLine, memberColorFace, plateColor) {\n objectColors_1.ObjectColor.jointColor = jointColor;\n objectColors_1.ObjectColor.memberFaceColor = memberColorFace;\n objectColors_1.ObjectColor.memberLineColor = memberColorLine;\n objectColors_1.ObjectColor.plateColor = plateColor;\n this.viewer.backgroundColor = backgroundColor;\n var joints = this.viewer.process.findRenderObjectsByType(\"JointObject\");\n joints.forEach(function (item) {\n item.segment.color.setMarker(jointColor);\n });\n var members = this.viewer.process.findRenderObjectsByType(\"MemberObject\");\n members.forEach(function (item) {\n item.faceColor = memberColorFace;\n item.lineColor = memberColorLine;\n item.setNeedUpdate();\n });\n var plates = this.viewer.process.findRenderObjectsByType(\"PlateObject\");\n plates.forEach(function (item) {\n item.faceColor = plateColor;\n item.setNeedUpdate();\n });\n this.viewer.updateDisplay();\n };\n CommonInterfaceManager.prototype.editLabelColors = function (jointLabel, memberLabel, plateLabel, loadLabel) {\n objectColors_1.ObjectColor.jointLabelColor = jointLabel;\n objectColors_1.ObjectColor.memberLabelColor = memberLabel;\n objectColors_1.ObjectColor.plateLabelColor = plateLabel;\n objectColors_1.ObjectColor.loadLabelColor = loadLabel;\n var joints = this.viewer.process.findRenderObjectsByType(\"JointObject\");\n joints.forEach(function (item) {\n item.isDrawSvg = false;\n item.isDrawSvg = true;\n });\n var members = this.viewer.process.findRenderObjectsByType(\"MemberObject\");\n members.forEach(function (item) {\n item.isDrawSvg = false;\n item.isDrawSvg = true;\n });\n var plates = this.viewer.process.findRenderObjectsByType(\"PlateObject\");\n plates.forEach(function (item) {\n item.isDrawSvg = false;\n item.isDrawSvg = true;\n });\n this.viewer.exeSceneCameraChanged(gs_bim_air_1.Longan.LonganCore.CameraChangeType.Scale);\n };\n CommonInterfaceManager.prototype.editSectionLabelColors = function (sectionViewer, backgroundColor, lineLabelColor, arrowLabelColor, textLabelColor) {\n if (backgroundColor) {\n sectionViewer.backgroundColor = backgroundColor;\n }\n if (lineLabelColor) {\n instanceSectionObject_1.InstanceSectionObject.lineLabelColor = lineLabelColor;\n }\n if (arrowLabelColor) {\n instanceSectionObject_1.InstanceSectionObject.arrowLabelColor = arrowLabelColor;\n }\n if (textLabelColor) {\n instanceSectionObject_1.InstanceSectionObject.textLabelColor = textLabelColor;\n }\n var root = sectionViewer.renderObject;\n root === null || root === void 0 ? void 0 : root.childObjects.forEach(function (section) {\n if (section instanceof sectionObject_1.SectionObject) {\n var iro_1 = sectionViewer.findInstanceObject(section);\n if (iro_1) {\n iro_1.removeSvg();\n setTimeout(function () {\n iro_1.drawSvg();\n }, 10);\n }\n }\n });\n };\n CommonInterfaceManager.prototype.switchActiveViewer = function (elementId) {\n var process = this.viewer.process;\n process.viewers.forEach(function (vi) {\n if (vi.container.id === elementId) {\n process.activeViewer = vi;\n return;\n }\n });\n };\n CommonInterfaceManager.prototype.showHistoryList = function () {\n var historyManager = this.viewer.process.historyManager;\n var list = historyManager.stateList;\n for (var i = 0; i < list.count(); i++) {\n console.log(list.items[i].name);\n }\n return list;\n };\n CommonInterfaceManager.prototype.historyRoll = function (index) {\n var historyManager = this.viewer.process.historyManager;\n var currentIdx = historyManager.currentStateIndex;\n if (currentIdx < index) {\n var time = index - currentIdx;\n for (var i = 0; i < time; i++) {\n this.viewer.process.historyManager.rollForward();\n }\n } else if (currentIdx > index) {\n var time = currentIdx - index;\n for (var i = 0; i < time; i++) {\n this.viewer.process.historyManager.rollBack();\n }\n }\n };\n CommonInterfaceManager.prototype.getLoadConditionList = function () {\n var loadConditions = this.viewer.process.findRenderObjectsByType(\"LoadConditionObject\");\n return loadConditions;\n };\n CommonInterfaceManager.prototype.getLoadConditionCombineList = function () {\n var objects = this.viewer.process.findRenderObjectsByType(\"SeastateLcomb\");\n return objects;\n };\n CommonInterfaceManager.prototype.removeProcessData = function () {\n this.viewer.process.clearRenderObjects(true);\n };\n CommonInterfaceManager.prototype.addJointLoad = function (loadConditionName, loadGroupName, selectedJointName, fx, fy, fz, mx, my, mz) {\n var viewer = this.viewer;\n var pretreatmentRO = viewer.process.findRenderObjectByName(\"后处理计算结果\");\n if (!pretreatmentRO) {\n console.error(\"没有'后处理计算结果'的RO节点\");\n return 2;\n }\n var conditionParent = viewer.process.findCaeObjectByNameInChildObject(pretreatmentRO, \"荷载工况\");\n if (!conditionParent) {\n conditionParent = new gs_ceec_design_2.DesignBaseObject();\n conditionParent.businessState = gs_ceec_design_2.BusinessState.Creating;\n conditionParent.name = \"荷载工况\";\n viewer.process.addRenderObject(pretreatmentRO, conditionParent);\n }\n var loadConditionRO = null;\n loadConditionRO = viewer.process.findCaeObjectByNameInChildObject(conditionParent, loadConditionName);\n if (!loadConditionRO) {\n loadConditionRO = new loadConditionObject_1.LoadConditionObject(loadConditionName);\n loadConditionRO.businessState = gs_ceec_design_2.BusinessState.Creating;\n viewer.process.addRenderObject(conditionParent, loadConditionRO);\n } else {\n loadConditionRO.businessState = gs_ceec_design_2.BusinessState.Editing;\n }\n var loadGroupRO = viewer.process.findCaeObjectByNameInChildObject(loadConditionRO, loadGroupName);\n if (!loadGroupRO) {\n loadGroupRO = new loadGroupObject_1.LoadGroupObject(loadGroupName);\n loadGroupRO.businessState = gs_ceec_design_2.BusinessState.Creating;\n viewer.process.addRenderObject(loadConditionRO, loadGroupRO);\n } else {\n loadGroupRO.businessState = gs_ceec_design_2.BusinessState.Editing;\n }\n for (var i = 0; i < loadGroupRO.childObjects.length; i++) {\n var load = loadGroupRO.childObjects[i];\n if (load instanceof jointLoadObject_1.JointLoadObject) {\n if (load.jointName === selectedJointName) {\n return 3;\n }\n }\n }\n var jointLoad = new jointLoadObject_1.JointLoadObject(loadConditionRO.name, loadGroupName);\n jointLoad.name = \"Joint:\" + selectedJointName;\n jointLoad.businessState = gs_ceec_design_2.BusinessState.Creating;\n jointLoad.jointName = selectedJointName;\n jointLoad.forceXDirection = fx;\n jointLoad.forceYDirection = fy;\n jointLoad.forceZDirection = fz;\n jointLoad.momentAboutXAxis = mx;\n jointLoad.momentAboutYAxis = my;\n jointLoad.momentAboutZAxis = mz;\n viewer.process.addRenderObject(loadGroupRO, jointLoad);\n return 1;\n };\n CommonInterfaceManager.prototype.editJointLoad = function (jointLoad, fx, fy, fz, mx, my, mz) {\n jointLoad.businessState = gs_ceec_design_2.BusinessState.Editing;\n jointLoad.forceXDirection = fx;\n jointLoad.forceYDirection = fy;\n jointLoad.forceZDirection = fz;\n jointLoad.momentAboutXAxis = mx;\n jointLoad.momentAboutYAxis = my;\n jointLoad.momentAboutZAxis = mz;\n };\n CommonInterfaceManager.prototype.boreholeChange = function (boreholeName) {\n var elementKey = \"soild\";\n if (this.boreholeCutLineDisplay) {\n this.boreholeCutLineDisplay = false;\n legendManage_1.LegendManage.destory(elementKey);\n var currentBoreholeObjects = this.currentBoreholeObjects;\n for (var i = 0; i < currentBoreholeObjects.length; i++) {\n if (currentBoreholeObjects[i].name === boreholeName) {\n currentBoreholeObjects[i].cutlienAcitve = true;\n this.activeBoreholeName = boreholeName;\n this.boreholeCutLineDisplay = true;\n var cutLineLegend = currentBoreholeObjects[i].geCutline();\n legendManage_1.LegendManage.create(elementKey, cutLineLegend, \"土层数据\", \"颜色\", \"土层名\", {\n right: \"0px\",\n bottom: \"0px\"\n });\n } else {\n currentBoreholeObjects[i].cutlienAcitve = false;\n }\n }\n }\n };\n return CommonInterfaceManager;\n }(gs_bim_air_1.Longan.ViewerManagerBase);\n exports.CommonInterfaceManager = CommonInterfaceManager;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2RngvbWFuYWdlcnMvaW50ZXJmYWNlTWFuYWdlcnMvY29tbW9uSW50ZXJmYWNlTWFuYWdlci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1tuYW1lXS8uL3BhY2thZ2VzL2NhZURlc2lnbi9zcmMvZ3NEZXZGeC9tYW5hZ2Vycy9pbnRlcmZhY2VNYW5hZ2Vycy9jb21tb25JbnRlcmZhY2VNYW5hZ2VyLnRzPzcxNWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ0FFTGlnaHRPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZUxpZ2h0T2JqZWN0L2NhZUxpZ2h0T2JqZWN0XCI7XG5pbXBvcnQgeyBKb2ludE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9qb2ludE9iamVjdFwiO1xuaW1wb3J0IHsgTG9uZ2FuIH0gZnJvbSBcImdzLWJpbS1haXJcIjtcbmltcG9ydCB7IFZpZXdlciB9IGZyb20gXCIuLi8uLi92aWV3ZXJcIjtcbmltcG9ydCB7IFNlbGVjdG9yRmlsaXRlciB9IGZyb20gXCIuL3NlbGVjdGlvbkludGVyZmFjZU1hbmFnZXJcIjtcbmltcG9ydCB7IENBRVRhc2sgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC90YXNrcy9jYWVUYXNrXCI7XG5pbXBvcnQgcmVuZGVyT2JqZWN0U2VydmljZSBmcm9tIFwiLi4vLi4vLi4vYXBpL3JlbmRlck9iamVjdFNlcnZpY2VcIjtcbmltcG9ydCB7IFByb2Nlc3MgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9wcm9jZXNzXCI7XG5pbXBvcnQgeyBNb2RlbFRpdGxlIH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9jYWVPYmplY3RzL29wdGlvbk9iamVjdHMvbW9kZWxUaXRsZVwiO1xuaW1wb3J0IHsgQ2FyZFRJVExFIH0gZnJvbSBcIi4uLy4uLy4uL2NhZUNhcmRFZGl0b3IvY2FlQ2FyZE9iamVjdHMvc2FjaW5wL2NhcmRUSVRMRVwiO1xuaW1wb3J0IHsgUGVyc2lzdGVuY2VNYW5hZ2VyIH0gZnJvbSBcImdzLWNlZWMtZGVzaWduXCI7XG5pbXBvcnQgeyBNZW1iZXJPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZU9iamVjdHMvbWVtYmVyT2JqZWN0XCI7XG5pbXBvcnQgeyBCdXNpbmVzc1N0YXRlLCBEZXNpZ25CYXNlT2JqZWN0IH0gZnJvbSBcImdzLWNlZWMtZGVzaWduXCI7XG5pbXBvcnQgeyBNZ3Jvdk9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9wcmV0cmVhdG1lbnQvbWdyb3ZPYmplY3RcIjtcbmltcG9ydCB7IENvcnJ6T2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9jYWVPYmplY3RzL3ByZXRyZWF0bWVudC9jb3Jyek9iamVjdFwiO1xuaW1wb3J0IHsgQ29sb3JEaXZHcnVwSWRPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL3ByZXRyZWF0bWVudE9iamVjdHMvY29sb3JEaXZHcnVwSWRPYmplY3RcIjtcbmltcG9ydCB7IENvbG9yRGl2R3J1cFRoaWNrbmVzc09iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy9jb2xvckRpdkdydXBUaGlja25lc3NPYmplY3RcIjtcbmltcG9ydCB7IENvbG9yRGl2TUdST1ZPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL3ByZXRyZWF0bWVudE9iamVjdHMvY29sb3JEaXZNR1JPVk9iamVjdFwiO1xuaW1wb3J0IHsgQ29sb3JEaXZDT1JSWk9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy9jb2xvckRpdkNPUlJaT2JqZWN0XCI7XG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4uLy4uLy4uL3N0b3JlXCI7XG5pbXBvcnQgeyBDdXRsaW5lR3J1cFRoaWNrbmVzc09iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy9jdXRsaW5lR3J1cFRoaWNrbmVzc09iamVjdFwiO1xuaW1wb3J0IHsgQ3V0bGluZUdydXBJZE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy9jdXRsaW5lR3J1cElkT2JqZWN0XCI7XG5pbXBvcnQgeyBQbGF0ZU9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9wbGF0ZU9iamVjdFwiO1xuaW1wb3J0IHsgQ29tbWFuZE1hbmFnZXIgfSBmcm9tIFwiLi4vY29tbWFuZE1hbmFnZXJcIjtcbmltcG9ydCB7IEdydXBPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZU9iamVjdHMvZ3J1cE9iamVjdFwiO1xuaW1wb3J0IHsgV2F2ZU9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy93YXZlT2JqZWN0XCI7XG5pbXBvcnQgeyBXYXZlSXRlbU9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy93YXZlSXRlbU9iamVjdFwiO1xuaW1wb3J0IHsgQ29sb3JEaXZDb21wb25lbnRHcm91cE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy9jb2xvckRpdkNvbXBvbmVudEdyb3VwT2JqZWN0XCI7XG5pbXBvcnQgeyBCb3JlaG9sZXNPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL3ByZXRyZWF0bWVudE9iamVjdHMvYm9yZWhvbGVPYmplY3RcIjtcbmltcG9ydCB7IE9iamVjdENvbG9yIH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9jYWVPYmplY3RzL29iamVjdENvbG9yc1wiO1xuaW1wb3J0IHsgSW5zdGFuY2VTZWN0aW9uT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9jYWVPYmplY3RzL2luc3RhbmNlU2VjdGlvbk9iamVjdFwiO1xuaW1wb3J0IHsgU2VjdGlvbk9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9zZWN0aW9uT2JqZWN0XCI7XG5pbXBvcnQgeyBTZWN0aW9uVmlld2VyIH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvc2VjdGlvblZpZXdlclwiO1xuaW1wb3J0IHsgTG9hZENvbmRpdGlvbk9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvbG9hZE9iamVjdHMvbG9hZENvbmRpdGlvbk9iamVjdFwiO1xuaW1wb3J0IHsgTG9hZEdyb3VwT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9sb2FkT2JqZWN0cy9sb2FkR3JvdXBPYmplY3RcIjtcbmltcG9ydCB7IEpvaW50TG9hZE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvbG9hZE9iamVjdHMvam9pbnRMb2FkT2JqZWN0XCI7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSBcImVsZW1lbnQtdWlcIjtcbmltcG9ydCB7IExlZ2VuZE1hbmFnZSB9IGZyb20gXCIuLi8uLi8uLi92aWV3ZXJXcmFwcGVyL21vZHVsZS9sZWdlbmRNYW5hZ2VcIjtcblxuZXhwb3J0IGVudW0gU3dpdGNoQ29sb3JEaXZpZGUge1xuICBHcnVwTmFtZSA9IDAsIC8v5oyJ5p2G5Lu25oiq6Z2i57uE5ZCN5YiG6ImyXG4gIEdydXBUaGlja25lc3MgPSAxLCAvL+aMieadhuS7tuWjgeWOmuWIhuiJslxuICBNZ3JvdiA9IDIsIC8v5oyJ5rW355Sf54mp5Y6a5bqm5YiG6ImyXG4gIENvcnJ6ID0gMywgLy/mjInohZDomoDkvZnph4/liIboibJcbiAgQ2FuY2VsID0gNCwgLy8g5Y+W5raI5YiG6Imy5pWI5p6cXG4gIENvbXBvbmVudEdyb3VwID0gNSwgLy8g6Ieq5a6a5LmJ5p6E5Lu25YiG6Imy5pWI5p6cXG4gIC8vIEJvcmVob2xlID0gNiwgLy8g5Zyf5bGC5pWI5p6cXG59XG5cbmV4cG9ydCBjbGFzcyBDb21tb25JbnRlcmZhY2VNYW5hZ2VyIGV4dGVuZHMgTG9uZ2FuLlZpZXdlck1hbmFnZXJCYXNlIHtcbiAgLy8gZWZmZWN0T2JqZWN0cyA9IG5ldyBMb25nYW4uTGlzdDxEZXNpZ25CYXNlT2JqZWN0PigpO1xuICBjdXJyZW50U2VsZWN0V2F2ZUl0ZW1OYW1lOiBzdHJpbmcgPSBudWxsO1xuICBjdXJyZW50Qm9yZWhvbGVPYmplY3RzOiBBcnJheTxCb3JlaG9sZXNPYmplY3Q+ID0gbnVsbDtcbiAgYm9yZWhvbGVMZWdlbmQgPSBudWxsO1xuICBib3JlaG9sZUN1dExpbmVEaXNwbGF5ID0gZmFsc2U7XG5cbiAgc2hvd0VuZ2xpc2hUZXh0ID0gZmFsc2U7XG5cbiAgLy8g5aSN5Yi25aSW6YOo5LqL5Lu2LlxuICBjb3B5ZWRFeHRlcm5hbEV2ZW50ID0gbnVsbDtcblxuICBlbGVtZW50S2V5ID0gXCJjdXRsaW5lXCI7XG4gIGFjdGl2ZUJvcmVob2xlTmFtZSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3Iodmlld2VyOiBWaWV3ZXIpIHtcbiAgICBzdXBlcih2aWV3ZXIpO1xuICB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIOe8lui+kemhueebruS/oeaBryjlkI3np7DjgIHlpIfms6gpXG4gIC8vICAqIEBwYXJhbSBwcm9qZWN0SWQg6aG555uuaWRcbiAgLy8gICogQHBhcmFtIHByb2plY3ROYW1lIOmhueebruWQjeensFxuICAvLyAgKiBAcGFyYW0gcHJvamVjdFJlbWFya3Mg6aG555uu5aSH5rOoXG4gIC8vICAqIEByZXR1cm5zIOaOpeWPo+S/oeaBr1xuICAvLyAgKi9cbiAgLy8gZWRpdFByb2plY3QocHJvamVjdElkOiBzdHJpbmcsIHByb2plY3ROYW1lOiBzdHJpbmcsIHByb2plY3RSZW1hcmtzOiBzdHJpbmcpIHtcbiAgLy8gICBpZiAoIXByb2plY3RJZCB8fCAhcHJvamVjdE5hbWUpIHtcbiAgLy8gICAgIHJldHVybjtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIFByb2plY3RzQXBpLmVkaXRQcm9qZWN0KHByb2plY3RJZCwge1xuICAvLyAgICAgbmFtZTogcHJvamVjdE5hbWUsXG4gIC8vICAgICByZW1hcmtzOiBwcm9qZWN0UmVtYXJrcyxcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIC8vIC8qKlxuICAvLyAgKiDojrflj5bpobnnm67liJfooahcbiAgLy8gICogQHJldHVybnMg6L+U5Zue6aG555uu5YiX6KGo5pWw5o2uXG4gIC8vICAqL1xuICAvLyBnZXRQcm9qZWN0TGlzdCgpIHtcbiAgLy8gICBQcm9qZWN0c0FwaS5nZXRQcm9qZWN0cygpLnRoZW4oKGRhdGEpID0+IHtcbiAgLy8gICAgIHJldHVybiBkYXRhO1xuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIOaWsOW7uumhueebrlxuICAvLyAgKiBAcGFyYW0gcHJvamVjdE5hbWUg6aG555uu5ZCNXG4gIC8vICAqIEBwYXJhbSBwcm9qZWN0UmVtYXJrcyDpobnnm67lpIfms6hcbiAgLy8gICogQHJldHVybnNcbiAgLy8gICovXG4gIC8vIGNyZWF0ZVByb2plY3RDb25maXJtKHByb2plY3ROYW1lOiBzdHJpbmcsIHByb2plY3RSZW1hcmtzOiBzdHJpbmcpIHtcbiAgLy8gICBpZiAoIXByb2plY3ROYW1lKSB7XG4gIC8vICAgICByZXR1cm47XG4gIC8vICAgfVxuICAvLyAgIGNvbnNvbGUubG9nKFwicHJvamVjdFJlbWFya3M6XCIsIHByb2plY3RSZW1hcmtzKTtcbiAgLy8gICByZXR1cm4gUHJvamVjdHNBcGkuY3JlYXRlUHJvamVjdCh7XG4gIC8vICAgICBuYW1lOiBwcm9qZWN0TmFtZSxcbiAgLy8gICAgIHJlbWFya3M6IHByb2plY3RSZW1hcmtzLFxuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluaooeWei1Bsb3RUaXRsZVxuICAgKiBAcmV0dXJucyDmqKHlnotQbG90VGl0bGVcbiAgICovXG4gIHNob3dQbG90VGl0bGUoKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuICAgIGxldCB0aXRsZVJPID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlUeXBlKFwiTW9kZWxUaXRsZVwiKTtcbiAgICBpZiAodGl0bGVSTykge1xuICAgICAgaWYgKHRpdGxlUk8gaW5zdGFuY2VvZiBNb2RlbFRpdGxlKSB7XG4gICAgICAgIHJlc3VsdCA9IHRpdGxlUk8uY2FyZE9iamVjdC50aXRsZS52YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gXCJBY3RpdmUgU3RydWN0dXJlXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiDnvJbovpHmqKHlnotQbG90VGl0bGUuXG4gICAqIEBwYXJhbSB0aXRsZVxuICAgKi9cbiAgZWRpdFBsb3RUaXRsZSh0aXRsZTogc3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzIGFzIFByb2Nlc3M7XG5cbiAgICBpZiAoIXRpdGxlIHx8IHRpdGxlLnRyaW1FbmQoKSA9PT0gXCJcIikge1xuICAgICAgbGV0IHRpdGxlUk8gPSBwcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeVR5cGUoXCJNb2RlbFRpdGxlXCIpIGFzIE1vZGVsVGl0bGU7XG4gICAgICBpZiAodGl0bGVSTykge1xuICAgICAgICAvLyDliKDpmaTmoIfpopjmiJDlip9cbiAgICAgICAgdGl0bGVSTy50ZW1wRGVsZXRlKHRoaXMudmlld2VyIGFzIFZpZXdlcik7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBpc2xlZ2FsID0gdGhpcy5jaGVjVGl0bGVrTmFtZWxlZ2FsKHRpdGxlKTtcblxuICAgIGlmICghaXNsZWdhbCkge1xuICAgICAgLy8g5qCH6aKY5LiN5ZCI5rOVXG4gICAgICByZXR1cm4gMjtcbiAgICB9XG5cbiAgICBsZXQgdGl0bGVSTyA9IHByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5VHlwZShcIk1vZGVsVGl0bGVcIik7XG4gICAgaWYgKHRpdGxlUk8pIHtcbiAgICAgIGlmICh0aXRsZVJPIGluc3RhbmNlb2YgTW9kZWxUaXRsZSkge1xuICAgICAgICB0aXRsZVJPLmNhcmRPYmplY3QudGl0bGUudmFsdWUgPSB0aXRsZTtcbiAgICAgICAgdGl0bGVSTy5jYXJkRGF0YSA9IHRpdGxlUk8uY2FyZE9iamVjdC5nZXRMaW5lKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB0aXRsZVJPID0gbmV3IE1vZGVsVGl0bGUoKTtcbiAgICAgIHRpdGxlUk8ubmFtZSA9IFwiVElUTEVcIjtcbiAgICAgIGxldCBsaW5lID0gXCIgICAgIFwiICsgdGl0bGU7XG4gICAgICB0aXRsZVJPLmNhcmREYXRhID0gbGluZTtcbiAgICAgIHRpdGxlUk8uY2FyZE9iamVjdCA9IG5ldyBDYXJkVElUTEUobGluZSk7XG4gICAgICBwcm9jZXNzLmFkZFJlbmRlck9iamVjdChcbiAgICAgICAgcHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5zYWNpbnBOb2RlLFxuICAgICAgICB0aXRsZVJPXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVjVGl0bGVrTmFtZWxlZ2FsKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCByZWcgPSAvXltBLVowLTldKiQvO1xuICAgIGlmICghcmVnLnRlc3QobmFtZSkgfHwgbmFtZS50cmltRW5kKCkubGVuZ3RoID4gMTI1KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIuepuumXtOeCueWQjeensOS4jeespuWQiOinhOiMg1wiKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICog6YeN572u6KeG5Zu+XG4gICAqL1xuICByZXNldFZpZXcoaXNTZXRWaWV3TW9kZSA9IHRydWUpIHtcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5hY3RpdmVWaWV3ZXIgYXMgVmlld2VyO1xuICAgIC8vIOWPlua2iOmrmOS6rlxuICAgIHZpZXdlci5zZWxlY3Rpb25NYW5hZ2VyLmNsZWFyQWxsU2VsZWN0aW9uQW5kSGlnaGxpZ2h0KCk7XG4gICAgLy8g5YWz6Zet5YWo6YOo5ZG95LukXG4gICAgKHZpZXdlci5wcm9jZXNzLmNvbW1hbmRNYW5hZ2VyIGFzIENvbW1hbmRNYW5hZ2VyKS5jbG9zZUFsbENvbW1hbmRzKCk7XG4gICAgLy8g5YWz6Zet5ZCE56eN5byA5YWzXG4gICAgdmlld2VyLmNvbW1vbkludGVyZmFjZU1hbmFnZXIuY29sb3JTd2l0Y2goU3dpdGNoQ29sb3JEaXZpZGUuQ2FuY2VsKTtcbiAgICB2aWV3ZXIuY29tbW9uSW50ZXJmYWNlTWFuYWdlci5maW5pdGVFbGVtZW50U3dpdGNoKGZhbHNlKTtcbiAgICAvLyDms6LpnaLlvIDlhbNcbiAgICB2aWV3ZXIuY29tbW9uSW50ZXJmYWNlTWFuYWdlci53YXZlU3dpdGNoKGZhbHNlKTtcbiAgICAvLyDlnJ/lsYLlvIDlhbNcbiAgICB2aWV3ZXIuY29tbW9uSW50ZXJmYWNlTWFuYWdlci5ib3JlaG9sZVN3aXRjaChmYWxzZSk7XG4gICAgLy8g5Y+W5raI5ZCE56eN5qCH562+LlxuICAgIHZpZXdlci52aWV3SW50ZXJmYWNlTWFuYWdlci5zZXRKb2ludE51bWJlclZpc2libGUoZmFsc2UpO1xuICAgIHZpZXdlci52aWV3SW50ZXJmYWNlTWFuYWdlci5zZXRKb2ludFJlc3RyYWludFZpc2libGUoZmFsc2UpO1xuXG4gICAgdmlld2VyLnZpZXdJbnRlcmZhY2VNYW5hZ2VyLnNldE1lbWJlckZpeGl0eVZpc2libGUoZmFsc2UpO1xuICAgIHZpZXdlci52aWV3SW50ZXJmYWNlTWFuYWdlci5zZXRNZW1iZXJMb2NhbEF4aXNWaXNpYmxlKGZhbHNlKTtcbiAgICB2aWV3ZXIudmlld0ludGVyZmFjZU1hbmFnZXIuc2V0TWVtYmVyU2VjdGlvblNpemVWaXNpYmxlKGZhbHNlKTtcbiAgICB2aWV3ZXIudmlld0ludGVyZmFjZU1hbmFnZXIuc2V0R3J1cE51bWJlclZpc2libGUoZmFsc2UpO1xuXG4gICAgLy8gLy8g5oGi5aSN5Zyo5bmz6Z2i5LiK5pi+56S6XG4gICAgLy8gdmlld2VyLmNvbW1vbkludGVyZmFjZU1hbmFnZXIuZWZmZWN0T2JqZWN0cy5mb3JFYWNoKChvYmopID0+IHtcbiAgICAvLyAgIHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qob2JqKS52aWV3ZXJWaXNpYmxlID0gdHJ1ZTtcbiAgICAvLyAgIHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qob2JqKS52aXNpYmxlID0gdHJ1ZTtcbiAgICAvLyB9KTtcbiAgICAvLyB2aWV3ZXIuY29tbW9uSW50ZXJmYWNlTWFuYWdlci5lZmZlY3RPYmplY3RzLmNsZWFyKCk7XG5cbiAgICBsZXQgcHJvY2VzcyA9IHZpZXdlci5wcm9jZXNzIGFzIFByb2Nlc3M7XG4gICAgcHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5qb2ludE5vZGU/LmNoaWxkT2JqZWN0cy5mb3JFYWNoKFxuICAgICAgKG9iaikgPT4ge1xuICAgICAgICB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KG9iaikudmlld2VyVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qob2JqKS52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgKG9iaiBhcyBEZXNpZ25CYXNlT2JqZWN0KS5jbGVhclN2ZygpO1xuICAgICAgfVxuICAgICk7XG4gICAgcHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5tZW1iZXJOb2RlPy5jaGlsZE9iamVjdHMuZm9yRWFjaChcbiAgICAgIChvYmopID0+IHtcbiAgICAgICAgdmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChvYmopLnZpZXdlclZpc2libGUgPSB0cnVlO1xuICAgICAgICB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KG9iaikudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIChvYmogYXMgRGVzaWduQmFzZU9iamVjdCkuY2xlYXJTdmcoKTtcbiAgICAgIH1cbiAgICApO1xuICAgIHByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlPy5jaGlsZE9iamVjdHMuZm9yRWFjaChcbiAgICAgIChvYmopID0+IHtcbiAgICAgICAgdmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChvYmopLnZpZXdlclZpc2libGUgPSB0cnVlO1xuICAgICAgICB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KG9iaikudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIChvYmogYXMgRGVzaWduQmFzZU9iamVjdCkuY2xlYXJTdmcoKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdmlld2VyLnZpZXdJbnRlcmZhY2VNYW5hZ2VyLm1lbWJlckxpbmVWaWV3KGZhbHNlKTtcbiAgICB2aWV3ZXIudmlld0ludGVyZmFjZU1hbmFnZXIucGxhdGVMaW5lVmlldyhmYWxzZSk7XG4gICAgLy8g6ZWc5aS05aSN5L2NLlxuICAgIGlmIChpc1NldFZpZXdNb2RlKSB7XG4gICAgICB2aWV3ZXIuc2V0Vmlld01vZGUoTG9uZ2FuLlZpZXdNb2RlLk9GU0lzbywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWIt+aWsOWFqOmDqHZpZXdlci5cbiAgICovXG4gIHJlZHJhdygpIHtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3M7XG4gICAgcHJvY2Vzcy52aWV3ZXJzLmZvckVhY2goKHZpKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcInZpXCIpO1xuICAgICAgdmkuZXhlU2NlbmVDYW1lcmFDaGFuZ2VkKFxuICAgICAgICBMb25nYW4uTG9uZ2FuQ29yZS5DYW1lcmFDaGFuZ2VUeXBlLlJvdGF0ZSB8XG4gICAgICAgICAgTG9uZ2FuLkxvbmdhbkNvcmUuQ2FtZXJhQ2hhbmdlVHlwZS5TY2FsZSB8XG4gICAgICAgICAgTG9uZ2FuLkxvbmdhbkNvcmUuQ2FtZXJhQ2hhbmdlVHlwZS5UcmFuc2xhdGVcbiAgICAgICk7XG4gICAgICB2aS51cGRhdGVEaXNwbGF5KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICog5qOA5rWL5piv5ZCm5pyJ6ZmQ5YWD5qih5Z6LXG4gICAqL1xuICBjaGVja0lzRmluaXRlRWxlbWVudCgpIHtcbiAgICBsZXQgaXNGRSA9IHRydWU7XG5cbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXIgYXMgVmlld2VyO1xuICAgIGxldCBncnVwTm9kZSA9IHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLmdydXBOb2RlO1xuICAgIGdydXBOb2RlPy5jaGlsZE9iamVjdHMuZm9yRWFjaCgoZ3J1cCkgPT4ge1xuICAgICAgaWYgKGdydXAgaW5zdGFuY2VvZiBHcnVwT2JqZWN0KSB7XG4gICAgICAgIGlmIChncnVwLmdydXBTZWdtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgaXNGRSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBpc0ZFO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zb2xlLmxvZyhcImlzRkU6XCIsIGlzRkUpO1xuICAgIHJldHVybiBpc0ZFO1xuICB9XG5cbiAgLyoqXG4gICAqIOaJk+W8gOeOsOacieaooeWei1xuICAgKiBAcGFyYW0gbW9kZWxJZCDmqKHlnotJZFxuICAgKiBAcGFyYW0gaXNSZXBsYWNlIOaYr+WQpua4hemZpHZpZXdlcuW3suWKoOi9veeahOaVsOaNrlxuICAgKi9cbiAgb3Blbk1vZGVsKG1vZGVsSWQ6IHN0cmluZywgaXNSZXBsYWNlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHZpZXdlciA9IHRoaXMudmlld2VyIGFzIFZpZXdlcjtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB2aWV3ZXIubG9hZE1vZGVsKG1vZGVsSWQsIGlzUmVwbGFjZSkudGhlbigobW9kZWwpID0+IHtcbiAgICAgICAgLy8g5riF56m65Y6G5Y+y5pON5L2cLlxuICAgICAgICB2aWV3ZXIucHJvY2Vzcy5oaXN0b3J5TWFuYWdlci5jbGVhckRlbHRhU3RhdGUoKTtcbiAgICAgICAgdmlld2VyLnNjZW5lU2VnbWVudC5yZW5kZXJpbmdPcHRpb25zLmN1bGxpbmdNYXhpbXVtRXh0ZW50ID0gMDtcblxuICAgICAgICBjb25zb2xlLmxvZyhcIm1vZGVsXCIsIG1vZGVsKTtcbiAgICAgICAgbGV0IHJvID0gdmlld2VyLnJlbmRlck9iamVjdDtcbiAgICAgICAgbGV0IGNhZVRhc2sgPSBuZXcgQ0FFVGFzayhybywgdmlld2VyKTtcbiAgICAgICAgY2FlVGFzay53b3JrUmVuZGVyT2JqZWN0U2VydmljZSA9IHJlbmRlck9iamVjdFNlcnZpY2U7XG4gICAgICAgIHZpZXdlci5wcm9jZXNzLnRhc2tNYW5hZ2VyLmV4ZWN1dGUoY2FlVGFzayk7XG5cbiAgICAgICAgdmlld2VyLnN0cnVjdHVyZVRyZWVNYW5hZ2VyLnVwZGF0ZSgpO1xuICAgICAgICB2aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICAgICAgICB2aWV3ZXIuc2V0Vmlld01vZGUoTG9uZ2FuLlZpZXdNb2RlLk9GU0lzbywgdHJ1ZSk7XG5cbiAgICAgICAgLy8g6K+35rGC5ZCO5aSE55CG5L2/55So55qERELmlbDmja4uXG4gICAgICAgIHZpZXdlci5wb3N0SW50ZXJmYWNlTWFuYWdlci5yZXF1ZXN0REJEYXRhKCk7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICog5qOA5p+l5qih5Z6L5piv5ZCm6ZyA6KaB5L+d5a2YKOS5n+WwseaYr+WvueavlOaooeWei+W9k+WJjeeKtuaAgeS4juWOn+Wni+eKtuaAgeaYr+WQpuWPkeeUn+S6huaUueWPmCkuXG4gICAqIEByZXR1cm5zIHRydWU66ZyA6KaB5L+d5a2YO2ZhbHNlOuS4jemcgOimgeS/neWtmC5cbiAgICovXG4gIGNoZWNrTmVlZFNhdmUoKSB7XG4gICAgLy9cbiAgICBsZXQgcm9vdFJPID0gKHRoaXMudmlld2VyLnByb2Nlc3MgYXMgYW55KS5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlclxuICAgICAgLnJvb3ROb2RlO1xuICAgIGlmIChyb290Uk8gaW5zdGFuY2VvZiBDQUVMaWdodE9iamVjdCkge1xuICAgICAgbGV0IHJlc3VsdCA9IFBlcnNpc3RlbmNlTWFuYWdlci5zYXZlRGVzaWduKHJvb3RSTyk7XG4gICAgICBpZiAoXG4gICAgICAgIHJlc3VsdC5jcmVhdGVMaXN0Lmxlbmd0aCA+IDAgfHxcbiAgICAgICAgcmVzdWx0LmRlbGV0ZUxpc3QubGVuZ3RoID4gMCB8fFxuICAgICAgICByZXN1bHQuZWRpdExpc3QubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiDkv53lrZjlvZPliY3pobnnm65cbiAgICovXG4gIHNhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gbGV0IGZsYWcgPSB0aGlzLmNoZWNrTmVlZFNhdmUoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IHJvb3RSTyA9ICh0aGlzLnZpZXdlci5wcm9jZXNzIGFzIGFueSkuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXJcbiAgICAgICAgLnJvb3ROb2RlO1xuICAgICAgaWYgKHJvb3RSTyBpbnN0YW5jZW9mIENBRUxpZ2h0T2JqZWN0KSB7XG4gICAgICAgIHJvb3RSTy5zYXZlKHRoaXMudmlld2VyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOWPpuWtmOWNoeeJh+aVsOaNrlxuICAgKi9cbiAgZXhwb3J0REFURmlsZSgpIHtcbiAgICBjb25zb2xlLmxvZyhcImV4cG9ydFwiKTtcbiAgICBsZXQgZGF0Q2FyZERhdGEgPSAodGhpcy52aWV3ZXIgYXMgVmlld2VyKS5kYXRXcml0ZXJNYW5hZ2VyLmV4cG9ydERBVEZpbGUoKTtcbiAgICBkYXRDYXJkRGF0YSArPSBcIkVORFwiO1xuXG4gICAgcmV0dXJuIGRhdENhcmREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIOWvvOWHuuadhuS7tuaVsOaNrlxuICAgKiBAcGFyYW0gaXNFeHBvcnRBbGwgdHJ1ZTrlr7zlh7rlhajpg6jmnYbku7bmlbDmja7vvJtmYWxzZTrku4Xlr7zlh7rmkYTlg4/mnLrlhoXnmoTmnYbku7bmlbDmja5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGV4cG9ydE1lbWJlckRhdGEoaXNFeHBvcnRBbGwgPSB0cnVlKSB7XG4gICAgY29uc29sZS5sb2coXCJleHBvcnQgbWVtYmVyXCIpO1xuICAgIGxldCBkYXRDYXJkRGF0YSA9ICh0aGlzLnZpZXdlciBhcyBWaWV3ZXIpLmRhdFdyaXRlck1hbmFnZXIuZXhwb3J0TWVtYmVyRGF0YShcbiAgICAgIGlzRXhwb3J0QWxsXG4gICAgKTtcbiAgICBkYXRDYXJkRGF0YSArPSBcIkVORFwiO1xuXG4gICAgcmV0dXJuIGRhdENhcmREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIOWvvOWHuuahqeWfuuaVsOaNrlxuICAgKiBAcGFyYW0gaXNFeHBvcnRBbGwgIHRydWU65a+85Ye65YWo6YOo5qGp5Z+65pWw5o2u77ybZmFsc2U65LuF5a+85Ye65pGE5YOP5py65YaF55qE5qGp5Z+65pWw5o2uXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBleHBvcnRQaWxlRGF0YShpc0V4cG9ydEFsbCA9IHRydWUpIHtcbiAgICBjb25zb2xlLmxvZyhcImV4cG9ydCBwaWxlXCIpO1xuICAgIGxldCBkYXRDYXJkRGF0YSA9ICh0aGlzLnZpZXdlciBhcyBWaWV3ZXIpLmRhdFdyaXRlck1hbmFnZXIuZXhwb3J0UGlsZURhdGEoXG4gICAgICBpc0V4cG9ydEFsbFxuICAgICk7XG4gICAgaWYgKGRhdENhcmREYXRhID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZGF0Q2FyZERhdGEgKz0gXCJFTkRcIjtcblxuICAgIHJldHVybiBkYXRDYXJkRGF0YTtcbiAgfVxuXG4gIC8vIGV4cG9ydFNlY3Rpb25EYXRhKGRhdENhcmREYXRhOiBzdHJpbmcpIHtcbiAgLy8gICBsZXQgdHVicyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJUdWJTZWN0aW9uT2JqZWN0XCIpO1xuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHVicy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgbGV0IG9iaiA9IHR1YnNbaV0gYXMgVHViU2VjdGlvbk9iamVjdDtcbiAgLy8gICAgIGlmIChcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVsZXRpbmcgfHxcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVhZFxuICAvLyAgICAgKSB7XG4gIC8vICAgICAgIGNvbnRpbnVlO1xuICAvLyAgICAgfVxuICAvLyAgICAgbGV0IGxpbmUgPSBvYmouc2VyaWFsaXplVG9DYXJkKCk7XG4gIC8vICAgICBkYXRDYXJkRGF0YSArPSBsaW5lICs9IFwiXFxuXCI7XG4gIC8vICAgfVxuXG4gIC8vICAgbGV0IHdmcyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJXRlNlY3Rpb25PYmplY3RcIik7XG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3ZnMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgIGxldCBvYmogPSB3ZnNbaV0gYXMgV0ZTZWN0aW9uT2JqZWN0O1xuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWxldGluZyB8fFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWFkXG4gIC8vICAgICApIHtcbiAgLy8gICAgICAgY29udGludWU7XG4gIC8vICAgICB9XG4gIC8vICAgICBsZXQgbGluZSA9IG9iai5zZXJpYWxpemVUb0NhcmQoKTtcbiAgLy8gICAgIGRhdENhcmREYXRhICs9IGxpbmUgKz0gXCJcXG5cIjtcbiAgLy8gICB9XG5cbiAgLy8gICBsZXQgYm94cyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJCb3hTZWN0aW9uT2JqZWN0XCIpO1xuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgYm94cy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgbGV0IG9iaiA9IGJveHNbaV0gYXMgQm94U2VjdGlvbk9iamVjdDtcbiAgLy8gICAgIGlmIChcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVsZXRpbmcgfHxcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVhZFxuICAvLyAgICAgKSB7XG4gIC8vICAgICAgIGNvbnRpbnVlO1xuICAvLyAgICAgfVxuICAvLyAgICAgbGV0IGxpbmUgPSBvYmouc2VyaWFsaXplVG9DYXJkKCk7XG4gIC8vICAgICBkYXRDYXJkRGF0YSArPSBsaW5lICs9IFwiXFxuXCI7XG4gIC8vICAgfVxuXG4gIC8vICAgbGV0IHByaXMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFwiUHJpU2VjdGlvbk9iamVjdFwiKTtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHByaXMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgIGxldCBvYmogPSBwcmlzW2ldIGFzIFByaVNlY3Rpb25PYmplY3Q7XG4gIC8vICAgICBpZiAoXG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlbGV0aW5nIHx8XG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlYWRcbiAgLy8gICAgICkge1xuICAvLyAgICAgICBjb250aW51ZTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIGxldCBsaW5lID0gb2JqLnNlcmlhbGl6ZVRvQ2FyZCgpO1xuICAvLyAgICAgZGF0Q2FyZERhdGEgKz0gbGluZSArPSBcIlxcblwiO1xuICAvLyAgIH1cblxuICAvLyAgIGxldCBjb25zID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIkNvblNlY3Rpb25PYmplY3RcIik7XG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25zLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgICBsZXQgb2JqID0gY29uc1tpXSBhcyBDb25TZWN0aW9uT2JqZWN0O1xuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWxldGluZyB8fFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWFkXG4gIC8vICAgICApIHtcbiAgLy8gICAgICAgY29udGludWU7XG4gIC8vICAgICB9XG4gIC8vICAgICBsZXQgbGluZSA9IG9iai5zZXJpYWxpemVUb0NhcmQoKTtcbiAgLy8gICAgIGRhdENhcmREYXRhICs9IGxpbmUgKz0gXCJcXG5cIjtcbiAgLy8gICB9XG5cbiAgLy8gICBsZXQgY2hscyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJDaGxTZWN0aW9uT2JqZWN0XCIpO1xuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hscy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgbGV0IG9iaiA9IGNobHNbaV0gYXMgQ2hsU2VjdGlvbk9iamVjdDtcbiAgLy8gICAgIGlmIChcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVsZXRpbmcgfHxcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVhZFxuICAvLyAgICAgKSB7XG4gIC8vICAgICAgIGNvbnRpbnVlO1xuICAvLyAgICAgfVxuICAvLyAgICAgbGV0IGxpbmUgPSBvYmouc2VyaWFsaXplVG9DYXJkKCk7XG4gIC8vICAgICBkYXRDYXJkRGF0YSArPSBsaW5lICs9IFwiXFxuXCI7XG4gIC8vICAgfVxuXG4gIC8vICAgbGV0IHRlZXMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFwiVGVlU2VjdGlvbk9iamVjdFwiKTtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRlZXMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgIGxldCBvYmogPSB0ZWVzW2ldIGFzIFRlZVNlY3Rpb25PYmplY3Q7XG4gIC8vICAgICBpZiAoXG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlbGV0aW5nIHx8XG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlYWRcbiAgLy8gICAgICkge1xuICAvLyAgICAgICBjb250aW51ZTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIGxldCBsaW5lID0gb2JqLnNlcmlhbGl6ZVRvQ2FyZCgpO1xuICAvLyAgICAgZGF0Q2FyZERhdGEgKz0gbGluZSArPSBcIlxcblwiO1xuICAvLyAgIH1cblxuICAvLyAgIGxldCBhbmdzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIkFuZ1NlY3Rpb25PYmplY3RcIik7XG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbmdzLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgICBsZXQgb2JqID0gYW5nc1tpXSBhcyBBbmdTZWN0aW9uT2JqZWN0O1xuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWxldGluZyB8fFxuICAvLyAgICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWFkXG4gIC8vICAgICApIHtcbiAgLy8gICAgICAgY29udGludWU7XG4gIC8vICAgICB9XG4gIC8vICAgICBsZXQgbGluZSA9IG9iai5zZXJpYWxpemVUb0NhcmQoKTtcbiAgLy8gICAgIGRhdENhcmREYXRhICs9IGxpbmUgKz0gXCJcXG5cIjtcbiAgLy8gICB9XG5cbiAgLy8gICBsZXQgZHRicyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJEdGJTZWN0aW9uT2JqZWN0XCIpO1xuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgZHRicy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgbGV0IG9iaiA9IGR0YnNbaV0gYXMgRHRiU2VjdGlvbk9iamVjdDtcbiAgLy8gICAgIGlmIChcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVsZXRpbmcgfHxcbiAgLy8gICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPT09IEJ1c2luZXNzU3RhdGUuRGVhZFxuICAvLyAgICAgKSB7XG4gIC8vICAgICAgIGNvbnRpbnVlO1xuICAvLyAgICAgfVxuICAvLyAgICAgbGV0IGxpbmUgPSBvYmouc2VyaWFsaXplVG9DYXJkKCk7XG4gIC8vICAgICBkYXRDYXJkRGF0YSArPSBsaW5lICs9IFwiXFxuXCI7XG4gIC8vICAgfVxuXG4gIC8vICAgbGV0IHJ0YnMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFwiUnRiU2VjdGlvbk9iamVjdFwiKTtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHJ0YnMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgIGxldCBvYmogPSBydGJzW2ldIGFzIFJ0YlNlY3Rpb25PYmplY3Q7XG4gIC8vICAgICBpZiAoXG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlbGV0aW5nIHx8XG4gIC8vICAgICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlYWRcbiAgLy8gICAgICkge1xuICAvLyAgICAgICBjb250aW51ZTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIGxldCBsaW5lID0gb2JqLnNlcmlhbGl6ZVRvQ2FyZCgpO1xuICAvLyAgICAgZGF0Q2FyZERhdGEgKz0gbGluZSArPSBcIlxcblwiO1xuICAvLyAgIH1cblxuICAvLyBsZXQgYmxicyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJCYmxTZWN0aW9uT2JqZWN0XCIpO1xuICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IGJsYnMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICBsZXQgb2JqID0gYmxic1tpXSBhcyBCbGJTZWN0aW9uT2JqZWN0O1xuICAvLyAgIGlmIChcbiAgLy8gICAgIG9iai5idXNpbmVzc1N0YXRlID09PSBCdXNpbmVzc1N0YXRlLkRlbGV0aW5nIHx8XG4gIC8vICAgICBvYmouYnVzaW5lc3NTdGF0ZSA9PT0gQnVzaW5lc3NTdGF0ZS5EZWFkXG4gIC8vICAgKSB7XG4gIC8vICAgICBjb250aW51ZTtcbiAgLy8gICB9XG4gIC8vICAgbGV0IGxpbmUgPSBvYmouc2VyaWFsaXplVG9DYXJkKCk7XG4gIC8vICAgZGF0Q2FyZERhdGEgKz0gbGluZSArPSBcIlxcblwiO1xuICAvLyB9XG5cbiAgLy8gICByZXR1cm4gZGF0Q2FyZERhdGE7XG4gIC8vIH1cblxuICAvKipcbiAgICog5a+85Ye65rW35Ya15Y2h54mH5pWw5o2uLlxuICAgKi9cbiAgZXhwb3J0REFURmlsZV9TZWFpbnAoKSB7XG4gICAgLy8gY2FyZCBkYXRhICsgcm8gLT4gY2FyZFxuICAgIGNvbnNvbGUubG9nKFwiZXhwb3J0X3NlYWlucFwiKTtcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXIgYXMgVmlld2VyO1xuICAgIGxldCBkYXRDYXJkRGF0YSA9IHZpZXdlci5kYXRXcml0ZXJNYW5hZ2VyLmV4cG9ydERBVEZpbGVfU2VhaW5wKCk7XG4gICAgZGF0Q2FyZERhdGEgKz0gXCJFTkRcIjtcblxuICAgIHJldHVybiBkYXRDYXJkRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlr7zlh7rmqKHlnovljaHniYfmlbDmja4uXG4gICAqL1xuICBleHBvcnREQVRGaWxlX1NhY2lucCgpIHtcbiAgICAvL1xuICAgIGNvbnNvbGUubG9nKFwiZXhwb3J0X3NhY2lucFwiKTtcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXIgYXMgVmlld2VyO1xuICAgIGxldCBkYXRDYXJkRGF0YSA9IHZpZXdlci5kYXRXcml0ZXJNYW5hZ2VyLmV4cG9ydERBVEZpbGVfU2FjaW5wKCk7XG4gICAgZGF0Q2FyZERhdGEgKz0gXCJFTkRcIjtcblxuICAgIHJldHVybiBkYXRDYXJkRGF0YTtcbiAgfVxuXG4gIC8vIOWvvOWFpURBVFxuICBpbXBvcnREQVREYXRhKGNvbnRlbnQ6IHN0cmluZywgb3ZlcldyaXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zb2xlLmxvZyhcImltcG9ydERBVERhdGFcIik7XG4gICAgKHRoaXMudmlld2VyIGFzIFZpZXdlcikuZGF0UmVhZGVyTWFuYWdlci5pbXBvcnREQVREYXRhKGNvbnRlbnQsIG92ZXJXcml0ZSk7XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICAvLyDlr7zlhaXmtbflhrXmlofku7ZcbiAgaW1wb3J0U0VBRGF0YShjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnNvbGUubG9nKFwiaW1wb3J0U0VBRGF0YVwiKTtcbiAgICBsZXQgcm8gPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeVR5cGUoXCJTZWFzdGF0ZUxkb3B0XCIpO1xuICAgIGlmIChybykge1xuICAgICAgbGV0IG1lc3NhZ2UgPSBcIuW3sue7j+WtmOWcqOa1t+WGteaVsOaNrlwiO1xuICAgICAgTWVzc2FnZS5lcnJvcihtZXNzYWdlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKHRoaXMudmlld2VyIGFzIFZpZXdlcikuZGF0UmVhZGVyTWFuYWdlci5pbXBvcnRTZWFpbnBEYXRhKGNvbnRlbnQpO1xuXG4gICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICAgICh0aGlzLnZpZXdlciBhcyBWaWV3ZXIpLnN0cnVjdHVyZVRyZWVNYW5hZ2VyLnVwZGF0ZSgpO1xuICAgIHJldHVybiBcImltcG9ydFNFQURhdGEgc3VjY2Vzc2Z1bFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIOWvvOWFpeWQjuWkhOeQhnNlYW9jaeaWh+S7tu+8jOS7heino+aekOiNt+i9veaVsOaNrlxuICAgKiBAcGFyYW0gY29udGVudFxuICAgKi9cbiAgaW1wb3J0U2Vhb2NpRGF0YShjb250ZW50OiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmxvZyhcImltcG9ydFNlYW9jaURhdGFcIik7XG4gICAgKHRoaXMudmlld2VyIGFzIFZpZXdlcikuZGF0UmVhZGVyTWFuYWdlci5pbXBvcnRTZWFvY2lEYXRhKGNvbnRlbnQpO1xuXG4gICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICAgICh0aGlzLnZpZXdlciBhcyBWaWV3ZXIpLnN0cnVjdHVyZVRyZWVNYW5hZ2VyLnVwZGF0ZSgpO1xuICAgIHJldHVybiBcImltcG9ydFNlYW9jaURhdGEgc3VjY2Vzc2Z1bFwiO1xuICB9XG5cbiAgLy8g5a+85YWl5qGp5Zyf5pWw5o2uXG4gIGltcG9ydFBTSURhdGEoY29udGVudDogc3RyaW5nKSB7XG4gICAgY29uc29sZS5sb2coXCJpbXBvcnRQU0lEYXRhXCIpO1xuICAgICh0aGlzLnZpZXdlciBhcyBWaWV3ZXIpLmRhdFJlYWRlck1hbmFnZXIuaW1wb3J0UFNJRGF0YShjb250ZW50KTtcblxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgICAodGhpcy52aWV3ZXIgYXMgVmlld2VyKS5zdHJ1Y3R1cmVUcmVlTWFuYWdlci51cGRhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDljoblj7Llm57pgIBcbiAgICovXG4gIGhpc3RvcnlCYWNrKCkge1xuICAgIGlmIChQcm9jZXNzLmFjdGl2ZVByb2Nlc3MuaGlzdG9yeU1hbmFnZXIuY2FuUm9sbEJhY2spIHtcbiAgICAgIFByb2Nlc3MuYWN0aXZlUHJvY2Vzcy5oaXN0b3J5TWFuYWdlci5yb2xsQmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDljoblj7Lph43lgZpcbiAgICovXG4gIGhpc3RvcnlGb3J3YXJkKCkge1xuICAgIGlmIChQcm9jZXNzLmFjdGl2ZVByb2Nlc3MuaGlzdG9yeU1hbmFnZXIuY2FuUm9sbEZvcndhcmQpIHtcbiAgICAgIFByb2Nlc3MuYWN0aXZlUHJvY2Vzcy5oaXN0b3J5TWFuYWdlci5yb2xsRm9yd2FyZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmjInlvZPliY3mv4DmtLvnmoTpgInmi6nov4fmu6TlmajnsbvlnovvvIzpgInkuK3lubbnuqLoibLpq5jkuq7lvZPliY3op4blj6PkuK3mmL7npLrnmoTmiYDmnInlr7nlupTlh6DkvZXlhYPntKBcbiAgICovXG4gIHNlbGVjdEFsbCgpIHtcbiAgICAvL1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgdmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuY2xlYXJBbGxTZWxlY3Rpb25BbmRIaWdobGlnaHQoKTtcbiAgICBzd2l0Y2ggKHZpZXdlci5zZWxlY3Rpb25JbnRlcmZhY2VNYW5hZ2VyLnNlbGVjdG9yRmlsdGVyKSB7XG4gICAgICAvL1xuICAgICAgY2FzZSBTZWxlY3RvckZpbGl0ZXIuSm9pbnQ6XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsSm9pbnRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTZWxlY3RvckZpbGl0ZXIuTWVtYmVyOlxuICAgICAgICB0aGlzLnNlbGVjdEFsbE1lbWJlcnMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNlbGVjdG9yRmlsaXRlci5QbGF0ZTpcbiAgICAgICAgdGhpcy5zZWxlY3RBbGxQbGF0ZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNlbGVjdG9yRmlsaXRlci5BbGw6XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsSm9pbnRzKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsTWVtYmVycygpO1xuICAgICAgICB0aGlzLnNlbGVjdEFsbFBsYXRlcygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICAvLyDmiZPlvIDnvJbovpHlmahcblxuICAvKipcbiAgICog5Yib5bu66KeG54K5KOWvueW9k+WJjeinhuWPo+aIquWbvilcbiAgICogQHBhcmFtIHZpZXdQb2ludE5hbWUg6KeG54K55ZCNXG4gICAqL1xuICBjcmVhdGVWaWV3UG9pbnQodmlld1BvaW50TmFtZTogc3RyaW5nKSB7XG4gICAgLy8g5Yib5bu66KeG54K5XG4gICAgKHRoaXMudmlld2VyIGFzIFZpZXdlcikuY2FlUGFuZWxNYW5hZ2VyLnZpZXdQb2ludFBhbmVsQ2FlXG4gICAgICAuYWRkVmlld1BvaW50KHZpZXdQb2ludE5hbWUpXG4gICAgICAudGhlbigoKSA9PiB7fSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEFsbEpvaW50cygpIHtcbiAgICBsZXQgam9pbnRzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIkpvaW50T2JqZWN0XCIpO1xuICAgIGxldCBrZXlzID0gbmV3IEFycmF5PG51bWJlcj4oKTtcbiAgICBsZXQgcGF0aHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgam9pbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGtleXMucHVzaChpdGVtLnNlZ21lbnQua2V5KTtcbiAgICAgIHBhdGhzLnB1c2goaXRlbS5zZWdtZW50LnBhdGgpO1xuICAgIH0pO1xuICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuc2VsZWN0QW5kSGlnaGxpZ2h0S2V5cyhrZXlzLCBwYXRocyk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEFsbE1lbWJlcnMoKSB7XG4gICAgLy9cbiAgICBsZXQgbWVtYmVycyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJNZW1iZXJPYmplY3RcIik7XG4gICAgbGV0IGtleXMgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuICAgIGxldCBwYXRocyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBtZW1iZXJzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGtleXMucHVzaChpdGVtLnNlZ21lbnQua2V5KTtcbiAgICAgIHBhdGhzLnB1c2goaXRlbS5zZWdtZW50LnBhdGgpO1xuICAgIH0pO1xuICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuc2VsZWN0QW5kSGlnaGxpZ2h0S2V5cyhrZXlzLCBwYXRocyk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEFsbFBsYXRlcygpIHtcbiAgICBsZXQgcGxhdGVzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIlBsYXRlT2JqZWN0XCIpO1xuICAgIGxldCBrZXlzID0gbmV3IEFycmF5PG51bWJlcj4oKTtcbiAgICBsZXQgcGF0aHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGtleXMucHVzaChpdGVtLnNlZ21lbnQua2V5KTtcbiAgICAgIHBhdGhzLnB1c2goaXRlbS5zZWdtZW50LnBhdGgpO1xuICAgIH0pO1xuICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuc2VsZWN0QW5kSGlnaGxpZ2h0S2V5cyhrZXlzLCBwYXRocyk7XG4gIH1cblxuICAvKipcbiAgICog5p+l5om+5bey5pi+56S655qE56m66Ze054K5XG4gICAqIEBwYXJhbSBqb2ludE5hbWUg56m66Ze054K55ZCN5a2XXG4gICAqL1xuICBmaW5kSm9pbnQoam9pbnROYW1lOiBzdHJpbmcpOiBKb2ludE9iamVjdCB7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzIGFzIFByb2Nlc3M7XG4gICAgbGV0IHJvID0gcHJvY2Vzcy5maW5kQ2FlT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcbiAgICAgIHByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIuam9pbnROb2RlIGFzIERlc2lnbkJhc2VPYmplY3QsXG4gICAgICBqb2ludE5hbWVcbiAgICApO1xuICAgIGlmIChybyAmJiBybyBpbnN0YW5jZW9mIEpvaW50T2JqZWN0KSB7XG4gICAgICB0aGlzLnZpZXdlci5zZWxlY3Rpb25NYW5hZ2VyLmNsZWFyQWxsU2VsZWN0aW9uQW5kSGlnaGxpZ2h0KCk7XG4gICAgICB0aGlzLnZpZXdlci5sb2NhdGVXb3JsZChyby5zZWdtZW50KTtcbiAgICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuc2VsZWN0QW5kSGlnaGxpZ2h0S2V5cyhcbiAgICAgICAgW3JvLnNlZ21lbnQua2V5XSxcbiAgICAgICAgW3JvLnNlZ21lbnQucGF0aF1cbiAgICAgICk7XG4gICAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG5cbiAgICAgIHJldHVybiBybztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOmHjeWRveWQjeepuumXtOeCuVxuICAgKiBAcGFyYW0gb3JpZ2luSm9pbnROYW1lIOWOn+Wni+eCueWQjeensFxuICAgKiBAcGFyYW0gbmV3Sm9pbnROYW1lIOaWsOeahOeCueWQjeensFxuICAgKiBAcmV0dXJucyDov5Tlm57ph43lkb3lkI3nmoTnu5Pmnpzmj5DnpLpcbiAgICovXG4gIHJlbmFtZUpvaW50KFxuICAgIG9yaWdpbkpvaW50TmFtZTogc3RyaW5nLFxuICAgIG5ld0pvaW50TmFtZTogc3RyaW5nLFxuICAgIHVzZU5leHRBdmFsaWFibGU6IGJvb2xlYW5cbiAgKSB7XG4gICAgLy9cbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3MgYXMgUHJvY2VzcztcblxuICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICBpZiAoIUpvaW50T2JqZWN0LmNoZWNrTmFtZWxlZ2FsKG5ld0pvaW50TmFtZSkpIHtcbiAgICAgIHJlc3VsdCA9IDM7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGxldCBqb2ludE5vZGUgPSBwcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLmpvaW50Tm9kZTtcbiAgICBsZXQgcm8gPSBwcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxuICAgICAgam9pbnROb2RlLFxuICAgICAgb3JpZ2luSm9pbnROYW1lXG4gICAgKTtcbiAgICBpZiAocm8gJiYgcm8gaW5zdGFuY2VvZiBKb2ludE9iamVjdCkge1xuICAgICAgaWYgKCF1c2VOZXh0QXZhbGlhYmxlKSB7XG4gICAgICAgIGxldCBuZXdOYW1lUk8gPSBwcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxuICAgICAgICAgIGpvaW50Tm9kZSxcbiAgICAgICAgICBuZXdKb2ludE5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG5ld05hbWVSTykge1xuICAgICAgICAgIHJlc3VsdCA9IDMgKyBcIixcIiArIG5ld0pvaW50TmFtZTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdKb2ludE5hbWUgPSBwcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLm5hbWVBc2NlbmRpbmdPcmRlcihcbiAgICAgICAgICBuZXdKb2ludE5hbWUsXG4gICAgICAgICAgMSxcbiAgICAgICAgICBwcm9jZXNzLm5hbWVNYXBKb2ludFxuICAgICAgICApWzBdO1xuICAgICAgfVxuXG4gICAgICByby5uYW1lID0gbmV3Sm9pbnROYW1lO1xuICAgICAgLy8gcm8uaXNEcmF3TmFtZSA9IHRydWU7XG4gICAgICByby5zZXROZWVkVXBkYXRlKCk7XG4gICAgICAvLyBzdWNjZXNzZnVsXG4gICAgICByZXN1bHQgPSAyICsgXCIsXCIgKyBvcmlnaW5Kb2ludE5hbWUgKyBcIixcIiArIG5ld0pvaW50TmFtZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gMSArIFwiLFwiICsgb3JpZ2luSm9pbnROYW1lO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICog5p+l5om+5bey5pi+56S655qE5p2G5Lu2XG4gICAqIEBwYXJhbSBtZW1iZXJOYW1lIOadhuS7tuWQjeWtl1xuICAgKi9cbiAgZmluZE1lbWJlcihtZW1iZXJOYW1lOiBzdHJpbmcpOiBNZW1iZXJPYmplY3Qge1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuXG4gICAgbGV0IHJvID0gcHJvY2Vzcy5maW5kQ2FlT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcbiAgICAgIHByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIubWVtYmVyTm9kZSBhcyBEZXNpZ25CYXNlT2JqZWN0LFxuICAgICAgbWVtYmVyTmFtZVxuICAgICk7XG4gICAgaWYgKHJvICYmIHJvIGluc3RhbmNlb2YgTWVtYmVyT2JqZWN0KSB7XG4gICAgICB0aGlzLnZpZXdlci5zZWxlY3Rpb25NYW5hZ2VyLmNsZWFyQWxsU2VsZWN0aW9uQW5kSGlnaGxpZ2h0KCk7XG4gICAgICB0aGlzLnZpZXdlci5sb2NhdGVXb3JsZChyby5zZWdtZW50KTtcbiAgICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuc2VsZWN0QW5kSGlnaGxpZ2h0S2V5cyhcbiAgICAgICAgW3JvLnNlZ21lbnQua2V5XSxcbiAgICAgICAgW3JvLnNlZ21lbnQucGF0aF1cbiAgICAgICk7XG4gICAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG5cbiAgICAgIHJldHVybiBybztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOmAmui/h+adhuS7tuWQjeensOe7hOmrmOS6ruadhuS7tlxuICAgKiBAcGFyYW0gbmFtZXNcbiAgICovXG4gIGhpZ2hsaWdodE1lbWJlckJ5TmFtZXMobmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgLy9cbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3MgYXMgUHJvY2VzcztcblxuICAgIGxldCBrZXlzID0gW107XG4gICAgbGV0IHBhdGhzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgb2JqID0gcHJvY2Vzcy5maW5kQ2FlT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcbiAgICAgICAgcHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5tZW1iZXJOb2RlLFxuICAgICAgICBuYW1lc1tpXVxuICAgICAgKTtcblxuICAgICAgaWYgKG9iaikge1xuICAgICAgICBrZXlzLnB1c2gob2JqLnNlZ21lbnQua2V5KTtcbiAgICAgICAgcGF0aHMucHVzaChvYmouc2VnbWVudC5wYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwi5om+5LiN5YiwXCIgKyBuYW1lc1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy52aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5jbGVhckFsbFNlbGVjdGlvbkFuZEhpZ2hsaWdodCgpO1xuICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuc2VsZWN0QW5kSGlnaGxpZ2h0S2V5cyhrZXlzLCBwYXRocyk7XG4gICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOmAmui/h+adv+WQjeensOe7hOmrmOS6ruadvy5cbiAgICogQHBhcmFtIG5hbWVzXG4gICAqL1xuICBoaWdobGlnaHRQbGF0ZUJ5TmFtZXMobmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgLy9cbiAgICBsZXQga2V5cyA9IFtdO1xuICAgIGxldCBwYXRocyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IG9iaiA9IChcbiAgICAgICAgdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzXG4gICAgICApLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxuICAgICAgICAodGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzKS5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5wbGF0ZU5vZGUsXG4gICAgICAgIG5hbWVzW2ldXG4gICAgICApO1xuXG4gICAgICBpZiAob2JqKSB7XG4gICAgICAgIGtleXMucHVzaChvYmouc2VnbWVudC5rZXkpO1xuICAgICAgICBwYXRocy5wdXNoKG9iai5zZWdtZW50LnBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coXCLmib7kuI3liLBcIiArIG5hbWVzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlci5zZWxlY3Rpb25NYW5hZ2VyLmNsZWFyQWxsU2VsZWN0aW9uQW5kSGlnaGxpZ2h0KCk7XG4gICAgdGhpcy52aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5zZWxlY3RBbmRIaWdobGlnaHRLZXlzKGtleXMsIHBhdGhzKTtcbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICAvKipcbiAgICog5p+l5om+5bey5pi+56S655qE5p2/XG4gICAqIEBwYXJhbSBwbGF0ZU5hbWUg5p2/5ZCN56ewXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kUGxhdGUocGxhdGVOYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3MgYXMgUHJvY2VzcztcblxuICAgIGxldCBybyA9IHByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICBwcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLnBsYXRlTm9kZSBhcyBEZXNpZ25CYXNlT2JqZWN0LFxuICAgICAgcGxhdGVOYW1lXG4gICAgKTtcbiAgICBpZiAocm8gJiYgcm8gaW5zdGFuY2VvZiBQbGF0ZU9iamVjdCkge1xuICAgICAgdGhpcy52aWV3ZXIuc2VsZWN0aW9uTWFuYWdlci5jbGVhckFsbFNlbGVjdGlvbkFuZEhpZ2hsaWdodCgpO1xuICAgICAgdGhpcy52aWV3ZXIubG9jYXRlV29ybGQocm8uc2VnbWVudCk7XG4gICAgICB0aGlzLnZpZXdlci5zZWxlY3Rpb25NYW5hZ2VyLnNlbGVjdEFuZEhpZ2hsaWdodEtleXMoXG4gICAgICAgIFtyby5zZWdtZW50LmtleV0sXG4gICAgICAgIFtyby5zZWdtZW50LnBhdGhdXG4gICAgICApO1xuICAgICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuXG4gICAgICByZXR1cm4gcm87XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiDov5Tlm55DQUXnu5PmnoTmoJHnmoTmlbDmja4uXG4gIC8vICAqIEByZXR1cm5zXG4gIC8vICAqL1xuICAvLyBnZXRTdHJ1Y3R1cmVUcmVlRGF0YSgpOiBzdHJpbmcge1xuICAvLyAgIC8vXG4gIC8vICAgbGV0IHJvb3ROb2RlID0gKHRoaXMudmlld2VyIGFzIFZpZXdlcikucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlclxuICAvLyAgICAgLnJvb3ROb2RlO1xuICAvLyAgIGxldCBtb2RlbERhdGEgPSBKU09OLnN0cmluZ2lmeShcbiAgLy8gICAgIHRoaXMudmlld2VyLnByb2Nlc3MucGVyc2lzdGVuY2VNYW5hZ2VyLnNhdmUocm9vdE5vZGUpXG4gIC8vICAgKTtcbiAgLy8gICByZXR1cm4gbW9kZWxEYXRhO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIOi/lOWbnkNBRee7k+aehOagkeeahOaVsOaNri5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldFN0cnVjdHVyZVRyZWVEYXRhKCkge1xuICAgIC8vXG4gICAgbGV0IHJvb3ROb2RlID0gKHRoaXMudmlld2VyIGFzIFZpZXdlcikuc3RydWN0dXJlVHJlZU1hbmFnZXIucm9vdE5vZGU7XG4gICAgcmV0dXJuIHJvb3ROb2RlO1xuICB9XG5cbiAgZ2V0TWVtYmVyR3J1cHMoKSB7XG4gICAgLy8g5p2G5Lu25oiq6Z2i57uE5ZCN5a2X5YiX6KGoXG4gICAgbGV0IGdydXBOYW1lTGlzdCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICBsZXQgZ3J1cE9iamVjdEdyb3VwID1cbiAgICAgIHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZShcIuadhuS7tuaIqumdoue7hFwiKTtcbiAgICBpZiAoZ3J1cE9iamVjdEdyb3VwKSB7XG4gICAgICBncnVwT2JqZWN0R3JvdXAuY2hpbGRPYmplY3RzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBncnVwTmFtZUxpc3QucHVzaChpdGVtLm5hbWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdydXBOYW1lTGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiDnu5PmnoTmoJHmt7vliqDoioLngrkuXG4gICAqL1xuICBhZGRTdHJ1Y3R1cmVOb2RlKHBhcmVudDogTG9uZ2FuLlJlbmRlck9iamVjdCwgcm86IERlc2lnbkJhc2VPYmplY3QpIHtcbiAgICB0aGlzLnZpZXdlci5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChwYXJlbnQsIHJvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDnu5PmnoTmoJHmt7vliqDoioLngrkuXG4gICAqL1xuICByZW1vdmVTdHJ1Y3R1cmVOb2RlKHJvOiBEZXNpZ25CYXNlT2JqZWN0KSB7XG4gICAgdGhpcy52aWV3ZXIucHJvY2Vzcy5yZW1vdmVSZW5kZXJPYmplY3Qocm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIOWIm+W7uua1t+eUn+eJqeWOmuW6puaMiemrmOeoi+WIhuiJsuWvueixoVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgY3JlYXRlTWdyb3ZPYmplY3QoKSB7XG4gICAgbGV0IG1ncm92ID0gbmV3IE1ncm92T2JqZWN0KCk7XG4gICAgcmV0dXJuIG1ncm92O1xuICB9XG5cbiAgLyoqXG4gICAqIOWIm+W7uuiFkOiagOS9memHj+aMiemrmOeoi+WIhuiJsuWvueixoVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgY3JlYXRlQ29ycnpPYmplY3QoKSB7XG4gICAgbGV0IGNvcnJ6ID0gbmV3IENvcnJ6T2JqZWN0KCk7XG4gICAgcmV0dXJuIGNvcnJ6O1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckNoaWxkT2JqZWN0cyh2aWV3ZXI6IFZpZXdlciwgcm86IExvbmdhbi5SZW5kZXJPYmplY3QpIHtcbiAgICBpZiAocm8pIHtcbiAgICAgIHdoaWxlIChyby5jaGlsZE9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICB2aWV3ZXIucHJvY2Vzcy5yZW1vdmVSZW5kZXJPYmplY3Qocm8uY2hpbGRPYmplY3RzWzBdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyDmuIXpmaTlnLrmma/mqKHlnovmlbDmja5cbiAgY2xlYXJDYWVSZW5kZXJPYmplY3Qodmlld2VyOiBWaWV3ZXIpIHtcbiAgICB0aGlzLmNsZWFyQ2hpbGRPYmplY3RzKFxuICAgICAgdmlld2VyLFxuICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIubWVtYmVyTm9kZVxuICAgICk7XG4gICAgdGhpcy5jbGVhckNoaWxkT2JqZWN0cyhcbiAgICAgIHZpZXdlcixcbiAgICAgIHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLnBsYXRlTm9kZVxuICAgICk7XG4gICAgdGhpcy5jbGVhckNoaWxkT2JqZWN0cyhcbiAgICAgIHZpZXdlcixcbiAgICAgIHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLmpvaW50Tm9kZVxuICAgICk7XG4gICAgdGhpcy5jbGVhckNoaWxkT2JqZWN0cyhcbiAgICAgIHZpZXdlcixcbiAgICAgIHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLmdydXBOb2RlXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyQ2hpbGRPYmplY3RzKFxuICAgICAgdmlld2VyLFxuICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucEdydXBOb2RlXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyQ2hpbGRPYmplY3RzKFxuICAgICAgdmlld2VyLFxuICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIuc2VjdGlvbkluc05vZGVcbiAgICApO1xuICAgIHRoaXMuY2xlYXJDaGlsZE9iamVjdHMoXG4gICAgICB2aWV3ZXIsXG4gICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5zYWNpbnBOb2RlXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyQ2hpbGRPYmplY3RzKFxuICAgICAgdmlld2VyLFxuICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIuc2Vhc3RhdGVOb2RlXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyQ2hpbGRPYmplY3RzKFxuICAgICAgdmlld2VyLFxuICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGlsZU5vZGVcbiAgICApO1xuICAgIHRoaXMuY2xlYXJDaGlsZE9iamVjdHMoXG4gICAgICB2aWV3ZXIsXG4gICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5wbEdydXBOb2RlXG4gICAgKTtcbiAgICB0aGlzLmNsZWFyQ2hpbGRPYmplY3RzKFxuICAgICAgdmlld2VyLFxuICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucG9zdFJlc3VsdE5vZGVcbiAgICApO1xuICB9XG5cbiAgLy8g5oyJ5oiq6Z2i57uE5ZCN5YiG6Imy5byA5YWzXG4gIHByaXZhdGUgY29sb3JEaXZTd2l0Y2hfR3J1cE5hbWUob25fb2ZmOiBib29sZWFuLCBpc1VwZGF0ZSA9IHRydWUpIHtcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXIgYXMgVmlld2VyO1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcztcblxuICAgIGxldCBjb2xvckRpdmlkZVJPID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFxuICAgICAgXCLmjInmiKrpnaLnu4Tlj7fliIboibJcIlxuICAgICkgYXMgQ3V0bGluZUdydXBJZE9iamVjdDtcbiAgICBpZiAoY29sb3JEaXZpZGVSTykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xvckRpdmlkZVJPLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgb2JqID0gY29sb3JEaXZpZGVSTy5jaGlsZE9iamVjdHNbaV0gYXMgQ29sb3JEaXZHcnVwSWRPYmplY3Q7XG5cbiAgICAgICAgaWYgKG9iai5jaGVja0J1c2luZXNzU3RhdGVJc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgaWYgKG9uX29mZikge1xuICAgICAgICAgICAgb2JqLmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmouaW5hY3RpdmUodmlld2VyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9uX29mZikge1xuICAgICAgICBsZXQgY3V0bGluZSA9IHt9O1xuXG4gICAgICAgIGlmIChjb2xvckRpdmlkZVJPKSB7XG4gICAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIlwiKTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCJcIik7XG4gICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIHt9KTtcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjdXRsaW5lID0gY29sb3JEaXZpZGVSTy5nZXRDdXRsaW5lKCk7XG4gICAgICAgICAgbGV0IGNvbXBvbmVudCA9IExlZ2VuZE1hbmFnZS5jcmVhdGUoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRLZXksXG4gICAgICAgICAgICBjdXRsaW5lLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5zaG93RW5nbGlzaFRleHQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC50aXRsZSA9IFwiQ29sb3JlZCBCeSBNZW1iZXIgR3JvdXBzXCI7XG4gICAgICAgICAgICBjb21wb25lbnQubGVmdFRleHQgPSBcIkNvbG9yXCI7XG4gICAgICAgICAgICBjb21wb25lbnQucmlnaHRUZXh0ID0gXCJNZW1iZXIgR3JvdXBzXCI7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIkNvbG9yZWQgQnkgTWVtYmVyIEdyb3Vwc1wiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZExlZnRUZXh0XCIsIFwiQ29sb3JcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCJNZW1iZXIgR3JvdXBzXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wb25lbnQudGl0bGUgPSBcIuaIqumdoue7hOWIhuiJslwiO1xuICAgICAgICAgICAgY29tcG9uZW50LmxlZnRUZXh0ID0gXCLpopzoibJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yaWdodFRleHQgPSBcIuaIqumdoue7hOWQjVwiO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCLmiKrpnaLnu4TliIboibJcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRMZWZ0VGV4dFwiLCBcIuminOiJslwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIuaIqumdoue7hOWQjVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gICBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwgY3V0bGluZSk7XG4gICAgICAgICAgLy8gfSwgMjApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBMZWdlbmRNYW5hZ2UuZGVzdG9yeSh0aGlzLmVsZW1lbnRLZXkpO1xuICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwge30pO1xuICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIlwiKTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwiXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNVcGRhdGUpIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29sb3JEaXZTd2l0Y2hfR3J1cFRoaWNrbmVzcyhvbl9vZmY6IGJvb2xlYW4sIGlzVXBkYXRlID0gdHJ1ZSkge1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzO1xuXG4gICAgbGV0IGNvbG9yRGl2aWRlUk8gPSBwcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWUoXG4gICAgICBcIuaMieaIqumdouWjgeWOmuWIhuiJslwiXG4gICAgKSBhcyBDdXRsaW5lR3J1cFRoaWNrbmVzc09iamVjdDtcbiAgICBpZiAoY29sb3JEaXZpZGVSTykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2xvckRpdmlkZVJPLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgb2JqID0gY29sb3JEaXZpZGVSTy5jaGlsZE9iamVjdHNbaV0gYXMgQ29sb3JEaXZHcnVwVGhpY2tuZXNzT2JqZWN0O1xuICAgICAgICBpZiAob2JqLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcbiAgICAgICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgICAgICBvYmouYWN0aXZlKHZpZXdlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9iai5pbmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgIGxldCBjdXRsaW5lID0ge307XG4gICAgICAgIGlmIChjb2xvckRpdmlkZVJPKSB7XG4gICAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwge30pO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiXCIpO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjdXRsaW5lID0gY29sb3JEaXZpZGVSTy5nZXRDdXRsaW5lKCk7XG4gICAgICAgICAgbGV0IGNvbXBvbmVudCA9IExlZ2VuZE1hbmFnZS5jcmVhdGUoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRLZXksXG4gICAgICAgICAgICBjdXRsaW5lLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5zaG93RW5nbGlzaFRleHQpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC50aXRsZSA9IFwiQ29sb3JlZCBCeSBUaGlja25lc3NcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5sZWZ0VGV4dCA9IFwiQ29sb3JcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yaWdodFRleHQgPSBcIlRoaWNrbmVzcyhjbSlcIjtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiQ29sb3JlZCBCeSBUaGlja25lc3NcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRMZWZ0VGV4dFwiLCBcIkNvbG9yXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwiVGhpY2tuZXNzKGNtKVwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29tcG9uZW50LnRpdGxlID0gXCLlo4HljprliIboibJcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5sZWZ0VGV4dCA9IFwi6aKc6ImyXCI7XG4gICAgICAgICAgICBjb21wb25lbnQucmlnaHRUZXh0ID0gXCLlo4HljpooY20pXCI7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIuWjgeWOmuWIhuiJslwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZExlZnRUZXh0XCIsIFwi6aKc6ImyXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwi5aOB5Y6aKGNtKVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIGN1dGxpbmUpO1xuICAgICAgICAgIC8vIH0sIDIwKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIHt9KTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCJcIik7XG4gICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzVXBkYXRlKSB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIGNvbG9yZERpdlN3aXRjaF9NZ3Jvdihvbl9vZmY6IGJvb2xlYW4sIGlzVXBkYXRlID0gdHJ1ZSkge1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzO1xuXG4gICAgbGV0IGNvbG9yRGl2aWRlUk8gPSBwcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWUoXG4gICAgICBcIua1t+eUn+eJqeWOmuW6puaMiemrmOeoi+WIhuiJslwiXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xuICAgIGlmIChjb2xvckRpdmlkZVJPICYmIGNvbG9yRGl2aWRlUk8uY2hlY2tCdXNpbmVzc1N0YXRlSXNBY3RpdmUoKSkge1xuICAgICAgbGV0IG9iaiA9IGNvbG9yRGl2aWRlUk8gYXMgQ29sb3JEaXZNR1JPVk9iamVjdDtcblxuICAgICAgaWYgKG9uX29mZikge1xuICAgICAgICBvYmouYWN0aXZlKHZpZXdlcik7XG5cbiAgICAgICAgbGV0IGN1dGxpbmUgPSB7fTtcbiAgICAgICAgaWYgKGNvbG9yRGl2aWRlUk8pIHtcbiAgICAgICAgICBsZXQgb2JqID0gY29sb3JEaXZpZGVSTyBhcyBDb2xvckRpdk1HUk9WT2JqZWN0O1xuICAgICAgICAgIGxldCB0aGlja25lc3NJbmRleCA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmouaGVpZ2h0TGlzdC5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICAgICAgbGV0IGJvdHRvbSA9IG9iai5oZWlnaHRMaXN0W2ldO1xuICAgICAgICAgICAgbGV0IHRvcCA9IG9iai5oZWlnaHRMaXN0W2kgKyAxXTtcbiAgICAgICAgICAgIGxldCBrZXkgPSBib3R0b20gKyBcIn5cIiArIHRvcCArIFwi77yaXCIgKyBvYmoudGhpY2tuZXNzW3RoaWNrbmVzc0luZGV4XTtcblxuICAgICAgICAgICAgbGV0IGNvbG9yID0gW1xuICAgICAgICAgICAgICBvYmouY29sb3JbKGkgLyAyKSAqIDQgKyAwXSxcbiAgICAgICAgICAgICAgb2JqLmNvbG9yWyhpIC8gMikgKiA0ICsgMV0sXG4gICAgICAgICAgICAgIG9iai5jb2xvclsoaSAvIDIpICogNCArIDJdLFxuICAgICAgICAgICAgICBvYmouY29sb3JbKGkgLyAyKSAqIDQgKyAzXSxcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIGlmIChjb2xvclswXSA9PT0gLTEgJiYgY29sb3JbMV0gPT09IC0xICYmIGNvbG9yWzJdID09PSAtMSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbG9yWzBdICo9IDI1NTtcbiAgICAgICAgICAgIGNvbG9yWzFdICo9IDI1NTtcbiAgICAgICAgICAgIGNvbG9yWzJdICo9IDI1NTtcblxuICAgICAgICAgICAgY3V0bGluZVtrZXldID0gY29sb3I7XG4gICAgICAgICAgICB0aGlja25lc3NJbmRleCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwge30pO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiXCIpO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgICBMZWdlbmRNYW5hZ2UuZGVzdG9yeSh0aGlzLmVsZW1lbnRLZXkpO1xuICAgICAgICAgIGxldCBjb21wb25lbnQgPSBMZWdlbmRNYW5hZ2UuY3JlYXRlKFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50S2V5LFxuICAgICAgICAgICAgY3V0bGluZSxcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuc2hvd0VuZ2xpc2hUZXh0KSB7XG4gICAgICAgICAgICBjb21wb25lbnQudGl0bGUgPSBcIk1hcmluZSBHcm93dGggWm9uZXNcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5sZWZ0VGV4dCA9IFwiQ29sb3JcIjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5yaWdodFRleHQgPSBcIkhlaWdodCBSYW5nZShtKTogVGhpY2tuZXNzKG1tKVwiO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCJNYXJpbmUgR3Jvd3RoIFpvbmVzXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kTGVmdFRleHRcIiwgXCJDb2xvclwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcbiAgICAgICAgICAgIC8vICAgXCJzZXRMZWdlbmRSaWdodFRleHRcIixcbiAgICAgICAgICAgIC8vICAgXCJIZWlnaHQgUmFuZ2UobSk6IFRoaWNrbmVzcyhtbSlcIlxuICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCLmtbfnlJ/nianljprluqbliIboibJcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRMZWZ0VGV4dFwiLCBcIuminOiJslwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIumrmOW6puiMg+WbtChtKTog5Y6a5bqmKG1tKVwiKTtcbiAgICAgICAgICAgIGNvbXBvbmVudC50aXRsZSA9IFwi5rW355Sf54mp5Y6a5bqm5YiG6ImyXCI7XG4gICAgICAgICAgICBjb21wb25lbnQubGVmdFRleHQgPSBcIuminOiJslwiO1xuICAgICAgICAgICAgY29tcG9uZW50LnJpZ2h0VGV4dCA9IFwi6auY5bqm6IyD5Zu0KG0pOiDljprluqYobW0pXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFwiLCBjdXRsaW5lKTtcbiAgICAgICAgICAvLyB9LCA1MCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai5pbmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwge30pO1xuICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIlwiKTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwiXCIpO1xuICAgICAgICBMZWdlbmRNYW5hZ2UuZGVzdG9yeSh0aGlzLmVsZW1lbnRLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNVcGRhdGUpIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29sb3JkRGl2U3dpdGNoX0NvcnJ6KG9uX29mZjogYm9vbGVhbiwgaXNVcGRhdGUgPSB0cnVlKSB7XG4gICAgbGV0IHZpZXdlciA9IHRoaXMudmlld2VyIGFzIFZpZXdlcjtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3M7XG5cbiAgICBsZXQgY29sb3JEaXZpZGVSTyA9IHByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZShcbiAgICAgIFwi6IWQ6JqA5L2Z6YeP5oyJ6auY56iL5YiG6ImyXCJcbiAgICApIGFzIERlc2lnbkJhc2VPYmplY3Q7XG4gICAgaWYgKGNvbG9yRGl2aWRlUk8gJiYgY29sb3JEaXZpZGVSTy5jaGVja0J1c2luZXNzU3RhdGVJc0FjdGl2ZSgpKSB7XG4gICAgICBsZXQgb2JqID0gY29sb3JEaXZpZGVSTyBhcyBDb2xvckRpdkNPUlJaT2JqZWN0O1xuICAgICAgaWYgKG9uX29mZikge1xuICAgICAgICBvYmouYWN0aXZlKHZpZXdlcik7XG5cbiAgICAgICAgbGV0IGN1dGxpbmUgPSB7fTtcbiAgICAgICAgaWYgKGNvbG9yRGl2aWRlUk8pIHtcbiAgICAgICAgICBsZXQgb2JqID0gY29sb3JEaXZpZGVSTyBhcyBDb2xvckRpdkNPUlJaT2JqZWN0O1xuICAgICAgICAgIGxldCB0aGlja25lc3NJbmRleCA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmouaGVpZ2h0TGlzdC5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICAgICAgbGV0IGJvdHRvbSA9IG9iai5oZWlnaHRMaXN0W2ldO1xuICAgICAgICAgICAgbGV0IHRvcCA9IG9iai5oZWlnaHRMaXN0W2kgKyAxXTtcblxuICAgICAgICAgICAgbGV0IGtleUxldmVsQm90dG9tID0gb2JqLmNvcnJ6TGlzdFt0aGlja25lc3NJbmRleF0udGhpY2tuZXNzQm90dG9tO1xuICAgICAgICAgICAgaWYgKCFrZXlMZXZlbEJvdHRvbSkge1xuICAgICAgICAgICAgICBrZXlMZXZlbEJvdHRvbSA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBrZXlMZXZlbFRvcCA9IG9iai5jb3Jyekxpc3RbdGhpY2tuZXNzSW5kZXhdLnRoaWNrbmVzc1RvcDtcbiAgICAgICAgICAgIGlmICgha2V5TGV2ZWxUb3ApIHtcbiAgICAgICAgICAgICAga2V5TGV2ZWxUb3AgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQga2V5ID1cbiAgICAgICAgICAgICAgYm90dG9tICsgXCJ+XCIgKyB0b3AgKyBcIu+8mlwiICsga2V5TGV2ZWxCb3R0b20gKyBcIn5cIiArIGtleUxldmVsVG9wO1xuXG4gICAgICAgICAgICBsZXQgY29sb3IgPSBbXG4gICAgICAgICAgICAgIG9iai5jb2xvclsoaSAvIDIpICogNCArIDBdLFxuICAgICAgICAgICAgICBvYmouY29sb3JbKGkgLyAyKSAqIDQgKyAxXSxcbiAgICAgICAgICAgICAgb2JqLmNvbG9yWyhpIC8gMikgKiA0ICsgMl0sXG4gICAgICAgICAgICAgIG9iai5jb2xvclsoaSAvIDIpICogNCArIDNdLFxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgaWYgKGNvbG9yWzBdID09PSAtMSAmJiBjb2xvclsxXSA9PT0gLTEgJiYgY29sb3JbMl0gPT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sb3JbMF0gKj0gMjU1O1xuICAgICAgICAgICAgY29sb3JbMV0gKj0gMjU1O1xuICAgICAgICAgICAgY29sb3JbMl0gKj0gMjU1O1xuXG4gICAgICAgICAgICBjdXRsaW5lW2tleV0gPSBjb2xvcjtcbiAgICAgICAgICAgIHRoaWNrbmVzc0luZGV4Kys7XG4gICAgICAgICAgfVxuICAgICAgICAgIExlZ2VuZE1hbmFnZS5kZXN0b3J5KHRoaXMuZWxlbWVudEtleSk7XG4gICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIHt9KTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIlwiKTtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCJcIik7XG4gICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgbGV0IGNvbXBvbmVudCA9IExlZ2VuZE1hbmFnZS5jcmVhdGUoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRLZXksXG4gICAgICAgICAgICBjdXRsaW5lLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5zaG93RW5nbGlzaFRleHQpIHtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiQ29ycm9zaW9uIFpvbmVzXCIpO1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kTGVmdFRleHRcIiwgXCJDb2xvclwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcbiAgICAgICAgICAgIC8vICAgXCJzZXRMZWdlbmRSaWdodFRleHRcIixcbiAgICAgICAgICAgIC8vICAgXCJIZWlnaHQgUmFuZ2UobSk6IFRoaWNrbmVzcyhtbSlcIlxuICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgIGNvbXBvbmVudC50aXRsZSA9IFwiQ29ycm9zaW9uIFpvbmVzXCI7XG4gICAgICAgICAgICBjb21wb25lbnQubGVmdFRleHQgPSBcIkNvbG9yXCI7XG4gICAgICAgICAgICBjb21wb25lbnQucmlnaHRUZXh0ID0gXCJIZWlnaHQgUmFuZ2UobSk6IFRoaWNrbmVzcyhtbSlcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCLohZDomoDkvZnph4/liIboibJcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRMZWZ0VGV4dFwiLCBcIuminOiJslwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIumrmOW6puiMg+WbtChtKTog5Y6a5bqmKG1tKVwiKTtcbiAgICAgICAgICAgIGNvbXBvbmVudC50aXRsZSA9IFwi6IWQ6JqA5L2Z6YeP5YiG6ImyXCI7XG4gICAgICAgICAgICBjb21wb25lbnQubGVmdFRleHQgPSBcIuminOiJslwiO1xuICAgICAgICAgICAgY29tcG9uZW50LnJpZ2h0VGV4dCA9IFwi5aOB6auY5bqm6IyD5Zu0KG0pOiDljprluqYobW0pXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFwiLCBjdXRsaW5lKTtcbiAgICAgICAgICAvLyB9LCAyMCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai5pbmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwge30pO1xuICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIlwiKTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwiXCIpO1xuICAgICAgICBMZWdlbmRNYW5hZ2UuZGVzdG9yeSh0aGlzLmVsZW1lbnRLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNVcGRhdGUpIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29sb3JEaXZTd2l0Y2hfQ29tcG9uZW50R3JvdXAob25fb2ZmOiBib29sZWFuLCBpc1VwZGF0ZSA9IHRydWUpIHtcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXIgYXMgVmlld2VyO1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcztcblxuICAgIGxldCBjb21wb25lbnRHcm91cHMgPSBwcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWUoXG4gICAgICBcIuaehOS7tuWIhue7hOWIhuiJslwiXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xuICAgIGlmIChjb21wb25lbnRHcm91cHMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcG9uZW50R3JvdXBzLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgb2JqID0gY29tcG9uZW50R3JvdXBzLmNoaWxkT2JqZWN0c1tcbiAgICAgICAgICBpXG4gICAgICAgIF0gYXMgQ29sb3JEaXZDb21wb25lbnRHcm91cE9iamVjdDtcblxuICAgICAgICBpZiAob2JqLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcbiAgICAgICAgICB0aGlzLnNldEFsbENvbXBvbmVudEdyb3VwVmlzaWJsZShvYmoubmFtZSk7XG5cbiAgICAgICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgICAgICBvYmouYWN0aXZlKHZpZXdlcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9iai5pbmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgIGxldCBjdXRsaW5lID0ge307XG4gICAgICAgIGlmIChjb21wb25lbnRHcm91cHMpIHtcbiAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwge30pO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiXCIpO1xuICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIlwiKTtcbiAgICAgICAgICBMZWdlbmRNYW5hZ2UuZGVzdG9yeSh0aGlzLmVsZW1lbnRLZXkpO1xuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21wb25lbnRHcm91cHMuY2hpbGRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgb2JqID0gY29tcG9uZW50R3JvdXBzLmNoaWxkT2JqZWN0c1tcbiAgICAgICAgICAgICAgaVxuICAgICAgICAgICAgXSBhcyBDb2xvckRpdkNvbXBvbmVudEdyb3VwT2JqZWN0O1xuICAgICAgICAgICAgaWYgKG9iai5jaGVja0J1c2luZXNzU3RhdGVJc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgIGxldCBjb2xvciA9IExvbmdhbi5kZWVwQ2xvbmUob2JqLmNvbG9yKTtcbiAgICAgICAgICAgICAgY3V0bGluZVtvYmoubmFtZV0gPSBjb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGNvbXBvbmVudCA9IExlZ2VuZE1hbmFnZS5jcmVhdGUoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRLZXksXG4gICAgICAgICAgICBjdXRsaW5lLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5zaG93RW5nbGlzaFRleHQpIHtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFRpdGxlXCIsIFwiU2V0IENvbG9yc1wiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZExlZnRUZXh0XCIsIFwiQ29sb3JcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRSaWdodFRleHRcIiwgXCJTZXQgTmFtZVwiKTtcbiAgICAgICAgICAgIGNvbXBvbmVudC50aXRsZSA9IFwiU2V0IENvbG9yc1wiO1xuICAgICAgICAgICAgY29tcG9uZW50LmxlZnRUZXh0ID0gXCJDb2xvclwiO1xuICAgICAgICAgICAgY29tcG9uZW50LnJpZ2h0VGV4dCA9IFwiU2V0IE5hbWVcIjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kVGl0bGVcIiwgXCLoh6rlrprkuYnmnoTku7bliIbnu4TliIboibJcIik7XG4gICAgICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRMZWZ0VGV4dFwiLCBcIuminOiJslwiKTtcbiAgICAgICAgICAgIC8vIHN0b3JlLmNvbW1pdChcInNldExlZ2VuZFJpZ2h0VGV4dFwiLCBcIuWIhue7hOWQjVwiKTtcbiAgICAgICAgICAgIGNvbXBvbmVudC50aXRsZSA9IFwi6Ieq5a6a5LmJ5p6E5Lu25YiG57uE5YiG6ImyXCI7XG4gICAgICAgICAgICBjb21wb25lbnQubGVmdFRleHQgPSBcIuminOiJslwiO1xuICAgICAgICAgICAgY29tcG9uZW50LnJpZ2h0VGV4dCA9IFwi5YiG57uE5ZCNXCI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kXCIsIGN1dGxpbmUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRcIiwge30pO1xuICAgICAgICAvLyBzdG9yZS5jb21taXQoXCJzZXRMZWdlbmRUaXRsZVwiLCBcIlwiKTtcbiAgICAgICAgLy8gc3RvcmUuY29tbWl0KFwic2V0TGVnZW5kUmlnaHRUZXh0XCIsIFwiXCIpO1xuICAgICAgICBMZWdlbmRNYW5hZ2UuZGVzdG9yeSh0aGlzLmVsZW1lbnRLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaXNVcGRhdGUpIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWxsQ29tcG9uZW50R3JvdXBWaXNpYmxlKGdyb3VwTmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZpZXdlciA9IHRoaXMudmlld2VyIGFzIFZpZXdlcjtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3M7XG5cbiAgICBsZXQgY29tcG9uZW50R3JvdXBzID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFxuICAgICAgXCLmnoTku7bliIbnu4TliIboibJcIlxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcbiAgICBpZiAoY29tcG9uZW50R3JvdXBzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXBvbmVudEdyb3Vwcy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG9iaiA9IGNvbXBvbmVudEdyb3Vwcy5jaGlsZE9iamVjdHNbXG4gICAgICAgICAgaVxuICAgICAgICBdIGFzIENvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3Q7XG5cbiAgICAgICAgaWYgKG9iai5uYW1lID09PSBncm91cE5hbWUpIHtcbiAgICAgICAgICBpZiAob2JqLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIG9iai5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkVkaXRpbmc7XG4gICAgICAgICAgICBvYmouc2V0Q2hpbGRWaXNpYmxlKHZpZXdlciwgdHJ1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5YiG6Imy5pi+56S65byA5YWz77yM6L6T5YWl55qE5YiG6Imy5pWI5p6c6LW35pWI77yM5YW25L2Z5YiG6Imy5pWI5p6c5YWz6ZetLlxuICAgKiBAcGFyYW0gc3RhdGUg5p6a5Li+57G75Z6LXG4gICAqL1xuICBjb2xvclN3aXRjaChzdGF0ZTogU3dpdGNoQ29sb3JEaXZpZGUsIGlzVXBkYXRlID0gdHJ1ZSkge1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgU3dpdGNoQ29sb3JEaXZpZGUuR3J1cE5hbWU6XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfR3J1cFRoaWNrbmVzcyhmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yZERpdlN3aXRjaF9NZ3JvdihmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yZERpdlN3aXRjaF9Db3JyeihmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0NvbXBvbmVudEdyb3VwKGZhbHNlLCBpc1VwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9HcnVwTmFtZSh0cnVlLCBpc1VwZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTd2l0Y2hDb2xvckRpdmlkZS5HcnVwVGhpY2tuZXNzOlxuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0dydXBOYW1lKGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX01ncm92KGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX0NvcnJ6KGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfQ29tcG9uZW50R3JvdXAoZmFsc2UsIGlzVXBkYXRlKTtcblxuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0dydXBUaGlja25lc3ModHJ1ZSwgaXNVcGRhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3dpdGNoQ29sb3JEaXZpZGUuTWdyb3Y6XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfR3J1cE5hbWUoZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9HcnVwVGhpY2tuZXNzKGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX0NvcnJ6KGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfQ29tcG9uZW50R3JvdXAoZmFsc2UsIGlzVXBkYXRlKTtcblxuICAgICAgICB0aGlzLmNvbG9yZERpdlN3aXRjaF9NZ3Jvdih0cnVlLCBpc1VwZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTd2l0Y2hDb2xvckRpdmlkZS5Db3JyejpcbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9HcnVwTmFtZShmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0dydXBUaGlja25lc3MoZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvcmREaXZTd2l0Y2hfTWdyb3YoZmFsc2UsIGlzVXBkYXRlKTtcbiAgICAgICAgdGhpcy5jb2xvckRpdlN3aXRjaF9Db21wb25lbnRHcm91cChmYWxzZSwgaXNVcGRhdGUpO1xuXG4gICAgICAgIHRoaXMuY29sb3JkRGl2U3dpdGNoX0NvcnJ6KHRydWUsIGlzVXBkYXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN3aXRjaENvbG9yRGl2aWRlLkNvbXBvbmVudEdyb3VwOlxuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0dydXBOYW1lKGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfR3J1cFRoaWNrbmVzcyhmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yZERpdlN3aXRjaF9NZ3JvdihmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yZERpdlN3aXRjaF9Db3JyeihmYWxzZSwgaXNVcGRhdGUpO1xuXG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfQ29tcG9uZW50R3JvdXAodHJ1ZSwgaXNVcGRhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3dpdGNoQ29sb3JEaXZpZGUuQ2FuY2VsOlxuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0dydXBOYW1lKGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIHRoaXMuY29sb3JEaXZTd2l0Y2hfR3J1cFRoaWNrbmVzcyhmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yZERpdlN3aXRjaF9NZ3JvdihmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yZERpdlN3aXRjaF9Db3JyeihmYWxzZSwgaXNVcGRhdGUpO1xuICAgICAgICB0aGlzLmNvbG9yRGl2U3dpdGNoX0NvbXBvbmVudEdyb3VwKGZhbHNlLCBpc1VwZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmn5DkuKrliIbnu4Torr7nva7kuobpopzoibLml7bvvIzljZXni6zmmL7npLov6ZqQ6JeP6K+l5YiG57uE5YiG6Imy55qE5pWI5p6cXG4gICAqIEBwYXJhbSBncm91cE5hbWVcbiAgICogQHBhcmFtIG9uX29mZlxuICAgKi9cbiAgY29tcG9uZW50R3JvdXBDb2xvclZpc2libGVTd2l0Y2goZ3JvdXBOYW1lOiBzdHJpbmcsIG9uX29mZjogYm9vbGVhbikge1xuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlciBhcyBWaWV3ZXI7XG4gICAgbGV0IHByb2Nlc3MgPSB0aGlzLnZpZXdlci5wcm9jZXNzO1xuXG4gICAgbGV0IGNvbXBvbmVudEdyb3VwcyA9IHByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZShcbiAgICAgIFwi5p6E5Lu25YiG57uE5YiG6ImyXCJcbiAgICApIGFzIERlc2lnbkJhc2VPYmplY3Q7XG4gICAgaWYgKGNvbXBvbmVudEdyb3Vwcykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21wb25lbnRHcm91cHMuY2hpbGRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBvYmogPSBjb21wb25lbnRHcm91cHMuY2hpbGRPYmplY3RzW1xuICAgICAgICAgIGlcbiAgICAgICAgXSBhcyBDb2xvckRpdkNvbXBvbmVudEdyb3VwT2JqZWN0O1xuXG4gICAgICAgIGlmIChvYmoubmFtZSA9PT0gZ3JvdXBOYW1lKSB7XG4gICAgICAgICAgaWYgKG9iai5jaGVja0J1c2luZXNzU3RhdGVJc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICBvYmouaXNWaXNpYmxlID0gb25fb2ZmO1xuICAgICAgICAgICAgb2JqLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkVkaXRpbmc7XG4gICAgICAgICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgICAgICAgIG9iai5hY3RpdmUodmlld2VyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9iai5pbmFjdGl2ZSh2aWV3ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2JqLnNldENoaWxkVmlzaWJsZSh2aWV3ZXIsIG9uX29mZik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICB3YXZlU3dpdGNoKG9uX29mZjogYm9vbGVhbikge1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuICAgIGxldCB3YXZlID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFwi5rOi6Z2iXCIpIGFzIFdhdmVPYmplY3Q7XG4gICAgaWYgKCF3YXZlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRXYXZlSXRlbU9iamVjdCA9IHByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICB3YXZlLFxuICAgICAgdGhpcy5jdXJyZW50U2VsZWN0V2F2ZUl0ZW1OYW1lXG4gICAgKSBhcyBXYXZlSXRlbU9iamVjdDtcbiAgICBpZiAoY3VycmVudFdhdmVJdGVtT2JqZWN0KSB7XG4gICAgICBpZiAob25fb2ZmKSB7XG4gICAgICAgIGN1cnJlbnRXYXZlSXRlbU9iamVjdC5hY3RpdmUodGhpcy52aWV3ZXIgYXMgVmlld2VyKTtcbiAgICAgICAgc3RvcmUuc3RhdGUuaW5mbyA9IGN1cnJlbnRXYXZlSXRlbU9iamVjdC50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudFdhdmVJdGVtT2JqZWN0LmluYWN0aXZlKHRoaXMudmlld2VyIGFzIFZpZXdlcik7XG4gICAgICAgIHN0b3JlLnN0YXRlLmluZm8gPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdG9yZS5zdGF0ZS5pbmZvID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICAvKipcbiAgICog5Zyf5bGC5byA5YWz5o6l5Y+jXG4gICAqIEBwYXJhbSBvbl9vZmZcbiAgICogQHJldHVybnNcbiAgICovXG4gIGJvcmVob2xlU3dpdGNoKG9uX29mZjogYm9vbGVhbikge1xuICAgIGxldCBwcm9jZXNzID0gdGhpcy52aWV3ZXIucHJvY2VzcyBhcyBQcm9jZXNzO1xuICAgIGxldCBwYXJlbnROb2RlID0gcHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFxuICAgICAgXCLlnJ/lsYLlkozms6LpnaJcIlxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcbiAgICBpZiAoIXBhcmVudE5vZGUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgbGV0IGVsZW1lbnRLZXkgPSBcInNvaWxkXCI7XG4gICAgaWYgKHBhcmVudE5vZGUgJiYgb25fb2ZmKSB7XG4gICAgICB0aGlzLmJvcmVob2xlQ3V0TGluZURpc3BsYXkgPSB0cnVlO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJlbnROb2RlLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAocGFyZW50Tm9kZS5jaGlsZE9iamVjdHNbaV0gYXMgQm9yZWhvbGVzT2JqZWN0KS5hY3RpdmUoKTtcbiAgICAgIH1cblxuICAgICAgTGVnZW5kTWFuYWdlLmNyZWF0ZShcbiAgICAgICAgZWxlbWVudEtleSxcbiAgICAgICAgdGhpcy5ib3JlaG9sZUxlZ2VuZCxcbiAgICAgICAgXCLlnJ/lsYLmlbDmja5cIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCLlnJ/lsYLlkI1cIixcbiAgICAgICAge1xuICAgICAgICAgIHJpZ2h0OiBcIjBweFwiLFxuICAgICAgICAgIGJvdHRvbTogXCIwcHhcIixcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ib3JlaG9sZUN1dExpbmVEaXNwbGF5ID0gZmFsc2U7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50Tm9kZS5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgKHBhcmVudE5vZGUuY2hpbGRPYmplY3RzW2ldIGFzIEJvcmVob2xlc09iamVjdCkuaW5hY3RpdmUoKTtcbiAgICAgIH1cbiAgICAgIExlZ2VuZE1hbmFnZS5kZXN0b3J5KGVsZW1lbnRLZXkpO1xuICAgIH1cblxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmo4Dmn6XmmK/lkKbmnInmoanlnJ/mlbDmja5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGNoZWNrUFNJKCkge1xuICAgIGxldCBleGlzdCA9IGZhbHNlO1xuICAgIGlmICghKHRoaXMudmlld2VyIGFzIFZpZXdlcikuZGF0UmVhZGVyTWFuYWdlci5wc2lvcHQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ5qGp5Zyf5pWw5o2uLlwiKTtcbiAgICAgIGV4aXN0ID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhpc3Q7XG4gIH1cblxuICAvKipcbiAgICog5qOA5p+l5piv5ZCm5a2Y5Zyo5rW35Ya15pWw5o2uXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBjaGVja1NlYWlucCgpIHtcbiAgICBsZXQgZXhpc3QgPSBmYWxzZTtcbiAgICBsZXQgcm8gPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeVR5cGUoXCJTZWFzdGF0ZUxkb3B0XCIpO1xuICAgIGlmIChybykge1xuICAgICAgZXhpc3QgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBleGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiDmnInpmZDlhYPliIfmjaLmmL7npLrpmpDol49cbiAgICovXG4gIGZpbml0ZUVsZW1lbnRTd2l0Y2godmlzaWJsZTogYm9vbGVhbikge1xuICAgIGxldCBtZW1iZXJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcIk1lbWJlck9iamVjdFwiKTtcbiAgICBpZiAodmlzaWJsZSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW1iZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBtZW1iZXIgPSBtZW1iZXJzW2ldIGFzIE1lbWJlck9iamVjdDtcbiAgICAgICAgbWVtYmVyLnNlZ21lbnRMZW5ndGhDb2VmZiA9IE1lbWJlck9iamVjdC5nX0dyaWRSYXRpbztcbiAgICAgICAgaWYgKG1lbWJlci5zZWdtZW50TGVuZ3RoQ29lZmYgPT09IC0xKSB7XG4gICAgICAgICAgbWVtYmVyLnNlZ21lbnRMZW5ndGhDb2VmZiA9IDAuOTtcbiAgICAgICAgfVxuICAgICAgICBtZW1iZXIuc2V0TmVlZFVwZGF0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbWJlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG1lbWJlciA9IG1lbWJlcnNbaV0gYXMgTWVtYmVyT2JqZWN0O1xuICAgICAgICBtZW1iZXIuc2VnbWVudExlbmd0aENvZWZmID0gMTtcbiAgICAgICAgbWVtYmVyLnNldE5lZWRVcGRhdGUoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XG4gIH1cblxuICAvKipcbiAgICog57yW6L6R6aKc6ImyKHJnYmHmlbDnu4TvvIgwLTI1NSnnpLrkvovigJTigJRbMjU1LDI1NSwyNTUsMV1cbiAgICogQHBhcmFtIGJhY2tncm91bmRDb2xvciDog4zmma/popzoibJcbiAgICogQHBhcmFtIGpvaW50Q29sb3Ig56m66Ze054K56aKc6ImyXG4gICAqIEBwYXJhbSBtZW1iZXJDb2xvckxpbmUg5p2G5Lu26aKc6Imy4oCU4oCU57q/5Zu+XG4gICAqIEBwYXJhbSBtZW1iZXJDb2xvckZhY2Ug5p2G5Lu26aKc6Imy4oCU4oCU5LiJ57u05L2TXG4gICAqIEBwYXJhbSBwbGF0ZUNvbG9yIOadv+minOiJslxuICAgKi9cbiAgZWRpdENvbG9ycyhcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IG51bWJlcltdLFxuICAgIGpvaW50Q29sb3I6IG51bWJlcltdLFxuICAgIG1lbWJlckNvbG9yTGluZTogbnVtYmVyW10sXG4gICAgbWVtYmVyQ29sb3JGYWNlOiBudW1iZXJbXSxcbiAgICBwbGF0ZUNvbG9yOiBudW1iZXJbXVxuICApIHtcbiAgICBPYmplY3RDb2xvci5qb2ludENvbG9yID0gam9pbnRDb2xvcjtcbiAgICBPYmplY3RDb2xvci5tZW1iZXJGYWNlQ29sb3IgPSBtZW1iZXJDb2xvckZhY2U7XG4gICAgT2JqZWN0Q29sb3IubWVtYmVyTGluZUNvbG9yID0gbWVtYmVyQ29sb3JMaW5lO1xuICAgIE9iamVjdENvbG9yLnBsYXRlQ29sb3IgPSBwbGF0ZUNvbG9yO1xuXG4gICAgdGhpcy52aWV3ZXIuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yO1xuXG4gICAgbGV0IGpvaW50cyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJKb2ludE9iamVjdFwiKTtcbiAgICBqb2ludHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5zZWdtZW50LmNvbG9yLnNldE1hcmtlcihqb2ludENvbG9yKTtcbiAgICB9KTtcblxuICAgIGxldCBtZW1iZXJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcbiAgICAgIFwiTWVtYmVyT2JqZWN0XCJcbiAgICApIGFzIE1lbWJlck9iamVjdFtdO1xuICAgIG1lbWJlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5mYWNlQ29sb3IgPSBtZW1iZXJDb2xvckZhY2U7XG4gICAgICBpdGVtLmxpbmVDb2xvciA9IG1lbWJlckNvbG9yTGluZTtcbiAgICAgIGl0ZW0uc2V0TmVlZFVwZGF0ZSgpO1xuICAgIH0pO1xuXG4gICAgbGV0IHBsYXRlcyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXG4gICAgICBcIlBsYXRlT2JqZWN0XCJcbiAgICApIGFzIFBsYXRlT2JqZWN0W107XG4gICAgcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uZmFjZUNvbG9yID0gcGxhdGVDb2xvcjtcbiAgICAgIGl0ZW0uc2V0TmVlZFVwZGF0ZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy52aWV3ZXIudXBkYXRlRGlzcGxheSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOminOiJsuWAvOekuuS+izpcIiNmZmZmZmZcIi0tLeeZveiJsi5cbiAgICogQHBhcmFtIGpvaW50TGFiZWwg56m66Ze054K55qCH562+6aKc6ImyXG4gICAqIEBwYXJhbSBtZW1iZXJMYWJlbCDmnYbku7bmoIfnrb7popzoibJcbiAgICogQHBhcmFtIHBsYXRlTGFiZWwg5p2/5qCH562+6aKc6ImyXG4gICAqIEBwYXJhbSBsb2FkTGFiZWwg6I236L296aKc6ImyXG4gICAqL1xuICBlZGl0TGFiZWxDb2xvcnMoXG4gICAgam9pbnRMYWJlbDogc3RyaW5nLFxuICAgIG1lbWJlckxhYmVsOiBzdHJpbmcsXG4gICAgcGxhdGVMYWJlbDogc3RyaW5nLFxuICAgIGxvYWRMYWJlbDogc3RyaW5nXG4gICkge1xuICAgIE9iamVjdENvbG9yLmpvaW50TGFiZWxDb2xvciA9IGpvaW50TGFiZWw7XG4gICAgT2JqZWN0Q29sb3IubWVtYmVyTGFiZWxDb2xvciA9IG1lbWJlckxhYmVsO1xuICAgIE9iamVjdENvbG9yLnBsYXRlTGFiZWxDb2xvciA9IHBsYXRlTGFiZWw7XG4gICAgT2JqZWN0Q29sb3IubG9hZExhYmVsQ29sb3IgPSBsb2FkTGFiZWw7XG5cbiAgICBsZXQgam9pbnRzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcbiAgICAgIFwiSm9pbnRPYmplY3RcIlxuICAgICkgYXMgSm9pbnRPYmplY3RbXTtcbiAgICBqb2ludHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5pc0RyYXdTdmcgPSBmYWxzZTtcbiAgICAgIGl0ZW0uaXNEcmF3U3ZnID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGxldCBtZW1iZXJzID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0c0J5VHlwZShcbiAgICAgIFwiTWVtYmVyT2JqZWN0XCJcbiAgICApIGFzIE1lbWJlck9iamVjdFtdO1xuICAgIG1lbWJlcnMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaXRlbS5pc0RyYXdTdmcgPSBmYWxzZTtcbiAgICAgIGl0ZW0uaXNEcmF3U3ZnID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGxldCBwbGF0ZXMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFxuICAgICAgXCJQbGF0ZU9iamVjdFwiXG4gICAgKSBhcyBQbGF0ZU9iamVjdFtdO1xuICAgIHBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLmlzRHJhd1N2ZyA9IGZhbHNlO1xuICAgICAgaXRlbS5pc0RyYXdTdmcgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgdGhpcy52aWV3ZXIuZXhlU2NlbmVDYW1lcmFDaGFuZ2VkKExvbmdhbi5Mb25nYW5Db3JlLkNhbWVyYUNoYW5nZVR5cGUuU2NhbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIOS/ruaUueaIqumdolZpZXdlcueahOiDjOaZr+minOiJsuOAgee6v+adoeminOiJsuOAgeeureWktOminOiJsuOAgeaWh+Wtl+minOiJslxuICAgKiBAcGFyYW0gc2VjdGlvblZpZXdlciDmiKrpnaJWaWV3ZXLlr7nosaFcbiAgICogQHBhcmFtIGJhY2tncm91bmRDb2xvciDog4zmma/popzoibI6IFsyNTUsMCwwLDFdXG4gICAqIEBwYXJhbSBsaW5lTGFiZWxDb2xvciDnur/mnaHpopzoibI6IFwiI2ZmZlwiXG4gICAqIEBwYXJhbSBhcnJvd0xhYmVsQ29sb3Ig566t5aS06aKc6ImyOiBcIiNmZmZcIlxuICAgKiBAcGFyYW0gdGV4dExhYmVsQ29sb3Ig5paH5a2X6aKc6ImyOiBcIiNmZmZcIlxuICAgKi9cbiAgZWRpdFNlY3Rpb25MYWJlbENvbG9ycyhcbiAgICBzZWN0aW9uVmlld2VyOiBTZWN0aW9uVmlld2VyLFxuICAgIGJhY2tncm91bmRDb2xvcjogbnVtYmVyW10sXG4gICAgbGluZUxhYmVsQ29sb3I6IHN0cmluZyxcbiAgICBhcnJvd0xhYmVsQ29sb3I6IHN0cmluZyxcbiAgICB0ZXh0TGFiZWxDb2xvcjogc3RyaW5nXG4gICkge1xuICAgIC8vXG4gICAgaWYgKGJhY2tncm91bmRDb2xvcikge1xuICAgICAgc2VjdGlvblZpZXdlci5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7XG4gICAgfVxuICAgIGlmIChsaW5lTGFiZWxDb2xvcikge1xuICAgICAgSW5zdGFuY2VTZWN0aW9uT2JqZWN0LmxpbmVMYWJlbENvbG9yID0gbGluZUxhYmVsQ29sb3I7XG4gICAgfVxuICAgIGlmIChhcnJvd0xhYmVsQ29sb3IpIHtcbiAgICAgIEluc3RhbmNlU2VjdGlvbk9iamVjdC5hcnJvd0xhYmVsQ29sb3IgPSBhcnJvd0xhYmVsQ29sb3I7XG4gICAgfVxuICAgIGlmICh0ZXh0TGFiZWxDb2xvcikge1xuICAgICAgSW5zdGFuY2VTZWN0aW9uT2JqZWN0LnRleHRMYWJlbENvbG9yID0gdGV4dExhYmVsQ29sb3I7XG4gICAgfVxuXG4gICAgbGV0IHJvb3QgPSBzZWN0aW9uVmlld2VyLnJlbmRlck9iamVjdDtcbiAgICByb290Py5jaGlsZE9iamVjdHMuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgaWYgKHNlY3Rpb24gaW5zdGFuY2VvZiBTZWN0aW9uT2JqZWN0KSB7XG4gICAgICAgIGxldCBpcm8gPSBzZWN0aW9uVmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChcbiAgICAgICAgICBzZWN0aW9uXG4gICAgICAgICkgYXMgSW5zdGFuY2VTZWN0aW9uT2JqZWN0O1xuICAgICAgICBpZiAoaXJvKSB7XG4gICAgICAgICAgaXJvLnJlbW92ZVN2ZygpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaXJvLmRyYXdTdmcoKTtcbiAgICAgICAgICB9LCAxMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliIfmjaJhY3RpdmVWaWV3ZXIuXG4gICAqIEBwYXJhbSBlbGVtZW50SWQgdmlld2Vy5omA5Zyo55qE5a655Zmo55qESWQuXG4gICAqL1xuICBzd2l0Y2hBY3RpdmVWaWV3ZXIoZWxlbWVudElkOiBzdHJpbmcpIHtcbiAgICBsZXQgcHJvY2VzcyA9IHRoaXMudmlld2VyLnByb2Nlc3M7XG4gICAgcHJvY2Vzcy52aWV3ZXJzLmZvckVhY2goKHZpKSA9PiB7XG4gICAgICBpZiAodmkuY29udGFpbmVyLmlkID09PSBlbGVtZW50SWQpIHtcbiAgICAgICAgcHJvY2Vzcy5hY3RpdmVWaWV3ZXIgPSB2aTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIOaYvuekuuWQhOS4quWOhuWPsueahOWQjeensC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIHNob3dIaXN0b3J5TGlzdCgpIHtcbiAgICBsZXQgaGlzdG9yeU1hbmFnZXIgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmhpc3RvcnlNYW5hZ2VyO1xuICAgIGxldCBsaXN0ID0gaGlzdG9yeU1hbmFnZXIuc3RhdGVMaXN0O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5jb3VudCgpOyBpKyspIHtcbiAgICAgIGNvbnNvbGUubG9nKGxpc3QuaXRlbXNbaV0ubmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICAvKipcbiAgICog5Zue5ruaL+mHjeWBmuWOhuWPsuebtOWIsOS4i+agh+WkhC5cbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBoaXN0b3J5Um9sbChpbmRleDogbnVtYmVyKSB7XG4gICAgbGV0IGhpc3RvcnlNYW5hZ2VyID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5oaXN0b3J5TWFuYWdlcjtcbiAgICBsZXQgY3VycmVudElkeCA9IGhpc3RvcnlNYW5hZ2VyLmN1cnJlbnRTdGF0ZUluZGV4O1xuXG4gICAgaWYgKGN1cnJlbnRJZHggPCBpbmRleCkge1xuICAgICAgbGV0IHRpbWUgPSBpbmRleCAtIGN1cnJlbnRJZHg7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRpbWU7IGkrKykge1xuICAgICAgICB0aGlzLnZpZXdlci5wcm9jZXNzLmhpc3RvcnlNYW5hZ2VyLnJvbGxGb3J3YXJkKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjdXJyZW50SWR4ID4gaW5kZXgpIHtcbiAgICAgIGxldCB0aW1lID0gY3VycmVudElkeCAtIGluZGV4O1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lOyBpKyspIHtcbiAgICAgICAgdGhpcy52aWV3ZXIucHJvY2Vzcy5oaXN0b3J5TWFuYWdlci5yb2xsQmFjaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoaXMuc2hvd0hpc3RvcnlMaXN0KCk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W6aG555uu5Lit55qE5YWo6YOo5bel5Ya15a+56LGhXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRMb2FkQ29uZGl0aW9uTGlzdCgpIHtcbiAgICBsZXQgbG9hZENvbmRpdGlvbnMgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RzQnlUeXBlKFxuICAgICAgXCJMb2FkQ29uZGl0aW9uT2JqZWN0XCJcbiAgICApO1xuICAgIHJldHVybiBsb2FkQ29uZGl0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiDojrflj5bpobnnm67kuK3nmoTlhajpg6jnu4TlkIjlt6XlhrXlr7nosaFcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldExvYWRDb25kaXRpb25Db21iaW5lTGlzdCgpIHtcbiAgICBsZXQgb2JqZWN0cyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdHNCeVR5cGUoXCJTZWFzdGF0ZUxjb21iXCIpO1xuICAgIHJldHVybiBvYmplY3RzO1xuICB9XG5cbiAgLyoqXG4gICAqIOa4hemZpHZpZXdlcueahFByb2Nlc3PmrovnlZnmlbDmja4uXG4gICAqL1xuICByZW1vdmVQcm9jZXNzRGF0YSgpIHtcbiAgICB0aGlzLnZpZXdlci5wcm9jZXNzLmNsZWFyUmVuZGVyT2JqZWN0cyh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmt7vliqDngrnojbfovb1cbiAgICogQHBhcmFtIGxvYWRDb25kaXRpb25STyDlt6XlhrXlr7nosaFcbiAgICogQHBhcmFtIGxvYWRHcm91cE5hbWUg6I236L2957uE5ZCNXG4gICAqIEBwYXJhbSBzZWxlY3RlZEpvaW50TmFtZSDmiYDpgInnqbrpl7TngrnlkI1cbiAgICogQHBhcmFtIGZ4XG4gICAqIEBwYXJhbSBmeVxuICAgKiBAcGFyYW0gZnpcbiAgICogQHBhcmFtIG14XG4gICAqIEBwYXJhbSBteVxuICAgKiBAcGFyYW0gbXpcbiAgICovXG4gIGFkZEpvaW50TG9hZChcbiAgICBsb2FkQ29uZGl0aW9uTmFtZTogc3RyaW5nLFxuICAgIGxvYWRHcm91cE5hbWU6IHN0cmluZyxcbiAgICBzZWxlY3RlZEpvaW50TmFtZTogc3RyaW5nLFxuICAgIGZ4OiBudW1iZXIsXG4gICAgZnk6IG51bWJlcixcbiAgICBmejogbnVtYmVyLFxuICAgIG14OiBudW1iZXIsXG4gICAgbXk6IG51bWJlcixcbiAgICBtejogbnVtYmVyXG4gICk6IG51bWJlciB7XG4gICAgbGV0IHZpZXdlciA9IHRoaXMudmlld2VyIGFzIFZpZXdlcjtcblxuICAgIC8vIOa3u+WKoOaIluS/ruaUueW3peWGtS5cbiAgICBsZXQgcHJldHJlYXRtZW50Uk8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lKFxuICAgICAgXCLlkI7lpITnkIborqHnrpfnu5PmnpxcIlxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcblxuICAgIGlmICghcHJldHJlYXRtZW50Uk8pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLmsqHmnIkn5ZCO5aSE55CG6K6h566X57uT5p6cJ+eahFJP6IqC54K5XCIpO1xuICAgICAgcmV0dXJuIDI7XG4gICAgfVxuXG4gICAgbGV0IGNvbmRpdGlvblBhcmVudCA9IHZpZXdlci5wcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxuICAgICAgcHJldHJlYXRtZW50Uk8sXG4gICAgICBcIuiNt+i9veW3peWGtVwiXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xuXG4gICAgaWYgKCFjb25kaXRpb25QYXJlbnQpIHtcbiAgICAgIGNvbmRpdGlvblBhcmVudCA9IG5ldyBEZXNpZ25CYXNlT2JqZWN0KCk7XG4gICAgICBjb25kaXRpb25QYXJlbnQuYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuQ3JlYXRpbmc7XG4gICAgICBjb25kaXRpb25QYXJlbnQubmFtZSA9IFwi6I236L295bel5Ya1XCI7XG4gICAgICB2aWV3ZXIucHJvY2Vzcy5hZGRSZW5kZXJPYmplY3QocHJldHJlYXRtZW50Uk8sIGNvbmRpdGlvblBhcmVudCk7XG4gICAgfVxuXG4gICAgbGV0IGxvYWRDb25kaXRpb25STyA9IG51bGw7XG4gICAgbG9hZENvbmRpdGlvblJPID0gdmlld2VyLnByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICBjb25kaXRpb25QYXJlbnQsXG4gICAgICBsb2FkQ29uZGl0aW9uTmFtZVxuICAgICkgYXMgTG9hZENvbmRpdGlvbk9iamVjdDtcbiAgICBpZiAoIWxvYWRDb25kaXRpb25STykge1xuICAgICAgbG9hZENvbmRpdGlvblJPID0gbmV3IExvYWRDb25kaXRpb25PYmplY3QobG9hZENvbmRpdGlvbk5hbWUpO1xuICAgICAgbG9hZENvbmRpdGlvblJPLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkNyZWF0aW5nO1xuICAgICAgdmlld2VyLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KGNvbmRpdGlvblBhcmVudCwgbG9hZENvbmRpdGlvblJPKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZENvbmRpdGlvblJPLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkVkaXRpbmc7XG4gICAgfVxuXG4gICAgbGV0IGxvYWRHcm91cFJPID0gdmlld2VyLnByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXG4gICAgICBsb2FkQ29uZGl0aW9uUk8sXG4gICAgICBsb2FkR3JvdXBOYW1lXG4gICAgKSBhcyBMb2FkR3JvdXBPYmplY3Q7XG4gICAgaWYgKCFsb2FkR3JvdXBSTykge1xuICAgICAgbG9hZEdyb3VwUk8gPSBuZXcgTG9hZEdyb3VwT2JqZWN0KGxvYWRHcm91cE5hbWUpO1xuICAgICAgbG9hZEdyb3VwUk8uYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuQ3JlYXRpbmc7XG4gICAgICB2aWV3ZXIucHJvY2Vzcy5hZGRSZW5kZXJPYmplY3QobG9hZENvbmRpdGlvblJPLCBsb2FkR3JvdXBSTyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRHcm91cFJPLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkVkaXRpbmc7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb2FkR3JvdXBSTy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBsb2FkID0gbG9hZEdyb3VwUk8uY2hpbGRPYmplY3RzW2ldO1xuICAgICAgaWYgKGxvYWQgaW5zdGFuY2VvZiBKb2ludExvYWRPYmplY3QpIHtcbiAgICAgICAgaWYgKGxvYWQuam9pbnROYW1lID09PSBzZWxlY3RlZEpvaW50TmFtZSkge1xuICAgICAgICAgIC8vIOWvueW6lOeahOW3peWGteOAgeW3peWGtee7hOeahOS4i+eahOepuumXtOeCueS4iuW3sue7j+WtmOWcqOeCueiNt+i9vS5cbiAgICAgICAgICByZXR1cm4gMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBqb2ludExvYWQgPSBuZXcgSm9pbnRMb2FkT2JqZWN0KGxvYWRDb25kaXRpb25STy5uYW1lLCBsb2FkR3JvdXBOYW1lKTtcbiAgICBqb2ludExvYWQubmFtZSA9IFwiSm9pbnQ6XCIgKyBzZWxlY3RlZEpvaW50TmFtZTtcbiAgICBqb2ludExvYWQuYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuQ3JlYXRpbmc7XG4gICAgam9pbnRMb2FkLmpvaW50TmFtZSA9IHNlbGVjdGVkSm9pbnROYW1lO1xuXG4gICAgam9pbnRMb2FkLmZvcmNlWERpcmVjdGlvbiA9IGZ4O1xuICAgIGpvaW50TG9hZC5mb3JjZVlEaXJlY3Rpb24gPSBmeTtcbiAgICBqb2ludExvYWQuZm9yY2VaRGlyZWN0aW9uID0gZno7XG5cbiAgICBqb2ludExvYWQubW9tZW50QWJvdXRYQXhpcyA9IG14O1xuICAgIGpvaW50TG9hZC5tb21lbnRBYm91dFlBeGlzID0gbXk7XG4gICAgam9pbnRMb2FkLm1vbWVudEFib3V0WkF4aXMgPSBtejtcblxuICAgIHZpZXdlci5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChsb2FkR3JvdXBSTywgam9pbnRMb2FkKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiDnvJbovpHngrnojbfovb1cbiAgICogQHBhcmFtIGpvaW50TG9hZCDopoHnvJbovpHnmoTngrnojbfovb3lr7nosaFcbiAgICogQHBhcmFtIGZ4XG4gICAqIEBwYXJhbSBmeVxuICAgKiBAcGFyYW0gZnpcbiAgICogQHBhcmFtIG14XG4gICAqIEBwYXJhbSBteVxuICAgKiBAcGFyYW0gbXpcbiAgICovXG4gIGVkaXRKb2ludExvYWQoXG4gICAgam9pbnRMb2FkOiBKb2ludExvYWRPYmplY3QsXG4gICAgZng6IG51bWJlcixcbiAgICBmeTogbnVtYmVyLFxuICAgIGZ6OiBudW1iZXIsXG4gICAgbXg6IG51bWJlcixcbiAgICBteTogbnVtYmVyLFxuICAgIG16OiBudW1iZXJcbiAgKSB7XG4gICAgam9pbnRMb2FkLmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkVkaXRpbmc7XG5cbiAgICBqb2ludExvYWQuZm9yY2VYRGlyZWN0aW9uID0gZng7XG4gICAgam9pbnRMb2FkLmZvcmNlWURpcmVjdGlvbiA9IGZ5O1xuICAgIGpvaW50TG9hZC5mb3JjZVpEaXJlY3Rpb24gPSBmejtcblxuICAgIGpvaW50TG9hZC5tb21lbnRBYm91dFhBeGlzID0gbXg7XG4gICAgam9pbnRMb2FkLm1vbWVudEFib3V0WUF4aXMgPSBteTtcbiAgICBqb2ludExvYWQubW9tZW50QWJvdXRaQXhpcyA9IG16O1xuICB9XG5cbiAgLyoqXG4gICAqIOmAmui/h+mSu+WtlOWQjeWIh+aNouaYvuekuueahOmSu+WtlOWbvuS+iy5cbiAgICogQHBhcmFtIGJvcmVob2xlTmFtZVxuICAgKi9cbiAgYm9yZWhvbGVDaGFuZ2UoYm9yZWhvbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgZWxlbWVudEtleSA9IFwic29pbGRcIjtcbiAgICBpZiAodGhpcy5ib3JlaG9sZUN1dExpbmVEaXNwbGF5KSB7XG4gICAgICB0aGlzLmJvcmVob2xlQ3V0TGluZURpc3BsYXkgPSBmYWxzZTtcbiAgICAgIExlZ2VuZE1hbmFnZS5kZXN0b3J5KGVsZW1lbnRLZXkpO1xuICAgICAgbGV0IGN1cnJlbnRCb3JlaG9sZU9iamVjdHMgPSB0aGlzLmN1cnJlbnRCb3JlaG9sZU9iamVjdHM7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3VycmVudEJvcmVob2xlT2JqZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoY3VycmVudEJvcmVob2xlT2JqZWN0c1tpXS5uYW1lID09PSBib3JlaG9sZU5hbWUpIHtcbiAgICAgICAgICBjdXJyZW50Qm9yZWhvbGVPYmplY3RzW2ldLmN1dGxpZW5BY2l0dmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYWN0aXZlQm9yZWhvbGVOYW1lID0gYm9yZWhvbGVOYW1lO1xuXG4gICAgICAgICAgdGhpcy5ib3JlaG9sZUN1dExpbmVEaXNwbGF5ID0gdHJ1ZTtcbiAgICAgICAgICBsZXQgY3V0TGluZUxlZ2VuZCA9IGN1cnJlbnRCb3JlaG9sZU9iamVjdHNbaV0uZ2VDdXRsaW5lKCk7XG4gICAgICAgICAgTGVnZW5kTWFuYWdlLmNyZWF0ZShcbiAgICAgICAgICAgIGVsZW1lbnRLZXksXG4gICAgICAgICAgICBjdXRMaW5lTGVnZW5kLFxuICAgICAgICAgICAgXCLlnJ/lsYLmlbDmja5cIixcbiAgICAgICAgICAgIFwi6aKc6ImyXCIsXG4gICAgICAgICAgICBcIuWcn+WxguWQjVwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByaWdodDogXCIwcHhcIixcbiAgICAgICAgICAgICAgYm90dG9tOiBcIjBweFwiLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudEJvcmVob2xlT2JqZWN0c1tpXS5jdXRsaWVuQWNpdHZlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBdUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFlQTtBQUFBO0FBYkE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBRUE7QUFDQTs7QUFJQTtBQWtEQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUdBO0FBQ0E7QUFNQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTs7O0FBSUE7QUFFQTtBQUVBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBTUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUtBOztBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBU0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTs7QUFFQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBRUE7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBOzs7QUFJQTtBQUNBO0FBS0E7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBT0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUNBO0FBT0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTs7QUFFQTtBQUVBO0FBQ0E7QUF3SkE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7O0FBRUE7QUFLQTtBQUNBO0FBQ0E7O0FBRUE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQVFBO0FBRUE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFRQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQU9BO0FBRUE7QUFFQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQU1BO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFNQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFvQkE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUdBO0FBQ0E7QUFJQTtBQUlBO0FBSUE7QUFJQTtBQUlBO0FBSUE7QUFJQTtBQUlBO0FBSUE7QUFJQTtBQUlBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7O0FBUUE7QUFDQTs7O0FBTUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7OztBQVFBO0FBSUE7OztBQUdBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBT0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUtBO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQU9BO0FBSUE7QUFDQTtBQUNBOzs7QUFLQTtBQUNBO0FBSUE7OztBQUdBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBOztBQUdBO0FBR0E7QUFPQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7O0FBRUE7QUFLQTtBQU9BO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7OztBQUtBO0FBQ0E7QUFJQTs7O0FBR0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBS0E7QUFDQTtBQUNBO0FBSUE7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBOzs7QUFHQTtBQU9BO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7OztBQUtBO0FBSUE7OztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7Ozs7QUFJQTtBQU1BO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFPQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBR0E7Ozs7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBR0E7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQU9BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBOztBQUVBOztBQUdBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUlBO0FBQ0E7QUFVQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBU0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFVQTtBQVFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBS0E7QUFNQTtBQUNBO0FBR0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBY0E7QUFXQTtBQUdBO0FBSUE7QUFDQTtBQUNBOztBQUdBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQVlBO0FBU0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7OztBQUlBO0FBQ0E7QUFBQTtBQXo4REE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./packages/caeDesign/src/gsDevFx/managers/interfaceManagers/commonInterfaceManager.ts\n");
|
|
4002
4002
|
|
|
4003
4003
|
/***/ }),
|
|
4004
4004
|
|
|
@@ -4856,7 +4856,7 @@ eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPAC
|
|
|
4856
4856
|
/*! no static exports found */
|
|
4857
4857
|
/***/ (function(module, exports, __webpack_require__) {
|
|
4858
4858
|
|
|
4859
|
-
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../instancesObjects/instanceRenderObject */ \"./packages/caeDesign/src/gsDevFx/objects/instancesObjects/instanceRenderObject.ts\"), __webpack_require__(/*! ../../../caeCardEditor/caeCardObjects/seainp/cardLOADCN */ \"./packages/caeDesign/src/caeCardEditor/caeCardObjects/seainp/cardLOADCN.ts\"), __webpack_require__(/*! ./jointLoadObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/jointLoadObject.ts\"), __webpack_require__(/*! ./memberLoadBaseObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/memberLoadBaseObject.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, gs_ceec_design_1, instanceRenderObject_1, cardLOADCN_1, jointLoadObject_1, memberLoadBaseObject_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.LoadGroupObject = void 0;\n var LoadGroupObject = function (_super) {\n tslib_1.__extends(LoadGroupObject, _super);\n function LoadGroupObject(loadGroupName) {\n var _this = _super.call(this) || this;\n _this.typeName = \"LoadGroupObject\";\n _this.name = loadGroupName;\n _this.loadGroup = loadGroupName;\n _this.instanceTypes.add(\"main\", instanceRenderObject_1.InstanceRenderObject.prototype);\n return _this;\n }\n LoadGroupObject.prototype.serialize = function () {\n var obj = _super.prototype.serialize.call(this);\n if (this.loadGroup) {\n obj.loadGroup = this.loadGroup;\n }\n return obj;\n };\n LoadGroupObject.prototype.deserialize = function (obj, pm) {\n _super.prototype.deserialize.call(this, obj, pm);\n if (obj.loadGroup) {\n this.loadGroup = obj.loadGroup;\n }\n };\n LoadGroupObject.prototype.active = function (viewer) {\n for (var i = 0; i < this.childObjects.length; i++) {\n var load = this.childObjects[i];\n if (load.checkBusinessStateIsActive()) {\n viewer.findInstanceObject(load).initSvg();\n }\n }\n };\n LoadGroupObject.prototype.inactive = function (viewer) {\n for (var i = 0; i < this.childObjects.length; i++) {\n var load = this.childObjects[i];\n viewer.findInstanceObject(load).removeSvg();\n }\n };\n LoadGroupObject.prototype.serializeToCard = function () {\n var card = new cardLOADCN_1.CardLOADCN();\n card.lineLabel.value = \"LOADCN\";\n card.loadConditionName.value = this.parent.name;\n var text = card.getLine();\n text += \"\\n\";\n for (var i = 0; i < this.childObjects.length; i++) {\n var result = this.childObjects[i].serializeToCard();\n if (result !== null) {\n text += result + \"\\n\";\n }\n }\n text += \"* CASE\" + card.loadConditionName.value;\n text += \"\\n\";\n return text;\n };\n LoadGroupObject.prototype.serializeToCardSeaInp = function () {\n var card = new cardLOADCN_1.CardLOADCN();\n card.lineLabel.value = \"LOADCN\";\n card.loadConditionName.value = this.parent.name;\n var text = card.getLine();\n text += \"\\n\";\n for (var i = 0; i < this.childObjects.length; i++) {\n if (this.childObjects[i] instanceof jointLoadObject_1.JointLoadObject) {\n var result = this.childObjects[i].serializeToCard();\n if (result !== null) {\n text += result + \"\\n\";\n }\n }\n }\n text += \"* CASE\" + card.loadConditionName.value;\n text += \"\\n\";\n return text;\n };\n LoadGroupObject.prototype.serializeToCardSacInp = function () {\n var card = new cardLOADCN_1.CardLOADCN();\n card.lineLabel.value = \"LOADCN\";\n if (this.parent) {\n card.loadConditionName.value = this.parent.name;\n var text = card.getLine();\n text += \"\\n\";\n for (var i = 0; i < this.childObjects.length; i++) {\n if (this.childObjects[i] instanceof memberLoadBaseObject_1.MemberLoadBaseObject) {\n var result = this.childObjects[i].serializeToCard();\n if (result !== null) {\n text += result + \"\\n\";\n }\n } else if (this.childObjects[i] instanceof jointLoadObject_1.JointLoadObject) {\n var result = this.childObjects[i].serializeToCard();\n if (result !== null) {\n text += result + \"\\n\";\n }\n }\n }\n text += \"* CASE\" + card.loadConditionName.value;\n text += \"\\n\";\n return text;\n }\n return \"\";\n };\n return LoadGroupObject;\n }(gs_ceec_design_1.DesignBaseObject);\n exports.LoadGroupObject = LoadGroupObject;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2Rngvb2JqZWN0cy9sb2FkT2JqZWN0cy9sb2FkR3JvdXBPYmplY3QudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2Rngvb2JqZWN0cy9sb2FkT2JqZWN0cy9sb2FkR3JvdXBPYmplY3QudHM/N2E2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXNpZ25CYXNlT2JqZWN0IH0gZnJvbSBcImdzLWNlZWMtZGVzaWduXCI7XHJcbmltcG9ydCB7IExvbmdhbiB9IGZyb20gXCJncy1iaW0tYWlyXCI7XHJcbmltcG9ydCB7IEluc3RhbmNlUmVuZGVyT2JqZWN0IH0gZnJvbSBcIi4uL2luc3RhbmNlc09iamVjdHMvaW5zdGFuY2VSZW5kZXJPYmplY3RcIjtcclxuaW1wb3J0IHsgSW5zdGFuY2VMb2FkQmFzZU9iamVjdCB9IGZyb20gXCIuL2luc3RhbmNlTG9hZEJhc2VPYmplY3RcIjtcclxuaW1wb3J0IHsgTG9hZEJhc2VPYmplY3QgfSBmcm9tIFwiLi9sb2FkQmFzZU9iamVjdFwiO1xyXG5pbXBvcnQgeyBDYXJkTE9BRENOIH0gZnJvbSBcIi4uLy4uLy4uL2NhZUNhcmRFZGl0b3IvY2FlQ2FyZE9iamVjdHMvc2VhaW5wL2NhcmRMT0FEQ05cIjtcclxuaW1wb3J0IHsgSm9pbnRMb2FkT2JqZWN0IH0gZnJvbSBcIi4vam9pbnRMb2FkT2JqZWN0XCI7XHJcbmltcG9ydCB7IE1lbWJlckxvYWRCYXNlT2JqZWN0IH0gZnJvbSBcIi4vbWVtYmVyTG9hZEJhc2VPYmplY3RcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBMb2FkR3JvdXBPYmplY3QgZXh0ZW5kcyBEZXNpZ25CYXNlT2JqZWN0IHtcclxuICBwdWJsaWMgdHlwZU5hbWUgPSBcIkxvYWRHcm91cE9iamVjdFwiO1xyXG5cclxuICAvKipcclxuICAgKiDojbfovb3nu4TlkI0uXHJcbiAgICovXHJcbiAgcHVibGljIGxvYWRHcm91cDogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IobG9hZEdyb3VwTmFtZTogc3RyaW5nKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5uYW1lID0gbG9hZEdyb3VwTmFtZTtcclxuICAgIHRoaXMubG9hZEdyb3VwID0gbG9hZEdyb3VwTmFtZTtcclxuICAgIHRoaXMuaW5zdGFuY2VUeXBlcy5hZGQoXCJtYWluXCIsIEluc3RhbmNlUmVuZGVyT2JqZWN0LnByb3RvdHlwZSk7XHJcbiAgfVxyXG5cclxuICBzZXJpYWxpemUoKSB7XHJcbiAgICBsZXQgb2JqID0gc3VwZXIuc2VyaWFsaXplKCk7XHJcblxyXG4gICAgaWYgKHRoaXMubG9hZEdyb3VwKSB7XHJcbiAgICAgIG9iai5sb2FkR3JvdXAgPSB0aGlzLmxvYWRHcm91cDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbiAgZGVzZXJpYWxpemUob2JqOiBhbnksIHBtPzogTG9uZ2FuLlBlcnNpc3RlbmNlTWFuYWdlcik6IHZvaWQge1xyXG4gICAgc3VwZXIuZGVzZXJpYWxpemUob2JqLCBwbSk7XHJcblxyXG4gICAgaWYgKG9iai5sb2FkR3JvdXApIHtcclxuICAgICAgdGhpcy5sb2FkR3JvdXAgPSBvYmoubG9hZEdyb3VwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyhcImFjdGl2ZS0tLS0tXCIpO1xyXG4gICAgLy8gICB0aGlzLmFjdGl2ZShQcm9jZXNzLmFjdGl2ZVByb2Nlc3MuYWN0aXZlVmlld2VyKTtcclxuICAgIC8vIH0sIDUwMDApO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlKHZpZXdlcjogTG9uZ2FuLlZpZXdlcikge1xyXG4gICAgLy8g57uY5Yi26K+l6I236L2957uE55qE5YWo6YOo6I236L29LlxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgbG9hZCA9IHRoaXMuY2hpbGRPYmplY3RzW2ldIGFzIExvYWRCYXNlT2JqZWN0O1xyXG4gICAgICBpZihsb2FkLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcclxuICAgICAgICAodmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChsb2FkKSBhcyBJbnN0YW5jZUxvYWRCYXNlT2JqZWN0KS5pbml0U3ZnKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluYWN0aXZlKHZpZXdlcjogTG9uZ2FuLlZpZXdlcikge1xyXG4gICAgLy8g5Y+W5raI6K+l6I236L2957uE55qE57uY5Yi2LlxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgbG9hZCA9IHRoaXMuY2hpbGRPYmplY3RzW2ldIGFzIExvYWRCYXNlT2JqZWN0O1xyXG4gICAgICAodmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChsb2FkKSBhcyBJbnN0YW5jZUxvYWRCYXNlT2JqZWN0KS5yZW1vdmVTdmcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZVRvQ2FyZCgpIHtcclxuICAgIC8vXHJcbiAgICBsZXQgY2FyZCA9IG5ldyBDYXJkTE9BRENOKCk7XHJcbiAgICBjYXJkLmxpbmVMYWJlbC52YWx1ZSA9IFwiTE9BRENOXCI7XHJcbiAgICBjYXJkLmxvYWRDb25kaXRpb25OYW1lLnZhbHVlID0gdGhpcy5wYXJlbnQubmFtZTtcclxuXHJcbiAgICBsZXQgdGV4dCA9IGNhcmQuZ2V0TGluZSgpO1xyXG4gICAgdGV4dCArPSBcIlxcblwiO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHJlc3VsdCA9ICh0aGlzLmNoaWxkT2JqZWN0c1tpXSBhcyBMb2FkQmFzZU9iamVjdCkuc2VyaWFsaXplVG9DYXJkKCk7XHJcbiAgICAgIGlmKHJlc3VsdCAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRleHQgKz0gcmVzdWx0ICsgXCJcXG5cIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGV4dCArPSBcIiogQ0FTRVwiICsgY2FyZC5sb2FkQ29uZGl0aW9uTmFtZS52YWx1ZTtcclxuICAgIHRleHQgKz0gXCJcXG5cIjtcclxuXHJcbiAgICByZXR1cm4gdGV4dDtcclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZVRvQ2FyZFNlYUlucCgpIHtcclxuICAgIC8vXHJcbiAgICBsZXQgY2FyZCA9IG5ldyBDYXJkTE9BRENOKCk7XHJcbiAgICBjYXJkLmxpbmVMYWJlbC52YWx1ZSA9IFwiTE9BRENOXCI7XHJcbiAgICBjYXJkLmxvYWRDb25kaXRpb25OYW1lLnZhbHVlID0gdGhpcy5wYXJlbnQubmFtZTtcclxuXHJcbiAgICBsZXQgdGV4dCA9IGNhcmQuZ2V0TGluZSgpO1xyXG4gICAgdGV4dCArPSBcIlxcblwiO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGRPYmplY3RzW2ldIGluc3RhbmNlb2YgSm9pbnRMb2FkT2JqZWN0KSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9ICh0aGlzLmNoaWxkT2JqZWN0c1tpXSBhcyBMb2FkQmFzZU9iamVjdCkuc2VyaWFsaXplVG9DYXJkKCk7XHJcbiAgICAgICAgaWYocmVzdWx0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB0ZXh0ICs9IHJlc3VsdCArIFwiXFxuXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0ZXh0ICs9IFwiKiBDQVNFXCIgKyBjYXJkLmxvYWRDb25kaXRpb25OYW1lLnZhbHVlO1xyXG4gICAgdGV4dCArPSBcIlxcblwiO1xyXG5cclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcbiAgc2VyaWFsaXplVG9DYXJkU2FjSW5wKCkge1xyXG4gICAgLy9cclxuICAgIGxldCBjYXJkID0gbmV3IENhcmRMT0FEQ04oKTtcclxuICAgIGNhcmQubGluZUxhYmVsLnZhbHVlID0gXCJMT0FEQ05cIjtcclxuICAgIC8vIGlmICghdGhpcy5wYXJlbnQpIHtcclxuICAgIGlmICh0aGlzLnBhcmVudCkge1xyXG4gICAgICBjYXJkLmxvYWRDb25kaXRpb25OYW1lLnZhbHVlID0gdGhpcy5wYXJlbnQubmFtZTtcclxuXHJcbiAgICAgIGxldCB0ZXh0ID0gY2FyZC5nZXRMaW5lKCk7XHJcbiAgICAgIHRleHQgKz0gXCJcXG5cIjtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5jaGlsZE9iamVjdHNbaV0gaW5zdGFuY2VvZiBNZW1iZXJMb2FkQmFzZU9iamVjdCkge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IChcclxuICAgICAgICAgICAgdGhpcy5jaGlsZE9iamVjdHNbaV0gYXMgTG9hZEJhc2VPYmplY3RcclxuICAgICAgICAgICkuc2VyaWFsaXplVG9DYXJkKCk7XHJcbiAgICAgICAgICBpZihyZXN1bHQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGV4dCArPSByZXN1bHQgKyBcIlxcblwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmNoaWxkT2JqZWN0c1tpXSBpbnN0YW5jZW9mIEpvaW50TG9hZE9iamVjdCkge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IChcclxuICAgICAgICAgICAgdGhpcy5jaGlsZE9iamVjdHNbaV0gYXMgTG9hZEJhc2VPYmplY3RcclxuICAgICAgICAgICkuc2VyaWFsaXplVG9DYXJkKCk7XHJcbiAgICAgICAgICBpZihyZXN1bHQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGV4dCArPSByZXN1bHQgKyBcIlxcblwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0ZXh0ICs9IFwiKiBDQVNFXCIgKyBjYXJkLmxvYWRDb25kaXRpb25OYW1lLnZhbHVlO1xyXG4gICAgICB0ZXh0ICs9IFwiXFxuXCI7XHJcblxyXG4gICAgICByZXR1cm4gdGV4dDtcclxuICAgIH1cclxuICAgIHJldHVybiBcIlwiO1xyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFTQTtBQUFBO0FBUUE7QUFBQTtBQVBBO0FBU0E7QUFDQTtBQUNBOztBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7O0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBOztBQU9BO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTs7QUFFQTtBQUVBO0FBR0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQXhJQTs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./packages/caeDesign/src/gsDevFx/objects/loadObjects/loadGroupObject.ts\n");
|
|
4859
|
+
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../instancesObjects/instanceRenderObject */ \"./packages/caeDesign/src/gsDevFx/objects/instancesObjects/instanceRenderObject.ts\"), __webpack_require__(/*! ../../../caeCardEditor/caeCardObjects/seainp/cardLOADCN */ \"./packages/caeDesign/src/caeCardEditor/caeCardObjects/seainp/cardLOADCN.ts\"), __webpack_require__(/*! ./jointLoadObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/jointLoadObject.ts\"), __webpack_require__(/*! ./memberLoadBaseObject */ \"./packages/caeDesign/src/gsDevFx/objects/loadObjects/memberLoadBaseObject.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, gs_ceec_design_1, instanceRenderObject_1, cardLOADCN_1, jointLoadObject_1, memberLoadBaseObject_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.LoadGroupObject = void 0;\n var LoadGroupObject = function (_super) {\n tslib_1.__extends(LoadGroupObject, _super);\n function LoadGroupObject(loadGroupName) {\n var _this = _super.call(this) || this;\n _this.typeName = \"LoadGroupObject\";\n _this.name = loadGroupName;\n _this.loadGroup = loadGroupName;\n _this.instanceTypes.add(\"main\", instanceRenderObject_1.InstanceRenderObject.prototype);\n return _this;\n }\n LoadGroupObject.prototype.serialize = function () {\n var obj = _super.prototype.serialize.call(this);\n if (this.loadGroup) {\n obj.loadGroup = this.loadGroup;\n }\n return obj;\n };\n LoadGroupObject.prototype.deserialize = function (obj, pm) {\n _super.prototype.deserialize.call(this, obj, pm);\n if (obj.loadGroup) {\n this.loadGroup = obj.loadGroup;\n }\n };\n LoadGroupObject.prototype.active = function (viewer) {\n for (var i = 0; i < this.childObjects.length; i++) {\n var load = this.childObjects[i];\n if (load.checkBusinessStateIsActive()) {\n viewer.findInstanceObject(load).initSvg();\n }\n }\n };\n LoadGroupObject.prototype.inactive = function (viewer) {\n for (var i = 0; i < this.childObjects.length; i++) {\n var load = this.childObjects[i];\n viewer.findInstanceObject(load).removeSvg();\n }\n };\n LoadGroupObject.prototype.serializeToCard = function () {\n var card = new cardLOADCN_1.CardLOADCN();\n card.lineLabel.value = \"LOADCN\";\n card.loadConditionName.value = this.parent.name;\n var text = card.getLine();\n text += \"\\n\";\n for (var i = 0; i < this.childObjects.length; i++) {\n var result = this.childObjects[i].serializeToCard();\n if (result !== null) {\n text += result + \"\\n\";\n }\n }\n text += \"* CASE\" + card.loadConditionName.value;\n text += \"\\n\";\n return text;\n };\n LoadGroupObject.prototype.serializeToCardSeaInp = function () {\n var card = new cardLOADCN_1.CardLOADCN();\n card.lineLabel.value = \"LOADCN\";\n card.loadConditionName.value = this.parent.name;\n var text = card.getLine();\n text += \"\\n\";\n for (var i = 0; i < this.childObjects.length; i++) {\n if (this.childObjects[i] instanceof jointLoadObject_1.JointLoadObject) {\n var result = this.childObjects[i].serializeToCard();\n if (result !== null) {\n text += result + \"\\n\";\n }\n }\n }\n text += \"* CASE\" + card.loadConditionName.value;\n text += \"\\n\";\n return text;\n };\n LoadGroupObject.prototype.serializeToCardSacInp = function () {\n var card = new cardLOADCN_1.CardLOADCN();\n card.lineLabel.value = \"LOADCN\";\n if (this.parent) {\n card.loadConditionName.value = this.parent.name;\n var text = card.getLine();\n text += \"\\n\";\n for (var i = 0; i < this.childObjects.length; i++) {\n if (this.childObjects[i] instanceof memberLoadBaseObject_1.MemberLoadBaseObject) {\n var result = this.childObjects[i].serializeToCard();\n if (result !== null) {\n text += result + \"\\n\";\n }\n } else if (this.childObjects[i] instanceof jointLoadObject_1.JointLoadObject) {\n var result = this.childObjects[i].serializeToCard();\n if (result !== null) {\n text += result + \"\\n\";\n }\n }\n }\n text += \"* CASE\" + card.loadConditionName.value;\n text += \"\\n\";\n return text;\n }\n return \"\";\n };\n return LoadGroupObject;\n }(gs_ceec_design_1.DesignBaseObject);\n exports.LoadGroupObject = LoadGroupObject;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2Rngvb2JqZWN0cy9sb2FkT2JqZWN0cy9sb2FkR3JvdXBPYmplY3QudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2Rngvb2JqZWN0cy9sb2FkT2JqZWN0cy9sb2FkR3JvdXBPYmplY3QudHM/N2E2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXNpZ25CYXNlT2JqZWN0IH0gZnJvbSBcImdzLWNlZWMtZGVzaWduXCI7XHJcbmltcG9ydCB7IExvbmdhbiB9IGZyb20gXCJncy1iaW0tYWlyXCI7XHJcbmltcG9ydCB7IEluc3RhbmNlUmVuZGVyT2JqZWN0IH0gZnJvbSBcIi4uL2luc3RhbmNlc09iamVjdHMvaW5zdGFuY2VSZW5kZXJPYmplY3RcIjtcclxuaW1wb3J0IHsgSW5zdGFuY2VMb2FkQmFzZU9iamVjdCB9IGZyb20gXCIuL2luc3RhbmNlTG9hZEJhc2VPYmplY3RcIjtcclxuaW1wb3J0IHsgTG9hZEJhc2VPYmplY3QgfSBmcm9tIFwiLi9sb2FkQmFzZU9iamVjdFwiO1xyXG5pbXBvcnQgeyBDYXJkTE9BRENOIH0gZnJvbSBcIi4uLy4uLy4uL2NhZUNhcmRFZGl0b3IvY2FlQ2FyZE9iamVjdHMvc2VhaW5wL2NhcmRMT0FEQ05cIjtcclxuaW1wb3J0IHsgSm9pbnRMb2FkT2JqZWN0IH0gZnJvbSBcIi4vam9pbnRMb2FkT2JqZWN0XCI7XHJcbmltcG9ydCB7IE1lbWJlckxvYWRCYXNlT2JqZWN0IH0gZnJvbSBcIi4vbWVtYmVyTG9hZEJhc2VPYmplY3RcIjtcclxuXHJcbi8qKlxyXG4gKiDojbfovb3nu4Tnu5jliLblr7nosaEuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTG9hZEdyb3VwT2JqZWN0IGV4dGVuZHMgRGVzaWduQmFzZU9iamVjdCB7XHJcbiAgcHVibGljIHR5cGVOYW1lID0gXCJMb2FkR3JvdXBPYmplY3RcIjtcclxuXHJcbiAgLyoqXHJcbiAgICog6I236L2957uE5ZCNLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBsb2FkR3JvdXA6IHN0cmluZztcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKGxvYWRHcm91cE5hbWU6IHN0cmluZykge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMubmFtZSA9IGxvYWRHcm91cE5hbWU7XHJcbiAgICB0aGlzLmxvYWRHcm91cCA9IGxvYWRHcm91cE5hbWU7XHJcbiAgICB0aGlzLmluc3RhbmNlVHlwZXMuYWRkKFwibWFpblwiLCBJbnN0YW5jZVJlbmRlck9iamVjdC5wcm90b3R5cGUpO1xyXG4gIH1cclxuXHJcbiAgc2VyaWFsaXplKCkge1xyXG4gICAgbGV0IG9iaiA9IHN1cGVyLnNlcmlhbGl6ZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmxvYWRHcm91cCkge1xyXG4gICAgICBvYmoubG9hZEdyb3VwID0gdGhpcy5sb2FkR3JvdXA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcblxyXG4gIGRlc2VyaWFsaXplKG9iajogYW55LCBwbT86IExvbmdhbi5QZXJzaXN0ZW5jZU1hbmFnZXIpOiB2b2lkIHtcclxuICAgIHN1cGVyLmRlc2VyaWFsaXplKG9iaiwgcG0pO1xyXG5cclxuICAgIGlmIChvYmoubG9hZEdyb3VwKSB7XHJcbiAgICAgIHRoaXMubG9hZEdyb3VwID0gb2JqLmxvYWRHcm91cDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgY29uc29sZS5sb2coXCJhY3RpdmUtLS0tLVwiKTtcclxuICAgIC8vICAgdGhpcy5hY3RpdmUoUHJvY2Vzcy5hY3RpdmVQcm9jZXNzLmFjdGl2ZVZpZXdlcik7XHJcbiAgICAvLyB9LCA1MDAwKTtcclxuICB9XHJcblxyXG4gIGFjdGl2ZSh2aWV3ZXI6IExvbmdhbi5WaWV3ZXIpIHtcclxuICAgIC8vIOe7mOWItuivpeiNt+i9vee7hOeahOWFqOmDqOiNt+i9vS5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGxvYWQgPSB0aGlzLmNoaWxkT2JqZWN0c1tpXSBhcyBMb2FkQmFzZU9iamVjdDtcclxuICAgICAgaWYobG9hZC5jaGVja0J1c2luZXNzU3RhdGVJc0FjdGl2ZSgpKSB7XHJcbiAgICAgICAgKHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3QobG9hZCkgYXMgSW5zdGFuY2VMb2FkQmFzZU9iamVjdCkuaW5pdFN2ZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbmFjdGl2ZSh2aWV3ZXI6IExvbmdhbi5WaWV3ZXIpIHtcclxuICAgIC8vIOWPlua2iOivpeiNt+i9vee7hOeahOe7mOWIti5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGxvYWQgPSB0aGlzLmNoaWxkT2JqZWN0c1tpXSBhcyBMb2FkQmFzZU9iamVjdDtcclxuICAgICAgKHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3QobG9hZCkgYXMgSW5zdGFuY2VMb2FkQmFzZU9iamVjdCkucmVtb3ZlU3ZnKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXJpYWxpemVUb0NhcmQoKSB7XHJcbiAgICAvL1xyXG4gICAgbGV0IGNhcmQgPSBuZXcgQ2FyZExPQURDTigpO1xyXG4gICAgY2FyZC5saW5lTGFiZWwudmFsdWUgPSBcIkxPQURDTlwiO1xyXG4gICAgY2FyZC5sb2FkQ29uZGl0aW9uTmFtZS52YWx1ZSA9IHRoaXMucGFyZW50Lm5hbWU7XHJcblxyXG4gICAgbGV0IHRleHQgPSBjYXJkLmdldExpbmUoKTtcclxuICAgIHRleHQgKz0gXCJcXG5cIjtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCByZXN1bHQgPSAodGhpcy5jaGlsZE9iamVjdHNbaV0gYXMgTG9hZEJhc2VPYmplY3QpLnNlcmlhbGl6ZVRvQ2FyZCgpO1xyXG4gICAgICBpZihyZXN1bHQgIT09IG51bGwpIHtcclxuICAgICAgICB0ZXh0ICs9IHJlc3VsdCArIFwiXFxuXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRleHQgKz0gXCIqIENBU0VcIiArIGNhcmQubG9hZENvbmRpdGlvbk5hbWUudmFsdWU7XHJcbiAgICB0ZXh0ICs9IFwiXFxuXCI7XHJcblxyXG4gICAgcmV0dXJuIHRleHQ7XHJcbiAgfVxyXG5cclxuICBzZXJpYWxpemVUb0NhcmRTZWFJbnAoKSB7XHJcbiAgICAvL1xyXG4gICAgbGV0IGNhcmQgPSBuZXcgQ2FyZExPQURDTigpO1xyXG4gICAgY2FyZC5saW5lTGFiZWwudmFsdWUgPSBcIkxPQURDTlwiO1xyXG4gICAgY2FyZC5sb2FkQ29uZGl0aW9uTmFtZS52YWx1ZSA9IHRoaXMucGFyZW50Lm5hbWU7XHJcblxyXG4gICAgbGV0IHRleHQgPSBjYXJkLmdldExpbmUoKTtcclxuICAgIHRleHQgKz0gXCJcXG5cIjtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aGlzLmNoaWxkT2JqZWN0c1tpXSBpbnN0YW5jZW9mIEpvaW50TG9hZE9iamVjdCkge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSAodGhpcy5jaGlsZE9iamVjdHNbaV0gYXMgTG9hZEJhc2VPYmplY3QpLnNlcmlhbGl6ZVRvQ2FyZCgpO1xyXG4gICAgICAgIGlmKHJlc3VsdCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGV4dCArPSByZXN1bHQgKyBcIlxcblwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGV4dCArPSBcIiogQ0FTRVwiICsgY2FyZC5sb2FkQ29uZGl0aW9uTmFtZS52YWx1ZTtcclxuICAgIHRleHQgKz0gXCJcXG5cIjtcclxuXHJcbiAgICByZXR1cm4gdGV4dDtcclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZVRvQ2FyZFNhY0lucCgpIHtcclxuICAgIC8vXHJcbiAgICBsZXQgY2FyZCA9IG5ldyBDYXJkTE9BRENOKCk7XHJcbiAgICBjYXJkLmxpbmVMYWJlbC52YWx1ZSA9IFwiTE9BRENOXCI7XHJcbiAgICAvLyBpZiAoIXRoaXMucGFyZW50KSB7XHJcbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcclxuICAgICAgY2FyZC5sb2FkQ29uZGl0aW9uTmFtZS52YWx1ZSA9IHRoaXMucGFyZW50Lm5hbWU7XHJcblxyXG4gICAgICBsZXQgdGV4dCA9IGNhcmQuZ2V0TGluZSgpO1xyXG4gICAgICB0ZXh0ICs9IFwiXFxuXCI7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hpbGRPYmplY3RzW2ldIGluc3RhbmNlb2YgTWVtYmVyTG9hZEJhc2VPYmplY3QpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSAoXHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRPYmplY3RzW2ldIGFzIExvYWRCYXNlT2JqZWN0XHJcbiAgICAgICAgICApLnNlcmlhbGl6ZVRvQ2FyZCgpO1xyXG4gICAgICAgICAgaWYocmVzdWx0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRleHQgKz0gcmVzdWx0ICsgXCJcXG5cIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5jaGlsZE9iamVjdHNbaV0gaW5zdGFuY2VvZiBKb2ludExvYWRPYmplY3QpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSAoXHJcbiAgICAgICAgICAgIHRoaXMuY2hpbGRPYmplY3RzW2ldIGFzIExvYWRCYXNlT2JqZWN0XHJcbiAgICAgICAgICApLnNlcmlhbGl6ZVRvQ2FyZCgpO1xyXG4gICAgICAgICAgaWYocmVzdWx0ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRleHQgKz0gcmVzdWx0ICsgXCJcXG5cIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGV4dCArPSBcIiogQ0FTRVwiICsgY2FyZC5sb2FkQ29uZGl0aW9uTmFtZS52YWx1ZTtcclxuICAgICAgdGV4dCArPSBcIlxcblwiO1xyXG5cclxuICAgICAgcmV0dXJuIHRleHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBWUE7QUFBQTtBQVFBO0FBQUE7QUFQQTtBQVNBO0FBQ0E7QUFDQTs7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBOztBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTs7QUFPQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7O0FBRUE7QUFFQTtBQUdBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQUE7QUF4SUE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./packages/caeDesign/src/gsDevFx/objects/loadObjects/loadGroupObject.ts\n");
|
|
4860
4860
|
|
|
4861
4861
|
/***/ }),
|
|
4862
4862
|
|
|
@@ -4944,7 +4944,7 @@ eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPAC
|
|
|
4944
4944
|
/*! no static exports found */
|
|
4945
4945
|
/***/ (function(module, exports, __webpack_require__) {
|
|
4946
4946
|
|
|
4947
|
-
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! gs-bim-air */ \"./node_modules/gs-bim-air/lib/BimAir.umd.min.js\"), __webpack_require__(/*! ./colorDivBaseObject */ \"./packages/caeDesign/src/gsDevFx/objects/pretreatmentObjects/colorDivBaseObject.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../caeObjects/plateObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/plateObject.ts\"), __webpack_require__(/*! ../caeObjects/memberObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/memberObject.ts\"), __webpack_require__(/*! ../caeObjects/objectColors */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/objectColors.ts\"), __webpack_require__(/*! ../../../caeCardEditor/caeCardObjects/set/cardGeomSet */ \"./packages/caeDesign/src/caeCardEditor/caeCardObjects/set/cardGeomSet.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, gs_ceec_design_1, gs_bim_air_1, colorDivBaseObject_1, gs_ceec_design_2, plateObject_1, memberObject_1, objectColors_1, cardGeomSet_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ColorDivComponentGroupObject = void 0;\n var ColorDivComponentGroupObject = function (_super) {\n tslib_1.__extends(ColorDivComponentGroupObject, _super);\n function ColorDivComponentGroupObject() {\n var _this = _super.call(this) || this;\n _this.typeName = \"ColorDivComponentGroupObject\";\n _this.refercenJointIds = null;\n _this.refercenMemberIds = null;\n _this.refercenPlateIds = null;\n _this._color = null;\n _this.isVisible = true;\n _this.refercenJointIds = new gs_bim_air_1.Longan.List();\n _this.refercenMemberIds = new gs_bim_air_1.Longan.List();\n _this.refercenPlateIds = new gs_bim_air_1.Longan.List();\n _this.instanceTypes.add(\"main\", gs_ceec_design_1.InstanceDesignBaseObject.prototype);\n return _this;\n }\n Object.defineProperty(ColorDivComponentGroupObject.prototype, \"color\", {\n get: function get() {\n return this._color;\n },\n set: function set(value) {\n this._color = value;\n },\n enumerable: false,\n configurable: true\n });\n ColorDivComponentGroupObject.checkNamelegal = function (name) {\n var reg = /^[A-Z0-9]*$/;\n if (!reg.test(name)) {\n console.log(\"分组名称不符合规范\");\n return false;\n }\n return true;\n };\n ColorDivComponentGroupObject.prototype.serialize = function () {\n var obj = _super.prototype.serialize.call(this);\n if (this.refercenJointIds) {\n var array = new Array();\n for (var i = 0; i < this.refercenJointIds.count(); i++) {\n array.push(this.refercenJointIds.items[i]);\n }\n obj.refercenJointIds = array;\n }\n if (this.refercenMemberIds) {\n var array = new Array();\n for (var i = 0; i < this.refercenMemberIds.count(); i++) {\n array.push(this.refercenMemberIds.items[i]);\n }\n obj.refercenMemberIds = array;\n }\n if (this.refercenPlateIds) {\n var array = new Array();\n for (var i = 0; i < this.refercenPlateIds.count(); i++) {\n array.push(this.refercenPlateIds.items[i]);\n }\n obj.refercenPlateIds = array;\n }\n if (this.color) {\n obj.color = this.color;\n }\n if (this.isVisible !== null && this.isVisible !== undefined) {\n obj.isVisible = this.isVisible;\n }\n return obj;\n };\n ColorDivComponentGroupObject.prototype.deserialize = function (obj, pm) {\n _super.prototype.deserialize.call(this, obj, pm);\n if (obj.refercenJointIds) {\n for (var i = 0; i < obj.refercenJointIds.length; i++) {\n this.refercenJointIds.add(obj.refercenJointIds[i]);\n }\n }\n if (obj.refercenMemberIds) {\n for (var i = 0; i < obj.refercenMemberIds.length; i++) {\n this.refercenMemberIds.add(obj.refercenMemberIds[i]);\n }\n }\n if (obj.refercenPlateIds) {\n for (var i = 0; i < obj.refercenPlateIds.length; i++) {\n this.refercenPlateIds.add(obj.refercenPlateIds[i]);\n }\n }\n if (obj.color) {\n this.color = obj.color;\n }\n if (obj.isVisible !== null && obj.isVisible !== undefined) {\n this.isVisible = obj.isVisible;\n }\n };\n ColorDivComponentGroupObject.prototype.active = function (viewer) {\n if (this.refercenJointIds && this.isVisible) {\n for (var i = 0; i < this.refercenJointIds.count(); i++) {\n var id = this.refercenJointIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.jointNode, id);\n if (ro instanceof gs_ceec_design_2.DesignBaseObject) {\n ro.setNeedUpdate();\n }\n }\n }\n if (this.refercenMemberIds && this.isVisible) {\n for (var i = 0; i < this.refercenMemberIds.count(); i++) {\n var id = this.refercenMemberIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.memberNode, id);\n if (ro && ro instanceof memberObject_1.MemberObject) {\n if (this.color === \"unAssigned\" || !this.color) {\n if (ro instanceof memberObject_1.MemberObject) {\n ro.faceColor = objectColors_1.ObjectColor.memberFaceColor;\n }\n } else {\n ro.faceColor = this.color;\n }\n ro.setNeedUpdate();\n }\n }\n }\n if (this.refercenPlateIds && this.isVisible) {\n for (var i = 0; i < this.refercenPlateIds.count(); i++) {\n var id = this.refercenPlateIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.plateNode, id);\n if (ro && ro instanceof plateObject_1.PlateObject) {\n if (this.color === \"unAssigned\" || !this.color) {\n if (ro instanceof plateObject_1.PlateObject) {\n ro.faceColor = objectColors_1.ObjectColor.plateColor;\n }\n } else {\n ro.faceColor = this.color;\n }\n ro.setNeedUpdate();\n }\n }\n }\n };\n ColorDivComponentGroupObject.prototype.inactive = function (viewer) {\n if (this.refercenJointIds) {\n for (var i = 0; i < this.refercenJointIds.count(); i++) {\n var id = this.refercenJointIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.jointNode, id);\n if (ro instanceof gs_ceec_design_2.DesignBaseObject) {\n ro.setNeedUpdate();\n }\n }\n }\n if (this.refercenMemberIds) {\n for (var i = 0; i < this.refercenMemberIds.count(); i++) {\n var id = this.refercenMemberIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.memberNode, id);\n if (ro && ro instanceof memberObject_1.MemberObject) {\n if (ro instanceof memberObject_1.MemberObject) {\n ro.faceColor = objectColors_1.ObjectColor.memberFaceColor;\n }\n ro.setNeedUpdate();\n }\n }\n }\n if (this.refercenPlateIds) {\n for (var i = 0; i < this.refercenPlateIds.count(); i++) {\n var id = this.refercenPlateIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.plateNode, id);\n if (ro && ro instanceof plateObject_1.PlateObject) {\n if (ro instanceof plateObject_1.PlateObject) {\n ro.faceColor = objectColors_1.ObjectColor.plateColor;\n }\n ro.setNeedUpdate();\n }\n }\n }\n };\n ColorDivComponentGroupObject.prototype.serializeToCard = function () {\n var card = new cardGeomSet_1.CardGEOMSET();\n card.lineLabel.value = \"GEOMSET\";\n card.setName.value = this.name;\n var text = card.getLine();\n text += \"\\n\";\n if (this.color) {\n var result = this.toSetColorCard();\n text += result + \"\\n\";\n }\n if (this.refercenJointIds.count() > 0) {\n var result = this.toJointSetCard();\n text += result;\n }\n if (this.refercenMemberIds.count() > 0) {\n var result = this.toMemberSetCard();\n text += result;\n }\n if (this.refercenPlateIds.count() > 0) {\n var result = this.toPlateSetCard();\n text += result;\n }\n text += \"ENDSET \" + this.name;\n text += \"\\n\";\n return text;\n };\n ColorDivComponentGroupObject.prototype.toSetColorCard = function () {\n var card = \"SETCOL 1 \";\n if (this.color === \"UnAssigned\" || !this.color) {\n this.color = [255, 0, 0];\n }\n card += this.color[0].toString().padEnd(3, \" \") + \" \";\n card += this.color[1].toString().padEnd(3, \" \") + \" \";\n card += this.color[2].toString().padEnd(3, \" \");\n return card;\n };\n ColorDivComponentGroupObject.prototype.toJointSetCard = function () {\n var result = \"\";\n for (var i = 0; i < this.refercenJointIds.count(); i += 14) {\n var card = \"JOISET 1 \";\n for (var j = i; j < i + 14; j++) {\n var childCard = \"\";\n if (j < this.refercenJointIds.count()) {\n childCard += this.refercenJointIds.items[j];\n card += childCard;\n if ((j + 1) % 14 === 0 || j === this.refercenJointIds.count() - 1) {\n card += \" \\n\";\n } else {\n card += \" \";\n }\n }\n }\n result += card;\n }\n return result;\n };\n ColorDivComponentGroupObject.prototype.toMemberSetCard = function () {\n var result = \"\";\n for (var i = 0; i < this.refercenMemberIds.count(); i += 7) {\n var card = \"MEMSET 1 \";\n for (var j = i; j < i + 7; j++) {\n var childCard = \"\";\n if (j < this.refercenMemberIds.count()) {\n childCard += this.refercenMemberIds.items[j];\n card += childCard;\n if ((j + 1) % 7 === 0 || j === this.refercenMemberIds.count() - 1) {\n card += \" \\n\";\n } else {\n card += \" \";\n }\n }\n }\n result += card;\n }\n return result;\n };\n ColorDivComponentGroupObject.prototype.toPlateSetCard = function () {\n var result = \"\";\n for (var i = 0; i < this.refercenPlateIds.count(); i += 14) {\n var card = \"PLASET 1 \";\n for (var j = i; j < i + 14; j++) {\n var childCard = \"\";\n if (j < this.refercenPlateIds.count()) {\n childCard += this.refercenPlateIds.items[j];\n card += childCard;\n if ((j + 1) % 14 === 0 || j === this.refercenPlateIds.count() - 1) {\n card += \" \\n\";\n } else {\n card += \" \";\n }\n }\n }\n result += card;\n }\n return result;\n };\n ColorDivComponentGroupObject.prototype.setChildVisible = function (viewer, on_off) {\n if (this.refercenJointIds) {\n for (var i = 0; i < this.refercenJointIds.count(); i++) {\n var id = this.refercenJointIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.jointNode, id);\n if (ro.checkBusinessStateIsActive()) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = on_off;\n }\n ro.drawSvg();\n }\n }\n }\n if (this.refercenMemberIds) {\n for (var i = 0; i < this.refercenMemberIds.count(); i++) {\n var id = this.refercenMemberIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.memberNode, id);\n if (ro.checkBusinessStateIsActive()) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = on_off;\n }\n ro.drawSvg();\n }\n }\n }\n if (this.refercenPlateIds) {\n for (var i = 0; i < this.refercenPlateIds.count(); i++) {\n var id = this.refercenPlateIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.plateNode, id);\n if (ro.checkBusinessStateIsActive()) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = on_off;\n }\n ro.drawSvg();\n }\n }\n }\n };\n return ColorDivComponentGroupObject;\n }(colorDivBaseObject_1.ColorDivBaseObject);\n exports.ColorDivComponentGroupObject = ColorDivComponentGroupObject;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2NvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3QudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2NvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3QudHM/NDI2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3ZXIgfSBmcm9tIFwiLi4vLi4vdmlld2VyXCI7XHJcbmltcG9ydCB7IEluc3RhbmNlRGVzaWduQmFzZU9iamVjdCB9IGZyb20gXCJncy1jZWVjLWRlc2lnblwiO1xyXG5pbXBvcnQgeyBMb25nYW4gfSBmcm9tIFwiZ3MtYmltLWFpclwiO1xyXG5pbXBvcnQgeyBDb2xvckRpdkJhc2VPYmplY3QgfSBmcm9tIFwiLi9jb2xvckRpdkJhc2VPYmplY3RcIjtcclxuaW1wb3J0IHsgRGVzaWduQmFzZU9iamVjdCB9IGZyb20gXCJncy1jZWVjLWRlc2lnblwiO1xyXG5pbXBvcnQgeyBQbGF0ZU9iamVjdCB9IGZyb20gXCIuLi9jYWVPYmplY3RzL3BsYXRlT2JqZWN0XCI7XHJcbmltcG9ydCB7IE1lbWJlck9iamVjdCB9IGZyb20gXCIuLi9jYWVPYmplY3RzL21lbWJlck9iamVjdFwiO1xyXG5pbXBvcnQgeyBPYmplY3RDb2xvciB9IGZyb20gXCIuLi9jYWVPYmplY3RzL29iamVjdENvbG9yc1wiO1xyXG5pbXBvcnQgeyBDYXJkR0VPTVNFVCB9IGZyb20gXCIuLi8uLi8uLi9jYWVDYXJkRWRpdG9yL2NhZUNhcmRPYmplY3RzL3NldC9jYXJkR2VvbVNldFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIENvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3QgZXh0ZW5kcyBDb2xvckRpdkJhc2VPYmplY3Qge1xyXG4gIHB1YmxpYyB0eXBlTmFtZSA9IFwiQ29sb3JEaXZDb21wb25lbnRHcm91cE9iamVjdFwiO1xyXG5cclxuICAvLyBwcml2YXRlIF9yZWZlcmNlUk9JZHM6IExvbmdhbi5MaXN0PHN0cmluZz4gPSBudWxsO1xyXG4gIC8vIHJlZmVyZW5jZeaLvOWGmeWFqOmUmeS6hu+8jOWwseS4jeaUueS6hi5cclxuICBwdWJsaWMgcmVmZXJjZW5Kb2ludElkczogTG9uZ2FuLkxpc3Q8c3RyaW5nPiA9IG51bGw7XHJcbiAgcHVibGljIHJlZmVyY2VuTWVtYmVySWRzOiBMb25nYW4uTGlzdDxzdHJpbmc+ID0gbnVsbDtcclxuICBwdWJsaWMgcmVmZXJjZW5QbGF0ZUlkczogTG9uZ2FuLkxpc3Q8c3RyaW5nPiA9IG51bGw7XHJcbiAgLy8gMC0yNTUuXHJcbiAgcHJpdmF0ZSBfY29sb3I6IG51bWJlcltdID0gbnVsbDtcclxuXHJcbiAgcHVibGljIGlzVmlzaWJsZSA9IHRydWU7XHJcblxyXG4gIGdldCBjb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb2xvcjtcclxuICB9XHJcblxyXG4gIHNldCBjb2xvcih2YWx1ZSkge1xyXG4gICAgdGhpcy5fY29sb3IgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgdGhpcy5yZWZlcmNlbkpvaW50SWRzID0gbmV3IExvbmdhbi5MaXN0PHN0cmluZz4oKTtcclxuICAgIHRoaXMucmVmZXJjZW5NZW1iZXJJZHMgPSBuZXcgTG9uZ2FuLkxpc3Q8c3RyaW5nPigpO1xyXG4gICAgdGhpcy5yZWZlcmNlblBsYXRlSWRzID0gbmV3IExvbmdhbi5MaXN0PHN0cmluZz4oKTtcclxuICAgIHRoaXMuaW5zdGFuY2VUeXBlcy5hZGQoXCJtYWluXCIsIEluc3RhbmNlRGVzaWduQmFzZU9iamVjdC5wcm90b3R5cGUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNoZWNrTmFtZWxlZ2FsKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlZyA9IC9eW0EtWjAtOV0qJC87XHJcbiAgICBpZiAoIXJlZy50ZXN0KG5hbWUpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwi5YiG57uE5ZCN56ew5LiN56ym5ZCI6KeE6IyDXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZSgpIHtcclxuICAgIGxldCBvYmogPSBzdXBlci5zZXJpYWxpemUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZWZlcmNlbkpvaW50SWRzKSB7XHJcbiAgICAgIGxldCBhcnJheSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlbkpvaW50SWRzLmNvdW50KCk7IGkrKykge1xyXG4gICAgICAgIGFycmF5LnB1c2godGhpcy5yZWZlcmNlbkpvaW50SWRzLml0ZW1zW2ldKTtcclxuICAgICAgfVxyXG4gICAgICBvYmoucmVmZXJjZW5Kb2ludElkcyA9IGFycmF5O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuTWVtYmVySWRzKSB7XHJcbiAgICAgIGxldCBhcnJheSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5jb3VudCgpOyBpKyspIHtcclxuICAgICAgICBhcnJheS5wdXNoKHRoaXMucmVmZXJjZW5NZW1iZXJJZHMuaXRlbXNbaV0pO1xyXG4gICAgICB9XHJcbiAgICAgIG9iai5yZWZlcmNlbk1lbWJlcklkcyA9IGFycmF5O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuUGxhdGVJZHMpIHtcclxuICAgICAgbGV0IGFycmF5ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKTsgaSsrKSB7XHJcbiAgICAgICAgYXJyYXkucHVzaCh0aGlzLnJlZmVyY2VuUGxhdGVJZHMuaXRlbXNbaV0pO1xyXG4gICAgICB9XHJcbiAgICAgIG9iai5yZWZlcmNlblBsYXRlSWRzID0gYXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29sb3IpIHtcclxuICAgICAgb2JqLmNvbG9yID0gdGhpcy5jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc1Zpc2libGUgIT09IG51bGwgJiYgdGhpcy5pc1Zpc2libGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvYmouaXNWaXNpYmxlID0gdGhpcy5pc1Zpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcblxyXG4gIGRlc2VyaWFsaXplKG9iajogYW55LCBwbT86IExvbmdhbi5QZXJzaXN0ZW5jZU1hbmFnZXIpOiB2b2lkIHtcclxuICAgIHN1cGVyLmRlc2VyaWFsaXplKG9iaiwgcG0pO1xyXG5cclxuICAgIGlmIChvYmoucmVmZXJjZW5Kb2ludElkcykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai5yZWZlcmNlbkpvaW50SWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5yZWZlcmNlbkpvaW50SWRzLmFkZChvYmoucmVmZXJjZW5Kb2ludElkc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JqLnJlZmVyY2VuTWVtYmVySWRzKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnJlZmVyY2VuTWVtYmVySWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5hZGQob2JqLnJlZmVyY2VuTWVtYmVySWRzW2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYmoucmVmZXJjZW5QbGF0ZUlkcykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai5yZWZlcmNlblBsYXRlSWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5yZWZlcmNlblBsYXRlSWRzLmFkZChvYmoucmVmZXJjZW5QbGF0ZUlkc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JqLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuY29sb3IgPSBvYmouY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9iai5pc1Zpc2libGUgIT09IG51bGwgJiYgb2JqLmlzVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gb2JqLmlzVmlzaWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2ZSh2aWV3ZXI6IFZpZXdlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5Kb2ludElkcyAmJiB0aGlzLmlzVmlzaWJsZSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmVmZXJjZW5Kb2ludElkcy5jb3VudCgpOyBpKyspIHtcclxuICAgICAgICAvL1xyXG4gICAgICAgIGxldCBpZCA9IHRoaXMucmVmZXJjZW5Kb2ludElkcy5pdGVtc1tpXTtcclxuICAgICAgICBsZXQgcm8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcclxuICAgICAgICAgIHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLmpvaW50Tm9kZSxcclxuICAgICAgICAgIGlkXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBsZXQgcm8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlJZChpZCkgYXMgRGVzaWduQmFzZU9iamVjdDtcclxuICAgICAgICBpZiAocm8gaW5zdGFuY2VvZiBEZXNpZ25CYXNlT2JqZWN0KSB7XHJcbiAgICAgICAgICByby5zZXROZWVkVXBkYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5NZW1iZXJJZHMgJiYgdGhpcy5pc1Zpc2libGUpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLmNvdW50KCk7IGkrKykge1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5pdGVtc1tpXTtcclxuICAgICAgICAvLyBsZXQgcm8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlJZChpZCkgYXMgRGVzaWduQmFzZU9iamVjdDtcclxuICAgICAgICBsZXQgcm8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcclxuICAgICAgICAgIHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLm1lbWJlck5vZGUsXHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChybyAmJiBybyBpbnN0YW5jZW9mIE1lbWJlck9iamVjdCkge1xyXG4gICAgICAgICAgaWYgKCh0aGlzLmNvbG9yIGFzIGFueSkgPT09IFwidW5Bc3NpZ25lZFwiIHx8ICF0aGlzLmNvbG9yKSB7XHJcbiAgICAgICAgICAgIGlmIChybyBpbnN0YW5jZW9mIE1lbWJlck9iamVjdCkge1xyXG4gICAgICAgICAgICAgIHJvLmZhY2VDb2xvciA9IE9iamVjdENvbG9yLm1lbWJlckZhY2VDb2xvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gdGhpcy5jb2xvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJvLnNldE5lZWRVcGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZWZlcmNlblBsYXRlSWRzICYmIHRoaXMuaXNWaXNpYmxlKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlblBsYXRlSWRzLmNvdW50KCk7IGkrKykge1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlblBsYXRlSWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIC8vIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeUlkKGlkKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAocm8gJiYgcm8gaW5zdGFuY2VvZiBQbGF0ZU9iamVjdCkge1xyXG4gICAgICAgICAgaWYgKCh0aGlzLmNvbG9yIGFzIGFueSkgPT09IFwidW5Bc3NpZ25lZFwiIHx8ICF0aGlzLmNvbG9yKSB7XHJcbiAgICAgICAgICAgIGlmIChybyBpbnN0YW5jZW9mIFBsYXRlT2JqZWN0KSB7XHJcbiAgICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IucGxhdGVDb2xvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gdGhpcy5jb2xvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJvLnNldE5lZWRVcGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluYWN0aXZlKHZpZXdlcjogVmlld2VyKSB7XHJcbiAgICAvL1xyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5Kb2ludElkcykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmVmZXJjZW5Kb2ludElkcy5jb3VudCgpOyBpKyspIHtcclxuICAgICAgICBsZXQgaWQgPSB0aGlzLnJlZmVyY2VuSm9pbnRJZHMuaXRlbXNbaV07XHJcbiAgICAgICAgLy8gbGV0IHJvID0gdmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5SWQoaWQpIGFzIERlc2lnbkJhc2VPYmplY3Q7XHJcbiAgICAgICAgbGV0IHJvID0gdmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXHJcbiAgICAgICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5qb2ludE5vZGUsXHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHJvIGluc3RhbmNlb2YgRGVzaWduQmFzZU9iamVjdCkge1xyXG4gICAgICAgICAgcm8uc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuTWVtYmVySWRzKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5jb3VudCgpOyBpKyspIHtcclxuICAgICAgICBsZXQgaWQgPSB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIC8vIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeUlkKGlkKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIubWVtYmVyTm9kZSxcclxuICAgICAgICAgIGlkXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHJvICYmIHJvIGluc3RhbmNlb2YgTWVtYmVyT2JqZWN0KSB7XHJcbiAgICAgICAgICBpZiAocm8gaW5zdGFuY2VvZiBNZW1iZXJPYmplY3QpIHtcclxuICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IubWVtYmVyRmFjZUNvbG9yO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcm8uc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuUGxhdGVJZHMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKTsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlblBsYXRlSWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIC8vIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeUlkKGlkKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAocm8gJiYgcm8gaW5zdGFuY2VvZiBQbGF0ZU9iamVjdCkge1xyXG4gICAgICAgICAgaWYgKHJvIGluc3RhbmNlb2YgUGxhdGVPYmplY3QpIHtcclxuICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IucGxhdGVDb2xvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJvLnNldE5lZWRVcGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZVRvQ2FyZCgpIHtcclxuICAgIC8vXHJcbiAgICBsZXQgY2FyZCA9IG5ldyBDYXJkR0VPTVNFVCgpO1xyXG4gICAgY2FyZC5saW5lTGFiZWwudmFsdWUgPSBcIkdFT01TRVRcIjtcclxuICAgIGNhcmQuc2V0TmFtZS52YWx1ZSA9IHRoaXMubmFtZTtcclxuXHJcbiAgICBsZXQgdGV4dCA9IGNhcmQuZ2V0TGluZSgpO1xyXG4gICAgdGV4dCArPSBcIlxcblwiO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbG9yKSB7XHJcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLnRvU2V0Q29sb3JDYXJkKCk7XHJcbiAgICAgIHRleHQgKz0gcmVzdWx0ICsgXCJcXG5cIjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuSm9pbnRJZHMuY291bnQoKSA+IDApIHtcclxuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudG9Kb2ludFNldENhcmQoKTtcclxuICAgICAgdGV4dCArPSByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yZWZlcmNlbk1lbWJlcklkcy5jb3VudCgpID4gMCkge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy50b01lbWJlclNldENhcmQoKTtcclxuICAgICAgdGV4dCArPSByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5QbGF0ZUlkcy5jb3VudCgpID4gMCkge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy50b1BsYXRlU2V0Q2FyZCgpO1xyXG4gICAgICB0ZXh0ICs9IHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICB0ZXh0ICs9IFwiRU5EU0VUIFwiICsgdGhpcy5uYW1lO1xyXG4gICAgdGV4dCArPSBcIlxcblwiO1xyXG5cclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b1NldENvbG9yQ2FyZCgpIHtcclxuICAgIGxldCBjYXJkID0gXCJTRVRDT0wgMSBcIjtcclxuICAgIGlmICgodGhpcy5jb2xvciBhcyBhbnkpID09PSBcIlVuQXNzaWduZWRcIiB8fCAhdGhpcy5jb2xvcikge1xyXG4gICAgICB0aGlzLmNvbG9yID0gWzI1NSwgMCwgMF07XHJcbiAgICB9XHJcbiAgICBjYXJkICs9IHRoaXMuY29sb3JbMF0udG9TdHJpbmcoKS5wYWRFbmQoMywgXCIgXCIpICsgXCIgXCI7XHJcbiAgICBjYXJkICs9IHRoaXMuY29sb3JbMV0udG9TdHJpbmcoKS5wYWRFbmQoMywgXCIgXCIpICsgXCIgXCI7XHJcbiAgICBjYXJkICs9IHRoaXMuY29sb3JbMl0udG9TdHJpbmcoKS5wYWRFbmQoMywgXCIgXCIpO1xyXG5cclxuICAgIHJldHVybiBjYXJkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0pvaW50U2V0Q2FyZCgpIHtcclxuICAgIGxldCByZXN1bHQgPSBcIlwiO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuSm9pbnRJZHMuY291bnQoKTsgaSArPSAxNCkge1xyXG4gICAgICBsZXQgY2FyZCA9IFwiSk9JU0VUIDEgXCI7XHJcbiAgICAgIGZvciAobGV0IGogPSBpOyBqIDwgaSArIDE0OyBqKyspIHtcclxuICAgICAgICBsZXQgY2hpbGRDYXJkID0gXCJcIjtcclxuICAgICAgICBpZiAoaiA8IHRoaXMucmVmZXJjZW5Kb2ludElkcy5jb3VudCgpKSB7XHJcbiAgICAgICAgICBjaGlsZENhcmQgKz0gdGhpcy5yZWZlcmNlbkpvaW50SWRzLml0ZW1zW2pdO1xyXG4gICAgICAgICAgY2FyZCArPSBjaGlsZENhcmQ7XHJcbiAgICAgICAgICBpZiAoKGogKyAxKSAlIDE0ID09PSAwIHx8IGogPT09IHRoaXMucmVmZXJjZW5Kb2ludElkcy5jb3VudCgpIC0gMSkge1xyXG4gICAgICAgICAgICBjYXJkICs9IFwiIFxcblwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2FyZCArPSBcIiBcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlc3VsdCArPSBjYXJkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9NZW1iZXJTZXRDYXJkKCkge1xyXG4gICAgbGV0IHJlc3VsdCA9IFwiXCI7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmVmZXJjZW5NZW1iZXJJZHMuY291bnQoKTsgaSArPSA3KSB7XHJcbiAgICAgIGxldCBjYXJkID0gXCJNRU1TRVQgMSBcIjtcclxuICAgICAgZm9yIChsZXQgaiA9IGk7IGogPCBpICsgNzsgaisrKSB7XHJcbiAgICAgICAgbGV0IGNoaWxkQ2FyZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGogPCB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLmNvdW50KCkpIHtcclxuICAgICAgICAgIGNoaWxkQ2FyZCArPSB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLml0ZW1zW2pdO1xyXG4gICAgICAgICAgY2FyZCArPSBjaGlsZENhcmQ7XHJcbiAgICAgICAgICBpZiAoKGogKyAxKSAlIDcgPT09IDAgfHwgaiA9PT0gdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5jb3VudCgpIC0gMSkge1xyXG4gICAgICAgICAgICBjYXJkICs9IFwiIFxcblwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2FyZCArPSBcIiBcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlc3VsdCArPSBjYXJkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9QbGF0ZVNldENhcmQoKSB7XHJcbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlblBsYXRlSWRzLmNvdW50KCk7IGkgKz0gMTQpIHtcclxuICAgICAgbGV0IGNhcmQgPSBcIlBMQVNFVCAxIFwiO1xyXG4gICAgICBmb3IgKGxldCBqID0gaTsgaiA8IGkgKyAxNDsgaisrKSB7XHJcbiAgICAgICAgbGV0IGNoaWxkQ2FyZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGogPCB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKSkge1xyXG4gICAgICAgICAgY2hpbGRDYXJkICs9IHRoaXMucmVmZXJjZW5QbGF0ZUlkcy5pdGVtc1tqXTtcclxuICAgICAgICAgIGNhcmQgKz0gY2hpbGRDYXJkO1xyXG4gICAgICAgICAgaWYgKChqICsgMSkgJSAxNCA9PT0gMCB8fCBqID09PSB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKSAtIDEpIHtcclxuICAgICAgICAgICAgY2FyZCArPSBcIiBcXG5cIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhcmQgKz0gXCIgXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXN1bHQgKz0gY2FyZDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q2hpbGRWaXNpYmxlKHZpZXdlcjogVmlld2VyLCBvbl9vZmY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLnJlZmVyY2VuSm9pbnRJZHMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuSm9pbnRJZHMuY291bnQoKTsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlbkpvaW50SWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIuam9pbnROb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICgocm8gYXMgRGVzaWduQmFzZU9iamVjdCkuY2hlY2tCdXNpbmVzc1N0YXRlSXNBY3RpdmUoKSkge1xyXG4gICAgICAgICAgbGV0IGlybyA9IHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qocm8pO1xyXG4gICAgICAgICAgaWYgKGlybykge1xyXG4gICAgICAgICAgICBpcm8udmlzaWJsZSA9IG9uX29mZjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIChybyBhcyBEZXNpZ25CYXNlT2JqZWN0KS5kcmF3U3ZnKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5NZW1iZXJJZHMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLmNvdW50KCk7IGkrKykge1xyXG4gICAgICAgIGxldCBpZCA9IHRoaXMucmVmZXJjZW5NZW1iZXJJZHMuaXRlbXNbaV07XHJcbiAgICAgICAgbGV0IHJvID0gdmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXHJcbiAgICAgICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5tZW1iZXJOb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoKHJvIGFzIERlc2lnbkJhc2VPYmplY3QpLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcclxuICAgICAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgICAgIGlmIChpcm8pIHtcclxuICAgICAgICAgICAgaXJvLnZpc2libGUgPSBvbl9vZmY7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAocm8gYXMgRGVzaWduQmFzZU9iamVjdCkuZHJhd1N2ZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuUGxhdGVJZHMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKTsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlblBsYXRlSWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoKHJvIGFzIERlc2lnbkJhc2VPYmplY3QpLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcclxuICAgICAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgICAgIGlmIChpcm8pIHtcclxuICAgICAgICAgICAgaXJvLnZpc2libGUgPSBvbl9vZmY7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAocm8gYXMgRGVzaWduQmFzZU9iamVjdCkuZHJhd1N2ZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFVQTtBQUFBO0FBcUJBO0FBQUE7QUFwQkE7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFmQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7OztBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFHQTtBQUNBOztBQUdBO0FBQ0E7O0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7OztBQUlBO0FBQ0E7QUFDQTs7O0FBSUE7QUFDQTtBQUNBOzs7QUFJQTtBQUNBOztBQUdBO0FBQ0E7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTs7OztBQUtBO0FBQ0E7QUFFQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7OztBQUtBO0FBQ0E7QUFFQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7OztBQUlBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBSUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQUE7QUFwWUE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./packages/caeDesign/src/gsDevFx/objects/pretreatmentObjects/colorDivComponentGroupObject.ts\n");
|
|
4947
|
+
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! gs-bim-air */ \"./node_modules/gs-bim-air/lib/BimAir.umd.min.js\"), __webpack_require__(/*! ./colorDivBaseObject */ \"./packages/caeDesign/src/gsDevFx/objects/pretreatmentObjects/colorDivBaseObject.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../caeObjects/plateObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/plateObject.ts\"), __webpack_require__(/*! ../caeObjects/memberObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/memberObject.ts\"), __webpack_require__(/*! ../caeObjects/objectColors */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/objectColors.ts\"), __webpack_require__(/*! ../../../caeCardEditor/caeCardObjects/set/cardGeomSet */ \"./packages/caeDesign/src/caeCardEditor/caeCardObjects/set/cardGeomSet.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, gs_ceec_design_1, gs_bim_air_1, colorDivBaseObject_1, gs_ceec_design_2, plateObject_1, memberObject_1, objectColors_1, cardGeomSet_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ColorDivComponentGroupObject = void 0;\n var ColorDivComponentGroupObject = function (_super) {\n tslib_1.__extends(ColorDivComponentGroupObject, _super);\n function ColorDivComponentGroupObject() {\n var _this = _super.call(this) || this;\n _this.typeName = \"ColorDivComponentGroupObject\";\n _this.refercenJointIds = null;\n _this.refercenMemberIds = null;\n _this.refercenPlateIds = null;\n _this._color = null;\n _this.isVisible = true;\n _this.refercenJointIds = new gs_bim_air_1.Longan.List();\n _this.refercenMemberIds = new gs_bim_air_1.Longan.List();\n _this.refercenPlateIds = new gs_bim_air_1.Longan.List();\n _this.instanceTypes.add(\"main\", gs_ceec_design_1.InstanceDesignBaseObject.prototype);\n return _this;\n }\n Object.defineProperty(ColorDivComponentGroupObject.prototype, \"color\", {\n get: function get() {\n return this._color;\n },\n set: function set(value) {\n this._color = value;\n },\n enumerable: false,\n configurable: true\n });\n ColorDivComponentGroupObject.checkNamelegal = function (name) {\n var reg = /^[A-Z0-9]*$/;\n if (!reg.test(name)) {\n console.log(\"分组名称不符合规范\");\n return false;\n }\n return true;\n };\n ColorDivComponentGroupObject.prototype.serialize = function () {\n var obj = _super.prototype.serialize.call(this);\n if (this.refercenJointIds) {\n var array = new Array();\n for (var i = 0; i < this.refercenJointIds.count(); i++) {\n array.push(this.refercenJointIds.items[i]);\n }\n obj.refercenJointIds = array;\n }\n if (this.refercenMemberIds) {\n var array = new Array();\n for (var i = 0; i < this.refercenMemberIds.count(); i++) {\n array.push(this.refercenMemberIds.items[i]);\n }\n obj.refercenMemberIds = array;\n }\n if (this.refercenPlateIds) {\n var array = new Array();\n for (var i = 0; i < this.refercenPlateIds.count(); i++) {\n array.push(this.refercenPlateIds.items[i]);\n }\n obj.refercenPlateIds = array;\n }\n if (this.color) {\n obj.color = this.color;\n }\n if (this.isVisible !== null && this.isVisible !== undefined) {\n obj.isVisible = this.isVisible;\n }\n return obj;\n };\n ColorDivComponentGroupObject.prototype.deserialize = function (obj, pm) {\n _super.prototype.deserialize.call(this, obj, pm);\n if (obj.refercenJointIds) {\n for (var i = 0; i < obj.refercenJointIds.length; i++) {\n this.refercenJointIds.add(obj.refercenJointIds[i]);\n }\n }\n if (obj.refercenMemberIds) {\n for (var i = 0; i < obj.refercenMemberIds.length; i++) {\n this.refercenMemberIds.add(obj.refercenMemberIds[i]);\n }\n }\n if (obj.refercenPlateIds) {\n for (var i = 0; i < obj.refercenPlateIds.length; i++) {\n this.refercenPlateIds.add(obj.refercenPlateIds[i]);\n }\n }\n if (obj.color) {\n this.color = obj.color;\n }\n if (obj.isVisible !== null && obj.isVisible !== undefined) {\n this.isVisible = obj.isVisible;\n }\n };\n ColorDivComponentGroupObject.prototype.active = function (viewer) {\n if (this.refercenJointIds && this.isVisible) {\n for (var i = 0; i < this.refercenJointIds.count(); i++) {\n var id = this.refercenJointIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.jointNode, id);\n if (ro instanceof gs_ceec_design_2.DesignBaseObject) {\n ro.setNeedUpdate();\n }\n }\n }\n if (this.refercenMemberIds && this.isVisible) {\n for (var i = 0; i < this.refercenMemberIds.count(); i++) {\n var id = this.refercenMemberIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.memberNode, id);\n if (ro && ro instanceof memberObject_1.MemberObject) {\n if (this.color === \"unAssigned\" || !this.color) {\n if (ro instanceof memberObject_1.MemberObject) {\n ro.faceColor = objectColors_1.ObjectColor.memberFaceColor;\n }\n } else {\n ro.faceColor = this.color;\n }\n ro.setNeedUpdate();\n }\n }\n }\n if (this.refercenPlateIds && this.isVisible) {\n for (var i = 0; i < this.refercenPlateIds.count(); i++) {\n var id = this.refercenPlateIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.plateNode, id);\n if (ro && ro instanceof plateObject_1.PlateObject) {\n if (this.color === \"unAssigned\" || !this.color) {\n if (ro instanceof plateObject_1.PlateObject) {\n ro.faceColor = objectColors_1.ObjectColor.plateColor;\n }\n } else {\n ro.faceColor = this.color;\n }\n ro.setNeedUpdate();\n }\n }\n }\n };\n ColorDivComponentGroupObject.prototype.inactive = function (viewer) {\n if (this.refercenJointIds) {\n for (var i = 0; i < this.refercenJointIds.count(); i++) {\n var id = this.refercenJointIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.jointNode, id);\n if (ro instanceof gs_ceec_design_2.DesignBaseObject) {\n ro.setNeedUpdate();\n }\n }\n }\n if (this.refercenMemberIds) {\n for (var i = 0; i < this.refercenMemberIds.count(); i++) {\n var id = this.refercenMemberIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.memberNode, id);\n if (ro && ro instanceof memberObject_1.MemberObject) {\n if (ro instanceof memberObject_1.MemberObject) {\n ro.faceColor = objectColors_1.ObjectColor.memberFaceColor;\n }\n ro.setNeedUpdate();\n }\n }\n }\n if (this.refercenPlateIds) {\n for (var i = 0; i < this.refercenPlateIds.count(); i++) {\n var id = this.refercenPlateIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.plateNode, id);\n if (ro && ro instanceof plateObject_1.PlateObject) {\n if (ro instanceof plateObject_1.PlateObject) {\n ro.faceColor = objectColors_1.ObjectColor.plateColor;\n }\n ro.setNeedUpdate();\n }\n }\n }\n };\n ColorDivComponentGroupObject.prototype.serializeToCard = function () {\n var card = new cardGeomSet_1.CardGEOMSET();\n card.lineLabel.value = \"GEOMSET\";\n card.setName.value = this.name;\n var text = card.getLine();\n text += \"\\n\";\n if (this.color) {\n var result = this.toSetColorCard();\n text += result + \"\\n\";\n }\n if (this.refercenJointIds.count() > 0) {\n var result = this.toJointSetCard();\n text += result;\n }\n if (this.refercenMemberIds.count() > 0) {\n var result = this.toMemberSetCard();\n text += result;\n }\n if (this.refercenPlateIds.count() > 0) {\n var result = this.toPlateSetCard();\n text += result;\n }\n text += \"ENDSET \" + this.name;\n text += \"\\n\";\n return text;\n };\n ColorDivComponentGroupObject.prototype.toSetColorCard = function () {\n var card = \"SETCOL 1 \";\n if (this.color === \"UnAssigned\" || !this.color) {\n this.color = [255, 0, 0, 1];\n }\n card += this.color[0].toString().padEnd(3, \" \") + \" \";\n card += this.color[1].toString().padEnd(3, \" \") + \" \";\n card += this.color[2].toString().padEnd(3, \" \");\n return card;\n };\n ColorDivComponentGroupObject.prototype.toJointSetCard = function () {\n var result = \"\";\n for (var i = 0; i < this.refercenJointIds.count(); i += 14) {\n var card = \"JOISET 1 \";\n for (var j = i; j < i + 14; j++) {\n var childCard = \"\";\n if (j < this.refercenJointIds.count()) {\n childCard += this.refercenJointIds.items[j];\n card += childCard;\n if ((j + 1) % 14 === 0 || j === this.refercenJointIds.count() - 1) {\n card += \" \\n\";\n } else {\n card += \" \";\n }\n }\n }\n result += card;\n }\n return result;\n };\n ColorDivComponentGroupObject.prototype.toMemberSetCard = function () {\n var result = \"\";\n for (var i = 0; i < this.refercenMemberIds.count(); i += 7) {\n var card = \"MEMSET 1 \";\n for (var j = i; j < i + 7; j++) {\n var childCard = \"\";\n if (j < this.refercenMemberIds.count()) {\n childCard += this.refercenMemberIds.items[j];\n card += childCard;\n if ((j + 1) % 7 === 0 || j === this.refercenMemberIds.count() - 1) {\n card += \" \\n\";\n } else {\n card += \" \";\n }\n }\n }\n result += card;\n }\n return result;\n };\n ColorDivComponentGroupObject.prototype.toPlateSetCard = function () {\n var result = \"\";\n for (var i = 0; i < this.refercenPlateIds.count(); i += 14) {\n var card = \"PLASET 1 \";\n for (var j = i; j < i + 14; j++) {\n var childCard = \"\";\n if (j < this.refercenPlateIds.count()) {\n childCard += this.refercenPlateIds.items[j];\n card += childCard;\n if ((j + 1) % 14 === 0 || j === this.refercenPlateIds.count() - 1) {\n card += \" \\n\";\n } else {\n card += \" \";\n }\n }\n }\n result += card;\n }\n return result;\n };\n ColorDivComponentGroupObject.prototype.setChildVisible = function (viewer, on_off) {\n if (this.refercenJointIds) {\n for (var i = 0; i < this.refercenJointIds.count(); i++) {\n var id = this.refercenJointIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.jointNode, id);\n if (ro.checkBusinessStateIsActive()) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = on_off;\n }\n ro.drawSvg();\n }\n }\n }\n if (this.refercenMemberIds) {\n for (var i = 0; i < this.refercenMemberIds.count(); i++) {\n var id = this.refercenMemberIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.memberNode, id);\n if (ro.checkBusinessStateIsActive()) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = on_off;\n }\n ro.drawSvg();\n }\n }\n }\n if (this.refercenPlateIds) {\n for (var i = 0; i < this.refercenPlateIds.count(); i++) {\n var id = this.refercenPlateIds.items[i];\n var ro = viewer.process.findRenderObjectByNameInChildObject(viewer.process.caeRenderObjectTreeManager.plateNode, id);\n if (ro.checkBusinessStateIsActive()) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = on_off;\n }\n ro.drawSvg();\n }\n }\n }\n };\n return ColorDivComponentGroupObject;\n }(colorDivBaseObject_1.ColorDivBaseObject);\n exports.ColorDivComponentGroupObject = ColorDivComponentGroupObject;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2NvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3QudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL2dzRGV2Rngvb2JqZWN0cy9wcmV0cmVhdG1lbnRPYmplY3RzL2NvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3QudHM/NDI2MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3ZXIgfSBmcm9tIFwiLi4vLi4vdmlld2VyXCI7XHJcbmltcG9ydCB7IEluc3RhbmNlRGVzaWduQmFzZU9iamVjdCB9IGZyb20gXCJncy1jZWVjLWRlc2lnblwiO1xyXG5pbXBvcnQgeyBMb25nYW4gfSBmcm9tIFwiZ3MtYmltLWFpclwiO1xyXG5pbXBvcnQgeyBDb2xvckRpdkJhc2VPYmplY3QgfSBmcm9tIFwiLi9jb2xvckRpdkJhc2VPYmplY3RcIjtcclxuaW1wb3J0IHsgRGVzaWduQmFzZU9iamVjdCB9IGZyb20gXCJncy1jZWVjLWRlc2lnblwiO1xyXG5pbXBvcnQgeyBQbGF0ZU9iamVjdCB9IGZyb20gXCIuLi9jYWVPYmplY3RzL3BsYXRlT2JqZWN0XCI7XHJcbmltcG9ydCB7IE1lbWJlck9iamVjdCB9IGZyb20gXCIuLi9jYWVPYmplY3RzL21lbWJlck9iamVjdFwiO1xyXG5pbXBvcnQgeyBPYmplY3RDb2xvciB9IGZyb20gXCIuLi9jYWVPYmplY3RzL29iamVjdENvbG9yc1wiO1xyXG5pbXBvcnQgeyBDYXJkR0VPTVNFVCB9IGZyb20gXCIuLi8uLi8uLi9jYWVDYXJkRWRpdG9yL2NhZUNhcmRPYmplY3RzL3NldC9jYXJkR2VvbVNldFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIENvbG9yRGl2Q29tcG9uZW50R3JvdXBPYmplY3QgZXh0ZW5kcyBDb2xvckRpdkJhc2VPYmplY3Qge1xyXG4gIHB1YmxpYyB0eXBlTmFtZSA9IFwiQ29sb3JEaXZDb21wb25lbnRHcm91cE9iamVjdFwiO1xyXG5cclxuICAvLyBwcml2YXRlIF9yZWZlcmNlUk9JZHM6IExvbmdhbi5MaXN0PHN0cmluZz4gPSBudWxsO1xyXG4gIC8vIHJlZmVyZW5jZeaLvOWGmeWFqOmUmeS6hu+8jOWwseS4jeaUueS6hi5cclxuICBwdWJsaWMgcmVmZXJjZW5Kb2ludElkczogTG9uZ2FuLkxpc3Q8c3RyaW5nPiA9IG51bGw7XHJcbiAgcHVibGljIHJlZmVyY2VuTWVtYmVySWRzOiBMb25nYW4uTGlzdDxzdHJpbmc+ID0gbnVsbDtcclxuICBwdWJsaWMgcmVmZXJjZW5QbGF0ZUlkczogTG9uZ2FuLkxpc3Q8c3RyaW5nPiA9IG51bGw7XHJcbiAgLy8gMC0yNTUuXHJcbiAgcHJpdmF0ZSBfY29sb3I6IG51bWJlcltdID0gbnVsbDtcclxuXHJcbiAgcHVibGljIGlzVmlzaWJsZSA9IHRydWU7XHJcblxyXG4gIGdldCBjb2xvcigpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb2xvcjtcclxuICB9XHJcblxyXG4gIHNldCBjb2xvcih2YWx1ZSkge1xyXG4gICAgdGhpcy5fY29sb3IgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgdGhpcy5yZWZlcmNlbkpvaW50SWRzID0gbmV3IExvbmdhbi5MaXN0PHN0cmluZz4oKTtcclxuICAgIHRoaXMucmVmZXJjZW5NZW1iZXJJZHMgPSBuZXcgTG9uZ2FuLkxpc3Q8c3RyaW5nPigpO1xyXG4gICAgdGhpcy5yZWZlcmNlblBsYXRlSWRzID0gbmV3IExvbmdhbi5MaXN0PHN0cmluZz4oKTtcclxuICAgIHRoaXMuaW5zdGFuY2VUeXBlcy5hZGQoXCJtYWluXCIsIEluc3RhbmNlRGVzaWduQmFzZU9iamVjdC5wcm90b3R5cGUpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNoZWNrTmFtZWxlZ2FsKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlZyA9IC9eW0EtWjAtOV0qJC87XHJcbiAgICBpZiAoIXJlZy50ZXN0KG5hbWUpKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwi5YiG57uE5ZCN56ew5LiN56ym5ZCI6KeE6IyDXCIpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZSgpIHtcclxuICAgIGxldCBvYmogPSBzdXBlci5zZXJpYWxpemUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZWZlcmNlbkpvaW50SWRzKSB7XHJcbiAgICAgIGxldCBhcnJheSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlbkpvaW50SWRzLmNvdW50KCk7IGkrKykge1xyXG4gICAgICAgIGFycmF5LnB1c2godGhpcy5yZWZlcmNlbkpvaW50SWRzLml0ZW1zW2ldKTtcclxuICAgICAgfVxyXG4gICAgICBvYmoucmVmZXJjZW5Kb2ludElkcyA9IGFycmF5O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuTWVtYmVySWRzKSB7XHJcbiAgICAgIGxldCBhcnJheSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5jb3VudCgpOyBpKyspIHtcclxuICAgICAgICBhcnJheS5wdXNoKHRoaXMucmVmZXJjZW5NZW1iZXJJZHMuaXRlbXNbaV0pO1xyXG4gICAgICB9XHJcbiAgICAgIG9iai5yZWZlcmNlbk1lbWJlcklkcyA9IGFycmF5O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuUGxhdGVJZHMpIHtcclxuICAgICAgbGV0IGFycmF5ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKTsgaSsrKSB7XHJcbiAgICAgICAgYXJyYXkucHVzaCh0aGlzLnJlZmVyY2VuUGxhdGVJZHMuaXRlbXNbaV0pO1xyXG4gICAgICB9XHJcbiAgICAgIG9iai5yZWZlcmNlblBsYXRlSWRzID0gYXJyYXk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29sb3IpIHtcclxuICAgICAgb2JqLmNvbG9yID0gdGhpcy5jb2xvcjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc1Zpc2libGUgIT09IG51bGwgJiYgdGhpcy5pc1Zpc2libGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvYmouaXNWaXNpYmxlID0gdGhpcy5pc1Zpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcblxyXG4gIGRlc2VyaWFsaXplKG9iajogYW55LCBwbT86IExvbmdhbi5QZXJzaXN0ZW5jZU1hbmFnZXIpOiB2b2lkIHtcclxuICAgIHN1cGVyLmRlc2VyaWFsaXplKG9iaiwgcG0pO1xyXG5cclxuICAgIGlmIChvYmoucmVmZXJjZW5Kb2ludElkcykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai5yZWZlcmNlbkpvaW50SWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5yZWZlcmNlbkpvaW50SWRzLmFkZChvYmoucmVmZXJjZW5Kb2ludElkc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JqLnJlZmVyY2VuTWVtYmVySWRzKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqLnJlZmVyY2VuTWVtYmVySWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5hZGQob2JqLnJlZmVyY2VuTWVtYmVySWRzW2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYmoucmVmZXJjZW5QbGF0ZUlkcykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9iai5yZWZlcmNlblBsYXRlSWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5yZWZlcmNlblBsYXRlSWRzLmFkZChvYmoucmVmZXJjZW5QbGF0ZUlkc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JqLmNvbG9yKSB7XHJcbiAgICAgIHRoaXMuY29sb3IgPSBvYmouY29sb3I7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9iai5pc1Zpc2libGUgIT09IG51bGwgJiYgb2JqLmlzVmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gb2JqLmlzVmlzaWJsZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFjdGl2ZSh2aWV3ZXI6IFZpZXdlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5Kb2ludElkcyAmJiB0aGlzLmlzVmlzaWJsZSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmVmZXJjZW5Kb2ludElkcy5jb3VudCgpOyBpKyspIHtcclxuICAgICAgICAvL1xyXG4gICAgICAgIGxldCBpZCA9IHRoaXMucmVmZXJjZW5Kb2ludElkcy5pdGVtc1tpXTtcclxuICAgICAgICBsZXQgcm8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcclxuICAgICAgICAgIHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLmpvaW50Tm9kZSxcclxuICAgICAgICAgIGlkXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBsZXQgcm8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlJZChpZCkgYXMgRGVzaWduQmFzZU9iamVjdDtcclxuICAgICAgICBpZiAocm8gaW5zdGFuY2VvZiBEZXNpZ25CYXNlT2JqZWN0KSB7XHJcbiAgICAgICAgICByby5zZXROZWVkVXBkYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5NZW1iZXJJZHMgJiYgdGhpcy5pc1Zpc2libGUpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLmNvdW50KCk7IGkrKykge1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5pdGVtc1tpXTtcclxuICAgICAgICAvLyBsZXQgcm8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlJZChpZCkgYXMgRGVzaWduQmFzZU9iamVjdDtcclxuICAgICAgICBsZXQgcm8gPSB2aWV3ZXIucHJvY2Vzcy5maW5kUmVuZGVyT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcclxuICAgICAgICAgIHZpZXdlci5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLm1lbWJlck5vZGUsXHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChybyAmJiBybyBpbnN0YW5jZW9mIE1lbWJlck9iamVjdCkge1xyXG4gICAgICAgICAgaWYgKCh0aGlzLmNvbG9yIGFzIGFueSkgPT09IFwidW5Bc3NpZ25lZFwiIHx8ICF0aGlzLmNvbG9yKSB7XHJcbiAgICAgICAgICAgIGlmIChybyBpbnN0YW5jZW9mIE1lbWJlck9iamVjdCkge1xyXG4gICAgICAgICAgICAgIHJvLmZhY2VDb2xvciA9IE9iamVjdENvbG9yLm1lbWJlckZhY2VDb2xvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gdGhpcy5jb2xvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJvLnNldE5lZWRVcGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5yZWZlcmNlblBsYXRlSWRzICYmIHRoaXMuaXNWaXNpYmxlKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlblBsYXRlSWRzLmNvdW50KCk7IGkrKykge1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlblBsYXRlSWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIC8vIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeUlkKGlkKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAocm8gJiYgcm8gaW5zdGFuY2VvZiBQbGF0ZU9iamVjdCkge1xyXG4gICAgICAgICAgaWYgKCh0aGlzLmNvbG9yIGFzIGFueSkgPT09IFwidW5Bc3NpZ25lZFwiIHx8ICF0aGlzLmNvbG9yKSB7XHJcbiAgICAgICAgICAgIGlmIChybyBpbnN0YW5jZW9mIFBsYXRlT2JqZWN0KSB7XHJcbiAgICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IucGxhdGVDb2xvcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gdGhpcy5jb2xvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJvLnNldE5lZWRVcGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluYWN0aXZlKHZpZXdlcjogVmlld2VyKSB7XHJcbiAgICAvL1xyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5Kb2ludElkcykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmVmZXJjZW5Kb2ludElkcy5jb3VudCgpOyBpKyspIHtcclxuICAgICAgICBsZXQgaWQgPSB0aGlzLnJlZmVyY2VuSm9pbnRJZHMuaXRlbXNbaV07XHJcbiAgICAgICAgLy8gbGV0IHJvID0gdmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5SWQoaWQpIGFzIERlc2lnbkJhc2VPYmplY3Q7XHJcbiAgICAgICAgbGV0IHJvID0gdmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXHJcbiAgICAgICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5qb2ludE5vZGUsXHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHJvIGluc3RhbmNlb2YgRGVzaWduQmFzZU9iamVjdCkge1xyXG4gICAgICAgICAgcm8uc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuTWVtYmVySWRzKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5jb3VudCgpOyBpKyspIHtcclxuICAgICAgICBsZXQgaWQgPSB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIC8vIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeUlkKGlkKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIubWVtYmVyTm9kZSxcclxuICAgICAgICAgIGlkXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHJvICYmIHJvIGluc3RhbmNlb2YgTWVtYmVyT2JqZWN0KSB7XHJcbiAgICAgICAgICBpZiAocm8gaW5zdGFuY2VvZiBNZW1iZXJPYmplY3QpIHtcclxuICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IubWVtYmVyRmFjZUNvbG9yO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcm8uc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuUGxhdGVJZHMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKTsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlblBsYXRlSWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIC8vIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeUlkKGlkKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAocm8gJiYgcm8gaW5zdGFuY2VvZiBQbGF0ZU9iamVjdCkge1xyXG4gICAgICAgICAgaWYgKHJvIGluc3RhbmNlb2YgUGxhdGVPYmplY3QpIHtcclxuICAgICAgICAgICAgcm8uZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IucGxhdGVDb2xvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJvLnNldE5lZWRVcGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZVRvQ2FyZCgpIHtcclxuICAgIC8vXHJcbiAgICBsZXQgY2FyZCA9IG5ldyBDYXJkR0VPTVNFVCgpO1xyXG4gICAgY2FyZC5saW5lTGFiZWwudmFsdWUgPSBcIkdFT01TRVRcIjtcclxuICAgIGNhcmQuc2V0TmFtZS52YWx1ZSA9IHRoaXMubmFtZTtcclxuXHJcbiAgICBsZXQgdGV4dCA9IGNhcmQuZ2V0TGluZSgpO1xyXG4gICAgdGV4dCArPSBcIlxcblwiO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbG9yKSB7XHJcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLnRvU2V0Q29sb3JDYXJkKCk7XHJcbiAgICAgIHRleHQgKz0gcmVzdWx0ICsgXCJcXG5cIjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuSm9pbnRJZHMuY291bnQoKSA+IDApIHtcclxuICAgICAgbGV0IHJlc3VsdCA9IHRoaXMudG9Kb2ludFNldENhcmQoKTtcclxuICAgICAgdGV4dCArPSByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5yZWZlcmNlbk1lbWJlcklkcy5jb3VudCgpID4gMCkge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy50b01lbWJlclNldENhcmQoKTtcclxuICAgICAgdGV4dCArPSByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5QbGF0ZUlkcy5jb3VudCgpID4gMCkge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy50b1BsYXRlU2V0Q2FyZCgpO1xyXG4gICAgICB0ZXh0ICs9IHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICB0ZXh0ICs9IFwiRU5EU0VUIFwiICsgdGhpcy5uYW1lO1xyXG4gICAgdGV4dCArPSBcIlxcblwiO1xyXG5cclxuICAgIHJldHVybiB0ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b1NldENvbG9yQ2FyZCgpIHtcclxuICAgIGxldCBjYXJkID0gXCJTRVRDT0wgMSBcIjtcclxuICAgIGlmICgodGhpcy5jb2xvciBhcyBhbnkpID09PSBcIlVuQXNzaWduZWRcIiB8fCAhdGhpcy5jb2xvcikge1xyXG4gICAgICB0aGlzLmNvbG9yID0gWzI1NSwgMCwgMCwgMV07XHJcbiAgICB9XHJcbiAgICBjYXJkICs9IHRoaXMuY29sb3JbMF0udG9TdHJpbmcoKS5wYWRFbmQoMywgXCIgXCIpICsgXCIgXCI7XHJcbiAgICBjYXJkICs9IHRoaXMuY29sb3JbMV0udG9TdHJpbmcoKS5wYWRFbmQoMywgXCIgXCIpICsgXCIgXCI7XHJcbiAgICBjYXJkICs9IHRoaXMuY29sb3JbMl0udG9TdHJpbmcoKS5wYWRFbmQoMywgXCIgXCIpO1xyXG5cclxuICAgIHJldHVybiBjYXJkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0pvaW50U2V0Q2FyZCgpIHtcclxuICAgIGxldCByZXN1bHQgPSBcIlwiO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuSm9pbnRJZHMuY291bnQoKTsgaSArPSAxNCkge1xyXG4gICAgICBsZXQgY2FyZCA9IFwiSk9JU0VUIDEgXCI7XHJcbiAgICAgIGZvciAobGV0IGogPSBpOyBqIDwgaSArIDE0OyBqKyspIHtcclxuICAgICAgICBsZXQgY2hpbGRDYXJkID0gXCJcIjtcclxuICAgICAgICBpZiAoaiA8IHRoaXMucmVmZXJjZW5Kb2ludElkcy5jb3VudCgpKSB7XHJcbiAgICAgICAgICBjaGlsZENhcmQgKz0gdGhpcy5yZWZlcmNlbkpvaW50SWRzLml0ZW1zW2pdO1xyXG4gICAgICAgICAgY2FyZCArPSBjaGlsZENhcmQ7XHJcbiAgICAgICAgICBpZiAoKGogKyAxKSAlIDE0ID09PSAwIHx8IGogPT09IHRoaXMucmVmZXJjZW5Kb2ludElkcy5jb3VudCgpIC0gMSkge1xyXG4gICAgICAgICAgICBjYXJkICs9IFwiIFxcblwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2FyZCArPSBcIiBcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlc3VsdCArPSBjYXJkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9NZW1iZXJTZXRDYXJkKCkge1xyXG4gICAgbGV0IHJlc3VsdCA9IFwiXCI7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmVmZXJjZW5NZW1iZXJJZHMuY291bnQoKTsgaSArPSA3KSB7XHJcbiAgICAgIGxldCBjYXJkID0gXCJNRU1TRVQgMSBcIjtcclxuICAgICAgZm9yIChsZXQgaiA9IGk7IGogPCBpICsgNzsgaisrKSB7XHJcbiAgICAgICAgbGV0IGNoaWxkQ2FyZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGogPCB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLmNvdW50KCkpIHtcclxuICAgICAgICAgIGNoaWxkQ2FyZCArPSB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLml0ZW1zW2pdO1xyXG4gICAgICAgICAgY2FyZCArPSBjaGlsZENhcmQ7XHJcbiAgICAgICAgICBpZiAoKGogKyAxKSAlIDcgPT09IDAgfHwgaiA9PT0gdGhpcy5yZWZlcmNlbk1lbWJlcklkcy5jb3VudCgpIC0gMSkge1xyXG4gICAgICAgICAgICBjYXJkICs9IFwiIFxcblwiO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2FyZCArPSBcIiBcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlc3VsdCArPSBjYXJkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9QbGF0ZVNldENhcmQoKSB7XHJcbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWZlcmNlblBsYXRlSWRzLmNvdW50KCk7IGkgKz0gMTQpIHtcclxuICAgICAgbGV0IGNhcmQgPSBcIlBMQVNFVCAxIFwiO1xyXG4gICAgICBmb3IgKGxldCBqID0gaTsgaiA8IGkgKyAxNDsgaisrKSB7XHJcbiAgICAgICAgbGV0IGNoaWxkQ2FyZCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGogPCB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKSkge1xyXG4gICAgICAgICAgY2hpbGRDYXJkICs9IHRoaXMucmVmZXJjZW5QbGF0ZUlkcy5pdGVtc1tqXTtcclxuICAgICAgICAgIGNhcmQgKz0gY2hpbGRDYXJkO1xyXG4gICAgICAgICAgaWYgKChqICsgMSkgJSAxNCA9PT0gMCB8fCBqID09PSB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKSAtIDEpIHtcclxuICAgICAgICAgICAgY2FyZCArPSBcIiBcXG5cIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhcmQgKz0gXCIgXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXN1bHQgKz0gY2FyZDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q2hpbGRWaXNpYmxlKHZpZXdlcjogVmlld2VyLCBvbl9vZmY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLnJlZmVyY2VuSm9pbnRJZHMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuSm9pbnRJZHMuY291bnQoKTsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlbkpvaW50SWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIuam9pbnROb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICgocm8gYXMgRGVzaWduQmFzZU9iamVjdCkuY2hlY2tCdXNpbmVzc1N0YXRlSXNBY3RpdmUoKSkge1xyXG4gICAgICAgICAgbGV0IGlybyA9IHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qocm8pO1xyXG4gICAgICAgICAgaWYgKGlybykge1xyXG4gICAgICAgICAgICBpcm8udmlzaWJsZSA9IG9uX29mZjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIChybyBhcyBEZXNpZ25CYXNlT2JqZWN0KS5kcmF3U3ZnKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucmVmZXJjZW5NZW1iZXJJZHMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuTWVtYmVySWRzLmNvdW50KCk7IGkrKykge1xyXG4gICAgICAgIGxldCBpZCA9IHRoaXMucmVmZXJjZW5NZW1iZXJJZHMuaXRlbXNbaV07XHJcbiAgICAgICAgbGV0IHJvID0gdmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXHJcbiAgICAgICAgICB2aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5tZW1iZXJOb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoKHJvIGFzIERlc2lnbkJhc2VPYmplY3QpLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcclxuICAgICAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgICAgIGlmIChpcm8pIHtcclxuICAgICAgICAgICAgaXJvLnZpc2libGUgPSBvbl9vZmY7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAocm8gYXMgRGVzaWduQmFzZU9iamVjdCkuZHJhd1N2ZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJlZmVyY2VuUGxhdGVJZHMpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZmVyY2VuUGxhdGVJZHMuY291bnQoKTsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGlkID0gdGhpcy5yZWZlcmNlblBsYXRlSWRzLml0ZW1zW2ldO1xyXG4gICAgICAgIGxldCBybyA9IHZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICAgICAgdmlld2VyLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlLFxyXG4gICAgICAgICAgaWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoKHJvIGFzIERlc2lnbkJhc2VPYmplY3QpLmNoZWNrQnVzaW5lc3NTdGF0ZUlzQWN0aXZlKCkpIHtcclxuICAgICAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgICAgIGlmIChpcm8pIHtcclxuICAgICAgICAgICAgaXJvLnZpc2libGUgPSBvbl9vZmY7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAocm8gYXMgRGVzaWduQmFzZU9iamVjdCkuZHJhd1N2ZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFVQTtBQUFBO0FBcUJBO0FBQUE7QUFwQkE7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFmQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7OztBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFHQTtBQUNBOztBQUdBO0FBQ0E7O0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7OztBQUlBO0FBQ0E7QUFDQTs7O0FBSUE7QUFDQTtBQUNBOzs7QUFJQTtBQUNBOztBQUdBO0FBQ0E7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTs7OztBQUtBO0FBQ0E7QUFFQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7OztBQUtBO0FBQ0E7QUFFQTtBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7OztBQUlBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUtBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBS0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBSUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFLQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQUE7QUFwWUE7O0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./packages/caeDesign/src/gsDevFx/objects/pretreatmentObjects/colorDivComponentGroupObject.ts\n");
|
|
4948
4948
|
|
|
4949
4949
|
/***/ }),
|
|
4950
4950
|
|
|
@@ -5850,7 +5850,7 @@ eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPAC
|
|
|
5850
5850
|
/*! no static exports found */
|
|
5851
5851
|
/***/ (function(module, exports, __webpack_require__) {
|
|
5852
5852
|
|
|
5853
|
-
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! ../../../../gsDevFx/operators/cameraMouse */ \"./packages/caeDesign/src/gsDevFx/operators/cameraMouse.ts\"), __webpack_require__(/*! ../../../../gsDevFx/operators/cAEObjectPreSelector */ \"./packages/caeDesign/src/gsDevFx/operators/cAEObjectPreSelector.ts\"), __webpack_require__(/*! ../../../../gsDevFx/operators/caeObjectSelector */ \"./packages/caeDesign/src/gsDevFx/operators/caeObjectSelector.ts\"), __webpack_require__(/*! ../../../../gsDevFx/commands/commandSelect */ \"./packages/caeDesign/src/gsDevFx/commands/commandSelect.ts\"), __webpack_require__(/*! ../../commandComponent */ \"./packages/caeDesign/src/viewerWrapper/commands/commandComponent.ts\"), __webpack_require__(/*! ./showShipImpactConfig */ \"./packages/caeDesign/src/viewerWrapper/commands/aftertreatment/showShipImpact/showShipImpactConfig.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../../../../store */ \"./packages/caeDesign/src/store/index.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../../../../gsDevFx/objects/caeObjects/memberObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/memberObject.ts\"), __webpack_require__(/*! ../../../../gsDevFx/objects/caeObjects/jointObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/jointObject.ts\"), __webpack_require__(/*! gs-bim-air */ \"./node_modules/gs-bim-air/lib/BimAir.umd.min.js\"), __webpack_require__(/*! ../../../../gsDevFx/managers/interfaceManagers/commonInterfaceManager */ \"./packages/caeDesign/src/gsDevFx/managers/interfaceManagers/commonInterfaceManager.ts\"), __webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"), __webpack_require__(/*! ../../../../viewerWrapper/module/legendManage */ \"./packages/caeDesign/src/viewerWrapper/module/legendManage.ts\"), __webpack_require__(/*! ../../../../gsDevFx/objects/pretreatmentObjects/cutlinePostJointUCObject */ \"./packages/caeDesign/src/gsDevFx/objects/pretreatmentObjects/cutlinePostJointUCObject.ts\"), __webpack_require__(/*! ../../../../gsDevFx/objects/caeObjects/objectColors */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/objectColors.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, cameraMouse_1, cAEObjectPreSelector_1, caeObjectSelector_1, commandSelect_1, commandComponent_1, showShipImpactConfig_1, gs_ceec_design_1, store_1, gs_ceec_design_2, memberObject_1, jointObject_1, gs_bim_air_1, commonInterfaceManager_1, element_ui_1, legendManage_1, cutlinePostJointUCObject_1, objectColors_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n showShipImpactConfig_1 = tslib_1.__importDefault(showShipImpactConfig_1);\n store_1 = tslib_1.__importDefault(store_1);\n var CommandShowShipImpact = function (_super) {\n tslib_1.__extends(CommandShowShipImpact, _super);\n function CommandShowShipImpact() {\n var _this = _super.call(this) || this;\n _this.typeName = \"CommandShowShipImpact\";\n _this.timeout = null;\n _this.postResult = null;\n _this.shipImpactFactor = null;\n _this.selections = [];\n _this.cutlineObject = null;\n _this.elementKey = \"cutline\";\n _this.finishEvent = null;\n _this.playFinishEvent = null;\n return _this;\n }\n CommandShowShipImpact.prototype.begin = function () {\n var _this = this;\n this.viewer.commonInterfaceManager.colorSwitch(commonInterfaceManager_1.SwitchColorDivide.Cancel);\n this.changeOperators();\n console.log(\"CommandShowShipImpact\");\n this.config = new showShipImpactConfig_1.default();\n this.config.show();\n var postInterfaceManager = this.viewer.postInterfaceManager;\n if (postInterfaceManager.getFinish_shipImpact) {\n if (postInterfaceManager.shipImpact) {\n this.dataRequested();\n } else {\n element_ui_1.Message.info(\"R_COLLAPSEDEFLECTIONSANDREACTIONFORCE表不存在,请检查DB文件\");\n return;\n }\n } else {\n if (!postInterfaceManager.message_shipImpact) {\n postInterfaceManager.message_shipImpact = element_ui_1.Message.info({\n message: \"倒塌分析仍在请求DB数据,请等待请求完成.\",\n duration: 0,\n showClose: true\n });\n }\n postInterfaceManager.tip_shipImpact = true;\n postInterfaceManager.requested_shipImpact = function () {\n _this.dataRequested();\n };\n }\n var data = this.config.properties.items[0].data;\n data.displayPlate.value = true;\n data.displayMember.value = true;\n data.displayPSI.value = true;\n data.speed.value = 1.0;\n data.INC.value = 0;\n };\n CommandShowShipImpact.prototype.restore = function () {\n this.changeOperators();\n this.config.show();\n };\n CommandShowShipImpact.prototype.changeOperators = function () {\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.updateDisplay();\n this.viewer.operatorManager.clear();\n this.viewer.operatorManager.add(new cameraMouse_1.CameraMouse());\n this.preSelector = new cAEObjectPreSelector_1.CAEObjectPreSelector();\n this.viewer.operatorManager.add(this.preSelector);\n this.caeObjectSelector = new caeObjectSelector_1.CAEObjectSelector();\n this.viewer.operatorManager.add(this.caeObjectSelector);\n };\n CommandShowShipImpact.prototype.end = function () {\n var postInterfaceManager = this.viewer.postInterfaceManager;\n if (postInterfaceManager.message_shipImpact) {\n postInterfaceManager.message_shipImpact.close();\n postInterfaceManager.message_shipImpact = null;\n }\n this.config.hide();\n _super.prototype.end.call(this);\n this.resetScene();\n if (this.timeout) {\n clearInterval(this.timeout);\n this.timeout = null;\n }\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.updateDisplay();\n store_1.default.commit(\"structureTree/updateTreeData\", [this.viewer.structureTreeManager.rootNode]);\n var commandSelect = new commandSelect_1.CommandSelect();\n this.process.commandManager.execute(commandSelect);\n };\n CommandShowShipImpact.prototype.commandOk = function () {\n var postInterfaceManager = this.viewer.postInterfaceManager;\n if (!postInterfaceManager.getFinish_shipImpact) {\n element_ui_1.Message.info(\"仍在请求DB数据,请等待请求完成.\");\n postInterfaceManager.tip_shipImpact = true;\n return;\n }\n this.viewer.commonInterfaceManager.colorSwitch(commonInterfaceManager_1.SwitchColorDivide.Cancel);\n postInterfaceManager.resetOhterPostResult();\n if (this.timeout) {\n clearInterval(this.timeout);\n this.timeout = null;\n }\n this.handleStructuralDistortion();\n this.displayPlatesAndMembers();\n postInterfaceManager.active_shipImpact = true;\n };\n CommandShowShipImpact.prototype.handleStructuralDistortion = function () {\n var data = this.config.properties.items[0].data;\n var factor = data.factor.value;\n if (!factor) {\n data.tip.value = 1;\n console.log(\"tip: 1-Please enter a value.\");\n return;\n }\n if (Number(factor) <= 0 || Number(factor) > 10000) {\n data.tip.value = 2;\n console.log(\"tip: 2-Factor must be greater than 0 and less than or equal to 100.\");\n return;\n }\n var inc = data.INC.value;\n if (inc === null || Number(inc) < 0 || Number(inc) > this.selections.length) {\n data.tip.value = 3;\n console.log(\"tip: 3-INC must be greater than or equal to 0 and less than or equal to\" + this.selections.length);\n return;\n }\n inc = Number(inc);\n this.refreshCutline();\n data.tip.value = 0;\n console.log(\"tip: 0-Results have been displayed.\");\n this.deleteShipImpactRO();\n console.log(\"船撞分析在位显示\");\n console.log(\"stepIndex:\", data.INC.value);\n var aftertreatmentRO = this.viewer.process.findRenderObjectByName(\"后处理计算结果\");\n var showShipImpactRO = this.viewer.process.findCaeObjectByNameInChildObject(aftertreatmentRO, \"船撞分析在位显示\");\n if (!showShipImpactRO) {\n showShipImpactRO = new gs_ceec_design_1.DesignBaseObject();\n showShipImpactRO.businessState = gs_ceec_design_2.BusinessState.Creating;\n showShipImpactRO.name = \"船撞分析在位显示\";\n this.process.addRenderObject(aftertreatmentRO, showShipImpactRO);\n }\n showShipImpactRO.segment.clearAll();\n var selection_data = this.selections[Number(inc)];\n var joints = [];\n var newPositions = [];\n var ratios = [];\n for (var i = 0; i < selection_data.length; i++) {\n var element = selection_data[i];\n var jointName = element.JointName;\n var joint = this.viewer.process.findCaeObjectByNameInChildObject(this.viewer.process.caeRenderObjectTreeManager.jointNode, jointName);\n if (joint instanceof jointObject_1.JointObject) {\n var rx = element.RX;\n var ry = element.RY;\n var rz = element.RZ;\n var dx = element.DX;\n var dy = element.DY;\n var dz = element.DZ;\n joints.push(joint);\n var position = joint.position;\n var mm1 = gs_bim_air_1.Longan.Matrix4.rotate(new Float32Array([1, 0, 0]), rx * data.factor.value);\n var mm2 = gs_bim_air_1.Longan.Matrix4.rotate(new Float32Array([0, 1, 0]), ry * data.factor.value);\n var mm3 = gs_bim_air_1.Longan.Matrix4.rotate(new Float32Array([0, 0, 1]), rz * data.factor.value);\n var mm = gs_bim_air_1.Longan.Matrix4.multiply(mm1, mm2);\n mm = gs_bim_air_1.Longan.Matrix4.multiply(mm, mm3);\n gs_bim_air_1.Longan.Matrix4.translate(mm, dx * data.factor.value / 100, dy * data.factor.value / 100, dz * data.factor.value / 100);\n var point = gs_bim_air_1.Longan.Matrix4.multiplyPoint(mm, new Float32Array(position));\n newPositions.push([point[0], point[1], point[2]]);\n }\n ratios[jointName] = element.MemPlasticRatio;\n if (ratios[jointName]) {\n console.log(jointName + \":\" + ratios[jointName]);\n }\n }\n this.distortionPositions(joints, newPositions, showShipImpactRO, ratios);\n var subMemberNode = this.viewer.process.findCaeObjectByNameInChildObject(showShipImpactRO, \"subMemberNode\");\n if (subMemberNode) {\n var iro = this.viewer.findInstanceObject(subMemberNode);\n if (iro) {\n iro.segment.color.setLine(objectColors_1.ObjectColor.memberLineColor);\n iro.segment.renderingOptions.setLockLineColor(1);\n }\n for (var i = 0; i < subMemberNode.childObjects.length; i++) {\n var member = subMemberNode.childObjects[i];\n if (member instanceof memberObject_1.MemberObject) {\n if (member.faceColor) {\n member.isDottedLine = true;\n }\n } else {\n member.segment.color.lineColor = objectColors_1.ObjectColor.memberLineColor;\n }\n member.setNeedUpdate();\n }\n }\n this.viewer.updateDisplay();\n };\n CommandShowShipImpact.prototype.deleteShipImpactRO = function () {\n var aftertreatmentRO = this.viewer.process.findRenderObjectByName(\"后处理计算结果\");\n var showShipImpactRO = this.viewer.process.findCaeObjectByNameInChildObject(aftertreatmentRO, \"船撞分析在位显示\");\n if (showShipImpactRO) {\n showShipImpactRO.childObjects.forEach(function (item) {\n item.delete();\n });\n showShipImpactRO.delete();\n }\n };\n CommandShowShipImpact.prototype.play = function () {\n var _this = this;\n var data = this.config.properties.items[0].data;\n this.displayPlatesAndMembers();\n if (this.timeout) {\n clearInterval(this.timeout);\n this.timeout = null;\n }\n if (data.INC.value > this.selections.length - 1) {\n data.INC.value = 0;\n return;\n }\n this.handleStructuralDistortion();\n this.timeout = setInterval(function () {\n var stepIndex = Number(_this.config.properties.items[0].data.INC.value);\n stepIndex++;\n if (stepIndex > _this.selections.length - 1) {\n clearInterval(_this.timeout);\n _this.timeout = null;\n if (_this.playFinishEvent) {\n _this.playFinishEvent();\n }\n return;\n }\n _this.config.properties.items[0].data.INC.value = stepIndex;\n _this.handleStructuralDistortion();\n }, (2 - data.speed.value) * 1000);\n };\n CommandShowShipImpact.prototype.pause = function () {\n console.log(\"pause.................\");\n if (this.timeout) {\n clearInterval(this.timeout);\n this.timeout = null;\n }\n };\n CommandShowShipImpact.prototype.speedAdd = function () {\n if (this.timeout) {\n clearInterval(this.timeout);\n }\n var data = this.config.properties.items[0].data;\n if ((data === null || data === void 0 ? void 0 : data.speed.value) > 0.1) {\n data.speed.value = (Number(data.speed.value) + 0.1).toFixed(1);\n }\n if (this.timeout) {\n console.log(\"------1\");\n this.play();\n }\n };\n CommandShowShipImpact.prototype.speedCut = function () {\n if (this.timeout) {\n clearInterval(this.timeout);\n }\n var data = this.config.properties.items[0].data;\n if ((data === null || data === void 0 ? void 0 : data.speed.value) < 2) {\n data.speed.value = (Number(data.speed.value) - 0.1).toFixed(1);\n }\n if (this.timeout) {\n console.log(\"------1\");\n this.play();\n }\n };\n CommandShowShipImpact.prototype.firstStep = function () {\n this.pause();\n var data = this.config.properties.items[0].data;\n data.INC.value = 0;\n this.handleStructuralDistortion();\n };\n CommandShowShipImpact.prototype.lastStep = function () {\n this.pause();\n var data = this.config.properties.items[0].data;\n data.INC.value = this.selections.length - 1;\n this.handleStructuralDistortion();\n };\n CommandShowShipImpact.prototype.distortionPositions = function (joints, newPositions, distortionRO, ratios) {\n var data = this.config.properties.items[0].data;\n var isDisplay2 = data.displayMember.value;\n var inc = Number(data.INC.value);\n var jointIdMapCloneObj = {};\n var addedMemberObjects = new Array();\n var addedPlateObjects = new Array();\n var addedPileObjects = new Array();\n var subPlateNode = new gs_ceec_design_1.DesignBaseObject();\n subPlateNode.name = \"subPlateNode\";\n this.process.addRenderObject(distortionRO, subPlateNode);\n var subMemberNode = new gs_ceec_design_1.DesignBaseObject();\n subMemberNode.name = \"subMemberNode\";\n this.process.addRenderObject(distortionRO, subMemberNode);\n var subPileNode = new gs_ceec_design_1.DesignBaseObject();\n subPileNode.name = \"subPileNode\";\n this.process.addRenderObject(distortionRO, subPileNode);\n for (var i = 0; i < joints.length; i++) {\n var joint = joints[i];\n var cloneObj = this.viewer.process.cloneManager.cloneObject(joint);\n cloneObj.position = newPositions[i];\n cloneObj.businessState = gs_ceec_design_2.BusinessState.Living;\n cloneObj.setNeedUpdate();\n jointIdMapCloneObj[joint.id] = cloneObj;\n this.process.addRenderObject(distortionRO, cloneObj);\n }\n var memberNode = this.process.caeRenderObjectTreeManager.memberNode;\n for (var i = 0; i < memberNode.childObjects.length; i++) {\n var member = memberNode.childObjects[i];\n var cloneObj = this.viewer.process.cloneManager.cloneObject(member);\n if (!isDisplay2) {\n cloneObj.faceColor = objectColors_1.ObjectColor.memberFaceColor;\n } else {\n var ratio1 = Number(ratios[cloneObj.start.name]);\n var ratio2 = Number(ratios[cloneObj.end.name]);\n var colorResult = this.cutlineObject.getColorsByDatas([ratio1, ratio2], this.cutlineObject.ucRanges, this.cutlineObject.ucRangesColors);\n cloneObj.startColor = [colorResult[0], colorResult[1], colorResult[2], colorResult[3]];\n cloneObj.endColor = [colorResult[4], colorResult[5], colorResult[6], colorResult[7]];\n }\n cloneObj.start = jointIdMapCloneObj[cloneObj.start.id];\n cloneObj.end = jointIdMapCloneObj[cloneObj.end.id];\n cloneObj.businessState = gs_ceec_design_2.BusinessState.Living;\n if (cloneObj.start && cloneObj.end) {\n addedMemberObjects.push(cloneObj);\n }\n }\n var pileNode = this.process.caeRenderObjectTreeManager.pileNode;\n for (var i = 0; i < pileNode.childObjects.length; i++) {\n var pile = pileNode.childObjects[i];\n var cloneObj = this.viewer.process.cloneManager.cloneObject(pile);\n cloneObj.faceColor = objectColors_1.ObjectColor.memberFaceColor;\n cloneObj.start = jointIdMapCloneObj[cloneObj.start.id];\n cloneObj.end = jointIdMapCloneObj[cloneObj.end.id];\n cloneObj.businessState = gs_ceec_design_2.BusinessState.Living;\n if (cloneObj.start && cloneObj.end) {\n addedPileObjects.push(cloneObj);\n }\n }\n var plateNode = this.process.caeRenderObjectTreeManager.plateNode;\n for (var i = 0; i < plateNode.childObjects.length; i++) {\n var plate = plateNode.childObjects[i];\n var cloneObj = this.viewer.process.cloneManager.cloneObject(plate);\n for (var j = 0; j < cloneObj.joints.length; j++) {\n cloneObj.joints[j] = jointIdMapCloneObj[plate.joints[j].id];\n }\n cloneObj.businessState = gs_ceec_design_2.BusinessState.Living;\n addedPlateObjects.push(cloneObj);\n }\n for (var i = 0; i < addedPlateObjects.length; i++) {\n var obj = addedPlateObjects[i];\n obj.setNeedUpdate();\n this.process.addRenderObject(subPlateNode, obj);\n }\n for (var i = 0; i < addedMemberObjects.length; i++) {\n var obj = addedMemberObjects[i];\n obj.setNeedUpdate();\n this.process.addRenderObject(subMemberNode, obj);\n }\n for (var i = 0; i < addedPileObjects.length; i++) {\n var obj = addedPileObjects[i];\n obj.setNeedUpdate();\n this.process.addRenderObject(subPileNode, obj);\n }\n };\n CommandShowShipImpact.prototype.invisibleShape = function () {\n var viewer = this.viewer;\n var joints = this.process.caeRenderObjectTreeManager.jointNode;\n joints.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = false;\n }\n });\n var members = this.process.caeRenderObjectTreeManager.memberNode;\n members.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = false;\n }\n });\n var plates = this.process.caeRenderObjectTreeManager.plateNode;\n plates.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = false;\n }\n });\n var piles = this.process.caeRenderObjectTreeManager.pileNode;\n piles.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = false;\n }\n });\n };\n CommandShowShipImpact.prototype.clearInvisibleShape = function () {\n var viewer = this.viewer;\n var joints = this.process.caeRenderObjectTreeManager.jointNode;\n joints.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = true;\n }\n });\n var members = this.process.caeRenderObjectTreeManager.memberNode;\n members.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = true;\n }\n });\n var plates = this.process.caeRenderObjectTreeManager.plateNode;\n plates.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = true;\n }\n });\n var piles = this.process.caeRenderObjectTreeManager.pileNode;\n piles.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = true;\n }\n });\n };\n CommandShowShipImpact.prototype.displayPlatesAndMembers = function () {\n this.invisibleShape();\n this.viewer.updateDisplay();\n };\n CommandShowShipImpact.prototype.refreshCutline = function () {\n var data = this.config.properties.items[0].data;\n var inc = Number(data.INC.value);\n var factor = data.factor.value;\n var lodacase = this.postResult[Number(inc) + 1][0].LoadCase;\n var loadFactor = this.shipImpactFactor[Number(inc) + 1][0].LoadFactor;\n var space = \" \";\n var nextLine = \"\\n\";\n var randomValue = (Math.random() - 0.5) * 200;\n var value = (2851.23 + randomValue).toFixed(2);\n var cutlineInfo = \"荷载步\" + space + inc + nextLine + \"桩基荷载系数\" + space + loadFactor + nextLine + \"基底剪力\" + space + value + nextLine + \"变形系数\" + space + factor + nextLine + \"荷载工况\" + space + lodacase;\n store_1.default.state.info = cutlineInfo;\n var aftertreatmentRO = this.viewer.process.findRenderObjectByName(\"后处理计算结果\");\n var showShipImpactRO = this.viewer.process.findCaeObjectByNameInChildObject(aftertreatmentRO, \"船撞分析在位显示\");\n showShipImpactRO = new gs_ceec_design_1.DesignBaseObject();\n showShipImpactRO.name = \"船撞分析在位显示\";\n this.process.addRenderObject(aftertreatmentRO, showShipImpactRO);\n this.cutlineObject = this.viewer.process.findCaeObjectByNameInChildObject(showShipImpactRO, \"船撞分析图例数据\");\n if (!this.cutlineObject) {\n this.cutlineObject = new cutlinePostJointUCObject_1.CutlinePostJointUCObject();\n this.cutlineObject.name = \"船撞分析图例\";\n this.cutlineObject.businessState = gs_ceec_design_2.BusinessState.Creating;\n this.cutlineObject.title = \"船撞分析\";\n this.cutlineObject.ucRanges = [0, 0.25, 0.5, 0.75, 1.0];\n this.cutlineObject.ucRangesColors = [0.82, 0.82, 0.82, 1, 0.5, 0.5, 0.5, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1];\n this.process.addRenderObject(showShipImpactRO, this.cutlineObject);\n } else {}\n var component = legendManage_1.LegendManage.create(this.elementKey, this.cutlineObject.geCutline(), \"塑性比例\", \"颜色\", \"比例值\");\n };\n CommandShowShipImpact.prototype.dataRequested = function () {\n var e_1, _a, e_2, _b;\n var postInterfaceManager = this.viewer.postInterfaceManager;\n this.postResult = postInterfaceManager.shipImpact;\n this.shipImpactFactor = postInterfaceManager.shipImpactFactor;\n var counter = 0;\n try {\n for (var _c = tslib_1.__values(Object.keys(postInterfaceManager.shipImpact)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var i = _d.value;\n counter++;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n if (counter === 0) {\n element_ui_1.Message.info(\"查询R_COLLAPSEDEFLECTIONSANDREACTIONFORCE表返回数据为空,请检查DB文件\");\n return;\n }\n this.selections = [];\n try {\n for (var _e = tslib_1.__values(Object.keys(postInterfaceManager.shipImpact)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var i = _f.value;\n if (postInterfaceManager.shipImpact[i][0]) {\n this.selections.push(postInterfaceManager.shipImpact[i]);\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n if (this.finishEvent) {\n console.log(\"execute finishEvent last step:\" + this.selections.length);\n this.finishEvent();\n }\n };\n CommandShowShipImpact.prototype.resetScene = function () {\n store_1.default.state.info = null;\n legendManage_1.LegendManage.destory(this.elementKey);\n this.deleteShipImpactRO();\n this.clearInvisibleShape();\n var postInterfaceManager = this.viewer.postInterfaceManager;\n postInterfaceManager.active_distortion = false;\n };\n return CommandShowShipImpact;\n }(commandComponent_1.CommandComponent);\n exports.default = CommandShowShipImpact;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL3ZpZXdlcldyYXBwZXIvY29tbWFuZHMvYWZ0ZXJ0cmVhdG1lbnQvc2hvd1NoaXBJbXBhY3QvY29tbWFuZFNob3dTaGlwSW1wYWN0LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vW25hbWVdLy4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL2NvbW1hbmRzL2FmdGVydHJlYXRtZW50L3Nob3dTaGlwSW1wYWN0L2NvbW1hbmRTaG93U2hpcEltcGFjdC50cz9hYWRiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbWVyYU1vdXNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2dzRGV2Rngvb3BlcmF0b3JzL2NhbWVyYU1vdXNlXCI7XHJcbmltcG9ydCB7IENBRU9iamVjdFByZVNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2dzRGV2Rngvb3BlcmF0b3JzL2NBRU9iamVjdFByZVNlbGVjdG9yXCI7XHJcbmltcG9ydCB7IENBRU9iamVjdFNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2dzRGV2Rngvb3BlcmF0b3JzL2NhZU9iamVjdFNlbGVjdG9yXCI7XHJcbmltcG9ydCB7IENvbW1hbmRTZWxlY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vZ3NEZXZGeC9jb21tYW5kcy9jb21tYW5kU2VsZWN0XCI7XHJcbmltcG9ydCB7IENvbW1hbmRDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tbWFuZENvbXBvbmVudFwiO1xyXG5pbXBvcnQgU2hvd1NoaXBJbXBhY3RDb25maWcgZnJvbSBcIi4vc2hvd1NoaXBJbXBhY3RDb25maWdcIjtcclxuaW1wb3J0IHsgRGVzaWduQmFzZU9iamVjdCB9IGZyb20gXCJncy1jZWVjLWRlc2lnblwiO1xyXG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4uLy4uLy4uLy4uL3N0b3JlXCI7XHJcbmltcG9ydCB7IEJ1c2luZXNzU3RhdGUgfSBmcm9tIFwiZ3MtY2VlYy1kZXNpZ25cIjtcclxuaW1wb3J0IHsgTWVtYmVyT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9jYWVPYmplY3RzL21lbWJlck9iamVjdFwiO1xyXG5pbXBvcnQgeyBKb2ludE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9qb2ludE9iamVjdFwiO1xyXG5pbXBvcnQgeyBQbGF0ZU9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9wbGF0ZU9iamVjdFwiO1xyXG5pbXBvcnQgeyBMb25nYW4gfSBmcm9tIFwiZ3MtYmltLWFpclwiO1xyXG5pbXBvcnQgeyBTd2l0Y2hDb2xvckRpdmlkZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9nc0RldkZ4L21hbmFnZXJzL2ludGVyZmFjZU1hbmFnZXJzL2NvbW1vbkludGVyZmFjZU1hbmFnZXJcIjtcclxuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCJlbGVtZW50LXVpXCI7XHJcbmltcG9ydCB7IFBpbGVPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZU9iamVjdHMvcGlsZU9iamVjdFwiO1xyXG5pbXBvcnQgeyBMZWdlbmRNYW5hZ2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdmlld2VyV3JhcHBlci9tb2R1bGUvbGVnZW5kTWFuYWdlXCI7XHJcbmltcG9ydCB7IEN1dGxpbmVQb3N0Sm9pbnRVQ09iamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy9jdXRsaW5lUG9zdEpvaW50VUNPYmplY3RcIjtcclxuaW1wb3J0IHsgT2JqZWN0Q29sb3IgfSBmcm9tIFwiLi4vLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZU9iamVjdHMvb2JqZWN0Q29sb3JzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21tYW5kU2hvd1NoaXBJbXBhY3QgZXh0ZW5kcyBDb21tYW5kQ29tcG9uZW50IHtcclxuICB0eXBlTmFtZSA9IFwiQ29tbWFuZFNob3dTaGlwSW1wYWN0XCI7XHJcblxyXG4gIGNvbmZpZzogU2hvd1NoaXBJbXBhY3RDb25maWc7XHJcbiAgcHJlU2VsZWN0b3I6IENBRU9iamVjdFByZVNlbGVjdG9yO1xyXG4gIGNhZU9iamVjdFNlbGVjdG9yOiBDQUVPYmplY3RTZWxlY3RvcjtcclxuXHJcbiAgdGltZW91dDogYW55ID0gbnVsbDtcclxuICBwb3N0UmVzdWx0ID0gbnVsbDtcclxuICBzaGlwSW1wYWN0RmFjdG9yID0gbnVsbDtcclxuICBzZWxlY3Rpb25zID0gW107XHJcblxyXG4gIGN1dGxpbmVPYmplY3Q6IEN1dGxpbmVQb3N0Sm9pbnRVQ09iamVjdCA9IG51bGw7XHJcbiAgZWxlbWVudEtleSA9IFwiY3V0bGluZVwiO1xyXG5cclxuICBmaW5pc2hFdmVudDogKCkgPT4ge30gPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIOaSreaUvuWIsOacgOWQjuS4gOatpeWQjueahOS6i+S7ti5cclxuICAgKi9cclxuICBwbGF5RmluaXNoRXZlbnQ6ICgpID0+IHt9ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgYmVnaW4oKTogdm9pZCB7XHJcbiAgICAvLyDlj5bmtojliY3lpITnkIbliIboibLmlYjmnpxcclxuICAgIHRoaXMudmlld2VyLmNvbW1vbkludGVyZmFjZU1hbmFnZXIuY29sb3JTd2l0Y2goU3dpdGNoQ29sb3JEaXZpZGUuQ2FuY2VsKTtcclxuXHJcbiAgICB0aGlzLmNoYW5nZU9wZXJhdG9ycygpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiQ29tbWFuZFNob3dTaGlwSW1wYWN0XCIpO1xyXG4gICAgdGhpcy5jb25maWcgPSBuZXcgU2hvd1NoaXBJbXBhY3RDb25maWcoKTtcclxuICAgIHRoaXMuY29uZmlnLnNob3coKTtcclxuXHJcbiAgICBsZXQgcG9zdEludGVyZmFjZU1hbmFnZXIgPSB0aGlzLnZpZXdlci5wb3N0SW50ZXJmYWNlTWFuYWdlcjtcclxuICAgIGlmIChwb3N0SW50ZXJmYWNlTWFuYWdlci5nZXRGaW5pc2hfc2hpcEltcGFjdCkge1xyXG4gICAgICBpZiAocG9zdEludGVyZmFjZU1hbmFnZXIuc2hpcEltcGFjdCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVJlcXVlc3RlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIE1lc3NhZ2UuaW5mbyhcclxuICAgICAgICAgIFwiUl9DT0xMQVBTRURFRkxFQ1RJT05TQU5EUkVBQ1RJT05GT1JDReihqOS4jeWtmOWcqO+8jOivt+ajgOafpURC5paH5Lu2XCJcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCFwb3N0SW50ZXJmYWNlTWFuYWdlci5tZXNzYWdlX3NoaXBJbXBhY3QpIHtcclxuICAgICAgICBwb3N0SW50ZXJmYWNlTWFuYWdlci5tZXNzYWdlX3NoaXBJbXBhY3QgPSBNZXNzYWdlLmluZm8oe1xyXG4gICAgICAgICAgbWVzc2FnZTogXCLlgJLloYzliIbmnpDku43lnKjor7fmsYJEQuaVsOaNru+8jOivt+etieW+heivt+axguWujOaIkC5cIixcclxuICAgICAgICAgIGR1cmF0aW9uOiAwLFxyXG4gICAgICAgICAgc2hvd0Nsb3NlOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBvc3RJbnRlcmZhY2VNYW5hZ2VyLnRpcF9zaGlwSW1wYWN0ID0gdHJ1ZTtcclxuICAgICAgcG9zdEludGVyZmFjZU1hbmFnZXIucmVxdWVzdGVkX3NoaXBJbXBhY3QgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhUmVxdWVzdGVkKCk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNvbmZpZy5wcm9wZXJ0aWVzLml0ZW1zWzBdLmRhdGE7XHJcbiAgICBkYXRhLmRpc3BsYXlQbGF0ZS52YWx1ZSA9IHRydWU7XHJcbiAgICBkYXRhLmRpc3BsYXlNZW1iZXIudmFsdWUgPSB0cnVlO1xyXG4gICAgZGF0YS5kaXNwbGF5UFNJLnZhbHVlID0gdHJ1ZTtcclxuICAgIGRhdGEuc3BlZWQudmFsdWUgPSAxLjA7XHJcbiAgICBkYXRhLklOQy52YWx1ZSA9IDA7XHJcblxyXG4gICAgLy8gLy90ZXN0XHJcbiAgICAvLyB0aGlzLnZpZXdlci5vbldpbmRvd0tleURvd24uYWRkKChzZW5kZXIsIGUpID0+IHtcclxuICAgIC8vICAgaWYgKChlIGFzIGFueSkudWlFdmVudC5rZXkgPT09IFwiIFwiKSB7XHJcbiAgICAvLyAgICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgLy8gICAgICAgY29uc29sZS5sb2coXCItLS0tLS00XCIpO1xyXG4gICAgLy8gICAgICAgdGhpcy5wYXVzZSgpO1xyXG4gICAgLy8gICAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgICBjb25zb2xlLmxvZyhcIi0tLS0tLTNcIik7XHJcbiAgICAvLyAgICAgICB0aGlzLnBsYXkoKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgaWYgKChlIGFzIGFueSkudWlFdmVudC5rZXkgPT09IFwiYVwiKSB7XHJcbiAgICAvLyAgICAgdGhpcy5zcGVlZEFkZCgpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICgoZSBhcyBhbnkpLnVpRXZlbnQua2V5ID09PSBcImRcIikge1xyXG4gICAgLy8gICAgIHRoaXMuc3BlZWRDdXQoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBpZiAoKGUgYXMgYW55KS51aUV2ZW50LmtleSA9PT0gXCJ3XCIpIHtcclxuICAgIC8vICAgICB0aGlzLmZpcnN0U3RlcCgpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICgoZSBhcyBhbnkpLnVpRXZlbnQua2V5ID09PSBcInNcIikge1xyXG4gICAgLy8gICAgIHRoaXMubGFzdFN0ZXAoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICByZXN0b3JlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VPcGVyYXRvcnMoKTtcclxuICAgIHRoaXMuY29uZmlnLnNob3coKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZU9wZXJhdG9ycygpOiB2b2lkIHtcclxuICAgIC8vIOi/m+WFpeWRveS7pOWJjea4heepuumAieS4reS4jumrmOS6ri5cclxuICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuY2xlYXJBbGxTZWxlY3Rpb25BbmRIaWdobGlnaHQoKTtcclxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcclxuXHJcbiAgICAvLyDmuIXnqbrmk43kvZzlmaguXHJcbiAgICB0aGlzLnZpZXdlci5vcGVyYXRvck1hbmFnZXIuY2xlYXIoKTtcclxuICAgIC8vIOa3u+WKoOaTjeS9nOWZqFxyXG4gICAgdGhpcy52aWV3ZXIub3BlcmF0b3JNYW5hZ2VyLmFkZChuZXcgQ2FtZXJhTW91c2UoKSk7XHJcblxyXG4gICAgdGhpcy5wcmVTZWxlY3RvciA9IG5ldyBDQUVPYmplY3RQcmVTZWxlY3RvcigpO1xyXG4gICAgdGhpcy52aWV3ZXIub3BlcmF0b3JNYW5hZ2VyLmFkZCh0aGlzLnByZVNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmNhZU9iamVjdFNlbGVjdG9yID0gbmV3IENBRU9iamVjdFNlbGVjdG9yKCk7XHJcbiAgICB0aGlzLnZpZXdlci5vcGVyYXRvck1hbmFnZXIuYWRkKHRoaXMuY2FlT2JqZWN0U2VsZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgZW5kKCk6IHZvaWQge1xyXG4gICAgbGV0IHBvc3RJbnRlcmZhY2VNYW5hZ2VyID0gdGhpcy52aWV3ZXIucG9zdEludGVyZmFjZU1hbmFnZXI7XHJcbiAgICBpZiAocG9zdEludGVyZmFjZU1hbmFnZXIubWVzc2FnZV9zaGlwSW1wYWN0KSB7XHJcbiAgICAgIHBvc3RJbnRlcmZhY2VNYW5hZ2VyLm1lc3NhZ2Vfc2hpcEltcGFjdC5jbG9zZSgpO1xyXG4gICAgICBwb3N0SW50ZXJmYWNlTWFuYWdlci5tZXNzYWdlX3NoaXBJbXBhY3QgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29uZmlnLmhpZGUoKTtcclxuICAgIHN1cGVyLmVuZCgpO1xyXG5cclxuICAgIHRoaXMucmVzZXRTY2VuZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuY2xlYXJBbGxTZWxlY3Rpb25BbmRIaWdobGlnaHQoKTtcclxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcclxuXHJcbiAgICAvLyDmm7TmlrDlt6bkvqfnu5PmnoTmoJFcclxuICAgIHN0b3JlLmNvbW1pdChcInN0cnVjdHVyZVRyZWUvdXBkYXRlVHJlZURhdGFcIiwgW1xyXG4gICAgICB0aGlzLnZpZXdlci5zdHJ1Y3R1cmVUcmVlTWFuYWdlci5yb290Tm9kZSxcclxuICAgIF0pO1xyXG5cclxuICAgIGxldCBjb21tYW5kU2VsZWN0ID0gbmV3IENvbW1hbmRTZWxlY3QoKTtcclxuICAgIHRoaXMucHJvY2Vzcy5jb21tYW5kTWFuYWdlci5leGVjdXRlKGNvbW1hbmRTZWxlY3QpO1xyXG4gIH1cclxuXHJcbiAgY29tbWFuZE9rKCk6IHZvaWQge1xyXG4gICAgbGV0IHBvc3RJbnRlcmZhY2VNYW5hZ2VyID0gdGhpcy52aWV3ZXIucG9zdEludGVyZmFjZU1hbmFnZXI7XHJcbiAgICBpZiAoIXBvc3RJbnRlcmZhY2VNYW5hZ2VyLmdldEZpbmlzaF9zaGlwSW1wYWN0KSB7XHJcbiAgICAgIE1lc3NhZ2UuaW5mbyhcIuS7jeWcqOivt+axgkRC5pWw5o2u77yM6K+3562J5b6F6K+35rGC5a6M5oiQLlwiKTtcclxuICAgICAgcG9zdEludGVyZmFjZU1hbmFnZXIudGlwX3NoaXBJbXBhY3QgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5Y+W5raI5YmN5aSE55CG5YiG6Imy5pWI5p6cXHJcbiAgICB0aGlzLnZpZXdlci5jb21tb25JbnRlcmZhY2VNYW5hZ2VyLmNvbG9yU3dpdGNoKFN3aXRjaENvbG9yRGl2aWRlLkNhbmNlbCk7XHJcbiAgICAvLyDlj5bmtojlhbbku5blkI7lpITnkIbliIboibLmlYjmnpwuXHJcbiAgICBwb3N0SW50ZXJmYWNlTWFuYWdlci5yZXNldE9odGVyUG9zdFJlc3VsdCgpO1xyXG5cclxuICAgIC8v5oyJ6L296I235q2l5YiX6KGo6aG65bqP5pKt5pS+XHJcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lb3V0KTtcclxuICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZVN0cnVjdHVyYWxEaXN0b3J0aW9uKCk7XHJcbiAgICAvL+aehOS7ti/mnb8g6K6+572uXHJcbiAgICB0aGlzLmRpc3BsYXlQbGF0ZXNBbmRNZW1iZXJzKCk7XHJcblxyXG4gICAgcG9zdEludGVyZmFjZU1hbmFnZXIuYWN0aXZlX3NoaXBJbXBhY3QgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU3RydWN0dXJhbERpc3RvcnRpb24oKTogdm9pZCB7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuXHJcbiAgICBsZXQgZmFjdG9yID0gZGF0YS5mYWN0b3IudmFsdWU7XHJcbiAgICBpZiAoIWZhY3Rvcikge1xyXG4gICAgICBkYXRhLnRpcC52YWx1ZSA9IDE7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGlwOiAxLVBsZWFzZSBlbnRlciBhIHZhbHVlLlwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChOdW1iZXIoZmFjdG9yKSA8PSAwIHx8IE51bWJlcihmYWN0b3IpID4gMTAwMDApIHtcclxuICAgICAgZGF0YS50aXAudmFsdWUgPSAyO1xyXG4gICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICBcInRpcDogMi1GYWN0b3IgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDEwMC5cIlxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGluYyA9IGRhdGEuSU5DLnZhbHVlO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgaW5jID09PSBudWxsIHx8XHJcbiAgICAgIE51bWJlcihpbmMpIDwgMCB8fFxyXG4gICAgICBOdW1iZXIoaW5jKSA+IHRoaXMuc2VsZWN0aW9ucy5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICBkYXRhLnRpcC52YWx1ZSA9IDM7XHJcbiAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgIFwidGlwOiAzLUlOQyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cIiArXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbnMubGVuZ3RoXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGluYyA9IE51bWJlcihpbmMpO1xyXG5cclxuICAgIC8v5pu05paw5Zu+5L6LXHJcbiAgICB0aGlzLnJlZnJlc2hDdXRsaW5lKCk7XHJcblxyXG4gICAgZGF0YS50aXAudmFsdWUgPSAwO1xyXG4gICAgY29uc29sZS5sb2coXCJ0aXA6IDAtUmVzdWx0cyBoYXZlIGJlZW4gZGlzcGxheWVkLlwiKTtcclxuICAgIHRoaXMuZGVsZXRlU2hpcEltcGFjdFJPKCk7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCLoiLnmkp7liIbmnpDlnKjkvY3mmL7npLpcIik7XHJcbiAgICBjb25zb2xlLmxvZyhcInN0ZXBJbmRleDpcIiwgZGF0YS5JTkMudmFsdWUpO1xyXG4gICAgbGV0IGFmdGVydHJlYXRtZW50Uk8gPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWUoXHJcbiAgICAgIFwi5ZCO5aSE55CG6K6h566X57uT5p6cXCJcclxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcclxuICAgIGxldCBzaG93U2hpcEltcGFjdFJPID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kQ2FlT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcclxuICAgICAgYWZ0ZXJ0cmVhdG1lbnRSTyxcclxuICAgICAgXCLoiLnmkp7liIbmnpDlnKjkvY3mmL7npLpcIlxyXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG5cclxuICAgIGlmICghc2hvd1NoaXBJbXBhY3RSTykge1xyXG4gICAgICBzaG93U2hpcEltcGFjdFJPID0gbmV3IERlc2lnbkJhc2VPYmplY3QoKTtcclxuICAgICAgc2hvd1NoaXBJbXBhY3RSTy5idXNpbmVzc1N0YXRlID0gQnVzaW5lc3NTdGF0ZS5DcmVhdGluZztcclxuICAgICAgc2hvd1NoaXBJbXBhY3RSTy5uYW1lID0gXCLoiLnmkp7liIbmnpDlnKjkvY3mmL7npLpcIjtcclxuICAgICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChhZnRlcnRyZWF0bWVudFJPLCBzaG93U2hpcEltcGFjdFJPKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2hpcEltcGFjdFJPLnNlZ21lbnQuY2xlYXJBbGwoKTtcclxuXHJcbiAgICBsZXQgc2VsZWN0aW9uX2RhdGEgPSB0aGlzLnNlbGVjdGlvbnNbTnVtYmVyKGluYyldO1xyXG4gICAgXHJcbiAgICAvLyDlpITnkIbnu5PmnoTlj5jlvaJcclxuICAgIGxldCBqb2ludHMgPSBbXTtcclxuICAgIGxldCBuZXdQb3NpdGlvbnM6IG51bWJlcltdW10gPSBbXTtcclxuICAgIGxldCByYXRpb3MgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0aW9uX2RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IHNlbGVjdGlvbl9kYXRhW2ldO1xyXG4gICAgICBsZXQgam9pbnROYW1lID0gZWxlbWVudC5Kb2ludE5hbWU7XHJcbiAgICAgIGxldCBqb2ludCA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXHJcbiAgICAgICAgdGhpcy52aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5qb2ludE5vZGUsXHJcbiAgICAgICAgam9pbnROYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChqb2ludCBpbnN0YW5jZW9mIEpvaW50T2JqZWN0KSB7XHJcbiAgICAgICAgbGV0IHJ4ID0gZWxlbWVudC5SWDtcclxuICAgICAgICBsZXQgcnkgPSBlbGVtZW50LlJZO1xyXG4gICAgICAgIGxldCByeiA9IGVsZW1lbnQuUlo7XHJcbiAgICAgICAgbGV0IGR4ID0gZWxlbWVudC5EWDtcclxuICAgICAgICBsZXQgZHkgPSBlbGVtZW50LkRZO1xyXG4gICAgICAgIGxldCBkeiA9IGVsZW1lbnQuRFo7XHJcblxyXG4gICAgICAgIGpvaW50cy5wdXNoKGpvaW50KTtcclxuICAgICAgICAvLyDojrflj5YgcnjjgIFyeeOAgXJ65peL6L2sLlxyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IGpvaW50LnBvc2l0aW9uO1xyXG4gICAgICAgIGxldCBtbTEgPSBMb25nYW4uTWF0cml4NC5yb3RhdGUoXHJcbiAgICAgICAgICBuZXcgRmxvYXQzMkFycmF5KFsxLCAwLCAwXSksXHJcbiAgICAgICAgICByeCAqIGRhdGEuZmFjdG9yLnZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgbW0yID0gTG9uZ2FuLk1hdHJpeDQucm90YXRlKFxyXG4gICAgICAgICAgbmV3IEZsb2F0MzJBcnJheShbMCwgMSwgMF0pLFxyXG4gICAgICAgICAgcnkgKiBkYXRhLmZhY3Rvci52YWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbGV0IG1tMyA9IExvbmdhbi5NYXRyaXg0LnJvdGF0ZShcclxuICAgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWzAsIDAsIDFdKSxcclxuICAgICAgICAgIHJ6ICogZGF0YS5mYWN0b3IudmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBtbSA9IExvbmdhbi5NYXRyaXg0Lm11bHRpcGx5KG1tMSwgbW0yKTtcclxuICAgICAgICBtbSA9IExvbmdhbi5NYXRyaXg0Lm11bHRpcGx5KG1tLCBtbTMpO1xyXG4gICAgICAgIC8vIOiOt+WPliB444CBeeOAgXrlgY/np7tcclxuICAgICAgICAvLyDljZXkvY3ovazmjaLvvIxjbei9rG0uXHJcbiAgICAgICAgTG9uZ2FuLk1hdHJpeDQudHJhbnNsYXRlKFxyXG4gICAgICAgICAgbW0sXHJcbiAgICAgICAgICAoZHggKiBkYXRhLmZhY3Rvci52YWx1ZSkgLyAxMDAsXHJcbiAgICAgICAgICAoZHkgKiBkYXRhLmZhY3Rvci52YWx1ZSkgLyAxMDAsXHJcbiAgICAgICAgICAoZHogKiBkYXRhLmZhY3Rvci52YWx1ZSkgLyAxMDBcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIOW+l+WIsOepuumXtOeCueacgOaWsOeahOS9jee9ri5cclxuICAgICAgICBsZXQgcG9pbnQgPSBMb25nYW4uTWF0cml4NC5tdWx0aXBseVBvaW50KG1tLCBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9uKSk7XHJcbiAgICAgICAgbmV3UG9zaXRpb25zLnB1c2goW3BvaW50WzBdLCBwb2ludFsxXSwgcG9pbnRbMl1dKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmF0aW9zW2pvaW50TmFtZV0gPSBlbGVtZW50Lk1lbVBsYXN0aWNSYXRpbztcclxuICAgICAgaWYgKHJhdGlvc1tqb2ludE5hbWVdKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coam9pbnROYW1lICsgXCI6XCIgKyByYXRpb3Nbam9pbnROYW1lXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vY29uc29sZS5sb2coXCJuZXdQb3NpdGlvbnMtLS1cIiwgbmV3UG9zaXRpb25zKTtcclxuICAgIHRoaXMuZGlzdG9ydGlvblBvc2l0aW9ucyhqb2ludHMsIG5ld1Bvc2l0aW9ucywgc2hvd1NoaXBJbXBhY3RSTywgcmF0aW9zKTtcclxuXHJcbiAgICBsZXQgc3ViTWVtYmVyTm9kZSA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXHJcbiAgICAgIHNob3dTaGlwSW1wYWN0Uk8sXHJcbiAgICAgIFwic3ViTWVtYmVyTm9kZVwiXHJcbiAgICApO1xyXG4gICAgaWYgKHN1Yk1lbWJlck5vZGUpIHtcclxuICAgICAgbGV0IGlybyA9IHRoaXMudmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChzdWJNZW1iZXJOb2RlKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby5zZWdtZW50LmNvbG9yLnNldExpbmUoT2JqZWN0Q29sb3IubWVtYmVyTGluZUNvbG9yKTtcclxuICAgICAgICBpcm8uc2VnbWVudC5yZW5kZXJpbmdPcHRpb25zLnNldExvY2tMaW5lQ29sb3IoMSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJNZW1iZXJOb2RlLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBtZW1iZXIgPSBzdWJNZW1iZXJOb2RlLmNoaWxkT2JqZWN0c1tpXSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKG1lbWJlciBpbnN0YW5jZW9mIE1lbWJlck9iamVjdCkge1xyXG4gICAgICAgICAgaWYgKG1lbWJlci5mYWNlQ29sb3IpIHtcclxuICAgICAgICAgICAgbWVtYmVyLmlzRG90dGVkTGluZSA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG1lbWJlci5zZWdtZW50LmNvbG9yLmxpbmVDb2xvciA9IE9iamVjdENvbG9yLm1lbWJlckxpbmVDb2xvcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG1lbWJlci5zZXROZWVkVXBkYXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVTaGlwSW1wYWN0Uk8oKSB7XHJcbiAgICBsZXQgYWZ0ZXJ0cmVhdG1lbnRSTyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZShcclxuICAgICAgXCLlkI7lpITnkIborqHnrpfnu5PmnpxcIlxyXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG4gICAgbGV0IHNob3dTaGlwSW1wYWN0Uk8gPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICBhZnRlcnRyZWF0bWVudFJPLFxyXG4gICAgICBcIuiIueaSnuWIhuaekOWcqOS9jeaYvuekulwiXHJcbiAgICApO1xyXG4gICAgaWYgKHNob3dTaGlwSW1wYWN0Uk8pIHtcclxuICAgICAgc2hvd1NoaXBJbXBhY3RSTy5jaGlsZE9iamVjdHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW0uZGVsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgc2hvd1NoaXBJbXBhY3RSTy5kZWxldGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v5pKt5pS+XHJcbiAgcGxheSgpIHtcclxuICAgIGxldCBkYXRhID0gdGhpcy5jb25maWcucHJvcGVydGllcy5pdGVtc1swXS5kYXRhO1xyXG5cclxuICAgIC8v5p6E5Lu2L+advyDorr7nva5cclxuICAgIHRoaXMuZGlzcGxheVBsYXRlc0FuZE1lbWJlcnMoKTtcclxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhLklOQy52YWx1ZSA+IHRoaXMuc2VsZWN0aW9ucy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRhdGEuSU5DLnZhbHVlID0gMDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaGFuZGxlU3RydWN0dXJhbERpc3RvcnRpb24oKTtcclxuXHJcbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGxldCBzdGVwSW5kZXggPSBOdW1iZXIodGhpcy5jb25maWcucHJvcGVydGllcy5pdGVtc1swXS5kYXRhLklOQy52YWx1ZSk7XHJcbiAgICAgIHN0ZXBJbmRleCsrO1xyXG4gICAgICBpZiAoc3RlcEluZGV4ID4gdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZW91dCk7XHJcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGxheUZpbmlzaEV2ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLnBsYXlGaW5pc2hFdmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YS5JTkMudmFsdWUgPSBzdGVwSW5kZXg7XHJcbiAgICAgIHRoaXMuaGFuZGxlU3RydWN0dXJhbERpc3RvcnRpb24oKTtcclxuICAgIH0sICgyIC0gZGF0YS5zcGVlZC52YWx1ZSkgKiAxMDAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaaguWBnFxyXG4gICAqL1xyXG4gIHBhdXNlKCkge1xyXG4gICAgY29uc29sZS5sb2coXCJwYXVzZS4uLi4uLi4uLi4uLi4uLi4uXCIpO1xyXG4gICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMudGltZW91dCk7XHJcbiAgICAgIHRoaXMudGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDpgJ/luqYrXHJcbiAgICovXHJcbiAgc3BlZWRBZGQoKSB7XHJcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lb3V0KTtcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0gdGhpcy5jb25maWcucHJvcGVydGllcy5pdGVtc1swXS5kYXRhO1xyXG4gICAgaWYgKGRhdGE/LnNwZWVkLnZhbHVlID4gMC4xKSB7XHJcbiAgICAgIGRhdGEuc3BlZWQudmFsdWUgPSAoTnVtYmVyKGRhdGEuc3BlZWQudmFsdWUpICsgMC4xKS50b0ZpeGVkKDEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIi0tLS0tLTFcIik7XHJcbiAgICAgIHRoaXMucGxheSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6YCf5bqmLVxyXG4gICAqL1xyXG4gIHNwZWVkQ3V0KCkge1xyXG4gICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMudGltZW91dCk7XHJcbiAgICB9XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuICAgIGlmIChkYXRhPy5zcGVlZC52YWx1ZSA8IDIpIHtcclxuICAgICAgZGF0YS5zcGVlZC52YWx1ZSA9IChOdW1iZXIoZGF0YS5zcGVlZC52YWx1ZSkgLSAwLjEpLnRvRml4ZWQoMSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiLS0tLS0tMVwiKTtcclxuICAgICAgdGhpcy5wbGF5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDnrKzkuIDmraVcclxuICAgKi9cclxuICBmaXJzdFN0ZXAoKSB7XHJcbiAgICB0aGlzLnBhdXNlKCk7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuICAgIGRhdGEuSU5DLnZhbHVlID0gMDtcclxuICAgIHRoaXMuaGFuZGxlU3RydWN0dXJhbERpc3RvcnRpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOacgOWQjuS4gOatpVxyXG4gICAqL1xyXG4gIGxhc3RTdGVwKCkge1xyXG4gICAgdGhpcy5wYXVzZSgpO1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNvbmZpZy5wcm9wZXJ0aWVzLml0ZW1zWzBdLmRhdGE7XHJcbiAgICBkYXRhLklOQy52YWx1ZSA9IHRoaXMuc2VsZWN0aW9ucy5sZW5ndGggLSAxO1xyXG4gICAgdGhpcy5oYW5kbGVTdHJ1Y3R1cmFsRGlzdG9ydGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gam9pbnRzIOepuumXtOeCueWIl+ihqFxyXG4gICAqIEBwYXJhbSBuZXdQb3NpdGlvbnMg56m66Ze054K55a+55bqU55qE5paw5L2N572u5YiX6KGoLlxyXG4gICAqIEBwYXJhbSBkaXN0b3J0aW9uUk9cclxuICAgKi9cclxuICBkaXN0b3J0aW9uUG9zaXRpb25zKFxyXG4gICAgam9pbnRzOiBKb2ludE9iamVjdFtdLFxyXG4gICAgbmV3UG9zaXRpb25zOiBudW1iZXJbXVtdLFxyXG4gICAgZGlzdG9ydGlvblJPOiBEZXNpZ25CYXNlT2JqZWN0LFxyXG4gICAgcmF0aW9zXHJcbiAgKSB7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuICAgIGxldCBpc0Rpc3BsYXkyID0gZGF0YS5kaXNwbGF5TWVtYmVyLnZhbHVlO1xyXG4gICAgbGV0IGluYyA9IE51bWJlcihkYXRhLklOQy52YWx1ZSk7XHJcblxyXG4gICAgbGV0IGpvaW50SWRNYXBDbG9uZU9iajogeyBbaWQ6IHN0cmluZ106IEpvaW50T2JqZWN0IH0gPSB7fTtcclxuICAgIGxldCBhZGRlZE1lbWJlck9iamVjdHMgPSBuZXcgQXJyYXk8RGVzaWduQmFzZU9iamVjdD4oKTtcclxuICAgIGxldCBhZGRlZFBsYXRlT2JqZWN0cyA9IG5ldyBBcnJheTxEZXNpZ25CYXNlT2JqZWN0PigpO1xyXG4gICAgbGV0IGFkZGVkUGlsZU9iamVjdHMgPSBuZXcgQXJyYXk8RGVzaWduQmFzZU9iamVjdD4oKTtcclxuXHJcbiAgICBsZXQgc3ViUGxhdGVOb2RlID0gbmV3IERlc2lnbkJhc2VPYmplY3QoKTtcclxuICAgIHN1YlBsYXRlTm9kZS5uYW1lID0gXCJzdWJQbGF0ZU5vZGVcIjtcclxuICAgIHRoaXMucHJvY2Vzcy5hZGRSZW5kZXJPYmplY3QoZGlzdG9ydGlvblJPLCBzdWJQbGF0ZU5vZGUpO1xyXG5cclxuICAgIGxldCBzdWJNZW1iZXJOb2RlID0gbmV3IERlc2lnbkJhc2VPYmplY3QoKTtcclxuICAgIHN1Yk1lbWJlck5vZGUubmFtZSA9IFwic3ViTWVtYmVyTm9kZVwiO1xyXG4gICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChkaXN0b3J0aW9uUk8sIHN1Yk1lbWJlck5vZGUpO1xyXG5cclxuICAgIGxldCBzdWJQaWxlTm9kZSA9IG5ldyBEZXNpZ25CYXNlT2JqZWN0KCk7XHJcbiAgICBzdWJQaWxlTm9kZS5uYW1lID0gXCJzdWJQaWxlTm9kZVwiO1xyXG4gICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChkaXN0b3J0aW9uUk8sIHN1YlBpbGVOb2RlKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGpvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgam9pbnQgPSBqb2ludHNbaV07XHJcblxyXG4gICAgICBsZXQgY2xvbmVPYmogPSB0aGlzLnZpZXdlci5wcm9jZXNzLmNsb25lTWFuYWdlci5jbG9uZU9iamVjdChcclxuICAgICAgICBqb2ludFxyXG4gICAgICApIGFzIEpvaW50T2JqZWN0O1xyXG4gICAgICAvLyDorr7nva7kvY3np7tcclxuICAgICAgY2xvbmVPYmoucG9zaXRpb24gPSBuZXdQb3NpdGlvbnNbaV07XHJcblxyXG4gICAgICBjbG9uZU9iai5idXNpbmVzc1N0YXRlID0gQnVzaW5lc3NTdGF0ZS5MaXZpbmc7XHJcbiAgICAgIGNsb25lT2JqLnNldE5lZWRVcGRhdGUoKTtcclxuXHJcbiAgICAgIGpvaW50SWRNYXBDbG9uZU9ialtqb2ludC5pZF0gPSBjbG9uZU9iajtcclxuICAgICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChkaXN0b3J0aW9uUk8sIGNsb25lT2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbWVtYmVyTm9kZSA9IHRoaXMucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5tZW1iZXJOb2RlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW1iZXJOb2RlLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgbWVtYmVyID0gbWVtYmVyTm9kZS5jaGlsZE9iamVjdHNbaV0gYXMgTWVtYmVyT2JqZWN0O1xyXG5cclxuICAgICAgbGV0IGNsb25lT2JqID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5jbG9uZU1hbmFnZXIuY2xvbmVPYmplY3QoXHJcbiAgICAgICAgbWVtYmVyXHJcbiAgICAgICkgYXMgTWVtYmVyT2JqZWN0O1xyXG5cclxuICAgICAgaWYgKCFpc0Rpc3BsYXkyKSB7XHJcbiAgICAgICAgY2xvbmVPYmouZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IubWVtYmVyRmFjZUNvbG9yO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCByYXRpbzEgPSBOdW1iZXIocmF0aW9zW2Nsb25lT2JqLnN0YXJ0Lm5hbWVdKTtcclxuICAgICAgICBsZXQgcmF0aW8yID0gTnVtYmVyKHJhdGlvc1tjbG9uZU9iai5lbmQubmFtZV0pO1xyXG4gICAgICAgIGxldCBjb2xvclJlc3VsdCA9IHRoaXMuY3V0bGluZU9iamVjdC5nZXRDb2xvcnNCeURhdGFzKFxyXG4gICAgICAgICAgW3JhdGlvMSwgcmF0aW8yXSxcclxuICAgICAgICAgIHRoaXMuY3V0bGluZU9iamVjdC51Y1JhbmdlcyxcclxuICAgICAgICAgIHRoaXMuY3V0bGluZU9iamVjdC51Y1Jhbmdlc0NvbG9yc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgY2xvbmVPYmouc3RhcnRDb2xvciA9IFtcclxuICAgICAgICAgIGNvbG9yUmVzdWx0WzBdLFxyXG4gICAgICAgICAgY29sb3JSZXN1bHRbMV0sXHJcbiAgICAgICAgICBjb2xvclJlc3VsdFsyXSxcclxuICAgICAgICAgIGNvbG9yUmVzdWx0WzNdLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgY2xvbmVPYmouZW5kQ29sb3IgPSBbXHJcbiAgICAgICAgICBjb2xvclJlc3VsdFs0XSxcclxuICAgICAgICAgIGNvbG9yUmVzdWx0WzVdLFxyXG4gICAgICAgICAgY29sb3JSZXN1bHRbNl0sXHJcbiAgICAgICAgICBjb2xvclJlc3VsdFs3XSxcclxuICAgICAgICBdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjbG9uZU9iai5zdGFydCA9IGpvaW50SWRNYXBDbG9uZU9ialtjbG9uZU9iai5zdGFydC5pZF07XHJcbiAgICAgIGNsb25lT2JqLmVuZCA9IGpvaW50SWRNYXBDbG9uZU9ialtjbG9uZU9iai5lbmQuaWRdO1xyXG5cclxuICAgICAgY2xvbmVPYmouYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuTGl2aW5nO1xyXG4gICAgICBpZiAoY2xvbmVPYmouc3RhcnQgJiYgY2xvbmVPYmouZW5kKSB7XHJcbiAgICAgICAgYWRkZWRNZW1iZXJPYmplY3RzLnB1c2goY2xvbmVPYmopO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBpbGVOb2RlID0gdGhpcy5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLnBpbGVOb2RlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaWxlTm9kZS5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBpbGUgPSBwaWxlTm9kZS5jaGlsZE9iamVjdHNbaV0gYXMgUGlsZU9iamVjdDtcclxuXHJcbiAgICAgIGxldCBjbG9uZU9iaiA9IHRoaXMudmlld2VyLnByb2Nlc3MuY2xvbmVNYW5hZ2VyLmNsb25lT2JqZWN0KFxyXG4gICAgICAgIHBpbGVcclxuICAgICAgKSBhcyBQaWxlT2JqZWN0O1xyXG5cclxuICAgICAgY2xvbmVPYmouZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IubWVtYmVyRmFjZUNvbG9yO1xyXG4gICAgICBjbG9uZU9iai5zdGFydCA9IGpvaW50SWRNYXBDbG9uZU9ialtjbG9uZU9iai5zdGFydC5pZF07XHJcbiAgICAgIGNsb25lT2JqLmVuZCA9IGpvaW50SWRNYXBDbG9uZU9ialtjbG9uZU9iai5lbmQuaWRdO1xyXG5cclxuICAgICAgY2xvbmVPYmouYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuTGl2aW5nO1xyXG4gICAgICBpZiAoY2xvbmVPYmouc3RhcnQgJiYgY2xvbmVPYmouZW5kKSB7XHJcbiAgICAgICAgYWRkZWRQaWxlT2JqZWN0cy5wdXNoKGNsb25lT2JqKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGF0ZU5vZGUgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbGF0ZU5vZGUuY2hpbGRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwbGF0ZSA9IHBsYXRlTm9kZS5jaGlsZE9iamVjdHNbaV0gYXMgUGxhdGVPYmplY3Q7XHJcbiAgICAgIGxldCBjbG9uZU9iaiA9IHRoaXMudmlld2VyLnByb2Nlc3MuY2xvbmVNYW5hZ2VyLmNsb25lT2JqZWN0KFxyXG4gICAgICAgIHBsYXRlXHJcbiAgICAgICkgYXMgUGxhdGVPYmplY3Q7XHJcblxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNsb25lT2JqLmpvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGNsb25lT2JqLmpvaW50c1tqXSA9IGpvaW50SWRNYXBDbG9uZU9ialtwbGF0ZS5qb2ludHNbal0uaWRdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjbG9uZU9iai5idXNpbmVzc1N0YXRlID0gQnVzaW5lc3NTdGF0ZS5MaXZpbmc7XHJcbiAgICAgIGFkZGVkUGxhdGVPYmplY3RzLnB1c2goY2xvbmVPYmopO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkZWRQbGF0ZU9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IG9iaiA9IGFkZGVkUGxhdGVPYmplY3RzW2ldO1xyXG4gICAgICBvYmouc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICB0aGlzLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KHN1YlBsYXRlTm9kZSwgb2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFkZGVkTWVtYmVyT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgb2JqID0gYWRkZWRNZW1iZXJPYmplY3RzW2ldO1xyXG4gICAgICBvYmouc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICB0aGlzLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KHN1Yk1lbWJlck5vZGUsIG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRlZFBpbGVPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBvYmogPSBhZGRlZFBpbGVPYmplY3RzW2ldO1xyXG4gICAgICBvYmouc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICB0aGlzLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KHN1YlBpbGVOb2RlLCBvYmopO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6ZqQ6JeP5Y6f57uT5p6EXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbnZpc2libGVTaGFwZSgpIHtcclxuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlcjtcclxuXHJcbiAgICBsZXQgam9pbnRzID0gdGhpcy5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLmpvaW50Tm9kZTtcclxuICAgIGpvaW50cy5jaGlsZE9iamVjdHMuZm9yRWFjaCgocm8pID0+IHtcclxuICAgICAgbGV0IGlybyA9IHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qocm8pO1xyXG4gICAgICBpZiAoaXJvKSB7XHJcbiAgICAgICAgaXJvLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IG1lbWJlcnMgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIubWVtYmVyTm9kZTtcclxuICAgIG1lbWJlcnMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBwbGF0ZXMgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlO1xyXG4gICAgcGxhdGVzLmNoaWxkT2JqZWN0cy5mb3JFYWNoKChybykgPT4ge1xyXG4gICAgICBsZXQgaXJvID0gdmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChybyk7XHJcbiAgICAgIGlmIChpcm8pIHtcclxuICAgICAgICBpcm8udmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgcGlsZXMgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGlsZU5vZGU7XHJcbiAgICBwaWxlcy5jaGlsZE9iamVjdHMuZm9yRWFjaCgocm8pID0+IHtcclxuICAgICAgbGV0IGlybyA9IHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qocm8pO1xyXG4gICAgICBpZiAoaXJvKSB7XHJcbiAgICAgICAgaXJvLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlj5bmtojpmpDol4/ljp/nu5PmnoRcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFySW52aXNpYmxlU2hhcGUoKSB7XHJcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXI7XHJcblxyXG4gICAgbGV0IGpvaW50cyA9IHRoaXMucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5qb2ludE5vZGU7XHJcbiAgICBqb2ludHMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IG1lbWJlcnMgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIubWVtYmVyTm9kZTtcclxuICAgIG1lbWJlcnMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHBsYXRlcyA9IHRoaXMucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5wbGF0ZU5vZGU7XHJcbiAgICBwbGF0ZXMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHBpbGVzID0gdGhpcy5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLnBpbGVOb2RlO1xyXG4gICAgcGlsZXMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmmL7npLov6ZqQ6JePIOadvy/mnYbku7ZcclxuICAgKiBAcGFyYW0gaXNEaXNwbGF5MSDmmK/lkKbmmL7npLrmnb9cclxuICAgKiBAcGFyYW0gaXNEaXNwbGF5MiDmmK/lkKbmmL7npLrmnYbku7ZcclxuICAgKi9cclxuICBkaXNwbGF5UGxhdGVzQW5kTWVtYmVycygpIHtcclxuICAgIHRoaXMuaW52aXNpYmxlU2hhcGUoKTtcclxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hDdXRsaW5lKCkge1xyXG4gICAgLy8g5pi+56S65Zu+5L6LXHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuICAgIGxldCBpbmMgPSBOdW1iZXIoZGF0YS5JTkMudmFsdWUpO1xyXG5cclxuXHJcbiAgICAgIGxldCBmYWN0b3IgPSBkYXRhLmZhY3Rvci52YWx1ZTtcclxuICAgICAgbGV0IGxvZGFjYXNlID0gdGhpcy5wb3N0UmVzdWx0W051bWJlcihpbmMpICsgMV1bMF0uTG9hZENhc2U7XHJcbiAgICAgIGxldCBsb2FkRmFjdG9yID0gdGhpcy5zaGlwSW1wYWN0RmFjdG9yW051bWJlcihpbmMpICsgMV1bMF0uTG9hZEZhY3RvcjtcclxuICAgICAgbGV0IHNwYWNlID0gXCIgICAgIFwiO1xyXG4gICAgICBsZXQgbmV4dExpbmUgPSBcIlxcblwiO1xyXG5cclxuICAgICAgbGV0IHJhbmRvbVZhbHVlID0gKChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDIwMCk7XHJcbiAgICAgIGxldCB2YWx1ZSA9ICgyODUxLjIzICsgcmFuZG9tVmFsdWUpLnRvRml4ZWQoMik7XHJcblxyXG4gICAgICBsZXQgY3V0bGluZUluZm8gPVxyXG4gICAgICAgIFwi6I236L295q2lXCIgK1xyXG4gICAgICAgIHNwYWNlICtcclxuICAgICAgICBpbmMgK1xyXG4gICAgICAgIG5leHRMaW5lICtcclxuICAgICAgICBcIuahqeWfuuiNt+i9veezu+aVsFwiICtcclxuICAgICAgICBzcGFjZSArXHJcbiAgICAgICAgbG9hZEZhY3RvciArXHJcbiAgICAgICAgbmV4dExpbmUgK1xyXG4gICAgICAgIFwi5Z+65bqV5Ymq5YqbXCIgK1xyXG4gICAgICAgIHNwYWNlICtcclxuICAgICAgICB2YWx1ZSArXHJcbiAgICAgICAgbmV4dExpbmUgK1xyXG4gICAgICAgIFwi5Y+Y5b2i57O75pWwXCIgK1xyXG4gICAgICAgIHNwYWNlICtcclxuICAgICAgICBmYWN0b3IgK1xyXG4gICAgICAgIG5leHRMaW5lICtcclxuICAgICAgICBcIuiNt+i9veW3peWGtVwiICtcclxuICAgICAgICBzcGFjZSArXHJcbiAgICAgICAgbG9kYWNhc2U7XHJcblxyXG4gICAgICBzdG9yZS5zdGF0ZS5pbmZvID0gY3V0bGluZUluZm87XHJcbiAgICBcclxuXHJcbiAgICBsZXQgYWZ0ZXJ0cmVhdG1lbnRSTyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZShcclxuICAgICAgXCLlkI7lpITnkIborqHnrpfnu5PmnpxcIlxyXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG4gICAgbGV0IHNob3dTaGlwSW1wYWN0Uk8gPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICBhZnRlcnRyZWF0bWVudFJPLFxyXG4gICAgICBcIuiIueaSnuWIhuaekOWcqOS9jeaYvuekulwiXHJcbiAgICApIGFzIERlc2lnbkJhc2VPYmplY3Q7XHJcblxyXG4gICAgc2hvd1NoaXBJbXBhY3RSTyA9IG5ldyBEZXNpZ25CYXNlT2JqZWN0KCk7XHJcbiAgICBzaG93U2hpcEltcGFjdFJPLm5hbWUgPSBcIuiIueaSnuWIhuaekOWcqOS9jeaYvuekulwiO1xyXG4gICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChhZnRlcnRyZWF0bWVudFJPLCBzaG93U2hpcEltcGFjdFJPKTtcclxuICAgIHRoaXMuY3V0bGluZU9iamVjdCA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXHJcbiAgICAgIHNob3dTaGlwSW1wYWN0Uk8sXHJcbiAgICAgIFwi6Ii55pKe5YiG5p6Q5Zu+5L6L5pWw5o2uXCJcclxuICAgICkgYXMgQ3V0bGluZVBvc3RKb2ludFVDT2JqZWN0O1xyXG5cclxuICAgIGlmICghdGhpcy5jdXRsaW5lT2JqZWN0KSB7XHJcbiAgICAgIC8vIOa3u+WKoOWbvuS+i+aVsOaNrlJPKOimgeaMgeS5heWMluS/neWtmCkuXHJcbiAgICAgIHRoaXMuY3V0bGluZU9iamVjdCA9IG5ldyBDdXRsaW5lUG9zdEpvaW50VUNPYmplY3QoKTtcclxuICAgICAgdGhpcy5jdXRsaW5lT2JqZWN0Lm5hbWUgPSBcIuiIueaSnuWIhuaekOWbvuS+i1wiO1xyXG4gICAgICB0aGlzLmN1dGxpbmVPYmplY3QuYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuQ3JlYXRpbmc7XHJcbiAgICAgIHRoaXMuY3V0bGluZU9iamVjdC50aXRsZSA9IFwi6Ii55pKe5YiG5p6QXCI7XHJcbiAgICAgIHRoaXMuY3V0bGluZU9iamVjdC51Y1JhbmdlcyA9IFswLCAwLjI1LCAwLjUsIDAuNzUsIDEuMF07XHJcbiAgICAgIHRoaXMuY3V0bGluZU9iamVjdC51Y1Jhbmdlc0NvbG9ycyA9IFtcclxuICAgICAgICAwLjgyLCAwLjgyLCAwLjgyLCAxLCAwLjUsIDAuNSwgMC41LCAxLCAwLCAxLCAwLCAxLCAxLCAxLCAwLCAxLCAxLCAwLCAwLFxyXG4gICAgICAgIDEsXHJcbiAgICAgIF07XHJcblxyXG4gICAgICB0aGlzLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KHNob3dTaGlwSW1wYWN0Uk8sIHRoaXMuY3V0bGluZU9iamVjdCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvL1xyXG4gICAgfVxyXG4gICAgbGV0IGNvbXBvbmVudCA9IExlZ2VuZE1hbmFnZS5jcmVhdGUoXHJcbiAgICAgIHRoaXMuZWxlbWVudEtleSxcclxuICAgICAgdGhpcy5jdXRsaW5lT2JqZWN0LmdlQ3V0bGluZSgpLFxyXG4gICAgICBcIuWhkeaAp+avlOS+i1wiLFxyXG4gICAgICBcIuminOiJslwiLFxyXG4gICAgICBcIuavlOS+i+WAvFwiXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkYXRhUmVxdWVzdGVkKCkge1xyXG4gICAgbGV0IHBvc3RJbnRlcmZhY2VNYW5hZ2VyID0gdGhpcy52aWV3ZXIucG9zdEludGVyZmFjZU1hbmFnZXI7XHJcbiAgICB0aGlzLnBvc3RSZXN1bHQgPSBwb3N0SW50ZXJmYWNlTWFuYWdlci5zaGlwSW1wYWN0O1xyXG4gICAgdGhpcy5zaGlwSW1wYWN0RmFjdG9yID0gcG9zdEludGVyZmFjZU1hbmFnZXIuc2hpcEltcGFjdEZhY3RvcjtcclxuXHJcbiAgICBsZXQgY291bnRlciA9IDA7XHJcbiAgICBmb3IgKGxldCBpIG9mIE9iamVjdC5rZXlzKHBvc3RJbnRlcmZhY2VNYW5hZ2VyLnNoaXBJbXBhY3QpKSB7XHJcbiAgICAgIGNvdW50ZXIrKztcclxuICAgIH1cclxuICAgIGlmIChjb3VudGVyID09PSAwKSB7XHJcbiAgICAgIE1lc3NhZ2UuaW5mbyhcclxuICAgICAgICBcIuafpeivolJfQ09MTEFQU0VERUZMRUNUSU9OU0FORFJFQUNUSU9ORk9SQ0Xooajov5Tlm57mlbDmja7kuLrnqbrvvIzor7fmo4Dmn6VEQuaWh+S7tlwiXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbnMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgb2YgT2JqZWN0LmtleXMocG9zdEludGVyZmFjZU1hbmFnZXIuc2hpcEltcGFjdCkpIHtcclxuICAgICAgaWYgKHBvc3RJbnRlcmZhY2VNYW5hZ2VyLnNoaXBJbXBhY3RbaV1bMF0pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbnMucHVzaChwb3N0SW50ZXJmYWNlTWFuYWdlci5zaGlwSW1wYWN0W2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpbmlzaEV2ZW50KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiZXhlY3V0ZSBmaW5pc2hFdmVudCBsYXN0IHN0ZXA6XCIgKyB0aGlzLnNlbGVjdGlvbnMubGVuZ3RoKTtcclxuICAgICAgdGhpcy5maW5pc2hFdmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRTY2VuZSgpIHtcclxuICAgIHN0b3JlLnN0YXRlLmluZm8gPSBudWxsO1xyXG4gICAgTGVnZW5kTWFuYWdlLmRlc3RvcnkodGhpcy5lbGVtZW50S2V5KTtcclxuICAgIHRoaXMuZGVsZXRlU2hpcEltcGFjdFJPKCk7XHJcbiAgICB0aGlzLmNsZWFySW52aXNpYmxlU2hhcGUoKTtcclxuICAgIGxldCBwb3N0SW50ZXJmYWNlTWFuYWdlciA9IHRoaXMudmlld2VyLnBvc3RJbnRlcmZhY2VNYW5hZ2VyO1xyXG4gICAgcG9zdEludGVyZmFjZU1hbmFnZXIuYWN0aXZlX2Rpc3RvcnRpb24gPSBmYWxzZTtcclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQW9CQTtBQUFBO0FBcUJBO0FBQUE7QUFwQkE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUlBOztBQUlBO0FBRUE7QUFBQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEwQkE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUdBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUdBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUlBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7O0FBR0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFHQTs7QUFHQTtBQUVBO0FBS0E7QUFDQTtBQUlBOztBQUVBO0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFHQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFJQTtBQUlBO0FBSUE7QUFDQTtBQUdBO0FBT0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7OztBQUlBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFHQTs7O0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFHQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7O0FBR0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUtBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBS0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFRQTtBQU1BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBSUE7QUFFQTtBQUNBO0FBRUE7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBTUE7O0FBUUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTs7O0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTs7QUFHQTtBQUNBOztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFxQkE7QUFHQTtBQUdBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFHQTtBQU9BO0FBRUE7O0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUdBOztBQUdBOztBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQUlBO0FBQ0E7QUFDQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBOzs7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./packages/caeDesign/src/viewerWrapper/commands/aftertreatment/showShipImpact/commandShowShipImpact.ts\n");
|
|
5853
|
+
eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__, exports, __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\"), __webpack_require__(/*! ../../../../gsDevFx/operators/cameraMouse */ \"./packages/caeDesign/src/gsDevFx/operators/cameraMouse.ts\"), __webpack_require__(/*! ../../../../gsDevFx/operators/cAEObjectPreSelector */ \"./packages/caeDesign/src/gsDevFx/operators/cAEObjectPreSelector.ts\"), __webpack_require__(/*! ../../../../gsDevFx/operators/caeObjectSelector */ \"./packages/caeDesign/src/gsDevFx/operators/caeObjectSelector.ts\"), __webpack_require__(/*! ../../../../gsDevFx/commands/commandSelect */ \"./packages/caeDesign/src/gsDevFx/commands/commandSelect.ts\"), __webpack_require__(/*! ../../commandComponent */ \"./packages/caeDesign/src/viewerWrapper/commands/commandComponent.ts\"), __webpack_require__(/*! ./showShipImpactConfig */ \"./packages/caeDesign/src/viewerWrapper/commands/aftertreatment/showShipImpact/showShipImpactConfig.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../../../../store */ \"./packages/caeDesign/src/store/index.ts\"), __webpack_require__(/*! gs-ceec-design */ \"./packages/ceecDesign/src/index.ts\"), __webpack_require__(/*! ../../../../gsDevFx/objects/caeObjects/memberObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/memberObject.ts\"), __webpack_require__(/*! ../../../../gsDevFx/objects/caeObjects/jointObject */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/jointObject.ts\"), __webpack_require__(/*! gs-bim-air */ \"./node_modules/gs-bim-air/lib/BimAir.umd.min.js\"), __webpack_require__(/*! ../../../../gsDevFx/managers/interfaceManagers/commonInterfaceManager */ \"./packages/caeDesign/src/gsDevFx/managers/interfaceManagers/commonInterfaceManager.ts\"), __webpack_require__(/*! element-ui */ \"./node_modules/element-ui/lib/element-ui.common.js\"), __webpack_require__(/*! ../../../../viewerWrapper/module/legendManage */ \"./packages/caeDesign/src/viewerWrapper/module/legendManage.ts\"), __webpack_require__(/*! ../../../../gsDevFx/objects/pretreatmentObjects/cutlinePostJointUCObject */ \"./packages/caeDesign/src/gsDevFx/objects/pretreatmentObjects/cutlinePostJointUCObject.ts\"), __webpack_require__(/*! ../../../../gsDevFx/objects/caeObjects/objectColors */ \"./packages/caeDesign/src/gsDevFx/objects/caeObjects/objectColors.ts\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (require, exports, tslib_1, cameraMouse_1, cAEObjectPreSelector_1, caeObjectSelector_1, commandSelect_1, commandComponent_1, showShipImpactConfig_1, gs_ceec_design_1, store_1, gs_ceec_design_2, memberObject_1, jointObject_1, gs_bim_air_1, commonInterfaceManager_1, element_ui_1, legendManage_1, cutlinePostJointUCObject_1, objectColors_1) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n showShipImpactConfig_1 = tslib_1.__importDefault(showShipImpactConfig_1);\n store_1 = tslib_1.__importDefault(store_1);\n var CommandShowShipImpact = function (_super) {\n tslib_1.__extends(CommandShowShipImpact, _super);\n function CommandShowShipImpact() {\n var _this = _super.call(this) || this;\n _this.typeName = \"CommandShowShipImpact\";\n _this.timeout = null;\n _this.postResult = null;\n _this.shipImpactFactor = null;\n _this.selections = [];\n _this.cutlineObject = null;\n _this.elementKey = \"cutline\";\n _this.finishEvent = null;\n _this.playFinishEvent = null;\n return _this;\n }\n CommandShowShipImpact.prototype.begin = function () {\n var _this = this;\n this.viewer.commonInterfaceManager.colorSwitch(commonInterfaceManager_1.SwitchColorDivide.Cancel);\n this.changeOperators();\n console.log(\"CommandShowShipImpact\");\n this.config = new showShipImpactConfig_1.default();\n this.config.show();\n var postInterfaceManager = this.viewer.postInterfaceManager;\n if (postInterfaceManager.getFinish_shipImpact) {\n if (postInterfaceManager.shipImpact) {\n this.dataRequested();\n } else {\n element_ui_1.Message.info(\"R_COLLAPSEDEFLECTIONSANDREACTIONFORCE表不存在,请检查DB文件\");\n return;\n }\n } else {\n if (!postInterfaceManager.message_shipImpact) {\n postInterfaceManager.message_shipImpact = element_ui_1.Message.info({\n message: \"倒塌分析仍在请求DB数据,请等待请求完成.\",\n duration: 0,\n showClose: true\n });\n }\n postInterfaceManager.tip_shipImpact = true;\n postInterfaceManager.requested_shipImpact = function () {\n _this.dataRequested();\n };\n }\n var data = this.config.properties.items[0].data;\n data.displayPlate.value = true;\n data.displayMember.value = true;\n data.displayPSI.value = true;\n data.speed.value = 1.0;\n data.INC.value = 0;\n };\n CommandShowShipImpact.prototype.restore = function () {\n this.changeOperators();\n this.config.show();\n };\n CommandShowShipImpact.prototype.changeOperators = function () {\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.updateDisplay();\n this.viewer.operatorManager.clear();\n this.viewer.operatorManager.add(new cameraMouse_1.CameraMouse());\n this.preSelector = new cAEObjectPreSelector_1.CAEObjectPreSelector();\n this.viewer.operatorManager.add(this.preSelector);\n this.caeObjectSelector = new caeObjectSelector_1.CAEObjectSelector();\n this.viewer.operatorManager.add(this.caeObjectSelector);\n };\n CommandShowShipImpact.prototype.end = function () {\n var postInterfaceManager = this.viewer.postInterfaceManager;\n if (postInterfaceManager.message_shipImpact) {\n postInterfaceManager.message_shipImpact.close();\n postInterfaceManager.message_shipImpact = null;\n }\n this.config.hide();\n _super.prototype.end.call(this);\n this.resetScene();\n if (this.timeout) {\n clearInterval(this.timeout);\n this.timeout = null;\n }\n this.viewer.selectionManager.clearAllSelectionAndHighlight();\n this.viewer.updateDisplay();\n store_1.default.commit(\"structureTree/updateTreeData\", [this.viewer.structureTreeManager.rootNode]);\n var commandSelect = new commandSelect_1.CommandSelect();\n this.process.commandManager.execute(commandSelect);\n };\n CommandShowShipImpact.prototype.commandOk = function () {\n var postInterfaceManager = this.viewer.postInterfaceManager;\n if (!postInterfaceManager.getFinish_shipImpact) {\n element_ui_1.Message.info(\"仍在请求DB数据,请等待请求完成.\");\n postInterfaceManager.tip_shipImpact = true;\n return;\n }\n this.viewer.commonInterfaceManager.colorSwitch(commonInterfaceManager_1.SwitchColorDivide.Cancel);\n postInterfaceManager.resetOhterPostResult();\n if (this.timeout) {\n clearInterval(this.timeout);\n this.timeout = null;\n }\n this.handleStructuralDistortion();\n this.displayPlatesAndMembers();\n postInterfaceManager.active_shipImpact = true;\n };\n CommandShowShipImpact.prototype.handleStructuralDistortion = function () {\n var data = this.config.properties.items[0].data;\n var factor = data.factor.value;\n if (!factor) {\n data.tip.value = 1;\n console.log(\"tip: 1-Please enter a value.\");\n return;\n }\n if (Number(factor) <= 0 || Number(factor) > 10000) {\n data.tip.value = 2;\n console.log(\"tip: 2-Factor must be greater than 0 and less than or equal to 100.\");\n return;\n }\n var inc = data.INC.value;\n if (inc === null || Number(inc) < 0 || Number(inc) > this.selections.length) {\n data.tip.value = 3;\n console.log(\"tip: 3-INC must be greater than or equal to 0 and less than or equal to\" + this.selections.length);\n return;\n }\n inc = Number(inc);\n this.refreshCutline();\n data.tip.value = 0;\n console.log(\"tip: 0-Results have been displayed.\");\n this.deleteShipImpactRO();\n console.log(\"船撞分析在位显示\");\n console.log(\"stepIndex:\", data.INC.value);\n var aftertreatmentRO = this.viewer.process.findRenderObjectByName(\"后处理计算结果\");\n var showShipImpactRO = this.viewer.process.findCaeObjectByNameInChildObject(aftertreatmentRO, \"船撞分析在位显示\");\n if (!showShipImpactRO) {\n showShipImpactRO = new gs_ceec_design_1.DesignBaseObject();\n showShipImpactRO.businessState = gs_ceec_design_2.BusinessState.Creating;\n showShipImpactRO.name = \"船撞分析在位显示\";\n this.process.addRenderObject(aftertreatmentRO, showShipImpactRO);\n }\n showShipImpactRO.segment.clearAll();\n var selection_data = this.selections[Number(inc)];\n var joints = [];\n var newPositions = [];\n var ratios = [];\n for (var i = 0; i < selection_data.length; i++) {\n var element = selection_data[i];\n var jointName = element.JointName;\n var joint = this.viewer.process.findCaeObjectByNameInChildObject(this.viewer.process.caeRenderObjectTreeManager.jointNode, jointName);\n if (joint instanceof jointObject_1.JointObject) {\n var rx = element.RX;\n var ry = element.RY;\n var rz = element.RZ;\n var dx = element.DX;\n var dy = element.DY;\n var dz = element.DZ;\n joints.push(joint);\n var position = joint.position;\n var mm1 = gs_bim_air_1.Longan.Matrix4.rotate(new Float32Array([1, 0, 0]), rx * data.factor.value);\n var mm2 = gs_bim_air_1.Longan.Matrix4.rotate(new Float32Array([0, 1, 0]), ry * data.factor.value);\n var mm3 = gs_bim_air_1.Longan.Matrix4.rotate(new Float32Array([0, 0, 1]), rz * data.factor.value);\n var mm = gs_bim_air_1.Longan.Matrix4.multiply(mm1, mm2);\n mm = gs_bim_air_1.Longan.Matrix4.multiply(mm, mm3);\n gs_bim_air_1.Longan.Matrix4.translate(mm, dx * data.factor.value / 100, dy * data.factor.value / 100, dz * data.factor.value / 100);\n var point = gs_bim_air_1.Longan.Matrix4.multiplyPoint(mm, new Float32Array(position));\n newPositions.push([point[0], point[1], point[2]]);\n }\n ratios[jointName] = element.MemPlasticRatio;\n if (ratios[jointName]) {\n console.log(jointName + \":\" + ratios[jointName]);\n }\n }\n this.distortionPositions(joints, newPositions, showShipImpactRO, ratios);\n var subMemberNode = this.viewer.process.findCaeObjectByNameInChildObject(showShipImpactRO, \"subMemberNode\");\n if (subMemberNode) {\n var iro = this.viewer.findInstanceObject(subMemberNode);\n if (iro) {\n iro.segment.color.setLine(objectColors_1.ObjectColor.memberLineColor);\n iro.segment.renderingOptions.setLockLineColor(1);\n }\n for (var i = 0; i < subMemberNode.childObjects.length; i++) {\n var member = subMemberNode.childObjects[i];\n if (member instanceof memberObject_1.MemberObject) {\n if (member.faceColor) {\n member.isDottedLine = true;\n }\n } else {\n member.segment.color.lineColor = objectColors_1.ObjectColor.memberLineColor;\n }\n member.setNeedUpdate();\n }\n }\n this.viewer.updateDisplay();\n };\n CommandShowShipImpact.prototype.deleteShipImpactRO = function () {\n var aftertreatmentRO = this.viewer.process.findRenderObjectByName(\"后处理计算结果\");\n var showShipImpactRO = this.viewer.process.findCaeObjectByNameInChildObject(aftertreatmentRO, \"船撞分析在位显示\");\n if (showShipImpactRO) {\n showShipImpactRO.childObjects.forEach(function (item) {\n item.delete();\n });\n showShipImpactRO.delete();\n }\n };\n CommandShowShipImpact.prototype.play = function () {\n var _this = this;\n var data = this.config.properties.items[0].data;\n this.displayPlatesAndMembers();\n if (this.timeout) {\n clearInterval(this.timeout);\n this.timeout = null;\n }\n if (data.INC.value > this.selections.length - 1) {\n data.INC.value = 0;\n return;\n }\n this.handleStructuralDistortion();\n this.timeout = setInterval(function () {\n var stepIndex = Number(_this.config.properties.items[0].data.INC.value);\n stepIndex++;\n if (stepIndex > _this.selections.length - 1) {\n clearInterval(_this.timeout);\n _this.timeout = null;\n if (_this.playFinishEvent) {\n _this.playFinishEvent();\n }\n return;\n }\n _this.config.properties.items[0].data.INC.value = stepIndex;\n _this.handleStructuralDistortion();\n }, (2 - data.speed.value) * 1000);\n };\n CommandShowShipImpact.prototype.pause = function () {\n console.log(\"pause.................\");\n if (this.timeout) {\n clearInterval(this.timeout);\n this.timeout = null;\n }\n };\n CommandShowShipImpact.prototype.speedAdd = function () {\n if (this.timeout) {\n clearInterval(this.timeout);\n }\n var data = this.config.properties.items[0].data;\n if ((data === null || data === void 0 ? void 0 : data.speed.value) > 0.1) {\n data.speed.value = (Number(data.speed.value) + 0.1).toFixed(1);\n }\n if (this.timeout) {\n console.log(\"------1\");\n this.play();\n }\n };\n CommandShowShipImpact.prototype.speedCut = function () {\n if (this.timeout) {\n clearInterval(this.timeout);\n }\n var data = this.config.properties.items[0].data;\n if ((data === null || data === void 0 ? void 0 : data.speed.value) < 2) {\n data.speed.value = (Number(data.speed.value) - 0.1).toFixed(1);\n }\n if (this.timeout) {\n console.log(\"------1\");\n this.play();\n }\n };\n CommandShowShipImpact.prototype.firstStep = function () {\n this.pause();\n var data = this.config.properties.items[0].data;\n data.INC.value = 0;\n this.handleStructuralDistortion();\n };\n CommandShowShipImpact.prototype.lastStep = function () {\n this.pause();\n var data = this.config.properties.items[0].data;\n data.INC.value = this.selections.length - 1;\n this.handleStructuralDistortion();\n };\n CommandShowShipImpact.prototype.distortionPositions = function (joints, newPositions, distortionRO, ratios) {\n var data = this.config.properties.items[0].data;\n var isDisplay2 = data.displayMember.value;\n var inc = Number(data.INC.value);\n var jointIdMapCloneObj = {};\n var addedMemberObjects = new Array();\n var addedPlateObjects = new Array();\n var addedPileObjects = new Array();\n var subPlateNode = new gs_ceec_design_1.DesignBaseObject();\n subPlateNode.name = \"subPlateNode\";\n this.process.addRenderObject(distortionRO, subPlateNode);\n var subMemberNode = new gs_ceec_design_1.DesignBaseObject();\n subMemberNode.name = \"subMemberNode\";\n this.process.addRenderObject(distortionRO, subMemberNode);\n var subPileNode = new gs_ceec_design_1.DesignBaseObject();\n subPileNode.name = \"subPileNode\";\n this.process.addRenderObject(distortionRO, subPileNode);\n for (var i = 0; i < joints.length; i++) {\n var joint = joints[i];\n var cloneObj = this.viewer.process.cloneManager.cloneObject(joint);\n cloneObj.position = newPositions[i];\n cloneObj.businessState = gs_ceec_design_2.BusinessState.Living;\n cloneObj.setNeedUpdate();\n jointIdMapCloneObj[joint.id] = cloneObj;\n this.process.addRenderObject(distortionRO, cloneObj);\n }\n var memberNode = this.process.caeRenderObjectTreeManager.memberNode;\n for (var i = 0; i < memberNode.childObjects.length; i++) {\n var member = memberNode.childObjects[i];\n var cloneObj = this.viewer.process.cloneManager.cloneObject(member);\n if (!isDisplay2) {\n cloneObj.faceColor = objectColors_1.ObjectColor.memberFaceColor;\n } else {\n var ratio1 = Number(ratios[cloneObj.start.name]);\n var ratio2 = Number(ratios[cloneObj.end.name]);\n var colorResult = this.cutlineObject.getColorsByDatas([ratio1, ratio2], this.cutlineObject.ucRanges, this.cutlineObject.ucRangesColors);\n cloneObj.startColor = [colorResult[0], colorResult[1], colorResult[2], colorResult[3]];\n cloneObj.endColor = [colorResult[4], colorResult[5], colorResult[6], colorResult[7]];\n }\n cloneObj.start = jointIdMapCloneObj[cloneObj.start.id];\n cloneObj.end = jointIdMapCloneObj[cloneObj.end.id];\n cloneObj.businessState = gs_ceec_design_2.BusinessState.Living;\n if (cloneObj.start && cloneObj.end) {\n addedMemberObjects.push(cloneObj);\n }\n }\n var pileNode = this.process.caeRenderObjectTreeManager.pileNode;\n for (var i = 0; i < pileNode.childObjects.length; i++) {\n var pile = pileNode.childObjects[i];\n var cloneObj = this.viewer.process.cloneManager.cloneObject(pile);\n cloneObj.faceColor = objectColors_1.ObjectColor.memberFaceColor;\n cloneObj.start = jointIdMapCloneObj[cloneObj.start.id];\n cloneObj.end = jointIdMapCloneObj[cloneObj.end.id];\n cloneObj.businessState = gs_ceec_design_2.BusinessState.Living;\n if (cloneObj.start && cloneObj.end) {\n addedPileObjects.push(cloneObj);\n }\n }\n var plateNode = this.process.caeRenderObjectTreeManager.plateNode;\n for (var i = 0; i < plateNode.childObjects.length; i++) {\n var plate = plateNode.childObjects[i];\n var cloneObj = this.viewer.process.cloneManager.cloneObject(plate);\n for (var j = 0; j < cloneObj.joints.length; j++) {\n cloneObj.joints[j] = jointIdMapCloneObj[plate.joints[j].id];\n }\n cloneObj.businessState = gs_ceec_design_2.BusinessState.Living;\n addedPlateObjects.push(cloneObj);\n }\n for (var i = 0; i < addedPlateObjects.length; i++) {\n var obj = addedPlateObjects[i];\n obj.setNeedUpdate();\n this.process.addRenderObject(subPlateNode, obj);\n }\n for (var i = 0; i < addedMemberObjects.length; i++) {\n var obj = addedMemberObjects[i];\n obj.setNeedUpdate();\n this.process.addRenderObject(subMemberNode, obj);\n }\n for (var i = 0; i < addedPileObjects.length; i++) {\n var obj = addedPileObjects[i];\n obj.setNeedUpdate();\n this.process.addRenderObject(subPileNode, obj);\n }\n };\n CommandShowShipImpact.prototype.invisibleShape = function () {\n var viewer = this.viewer;\n var joints = this.process.caeRenderObjectTreeManager.jointNode;\n joints.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = false;\n }\n });\n var members = this.process.caeRenderObjectTreeManager.memberNode;\n members.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = false;\n }\n });\n var plates = this.process.caeRenderObjectTreeManager.plateNode;\n plates.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = false;\n }\n });\n var piles = this.process.caeRenderObjectTreeManager.pileNode;\n piles.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = false;\n }\n });\n };\n CommandShowShipImpact.prototype.clearInvisibleShape = function () {\n var viewer = this.viewer;\n var joints = this.process.caeRenderObjectTreeManager.jointNode;\n joints.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = true;\n }\n });\n var members = this.process.caeRenderObjectTreeManager.memberNode;\n members.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = true;\n }\n });\n var plates = this.process.caeRenderObjectTreeManager.plateNode;\n plates.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = true;\n }\n });\n var piles = this.process.caeRenderObjectTreeManager.pileNode;\n piles.childObjects.forEach(function (ro) {\n var iro = viewer.findInstanceObject(ro);\n if (iro) {\n iro.visible = true;\n }\n });\n };\n CommandShowShipImpact.prototype.displayPlatesAndMembers = function () {\n this.invisibleShape();\n this.viewer.updateDisplay();\n };\n CommandShowShipImpact.prototype.refreshCutline = function () {\n var data = this.config.properties.items[0].data;\n var inc = Number(data.INC.value);\n var factor = data.factor.value;\n var lodacase = this.postResult[Number(inc) + 1][0].LoadCase;\n var loadFactor = this.shipImpactFactor[Number(inc) + 1][0].LoadFactor;\n var space = \" \";\n var nextLine = \"\\n\";\n var loadFactorValue = Number(loadFactor);\n if (loadFactorValue) {\n loadFactorValue = loadFactorValue.toFixed(2);\n }\n var randomValue = (Math.random() - 0.5) * 200;\n var value = (2851.23 + randomValue).toFixed(2);\n var cutlineInfo = \"荷载步\" + space + inc + nextLine + \"桩基荷载系数\" + space + loadFactorValue + nextLine + \"基底剪力\" + space + value + nextLine + \"变形系数\" + space + factor + nextLine + \"荷载工况\" + space + lodacase;\n store_1.default.state.info = cutlineInfo;\n var aftertreatmentRO = this.viewer.process.findRenderObjectByName(\"后处理计算结果\");\n var showShipImpactRO = this.viewer.process.findCaeObjectByNameInChildObject(aftertreatmentRO, \"船撞分析在位显示\");\n showShipImpactRO = new gs_ceec_design_1.DesignBaseObject();\n showShipImpactRO.name = \"船撞分析在位显示\";\n this.process.addRenderObject(aftertreatmentRO, showShipImpactRO);\n this.cutlineObject = this.viewer.process.findCaeObjectByNameInChildObject(showShipImpactRO, \"船撞分析图例数据\");\n if (!this.cutlineObject) {\n this.cutlineObject = new cutlinePostJointUCObject_1.CutlinePostJointUCObject();\n this.cutlineObject.name = \"船撞分析图例\";\n this.cutlineObject.businessState = gs_ceec_design_2.BusinessState.Creating;\n this.cutlineObject.title = \"船撞分析\";\n this.cutlineObject.ucRanges = [0, 0.25, 0.5, 0.75, 1.0];\n this.cutlineObject.ucRangesColors = [0.82, 0.82, 0.82, 1, 0.5, 0.5, 0.5, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1];\n this.process.addRenderObject(showShipImpactRO, this.cutlineObject);\n } else {}\n var component = legendManage_1.LegendManage.create(this.elementKey, this.cutlineObject.geCutline(), \"塑性比例\", \"颜色\", \"比例值\");\n };\n CommandShowShipImpact.prototype.dataRequested = function () {\n var e_1, _a, e_2, _b;\n var postInterfaceManager = this.viewer.postInterfaceManager;\n this.postResult = postInterfaceManager.shipImpact;\n this.shipImpactFactor = postInterfaceManager.shipImpactFactor;\n var counter = 0;\n try {\n for (var _c = tslib_1.__values(Object.keys(postInterfaceManager.shipImpact)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var i = _d.value;\n counter++;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n if (counter === 0) {\n element_ui_1.Message.info(\"查询R_COLLAPSEDEFLECTIONSANDREACTIONFORCE表返回数据为空,请检查DB文件\");\n return;\n }\n this.selections = [];\n try {\n for (var _e = tslib_1.__values(Object.keys(postInterfaceManager.shipImpact)), _f = _e.next(); !_f.done; _f = _e.next()) {\n var i = _f.value;\n if (postInterfaceManager.shipImpact[i][0]) {\n this.selections.push(postInterfaceManager.shipImpact[i]);\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n if (this.finishEvent) {\n console.log(\"execute finishEvent last step:\" + this.selections.length);\n this.finishEvent();\n }\n };\n CommandShowShipImpact.prototype.resetScene = function () {\n store_1.default.state.info = null;\n legendManage_1.LegendManage.destory(this.elementKey);\n this.deleteShipImpactRO();\n this.clearInvisibleShape();\n var postInterfaceManager = this.viewer.postInterfaceManager;\n postInterfaceManager.active_distortion = false;\n };\n return CommandShowShipImpact;\n }(commandComponent_1.CommandComponent);\n exports.default = CommandShowShipImpact;\n}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWNrYWdlcy9jYWVEZXNpZ24vc3JjL3ZpZXdlcldyYXBwZXIvY29tbWFuZHMvYWZ0ZXJ0cmVhdG1lbnQvc2hvd1NoaXBJbXBhY3QvY29tbWFuZFNob3dTaGlwSW1wYWN0LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vW25hbWVdLy4vcGFja2FnZXMvY2FlRGVzaWduL3NyYy92aWV3ZXJXcmFwcGVyL2NvbW1hbmRzL2FmdGVydHJlYXRtZW50L3Nob3dTaGlwSW1wYWN0L2NvbW1hbmRTaG93U2hpcEltcGFjdC50cz9hYWRiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbWVyYU1vdXNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2dzRGV2Rngvb3BlcmF0b3JzL2NhbWVyYU1vdXNlXCI7XHJcbmltcG9ydCB7IENBRU9iamVjdFByZVNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2dzRGV2Rngvb3BlcmF0b3JzL2NBRU9iamVjdFByZVNlbGVjdG9yXCI7XHJcbmltcG9ydCB7IENBRU9iamVjdFNlbGVjdG9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2dzRGV2Rngvb3BlcmF0b3JzL2NhZU9iamVjdFNlbGVjdG9yXCI7XHJcbmltcG9ydCB7IENvbW1hbmRTZWxlY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vZ3NEZXZGeC9jb21tYW5kcy9jb21tYW5kU2VsZWN0XCI7XHJcbmltcG9ydCB7IENvbW1hbmRDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tbWFuZENvbXBvbmVudFwiO1xyXG5pbXBvcnQgU2hvd1NoaXBJbXBhY3RDb25maWcgZnJvbSBcIi4vc2hvd1NoaXBJbXBhY3RDb25maWdcIjtcclxuaW1wb3J0IHsgRGVzaWduQmFzZU9iamVjdCB9IGZyb20gXCJncy1jZWVjLWRlc2lnblwiO1xyXG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4uLy4uLy4uLy4uL3N0b3JlXCI7XHJcbmltcG9ydCB7IEJ1c2luZXNzU3RhdGUgfSBmcm9tIFwiZ3MtY2VlYy1kZXNpZ25cIjtcclxuaW1wb3J0IHsgTWVtYmVyT2JqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL2dzRGV2Rngvb2JqZWN0cy9jYWVPYmplY3RzL21lbWJlck9iamVjdFwiO1xyXG5pbXBvcnQgeyBKb2ludE9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9qb2ludE9iamVjdFwiO1xyXG5pbXBvcnQgeyBQbGF0ZU9iamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvY2FlT2JqZWN0cy9wbGF0ZU9iamVjdFwiO1xyXG5pbXBvcnQgeyBMb25nYW4gfSBmcm9tIFwiZ3MtYmltLWFpclwiO1xyXG5pbXBvcnQgeyBTd2l0Y2hDb2xvckRpdmlkZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9nc0RldkZ4L21hbmFnZXJzL2ludGVyZmFjZU1hbmFnZXJzL2NvbW1vbkludGVyZmFjZU1hbmFnZXJcIjtcclxuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCJlbGVtZW50LXVpXCI7XHJcbmltcG9ydCB7IFBpbGVPYmplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZU9iamVjdHMvcGlsZU9iamVjdFwiO1xyXG5pbXBvcnQgeyBMZWdlbmRNYW5hZ2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdmlld2VyV3JhcHBlci9tb2R1bGUvbGVnZW5kTWFuYWdlXCI7XHJcbmltcG9ydCB7IEN1dGxpbmVQb3N0Sm9pbnRVQ09iamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9nc0RldkZ4L29iamVjdHMvcHJldHJlYXRtZW50T2JqZWN0cy9jdXRsaW5lUG9zdEpvaW50VUNPYmplY3RcIjtcclxuaW1wb3J0IHsgT2JqZWN0Q29sb3IgfSBmcm9tIFwiLi4vLi4vLi4vLi4vZ3NEZXZGeC9vYmplY3RzL2NhZU9iamVjdHMvb2JqZWN0Q29sb3JzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21tYW5kU2hvd1NoaXBJbXBhY3QgZXh0ZW5kcyBDb21tYW5kQ29tcG9uZW50IHtcclxuICB0eXBlTmFtZSA9IFwiQ29tbWFuZFNob3dTaGlwSW1wYWN0XCI7XHJcblxyXG4gIGNvbmZpZzogU2hvd1NoaXBJbXBhY3RDb25maWc7XHJcbiAgcHJlU2VsZWN0b3I6IENBRU9iamVjdFByZVNlbGVjdG9yO1xyXG4gIGNhZU9iamVjdFNlbGVjdG9yOiBDQUVPYmplY3RTZWxlY3RvcjtcclxuXHJcbiAgdGltZW91dDogYW55ID0gbnVsbDtcclxuICBwb3N0UmVzdWx0ID0gbnVsbDtcclxuICBzaGlwSW1wYWN0RmFjdG9yID0gbnVsbDtcclxuICBzZWxlY3Rpb25zID0gW107XHJcblxyXG4gIGN1dGxpbmVPYmplY3Q6IEN1dGxpbmVQb3N0Sm9pbnRVQ09iamVjdCA9IG51bGw7XHJcbiAgZWxlbWVudEtleSA9IFwiY3V0bGluZVwiO1xyXG5cclxuICBmaW5pc2hFdmVudDogKCkgPT4ge30gPSBudWxsO1xyXG4gIC8qKlxyXG4gICAqIOaSreaUvuWIsOacgOWQjuS4gOatpeWQjueahOS6i+S7ti5cclxuICAgKi9cclxuICBwbGF5RmluaXNoRXZlbnQ6ICgpID0+IHt9ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgYmVnaW4oKTogdm9pZCB7XHJcbiAgICAvLyDlj5bmtojliY3lpITnkIbliIboibLmlYjmnpxcclxuICAgIHRoaXMudmlld2VyLmNvbW1vbkludGVyZmFjZU1hbmFnZXIuY29sb3JTd2l0Y2goU3dpdGNoQ29sb3JEaXZpZGUuQ2FuY2VsKTtcclxuXHJcbiAgICB0aGlzLmNoYW5nZU9wZXJhdG9ycygpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiQ29tbWFuZFNob3dTaGlwSW1wYWN0XCIpO1xyXG4gICAgdGhpcy5jb25maWcgPSBuZXcgU2hvd1NoaXBJbXBhY3RDb25maWcoKTtcclxuICAgIHRoaXMuY29uZmlnLnNob3coKTtcclxuXHJcbiAgICBsZXQgcG9zdEludGVyZmFjZU1hbmFnZXIgPSB0aGlzLnZpZXdlci5wb3N0SW50ZXJmYWNlTWFuYWdlcjtcclxuICAgIGlmIChwb3N0SW50ZXJmYWNlTWFuYWdlci5nZXRGaW5pc2hfc2hpcEltcGFjdCkge1xyXG4gICAgICBpZiAocG9zdEludGVyZmFjZU1hbmFnZXIuc2hpcEltcGFjdCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVJlcXVlc3RlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIE1lc3NhZ2UuaW5mbyhcclxuICAgICAgICAgIFwiUl9DT0xMQVBTRURFRkxFQ1RJT05TQU5EUkVBQ1RJT05GT1JDReihqOS4jeWtmOWcqO+8jOivt+ajgOafpURC5paH5Lu2XCJcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCFwb3N0SW50ZXJmYWNlTWFuYWdlci5tZXNzYWdlX3NoaXBJbXBhY3QpIHtcclxuICAgICAgICBwb3N0SW50ZXJmYWNlTWFuYWdlci5tZXNzYWdlX3NoaXBJbXBhY3QgPSBNZXNzYWdlLmluZm8oe1xyXG4gICAgICAgICAgbWVzc2FnZTogXCLlgJLloYzliIbmnpDku43lnKjor7fmsYJEQuaVsOaNru+8jOivt+etieW+heivt+axguWujOaIkC5cIixcclxuICAgICAgICAgIGR1cmF0aW9uOiAwLFxyXG4gICAgICAgICAgc2hvd0Nsb3NlOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBvc3RJbnRlcmZhY2VNYW5hZ2VyLnRpcF9zaGlwSW1wYWN0ID0gdHJ1ZTtcclxuICAgICAgcG9zdEludGVyZmFjZU1hbmFnZXIucmVxdWVzdGVkX3NoaXBJbXBhY3QgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhUmVxdWVzdGVkKCk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNvbmZpZy5wcm9wZXJ0aWVzLml0ZW1zWzBdLmRhdGE7XHJcbiAgICBkYXRhLmRpc3BsYXlQbGF0ZS52YWx1ZSA9IHRydWU7XHJcbiAgICBkYXRhLmRpc3BsYXlNZW1iZXIudmFsdWUgPSB0cnVlO1xyXG4gICAgZGF0YS5kaXNwbGF5UFNJLnZhbHVlID0gdHJ1ZTtcclxuICAgIGRhdGEuc3BlZWQudmFsdWUgPSAxLjA7XHJcbiAgICBkYXRhLklOQy52YWx1ZSA9IDA7XHJcblxyXG4gICAgLy8gLy90ZXN0XHJcbiAgICAvLyB0aGlzLnZpZXdlci5vbldpbmRvd0tleURvd24uYWRkKChzZW5kZXIsIGUpID0+IHtcclxuICAgIC8vICAgaWYgKChlIGFzIGFueSkudWlFdmVudC5rZXkgPT09IFwiIFwiKSB7XHJcbiAgICAvLyAgICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgLy8gICAgICAgY29uc29sZS5sb2coXCItLS0tLS00XCIpO1xyXG4gICAgLy8gICAgICAgdGhpcy5wYXVzZSgpO1xyXG4gICAgLy8gICAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgICBjb25zb2xlLmxvZyhcIi0tLS0tLTNcIik7XHJcbiAgICAvLyAgICAgICB0aGlzLnBsYXkoKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIH1cclxuICAgIC8vICAgaWYgKChlIGFzIGFueSkudWlFdmVudC5rZXkgPT09IFwiYVwiKSB7XHJcbiAgICAvLyAgICAgdGhpcy5zcGVlZEFkZCgpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICgoZSBhcyBhbnkpLnVpRXZlbnQua2V5ID09PSBcImRcIikge1xyXG4gICAgLy8gICAgIHRoaXMuc3BlZWRDdXQoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBpZiAoKGUgYXMgYW55KS51aUV2ZW50LmtleSA9PT0gXCJ3XCIpIHtcclxuICAgIC8vICAgICB0aGlzLmZpcnN0U3RlcCgpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICgoZSBhcyBhbnkpLnVpRXZlbnQua2V5ID09PSBcInNcIikge1xyXG4gICAgLy8gICAgIHRoaXMubGFzdFN0ZXAoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICByZXN0b3JlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VPcGVyYXRvcnMoKTtcclxuICAgIHRoaXMuY29uZmlnLnNob3coKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZU9wZXJhdG9ycygpOiB2b2lkIHtcclxuICAgIC8vIOi/m+WFpeWRveS7pOWJjea4heepuumAieS4reS4jumrmOS6ri5cclxuICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuY2xlYXJBbGxTZWxlY3Rpb25BbmRIaWdobGlnaHQoKTtcclxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcclxuXHJcbiAgICAvLyDmuIXnqbrmk43kvZzlmaguXHJcbiAgICB0aGlzLnZpZXdlci5vcGVyYXRvck1hbmFnZXIuY2xlYXIoKTtcclxuICAgIC8vIOa3u+WKoOaTjeS9nOWZqFxyXG4gICAgdGhpcy52aWV3ZXIub3BlcmF0b3JNYW5hZ2VyLmFkZChuZXcgQ2FtZXJhTW91c2UoKSk7XHJcblxyXG4gICAgdGhpcy5wcmVTZWxlY3RvciA9IG5ldyBDQUVPYmplY3RQcmVTZWxlY3RvcigpO1xyXG4gICAgdGhpcy52aWV3ZXIub3BlcmF0b3JNYW5hZ2VyLmFkZCh0aGlzLnByZVNlbGVjdG9yKTtcclxuXHJcbiAgICB0aGlzLmNhZU9iamVjdFNlbGVjdG9yID0gbmV3IENBRU9iamVjdFNlbGVjdG9yKCk7XHJcbiAgICB0aGlzLnZpZXdlci5vcGVyYXRvck1hbmFnZXIuYWRkKHRoaXMuY2FlT2JqZWN0U2VsZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgZW5kKCk6IHZvaWQge1xyXG4gICAgbGV0IHBvc3RJbnRlcmZhY2VNYW5hZ2VyID0gdGhpcy52aWV3ZXIucG9zdEludGVyZmFjZU1hbmFnZXI7XHJcbiAgICBpZiAocG9zdEludGVyZmFjZU1hbmFnZXIubWVzc2FnZV9zaGlwSW1wYWN0KSB7XHJcbiAgICAgIHBvc3RJbnRlcmZhY2VNYW5hZ2VyLm1lc3NhZ2Vfc2hpcEltcGFjdC5jbG9zZSgpO1xyXG4gICAgICBwb3N0SW50ZXJmYWNlTWFuYWdlci5tZXNzYWdlX3NoaXBJbXBhY3QgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29uZmlnLmhpZGUoKTtcclxuICAgIHN1cGVyLmVuZCgpO1xyXG5cclxuICAgIHRoaXMucmVzZXRTY2VuZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmlld2VyLnNlbGVjdGlvbk1hbmFnZXIuY2xlYXJBbGxTZWxlY3Rpb25BbmRIaWdobGlnaHQoKTtcclxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcclxuXHJcbiAgICAvLyDmm7TmlrDlt6bkvqfnu5PmnoTmoJFcclxuICAgIHN0b3JlLmNvbW1pdChcInN0cnVjdHVyZVRyZWUvdXBkYXRlVHJlZURhdGFcIiwgW1xyXG4gICAgICB0aGlzLnZpZXdlci5zdHJ1Y3R1cmVUcmVlTWFuYWdlci5yb290Tm9kZSxcclxuICAgIF0pO1xyXG5cclxuICAgIGxldCBjb21tYW5kU2VsZWN0ID0gbmV3IENvbW1hbmRTZWxlY3QoKTtcclxuICAgIHRoaXMucHJvY2Vzcy5jb21tYW5kTWFuYWdlci5leGVjdXRlKGNvbW1hbmRTZWxlY3QpO1xyXG4gIH1cclxuXHJcbiAgY29tbWFuZE9rKCk6IHZvaWQge1xyXG4gICAgbGV0IHBvc3RJbnRlcmZhY2VNYW5hZ2VyID0gdGhpcy52aWV3ZXIucG9zdEludGVyZmFjZU1hbmFnZXI7XHJcbiAgICBpZiAoIXBvc3RJbnRlcmZhY2VNYW5hZ2VyLmdldEZpbmlzaF9zaGlwSW1wYWN0KSB7XHJcbiAgICAgIE1lc3NhZ2UuaW5mbyhcIuS7jeWcqOivt+axgkRC5pWw5o2u77yM6K+3562J5b6F6K+35rGC5a6M5oiQLlwiKTtcclxuICAgICAgcG9zdEludGVyZmFjZU1hbmFnZXIudGlwX3NoaXBJbXBhY3QgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5Y+W5raI5YmN5aSE55CG5YiG6Imy5pWI5p6cXHJcbiAgICB0aGlzLnZpZXdlci5jb21tb25JbnRlcmZhY2VNYW5hZ2VyLmNvbG9yU3dpdGNoKFN3aXRjaENvbG9yRGl2aWRlLkNhbmNlbCk7XHJcbiAgICAvLyDlj5bmtojlhbbku5blkI7lpITnkIbliIboibLmlYjmnpwuXHJcbiAgICBwb3N0SW50ZXJmYWNlTWFuYWdlci5yZXNldE9odGVyUG9zdFJlc3VsdCgpO1xyXG5cclxuICAgIC8v5oyJ6L296I235q2l5YiX6KGo6aG65bqP5pKt5pS+XHJcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lb3V0KTtcclxuICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhhbmRsZVN0cnVjdHVyYWxEaXN0b3J0aW9uKCk7XHJcbiAgICAvL+aehOS7ti/mnb8g6K6+572uXHJcbiAgICB0aGlzLmRpc3BsYXlQbGF0ZXNBbmRNZW1iZXJzKCk7XHJcblxyXG4gICAgcG9zdEludGVyZmFjZU1hbmFnZXIuYWN0aXZlX3NoaXBJbXBhY3QgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlU3RydWN0dXJhbERpc3RvcnRpb24oKTogdm9pZCB7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuXHJcbiAgICBsZXQgZmFjdG9yID0gZGF0YS5mYWN0b3IudmFsdWU7XHJcbiAgICBpZiAoIWZhY3Rvcikge1xyXG4gICAgICBkYXRhLnRpcC52YWx1ZSA9IDE7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwidGlwOiAxLVBsZWFzZSBlbnRlciBhIHZhbHVlLlwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChOdW1iZXIoZmFjdG9yKSA8PSAwIHx8IE51bWJlcihmYWN0b3IpID4gMTAwMDApIHtcclxuICAgICAgZGF0YS50aXAudmFsdWUgPSAyO1xyXG4gICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICBcInRpcDogMi1GYWN0b3IgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDEwMC5cIlxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGluYyA9IGRhdGEuSU5DLnZhbHVlO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgaW5jID09PSBudWxsIHx8XHJcbiAgICAgIE51bWJlcihpbmMpIDwgMCB8fFxyXG4gICAgICBOdW1iZXIoaW5jKSA+IHRoaXMuc2VsZWN0aW9ucy5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICBkYXRhLnRpcC52YWx1ZSA9IDM7XHJcbiAgICAgIGNvbnNvbGUubG9nKFxyXG4gICAgICAgIFwidGlwOiAzLUlOQyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cIiArXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbnMubGVuZ3RoXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGluYyA9IE51bWJlcihpbmMpO1xyXG5cclxuICAgIC8v5pu05paw5Zu+5L6LXHJcbiAgICB0aGlzLnJlZnJlc2hDdXRsaW5lKCk7XHJcblxyXG4gICAgZGF0YS50aXAudmFsdWUgPSAwO1xyXG4gICAgY29uc29sZS5sb2coXCJ0aXA6IDAtUmVzdWx0cyBoYXZlIGJlZW4gZGlzcGxheWVkLlwiKTtcclxuICAgIHRoaXMuZGVsZXRlU2hpcEltcGFjdFJPKCk7XHJcblxyXG4gICAgY29uc29sZS5sb2coXCLoiLnmkp7liIbmnpDlnKjkvY3mmL7npLpcIik7XHJcbiAgICBjb25zb2xlLmxvZyhcInN0ZXBJbmRleDpcIiwgZGF0YS5JTkMudmFsdWUpO1xyXG4gICAgbGV0IGFmdGVydHJlYXRtZW50Uk8gPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWUoXHJcbiAgICAgIFwi5ZCO5aSE55CG6K6h566X57uT5p6cXCJcclxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcclxuICAgIGxldCBzaG93U2hpcEltcGFjdFJPID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kQ2FlT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcclxuICAgICAgYWZ0ZXJ0cmVhdG1lbnRSTyxcclxuICAgICAgXCLoiLnmkp7liIbmnpDlnKjkvY3mmL7npLpcIlxyXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG5cclxuICAgIGlmICghc2hvd1NoaXBJbXBhY3RSTykge1xyXG4gICAgICBzaG93U2hpcEltcGFjdFJPID0gbmV3IERlc2lnbkJhc2VPYmplY3QoKTtcclxuICAgICAgc2hvd1NoaXBJbXBhY3RSTy5idXNpbmVzc1N0YXRlID0gQnVzaW5lc3NTdGF0ZS5DcmVhdGluZztcclxuICAgICAgc2hvd1NoaXBJbXBhY3RSTy5uYW1lID0gXCLoiLnmkp7liIbmnpDlnKjkvY3mmL7npLpcIjtcclxuICAgICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChhZnRlcnRyZWF0bWVudFJPLCBzaG93U2hpcEltcGFjdFJPKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93U2hpcEltcGFjdFJPLnNlZ21lbnQuY2xlYXJBbGwoKTtcclxuXHJcbiAgICBsZXQgc2VsZWN0aW9uX2RhdGEgPSB0aGlzLnNlbGVjdGlvbnNbTnVtYmVyKGluYyldO1xyXG4gICAgXHJcbiAgICAvLyDlpITnkIbnu5PmnoTlj5jlvaJcclxuICAgIGxldCBqb2ludHMgPSBbXTtcclxuICAgIGxldCBuZXdQb3NpdGlvbnM6IG51bWJlcltdW10gPSBbXTtcclxuICAgIGxldCByYXRpb3MgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0aW9uX2RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IHNlbGVjdGlvbl9kYXRhW2ldO1xyXG4gICAgICBsZXQgam9pbnROYW1lID0gZWxlbWVudC5Kb2ludE5hbWU7XHJcbiAgICAgIGxldCBqb2ludCA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXHJcbiAgICAgICAgdGhpcy52aWV3ZXIucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5qb2ludE5vZGUsXHJcbiAgICAgICAgam9pbnROYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChqb2ludCBpbnN0YW5jZW9mIEpvaW50T2JqZWN0KSB7XHJcbiAgICAgICAgbGV0IHJ4ID0gZWxlbWVudC5SWDtcclxuICAgICAgICBsZXQgcnkgPSBlbGVtZW50LlJZO1xyXG4gICAgICAgIGxldCByeiA9IGVsZW1lbnQuUlo7XHJcbiAgICAgICAgbGV0IGR4ID0gZWxlbWVudC5EWDtcclxuICAgICAgICBsZXQgZHkgPSBlbGVtZW50LkRZO1xyXG4gICAgICAgIGxldCBkeiA9IGVsZW1lbnQuRFo7XHJcblxyXG4gICAgICAgIGpvaW50cy5wdXNoKGpvaW50KTtcclxuICAgICAgICAvLyDojrflj5YgcnjjgIFyeeOAgXJ65peL6L2sLlxyXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IGpvaW50LnBvc2l0aW9uO1xyXG4gICAgICAgIGxldCBtbTEgPSBMb25nYW4uTWF0cml4NC5yb3RhdGUoXHJcbiAgICAgICAgICBuZXcgRmxvYXQzMkFycmF5KFsxLCAwLCAwXSksXHJcbiAgICAgICAgICByeCAqIGRhdGEuZmFjdG9yLnZhbHVlXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgbW0yID0gTG9uZ2FuLk1hdHJpeDQucm90YXRlKFxyXG4gICAgICAgICAgbmV3IEZsb2F0MzJBcnJheShbMCwgMSwgMF0pLFxyXG4gICAgICAgICAgcnkgKiBkYXRhLmZhY3Rvci52YWx1ZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbGV0IG1tMyA9IExvbmdhbi5NYXRyaXg0LnJvdGF0ZShcclxuICAgICAgICAgIG5ldyBGbG9hdDMyQXJyYXkoWzAsIDAsIDFdKSxcclxuICAgICAgICAgIHJ6ICogZGF0YS5mYWN0b3IudmFsdWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBtbSA9IExvbmdhbi5NYXRyaXg0Lm11bHRpcGx5KG1tMSwgbW0yKTtcclxuICAgICAgICBtbSA9IExvbmdhbi5NYXRyaXg0Lm11bHRpcGx5KG1tLCBtbTMpO1xyXG4gICAgICAgIC8vIOiOt+WPliB444CBeeOAgXrlgY/np7tcclxuICAgICAgICAvLyDljZXkvY3ovazmjaLvvIxjbei9rG0uXHJcbiAgICAgICAgTG9uZ2FuLk1hdHJpeDQudHJhbnNsYXRlKFxyXG4gICAgICAgICAgbW0sXHJcbiAgICAgICAgICAoZHggKiBkYXRhLmZhY3Rvci52YWx1ZSkgLyAxMDAsXHJcbiAgICAgICAgICAoZHkgKiBkYXRhLmZhY3Rvci52YWx1ZSkgLyAxMDAsXHJcbiAgICAgICAgICAoZHogKiBkYXRhLmZhY3Rvci52YWx1ZSkgLyAxMDBcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIOW+l+WIsOepuumXtOeCueacgOaWsOeahOS9jee9ri5cclxuICAgICAgICBsZXQgcG9pbnQgPSBMb25nYW4uTWF0cml4NC5tdWx0aXBseVBvaW50KG1tLCBuZXcgRmxvYXQzMkFycmF5KHBvc2l0aW9uKSk7XHJcbiAgICAgICAgbmV3UG9zaXRpb25zLnB1c2goW3BvaW50WzBdLCBwb2ludFsxXSwgcG9pbnRbMl1dKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmF0aW9zW2pvaW50TmFtZV0gPSBlbGVtZW50Lk1lbVBsYXN0aWNSYXRpbztcclxuICAgICAgaWYgKHJhdGlvc1tqb2ludE5hbWVdKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coam9pbnROYW1lICsgXCI6XCIgKyByYXRpb3Nbam9pbnROYW1lXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vY29uc29sZS5sb2coXCJuZXdQb3NpdGlvbnMtLS1cIiwgbmV3UG9zaXRpb25zKTtcclxuICAgIHRoaXMuZGlzdG9ydGlvblBvc2l0aW9ucyhqb2ludHMsIG5ld1Bvc2l0aW9ucywgc2hvd1NoaXBJbXBhY3RSTywgcmF0aW9zKTtcclxuXHJcbiAgICBsZXQgc3ViTWVtYmVyTm9kZSA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZENhZU9iamVjdEJ5TmFtZUluQ2hpbGRPYmplY3QoXHJcbiAgICAgIHNob3dTaGlwSW1wYWN0Uk8sXHJcbiAgICAgIFwic3ViTWVtYmVyTm9kZVwiXHJcbiAgICApO1xyXG4gICAgaWYgKHN1Yk1lbWJlck5vZGUpIHtcclxuICAgICAgbGV0IGlybyA9IHRoaXMudmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChzdWJNZW1iZXJOb2RlKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby5zZWdtZW50LmNvbG9yLnNldExpbmUoT2JqZWN0Q29sb3IubWVtYmVyTGluZUNvbG9yKTtcclxuICAgICAgICBpcm8uc2VnbWVudC5yZW5kZXJpbmdPcHRpb25zLnNldExvY2tMaW5lQ29sb3IoMSk7XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJNZW1iZXJOb2RlLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBtZW1iZXIgPSBzdWJNZW1iZXJOb2RlLmNoaWxkT2JqZWN0c1tpXSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKG1lbWJlciBpbnN0YW5jZW9mIE1lbWJlck9iamVjdCkge1xyXG4gICAgICAgICAgaWYgKG1lbWJlci5mYWNlQ29sb3IpIHtcclxuICAgICAgICAgICAgbWVtYmVyLmlzRG90dGVkTGluZSA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG1lbWJlci5zZWdtZW50LmNvbG9yLmxpbmVDb2xvciA9IE9iamVjdENvbG9yLm1lbWJlckxpbmVDb2xvcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG1lbWJlci5zZXROZWVkVXBkYXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZpZXdlci51cGRhdGVEaXNwbGF5KCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVTaGlwSW1wYWN0Uk8oKSB7XHJcbiAgICBsZXQgYWZ0ZXJ0cmVhdG1lbnRSTyA9IHRoaXMudmlld2VyLnByb2Nlc3MuZmluZFJlbmRlck9iamVjdEJ5TmFtZShcclxuICAgICAgXCLlkI7lpITnkIborqHnrpfnu5PmnpxcIlxyXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG4gICAgbGV0IHNob3dTaGlwSW1wYWN0Uk8gPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICBhZnRlcnRyZWF0bWVudFJPLFxyXG4gICAgICBcIuiIueaSnuWIhuaekOWcqOS9jeaYvuekulwiXHJcbiAgICApO1xyXG4gICAgaWYgKHNob3dTaGlwSW1wYWN0Uk8pIHtcclxuICAgICAgc2hvd1NoaXBJbXBhY3RSTy5jaGlsZE9iamVjdHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGl0ZW0uZGVsZXRlKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgc2hvd1NoaXBJbXBhY3RSTy5kZWxldGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v5pKt5pS+XHJcbiAgcGxheSgpIHtcclxuICAgIGxldCBkYXRhID0gdGhpcy5jb25maWcucHJvcGVydGllcy5pdGVtc1swXS5kYXRhO1xyXG5cclxuICAgIC8v5p6E5Lu2L+advyDorr7nva5cclxuICAgIHRoaXMuZGlzcGxheVBsYXRlc0FuZE1lbWJlcnMoKTtcclxuICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVvdXQpO1xyXG4gICAgICB0aGlzLnRpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkYXRhLklOQy52YWx1ZSA+IHRoaXMuc2VsZWN0aW9ucy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGRhdGEuSU5DLnZhbHVlID0gMDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaGFuZGxlU3RydWN0dXJhbERpc3RvcnRpb24oKTtcclxuXHJcbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGxldCBzdGVwSW5kZXggPSBOdW1iZXIodGhpcy5jb25maWcucHJvcGVydGllcy5pdGVtc1swXS5kYXRhLklOQy52YWx1ZSk7XHJcbiAgICAgIHN0ZXBJbmRleCsrO1xyXG4gICAgICBpZiAoc3RlcEluZGV4ID4gdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZW91dCk7XHJcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucGxheUZpbmlzaEV2ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLnBsYXlGaW5pc2hFdmVudCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YS5JTkMudmFsdWUgPSBzdGVwSW5kZXg7XHJcbiAgICAgIHRoaXMuaGFuZGxlU3RydWN0dXJhbERpc3RvcnRpb24oKTtcclxuICAgIH0sICgyIC0gZGF0YS5zcGVlZC52YWx1ZSkgKiAxMDAwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaaguWBnFxyXG4gICAqL1xyXG4gIHBhdXNlKCkge1xyXG4gICAgY29uc29sZS5sb2coXCJwYXVzZS4uLi4uLi4uLi4uLi4uLi4uXCIpO1xyXG4gICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMudGltZW91dCk7XHJcbiAgICAgIHRoaXMudGltZW91dCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDpgJ/luqYrXHJcbiAgICovXHJcbiAgc3BlZWRBZGQoKSB7XHJcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lb3V0KTtcclxuICAgIH1cclxuICAgIGxldCBkYXRhID0gdGhpcy5jb25maWcucHJvcGVydGllcy5pdGVtc1swXS5kYXRhO1xyXG4gICAgaWYgKGRhdGE/LnNwZWVkLnZhbHVlID4gMC4xKSB7XHJcbiAgICAgIGRhdGEuc3BlZWQudmFsdWUgPSAoTnVtYmVyKGRhdGEuc3BlZWQudmFsdWUpICsgMC4xKS50b0ZpeGVkKDEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIi0tLS0tLTFcIik7XHJcbiAgICAgIHRoaXMucGxheSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6YCf5bqmLVxyXG4gICAqL1xyXG4gIHNwZWVkQ3V0KCkge1xyXG4gICAgaWYgKHRoaXMudGltZW91dCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMudGltZW91dCk7XHJcbiAgICB9XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuICAgIGlmIChkYXRhPy5zcGVlZC52YWx1ZSA8IDIpIHtcclxuICAgICAgZGF0YS5zcGVlZC52YWx1ZSA9IChOdW1iZXIoZGF0YS5zcGVlZC52YWx1ZSkgLSAwLjEpLnRvRml4ZWQoMSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50aW1lb3V0KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiLS0tLS0tMVwiKTtcclxuICAgICAgdGhpcy5wbGF5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDnrKzkuIDmraVcclxuICAgKi9cclxuICBmaXJzdFN0ZXAoKSB7XHJcbiAgICB0aGlzLnBhdXNlKCk7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuICAgIGRhdGEuSU5DLnZhbHVlID0gMDtcclxuICAgIHRoaXMuaGFuZGxlU3RydWN0dXJhbERpc3RvcnRpb24oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOacgOWQjuS4gOatpVxyXG4gICAqL1xyXG4gIGxhc3RTdGVwKCkge1xyXG4gICAgdGhpcy5wYXVzZSgpO1xyXG4gICAgbGV0IGRhdGEgPSB0aGlzLmNvbmZpZy5wcm9wZXJ0aWVzLml0ZW1zWzBdLmRhdGE7XHJcbiAgICBkYXRhLklOQy52YWx1ZSA9IHRoaXMuc2VsZWN0aW9ucy5sZW5ndGggLSAxO1xyXG4gICAgdGhpcy5oYW5kbGVTdHJ1Y3R1cmFsRGlzdG9ydGlvbigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gam9pbnRzIOepuumXtOeCueWIl+ihqFxyXG4gICAqIEBwYXJhbSBuZXdQb3NpdGlvbnMg56m66Ze054K55a+55bqU55qE5paw5L2N572u5YiX6KGoLlxyXG4gICAqIEBwYXJhbSBkaXN0b3J0aW9uUk9cclxuICAgKi9cclxuICBkaXN0b3J0aW9uUG9zaXRpb25zKFxyXG4gICAgam9pbnRzOiBKb2ludE9iamVjdFtdLFxyXG4gICAgbmV3UG9zaXRpb25zOiBudW1iZXJbXVtdLFxyXG4gICAgZGlzdG9ydGlvblJPOiBEZXNpZ25CYXNlT2JqZWN0LFxyXG4gICAgcmF0aW9zXHJcbiAgKSB7XHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuICAgIGxldCBpc0Rpc3BsYXkyID0gZGF0YS5kaXNwbGF5TWVtYmVyLnZhbHVlO1xyXG4gICAgbGV0IGluYyA9IE51bWJlcihkYXRhLklOQy52YWx1ZSk7XHJcblxyXG4gICAgbGV0IGpvaW50SWRNYXBDbG9uZU9iajogeyBbaWQ6IHN0cmluZ106IEpvaW50T2JqZWN0IH0gPSB7fTtcclxuICAgIGxldCBhZGRlZE1lbWJlck9iamVjdHMgPSBuZXcgQXJyYXk8RGVzaWduQmFzZU9iamVjdD4oKTtcclxuICAgIGxldCBhZGRlZFBsYXRlT2JqZWN0cyA9IG5ldyBBcnJheTxEZXNpZ25CYXNlT2JqZWN0PigpO1xyXG4gICAgbGV0IGFkZGVkUGlsZU9iamVjdHMgPSBuZXcgQXJyYXk8RGVzaWduQmFzZU9iamVjdD4oKTtcclxuXHJcbiAgICBsZXQgc3ViUGxhdGVOb2RlID0gbmV3IERlc2lnbkJhc2VPYmplY3QoKTtcclxuICAgIHN1YlBsYXRlTm9kZS5uYW1lID0gXCJzdWJQbGF0ZU5vZGVcIjtcclxuICAgIHRoaXMucHJvY2Vzcy5hZGRSZW5kZXJPYmplY3QoZGlzdG9ydGlvblJPLCBzdWJQbGF0ZU5vZGUpO1xyXG5cclxuICAgIGxldCBzdWJNZW1iZXJOb2RlID0gbmV3IERlc2lnbkJhc2VPYmplY3QoKTtcclxuICAgIHN1Yk1lbWJlck5vZGUubmFtZSA9IFwic3ViTWVtYmVyTm9kZVwiO1xyXG4gICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChkaXN0b3J0aW9uUk8sIHN1Yk1lbWJlck5vZGUpO1xyXG5cclxuICAgIGxldCBzdWJQaWxlTm9kZSA9IG5ldyBEZXNpZ25CYXNlT2JqZWN0KCk7XHJcbiAgICBzdWJQaWxlTm9kZS5uYW1lID0gXCJzdWJQaWxlTm9kZVwiO1xyXG4gICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChkaXN0b3J0aW9uUk8sIHN1YlBpbGVOb2RlKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGpvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgam9pbnQgPSBqb2ludHNbaV07XHJcblxyXG4gICAgICBsZXQgY2xvbmVPYmogPSB0aGlzLnZpZXdlci5wcm9jZXNzLmNsb25lTWFuYWdlci5jbG9uZU9iamVjdChcclxuICAgICAgICBqb2ludFxyXG4gICAgICApIGFzIEpvaW50T2JqZWN0O1xyXG4gICAgICAvLyDorr7nva7kvY3np7tcclxuICAgICAgY2xvbmVPYmoucG9zaXRpb24gPSBuZXdQb3NpdGlvbnNbaV07XHJcblxyXG4gICAgICBjbG9uZU9iai5idXNpbmVzc1N0YXRlID0gQnVzaW5lc3NTdGF0ZS5MaXZpbmc7XHJcbiAgICAgIGNsb25lT2JqLnNldE5lZWRVcGRhdGUoKTtcclxuXHJcbiAgICAgIGpvaW50SWRNYXBDbG9uZU9ialtqb2ludC5pZF0gPSBjbG9uZU9iajtcclxuICAgICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChkaXN0b3J0aW9uUk8sIGNsb25lT2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbWVtYmVyTm9kZSA9IHRoaXMucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5tZW1iZXJOb2RlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW1iZXJOb2RlLmNoaWxkT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgbWVtYmVyID0gbWVtYmVyTm9kZS5jaGlsZE9iamVjdHNbaV0gYXMgTWVtYmVyT2JqZWN0O1xyXG5cclxuICAgICAgbGV0IGNsb25lT2JqID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5jbG9uZU1hbmFnZXIuY2xvbmVPYmplY3QoXHJcbiAgICAgICAgbWVtYmVyXHJcbiAgICAgICkgYXMgTWVtYmVyT2JqZWN0O1xyXG5cclxuICAgICAgaWYgKCFpc0Rpc3BsYXkyKSB7XHJcbiAgICAgICAgY2xvbmVPYmouZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IubWVtYmVyRmFjZUNvbG9yO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCByYXRpbzEgPSBOdW1iZXIocmF0aW9zW2Nsb25lT2JqLnN0YXJ0Lm5hbWVdKTtcclxuICAgICAgICBsZXQgcmF0aW8yID0gTnVtYmVyKHJhdGlvc1tjbG9uZU9iai5lbmQubmFtZV0pO1xyXG4gICAgICAgIGxldCBjb2xvclJlc3VsdCA9IHRoaXMuY3V0bGluZU9iamVjdC5nZXRDb2xvcnNCeURhdGFzKFxyXG4gICAgICAgICAgW3JhdGlvMSwgcmF0aW8yXSxcclxuICAgICAgICAgIHRoaXMuY3V0bGluZU9iamVjdC51Y1JhbmdlcyxcclxuICAgICAgICAgIHRoaXMuY3V0bGluZU9iamVjdC51Y1Jhbmdlc0NvbG9yc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgY2xvbmVPYmouc3RhcnRDb2xvciA9IFtcclxuICAgICAgICAgIGNvbG9yUmVzdWx0WzBdLFxyXG4gICAgICAgICAgY29sb3JSZXN1bHRbMV0sXHJcbiAgICAgICAgICBjb2xvclJlc3VsdFsyXSxcclxuICAgICAgICAgIGNvbG9yUmVzdWx0WzNdLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgY2xvbmVPYmouZW5kQ29sb3IgPSBbXHJcbiAgICAgICAgICBjb2xvclJlc3VsdFs0XSxcclxuICAgICAgICAgIGNvbG9yUmVzdWx0WzVdLFxyXG4gICAgICAgICAgY29sb3JSZXN1bHRbNl0sXHJcbiAgICAgICAgICBjb2xvclJlc3VsdFs3XSxcclxuICAgICAgICBdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjbG9uZU9iai5zdGFydCA9IGpvaW50SWRNYXBDbG9uZU9ialtjbG9uZU9iai5zdGFydC5pZF07XHJcbiAgICAgIGNsb25lT2JqLmVuZCA9IGpvaW50SWRNYXBDbG9uZU9ialtjbG9uZU9iai5lbmQuaWRdO1xyXG5cclxuICAgICAgY2xvbmVPYmouYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuTGl2aW5nO1xyXG4gICAgICBpZiAoY2xvbmVPYmouc3RhcnQgJiYgY2xvbmVPYmouZW5kKSB7XHJcbiAgICAgICAgYWRkZWRNZW1iZXJPYmplY3RzLnB1c2goY2xvbmVPYmopO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBpbGVOb2RlID0gdGhpcy5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLnBpbGVOb2RlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwaWxlTm9kZS5jaGlsZE9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBpbGUgPSBwaWxlTm9kZS5jaGlsZE9iamVjdHNbaV0gYXMgUGlsZU9iamVjdDtcclxuXHJcbiAgICAgIGxldCBjbG9uZU9iaiA9IHRoaXMudmlld2VyLnByb2Nlc3MuY2xvbmVNYW5hZ2VyLmNsb25lT2JqZWN0KFxyXG4gICAgICAgIHBpbGVcclxuICAgICAgKSBhcyBQaWxlT2JqZWN0O1xyXG5cclxuICAgICAgY2xvbmVPYmouZmFjZUNvbG9yID0gT2JqZWN0Q29sb3IubWVtYmVyRmFjZUNvbG9yO1xyXG4gICAgICBjbG9uZU9iai5zdGFydCA9IGpvaW50SWRNYXBDbG9uZU9ialtjbG9uZU9iai5zdGFydC5pZF07XHJcbiAgICAgIGNsb25lT2JqLmVuZCA9IGpvaW50SWRNYXBDbG9uZU9ialtjbG9uZU9iai5lbmQuaWRdO1xyXG5cclxuICAgICAgY2xvbmVPYmouYnVzaW5lc3NTdGF0ZSA9IEJ1c2luZXNzU3RhdGUuTGl2aW5nO1xyXG4gICAgICBpZiAoY2xvbmVPYmouc3RhcnQgJiYgY2xvbmVPYmouZW5kKSB7XHJcbiAgICAgICAgYWRkZWRQaWxlT2JqZWN0cy5wdXNoKGNsb25lT2JqKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGF0ZU5vZGUgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbGF0ZU5vZGUuY2hpbGRPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwbGF0ZSA9IHBsYXRlTm9kZS5jaGlsZE9iamVjdHNbaV0gYXMgUGxhdGVPYmplY3Q7XHJcbiAgICAgIGxldCBjbG9uZU9iaiA9IHRoaXMudmlld2VyLnByb2Nlc3MuY2xvbmVNYW5hZ2VyLmNsb25lT2JqZWN0KFxyXG4gICAgICAgIHBsYXRlXHJcbiAgICAgICkgYXMgUGxhdGVPYmplY3Q7XHJcblxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNsb25lT2JqLmpvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGNsb25lT2JqLmpvaW50c1tqXSA9IGpvaW50SWRNYXBDbG9uZU9ialtwbGF0ZS5qb2ludHNbal0uaWRdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjbG9uZU9iai5idXNpbmVzc1N0YXRlID0gQnVzaW5lc3NTdGF0ZS5MaXZpbmc7XHJcbiAgICAgIGFkZGVkUGxhdGVPYmplY3RzLnB1c2goY2xvbmVPYmopO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkZWRQbGF0ZU9iamVjdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IG9iaiA9IGFkZGVkUGxhdGVPYmplY3RzW2ldO1xyXG4gICAgICBvYmouc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICB0aGlzLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KHN1YlBsYXRlTm9kZSwgb2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFkZGVkTWVtYmVyT2JqZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgb2JqID0gYWRkZWRNZW1iZXJPYmplY3RzW2ldO1xyXG4gICAgICBvYmouc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICB0aGlzLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KHN1Yk1lbWJlck5vZGUsIG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRlZFBpbGVPYmplY3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBvYmogPSBhZGRlZFBpbGVPYmplY3RzW2ldO1xyXG4gICAgICBvYmouc2V0TmVlZFVwZGF0ZSgpO1xyXG4gICAgICB0aGlzLnByb2Nlc3MuYWRkUmVuZGVyT2JqZWN0KHN1YlBpbGVOb2RlLCBvYmopO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6ZqQ6JeP5Y6f57uT5p6EXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbnZpc2libGVTaGFwZSgpIHtcclxuICAgIGxldCB2aWV3ZXIgPSB0aGlzLnZpZXdlcjtcclxuXHJcbiAgICBsZXQgam9pbnRzID0gdGhpcy5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLmpvaW50Tm9kZTtcclxuICAgIGpvaW50cy5jaGlsZE9iamVjdHMuZm9yRWFjaCgocm8pID0+IHtcclxuICAgICAgbGV0IGlybyA9IHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qocm8pO1xyXG4gICAgICBpZiAoaXJvKSB7XHJcbiAgICAgICAgaXJvLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IG1lbWJlcnMgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIubWVtYmVyTm9kZTtcclxuICAgIG1lbWJlcnMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBwbGF0ZXMgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGxhdGVOb2RlO1xyXG4gICAgcGxhdGVzLmNoaWxkT2JqZWN0cy5mb3JFYWNoKChybykgPT4ge1xyXG4gICAgICBsZXQgaXJvID0gdmlld2VyLmZpbmRJbnN0YW5jZU9iamVjdChybyk7XHJcbiAgICAgIGlmIChpcm8pIHtcclxuICAgICAgICBpcm8udmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgcGlsZXMgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIucGlsZU5vZGU7XHJcbiAgICBwaWxlcy5jaGlsZE9iamVjdHMuZm9yRWFjaCgocm8pID0+IHtcclxuICAgICAgbGV0IGlybyA9IHZpZXdlci5maW5kSW5zdGFuY2VPYmplY3Qocm8pO1xyXG4gICAgICBpZiAoaXJvKSB7XHJcbiAgICAgICAgaXJvLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlj5bmtojpmpDol4/ljp/nu5PmnoRcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFySW52aXNpYmxlU2hhcGUoKSB7XHJcbiAgICBsZXQgdmlld2VyID0gdGhpcy52aWV3ZXI7XHJcblxyXG4gICAgbGV0IGpvaW50cyA9IHRoaXMucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5qb2ludE5vZGU7XHJcbiAgICBqb2ludHMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IG1lbWJlcnMgPSB0aGlzLnByb2Nlc3MuY2FlUmVuZGVyT2JqZWN0VHJlZU1hbmFnZXIubWVtYmVyTm9kZTtcclxuICAgIG1lbWJlcnMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHBsYXRlcyA9IHRoaXMucHJvY2Vzcy5jYWVSZW5kZXJPYmplY3RUcmVlTWFuYWdlci5wbGF0ZU5vZGU7XHJcbiAgICBwbGF0ZXMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHBpbGVzID0gdGhpcy5wcm9jZXNzLmNhZVJlbmRlck9iamVjdFRyZWVNYW5hZ2VyLnBpbGVOb2RlO1xyXG4gICAgcGlsZXMuY2hpbGRPYmplY3RzLmZvckVhY2goKHJvKSA9PiB7XHJcbiAgICAgIGxldCBpcm8gPSB2aWV3ZXIuZmluZEluc3RhbmNlT2JqZWN0KHJvKTtcclxuICAgICAgaWYgKGlybykge1xyXG4gICAgICAgIGlyby52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmmL7npLov6ZqQ6JePIOadvy/mnYbku7ZcclxuICAgKiBAcGFyYW0gaXNEaXNwbGF5MSDmmK/lkKbmmL7npLrmnb9cclxuICAgKiBAcGFyYW0gaXNEaXNwbGF5MiDmmK/lkKbmmL7npLrmnYbku7ZcclxuICAgKi9cclxuICBkaXNwbGF5UGxhdGVzQW5kTWVtYmVycygpIHtcclxuICAgIHRoaXMuaW52aXNpYmxlU2hhcGUoKTtcclxuICAgIHRoaXMudmlld2VyLnVwZGF0ZURpc3BsYXkoKTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2hDdXRsaW5lKCkge1xyXG4gICAgLy8g5pi+56S65Zu+5L6LXHJcbiAgICBsZXQgZGF0YSA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXMuaXRlbXNbMF0uZGF0YTtcclxuICAgIGxldCBpbmMgPSBOdW1iZXIoZGF0YS5JTkMudmFsdWUpO1xyXG5cclxuXHJcbiAgICAgIGxldCBmYWN0b3IgPSBkYXRhLmZhY3Rvci52YWx1ZTtcclxuICAgICAgbGV0IGxvZGFjYXNlID0gdGhpcy5wb3N0UmVzdWx0W051bWJlcihpbmMpICsgMV1bMF0uTG9hZENhc2U7XHJcbiAgICAgIGxldCBsb2FkRmFjdG9yID0gdGhpcy5zaGlwSW1wYWN0RmFjdG9yW051bWJlcihpbmMpICsgMV1bMF0uTG9hZEZhY3RvcjtcclxuICAgICAgbGV0IHNwYWNlID0gXCIgICAgIFwiO1xyXG4gICAgICBsZXQgbmV4dExpbmUgPSBcIlxcblwiO1xyXG5cclxuICAgICAgbGV0IGxvYWRGYWN0b3JWYWx1ZSA9IE51bWJlcihsb2FkRmFjdG9yKSBhcyBhbnk7XHJcbiAgICAgIGlmKGxvYWRGYWN0b3JWYWx1ZSkge1xyXG4gICAgICAgIGxvYWRGYWN0b3JWYWx1ZSA9IGxvYWRGYWN0b3JWYWx1ZS50b0ZpeGVkKDIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgcmFuZG9tVmFsdWUgPSAoKE1hdGgucmFuZG9tKCkgLSAwLjUpICogMjAwKTtcclxuICAgICAgbGV0IHZhbHVlID0gKDI4NTEuMjMgKyByYW5kb21WYWx1ZSkudG9GaXhlZCgyKTtcclxuXHJcbiAgICAgIGxldCBjdXRsaW5lSW5mbyA9XHJcbiAgICAgICAgXCLojbfovb3mraVcIiArXHJcbiAgICAgICAgc3BhY2UgK1xyXG4gICAgICAgIGluYyArXHJcbiAgICAgICAgbmV4dExpbmUgK1xyXG4gICAgICAgIFwi5qGp5Z+66I236L2957O75pWwXCIgK1xyXG4gICAgICAgIHNwYWNlICtcclxuICAgICAgICBsb2FkRmFjdG9yVmFsdWUgK1xyXG4gICAgICAgIG5leHRMaW5lICtcclxuICAgICAgICBcIuWfuuW6leWJquWKm1wiICtcclxuICAgICAgICBzcGFjZSArXHJcbiAgICAgICAgdmFsdWUgK1xyXG4gICAgICAgIG5leHRMaW5lICtcclxuICAgICAgICBcIuWPmOW9ouezu+aVsFwiICtcclxuICAgICAgICBzcGFjZSArXHJcbiAgICAgICAgZmFjdG9yICtcclxuICAgICAgICBuZXh0TGluZSArXHJcbiAgICAgICAgXCLojbfovb3lt6XlhrVcIiArXHJcbiAgICAgICAgc3BhY2UgK1xyXG4gICAgICAgIGxvZGFjYXNlO1xyXG5cclxuICAgICAgc3RvcmUuc3RhdGUuaW5mbyA9IGN1dGxpbmVJbmZvO1xyXG4gICAgXHJcblxyXG4gICAgbGV0IGFmdGVydHJlYXRtZW50Uk8gPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRSZW5kZXJPYmplY3RCeU5hbWUoXHJcbiAgICAgIFwi5ZCO5aSE55CG6K6h566X57uT5p6cXCJcclxuICAgICkgYXMgRGVzaWduQmFzZU9iamVjdDtcclxuICAgIGxldCBzaG93U2hpcEltcGFjdFJPID0gdGhpcy52aWV3ZXIucHJvY2Vzcy5maW5kQ2FlT2JqZWN0QnlOYW1lSW5DaGlsZE9iamVjdChcclxuICAgICAgYWZ0ZXJ0cmVhdG1lbnRSTyxcclxuICAgICAgXCLoiLnmkp7liIbmnpDlnKjkvY3mmL7npLpcIlxyXG4gICAgKSBhcyBEZXNpZ25CYXNlT2JqZWN0O1xyXG5cclxuICAgIHNob3dTaGlwSW1wYWN0Uk8gPSBuZXcgRGVzaWduQmFzZU9iamVjdCgpO1xyXG4gICAgc2hvd1NoaXBJbXBhY3RSTy5uYW1lID0gXCLoiLnmkp7liIbmnpDlnKjkvY3mmL7npLpcIjtcclxuICAgIHRoaXMucHJvY2Vzcy5hZGRSZW5kZXJPYmplY3QoYWZ0ZXJ0cmVhdG1lbnRSTywgc2hvd1NoaXBJbXBhY3RSTyk7XHJcbiAgICB0aGlzLmN1dGxpbmVPYmplY3QgPSB0aGlzLnZpZXdlci5wcm9jZXNzLmZpbmRDYWVPYmplY3RCeU5hbWVJbkNoaWxkT2JqZWN0KFxyXG4gICAgICBzaG93U2hpcEltcGFjdFJPLFxyXG4gICAgICBcIuiIueaSnuWIhuaekOWbvuS+i+aVsOaNrlwiXHJcbiAgICApIGFzIEN1dGxpbmVQb3N0Sm9pbnRVQ09iamVjdDtcclxuXHJcbiAgICBpZiAoIXRoaXMuY3V0bGluZU9iamVjdCkge1xyXG4gICAgICAvLyDmt7vliqDlm77kvovmlbDmja5STyjopoHmjIHkuYXljJbkv53lrZgpLlxyXG4gICAgICB0aGlzLmN1dGxpbmVPYmplY3QgPSBuZXcgQ3V0bGluZVBvc3RKb2ludFVDT2JqZWN0KCk7XHJcbiAgICAgIHRoaXMuY3V0bGluZU9iamVjdC5uYW1lID0gXCLoiLnmkp7liIbmnpDlm77kvotcIjtcclxuICAgICAgdGhpcy5jdXRsaW5lT2JqZWN0LmJ1c2luZXNzU3RhdGUgPSBCdXNpbmVzc1N0YXRlLkNyZWF0aW5nO1xyXG4gICAgICB0aGlzLmN1dGxpbmVPYmplY3QudGl0bGUgPSBcIuiIueaSnuWIhuaekFwiO1xyXG4gICAgICB0aGlzLmN1dGxpbmVPYmplY3QudWNSYW5nZXMgPSBbMCwgMC4yNSwgMC41LCAwLjc1LCAxLjBdO1xyXG4gICAgICB0aGlzLmN1dGxpbmVPYmplY3QudWNSYW5nZXNDb2xvcnMgPSBbXHJcbiAgICAgICAgMC44MiwgMC44MiwgMC44MiwgMSwgMC41LCAwLjUsIDAuNSwgMSwgMCwgMSwgMCwgMSwgMSwgMSwgMCwgMSwgMSwgMCwgMCxcclxuICAgICAgICAxLFxyXG4gICAgICBdO1xyXG5cclxuICAgICAgdGhpcy5wcm9jZXNzLmFkZFJlbmRlck9iamVjdChzaG93U2hpcEltcGFjdFJPLCB0aGlzLmN1dGxpbmVPYmplY3QpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy9cclxuICAgIH1cclxuICAgIGxldCBjb21wb25lbnQgPSBMZWdlbmRNYW5hZ2UuY3JlYXRlKFxyXG4gICAgICB0aGlzLmVsZW1lbnRLZXksXHJcbiAgICAgIHRoaXMuY3V0bGluZU9iamVjdC5nZUN1dGxpbmUoKSxcclxuICAgICAgXCLloZHmgKfmr5TkvotcIixcclxuICAgICAgXCLpopzoibJcIixcclxuICAgICAgXCLmr5TkvovlgLxcIlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGF0YVJlcXVlc3RlZCgpIHtcclxuICAgIGxldCBwb3N0SW50ZXJmYWNlTWFuYWdlciA9IHRoaXMudmlld2VyLnBvc3RJbnRlcmZhY2VNYW5hZ2VyO1xyXG4gICAgdGhpcy5wb3N0UmVzdWx0ID0gcG9zdEludGVyZmFjZU1hbmFnZXIuc2hpcEltcGFjdDtcclxuICAgIHRoaXMuc2hpcEltcGFjdEZhY3RvciA9IHBvc3RJbnRlcmZhY2VNYW5hZ2VyLnNoaXBJbXBhY3RGYWN0b3I7XHJcblxyXG4gICAgbGV0IGNvdW50ZXIgPSAwO1xyXG4gICAgZm9yIChsZXQgaSBvZiBPYmplY3Qua2V5cyhwb3N0SW50ZXJmYWNlTWFuYWdlci5zaGlwSW1wYWN0KSkge1xyXG4gICAgICBjb3VudGVyKys7XHJcbiAgICB9XHJcbiAgICBpZiAoY291bnRlciA9PT0gMCkge1xyXG4gICAgICBNZXNzYWdlLmluZm8oXHJcbiAgICAgICAgXCLmn6Xor6JSX0NPTExBUFNFREVGTEVDVElPTlNBTkRSRUFDVElPTkZPUkNF6KGo6L+U5Zue5pWw5o2u5Li656m677yM6K+35qOA5p+lRELmlofku7ZcIlxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25zID0gW107XHJcbiAgICBmb3IgKGxldCBpIG9mIE9iamVjdC5rZXlzKHBvc3RJbnRlcmZhY2VNYW5hZ2VyLnNoaXBJbXBhY3QpKSB7XHJcbiAgICAgIGlmIChwb3N0SW50ZXJmYWNlTWFuYWdlci5zaGlwSW1wYWN0W2ldWzBdKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25zLnB1c2gocG9zdEludGVyZmFjZU1hbmFnZXIuc2hpcEltcGFjdFtpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5maW5pc2hFdmVudCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImV4ZWN1dGUgZmluaXNoRXZlbnQgbGFzdCBzdGVwOlwiICsgdGhpcy5zZWxlY3Rpb25zLmxlbmd0aCk7XHJcbiAgICAgIHRoaXMuZmluaXNoRXZlbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0U2NlbmUoKSB7XHJcbiAgICBzdG9yZS5zdGF0ZS5pbmZvID0gbnVsbDtcclxuICAgIExlZ2VuZE1hbmFnZS5kZXN0b3J5KHRoaXMuZWxlbWVudEtleSk7XHJcbiAgICB0aGlzLmRlbGV0ZVNoaXBJbXBhY3RSTygpO1xyXG4gICAgdGhpcy5jbGVhckludmlzaWJsZVNoYXBlKCk7XHJcbiAgICBsZXQgcG9zdEludGVyZmFjZU1hbmFnZXIgPSB0aGlzLnZpZXdlci5wb3N0SW50ZXJmYWNlTWFuYWdlcjtcclxuICAgIHBvc3RJbnRlcmZhY2VNYW5hZ2VyLmFjdGl2ZV9kaXN0b3J0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFvQkE7QUFBQTtBQXFCQTtBQUFBO0FBcEJBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFJQTs7QUFJQTtBQUVBO0FBQUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBMEJBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFHQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFHQTtBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFJQTtBQUVBO0FBR0E7QUFDQTtBQUNBOztBQUdBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBO0FBR0E7O0FBR0E7QUFFQTtBQUtBO0FBQ0E7QUFJQTs7QUFFQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUdBO0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBSUE7QUFJQTtBQUlBO0FBQ0E7QUFHQTtBQU9BO0FBQ0E7O0FBR0E7QUFDQTtBQUNBOzs7QUFJQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBR0E7OztBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBR0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBOztBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7QUFFQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFLQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUtBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUUE7QUFNQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUlBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7O0FBR0E7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQU1BOztBQVFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7OztBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7O0FBR0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUtBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFFQTtBQXFCQTtBQUdBO0FBR0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUdBO0FBT0E7QUFFQTs7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUFFQTtBQUNBO0FBR0E7O0FBR0E7O0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FBSUE7QUFDQTtBQUNBOztBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7OztBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./packages/caeDesign/src/viewerWrapper/commands/aftertreatment/showShipImpact/commandShowShipImpact.ts\n");
|
|
5854
5854
|
|
|
5855
5855
|
/***/ }),
|
|
5856
5856
|
|