From b5e423db02fe092f89f83472e63c50b273227610 Mon Sep 17 00:00:00 2001 From: tobiu Date: Sun, 18 Aug 2024 16:21:59 +0200 Subject: [PATCH] neo.mjs v6.43.0 --- node_modules/.bin/neo-cc | 1 - node_modules/neo.mjs/apps/portal/view/home/parts/How.mjs | 2 +- .../app/vendors-apps_portal_view_home_MainContainer_mjs.js | 4 ++-- node_modules/neo.mjs/dist/production/chunks/app/6242.js | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) delete mode 120000 node_modules/.bin/neo-cc diff --git a/node_modules/.bin/neo-cc b/node_modules/.bin/neo-cc deleted file mode 120000 index cbe6b922d2..0000000000 --- a/node_modules/.bin/neo-cc +++ /dev/null @@ -1 +0,0 @@ -../neo.mjs/buildScripts/createClass.mjs \ No newline at end of file diff --git a/node_modules/neo.mjs/apps/portal/view/home/parts/How.mjs b/node_modules/neo.mjs/apps/portal/view/home/parts/How.mjs index e3e133e102..2a7eadcf3b 100644 --- a/node_modules/neo.mjs/apps/portal/view/home/parts/How.mjs +++ b/node_modules/neo.mjs/apps/portal/view/home/parts/How.mjs @@ -25,7 +25,7 @@ class How extends FeatureSection { items : [{ cls : 'neo-worker-setup', tag : 'element-loader', - vdom: {src: '../../resources/images/workers-focus.svg'} + vdom: {src: './resources/images/workers-focus.svg'} }] }], /** diff --git a/node_modules/neo.mjs/dist/development/chunks/app/vendors-apps_portal_view_home_MainContainer_mjs.js b/node_modules/neo.mjs/dist/development/chunks/app/vendors-apps_portal_view_home_MainContainer_mjs.js index 47073b2b37..bcd08cb563 100644 --- a/node_modules/neo.mjs/dist/development/chunks/app/vendors-apps_portal_view_home_MainContainer_mjs.js +++ b/node_modules/neo.mjs/dist/development/chunks/app/vendors-apps_portal_view_home_MainContainer_mjs.js @@ -986,7 +986,7 @@ class How extends _FeatureSection_mjs__WEBPACK_IMPORTED_MODULE_0__["default"] { items : [{ cls : 'neo-worker-setup', tag : 'element-loader', - vdom: {src: '../../resources/images/workers-focus.svg'} + vdom: {src: './resources/images/workers-focus.svg'} }] }], /** @@ -1102,4 +1102,4 @@ class MainNeo extends _BaseContainer_mjs__WEBPACK_IMPORTED_MODULE_0__["default"] /***/ }) }]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmtzL2FwcC92ZW5kb3JzLWFwcHNfcG9ydGFsX3ZpZXdfaG9tZV9NYWluQ29udGFpbmVyX21qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsK0RBQUk7QUFDN0I7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFVBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZUFBZTtBQUNuQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsYUFBYTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsYUFBYTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0EsU0FBUztBQUNULGFBQWEsZ0RBQWdEO0FBQzdELGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGVBQWU7QUFDOUIsZUFBZSxlQUFlO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHNCQUFzQjtBQUMzRCxTQUFTOztBQUVUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsYUFBYTtBQUM1QixlQUFlLGFBQWE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGFBQWE7QUFDNUIsZUFBZSxhQUFhO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLDBCQUEwQixFQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3RWdCO0FBQ0c7QUFDRTs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsK0RBQVM7QUFDdEM7QUFDQTtBQUNBLGdCQUFnQixVQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixVQUFVO0FBQzlCO0FBQ0E7QUFD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QUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxtQkFBbUIsRUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0RGE7QUFDZTs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsMERBQWE7QUFDbkM7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFVBQVU7QUFDOUI7QUFDQTs7QUFFQSxpQkFBaUIsK0NBQStDO0FBQ2hFO0FBQ0Esb0JBQW9CLFVBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw0REFBTTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYix3QkFBd0IsNERBQU07QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTs7QUFFQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvQ29udGVudEJveC5tanMiLCJ3ZWJwYWNrOi8vbmVvLm1qcy8uL2FwcHMvcG9ydGFsL3ZpZXcvaG9tZS9GZWF0dXJlU2VjdGlvbi5tanMiLCJ3ZWJwYWNrOi8vbmVvLm1qcy8uL2FwcHMvcG9ydGFsL3ZpZXcvaG9tZS9Gb290ZXJDb250YWluZXIubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvTWFpbkNvbnRhaW5lci5tanMiLCJ3ZWJwYWNrOi8vbmVvLm1qcy8uL2FwcHMvcG9ydGFsL3ZpZXcvaG9tZS9wYXJ0cy9BZnRlck1hdGgubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvcGFydHMvQmFzZUNvbnRhaW5lci5tanMiLCJ3ZWJwYWNrOi8vbmVvLm1qcy8uL2FwcHMvcG9ydGFsL3ZpZXcvaG9tZS9wYXJ0cy9Db2xvcnMubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvcGFydHMvRmVhdHVyZXMubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvcGFydHMvSGVsaXgubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvcGFydHMvSG93Lm1qcyIsIndlYnBhY2s6Ly9uZW8ubWpzLy4vYXBwcy9wb3J0YWwvdmlldy9ob21lL3BhcnRzL01haW5OZW8ubWpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvQmFzZS5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLkNvbnRlbnRCb3hcbiAqIEBleHRlbmRzIE5lby5jb21wb25lbnQuQmFzZVxuICovXG5jbGFzcyBDb250ZW50Qm94IGV4dGVuZHMgQmFzZSB7XG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLkNvbnRlbnRCb3gnXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzTmFtZTogJ1BvcnRhbC52aWV3LmhvbWUuQ29udGVudEJveCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gYmFzZUNscz1bJ3BvcnRhbC1jb250ZW50LWJveCddXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGJhc2VDbHM6IFsncG9ydGFsLWNvbnRlbnQtYm94J10sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXXxudWxsfSBjb250ZW50Xz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBjb250ZW50XzogbnVsbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ3xudWxsfSBoZWFkZXJfPW51bGxcbiAgICAgICAgICovXG4gICAgICAgIGhlYWRlcl86IG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd8bnVsbH0gcm91dGVfPW51bGxcbiAgICAgICAgICovXG4gICAgICAgIHJvdXRlXzogbnVsbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdH0gX3Zkb21cbiAgICAgICAgICovXG4gICAgICAgIF92ZG9tOlxuICAgICAgICB7dGFnOiAnYScsIGNuOiBbXG4gICAgICAgICAgICB7dGFnOiAnaDMnLCBjbHM6IFsncG9ydGFsLWNvbnRlbnQtYm94LWhlYWRsaW5lJ119LFxuICAgICAgICAgICAge3RhZzogJ3VsJywgY2xzOiBbJ3BvcnRhbC1jb250ZW50LWJveC1jb250ZW50J10sIGNuOiBbXX1cbiAgICAgICAgXX1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGNvbnRlbnQgY29uZmlnIGdvdCBjaGFuZ2VkXG4gICAgICogQHBhcmFtIHtTdHJpbmdbXXxudWxsfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nW118bnVsbH0gb2xkVmFsdWVcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgYWZ0ZXJTZXRDb250ZW50KHZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgICB2YWx1ZT8uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIHRoaXMudmRvbS5jblsxXS5jbi5wdXNoKHt0YWc6ICdsaScsIGh0bWw6IGl0ZW19KVxuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMudXBkYXRlKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGhlYWRlciBjb25maWcgZ290IGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xudWxsfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfG51bGx9IG9sZFZhbHVlXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGFmdGVyU2V0SGVhZGVyKHZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLnZkb20uY25bMF0uaHRtbCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGFmdGVyIHRoZSByb3V0ZSBjb25maWcgZ290IGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xudWxsfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfG51bGx9IG9sZFZhbHVlXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGFmdGVyU2V0Um91dGUodmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgICAgIHRoaXMudmRvbS5ocmVmID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlKClcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5lby5zZXR1cENsYXNzKENvbnRlbnRCb3gpO1xuIiwiaW1wb3J0IEJ1dHRvbiAgICAgIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9idXR0b24vQmFzZS5tanMnO1xuaW1wb3J0IENvbnRhaW5lciAgIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb250YWluZXIvQmFzZS5tanMnO1xuaW1wb3J0IExpdmVQcmV2aWV3IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb2RlL0xpdmVQcmV2aWV3Lm1qcyc7XG5cbi8qKlxuICogQGNsYXNzIFBvcnRhbC52aWV3LmhvbWUuRmVhdHVyZVNlY3Rpb25cbiAqIEBleHRlbmRzIE5lby5jb250YWluZXIuQmFzZVxuICovXG5jbGFzcyBGZWF0dXJlU2VjdGlvbiBleHRlbmRzIENvbnRhaW5lciB7XG4gICAgLyoqXG4gICAgICogVmFsaWQgdmFsdWVzIGZvciB0ZXh0Q29udGFpbmVyUG9zaXRpb25cbiAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gdGV4dENvbnRhaW5lclBvc2l0aW9ucz1bJ3N0YXJ0JywnZW5kJ11cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHN0YXRpY1xuICAgICAqL1xuICAgIHN0YXRpYyB0ZXh0Q29udGFpbmVyUG9zaXRpb25zID0gWydzdGFydCcsICdlbmQnXVxuXG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLkZlYXR1cmVTZWN0aW9uJ1xuICAgICAgICAgKiBAcHJvdGVjdGVkXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc05hbWU6ICdQb3J0YWwudmlldy5ob21lLkZlYXR1cmVTZWN0aW9uJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ1tdfSBiYXNlQ2xzPVsncG9ydGFsLWhvbWUtZmVhdHVyZS1zZWN0aW9uJywnbmVvLWNvbnRhaW5lciddXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGJhc2VDbHM6IFsncG9ydGFsLWhvbWUtZmVhdHVyZS1zZWN0aW9uJywgJ25lby1jb250YWluZXInXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgTGl2ZVByZXZpZXcsIHVzZSB0aGUgY29uZmlnIGxpdmVQcmV2aWV3Q29kZS5cbiAgICAgICAgICogRm9yIGN1c3RvbSBjb250ZW50LCB1c2UgdGhpcyBjb25maWcgaW5zdGVhZC5cbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0W118bnVsbH0gY29udGVudEl0ZW1zXz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBjb250ZW50SXRlbXNfOiBudWxsLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfG51bGx9IGhlYWRsaW5lXz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBoZWFkbGluZV86IG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd8bnVsbH0gbGVhcm5Nb3JlUm91dGVfPW51bGxcbiAgICAgICAgICovXG4gICAgICAgIGxlYXJuTW9yZVJvdXRlXzogbnVsbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ3xudWxsfSBsaXZlUHJldmlld0NvZGVfPW51bGxcbiAgICAgICAgICovXG4gICAgICAgIGxpdmVQcmV2aWV3Q29kZV86IG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd8bnVsbH0gcGFyYWdyYXBoXz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBwYXJhZ3JhcGhfOiBudWxsLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfG51bGx9IHN1YkhlYWRsaW5lXz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBzdWJIZWFkbGluZV86IG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWYWxpZCB2YWx1ZXM6ICdzdGFydCcgb3IgJ2VuZCdcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSB0ZXh0Q29udGFpbmVyUG9zaXRpb25fPSdzdGFydCdcbiAgICAgICAgICovXG4gICAgICAgIHRleHRDb250YWluZXJQb3NpdGlvbl86ICdzdGFydCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGxheW91dD0nYmFzZSdcbiAgICAgICAgICovXG4gICAgICAgIGxheW91dDogJ2Jhc2UnLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0W119IGl0ZW1zXG4gICAgICAgICAqL1xuICAgICAgICBpdGVtczogW3tcbiAgICAgICAgICAgIG1vZHVsZTogQ29udGFpbmVyLFxuICAgICAgICAgICAgY2xzICAgOiBbJ3BvcnRhbC1jb250ZW50LXRleHQnXSxcbiAgICAgICAgICAgIGxheW91dDogJ2Jhc2UnLFxuICAgICAgICAgICAgaXRlbXMgOiBbe1xuICAgICAgICAgICAgICAgIGNscyAgICAgIDogJ25lby1oMScsXG4gICAgICAgICAgICAgICAgZmxleCAgICAgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlOiAnaGVhZGxpbmUnLFxuICAgICAgICAgICAgICAgIHRhZyAgICAgIDogJ2gxJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGNscyAgICAgIDogJ25lby1oMicsXG4gICAgICAgICAgICAgICAgZmxleCAgICAgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlOiAnc3ViLWhlYWRsaW5lJyxcbiAgICAgICAgICAgICAgICB0YWcgICAgICA6ICdoMidcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBmbGV4ICAgICA6ICdub25lJyxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2U6ICdwYXJhZ3JhcGgnLFxuICAgICAgICAgICAgICAgIHRhZyAgICAgIDogJ3AnXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgbW9kdWxlICAgOiBCdXR0b24sXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlOiAnbGVhcm4tbW9yZS1idXR0b24nLFxuICAgICAgICAgICAgICAgIHRleHQgICAgIDogJ0xlYXJuIG1vcmUnLFxuICAgICAgICAgICAgICAgIHVpICAgICAgIDogJ3NlY29uZGFyeSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1vZHVsZSAgIDogQ29udGFpbmVyLFxuICAgICAgICAgICAgY2xzICAgICAgOiAncG9ydGFsLWNvbnRlbnQtd3JhcHBlcicsXG4gICAgICAgICAgICBsYXlvdXQgICA6ICdmaXQnLFxuICAgICAgICAgICAgcmVmZXJlbmNlOiAncG9ydGFsLWNvbnRlbnQtd3JhcHBlcidcbiAgICAgICAgfV1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIGFzeW5jIGFjdGl2YXRlKCkge1xuICAgICAgICBsZXQgbWUgICAgICAgPSB0aGlzLFxuICAgICAgICAgICAge3BhcmVudH0gPSBtZTtcblxuICAgICAgICBpZiAobWUubGl2ZVByZXZpZXdDb2RlKSB7XG4gICAgICAgICAgICBhd2FpdCBtZS50aW1lb3V0KDEwMDApO1xuXG4gICAgICAgICAgICBpZiAocGFyZW50LmFjdGl2ZVBhcnRzSWQgPT09IG1lLmlkICYmIHBhcmVudC5tb3VudGVkKSB7XG4gICAgICAgICAgICAgICAgbWUuZ2V0UmVmZXJlbmNlKCdsaXZlLXByZXZpZXcnKS5hY3RpdmVWaWV3ID0gJ3ByZXZpZXcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGNvbnRlbnRJdGVtcyBjb25maWcgZ290IGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge09iamVjdFtdfG51bGx9IHZhbHVlXG4gICAgICogQHBhcmFtIHtPYmplY3RbXXxudWxsfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldENvbnRlbnRJdGVtcyh2YWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPz89IFt7XG4gICAgICAgICAgICBtb2R1bGUgICA6IExpdmVQcmV2aWV3LFxuICAgICAgICAgICAgY2xzICAgICAgOiBbJ3BhZ2UtbGl2ZS1wcmV2aWV3J10sXG4gICAgICAgICAgICByZWZlcmVuY2U6ICdsaXZlLXByZXZpZXcnLFxuICAgICAgICAgICAgdmFsdWUgICAgOiB0aGlzLmxpdmVQcmV2aWV3Q29kZVxuICAgICAgICB9XVxuXG4gICAgICAgIHRoaXMuZ2V0SXRlbSgncG9ydGFsLWNvbnRlbnQtd3JhcHBlcicpLml0ZW1zID0gdmFsdWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGxlYXJuTW9yZVJvdXRlIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldExlYXJuTW9yZVJvdXRlKHZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLmdldEl0ZW0oJ2xlYXJuLW1vcmUtYnV0dG9uJykucm91dGUgPSB2YWx1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCBhZnRlciB0aGUgaGVhZGxpbmUgY29uZmlnIGdvdCBjaGFuZ2VkXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG9sZFZhbHVlXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGFmdGVyU2V0SGVhZGxpbmUodmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZ2V0SXRlbSgnaGVhZGxpbmUnKS5odG1sID0gdmFsdWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGxpdmVQcmV2aWV3Q29kZSBjb25maWcgZ290IGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gb2xkVmFsdWVcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgYWZ0ZXJTZXRMaXZlUHJldmlld0NvZGUodmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgICAgIC8vIHRoZSBpbml0aWFsIHZhbHVlIHdpbGwgZ2V0IGhhbmRsZWQgdmlhIGFmdGVyU2V0Q29udGVudEl0ZW1zKClcbiAgICAgICAgaWYgKG9sZFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdldEl0ZW0oJ2xpdmUtcHJldmlldycpLnZhbHVlID0gdmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCBhZnRlciB0aGUgcGFyYWdyYXBoIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldFBhcmFncmFwaCh2YWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5nZXRJdGVtKCdwYXJhZ3JhcGgnKS5odG1sID0gdmFsdWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIHN1YkhlYWRsaW5lIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldFN1YkhlYWRsaW5lKHZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLmdldEl0ZW0oJ3N1Yi1oZWFkbGluZScpLmh0bWwgPSB2YWx1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCBhZnRlciB0aGUgdGV4dENvbnRhaW5lclBvc2l0aW9uIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldFRleHRDb250YWluZXJQb3NpdGlvbih2YWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgICAgdGhpcy50b2dnbGVDbHMoJ3BvcnRhbC1wb3NpdGlvbi1lbmQnLCB2YWx1ZSA9PT0gJ2VuZCcpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGJlZm9yZSB0aGUgdGV4dENvbnRhaW5lclBvc2l0aW9uIGNvbmZpZyBnZXRzIGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gb2xkVmFsdWVcbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBiZWZvcmVTZXRUZXh0Q29udGFpbmVyUG9zaXRpb24odmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJlZm9yZVNldEVudW1WYWx1ZSh2YWx1ZSwgb2xkVmFsdWUsICd0ZXh0Q29udGFpbmVyUG9zaXRpb24nKVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoRmVhdHVyZVNlY3Rpb24pO1xuIiwiaW1wb3J0IEJ1dHRvbiAgICBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYnV0dG9uL0Jhc2UubWpzJztcbmltcG9ydCBDb21wb25lbnQgZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9CYXNlLm1qcyc7XG5pbXBvcnQgQ29udGFpbmVyIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb250YWluZXIvQmFzZS5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLkZvb3RlckNvbnRhaW5lclxuICogQGV4dGVuZHMgTmVvLmNvbnRhaW5lci5CYXNlXG4gKi9cbmNsYXNzIEZvb3RlckNvbnRhaW5lciBleHRlbmRzIENvbnRhaW5lciB7XG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLkZvb3RlckNvbnRhaW5lcidcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuaG9tZS5Gb290ZXJDb250YWluZXInLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nW119IGNscz1bJ3BvcnRhbC1ob21lLWZvb3Rlci1jb250YWluZXInXVxuICAgICAgICAgKi9cbiAgICAgICAgY2xzOiBbJ3BvcnRhbC1ob21lLWZvb3Rlci1jb250YWluZXInXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdH0gaXRlbURlZmF1bHRzXG4gICAgICAgICAqL1xuICAgICAgICBpdGVtRGVmYXVsdHM6IHtcbiAgICAgICAgICAgIG1vZHVsZTogQ29udGFpbmVyLFxuICAgICAgICAgICAgY2xzICAgOiBbJ3BvcnRhbC1ob21lLWZvb3Rlci1zZWN0aW9uJ10sXG4gICAgICAgICAgICBsYXlvdXQ6IHtudHlwZTogJ3Zib3gnLCBhbGlnbjogJ3N0YXJ0J30sXG5cbiAgICAgICAgICAgIGl0ZW1EZWZhdWx0czoge1xuICAgICAgICAgICAgICAgIG1vZHVsZTogQnV0dG9uLFxuICAgICAgICAgICAgICAgIHVpICAgIDogJ2dob3N0J1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0W119IGl0ZW1zXG4gICAgICAgICAqL1xuICAgICAgICBpdGVtczogW3tcbiAgICAgICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAgICAgIG1vZHVsZTogQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNscyAgIDogWyduZW8taDInXSxcbiAgICAgICAgICAgICAgICBodG1sICA6ICdDb250ZW50JyxcbiAgICAgICAgICAgICAgICB0YWcgICA6ICdoMidcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBpY29uQ2xzOiAnZmFzIGZhLXBlb3BsZS1ncm91cCcsXG4gICAgICAgICAgICAgICAgcm91dGUgIDogJy9hYm91dC11cycsXG4gICAgICAgICAgICAgICAgdGV4dCAgIDogJ0Fib3V0IFVzJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYXMgZmEtYm9vaycsXG4gICAgICAgICAgICAgICAgcm91dGUgIDogJy9kb2NzJyxcbiAgICAgICAgICAgICAgICB0ZXh0ICAgOiAnQVBJIERvY3MnXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgaWNvbkNsczogJ2ZhcyBmYS1ibG9nJyxcbiAgICAgICAgICAgICAgICByb3V0ZSAgOiAnL2Jsb2cnLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdCbG9nJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYXMgZmEtZ3JhZHVhdGlvbi1jYXAnLFxuICAgICAgICAgICAgICAgIHJvdXRlICA6ICcvbGVhcm4nLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdMZWFybidcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBpY29uQ2xzOiAnZmFzIGZhLWhhbmRzaGFrZS1hbmdsZScsXG4gICAgICAgICAgICAgICAgcm91dGUgIDogJy9zZXJ2aWNlcycsXG4gICAgICAgICAgICAgICAgdGV4dCAgIDogJ1NlcnZpY2VzJ1xuICAgICAgICAgICAgfV1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgaXRlbXM6IFt7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgY2xzICAgOiBbJ25lby1oMiddLFxuICAgICAgICAgICAgICAgIGh0bWwgIDogJ0NvbW11bml0eScsXG4gICAgICAgICAgICAgICAgdGFnICAgOiAnaDInXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgaWNvbkNsczogJ2ZhLWJyYW5kcyBmYS1naXRodWInLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdDb250cmlidXRlJyxcbiAgICAgICAgICAgICAgICB1cmwgICAgOiAnaHR0cHM6Ly9naXRodWIuY29tL25lb21qcy9uZW8vYmxvYi9kZXYvQ09OVFJJQlVUSU5HLm1kJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtZ2l0aHViJyxcbiAgICAgICAgICAgICAgICB0ZXh0ICAgOiAnQ29kZSBvZiBDb25kdWN0JyxcbiAgICAgICAgICAgICAgICB1cmwgICAgOiAnaHR0cHM6Ly9naXRodWIuY29tL25lb21qcy9uZW8vYmxvYi9kZXYvLmdpdGh1Yi9DT0RFX09GX0NPTkRVQ1QubWQnXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgaWNvbkNsczogJ2ZhLWJyYW5kcyBmYS1naXRodWInLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdSZXBvcnQgSXNzdWVzJyxcbiAgICAgICAgICAgICAgICB1cmwgICAgOiAnaHR0cHM6Ly9naXRodWIuY29tL25lb21qcy9uZW8vaXNzdWVzJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtc2xhY2snLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdTbGFjaycsXG4gICAgICAgICAgICAgICAgdXJsICAgIDogJ2h0dHBzOi8vam9pbi5zbGFjay5jb20vdC9uZW9tanMvc2hhcmVkX2ludml0ZS96dC02YzUwdWVldS0zRTF+TTRUOXhrTm5ifk1fcHJFRU9BJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtZGlzY29yZCcsXG4gICAgICAgICAgICAgICAgdGV4dCAgIDogJ0Rpc2NvcmQnLFxuICAgICAgICAgICAgICAgIHVybCAgICA6ICdodHRwczovL2Rpc2NvcmQuZ2cvNnA4cGFQcSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAgICAgIG1vZHVsZTogQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNscyAgIDogWyduZW8taDInXSxcbiAgICAgICAgICAgICAgICBodG1sICA6ICdTb2NpYWwgTWVkaWEnLFxuICAgICAgICAgICAgICAgIHRhZyAgIDogJ2gyJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtbGlua2VkaW4nLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdMaW5rZWRJbicsXG4gICAgICAgICAgICAgICAgdXJsICAgIDogJ2h0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L25lby1tanMvJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtZmFjZWJvb2snLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdGYWNlYm9vaycsXG4gICAgICAgICAgICAgICAgdXJsICAgIDogJ2h0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9uZW8ubWpzJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEteC10d2l0dGVyJyxcbiAgICAgICAgICAgICAgICB0ZXh0ICAgOiAnWCcsXG4gICAgICAgICAgICAgICAgdXJsICAgIDogJ2h0dHBzOi8veC5jb20vbmVvbWpzMSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH1dLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0fSBsYXlvdXQ9e250eXBlOidoYm94JyxhbGlnbjonc3RyZXRjaCd9XG4gICAgICAgICAqL1xuICAgICAgICBsYXlvdXQ6IHtudHlwZTogJ2hib3gnLCBhbGlnbjogJ3N0cmV0Y2gnfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gdGFnPSdmb290ZXInXG4gICAgICAgICAqL1xuICAgICAgICB0YWc6ICdmb290ZXInXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOZW8uc2V0dXBDbGFzcyhGb290ZXJDb250YWluZXIpO1xuIiwiaW1wb3J0IEFmdGVyTWF0aCBmcm9tICcuL3BhcnRzL0FmdGVyTWF0aC5tanMnO1xuaW1wb3J0IENvbG9ycyAgICBmcm9tICcuL3BhcnRzL0NvbG9ycy5tanMnO1xuaW1wb3J0IENvbnRhaW5lciBmcm9tICcuLi8uLi8uLi8uLi9zcmMvY29udGFpbmVyL0Jhc2UubWpzJztcbmltcG9ydCBGZWF0dXJlcyAgZnJvbSAnLi9wYXJ0cy9GZWF0dXJlcy5tanMnO1xuaW1wb3J0IEhlbGl4ICAgICBmcm9tICcuL3BhcnRzL0hlbGl4Lm1qcyc7XG5pbXBvcnQgSG93ICAgICAgIGZyb20gJy4vcGFydHMvSG93Lm1qcyc7XG5pbXBvcnQgTWFpbk5lbyAgIGZyb20gJy4vcGFydHMvTWFpbk5lby5tanMnO1xuXG4vLyBpbXBvcnQgUmVmZXJlbmNlcyBmcm9tICcuL3BhcnRzL1JlZmVyZW5jZXMubWpzJztcblxuLyoqXG4gKiBAY2xhc3MgUG9ydGFsLnZpZXcuaG9tZS5NYWluQ29udGFpbmVyXG4gKiBAZXh0ZW5kcyBOZW8uY29udGFpbmVyLkJhc2VcbiAqL1xuY2xhc3MgTWFpbkNvbnRhaW5lciBleHRlbmRzIENvbnRhaW5lciB7XG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLk1haW5Db250YWluZXInXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzTmFtZTogJ1BvcnRhbC52aWV3LmhvbWUuTWFpbkNvbnRhaW5lcicsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gY2xzPVsncG9ydGFsLWhvbWUtbWFpbmNvbnRhaW5lciddXG4gICAgICAgICAqL1xuICAgICAgICBjbHM6IFsncG9ydGFsLWhvbWUtbWFpbmNvbnRhaW5lciddLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0W119IGRvbUxpc3RlbmVyc1xuICAgICAgICAgKi9cbiAgICAgICAgZG9tTGlzdGVuZXJzOiBbe1xuICAgICAgICAgICAgaW50ZXJzZWN0KGRhdGEpIHtcbiAgICAgICAgICAgICAgICBsZXQgaWQgPSBkYXRhLnBhdGhbMV0uaWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVQYXJ0c0lkID0gaWQ7XG4gICAgICAgICAgICAgICAgTmVvLmdldENvbXBvbmVudChpZCk/LmFjdGl2YXRlPy4oKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjcm9sbChldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2xzLmluY2x1ZGVzKCdwb3J0YWwtaG9tZS1tYWluY29udGFpbmVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVDbHMoJ2hpZGUtc2lkZWJhcicsIGV2ZW50LnNjcm9sbFRvcCA+IDgwKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfV0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtPYmplY3R9IGl0ZW1EZWZhdWx0c1xuICAgICAgICAgKi9cbiAgICAgICAgaXRlbURlZmF1bHRzOiB7XG4gICAgICAgICAgICBmbGV4OiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdFtdfSBpdGVtc1xuICAgICAgICAgKi9cbiAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgIHtudHlwZTogJ2NvbXBvbmVudCcsIGNsczogWydwb3J0YWwtaG9tZS1wcm9ncmVzcyddfSxcbiAgICAgICAgICAgIE1haW5OZW8sXG4gICAgICAgICAgICBGZWF0dXJlcyxcbiAgICAgICAgICAgIEhlbGl4LFxuICAgICAgICAgICAgQ29sb3JzLFxuICAgICAgICAgICAgSG93LFxuICAgICAgICAgICAgLy8gUmVmZXJlbmNlcyxcbiAgICAgICAgICAgIEFmdGVyTWF0aFxuICAgICAgICBdLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7Qm9vbGVhbn0gc2Nyb2xsYWJsZT10cnVlXG4gICAgICAgICAqL1xuICAgICAgICBzY3JvbGxhYmxlOiB0cnVlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW50ZXJuYWwgZmxhZyBjb250YWluaW5nIHRoZSBpZCBvZiB0aGUgY3VycmVudGx5IHZpc2libGUgcGFydHMgaXRlbVxuICAgICAqIEBtZW1iZXIge1N0cmluZ3xudWxsfSBhY3RpdmVQYXJ0c0lkPW51bGxcbiAgICAgKi9cbiAgICBhY3RpdmVQYXJ0c0lkID0gbnVsbFxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGFmdGVyIHRoZSBtb3VudGVkIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gdmFsdWVcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IG9sZFZhbHVlXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGFmdGVyU2V0TW91bnRlZCh2YWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgICAgc3VwZXIuYWZ0ZXJTZXRNb3VudGVkKHZhbHVlLCBvbGRWYWx1ZSk7XG5cbiAgICAgICAgbGV0IG1lICAgICAgICAgICAgID0gdGhpcyxcbiAgICAgICAgICAgIHtpZCwgd2luZG93SWR9ID0gbWU7XG5cbiAgICAgICAgdmFsdWUgJiYgbWUudGltZW91dCg1MCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBOZW8ubWFpbi5hZGRvbi5JbnRlcnNlY3Rpb25PYnNlcnZlci5yZWdpc3Rlcih7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgOiAnaXNWaXNpYmxlJyxcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBvYnNlcnZlICA6IFsnLnBvcnRhbC1jb250ZW50LXdyYXBwZXInXSxcbiAgICAgICAgICAgICAgICByb290ICAgICA6IGAjJHtpZH1gLFxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMS4wLFxuICAgICAgICAgICAgICAgIHdpbmRvd0lkXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoTWFpbkNvbnRhaW5lcik7XG4iLCJpbXBvcnQgQmFzZUNvbnRhaW5lciAgIGZyb20gJy4vQmFzZUNvbnRhaW5lci5tanMnO1xuaW1wb3J0IEZvb3RlckNvbnRhaW5lciBmcm9tICcuLi9Gb290ZXJDb250YWluZXIubWpzJztcblxuLyoqXG4gKiBAY2xhc3MgUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5BZnRlck1hdGhcbiAqIEBleHRlbmRzIFBvcnRhbC52aWV3LmhvbWUucGFydHMuQmFzZUNvbnRhaW5lclxuICovXG5jbGFzcyBBZnRlck1hdGggZXh0ZW5kcyBCYXNlQ29udGFpbmVyIHtcbiAgICBzdGF0aWMgY29uZmlnID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBjbGFzc05hbWU9J1BvcnRhbC52aWV3LmhvbWUucGFydHMuQWZ0ZXJNYXRoJ1xuICAgICAgICAgKiBAcHJvdGVjdGVkXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc05hbWU6ICdQb3J0YWwudmlldy5ob21lLnBhcnRzLkFmdGVyTWF0aCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gY2xzPVsncG9ydGFsLWhvbWUtYWZ0ZXJtYXRoJ11cbiAgICAgICAgICovXG4gICAgICAgIGNsczogWydwb3J0YWwtaG9tZS1hZnRlcm1hdGgnXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdH0gbGF5b3V0PXtudHlwZTondmJveCcsYWxpZ246J3N0cmV0Y2gnLHBhY2s6J2NlbnRlcid9XG4gICAgICAgICAqL1xuICAgICAgICBsYXlvdXQ6IHtudHlwZTogJ3Zib3gnLCBhbGlnbjogJ3N0cmV0Y2gnLCBwYWNrOiAnY2VudGVyJ30sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtPYmplY3RbXX0gaXRlbXNcbiAgICAgICAgICovXG4gICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAgZmxleDogMVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjbHMgOiBbJ25lby1oMSddLFxuICAgICAgICAgICAgZmxleDogJ25vbmUnLFxuICAgICAgICAgICAgaHRtbDogJ05leHQgU3RlcHMnLFxuICAgICAgICAgICAgdGFnIDogJ2gxJ1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjbHMgOiBbJ25lby1jb250ZW50J10sXG4gICAgICAgICAgICBmbGV4OiAnbm9uZScsXG4gICAgICAgICAgICBodG1sOiBgXG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgIFRvIGxlYXJuIG1vcmUgYWJvdXQgTmVvLm1qcyBwbGVhc2UgcmVhZCA8YSBocmVmPVwiIy9sZWFyblwiPnRoZSBMZWFybmluZyBTZWN0aW9uPC9hPiBvciBicm93c2UgPGEgaHJlZj1cIiMvYmxvZ1wiPnRoZSBibG9nPC9hPi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgVG8gYXJyYW5nZSBhIGRlbW8gb3IgdG8gdGFsayB0byBhbiBlbmdpbmVlciBlbWFpbCA8YSBocmVmPVwibWFpbHRvOmluZm9AbmVvbWpzLmNvbVwiPmluZm9AbmVvbWpzLmNvbTwvYT4uIFxuICAgICAgICAgICAgPGJyPkZvciBoZWxwIHN0YXJ0aW5nIGEgcHJvamVjdCBlbWFpbCA8YSBocmVmPVwibWFpbHRvOnNlcnZpY2VzQG5lb21qcy5jb21cIj5zZXJ2aWNlc0BuZW9tanMuY29tPC9hPi4gXG4gICAgICAgICAgICA8YnI+Rm9yIHF1ZXN0aW9ucyBhYm91dCBwcml2YXRlIHRyYWluaW5nIGVtYWlsIDxhIGhyZWY9XCJtYWlsdG86dHJhaW5pbmdAbmVvbWpzLmNvbVwiPnRyYWluaW5nQG5lb21qcy5jb208L2E+LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgYCxcbiAgICAgICAgICAgIHRhZyA6ICdkaXYnXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZsZXg6IDFcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbW9kdWxlOiBGb290ZXJDb250YWluZXIsXG4gICAgICAgICAgICBmbGV4ICA6ICdub25lJ1xuICAgICAgICB9XVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoQWZ0ZXJNYXRoKTtcbiIsImltcG9ydCBDb250YWluZXIgZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2NvbnRhaW5lci9CYXNlLm1qcyc7XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWxsIHZpZXdzIGluc2lkZSB0aGUgbGFuZGluZyBwYWdlXG4gKiBAY2xhc3MgUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5CYXNlQ29udGFpbmVyXG4gKiBAZXh0ZW5kcyBOZW8uY29udGFpbmVyLkJhc2VcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBCYXNlQ29udGFpbmVyIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgICBzdGF0aWMgY29uZmlnID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBjbGFzc05hbWU9J1BvcnRhbC52aWV3LmhvbWUucGFydHMuQmFzZUNvbnRhaW5lcidcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5CYXNlQ29udGFpbmVyJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ1tdfSBjbHM9Wydwb3J0YWwtaG9tZS1jb250ZW50LXZpZXcnLCduZW8tY29udGFpbmVyJ11cbiAgICAgICAgICovXG4gICAgICAgIGJhc2VDbHM6IFsncG9ydGFsLWhvbWUtY29udGVudC12aWV3JywgJ25lby1jb250YWluZXInXVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhvb2sgd2hpY2ggd2lsbCB0cmlnZ2VyIHdoZW5ldmVyIHRoZSBjb250YWluZXIgZnVsbHkgZ2V0cyBzY3JvbGxlZCBpbnRvIHRoZSB2aXNpYmxlIGFyZWEuXG4gICAgICogT3ZlcnJpZGUgaXQgYXMgbmVlZGVkLlxuICAgICAqL1xuICAgIGFjdGl2YXRlKCkge31cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoQmFzZUNvbnRhaW5lcik7XG4iLCJpbXBvcnQgRmVhdHVyZVNlY3Rpb24gZnJvbSAnLi4vRmVhdHVyZVNlY3Rpb24ubWpzJztcblxuLyoqXG4gKiBAY2xhc3MgUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5Db2xvcnNcbiAqIEBleHRlbmRzIFBvcnRhbC52aWV3LmhvbWUuRmVhdHVyZVNlY3Rpb25cbiAqL1xuY2xhc3MgQ29sb3JzIGV4dGVuZHMgRmVhdHVyZVNlY3Rpb24ge1xuICAgIHN0YXRpYyBjb25maWcgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGNsYXNzTmFtZT0nUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5Db2xvcnMnXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzTmFtZTogJ1BvcnRhbC52aWV3LmhvbWUucGFydHMuQ29sb3JzJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ1tdfSBjbHM9Wydwb3J0YWwtaG9tZS1wYXJ0cy1jb2xvcnMnXVxuICAgICAgICAgKi9cbiAgICAgICAgY2xzOiBbJ3BvcnRhbC1ob21lLXBhcnRzLWNvbG9ycyddLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBoZWFkbGluZT0nQW1hemluZyBQb3RlbnRpYWwnXG4gICAgICAgICAqL1xuICAgICAgICBoZWFkbGluZTogJ0FtYXppbmcgUG90ZW50aWFsJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gbGVhcm5Nb3JlUm91dGU9JyMvbGVhcm4vV2h5TmVvLVNwZWVkJ1xuICAgICAgICAgKi9cbiAgICAgICAgbGVhcm5Nb3JlUm91dGU6ICcjL2xlYXJuL1doeU5lby1TcGVlZCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGxpdmVQcmV2aWV3Q29kZVxuICAgICAgICAgKi9cbiAgICAgICAgbGl2ZVByZXZpZXdDb2RlOiBbXG4gICAgICAgICAgICBcImltcG9ydCBWaWV3cG9ydCBmcm9tICcuLi8uLi9hcHBzL2NvbG9ycy92aWV3L1ZpZXdwb3J0Lm1qcyc7XCIsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgXCJjbGFzcyBNYWluVmlldyBleHRlbmRzIFZpZXdwb3J0IHtcIixcbiAgICAgICAgICAgIFwiICAgIHN0YXRpYyBjb25maWcgPSB7XCIsXG4gICAgICAgICAgICBcIiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuQ29sb3JzJyxcIixcbiAgICAgICAgICAgIFwiICAgICAgICB0aGVtZSAgICA6ICduZW8tdGhlbWUtZGFyaydcIixcbiAgICAgICAgICAgIFwiICAgIH1cIixcbiAgICAgICAgICAgIFwifVwiLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiTmVvLnNldHVwQ2xhc3MoTWFpblZpZXcpO1wiXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IHBhcmFncmFwaFxuICAgICAgICAgKi9cbiAgICAgICAgcGFyYWdyYXBoOiBbXG4gICAgICAgICAgICAnVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBIZWxpeCBkZW1vICZtZGFzaDsgaXRcXCdzIGFuIGV4dHJlbWVseSBmYXN0IG11bHRpLXdpbmRvdyBhcHAuIENsaWNrIHRoZSBzdGFydCBidXR0b24gJyxcbiAgICAgICAgICAgICd0byBzZWUgdGhlIHZpZXcgcmVmbGVjdCBjaGFuZ2VzIGluIHRoZSBkYXRhLiBBbmQgdGhlIGFwcCBpcyBtdWx0aS13aW5kb3c6IHRoZSB0YWJsZSBhbmQgY2hhcnRzIGNhbiBiZSAnLFxuICAgICAgICAgICAgJ3VuZG9ja2VkIGludG8gdGhlaXIgb3duIHdpbmRvd3MuIEluIGZhY3QsIHRoZSBlbnRpcmUgZGVtbyBjYW4gYmUgdW5kb2NrZWQuJ1xuICAgICAgICBdLmpvaW4oJycpLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBzdWJIZWFkbGluZT0nU29ja2V0IERhdGEnXG4gICAgICAgICAqL1xuICAgICAgICBzdWJIZWFkbGluZTogJ1NvY2tldCBEYXRhJ1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoQ29sb3JzKTtcbiIsImltcG9ydCBCYXNlQ29udGFpbmVyIGZyb20gJy4vQmFzZUNvbnRhaW5lci5tanMnO1xuaW1wb3J0IENvbnRlbnRCb3ggICAgZnJvbSAnLi4vQ29udGVudEJveC5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLkZlYXR1cmVzXG4gKiBAZXh0ZW5kcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLkJhc2VDb250YWluZXJcbiAqL1xuY2xhc3MgRmVhdHVyZXMgZXh0ZW5kcyBCYXNlQ29udGFpbmVyIHtcbiAgICBzdGF0aWMgY29uZmlnID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBjbGFzc05hbWU9J1BvcnRhbC52aWV3LmhvbWUucGFydHMuRmVhdHVyZXMnXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzTmFtZTogJ1BvcnRhbC52aWV3LmhvbWUucGFydHMuRmVhdHVyZXMnLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nW119IGNscz1bJ3BvcnRhbC1ob21lLWZlYXR1cmVzJ11cbiAgICAgICAgICovXG4gICAgICAgIGNsczogWydwb3J0YWwtaG9tZS1mZWF0dXJlcyddLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0fFN0cmluZ30gbGF5b3V0PSdncmlkJ1xuICAgICAgICAgKi9cbiAgICAgICAgbGF5b3V0OiAnZ3JpZCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtPYmplY3R9IGl0ZW1EZWZhdWx0c1xuICAgICAgICAgKi9cbiAgICAgICAgaXRlbURlZmF1bHRzOiB7XG4gICAgICAgICAgICBtb2R1bGU6IENvbnRlbnRCb3hcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdFtdfSBpdGVtc1xuICAgICAgICAgKi9cbiAgICAgICAgaXRlbXM6IFt7XG4gICAgICAgICAgICBoZWFkZXI6ICdNdWx0aS10aHJlYWRpbmcnLFxuICAgICAgICAgICAgcm91dGUgOiAnIy9sZWFybi9XaHlOZW8tUXVpY2snLFxuXG4gICAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICAgICAgJ0ZvbGxvd2luZyB0aGUgT01UIChPZmYgdGhlIE1haW4tVGhyZWFkKSBwYXJhZGlnbScsXG4gICAgICAgICAgICAgICAgJ1lvdXIgQXBwcyAmIHRoZSBGcmFtZXdvcmsgbGl2ZSB3aXRoaW4gYW4gQXBwbGljYXRpb24gV29ya2VyJyxcbiAgICAgICAgICAgICAgICAnTm9uLWJsb2NraW5nLCBuby1mcmVlemUsIHVzZXIgaW50ZXJhY3Rpb24gcmVzcG9uc2VzLCBldmVuIGZvciBoZWF2eSBkYXRhIGkvbywgcHJvY2Vzc2luZywgYW5kIGludGVuc2l2ZSwgY29tcGxleCBzY3JlZW4gdXBkYXRpbmcnLFxuICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsIFdvcmtlcnMgZm9yIE9mZnNjcmVlbkNhbnZhcywgRGF0YSwgRGVsdGEtVXBkYXRlcyAmIFRhc2tzJyxcbiAgICAgICAgICAgICAgICAnQSBTZXJ2aWNlV29ya2VyIGNvbm5lY3RlZCB0byB0aGUgQXBwIFdvcmtlciBmb3IgcHJlZGljdGl2ZSBDYWNoaW5nJ1xuICAgICAgICAgICAgXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBoZWFkZXI6ICdNdWx0aS1XaW5kb3cgQXBwcycsXG4gICAgICAgICAgICByb3V0ZSA6ICcjL2xlYXJuL1doeU5lby1RdWljaycsXG5cbiAgICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgICAgICAnTm8gbmVlZCBmb3IgYSBOYXRpdmUgU2hlbGwgKGUuZy4gRWxlY3Ryb24pJyxcbiAgICAgICAgICAgICAgICAnU2hhcmluZyBEYXRhIGFjcm9zcyBXaW5kb3dzJyxcbiAgICAgICAgICAgICAgICAnU2hhcmluZyBTdGF0ZSBhY3Jvc3MgV2luZG93cycsXG4gICAgICAgICAgICAgICAgJ01vdmluZyBDb21wb25lbnRzIGFjcm9zcyBXaW5kb3dzIHdoaWxlIGtlZXBpbmcgdGhlIHNhbWUgSlMgaW5zdGFuY2VzJ1xuICAgICAgICAgICAgXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBoZWFkZXI6ICdNb2Rlcm4gSlMgaW4geW91ciBCcm93c2VyJyxcbiAgICAgICAgICAgIHJvdXRlIDogJyMvbGVhcm4vV2h5TmVvLVF1aWNrJyxcblxuICAgICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAgICAgICdUaGUgRGV2LU1vZGUgcnVucyB3aXRob3V0IHRoZSBuZWVkIGZvciBUcmFuc3BpbGF0aW9ucyBvciBDb21waWxhdGlvbnMnLFxuICAgICAgICAgICAgICAgICdVc2luZyB0aGUgbGF0ZXN0IEVDTUFTY3JpcHQgRmVhdHVyZXMsIGFzIHNvb24gYXMgdGhlIEJyb3dzZXIgU3VwcG9ydCBpcyB0aGVyZScsXG4gICAgICAgICAgICAgICAgJ1NpbXBsZSBhbmQgcG93ZXJmdWwgRGVidWdnaW5nJyxcbiAgICAgICAgICAgICAgICAnUmVkdWNlZCBEZXZlbG9wbWVudCBDb3N0cydcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgaGVhZGVyOiAnUG93ZXJmdWwgQ29tcG9uZW50LUxpYnJhcnknLFxuICAgICAgICAgICAgcm91dGUgOiAnIy9sZWFybi9XaHlOZW8tUXVpY2snLFxuXG4gICAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICAgICAgJ0RlY2xhcmF0aXZlIENvbXBvbmVudC1UcmVlcycsXG4gICAgICAgICAgICAgICAgJ0hpZ2ggT3JkZXIgQ29tcG9uZW50cycsXG4gICAgICAgICAgICAgICAgJ01hbnkgb3V0LW9mLXRoZS1ib3ggQ29tcG9uZW50cywgaW5jbHVkaW5nIG5lc3RlZCBsYXp5LWxvYWRlZCBmb3JtcycsXG4gICAgICAgICAgICAgICAgJ011bHRpcGxlIHRoZW1lcywgd2hpY2ggY2FuIGdldCBuZXN0ZWQnXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGhlYWRlcjogJ0VsZWdhbnQgU3RhdGUgTWFuYWdlbWVudCcsXG4gICAgICAgICAgICByb3V0ZSA6ICcjL2xlYXJuL1doeU5lby1TcGVlZCcsXG5cbiAgICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgICAgICAnTXVsdGlwbGUgY29tbXVuaWNhdGluZyBTdGF0ZS1Qcm92aWRlcnMnLFxuICAgICAgICAgICAgICAgICdPYnNlcnZhYmxlJyxcbiAgICAgICAgICAgICAgICAnU3VwcG9ydGluZyBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyBsaWtlIE1WVk0gd2l0aG91dCBlbmZvcmNpbmcgdGhlbSdcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgaGVhZGVyOiAnQ29yZSBGZWF0dXJlcycsXG4gICAgICAgICAgICByb3V0ZSA6ICcjL2xlYXJuL1doeU5lby1TcGVlZCcsXG5cbiAgICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgICAgICAnUlBDIExheWVyIChjcm9zcy1yZWFsbSwgaW5jbHVkaW5nIEJhY2tlbmRzKScsXG4gICAgICAgICAgICAgICAgJ0V4dGVuc2liaWxpdHknLFxuICAgICAgICAgICAgICAgICdTY2FsYWJpbGl0eScsXG4gICAgICAgICAgICAgICAgJ0NsYXNzIENvbmZpZyBTeXN0ZW0nLFxuICAgICAgICAgICAgICAgICdEcmFnICYgRHJvcCcsXG4gICAgICAgICAgICAgICAgJ01peGlucywgUGx1Z2lucyAmIE1haW4tVGhyZWFkIEFkZG9ucydcbiAgICAgICAgICAgIF1cbiAgICAgICAgfV1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5lby5zZXR1cENsYXNzKEZlYXR1cmVzKTtcbiIsImltcG9ydCBGZWF0dXJlU2VjdGlvbiBmcm9tICcuLi9GZWF0dXJlU2VjdGlvbi5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLkhlbGl4XG4gKiBAZXh0ZW5kcyBQb3J0YWwudmlldy5ob21lLkZlYXR1cmVTZWN0aW9uXG4gKi9cbmNsYXNzIEhlbGl4IGV4dGVuZHMgRmVhdHVyZVNlY3Rpb24ge1xuICAgIHN0YXRpYyBjb25maWcgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGNsYXNzTmFtZT0nUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5IZWxpeCdcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5IZWxpeCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gY2xzPVsncG9ydGFsLWhvbWUtcGFydHMtaGVsaXgnXVxuICAgICAgICAgKi9cbiAgICAgICAgY2xzOiBbJ3BvcnRhbC1ob21lLXBhcnRzLWhlbGl4J10sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGhlYWRsaW5lPSdFeHRyZW1lIFNwZWVkJ1xuICAgICAgICAgKi9cbiAgICAgICAgaGVhZGxpbmU6ICdFeHRyZW1lIFNwZWVkJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gbGVhcm5Nb3JlUm91dGU9JyMvbGVhcm4vV2h5TmVvLVNwZWVkJ1xuICAgICAgICAgKi9cbiAgICAgICAgbGVhcm5Nb3JlUm91dGU6ICcjL2xlYXJuL1doeU5lby1TcGVlZCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGxpdmVQcmV2aWV3Q29kZVxuICAgICAgICAgKi9cbiAgICAgICAgbGl2ZVByZXZpZXdDb2RlOiBbXG4gICAgICAgICAgICBcImltcG9ydCBWaWV3cG9ydCBmcm9tICcuLi8uLi9leGFtcGxlcy9jb21wb25lbnQvbXVsdGlXaW5kb3dIZWxpeC9WaWV3cG9ydC5tanMnO1wiLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiY2xhc3MgTWFpblZpZXcgZXh0ZW5kcyBWaWV3cG9ydCB7XCIsXG4gICAgICAgICAgICBcIiAgICBzdGF0aWMgY29uZmlnID0ge1wiLFxuICAgICAgICAgICAgXCIgICAgICAgIGNsYXNzTmFtZSAgICAgICAgICAgOiAnUG9ydGFsLnZpZXcuTXVsdGlXaW5kb3dIZWxpeCcsXCIsXG4gICAgICAgICAgICBcIiAgICAgICAgc2hvd0dpdEh1YlN0YXJCdXR0b246IGZhbHNlLFwiLFxuICAgICAgICAgICAgXCIgICAgICAgIHRoZW1lICAgICAgICAgICAgICAgOiAnbmVvLXRoZW1lLWRhcmsnXCIsXG4gICAgICAgICAgICBcIiAgICB9XCIsXG4gICAgICAgICAgICBcIn1cIixcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIk5lby5zZXR1cENsYXNzKE1haW5WaWV3KTtcIlxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBwYXJhZ3JhcGhcbiAgICAgICAgICovXG4gICAgICAgIHBhcmFncmFwaDogW1xuICAgICAgICAgICAgJ1RoaXMgZGVtbyBzaG93cyB0aGUgTmVvLm1qcyBoZWxpeCBjb21wb25lbnQsIGFsb25nIHdpdGggYSBcIkhlbGl4IENvbnRyb2xzXCIgcGFuZWwuICcsXG4gICAgICAgICAgICAnTW92ZSB5b3VyIGN1cnNvciBvdmVyIHRoZSBoZWxpeCwgdGhlbiByYXBpZGx5IHNjcm9sbCBsZWZ0IGFuZCByaWdodCB0byByb3RhdGUsIGFuZCB1cCBhbmQgZG93biB0byB6b29tLiAnLFxuICAgICAgICAgICAgJ0FzIHlvdSBkbywgbG9vayBhdCB0aGUgZGVsdGEgdXBkYXRlcyBjb3VudGVyIGF0IHRoZSB0b3AuICcsXG4gICAgICAgICAgICAnTmVvLm1qcyBlYXNpbHkgaGFuZGxlcyA0MCwwMDAgdXBkYXRlcyBwZXIgc2Vjb25kLCBhbmQgYmV5b25kLidcbiAgICAgICAgXS5qb2luKCcnKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gc3ViSGVhZGxpbmU9JzQwLDAwMCBVcGRhdGVzIC9zJ1xuICAgICAgICAgKi9cbiAgICAgICAgc3ViSGVhZGxpbmU6ICc0MCwwMDAgVXBkYXRlcyAvcydcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5lby5zZXR1cENsYXNzKEhlbGl4KTtcbiIsImltcG9ydCBGZWF0dXJlU2VjdGlvbiBmcm9tICcuLi9GZWF0dXJlU2VjdGlvbi5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLkhvd1xuICogQGV4dGVuZHMgUG9ydGFsLnZpZXcuaG9tZS5GZWF0dXJlU2VjdGlvblxuICovXG5jbGFzcyBIb3cgZXh0ZW5kcyBGZWF0dXJlU2VjdGlvbiB7XG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLnBhcnRzLkhvdydcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5Ib3cnLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nW119IGNscz1bJ3BvcnRhbC1ob21lLXBhcnRzLWhvdyddXG4gICAgICAgICAqL1xuICAgICAgICBjbHM6IFsncG9ydGFsLWhvbWUtcGFydHMtaG93J10sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtPYmplY3RbXX0gY29udGVudEl0ZW1zXG4gICAgICAgICAqL1xuICAgICAgICBjb250ZW50SXRlbXM6IFt7XG4gICAgICAgICAgICBudHlwZSA6ICdjb250YWluZXInLFxuICAgICAgICAgICAgY2xzICAgOiAncG9ydGFsLWNvbnRlbnQtY29udGFpbmVyJyxcbiAgICAgICAgICAgIGxheW91dDogJ2ZpdCcsXG4gICAgICAgICAgICBpdGVtcyA6IFt7XG4gICAgICAgICAgICAgICAgY2xzIDogJ25lby13b3JrZXItc2V0dXAnLFxuICAgICAgICAgICAgICAgIHRhZyA6ICdlbGVtZW50LWxvYWRlcicsXG4gICAgICAgICAgICAgICAgdmRvbToge3NyYzogJy4uLy4uL3Jlc291cmNlcy9pbWFnZXMvd29ya2Vycy1mb2N1cy5zdmcnfVxuICAgICAgICAgICAgfV1cbiAgICAgICAgfV0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGhlYWRsaW5lPSdIb3c/J1xuICAgICAgICAgKi9cbiAgICAgICAgaGVhZGxpbmU6ICdIb3c/JyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gbGVhcm5Nb3JlUm91dGU9JyMvbGVhcm4vV2h5TmVvLVNwZWVkJ1xuICAgICAgICAgKi9cbiAgICAgICAgbGVhcm5Nb3JlUm91dGU6ICcjL2xlYXJuL2JlbmVmaXRzLk11bHRpLVRocmVhZGluZycsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IHBhcmFncmFwaFxuICAgICAgICAgKi9cbiAgICAgICAgcGFyYWdyYXBoOiBbXG4gICAgICAgICAgICAnV2hlbiBhIE5lby5tanMgYXBwIGxhdW5jaGVzIDMrIHdlYndvcmtlcnMgYXJlIHNwYXduZWQ6IG9uZSB0aGF0IGhvbGRzIEFwcCBsb2dpYywgb25lIGZvciBjYWxjdWxhdGluZyBkZWx0YSBET00gJyxcbiAgICAgICAgICAgICd1cGRhdGVzLCBhbmQgb25lIGZvciBiYWNrZW5kIGNhbGxzLiBFYWNoIHdlYndvcmtlciBydW5zIGluIGl0cyBvd24gdGhyZWFkLCBhbmQgdGh1cywgaW4gaXRzIG93biBwcm9jZXNzb3IgY29yZS4gJyxcbiAgICAgICAgICAgICdUaGlzIG1lYW5zIHRoZXNlIHByb2Nlc3NlcyBydW4gaW4gcGFyYWxsZWw6IERPTSB1cGRhdGVzIGFuZCB0cmFuc2l0aW9ucyBhcmUgbm90IGFmZmVjdGVkIGJ5IHlvdXIgQXBwIGxvZ2ljICcsXG4gICAgICAgICAgICAnYW5kIGFsd2F5cyBydW4gc21vb3RoLiBFdmVyeSBwcm9jZXNzb3ItaW50ZW5zaXZlIHRhc2sgcnVucyBvdXRzaWRlIHRoZSBNYWluIFRocmVhZC4nXG4gICAgICAgIF0uam9pbignJyksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IHN1YkhlYWRsaW5lPSdIb3cgZG9lcyBOZW8ubWpzIGRvIGl0PydcbiAgICAgICAgICovXG4gICAgICAgIHN1YkhlYWRsaW5lOiAnSG93IGRvZXMgTmVvLm1qcyBkbyBpdD8nXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOZW8uc2V0dXBDbGFzcyhIb3cpO1xuIiwiaW1wb3J0IEJhc2VDb250YWluZXIgZnJvbSAnLi9CYXNlQ29udGFpbmVyLm1qcyc7XG5pbXBvcnQgQnV0dG9uICAgICAgICBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMvYnV0dG9uL0Jhc2UubWpzJztcblxuLyoqXG4gKiBAY2xhc3MgUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5NYWluTmVvXG4gKiBAZXh0ZW5kcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLkJhc2VDb250YWluZXJcbiAqL1xuY2xhc3MgTWFpbk5lbyBleHRlbmRzIEJhc2VDb250YWluZXIge1xuICAgIHN0YXRpYyBjb25maWcgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGNsYXNzTmFtZT0nUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5NYWluTmVvJ1xuICAgICAgICAgKiBAcHJvdGVjdGVkXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc05hbWU6ICdQb3J0YWwudmlldy5ob21lLnBhcnRzLk1haW5OZW8nLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nW119IGNscz1bJ3BvcnRhbC1ob21lLW1haW4tbmVvJ11cbiAgICAgICAgICovXG4gICAgICAgIGNsczogWydwb3J0YWwtaG9tZS1tYWluLW5lbyddLFxuXG4gICAgICAgIGxheW91dDoge250eXBlOiAndmJveCcsIGFsaWduOiAnY2VudGVyJywgcGFjazogJ2NlbnRlcid9LFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0W119IGl0ZW1zXG4gICAgICAgICAqL1xuICAgICAgICBpdGVtczogW3tcbiAgICAgICAgICAgIG50eXBlOiAnY29udGFpbmVyJyxcbiAgICAgICAgICAgIGNscyAgOiBbJ2xvZ28tY29udGFpbmVyJ10sXG4gICAgICAgICAgICBpdGVtczogW3tcbiAgICAgICAgICAgICAgICBudHlwZTogJ2NvbnRhaW5lcicsXG4gICAgICAgICAgICAgICAgY2xzICA6IFsndmVjdG9yJ11cbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBjbHMgOiBbJ25lby1oMSddLFxuICAgICAgICAgICAgICAgIGh0bWw6ICdOZW8ubWpzJyxcbiAgICAgICAgICAgICAgICB0YWcgOiAnaDEnXG4gICAgICAgICAgICB9XVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjbHMgOiBbJ25lby1oMiddLFxuICAgICAgICAgICAgZmxleDogJ25vbmUnLFxuICAgICAgICAgICAgaHRtbDogJ01vZGVybiBFbnRlcnByaXNlLVJlYWR5IEphdmFTY3JpcHQgRnJhbWV3b3JrJyxcbiAgICAgICAgICAgIHRhZyA6ICdoMidcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgY2xzIDogWyduZW8taDMnXSxcbiAgICAgICAgICAgIGZsZXg6ICdub25lJyxcbiAgICAgICAgICAgIGh0bWw6ICdOZW8ubWpzIHByb3ZpZGVzIGEgbmV3IGFwcHJvYWNoIGZvciBidWlsZGluZyBmZWF0dXJlLXJpY2ggd2ViIGFwcGxpY2F0aW9ucy4gSW5jcmVhc2UgcHJvZHVjdGl2aXR5IGJ5IGxldmVyYWdpbmcgYSB2YXN0IGNvbXBvbmVudCBsaWJyYXJ5IGFuZCBoYXJuZXNzIHRoZSBwb3dlciBvZiBtdWx0aS10aHJlYWRpbmcgZm9yIGV4dHJlbWUgcmVhbC10aW1lIHBlcmZvcm1hbmNlLicsXG4gICAgICAgICAgICB0YWcgOiAnaDMnXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG50eXBlOiAnY29udGFpbmVyJyxcbiAgICAgICAgICAgIGNscyAgOiBbJ2J1dHRvbi1ncm91cCddLFxuICAgICAgICAgICAgZmxleCA6ICdub25lJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAgICAgIG1vZHVsZTogQnV0dG9uLFxuICAgICAgICAgICAgICAgIGNscyAgIDogWydnZXQtc3RhcnRlZC1idXR0b24nXSxcbiAgICAgICAgICAgICAgICBmbGV4ICA6ICdub25lJyxcbiAgICAgICAgICAgICAgICByb3V0ZSA6ICcvbGVhcm4nLFxuICAgICAgICAgICAgICAgIHRleHQgIDogJ0dldCBzdGFydGVkJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIG1vZHVsZTogQnV0dG9uLFxuICAgICAgICAgICAgICAgIGNscyAgIDogWyduZW8tZ2l0aHViJ10sXG4gICAgICAgICAgICAgICAgZmxleCAgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgdGV4dCAgOiAnVmlldyBvbiBHaXRIdWInLFxuICAgICAgICAgICAgICAgIHVpICAgIDogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgICAgdXJsICAgOiAnaHR0cHM6Ly9naXRodWIuY29tL25lb21qcy9uZW8nXG4gICAgICAgICAgICB9XVxuICAgICAgICB9XVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoTWFpbk5lbyk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmtzL2FwcC92ZW5kb3JzLWFwcHNfcG9ydGFsX3ZpZXdfaG9tZV9NYWluQ29udGFpbmVyX21qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFzRDs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsK0RBQUk7QUFDN0I7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFVBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZUFBZTtBQUNuQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsYUFBYTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsYUFBYTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0EsU0FBUztBQUNULGFBQWEsZ0RBQWdEO0FBQzdELGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGVBQWU7QUFDOUIsZUFBZSxlQUFlO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHNCQUFzQjtBQUMzRCxTQUFTOztBQUVUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsYUFBYTtBQUM1QixlQUFlLGFBQWE7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGFBQWE7QUFDNUIsZUFBZSxhQUFhO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlFQUFlLDBCQUEwQixFQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3RWdCO0FBQ0c7QUFDRTs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsK0RBQVM7QUFDdEM7QUFDQTtBQUNBLGdCQUFnQixVQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixVQUFVO0FBQzlCO0FBQ0E7QUFD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QUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsUUFBUTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpRUFBZSxtQkFBbUIsRUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0RGE7QUFDZTs7QUFFL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsMERBQWE7QUFDbkM7QUFDQTtBQUNBLG9CQUFvQixRQUFRO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFVBQVU7QUFDOUI7QUFDQTs7QUFFQSxpQkFBaUIsK0NBQStDO0FBQ2hFO0FBQ0Esb0JBQW9CLFVBQVU7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw0REFBTTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYix3QkFBd0IsNERBQU07QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTs7QUFFQSxpRUFBZSx1QkFBdUIsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvQ29udGVudEJveC5tanMiLCJ3ZWJwYWNrOi8vbmVvLm1qcy8uL2FwcHMvcG9ydGFsL3ZpZXcvaG9tZS9GZWF0dXJlU2VjdGlvbi5tanMiLCJ3ZWJwYWNrOi8vbmVvLm1qcy8uL2FwcHMvcG9ydGFsL3ZpZXcvaG9tZS9Gb290ZXJDb250YWluZXIubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvTWFpbkNvbnRhaW5lci5tanMiLCJ3ZWJwYWNrOi8vbmVvLm1qcy8uL2FwcHMvcG9ydGFsL3ZpZXcvaG9tZS9wYXJ0cy9BZnRlck1hdGgubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvcGFydHMvQmFzZUNvbnRhaW5lci5tanMiLCJ3ZWJwYWNrOi8vbmVvLm1qcy8uL2FwcHMvcG9ydGFsL3ZpZXcvaG9tZS9wYXJ0cy9Db2xvcnMubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvcGFydHMvRmVhdHVyZXMubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvcGFydHMvSGVsaXgubWpzIiwid2VicGFjazovL25lby5tanMvLi9hcHBzL3BvcnRhbC92aWV3L2hvbWUvcGFydHMvSG93Lm1qcyIsIndlYnBhY2s6Ly9uZW8ubWpzLy4vYXBwcy9wb3J0YWwvdmlldy9ob21lL3BhcnRzL01haW5OZW8ubWpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvQmFzZS5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLkNvbnRlbnRCb3hcbiAqIEBleHRlbmRzIE5lby5jb21wb25lbnQuQmFzZVxuICovXG5jbGFzcyBDb250ZW50Qm94IGV4dGVuZHMgQmFzZSB7XG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLkNvbnRlbnRCb3gnXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzTmFtZTogJ1BvcnRhbC52aWV3LmhvbWUuQ29udGVudEJveCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gYmFzZUNscz1bJ3BvcnRhbC1jb250ZW50LWJveCddXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGJhc2VDbHM6IFsncG9ydGFsLWNvbnRlbnQtYm94J10sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXXxudWxsfSBjb250ZW50Xz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBjb250ZW50XzogbnVsbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ3xudWxsfSBoZWFkZXJfPW51bGxcbiAgICAgICAgICovXG4gICAgICAgIGhlYWRlcl86IG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd8bnVsbH0gcm91dGVfPW51bGxcbiAgICAgICAgICovXG4gICAgICAgIHJvdXRlXzogbnVsbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdH0gX3Zkb21cbiAgICAgICAgICovXG4gICAgICAgIF92ZG9tOlxuICAgICAgICB7dGFnOiAnYScsIGNuOiBbXG4gICAgICAgICAgICB7dGFnOiAnaDMnLCBjbHM6IFsncG9ydGFsLWNvbnRlbnQtYm94LWhlYWRsaW5lJ119LFxuICAgICAgICAgICAge3RhZzogJ3VsJywgY2xzOiBbJ3BvcnRhbC1jb250ZW50LWJveC1jb250ZW50J10sIGNuOiBbXX1cbiAgICAgICAgXX1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGNvbnRlbnQgY29uZmlnIGdvdCBjaGFuZ2VkXG4gICAgICogQHBhcmFtIHtTdHJpbmdbXXxudWxsfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nW118bnVsbH0gb2xkVmFsdWVcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgYWZ0ZXJTZXRDb250ZW50KHZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgICB2YWx1ZT8uZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIHRoaXMudmRvbS5jblsxXS5jbi5wdXNoKHt0YWc6ICdsaScsIGh0bWw6IGl0ZW19KVxuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMudXBkYXRlKClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGhlYWRlciBjb25maWcgZ290IGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xudWxsfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfG51bGx9IG9sZFZhbHVlXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGFmdGVyU2V0SGVhZGVyKHZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLnZkb20uY25bMF0uaHRtbCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnVwZGF0ZSgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGFmdGVyIHRoZSByb3V0ZSBjb25maWcgZ290IGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ3xudWxsfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfG51bGx9IG9sZFZhbHVlXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGFmdGVyU2V0Um91dGUodmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgICAgIHRoaXMudmRvbS5ocmVmID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlKClcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5lby5zZXR1cENsYXNzKENvbnRlbnRCb3gpO1xuIiwiaW1wb3J0IEJ1dHRvbiAgICAgIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9idXR0b24vQmFzZS5tanMnO1xuaW1wb3J0IENvbnRhaW5lciAgIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb250YWluZXIvQmFzZS5tanMnO1xuaW1wb3J0IExpdmVQcmV2aWV3IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb2RlL0xpdmVQcmV2aWV3Lm1qcyc7XG5cbi8qKlxuICogQGNsYXNzIFBvcnRhbC52aWV3LmhvbWUuRmVhdHVyZVNlY3Rpb25cbiAqIEBleHRlbmRzIE5lby5jb250YWluZXIuQmFzZVxuICovXG5jbGFzcyBGZWF0dXJlU2VjdGlvbiBleHRlbmRzIENvbnRhaW5lciB7XG4gICAgLyoqXG4gICAgICogVmFsaWQgdmFsdWVzIGZvciB0ZXh0Q29udGFpbmVyUG9zaXRpb25cbiAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gdGV4dENvbnRhaW5lclBvc2l0aW9ucz1bJ3N0YXJ0JywnZW5kJ11cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHN0YXRpY1xuICAgICAqL1xuICAgIHN0YXRpYyB0ZXh0Q29udGFpbmVyUG9zaXRpb25zID0gWydzdGFydCcsICdlbmQnXVxuXG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLkZlYXR1cmVTZWN0aW9uJ1xuICAgICAgICAgKiBAcHJvdGVjdGVkXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc05hbWU6ICdQb3J0YWwudmlldy5ob21lLkZlYXR1cmVTZWN0aW9uJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ1tdfSBiYXNlQ2xzPVsncG9ydGFsLWhvbWUtZmVhdHVyZS1zZWN0aW9uJywnbmVvLWNvbnRhaW5lciddXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGJhc2VDbHM6IFsncG9ydGFsLWhvbWUtZmVhdHVyZS1zZWN0aW9uJywgJ25lby1jb250YWluZXInXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgTGl2ZVByZXZpZXcsIHVzZSB0aGUgY29uZmlnIGxpdmVQcmV2aWV3Q29kZS5cbiAgICAgICAgICogRm9yIGN1c3RvbSBjb250ZW50LCB1c2UgdGhpcyBjb25maWcgaW5zdGVhZC5cbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0W118bnVsbH0gY29udGVudEl0ZW1zXz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBjb250ZW50SXRlbXNfOiBudWxsLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfG51bGx9IGhlYWRsaW5lXz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBoZWFkbGluZV86IG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd8bnVsbH0gbGVhcm5Nb3JlUm91dGVfPW51bGxcbiAgICAgICAgICovXG4gICAgICAgIGxlYXJuTW9yZVJvdXRlXzogbnVsbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ3xudWxsfSBsaXZlUHJldmlld0NvZGVfPW51bGxcbiAgICAgICAgICovXG4gICAgICAgIGxpdmVQcmV2aWV3Q29kZV86IG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd8bnVsbH0gcGFyYWdyYXBoXz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBwYXJhZ3JhcGhfOiBudWxsLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfG51bGx9IHN1YkhlYWRsaW5lXz1udWxsXG4gICAgICAgICAqL1xuICAgICAgICBzdWJIZWFkbGluZV86IG51bGwsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWYWxpZCB2YWx1ZXM6ICdzdGFydCcgb3IgJ2VuZCdcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSB0ZXh0Q29udGFpbmVyUG9zaXRpb25fPSdzdGFydCdcbiAgICAgICAgICovXG4gICAgICAgIHRleHRDb250YWluZXJQb3NpdGlvbl86ICdzdGFydCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGxheW91dD0nYmFzZSdcbiAgICAgICAgICovXG4gICAgICAgIGxheW91dDogJ2Jhc2UnLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0W119IGl0ZW1zXG4gICAgICAgICAqL1xuICAgICAgICBpdGVtczogW3tcbiAgICAgICAgICAgIG1vZHVsZTogQ29udGFpbmVyLFxuICAgICAgICAgICAgY2xzICAgOiBbJ3BvcnRhbC1jb250ZW50LXRleHQnXSxcbiAgICAgICAgICAgIGxheW91dDogJ2Jhc2UnLFxuICAgICAgICAgICAgaXRlbXMgOiBbe1xuICAgICAgICAgICAgICAgIGNscyAgICAgIDogJ25lby1oMScsXG4gICAgICAgICAgICAgICAgZmxleCAgICAgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlOiAnaGVhZGxpbmUnLFxuICAgICAgICAgICAgICAgIHRhZyAgICAgIDogJ2gxJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGNscyAgICAgIDogJ25lby1oMicsXG4gICAgICAgICAgICAgICAgZmxleCAgICAgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlOiAnc3ViLWhlYWRsaW5lJyxcbiAgICAgICAgICAgICAgICB0YWcgICAgICA6ICdoMidcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBmbGV4ICAgICA6ICdub25lJyxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2U6ICdwYXJhZ3JhcGgnLFxuICAgICAgICAgICAgICAgIHRhZyAgICAgIDogJ3AnXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgbW9kdWxlICAgOiBCdXR0b24sXG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlOiAnbGVhcm4tbW9yZS1idXR0b24nLFxuICAgICAgICAgICAgICAgIHRleHQgICAgIDogJ0xlYXJuIG1vcmUnLFxuICAgICAgICAgICAgICAgIHVpICAgICAgIDogJ3NlY29uZGFyeSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1vZHVsZSAgIDogQ29udGFpbmVyLFxuICAgICAgICAgICAgY2xzICAgICAgOiAncG9ydGFsLWNvbnRlbnQtd3JhcHBlcicsXG4gICAgICAgICAgICBsYXlvdXQgICA6ICdmaXQnLFxuICAgICAgICAgICAgcmVmZXJlbmNlOiAncG9ydGFsLWNvbnRlbnQtd3JhcHBlcidcbiAgICAgICAgfV1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqL1xuICAgIGFzeW5jIGFjdGl2YXRlKCkge1xuICAgICAgICBsZXQgbWUgICAgICAgPSB0aGlzLFxuICAgICAgICAgICAge3BhcmVudH0gPSBtZTtcblxuICAgICAgICBpZiAobWUubGl2ZVByZXZpZXdDb2RlKSB7XG4gICAgICAgICAgICBhd2FpdCBtZS50aW1lb3V0KDEwMDApO1xuXG4gICAgICAgICAgICBpZiAocGFyZW50LmFjdGl2ZVBhcnRzSWQgPT09IG1lLmlkICYmIHBhcmVudC5tb3VudGVkKSB7XG4gICAgICAgICAgICAgICAgbWUuZ2V0UmVmZXJlbmNlKCdsaXZlLXByZXZpZXcnKS5hY3RpdmVWaWV3ID0gJ3ByZXZpZXcnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGNvbnRlbnRJdGVtcyBjb25maWcgZ290IGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge09iamVjdFtdfG51bGx9IHZhbHVlXG4gICAgICogQHBhcmFtIHtPYmplY3RbXXxudWxsfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldENvbnRlbnRJdGVtcyh2YWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPz89IFt7XG4gICAgICAgICAgICBtb2R1bGUgICA6IExpdmVQcmV2aWV3LFxuICAgICAgICAgICAgY2xzICAgICAgOiBbJ3BhZ2UtbGl2ZS1wcmV2aWV3J10sXG4gICAgICAgICAgICByZWZlcmVuY2U6ICdsaXZlLXByZXZpZXcnLFxuICAgICAgICAgICAgdmFsdWUgICAgOiB0aGlzLmxpdmVQcmV2aWV3Q29kZVxuICAgICAgICB9XVxuXG4gICAgICAgIHRoaXMuZ2V0SXRlbSgncG9ydGFsLWNvbnRlbnQtd3JhcHBlcicpLml0ZW1zID0gdmFsdWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGxlYXJuTW9yZVJvdXRlIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldExlYXJuTW9yZVJvdXRlKHZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLmdldEl0ZW0oJ2xlYXJuLW1vcmUtYnV0dG9uJykucm91dGUgPSB2YWx1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCBhZnRlciB0aGUgaGVhZGxpbmUgY29uZmlnIGdvdCBjaGFuZ2VkXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG9sZFZhbHVlXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGFmdGVyU2V0SGVhZGxpbmUodmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgICAgIHRoaXMuZ2V0SXRlbSgnaGVhZGxpbmUnKS5odG1sID0gdmFsdWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIGxpdmVQcmV2aWV3Q29kZSBjb25maWcgZ290IGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gb2xkVmFsdWVcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgYWZ0ZXJTZXRMaXZlUHJldmlld0NvZGUodmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgICAgIC8vIHRoZSBpbml0aWFsIHZhbHVlIHdpbGwgZ2V0IGhhbmRsZWQgdmlhIGFmdGVyU2V0Q29udGVudEl0ZW1zKClcbiAgICAgICAgaWYgKG9sZFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdldEl0ZW0oJ2xpdmUtcHJldmlldycpLnZhbHVlID0gdmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCBhZnRlciB0aGUgcGFyYWdyYXBoIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldFBhcmFncmFwaCh2YWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5nZXRJdGVtKCdwYXJhZ3JhcGgnKS5odG1sID0gdmFsdWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYWZ0ZXIgdGhlIHN1YkhlYWRsaW5lIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldFN1YkhlYWRsaW5lKHZhbHVlLCBvbGRWYWx1ZSkge1xuICAgICAgICB0aGlzLmdldEl0ZW0oJ3N1Yi1oZWFkbGluZScpLmh0bWwgPSB2YWx1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJlZCBhZnRlciB0aGUgdGV4dENvbnRhaW5lclBvc2l0aW9uIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvbGRWYWx1ZVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBhZnRlclNldFRleHRDb250YWluZXJQb3NpdGlvbih2YWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgICAgdGhpcy50b2dnbGVDbHMoJ3BvcnRhbC1wb3NpdGlvbi1lbmQnLCB2YWx1ZSA9PT0gJ2VuZCcpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGJlZm9yZSB0aGUgdGV4dENvbnRhaW5lclBvc2l0aW9uIGNvbmZpZyBnZXRzIGNoYW5nZWRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gb2xkVmFsdWVcbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfVxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBiZWZvcmVTZXRUZXh0Q29udGFpbmVyUG9zaXRpb24odmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJlZm9yZVNldEVudW1WYWx1ZSh2YWx1ZSwgb2xkVmFsdWUsICd0ZXh0Q29udGFpbmVyUG9zaXRpb24nKVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoRmVhdHVyZVNlY3Rpb24pO1xuIiwiaW1wb3J0IEJ1dHRvbiAgICBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYnV0dG9uL0Jhc2UubWpzJztcbmltcG9ydCBDb21wb25lbnQgZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC9CYXNlLm1qcyc7XG5pbXBvcnQgQ29udGFpbmVyIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9jb250YWluZXIvQmFzZS5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLkZvb3RlckNvbnRhaW5lclxuICogQGV4dGVuZHMgTmVvLmNvbnRhaW5lci5CYXNlXG4gKi9cbmNsYXNzIEZvb3RlckNvbnRhaW5lciBleHRlbmRzIENvbnRhaW5lciB7XG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLkZvb3RlckNvbnRhaW5lcidcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuaG9tZS5Gb290ZXJDb250YWluZXInLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nW119IGNscz1bJ3BvcnRhbC1ob21lLWZvb3Rlci1jb250YWluZXInXVxuICAgICAgICAgKi9cbiAgICAgICAgY2xzOiBbJ3BvcnRhbC1ob21lLWZvb3Rlci1jb250YWluZXInXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdH0gaXRlbURlZmF1bHRzXG4gICAgICAgICAqL1xuICAgICAgICBpdGVtRGVmYXVsdHM6IHtcbiAgICAgICAgICAgIG1vZHVsZTogQ29udGFpbmVyLFxuICAgICAgICAgICAgY2xzICAgOiBbJ3BvcnRhbC1ob21lLWZvb3Rlci1zZWN0aW9uJ10sXG4gICAgICAgICAgICBsYXlvdXQ6IHtudHlwZTogJ3Zib3gnLCBhbGlnbjogJ3N0YXJ0J30sXG5cbiAgICAgICAgICAgIGl0ZW1EZWZhdWx0czoge1xuICAgICAgICAgICAgICAgIG1vZHVsZTogQnV0dG9uLFxuICAgICAgICAgICAgICAgIHVpICAgIDogJ2dob3N0J1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0W119IGl0ZW1zXG4gICAgICAgICAqL1xuICAgICAgICBpdGVtczogW3tcbiAgICAgICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAgICAgIG1vZHVsZTogQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNscyAgIDogWyduZW8taDInXSxcbiAgICAgICAgICAgICAgICBodG1sICA6ICdDb250ZW50JyxcbiAgICAgICAgICAgICAgICB0YWcgICA6ICdoMidcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBpY29uQ2xzOiAnZmFzIGZhLXBlb3BsZS1ncm91cCcsXG4gICAgICAgICAgICAgICAgcm91dGUgIDogJy9hYm91dC11cycsXG4gICAgICAgICAgICAgICAgdGV4dCAgIDogJ0Fib3V0IFVzJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYXMgZmEtYm9vaycsXG4gICAgICAgICAgICAgICAgcm91dGUgIDogJy9kb2NzJyxcbiAgICAgICAgICAgICAgICB0ZXh0ICAgOiAnQVBJIERvY3MnXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgaWNvbkNsczogJ2ZhcyBmYS1ibG9nJyxcbiAgICAgICAgICAgICAgICByb3V0ZSAgOiAnL2Jsb2cnLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdCbG9nJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYXMgZmEtZ3JhZHVhdGlvbi1jYXAnLFxuICAgICAgICAgICAgICAgIHJvdXRlICA6ICcvbGVhcm4nLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdMZWFybidcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBpY29uQ2xzOiAnZmFzIGZhLWhhbmRzaGFrZS1hbmdsZScsXG4gICAgICAgICAgICAgICAgcm91dGUgIDogJy9zZXJ2aWNlcycsXG4gICAgICAgICAgICAgICAgdGV4dCAgIDogJ1NlcnZpY2VzJ1xuICAgICAgICAgICAgfV1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgaXRlbXM6IFt7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiBDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgY2xzICAgOiBbJ25lby1oMiddLFxuICAgICAgICAgICAgICAgIGh0bWwgIDogJ0NvbW11bml0eScsXG4gICAgICAgICAgICAgICAgdGFnICAgOiAnaDInXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgaWNvbkNsczogJ2ZhLWJyYW5kcyBmYS1naXRodWInLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdDb250cmlidXRlJyxcbiAgICAgICAgICAgICAgICB1cmwgICAgOiAnaHR0cHM6Ly9naXRodWIuY29tL25lb21qcy9uZW8vYmxvYi9kZXYvQ09OVFJJQlVUSU5HLm1kJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtZ2l0aHViJyxcbiAgICAgICAgICAgICAgICB0ZXh0ICAgOiAnQ29kZSBvZiBDb25kdWN0JyxcbiAgICAgICAgICAgICAgICB1cmwgICAgOiAnaHR0cHM6Ly9naXRodWIuY29tL25lb21qcy9uZW8vYmxvYi9kZXYvLmdpdGh1Yi9DT0RFX09GX0NPTkRVQ1QubWQnXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgaWNvbkNsczogJ2ZhLWJyYW5kcyBmYS1naXRodWInLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdSZXBvcnQgSXNzdWVzJyxcbiAgICAgICAgICAgICAgICB1cmwgICAgOiAnaHR0cHM6Ly9naXRodWIuY29tL25lb21qcy9uZW8vaXNzdWVzJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtc2xhY2snLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdTbGFjaycsXG4gICAgICAgICAgICAgICAgdXJsICAgIDogJ2h0dHBzOi8vam9pbi5zbGFjay5jb20vdC9uZW9tanMvc2hhcmVkX2ludml0ZS96dC02YzUwdWVldS0zRTF+TTRUOXhrTm5ifk1fcHJFRU9BJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtZGlzY29yZCcsXG4gICAgICAgICAgICAgICAgdGV4dCAgIDogJ0Rpc2NvcmQnLFxuICAgICAgICAgICAgICAgIHVybCAgICA6ICdodHRwczovL2Rpc2NvcmQuZ2cvNnA4cGFQcSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAgICAgIG1vZHVsZTogQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGNscyAgIDogWyduZW8taDInXSxcbiAgICAgICAgICAgICAgICBodG1sICA6ICdTb2NpYWwgTWVkaWEnLFxuICAgICAgICAgICAgICAgIHRhZyAgIDogJ2gyJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtbGlua2VkaW4nLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdMaW5rZWRJbicsXG4gICAgICAgICAgICAgICAgdXJsICAgIDogJ2h0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L25lby1tanMvJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEtZmFjZWJvb2snLFxuICAgICAgICAgICAgICAgIHRleHQgICA6ICdGYWNlYm9vaycsXG4gICAgICAgICAgICAgICAgdXJsICAgIDogJ2h0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9uZW8ubWpzJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGljb25DbHM6ICdmYS1icmFuZHMgZmEteC10d2l0dGVyJyxcbiAgICAgICAgICAgICAgICB0ZXh0ICAgOiAnWCcsXG4gICAgICAgICAgICAgICAgdXJsICAgIDogJ2h0dHBzOi8veC5jb20vbmVvbWpzMSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH1dLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0fSBsYXlvdXQ9e250eXBlOidoYm94JyxhbGlnbjonc3RyZXRjaCd9XG4gICAgICAgICAqL1xuICAgICAgICBsYXlvdXQ6IHtudHlwZTogJ2hib3gnLCBhbGlnbjogJ3N0cmV0Y2gnfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gdGFnPSdmb290ZXInXG4gICAgICAgICAqL1xuICAgICAgICB0YWc6ICdmb290ZXInXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOZW8uc2V0dXBDbGFzcyhGb290ZXJDb250YWluZXIpO1xuIiwiaW1wb3J0IEFmdGVyTWF0aCBmcm9tICcuL3BhcnRzL0FmdGVyTWF0aC5tanMnO1xuaW1wb3J0IENvbG9ycyAgICBmcm9tICcuL3BhcnRzL0NvbG9ycy5tanMnO1xuaW1wb3J0IENvbnRhaW5lciBmcm9tICcuLi8uLi8uLi8uLi9zcmMvY29udGFpbmVyL0Jhc2UubWpzJztcbmltcG9ydCBGZWF0dXJlcyAgZnJvbSAnLi9wYXJ0cy9GZWF0dXJlcy5tanMnO1xuaW1wb3J0IEhlbGl4ICAgICBmcm9tICcuL3BhcnRzL0hlbGl4Lm1qcyc7XG5pbXBvcnQgSG93ICAgICAgIGZyb20gJy4vcGFydHMvSG93Lm1qcyc7XG5pbXBvcnQgTWFpbk5lbyAgIGZyb20gJy4vcGFydHMvTWFpbk5lby5tanMnO1xuXG4vLyBpbXBvcnQgUmVmZXJlbmNlcyBmcm9tICcuL3BhcnRzL1JlZmVyZW5jZXMubWpzJztcblxuLyoqXG4gKiBAY2xhc3MgUG9ydGFsLnZpZXcuaG9tZS5NYWluQ29udGFpbmVyXG4gKiBAZXh0ZW5kcyBOZW8uY29udGFpbmVyLkJhc2VcbiAqL1xuY2xhc3MgTWFpbkNvbnRhaW5lciBleHRlbmRzIENvbnRhaW5lciB7XG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLk1haW5Db250YWluZXInXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzTmFtZTogJ1BvcnRhbC52aWV3LmhvbWUuTWFpbkNvbnRhaW5lcicsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gY2xzPVsncG9ydGFsLWhvbWUtbWFpbmNvbnRhaW5lciddXG4gICAgICAgICAqL1xuICAgICAgICBjbHM6IFsncG9ydGFsLWhvbWUtbWFpbmNvbnRhaW5lciddLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0W119IGRvbUxpc3RlbmVyc1xuICAgICAgICAgKi9cbiAgICAgICAgZG9tTGlzdGVuZXJzOiBbe1xuICAgICAgICAgICAgaW50ZXJzZWN0KGRhdGEpIHtcbiAgICAgICAgICAgICAgICBsZXQgaWQgPSBkYXRhLnBhdGhbMV0uaWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVQYXJ0c0lkID0gaWQ7XG4gICAgICAgICAgICAgICAgTmVvLmdldENvbXBvbmVudChpZCk/LmFjdGl2YXRlPy4oKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjcm9sbChldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2xzLmluY2x1ZGVzKCdwb3J0YWwtaG9tZS1tYWluY29udGFpbmVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVDbHMoJ2hpZGUtc2lkZWJhcicsIGV2ZW50LnNjcm9sbFRvcCA+IDgwKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfV0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtPYmplY3R9IGl0ZW1EZWZhdWx0c1xuICAgICAgICAgKi9cbiAgICAgICAgaXRlbURlZmF1bHRzOiB7XG4gICAgICAgICAgICBmbGV4OiAnbm9uZSdcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdFtdfSBpdGVtc1xuICAgICAgICAgKi9cbiAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgIHtudHlwZTogJ2NvbXBvbmVudCcsIGNsczogWydwb3J0YWwtaG9tZS1wcm9ncmVzcyddfSxcbiAgICAgICAgICAgIE1haW5OZW8sXG4gICAgICAgICAgICBGZWF0dXJlcyxcbiAgICAgICAgICAgIEhlbGl4LFxuICAgICAgICAgICAgQ29sb3JzLFxuICAgICAgICAgICAgSG93LFxuICAgICAgICAgICAgLy8gUmVmZXJlbmNlcyxcbiAgICAgICAgICAgIEFmdGVyTWF0aFxuICAgICAgICBdLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7Qm9vbGVhbn0gc2Nyb2xsYWJsZT10cnVlXG4gICAgICAgICAqL1xuICAgICAgICBzY3JvbGxhYmxlOiB0cnVlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW50ZXJuYWwgZmxhZyBjb250YWluaW5nIHRoZSBpZCBvZiB0aGUgY3VycmVudGx5IHZpc2libGUgcGFydHMgaXRlbVxuICAgICAqIEBtZW1iZXIge1N0cmluZ3xudWxsfSBhY3RpdmVQYXJ0c0lkPW51bGxcbiAgICAgKi9cbiAgICBhY3RpdmVQYXJ0c0lkID0gbnVsbFxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGFmdGVyIHRoZSBtb3VudGVkIGNvbmZpZyBnb3QgY2hhbmdlZFxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gdmFsdWVcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IG9sZFZhbHVlXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIGFmdGVyU2V0TW91bnRlZCh2YWx1ZSwgb2xkVmFsdWUpIHtcbiAgICAgICAgc3VwZXIuYWZ0ZXJTZXRNb3VudGVkKHZhbHVlLCBvbGRWYWx1ZSk7XG5cbiAgICAgICAgbGV0IG1lICAgICAgICAgICAgID0gdGhpcyxcbiAgICAgICAgICAgIHtpZCwgd2luZG93SWR9ID0gbWU7XG5cbiAgICAgICAgdmFsdWUgJiYgbWUudGltZW91dCg1MCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBOZW8ubWFpbi5hZGRvbi5JbnRlcnNlY3Rpb25PYnNlcnZlci5yZWdpc3Rlcih7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgOiAnaXNWaXNpYmxlJyxcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBvYnNlcnZlICA6IFsnLnBvcnRhbC1jb250ZW50LXdyYXBwZXInXSxcbiAgICAgICAgICAgICAgICByb290ICAgICA6IGAjJHtpZH1gLFxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMS4wLFxuICAgICAgICAgICAgICAgIHdpbmRvd0lkXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoTWFpbkNvbnRhaW5lcik7XG4iLCJpbXBvcnQgQmFzZUNvbnRhaW5lciAgIGZyb20gJy4vQmFzZUNvbnRhaW5lci5tanMnO1xuaW1wb3J0IEZvb3RlckNvbnRhaW5lciBmcm9tICcuLi9Gb290ZXJDb250YWluZXIubWpzJztcblxuLyoqXG4gKiBAY2xhc3MgUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5BZnRlck1hdGhcbiAqIEBleHRlbmRzIFBvcnRhbC52aWV3LmhvbWUucGFydHMuQmFzZUNvbnRhaW5lclxuICovXG5jbGFzcyBBZnRlck1hdGggZXh0ZW5kcyBCYXNlQ29udGFpbmVyIHtcbiAgICBzdGF0aWMgY29uZmlnID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBjbGFzc05hbWU9J1BvcnRhbC52aWV3LmhvbWUucGFydHMuQWZ0ZXJNYXRoJ1xuICAgICAgICAgKiBAcHJvdGVjdGVkXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc05hbWU6ICdQb3J0YWwudmlldy5ob21lLnBhcnRzLkFmdGVyTWF0aCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gY2xzPVsncG9ydGFsLWhvbWUtYWZ0ZXJtYXRoJ11cbiAgICAgICAgICovXG4gICAgICAgIGNsczogWydwb3J0YWwtaG9tZS1hZnRlcm1hdGgnXSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdH0gbGF5b3V0PXtudHlwZTondmJveCcsYWxpZ246J3N0cmV0Y2gnLHBhY2s6J2NlbnRlcid9XG4gICAgICAgICAqL1xuICAgICAgICBsYXlvdXQ6IHtudHlwZTogJ3Zib3gnLCBhbGlnbjogJ3N0cmV0Y2gnLCBwYWNrOiAnY2VudGVyJ30sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtPYmplY3RbXX0gaXRlbXNcbiAgICAgICAgICovXG4gICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAgZmxleDogMVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjbHMgOiBbJ25lby1oMSddLFxuICAgICAgICAgICAgZmxleDogJ25vbmUnLFxuICAgICAgICAgICAgaHRtbDogJ05leHQgU3RlcHMnLFxuICAgICAgICAgICAgdGFnIDogJ2gxJ1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjbHMgOiBbJ25lby1jb250ZW50J10sXG4gICAgICAgICAgICBmbGV4OiAnbm9uZScsXG4gICAgICAgICAgICBodG1sOiBgXG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgIFRvIGxlYXJuIG1vcmUgYWJvdXQgTmVvLm1qcyBwbGVhc2UgcmVhZCA8YSBocmVmPVwiIy9sZWFyblwiPnRoZSBMZWFybmluZyBTZWN0aW9uPC9hPiBvciBicm93c2UgPGEgaHJlZj1cIiMvYmxvZ1wiPnRoZSBibG9nPC9hPi5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgVG8gYXJyYW5nZSBhIGRlbW8gb3IgdG8gdGFsayB0byBhbiBlbmdpbmVlciBlbWFpbCA8YSBocmVmPVwibWFpbHRvOmluZm9AbmVvbWpzLmNvbVwiPmluZm9AbmVvbWpzLmNvbTwvYT4uIFxuICAgICAgICAgICAgPGJyPkZvciBoZWxwIHN0YXJ0aW5nIGEgcHJvamVjdCBlbWFpbCA8YSBocmVmPVwibWFpbHRvOnNlcnZpY2VzQG5lb21qcy5jb21cIj5zZXJ2aWNlc0BuZW9tanMuY29tPC9hPi4gXG4gICAgICAgICAgICA8YnI+Rm9yIHF1ZXN0aW9ucyBhYm91dCBwcml2YXRlIHRyYWluaW5nIGVtYWlsIDxhIGhyZWY9XCJtYWlsdG86dHJhaW5pbmdAbmVvbWpzLmNvbVwiPnRyYWluaW5nQG5lb21qcy5jb208L2E+LlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgYCxcbiAgICAgICAgICAgIHRhZyA6ICdkaXYnXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGZsZXg6IDFcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbW9kdWxlOiBGb290ZXJDb250YWluZXIsXG4gICAgICAgICAgICBmbGV4ICA6ICdub25lJ1xuICAgICAgICB9XVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoQWZ0ZXJNYXRoKTtcbiIsImltcG9ydCBDb250YWluZXIgZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2NvbnRhaW5lci9CYXNlLm1qcyc7XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWxsIHZpZXdzIGluc2lkZSB0aGUgbGFuZGluZyBwYWdlXG4gKiBAY2xhc3MgUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5CYXNlQ29udGFpbmVyXG4gKiBAZXh0ZW5kcyBOZW8uY29udGFpbmVyLkJhc2VcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBCYXNlQ29udGFpbmVyIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgICBzdGF0aWMgY29uZmlnID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBjbGFzc05hbWU9J1BvcnRhbC52aWV3LmhvbWUucGFydHMuQmFzZUNvbnRhaW5lcidcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5CYXNlQ29udGFpbmVyJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ1tdfSBjbHM9Wydwb3J0YWwtaG9tZS1jb250ZW50LXZpZXcnLCduZW8tY29udGFpbmVyJ11cbiAgICAgICAgICovXG4gICAgICAgIGJhc2VDbHM6IFsncG9ydGFsLWhvbWUtY29udGVudC12aWV3JywgJ25lby1jb250YWluZXInXVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhvb2sgd2hpY2ggd2lsbCB0cmlnZ2VyIHdoZW5ldmVyIHRoZSBjb250YWluZXIgZnVsbHkgZ2V0cyBzY3JvbGxlZCBpbnRvIHRoZSB2aXNpYmxlIGFyZWEuXG4gICAgICogT3ZlcnJpZGUgaXQgYXMgbmVlZGVkLlxuICAgICAqL1xuICAgIGFjdGl2YXRlKCkge31cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoQmFzZUNvbnRhaW5lcik7XG4iLCJpbXBvcnQgRmVhdHVyZVNlY3Rpb24gZnJvbSAnLi4vRmVhdHVyZVNlY3Rpb24ubWpzJztcblxuLyoqXG4gKiBAY2xhc3MgUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5Db2xvcnNcbiAqIEBleHRlbmRzIFBvcnRhbC52aWV3LmhvbWUuRmVhdHVyZVNlY3Rpb25cbiAqL1xuY2xhc3MgQ29sb3JzIGV4dGVuZHMgRmVhdHVyZVNlY3Rpb24ge1xuICAgIHN0YXRpYyBjb25maWcgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGNsYXNzTmFtZT0nUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5Db2xvcnMnXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzTmFtZTogJ1BvcnRhbC52aWV3LmhvbWUucGFydHMuQ29sb3JzJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ1tdfSBjbHM9Wydwb3J0YWwtaG9tZS1wYXJ0cy1jb2xvcnMnXVxuICAgICAgICAgKi9cbiAgICAgICAgY2xzOiBbJ3BvcnRhbC1ob21lLXBhcnRzLWNvbG9ycyddLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBoZWFkbGluZT0nQW1hemluZyBQb3RlbnRpYWwnXG4gICAgICAgICAqL1xuICAgICAgICBoZWFkbGluZTogJ0FtYXppbmcgUG90ZW50aWFsJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gbGVhcm5Nb3JlUm91dGU9JyMvbGVhcm4vV2h5TmVvLVNwZWVkJ1xuICAgICAgICAgKi9cbiAgICAgICAgbGVhcm5Nb3JlUm91dGU6ICcjL2xlYXJuL1doeU5lby1TcGVlZCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGxpdmVQcmV2aWV3Q29kZVxuICAgICAgICAgKi9cbiAgICAgICAgbGl2ZVByZXZpZXdDb2RlOiBbXG4gICAgICAgICAgICBcImltcG9ydCBWaWV3cG9ydCBmcm9tICcuLi8uLi9hcHBzL2NvbG9ycy92aWV3L1ZpZXdwb3J0Lm1qcyc7XCIsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgXCJjbGFzcyBNYWluVmlldyBleHRlbmRzIFZpZXdwb3J0IHtcIixcbiAgICAgICAgICAgIFwiICAgIHN0YXRpYyBjb25maWcgPSB7XCIsXG4gICAgICAgICAgICBcIiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuQ29sb3JzJyxcIixcbiAgICAgICAgICAgIFwiICAgICAgICB0aGVtZSAgICA6ICduZW8tdGhlbWUtZGFyaydcIixcbiAgICAgICAgICAgIFwiICAgIH1cIixcbiAgICAgICAgICAgIFwifVwiLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiTmVvLnNldHVwQ2xhc3MoTWFpblZpZXcpO1wiXG4gICAgICAgIF0uam9pbignXFxuJyksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IHBhcmFncmFwaFxuICAgICAgICAgKi9cbiAgICAgICAgcGFyYWdyYXBoOiBbXG4gICAgICAgICAgICAnVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBIZWxpeCBkZW1vICZtZGFzaDsgaXRcXCdzIGFuIGV4dHJlbWVseSBmYXN0IG11bHRpLXdpbmRvdyBhcHAuIENsaWNrIHRoZSBzdGFydCBidXR0b24gJyxcbiAgICAgICAgICAgICd0byBzZWUgdGhlIHZpZXcgcmVmbGVjdCBjaGFuZ2VzIGluIHRoZSBkYXRhLiBBbmQgdGhlIGFwcCBpcyBtdWx0aS13aW5kb3c6IHRoZSB0YWJsZSBhbmQgY2hhcnRzIGNhbiBiZSAnLFxuICAgICAgICAgICAgJ3VuZG9ja2VkIGludG8gdGhlaXIgb3duIHdpbmRvd3MuIEluIGZhY3QsIHRoZSBlbnRpcmUgZGVtbyBjYW4gYmUgdW5kb2NrZWQuJ1xuICAgICAgICBdLmpvaW4oJycpLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBzdWJIZWFkbGluZT0nU29ja2V0IERhdGEnXG4gICAgICAgICAqL1xuICAgICAgICBzdWJIZWFkbGluZTogJ1NvY2tldCBEYXRhJ1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmVvLnNldHVwQ2xhc3MoQ29sb3JzKTtcbiIsImltcG9ydCBCYXNlQ29udGFpbmVyIGZyb20gJy4vQmFzZUNvbnRhaW5lci5tanMnO1xuaW1wb3J0IENvbnRlbnRCb3ggICAgZnJvbSAnLi4vQ29udGVudEJveC5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLkZlYXR1cmVzXG4gKiBAZXh0ZW5kcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLkJhc2VDb250YWluZXJcbiAqL1xuY2xhc3MgRmVhdHVyZXMgZXh0ZW5kcyBCYXNlQ29udGFpbmVyIHtcbiAgICBzdGF0aWMgY29uZmlnID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBjbGFzc05hbWU9J1BvcnRhbC52aWV3LmhvbWUucGFydHMuRmVhdHVyZXMnXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzTmFtZTogJ1BvcnRhbC52aWV3LmhvbWUucGFydHMuRmVhdHVyZXMnLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nW119IGNscz1bJ3BvcnRhbC1ob21lLWZlYXR1cmVzJ11cbiAgICAgICAgICovXG4gICAgICAgIGNsczogWydwb3J0YWwtaG9tZS1mZWF0dXJlcyddLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7T2JqZWN0fFN0cmluZ30gbGF5b3V0PSdncmlkJ1xuICAgICAgICAgKi9cbiAgICAgICAgbGF5b3V0OiAnZ3JpZCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtPYmplY3R9IGl0ZW1EZWZhdWx0c1xuICAgICAgICAgKi9cbiAgICAgICAgaXRlbURlZmF1bHRzOiB7XG4gICAgICAgICAgICBtb2R1bGU6IENvbnRlbnRCb3hcbiAgICAgICAgfSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge09iamVjdFtdfSBpdGVtc1xuICAgICAgICAgKi9cbiAgICAgICAgaXRlbXM6IFt7XG4gICAgICAgICAgICBoZWFkZXI6ICdNdWx0aS10aHJlYWRpbmcnLFxuICAgICAgICAgICAgcm91dGUgOiAnIy9sZWFybi9XaHlOZW8tUXVpY2snLFxuXG4gICAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICAgICAgJ0ZvbGxvd2luZyB0aGUgT01UIChPZmYgdGhlIE1haW4tVGhyZWFkKSBwYXJhZGlnbScsXG4gICAgICAgICAgICAgICAgJ1lvdXIgQXBwcyAmIHRoZSBGcmFtZXdvcmsgbGl2ZSB3aXRoaW4gYW4gQXBwbGljYXRpb24gV29ya2VyJyxcbiAgICAgICAgICAgICAgICAnTm9uLWJsb2NraW5nLCBuby1mcmVlemUsIHVzZXIgaW50ZXJhY3Rpb24gcmVzcG9uc2VzLCBldmVuIGZvciBoZWF2eSBkYXRhIGkvbywgcHJvY2Vzc2luZywgYW5kIGludGVuc2l2ZSwgY29tcGxleCBzY3JlZW4gdXBkYXRpbmcnLFxuICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsIFdvcmtlcnMgZm9yIE9mZnNjcmVlbkNhbnZhcywgRGF0YSwgRGVsdGEtVXBkYXRlcyAmIFRhc2tzJyxcbiAgICAgICAgICAgICAgICAnQSBTZXJ2aWNlV29ya2VyIGNvbm5lY3RlZCB0byB0aGUgQXBwIFdvcmtlciBmb3IgcHJlZGljdGl2ZSBDYWNoaW5nJ1xuICAgICAgICAgICAgXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBoZWFkZXI6ICdNdWx0aS1XaW5kb3cgQXBwcycsXG4gICAgICAgICAgICByb3V0ZSA6ICcjL2xlYXJuL1doeU5lby1RdWljaycsXG5cbiAgICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgICAgICAnTm8gbmVlZCBmb3IgYSBOYXRpdmUgU2hlbGwgKGUuZy4gRWxlY3Ryb24pJyxcbiAgICAgICAgICAgICAgICAnU2hhcmluZyBEYXRhIGFjcm9zcyBXaW5kb3dzJyxcbiAgICAgICAgICAgICAgICAnU2hhcmluZyBTdGF0ZSBhY3Jvc3MgV2luZG93cycsXG4gICAgICAgICAgICAgICAgJ01vdmluZyBDb21wb25lbnRzIGFjcm9zcyBXaW5kb3dzIHdoaWxlIGtlZXBpbmcgdGhlIHNhbWUgSlMgaW5zdGFuY2VzJ1xuICAgICAgICAgICAgXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBoZWFkZXI6ICdNb2Rlcm4gSlMgaW4geW91ciBCcm93c2VyJyxcbiAgICAgICAgICAgIHJvdXRlIDogJyMvbGVhcm4vV2h5TmVvLVF1aWNrJyxcblxuICAgICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAgICAgICdUaGUgRGV2LU1vZGUgcnVucyB3aXRob3V0IHRoZSBuZWVkIGZvciBUcmFuc3BpbGF0aW9ucyBvciBDb21waWxhdGlvbnMnLFxuICAgICAgICAgICAgICAgICdVc2luZyB0aGUgbGF0ZXN0IEVDTUFTY3JpcHQgRmVhdHVyZXMsIGFzIHNvb24gYXMgdGhlIEJyb3dzZXIgU3VwcG9ydCBpcyB0aGVyZScsXG4gICAgICAgICAgICAgICAgJ1NpbXBsZSBhbmQgcG93ZXJmdWwgRGVidWdnaW5nJyxcbiAgICAgICAgICAgICAgICAnUmVkdWNlZCBEZXZlbG9wbWVudCBDb3N0cydcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgaGVhZGVyOiAnUG93ZXJmdWwgQ29tcG9uZW50LUxpYnJhcnknLFxuICAgICAgICAgICAgcm91dGUgOiAnIy9sZWFybi9XaHlOZW8tUXVpY2snLFxuXG4gICAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICAgICAgJ0RlY2xhcmF0aXZlIENvbXBvbmVudC1UcmVlcycsXG4gICAgICAgICAgICAgICAgJ0hpZ2ggT3JkZXIgQ29tcG9uZW50cycsXG4gICAgICAgICAgICAgICAgJ01hbnkgb3V0LW9mLXRoZS1ib3ggQ29tcG9uZW50cywgaW5jbHVkaW5nIG5lc3RlZCBsYXp5LWxvYWRlZCBmb3JtcycsXG4gICAgICAgICAgICAgICAgJ011bHRpcGxlIHRoZW1lcywgd2hpY2ggY2FuIGdldCBuZXN0ZWQnXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGhlYWRlcjogJ0VsZWdhbnQgU3RhdGUgTWFuYWdlbWVudCcsXG4gICAgICAgICAgICByb3V0ZSA6ICcjL2xlYXJuL1doeU5lby1TcGVlZCcsXG5cbiAgICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgICAgICAnTXVsdGlwbGUgY29tbXVuaWNhdGluZyBTdGF0ZS1Qcm92aWRlcnMnLFxuICAgICAgICAgICAgICAgICdPYnNlcnZhYmxlJyxcbiAgICAgICAgICAgICAgICAnU3VwcG9ydGluZyBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyBsaWtlIE1WVk0gd2l0aG91dCBlbmZvcmNpbmcgdGhlbSdcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgaGVhZGVyOiAnQ29yZSBGZWF0dXJlcycsXG4gICAgICAgICAgICByb3V0ZSA6ICcjL2xlYXJuL1doeU5lby1TcGVlZCcsXG5cbiAgICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgICAgICAnUlBDIExheWVyIChjcm9zcy1yZWFsbSwgaW5jbHVkaW5nIEJhY2tlbmRzKScsXG4gICAgICAgICAgICAgICAgJ0V4dGVuc2liaWxpdHknLFxuICAgICAgICAgICAgICAgICdTY2FsYWJpbGl0eScsXG4gICAgICAgICAgICAgICAgJ0NsYXNzIENvbmZpZyBTeXN0ZW0nLFxuICAgICAgICAgICAgICAgICdEcmFnICYgRHJvcCcsXG4gICAgICAgICAgICAgICAgJ01peGlucywgUGx1Z2lucyAmIE1haW4tVGhyZWFkIEFkZG9ucydcbiAgICAgICAgICAgIF1cbiAgICAgICAgfV1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5lby5zZXR1cENsYXNzKEZlYXR1cmVzKTtcbiIsImltcG9ydCBGZWF0dXJlU2VjdGlvbiBmcm9tICcuLi9GZWF0dXJlU2VjdGlvbi5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLkhlbGl4XG4gKiBAZXh0ZW5kcyBQb3J0YWwudmlldy5ob21lLkZlYXR1cmVTZWN0aW9uXG4gKi9cbmNsYXNzIEhlbGl4IGV4dGVuZHMgRmVhdHVyZVNlY3Rpb24ge1xuICAgIHN0YXRpYyBjb25maWcgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGNsYXNzTmFtZT0nUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5IZWxpeCdcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5IZWxpeCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gY2xzPVsncG9ydGFsLWhvbWUtcGFydHMtaGVsaXgnXVxuICAgICAgICAgKi9cbiAgICAgICAgY2xzOiBbJ3BvcnRhbC1ob21lLXBhcnRzLWhlbGl4J10sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGhlYWRsaW5lPSdFeHRyZW1lIFNwZWVkJ1xuICAgICAgICAgKi9cbiAgICAgICAgaGVhZGxpbmU6ICdFeHRyZW1lIFNwZWVkJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gbGVhcm5Nb3JlUm91dGU9JyMvbGVhcm4vV2h5TmVvLVNwZWVkJ1xuICAgICAgICAgKi9cbiAgICAgICAgbGVhcm5Nb3JlUm91dGU6ICcjL2xlYXJuL1doeU5lby1TcGVlZCcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmd9IGxpdmVQcmV2aWV3Q29kZVxuICAgICAgICAgKi9cbiAgICAgICAgbGl2ZVByZXZpZXdDb2RlOiBbXG4gICAgICAgICAgICBcImltcG9ydCBWaWV3cG9ydCBmcm9tICcuLi8uLi9leGFtcGxlcy9jb21wb25lbnQvbXVsdGlXaW5kb3dIZWxpeC9WaWV3cG9ydC5tanMnO1wiLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIFwiY2xhc3MgTWFpblZpZXcgZXh0ZW5kcyBWaWV3cG9ydCB7XCIsXG4gICAgICAgICAgICBcIiAgICBzdGF0aWMgY29uZmlnID0ge1wiLFxuICAgICAgICAgICAgXCIgICAgICAgIGNsYXNzTmFtZSAgICAgICAgICAgOiAnUG9ydGFsLnZpZXcuTXVsdGlXaW5kb3dIZWxpeCcsXCIsXG4gICAgICAgICAgICBcIiAgICAgICAgc2hvd0dpdEh1YlN0YXJCdXR0b246IGZhbHNlLFwiLFxuICAgICAgICAgICAgXCIgICAgICAgIHRoZW1lICAgICAgICAgICAgICAgOiAnbmVvLXRoZW1lLWRhcmsnXCIsXG4gICAgICAgICAgICBcIiAgICB9XCIsXG4gICAgICAgICAgICBcIn1cIixcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBcIk5lby5zZXR1cENsYXNzKE1haW5WaWV3KTtcIlxuICAgICAgICBdLmpvaW4oJ1xcbicpLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBwYXJhZ3JhcGhcbiAgICAgICAgICovXG4gICAgICAgIHBhcmFncmFwaDogW1xuICAgICAgICAgICAgJ1RoaXMgZGVtbyBzaG93cyB0aGUgTmVvLm1qcyBoZWxpeCBjb21wb25lbnQsIGFsb25nIHdpdGggYSBcIkhlbGl4IENvbnRyb2xzXCIgcGFuZWwuICcsXG4gICAgICAgICAgICAnTW92ZSB5b3VyIGN1cnNvciBvdmVyIHRoZSBoZWxpeCwgdGhlbiByYXBpZGx5IHNjcm9sbCBsZWZ0IGFuZCByaWdodCB0byByb3RhdGUsIGFuZCB1cCBhbmQgZG93biB0byB6b29tLiAnLFxuICAgICAgICAgICAgJ0FzIHlvdSBkbywgbG9vayBhdCB0aGUgZGVsdGEgdXBkYXRlcyBjb3VudGVyIGF0IHRoZSB0b3AuICcsXG4gICAgICAgICAgICAnTmVvLm1qcyBlYXNpbHkgaGFuZGxlcyA0MCwwMDAgdXBkYXRlcyBwZXIgc2Vjb25kLCBhbmQgYmV5b25kLidcbiAgICAgICAgXS5qb2luKCcnKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gc3ViSGVhZGxpbmU9JzQwLDAwMCBVcGRhdGVzIC9zJ1xuICAgICAgICAgKi9cbiAgICAgICAgc3ViSGVhZGxpbmU6ICc0MCwwMDAgVXBkYXRlcyAvcydcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5lby5zZXR1cENsYXNzKEhlbGl4KTtcbiIsImltcG9ydCBGZWF0dXJlU2VjdGlvbiBmcm9tICcuLi9GZWF0dXJlU2VjdGlvbi5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLkhvd1xuICogQGV4dGVuZHMgUG9ydGFsLnZpZXcuaG9tZS5GZWF0dXJlU2VjdGlvblxuICovXG5jbGFzcyBIb3cgZXh0ZW5kcyBGZWF0dXJlU2VjdGlvbiB7XG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLnBhcnRzLkhvdydcbiAgICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NOYW1lOiAnUG9ydGFsLnZpZXcuaG9tZS5wYXJ0cy5Ib3cnLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nW119IGNscz1bJ3BvcnRhbC1ob21lLXBhcnRzLWhvdyddXG4gICAgICAgICAqL1xuICAgICAgICBjbHM6IFsncG9ydGFsLWhvbWUtcGFydHMtaG93J10sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtPYmplY3RbXX0gY29udGVudEl0ZW1zXG4gICAgICAgICAqL1xuICAgICAgICBjb250ZW50SXRlbXM6IFt7XG4gICAgICAgICAgICBudHlwZSA6ICdjb250YWluZXInLFxuICAgICAgICAgICAgY2xzICAgOiAncG9ydGFsLWNvbnRlbnQtY29udGFpbmVyJyxcbiAgICAgICAgICAgIGxheW91dDogJ2ZpdCcsXG4gICAgICAgICAgICBpdGVtcyA6IFt7XG4gICAgICAgICAgICAgICAgY2xzIDogJ25lby13b3JrZXItc2V0dXAnLFxuICAgICAgICAgICAgICAgIHRhZyA6ICdlbGVtZW50LWxvYWRlcicsXG4gICAgICAgICAgICAgICAgdmRvbToge3NyYzogJy4vcmVzb3VyY2VzL2ltYWdlcy93b3JrZXJzLWZvY3VzLnN2Zyd9XG4gICAgICAgICAgICB9XVxuICAgICAgICB9XSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gaGVhZGxpbmU9J0hvdz8nXG4gICAgICAgICAqL1xuICAgICAgICBoZWFkbGluZTogJ0hvdz8nLFxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U3RyaW5nfSBsZWFybk1vcmVSb3V0ZT0nIy9sZWFybi9XaHlOZW8tU3BlZWQnXG4gICAgICAgICAqL1xuICAgICAgICBsZWFybk1vcmVSb3V0ZTogJyMvbGVhcm4vYmVuZWZpdHMuTXVsdGktVGhyZWFkaW5nJyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gcGFyYWdyYXBoXG4gICAgICAgICAqL1xuICAgICAgICBwYXJhZ3JhcGg6IFtcbiAgICAgICAgICAgICdXaGVuIGEgTmVvLm1qcyBhcHAgbGF1bmNoZXMgMysgd2Vid29ya2VycyBhcmUgc3Bhd25lZDogb25lIHRoYXQgaG9sZHMgQXBwIGxvZ2ljLCBvbmUgZm9yIGNhbGN1bGF0aW5nIGRlbHRhIERPTSAnLFxuICAgICAgICAgICAgJ3VwZGF0ZXMsIGFuZCBvbmUgZm9yIGJhY2tlbmQgY2FsbHMuIEVhY2ggd2Vid29ya2VyIHJ1bnMgaW4gaXRzIG93biB0aHJlYWQsIGFuZCB0aHVzLCBpbiBpdHMgb3duIHByb2Nlc3NvciBjb3JlLiAnLFxuICAgICAgICAgICAgJ1RoaXMgbWVhbnMgdGhlc2UgcHJvY2Vzc2VzIHJ1biBpbiBwYXJhbGxlbDogRE9NIHVwZGF0ZXMgYW5kIHRyYW5zaXRpb25zIGFyZSBub3QgYWZmZWN0ZWQgYnkgeW91ciBBcHAgbG9naWMgJyxcbiAgICAgICAgICAgICdhbmQgYWx3YXlzIHJ1biBzbW9vdGguIEV2ZXJ5IHByb2Nlc3Nvci1pbnRlbnNpdmUgdGFzayBydW5zIG91dHNpZGUgdGhlIE1haW4gVGhyZWFkLidcbiAgICAgICAgXS5qb2luKCcnKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gc3ViSGVhZGxpbmU9J0hvdyBkb2VzIE5lby5tanMgZG8gaXQ/J1xuICAgICAgICAgKi9cbiAgICAgICAgc3ViSGVhZGxpbmU6ICdIb3cgZG9lcyBOZW8ubWpzIGRvIGl0PydcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5lby5zZXR1cENsYXNzKEhvdyk7XG4iLCJpbXBvcnQgQmFzZUNvbnRhaW5lciBmcm9tICcuL0Jhc2VDb250YWluZXIubWpzJztcbmltcG9ydCBCdXR0b24gICAgICAgIGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9idXR0b24vQmFzZS5tanMnO1xuXG4vKipcbiAqIEBjbGFzcyBQb3J0YWwudmlldy5ob21lLnBhcnRzLk1haW5OZW9cbiAqIEBleHRlbmRzIFBvcnRhbC52aWV3LmhvbWUucGFydHMuQmFzZUNvbnRhaW5lclxuICovXG5jbGFzcyBNYWluTmVvIGV4dGVuZHMgQmFzZUNvbnRhaW5lciB7XG4gICAgc3RhdGljIGNvbmZpZyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge1N0cmluZ30gY2xhc3NOYW1lPSdQb3J0YWwudmlldy5ob21lLnBhcnRzLk1haW5OZW8nXG4gICAgICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzTmFtZTogJ1BvcnRhbC52aWV3LmhvbWUucGFydHMuTWFpbk5lbycsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtTdHJpbmdbXX0gY2xzPVsncG9ydGFsLWhvbWUtbWFpbi1uZW8nXVxuICAgICAgICAgKi9cbiAgICAgICAgY2xzOiBbJ3BvcnRhbC1ob21lLW1haW4tbmVvJ10sXG5cbiAgICAgICAgbGF5b3V0OiB7bnR5cGU6ICd2Ym94JywgYWxpZ246ICdjZW50ZXInLCBwYWNrOiAnY2VudGVyJ30sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtPYmplY3RbXX0gaXRlbXNcbiAgICAgICAgICovXG4gICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAgbnR5cGU6ICdjb250YWluZXInLFxuICAgICAgICAgICAgY2xzICA6IFsnbG9nby1jb250YWluZXInXSxcbiAgICAgICAgICAgIGl0ZW1zOiBbe1xuICAgICAgICAgICAgICAgIG50eXBlOiAnY29udGFpbmVyJyxcbiAgICAgICAgICAgICAgICBjbHMgIDogWyd2ZWN0b3InXVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIGNscyA6IFsnbmVvLWgxJ10sXG4gICAgICAgICAgICAgICAgaHRtbDogJ05lby5tanMnLFxuICAgICAgICAgICAgICAgIHRhZyA6ICdoMSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGNscyA6IFsnbmVvLWgyJ10sXG4gICAgICAgICAgICBmbGV4OiAnbm9uZScsXG4gICAgICAgICAgICBodG1sOiAnTW9kZXJuIEVudGVycHJpc2UtUmVhZHkgSmF2YVNjcmlwdCBGcmFtZXdvcmsnLFxuICAgICAgICAgICAgdGFnIDogJ2gyJ1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjbHMgOiBbJ25lby1oMyddLFxuICAgICAgICAgICAgZmxleDogJ25vbmUnLFxuICAgICAgICAgICAgaHRtbDogJ05lby5tanMgcHJvdmlkZXMgYSBuZXcgYXBwcm9hY2ggZm9yIGJ1aWxkaW5nIGZlYXR1cmUtcmljaCB3ZWIgYXBwbGljYXRpb25zLiBJbmNyZWFzZSBwcm9kdWN0aXZpdHkgYnkgbGV2ZXJhZ2luZyBhIHZhc3QgY29tcG9uZW50IGxpYnJhcnkgYW5kIGhhcm5lc3MgdGhlIHBvd2VyIG9mIG11bHRpLXRocmVhZGluZyBmb3IgZXh0cmVtZSByZWFsLXRpbWUgcGVyZm9ybWFuY2UuJyxcbiAgICAgICAgICAgIHRhZyA6ICdoMydcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbnR5cGU6ICdjb250YWluZXInLFxuICAgICAgICAgICAgY2xzICA6IFsnYnV0dG9uLWdyb3VwJ10sXG4gICAgICAgICAgICBmbGV4IDogJ25vbmUnLFxuICAgICAgICAgICAgaXRlbXM6IFt7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiBCdXR0b24sXG4gICAgICAgICAgICAgICAgY2xzICAgOiBbJ2dldC1zdGFydGVkLWJ1dHRvbiddLFxuICAgICAgICAgICAgICAgIGZsZXggIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHJvdXRlIDogJy9sZWFybicsXG4gICAgICAgICAgICAgICAgdGV4dCAgOiAnR2V0IHN0YXJ0ZWQnXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgbW9kdWxlOiBCdXR0b24sXG4gICAgICAgICAgICAgICAgY2xzICAgOiBbJ25lby1naXRodWInXSxcbiAgICAgICAgICAgICAgICBmbGV4ICA6ICdub25lJyxcbiAgICAgICAgICAgICAgICB0ZXh0ICA6ICdWaWV3IG9uIEdpdEh1YicsXG4gICAgICAgICAgICAgICAgdWkgICAgOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICB1cmwgICA6ICdodHRwczovL2dpdGh1Yi5jb20vbmVvbWpzL25lbydcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH1dXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOZW8uc2V0dXBDbGFzcyhNYWluTmVvKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/node_modules/neo.mjs/dist/production/chunks/app/6242.js b/node_modules/neo.mjs/dist/production/chunks/app/6242.js index 5967584427..d32bc97497 100644 --- a/node_modules/neo.mjs/dist/production/chunks/app/6242.js +++ b/node_modules/neo.mjs/dist/production/chunks/app/6242.js @@ -1 +1 @@ -"use strict";(self.webpackChunkneo_mjs=self.webpackChunkneo_mjs||[]).push([[6242],{6242:(e,t,o)=>{o.r(t),o.d(t,{default:()=>M});var a=o(3079);class n extends a.A{static config={className:"Portal.view.home.parts.BaseContainer",baseCls:["portal-home-content-view","neo-container"]};activate(){}}const s=Neo.setupClass(n);var r=o(4912),i=o(5608);class l extends a.A{static config={className:"Portal.view.home.FooterContainer",cls:["portal-home-footer-container"],itemDefaults:{module:a.A,cls:["portal-home-footer-section"],layout:{ntype:"vbox",align:"start"},itemDefaults:{module:r.A,ui:"ghost"}},items:[{items:[{module:i.A,cls:["neo-h2"],html:"Content",tag:"h2"},{iconCls:"fas fa-people-group",route:"/about-us",text:"About Us"},{iconCls:"fas fa-book",route:"/docs",text:"API Docs"},{iconCls:"fas fa-blog",route:"/blog",text:"Blog"},{iconCls:"fas fa-graduation-cap",route:"/learn",text:"Learn"},{iconCls:"fas fa-handshake-angle",route:"/services",text:"Services"}]},{items:[{module:i.A,cls:["neo-h2"],html:"Community",tag:"h2"},{iconCls:"fa-brands fa-github",text:"Contribute",url:"https://github.com/neomjs/neo/blob/dev/CONTRIBUTING.md"},{iconCls:"fa-brands fa-github",text:"Code of Conduct",url:"https://github.com/neomjs/neo/blob/dev/.github/CODE_OF_CONDUCT.md"},{iconCls:"fa-brands fa-github",text:"Report Issues",url:"https://github.com/neomjs/neo/issues"},{iconCls:"fa-brands fa-slack",text:"Slack",url:"https://join.slack.com/t/neomjs/shared_invite/zt-6c50ueeu-3E1~M4T9xkNnb~M_prEEOA"},{iconCls:"fa-brands fa-discord",text:"Discord",url:"https://discord.gg/6p8paPq"}]},{items:[{module:i.A,cls:["neo-h2"],html:"Social Media",tag:"h2"},{iconCls:"fa-brands fa-linkedin",text:"LinkedIn",url:"https://www.linkedin.com/company/neo-mjs/"},{iconCls:"fa-brands fa-facebook",text:"Facebook",url:"https://www.facebook.com/neo.mjs"},{iconCls:"fa-brands fa-x-twitter",text:"X",url:"https://x.com/neomjs1"}]}],layout:{ntype:"hbox",align:"stretch"},tag:"footer"}}const c=Neo.setupClass(l),h=Neo.setupClass(class extends s{static config={className:"Portal.view.home.parts.AfterMath",cls:["portal-home-aftermath"],layout:{ntype:"vbox",align:"stretch",pack:"center"},items:[{flex:1},{cls:["neo-h1"],flex:"none",html:"Next Steps",tag:"h1"},{cls:["neo-content"],flex:"none",html:'\n

\n To learn more about Neo.mjs please read the Learning Section or browse the blog.\n

\n

\n To arrange a demo or to talk to an engineer email info@neomjs.com. \n
For help starting a project email services@neomjs.com. \n
For questions about private training email training@neomjs.com.\n

\n ',tag:"div"},{flex:1},{module:c,flex:"none"}]}});var d=o(1364);class p extends a.A{static textContainerPositions=["start","end"];static config={className:"Portal.view.home.FeatureSection",baseCls:["portal-home-feature-section","neo-container"],contentItems_:null,headline_:null,learnMoreRoute_:null,livePreviewCode_:null,paragraph_:null,subHeadline_:null,textContainerPosition_:"start",layout:"base",items:[{module:a.A,cls:["portal-content-text"],layout:"base",items:[{cls:"neo-h1",flex:"none",reference:"headline",tag:"h1"},{cls:"neo-h2",flex:"none",reference:"sub-headline",tag:"h2"},{flex:"none",reference:"paragraph",tag:"p"},{module:r.A,reference:"learn-more-button",text:"Learn more",ui:"secondary"}]},{module:a.A,cls:"portal-content-wrapper",layout:"fit",reference:"portal-content-wrapper"}]};async activate(){let e=this,{parent:t}=e;e.livePreviewCode&&(await e.timeout(1e3),t.activePartsId===e.id&&t.mounted&&(e.getReference("live-preview").activeView="preview"))}afterSetContentItems(e,t){e??=[{module:d.A,cls:["page-live-preview"],reference:"live-preview",value:this.livePreviewCode}],this.getItem("portal-content-wrapper").items=e}afterSetLearnMoreRoute(e,t){this.getItem("learn-more-button").route=e}afterSetHeadline(e,t){this.getItem("headline").html=e}afterSetLivePreviewCode(e,t){t&&(this.getItem("live-preview").value=e)}afterSetParagraph(e,t){this.getItem("paragraph").html=e}afterSetSubHeadline(e,t){this.getItem("sub-headline").html=e}afterSetTextContainerPosition(e,t){this.toggleCls("portal-position-end","end"===e)}beforeSetTextContainerPosition(e,t){return this.beforeSetEnumValue(e,t,"textContainerPosition")}}const m=Neo.setupClass(p);class u extends m{static config={className:"Portal.view.home.parts.Colors",cls:["portal-home-parts-colors"],headline:"Amazing Potential",learnMoreRoute:"#/learn/WhyNeo-Speed",livePreviewCode:["import Viewport from '../../apps/colors/view/Viewport.mjs';","","class MainView extends Viewport {"," static config = {"," className: 'Portal.view.Colors',"," theme : 'neo-theme-dark'"," }","}","","Neo.setupClass(MainView);"].join("\n"),paragraph:["This is similar to the Helix demo — it's an extremely fast multi-window app. Click the start button ","to see the view reflect changes in the data. And the app is multi-window: the table and charts can be ","undocked into their own windows. In fact, the entire demo can be undocked."].join(""),subHeadline:"Socket Data"}}const f=Neo.setupClass(u);class g extends i.A{static config={className:"Portal.view.home.ContentBox",baseCls:["portal-content-box"],content_:null,header_:null,route_:null,_vdom:{tag:"a",cn:[{tag:"h3",cls:["portal-content-box-headline"]},{tag:"ul",cls:["portal-content-box-content"],cn:[]}]}};afterSetContent(e,t){e?.forEach((e=>{this.vdom.cn[1].cn.push({tag:"li",html:e})})),this.update()}afterSetHeader(e,t){this.vdom.cn[0].html=e,this.update()}afterSetRoute(e,t){this.vdom.href=e,this.update()}}const w=Neo.setupClass(g),b=Neo.setupClass(class extends s{static config={className:"Portal.view.home.parts.Features",cls:["portal-home-features"],layout:"grid",itemDefaults:{module:w},items:[{header:"Multi-threading",route:"#/learn/WhyNeo-Quick",content:["Following the OMT (Off the Main-Thread) paradigm","Your Apps & the Framework live within an Application Worker","Non-blocking, no-freeze, user interaction responses, even for heavy data i/o, processing, and intensive, complex screen updating","Additional Workers for OffscreenCanvas, Data, Delta-Updates & Tasks","A ServiceWorker connected to the App Worker for predictive Caching"]},{header:"Multi-Window Apps",route:"#/learn/WhyNeo-Quick",content:["No need for a Native Shell (e.g. Electron)","Sharing Data across Windows","Sharing State across Windows","Moving Components across Windows while keeping the same JS instances"]},{header:"Modern JS in your Browser",route:"#/learn/WhyNeo-Quick",content:["The Dev-Mode runs without the need for Transpilations or Compilations","Using the latest ECMAScript Features, as soon as the Browser Support is there","Simple and powerful Debugging","Reduced Development Costs"]},{header:"Powerful Component-Library",route:"#/learn/WhyNeo-Quick",content:["Declarative Component-Trees","High Order Components","Many out-of-the-box Components, including nested lazy-loaded forms","Multiple themes, which can get nested"]},{header:"Elegant State Management",route:"#/learn/WhyNeo-Speed",content:["Multiple communicating State-Providers","Observable","Supporting different architectures like MVVM without enforcing them"]},{header:"Core Features",route:"#/learn/WhyNeo-Speed",content:["RPC Layer (cross-realm, including Backends)","Extensibility","Scalability","Class Config System","Drag & Drop","Mixins, Plugins & Main-Thread Addons"]}]}});class v extends m{static config={className:"Portal.view.home.parts.Helix",cls:["portal-home-parts-helix"],headline:"Extreme Speed",learnMoreRoute:"#/learn/WhyNeo-Speed",livePreviewCode:["import Viewport from '../../examples/component/multiWindowHelix/Viewport.mjs';","","class MainView extends Viewport {"," static config = {"," className : 'Portal.view.MultiWindowHelix',"," showGitHubStarButton: false,"," theme : 'neo-theme-dark'"," }","}","","Neo.setupClass(MainView);"].join("\n"),paragraph:['This demo shows the Neo.mjs helix component, along with a "Helix Controls" panel. ',"Move your cursor over the helix, then rapidly scroll left and right to rotate, and up and down to zoom. ","As you do, look at the delta updates counter at the top. ","Neo.mjs easily handles 40,000 updates per second, and beyond."].join(""),subHeadline:"40,000 Updates /s"}}const C=Neo.setupClass(v);class x extends m{static config={className:"Portal.view.home.parts.How",cls:["portal-home-parts-how"],contentItems:[{ntype:"container",cls:"portal-content-container",layout:"fit",items:[{cls:"neo-worker-setup",tag:"element-loader",vdom:{src:"../../resources/images/workers-focus.svg"}}]}],headline:"How?",learnMoreRoute:"#/learn/benefits.Multi-Threading",paragraph:["When a Neo.mjs app launches 3+ webworkers are spawned: one that holds App logic, one for calculating delta DOM ","updates, and one for backend calls. Each webworker runs in its own thread, and thus, in its own processor core. ","This means these processes run in parallel: DOM updates and transitions are not affected by your App logic ","and always run smooth. Every processor-intensive task runs outside the Main Thread."].join(""),subHeadline:"How does Neo.mjs do it?"}}const y=Neo.setupClass(x);class N extends s{static config={className:"Portal.view.home.parts.MainNeo",cls:["portal-home-main-neo"],layout:{ntype:"vbox",align:"center",pack:"center"},items:[{ntype:"container",cls:["logo-container"],items:[{ntype:"container",cls:["vector"]},{cls:["neo-h1"],html:"Neo.mjs",tag:"h1"}]},{cls:["neo-h2"],flex:"none",html:"Modern Enterprise-Ready JavaScript Framework",tag:"h2"},{cls:["neo-h3"],flex:"none",html:"Neo.mjs provides a new approach for building feature-rich web applications. Increase productivity by leveraging a vast component library and harness the power of multi-threading for extreme real-time performance.",tag:"h3"},{ntype:"container",cls:["button-group"],flex:"none",items:[{module:r.A,cls:["get-started-button"],flex:"none",route:"/learn",text:"Get started"},{module:r.A,cls:["neo-github"],flex:"none",text:"View on GitHub",ui:"secondary",url:"https://github.com/neomjs/neo"}]}]}}const k=Neo.setupClass(N);class S extends a.A{static config={className:"Portal.view.home.MainContainer",cls:["portal-home-maincontainer"],domListeners:[{intersect(e){let t=e.path[1].id;this.activePartsId=t,Neo.getComponent(t)?.activate?.()},scroll(e){e.target.cls.includes("portal-home-maincontainer")&&this.toggleCls("hide-sidebar",e.scrollTop>80)}}],itemDefaults:{flex:"none"},items:[{ntype:"component",cls:["portal-home-progress"]},k,b,C,f,y,h],scrollable:!0};activePartsId=null;afterSetMounted(e,t){super.afterSetMounted(e,t);let{id:o,windowId:a}=this;e&&this.timeout(50).then((()=>{Neo.main.addon.IntersectionObserver.register({callback:"isVisible",id:o,observe:[".portal-content-wrapper"],root:`#${o}`,threshold:1,windowId:a})}))}}const M=Neo.setupClass(S)}}]); \ No newline at end of file +"use strict";(self.webpackChunkneo_mjs=self.webpackChunkneo_mjs||[]).push([[6242],{6242:(e,t,o)=>{o.r(t),o.d(t,{default:()=>M});var a=o(3079);class n extends a.A{static config={className:"Portal.view.home.parts.BaseContainer",baseCls:["portal-home-content-view","neo-container"]};activate(){}}const s=Neo.setupClass(n);var r=o(4912),i=o(5608);class l extends a.A{static config={className:"Portal.view.home.FooterContainer",cls:["portal-home-footer-container"],itemDefaults:{module:a.A,cls:["portal-home-footer-section"],layout:{ntype:"vbox",align:"start"},itemDefaults:{module:r.A,ui:"ghost"}},items:[{items:[{module:i.A,cls:["neo-h2"],html:"Content",tag:"h2"},{iconCls:"fas fa-people-group",route:"/about-us",text:"About Us"},{iconCls:"fas fa-book",route:"/docs",text:"API Docs"},{iconCls:"fas fa-blog",route:"/blog",text:"Blog"},{iconCls:"fas fa-graduation-cap",route:"/learn",text:"Learn"},{iconCls:"fas fa-handshake-angle",route:"/services",text:"Services"}]},{items:[{module:i.A,cls:["neo-h2"],html:"Community",tag:"h2"},{iconCls:"fa-brands fa-github",text:"Contribute",url:"https://github.com/neomjs/neo/blob/dev/CONTRIBUTING.md"},{iconCls:"fa-brands fa-github",text:"Code of Conduct",url:"https://github.com/neomjs/neo/blob/dev/.github/CODE_OF_CONDUCT.md"},{iconCls:"fa-brands fa-github",text:"Report Issues",url:"https://github.com/neomjs/neo/issues"},{iconCls:"fa-brands fa-slack",text:"Slack",url:"https://join.slack.com/t/neomjs/shared_invite/zt-6c50ueeu-3E1~M4T9xkNnb~M_prEEOA"},{iconCls:"fa-brands fa-discord",text:"Discord",url:"https://discord.gg/6p8paPq"}]},{items:[{module:i.A,cls:["neo-h2"],html:"Social Media",tag:"h2"},{iconCls:"fa-brands fa-linkedin",text:"LinkedIn",url:"https://www.linkedin.com/company/neo-mjs/"},{iconCls:"fa-brands fa-facebook",text:"Facebook",url:"https://www.facebook.com/neo.mjs"},{iconCls:"fa-brands fa-x-twitter",text:"X",url:"https://x.com/neomjs1"}]}],layout:{ntype:"hbox",align:"stretch"},tag:"footer"}}const c=Neo.setupClass(l),h=Neo.setupClass(class extends s{static config={className:"Portal.view.home.parts.AfterMath",cls:["portal-home-aftermath"],layout:{ntype:"vbox",align:"stretch",pack:"center"},items:[{flex:1},{cls:["neo-h1"],flex:"none",html:"Next Steps",tag:"h1"},{cls:["neo-content"],flex:"none",html:'\n

\n To learn more about Neo.mjs please read the Learning Section or browse the blog.\n

\n

\n To arrange a demo or to talk to an engineer email info@neomjs.com. \n
For help starting a project email services@neomjs.com. \n
For questions about private training email training@neomjs.com.\n

\n ',tag:"div"},{flex:1},{module:c,flex:"none"}]}});var d=o(1364);class p extends a.A{static textContainerPositions=["start","end"];static config={className:"Portal.view.home.FeatureSection",baseCls:["portal-home-feature-section","neo-container"],contentItems_:null,headline_:null,learnMoreRoute_:null,livePreviewCode_:null,paragraph_:null,subHeadline_:null,textContainerPosition_:"start",layout:"base",items:[{module:a.A,cls:["portal-content-text"],layout:"base",items:[{cls:"neo-h1",flex:"none",reference:"headline",tag:"h1"},{cls:"neo-h2",flex:"none",reference:"sub-headline",tag:"h2"},{flex:"none",reference:"paragraph",tag:"p"},{module:r.A,reference:"learn-more-button",text:"Learn more",ui:"secondary"}]},{module:a.A,cls:"portal-content-wrapper",layout:"fit",reference:"portal-content-wrapper"}]};async activate(){let e=this,{parent:t}=e;e.livePreviewCode&&(await e.timeout(1e3),t.activePartsId===e.id&&t.mounted&&(e.getReference("live-preview").activeView="preview"))}afterSetContentItems(e,t){e??=[{module:d.A,cls:["page-live-preview"],reference:"live-preview",value:this.livePreviewCode}],this.getItem("portal-content-wrapper").items=e}afterSetLearnMoreRoute(e,t){this.getItem("learn-more-button").route=e}afterSetHeadline(e,t){this.getItem("headline").html=e}afterSetLivePreviewCode(e,t){t&&(this.getItem("live-preview").value=e)}afterSetParagraph(e,t){this.getItem("paragraph").html=e}afterSetSubHeadline(e,t){this.getItem("sub-headline").html=e}afterSetTextContainerPosition(e,t){this.toggleCls("portal-position-end","end"===e)}beforeSetTextContainerPosition(e,t){return this.beforeSetEnumValue(e,t,"textContainerPosition")}}const m=Neo.setupClass(p);class u extends m{static config={className:"Portal.view.home.parts.Colors",cls:["portal-home-parts-colors"],headline:"Amazing Potential",learnMoreRoute:"#/learn/WhyNeo-Speed",livePreviewCode:["import Viewport from '../../apps/colors/view/Viewport.mjs';","","class MainView extends Viewport {"," static config = {"," className: 'Portal.view.Colors',"," theme : 'neo-theme-dark'"," }","}","","Neo.setupClass(MainView);"].join("\n"),paragraph:["This is similar to the Helix demo — it's an extremely fast multi-window app. Click the start button ","to see the view reflect changes in the data. And the app is multi-window: the table and charts can be ","undocked into their own windows. In fact, the entire demo can be undocked."].join(""),subHeadline:"Socket Data"}}const f=Neo.setupClass(u);class g extends i.A{static config={className:"Portal.view.home.ContentBox",baseCls:["portal-content-box"],content_:null,header_:null,route_:null,_vdom:{tag:"a",cn:[{tag:"h3",cls:["portal-content-box-headline"]},{tag:"ul",cls:["portal-content-box-content"],cn:[]}]}};afterSetContent(e,t){e?.forEach((e=>{this.vdom.cn[1].cn.push({tag:"li",html:e})})),this.update()}afterSetHeader(e,t){this.vdom.cn[0].html=e,this.update()}afterSetRoute(e,t){this.vdom.href=e,this.update()}}const w=Neo.setupClass(g),b=Neo.setupClass(class extends s{static config={className:"Portal.view.home.parts.Features",cls:["portal-home-features"],layout:"grid",itemDefaults:{module:w},items:[{header:"Multi-threading",route:"#/learn/WhyNeo-Quick",content:["Following the OMT (Off the Main-Thread) paradigm","Your Apps & the Framework live within an Application Worker","Non-blocking, no-freeze, user interaction responses, even for heavy data i/o, processing, and intensive, complex screen updating","Additional Workers for OffscreenCanvas, Data, Delta-Updates & Tasks","A ServiceWorker connected to the App Worker for predictive Caching"]},{header:"Multi-Window Apps",route:"#/learn/WhyNeo-Quick",content:["No need for a Native Shell (e.g. Electron)","Sharing Data across Windows","Sharing State across Windows","Moving Components across Windows while keeping the same JS instances"]},{header:"Modern JS in your Browser",route:"#/learn/WhyNeo-Quick",content:["The Dev-Mode runs without the need for Transpilations or Compilations","Using the latest ECMAScript Features, as soon as the Browser Support is there","Simple and powerful Debugging","Reduced Development Costs"]},{header:"Powerful Component-Library",route:"#/learn/WhyNeo-Quick",content:["Declarative Component-Trees","High Order Components","Many out-of-the-box Components, including nested lazy-loaded forms","Multiple themes, which can get nested"]},{header:"Elegant State Management",route:"#/learn/WhyNeo-Speed",content:["Multiple communicating State-Providers","Observable","Supporting different architectures like MVVM without enforcing them"]},{header:"Core Features",route:"#/learn/WhyNeo-Speed",content:["RPC Layer (cross-realm, including Backends)","Extensibility","Scalability","Class Config System","Drag & Drop","Mixins, Plugins & Main-Thread Addons"]}]}});class v extends m{static config={className:"Portal.view.home.parts.Helix",cls:["portal-home-parts-helix"],headline:"Extreme Speed",learnMoreRoute:"#/learn/WhyNeo-Speed",livePreviewCode:["import Viewport from '../../examples/component/multiWindowHelix/Viewport.mjs';","","class MainView extends Viewport {"," static config = {"," className : 'Portal.view.MultiWindowHelix',"," showGitHubStarButton: false,"," theme : 'neo-theme-dark'"," }","}","","Neo.setupClass(MainView);"].join("\n"),paragraph:['This demo shows the Neo.mjs helix component, along with a "Helix Controls" panel. ',"Move your cursor over the helix, then rapidly scroll left and right to rotate, and up and down to zoom. ","As you do, look at the delta updates counter at the top. ","Neo.mjs easily handles 40,000 updates per second, and beyond."].join(""),subHeadline:"40,000 Updates /s"}}const C=Neo.setupClass(v);class x extends m{static config={className:"Portal.view.home.parts.How",cls:["portal-home-parts-how"],contentItems:[{ntype:"container",cls:"portal-content-container",layout:"fit",items:[{cls:"neo-worker-setup",tag:"element-loader",vdom:{src:"./resources/images/workers-focus.svg"}}]}],headline:"How?",learnMoreRoute:"#/learn/benefits.Multi-Threading",paragraph:["When a Neo.mjs app launches 3+ webworkers are spawned: one that holds App logic, one for calculating delta DOM ","updates, and one for backend calls. Each webworker runs in its own thread, and thus, in its own processor core. ","This means these processes run in parallel: DOM updates and transitions are not affected by your App logic ","and always run smooth. Every processor-intensive task runs outside the Main Thread."].join(""),subHeadline:"How does Neo.mjs do it?"}}const y=Neo.setupClass(x);class N extends s{static config={className:"Portal.view.home.parts.MainNeo",cls:["portal-home-main-neo"],layout:{ntype:"vbox",align:"center",pack:"center"},items:[{ntype:"container",cls:["logo-container"],items:[{ntype:"container",cls:["vector"]},{cls:["neo-h1"],html:"Neo.mjs",tag:"h1"}]},{cls:["neo-h2"],flex:"none",html:"Modern Enterprise-Ready JavaScript Framework",tag:"h2"},{cls:["neo-h3"],flex:"none",html:"Neo.mjs provides a new approach for building feature-rich web applications. Increase productivity by leveraging a vast component library and harness the power of multi-threading for extreme real-time performance.",tag:"h3"},{ntype:"container",cls:["button-group"],flex:"none",items:[{module:r.A,cls:["get-started-button"],flex:"none",route:"/learn",text:"Get started"},{module:r.A,cls:["neo-github"],flex:"none",text:"View on GitHub",ui:"secondary",url:"https://github.com/neomjs/neo"}]}]}}const k=Neo.setupClass(N);class S extends a.A{static config={className:"Portal.view.home.MainContainer",cls:["portal-home-maincontainer"],domListeners:[{intersect(e){let t=e.path[1].id;this.activePartsId=t,Neo.getComponent(t)?.activate?.()},scroll(e){e.target.cls.includes("portal-home-maincontainer")&&this.toggleCls("hide-sidebar",e.scrollTop>80)}}],itemDefaults:{flex:"none"},items:[{ntype:"component",cls:["portal-home-progress"]},k,b,C,f,y,h],scrollable:!0};activePartsId=null;afterSetMounted(e,t){super.afterSetMounted(e,t);let{id:o,windowId:a}=this;e&&this.timeout(50).then((()=>{Neo.main.addon.IntersectionObserver.register({callback:"isVisible",id:o,observe:[".portal-content-wrapper"],root:`#${o}`,threshold:1,windowId:a})}))}}const M=Neo.setupClass(S)}}]); \ No newline at end of file