{"remainingRequest":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js??vue-loader-options!/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue?vue&type=script&lang=js&","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/flatmapvuer/src/components/FlatmapVuer.vue","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/thread-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ci8qIGVzbGludC1kaXNhYmxlIG5vLWFsZXJ0LCBuby1jb25zb2xlICovCmltcG9ydCBWdWUgZnJvbSAidnVlIjsKaW1wb3J0IFRvb2x0aXAgZnJvbSAiLi9Ub29sdGlwIjsKaW1wb3J0IFNlbGVjdGlvbnNHcm91cCBmcm9tICIuL1NlbGVjdGlvbnNHcm91cCI7CmltcG9ydCBUcmVlQ29udHJvbHMgZnJvbSAiLi9UcmVlQ29udHJvbHMiOwppbXBvcnQgeyBNYXBTdmdJY29uLCBNYXBTdmdTcHJpdGVDb2xvciB9IGZyb20gIkBhYmktc29mdHdhcmUvc3ZnLXNwcml0ZSI7CmltcG9ydCBTdmdMZWdlbmRzIGZyb20gIi4vbGVnZW5kcy9TdmdMZWdlbmRzIjsKaW1wb3J0IHsKICBCdXR0b24sCiAgQ29sLAogIExvYWRpbmcsCiAgUmFkaW8sCiAgUmFkaW9Hcm91cCwKICBSb3csCiAgU2VsZWN0LAp9IGZyb20gImVsZW1lbnQtdWkiOwppbXBvcnQgbGFuZyBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2NhbGUvbGFuZy9lbiI7CmltcG9ydCBsb2NhbGUgZnJvbSAiZWxlbWVudC11aS9saWIvbG9jYWxlIjsKaW1wb3J0IGZsYXRtYXBNYXJrZXIgZnJvbSAiLi4vaWNvbnMvZmxhdG1hcC1tYXJrZXIiOwppbXBvcnQge0ZsYXRtYXBRdWVyaWVzLCBmaW5kVGF4b25vbXlMYWJlbH0gZnJvbSAiLi4vc2VydmljZXMvZmxhdG1hcFF1ZXJpZXMuanMiOwppbXBvcnQgeWVsbG93c3RhciBmcm9tICIuLi9pY29ucy95ZWxsb3dzdGFyIjsKCmxvY2FsZS51c2UobGFuZyk7ClZ1ZS51c2UoQnV0dG9uKTsKVnVlLnVzZShDb2wpOwpWdWUudXNlKExvYWRpbmcuZGlyZWN0aXZlKTsKVnVlLnVzZShSYWRpbyk7ClZ1ZS51c2UoUmFkaW9Hcm91cCk7ClZ1ZS51c2UoUm93KTsKVnVlLnVzZShTZWxlY3QpOwpjb25zdCBSZXNpemVTZW5zb3IgPSByZXF1aXJlKCJjc3MtZWxlbWVudC1xdWVyaWVzL3NyYy9SZXNpemVTZW5zb3IiKTsKCmNvbnN0IHByb2Nlc3NUYXhvbiA9IChmbGF0bWFwQVBJLCB0YXhvbklkZW50aWZpZXJzKSA9PiB7CiAgbGV0IHByb2Nlc3NlZCA9IFtdOwogIHRheG9uSWRlbnRpZmllcnMuZm9yRWFjaCgodGF4b24pID0+IHsKICAgIGZpbmRUYXhvbm9teUxhYmVsKGZsYXRtYXBBUEksIHRheG9uKS50aGVuKCh2YWx1ZSkgPT4gewogICAgICBjb25zdCBpdGVtID0geyB0YXhvbiwgbGFiZWw6IHZhbHVlIH07CiAgICAgIHByb2Nlc3NlZC5wdXNoKGl0ZW0pOwogICAgfSk7CiAgfSk7CgogIHJldHVybiBwcm9jZXNzZWQ7Cn07Cgpjb25zdCBwcm9jZXNzRlRVcyA9IChwYXJlbnQsIGtleSkgPT4gewogIGNvbnN0IGZ0dXMgPSBbXTsKICBsZXQgaXRlbXMgPSBwYXJlbnQub3JnYW5zID8gcGFyZW50Lm9yZ2FucyA6IHBhcmVudC5mdHVzOwogIGNvbnN0IGNoaWxkcmVuID0gaXRlbXMKICAgID8gaXRlbXMuZmlsdGVyKAogICAgICAgIChvYmosIGluZGV4KSA9PgogICAgICAgICAgaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmxhYmVsID09PSBvYmoubGFiZWwpID09PSBpbmRleAogICAgICApCiAgICA6IHVuZGVmaW5lZDsKICBpZiAoY2hpbGRyZW4pIHsKICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7CiAgICAgIGNvbnN0IGRhdGEgPSB7CiAgICAgICAgbGFiZWw6IGNoaWxkLmxhYmVsLAogICAgICAgIG1vZGVsczogY2hpbGQubW9kZWxzLAogICAgICAgIGtleTogYCR7a2V5fS4ke2NoaWxkLmxhYmVsfWAsCiAgICAgIH07CiAgICAgIGNvbnN0IGdyYW5kQ2hpbGRyZW4gPSBwcm9jZXNzRlRVcyhjaGlsZCwgZGF0YS5rZXkpOwogICAgICBpZiAoZ3JhbmRDaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgZGF0YS5jaGlsZHJlbiA9IGdyYW5kQ2hpbGRyZW47CiAgICAgIH0KICAgICAgZnR1cy5wdXNoKGRhdGEpOwogICAgfSk7CiAgfQogIHJldHVybiBmdHVzOwp9OwoKY29uc3QgcHJvY2Vzc1N5c3RlbXMgPSAoc3lzdGVtcykgPT4gewogIGNvbnN0IGFsbFN5c3RlbXMgPSBbXTsKICBpZiAoc3lzdGVtcyAmJiBzeXN0ZW1zLmxlbmd0aCA+IDApIHsKICAgIGNvbnN0IGRhdGEgPSB7IGxhYmVsOiAiQWxsIiwga2V5OiAiQWxsIiwgY2hpbGRyZW46IFtdIH07CiAgICBzeXN0ZW1zLmZvckVhY2goKHN5c3RlbSkgPT4gewogICAgICBjb25zdCBjaGlsZCA9IHsKICAgICAgICBjb2xvdXI6IHN5c3RlbS5jb2xvdXIsCiAgICAgICAgZW5hYmxlZDogc3lzdGVtLmVuYWJsZWQsCiAgICAgICAgbGFiZWw6IHN5c3RlbS5pZCwKICAgICAgICBrZXk6IHN5c3RlbS5pZCwKICAgICAgfTsKICAgICAgY29uc3QgY2hpbGRyZW4gPSBwcm9jZXNzRlRVcyhzeXN0ZW0sIGNoaWxkLmtleSk7CiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSBjaGlsZC5jaGlsZHJlbiA9IGNoaWxkcmVuOwogICAgICBkYXRhLmNoaWxkcmVuLnB1c2goY2hpbGQpOwogICAgfSk7CgogICAgYWxsU3lzdGVtcy5wdXNoKGRhdGEpOwogIH0KCiAgcmV0dXJuIGFsbFN5c3RlbXM7Cn07Cgpjb25zdCBjcmVhdGVVbmZpbGxlZFRvb2x0aXBEYXRhID0gZnVuY3Rpb24gKCkgewogIHJldHVybiB7CiAgICBkZXN0aW5hdGlvbnM6IFtdLAogICAgb3JpZ2luczogW10sCiAgICBjb21wb25lbnRzOiBbXSwKICAgIGRlc3RpbmF0aW9uc1dpdGhEYXRhc2V0czogW10sCiAgICBvcmlnaW5zV2l0aERhdGFzZXRzOiBbXSwKICAgIGNvbXBvbmVudHNXaXRoRGF0YXNldHM6IFtdLAogICAgcmVzb3VyY2U6IHVuZGVmaW5lZCwKICB9Owp9OwoKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJGbGF0bWFwVnVlciIsCiAgY29tcG9uZW50czogewogICAgTWFwU3ZnSWNvbiwKICAgIE1hcFN2Z1Nwcml0ZUNvbG9yLAogICAgVG9vbHRpcCwKICAgIFRyZWVDb250cm9scywKICAgIFNlbGVjdGlvbnNHcm91cCwKICAgIFN2Z0xlZ2VuZHMsCiAgfSwKICBiZWZvcmVDcmVhdGU6IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMubWFwTWFuYWdlciA9IHVuZGVmaW5lZDsKICAgIHRoaXMubWFwSW1wID0gdW5kZWZpbmVkOwogICAgLy9UaGUgc3RhdGUgd2F0Y2hlciBtYXkgdHJpZ2dlcmVkIGJlZm9yZQogICAgLy9jcmVhdGVkIGNhdXNpbmcgaXNzdWUsIFRoaXMgZmxhZyB3aWxsCiAgICAvL3Jlc29sdmUgdGhpcyBpc3N1ZS4KICAgIHRoaXMuc2V0U3RhdGVSZXF1aXJlZCA9IGZhbHNlOwogIH0sCiAgbWV0aG9kczogewogICAgdmlld0xhdGVzdE1hcDogZnVuY3Rpb24gKCkgewogICAgICBsZXQgYmlvbG9naWNhbFNleCA9IHRoaXMuYmlvbG9naWNhbFNleCA/IHRoaXMuYmlvbG9naWNhbFNleCA6IHVuZGVmaW5lZDsKICAgICAgLy9IdW1hbiByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nCiAgICAgIGlmICh0aGlzLmVudHJ5ID09PSAiTkNCSVRheG9uOjk2MDYiKSB7CiAgICAgICAgYmlvbG9naWNhbFNleCA9ICJQQVRPOjAwMDAzODQiOwogICAgICB9CiAgICAgIGNvbnN0IHN0YXRlID0gewogICAgICAgIGVudHJ5OiB0aGlzLmVudHJ5LAogICAgICAgIGJpb2xvZ2ljYWxTZXgsCiAgICAgICAgdmlld3BvcnQ6IHRoaXMubWFwSW1wLmdldFN0YXRlKCksCiAgICAgIH07CiAgICAgIHRoaXMuJGVtaXQoInZpZXctbGF0ZXN0LW1hcCIsIHN0YXRlKTsKICAgIH0sCiAgICBiYWNrZ3JvdW5kQ2hhbmdlQ2FsbGJhY2s6IGZ1bmN0aW9uIChjb2xvdXIpIHsKICAgICAgdGhpcy5jdXJyZW50QmFja2dyb3VuZCA9IGNvbG91cjsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuc2V0QmFja2dyb3VuZENvbG91cih0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kLCAxKTsKICAgICAgfQogICAgfSwKICAgIHRvZ2dsZURyYXdlcjogZnVuY3Rpb24gKCkgewogICAgICB0aGlzLmRyYXdlck9wZW4gPSAhdGhpcy5kcmF3ZXJPcGVuOwogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gdG9nZ2xlIGNvbG91ci9ncmV5c2NhbGUgb2Ygb3JnYW5zLgogICAgICovCiAgICBzZXRDb2xvdXI6IGZ1bmN0aW9uIChmbGFnKSB7CiAgICAgIHRoaXMuY29sb3VyUmFkaW8gPSBmbGFnOwogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5zZXRDb2xvdXIoeyBjb2xvdXI6IGZsYWcsIG91dGxpbmU6IHRoaXMub3V0bGluZXNSYWRpbyB9KTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogRnVuY3Rpb24gdG8gdG9nZ2xlIG91dGxpbmVzIGYgb3JnYW5zLgogICAgICovCiAgICBzZXRPdXRsaW5lczogZnVuY3Rpb24gKGZsYWcpIHsKICAgICAgdGhpcy5vdXRsaW5lUmFkaW8gPSBmbGFnOwogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5zZXRDb2xvdXIoeyBjb2xvdXI6IHRoaXMuY29sb3VyUmFkaW8sIG91dGxpbmU6IGZsYWcgfSk7CiAgICAgIH0KICAgIH0sCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIHRvIHRvZ2dsZSBwYXRocyB0byBkZWZhdWx0LgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqLwogICAgcmVzZXRWaWV3OiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLnJlc2V0TWFwKCk7CiAgICAgICAgaWYgKHRoaXMuJHJlZnMuY2VudHJlbGluZXNTZWxlY3Rpb24pIHsKICAgICAgICAgIHRoaXMuJHJlZnMuY2VudHJlbGluZXNTZWxlY3Rpb24ucmVzZXQoKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuJHJlZnMuc2tjYW5TZWxlY3Rpb24pIHsKICAgICAgICAgIHRoaXMuJHJlZnMuc2tjYW5TZWxlY3Rpb24ucmVzZXQoKTsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuJHJlZnMubGF5ZXJzU2VsZWN0aW9uKSB7CiAgICAgICAgICB0aGlzLiRyZWZzLmxheWVyc1NlbGVjdGlvbi5yZXNldCgpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy4kcmVmcy5zeXN0ZW1zU2VsZWN0aW9uKSB7CiAgICAgICAgICB0aGlzLiRyZWZzLnBhdGh3YXlzU2VsZWN0aW9uLnJlc2V0KCk7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLiRyZWZzLnBhdGh3YXlzU2VsZWN0aW9uKSB7CiAgICAgICAgICB0aGlzLiRyZWZzLnBhdGh3YXlzU2VsZWN0aW9uLnJlc2V0KCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIGluLgogICAgICogQWxzbyBjYWxsZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBidXR0b24gaXMgcHJlc3NlZC4KICAgICAqLwogICAgem9vbUluOiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLnpvb21JbigpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIG91dC4KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuCiAgICAgKi8KICAgIHpvb21PdXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuem9vbU91dCgpOwogICAgICB9CiAgICB9LAogICAgY2VudHJlTGluZXNTZWxlY3RlZDogZnVuY3Rpb24gKHBheWxvYWQpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlQ2VudHJlbGluZXMocGF5bG9hZC52YWx1ZSk7CiAgICAgIH0KICAgIH0sCiAgICBzY2thblNlbGVjdGVkOiBmdW5jdGlvbiAocGF5bG9hZCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVTY2thblBhdGgocGF5bG9hZC5rZXksIHBheWxvYWQudmFsdWUpOwogICAgICB9CiAgICB9LAogICAgY2hlY2tBbGxTQ0tBTjogZnVuY3Rpb24gKHBheWxvYWQpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgcGF5bG9hZC5rZXlzLmZvckVhY2goKGtleSkgPT4KICAgICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZVNja2FuUGF0aChrZXksIHBheWxvYWQudmFsdWUpKTsKICAgICAgfQogICAgfSwKICAgIGhpZ2hsaWdodENvbm5lY3RlZFBhdGhzOiBmdW5jdGlvbiAocGF5bG9hZCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICBsZXQgcGF0aHMgPSBbLi4udGhpcy5tYXBJbXAucGF0aE1vZGVsTm9kZXMocGF5bG9hZCldOwogICAgICAgIC8vIFRoZSBsaW5lIGJlbG93IG1hdGNoZXMgdGhlIHBhdGhzIHRvIHRoZSBhbm5JZFRvRmVhdHVyZUlkIG1hcCB0byBnZXQgdGhlIGZlYXR1cmUgaWRzCgogICAgICAgIGxldCBwYXRoRmVhdHVyZXMgPSBwYXRocy5tYXAocD0+dGhpcy5tYXBJbXAuZmVhdHVyZVByb3BlcnRpZXMocCkpOwogICAgICAgIGxldCB0b0hpZ2hsaWdodCA9IFtdOwogICAgICAgIHBhdGhGZWF0dXJlcy5mb3JFYWNoKHA9PnsKICAgICAgICAgIHRoaXMubWFwSW1wLm5vZGVQYXRoTW9kZWxzKHAuZmVhdHVyZUlkKS5mb3JFYWNoKGY9PnsKICAgICAgICAgICAgdG9IaWdobGlnaHQucHVzaChmKTsKICAgICAgICAgIH0pCiAgICAgICAgfSkKICAgICAgICAvLyBkaXNwbGF5IGNvbm5lY3RlZCBwYXRocwogICAgICAgIHRoaXMubWFwSW1wLnpvb21Ub0ZlYXR1cmVzKHRvSGlnaGxpZ2h0LCB7bm9ab29tSW46IHRydWV9KTsKICAgICAgfQogICAgfSwKICAgIHN5c3RlbVNlbGVjdGVkOiBmdW5jdGlvbiAocGF5bG9hZCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVTeXN0ZW0ocGF5bG9hZC5rZXksIHBheWxvYWQudmFsdWUpOwogICAgICB9CiAgICB9LAogICAgY2hlY2tBbGxTeXN0ZW1zOiBmdW5jdGlvbiAoZmxhZykgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLnN5c3RlbXNbMF0uY2hpbGRyZW4uZm9yRWFjaCgoa2V5KSA9PgogICAgICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlU3lzdGVtKGtleS5sYWJlbCwgZmxhZykKICAgICAgICApOwogICAgICB9CiAgICB9LAogICAgZnR1U2VsZWN0ZWQ6IGZ1bmN0aW9uIChtb2RlbHMpIHsKICAgICAgdGhpcy5zZWFyY2hBbmRTaG93UmVzdWx0KG1vZGVscywgdHJ1ZSk7CiAgICB9LAogICAgbGF5ZXJzU2VsZWN0ZWQ6IGZ1bmN0aW9uIChwYXlsb2FkKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZUxheWVyKHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsKICAgICAgfQogICAgfSwKICAgIGNoZWNrQWxsTGF5ZXJzOiBmdW5jdGlvbiAocGF5bG9hZCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICBwYXlsb2FkLmtleXMuZm9yRWFjaCgoa2V5KSA9PgogICAgICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlTGF5ZXIoa2V5LCBwYXlsb2FkLnZhbHVlKQogICAgICAgICk7CiAgICAgIH0KICAgIH0sCiAgICB0YXhvbnNTZWxlY3RlZDogZnVuY3Rpb24gKHBheWxvYWQpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlQ29ubmVjdGl2aXR5QnlUYXhvbklkcyhwYXlsb2FkLmtleSwgcGF5bG9hZC52YWx1ZSk7CiAgICAgIH0KICAgIH0sCiAgICBjaGVja0FsbFRheG9uczogZnVuY3Rpb24gKHBheWxvYWQpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgcGF5bG9hZC5rZXlzLmZvckVhY2goKGtleSkgPT4KICAgICAgICAgIHRoaXMubWFwSW1wLmVuYWJsZUNvbm5lY3Rpdml0eUJ5VGF4b25JZHMoa2V5LCBwYXlsb2FkLnZhbHVlKQogICAgICAgICk7CiAgICAgIH0KICAgIH0sCiAgICBwYXRod2F5c1NlbGVjdGVkOiBmdW5jdGlvbiAocGF5bG9hZCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVQYXRoKHBheWxvYWQua2V5LCBwYXlsb2FkLnZhbHVlKTsKICAgICAgfQogICAgfSwKICAgIGNoZWNrQWxsUGF0aHdheXM6IGZ1bmN0aW9uIChwYXlsb2FkKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIHBheWxvYWQua2V5cy5mb3JFYWNoKChrZXkpID0+CiAgICAgICAgICB0aGlzLm1hcEltcC5lbmFibGVQYXRoKGtleSwgcGF5bG9hZC52YWx1ZSkKICAgICAgICApOwogICAgICB9CiAgICB9LAogICAgZW5hYmxlUGFuWm9vbUV2ZW50czogZnVuY3Rpb24gKGZsYWcpIHsKICAgICAgdGhpcy5tYXBJbXAuZW5hYmxlUGFuWm9vbUV2ZW50cyhmbGFnKTsKICAgIH0sCiAgICBldmVudENhbGxiYWNrOiBmdW5jdGlvbiAoKSB7CiAgICAgIHJldHVybiAoZXZlbnRUeXBlLCBkYXRhLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgaWYgKGV2ZW50VHlwZSAhPT0gInBhbi16b29tIikgewogICAgICAgICAgY29uc3QgbGFiZWwgPSBkYXRhLmxhYmVsOwogICAgICAgICAgY29uc3QgcmVzb3VyY2UgPSBbZGF0YS5tb2RlbHNdOwogICAgICAgICAgY29uc3QgdGF4b25vbXkgPSB0aGlzLmVudHJ5OwogICAgICAgICAgY29uc3QgYmlvbG9naWNhbFNleCA9IHRoaXMuYmlvbG9naWNhbFNleDsKICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSB7CiAgICAgICAgICAgIGRhdGFzZXQ6IGRhdGEuZGF0YXNldCwKICAgICAgICAgICAgYmlvbG9naWNhbFNleDogYmlvbG9naWNhbFNleCwKICAgICAgICAgICAgdGF4b25vbXk6IHRheG9ub215LAogICAgICAgICAgICByZXNvdXJjZTogcmVzb3VyY2UsCiAgICAgICAgICAgIGxhYmVsOiBsYWJlbCwKICAgICAgICAgICAgZmVhdHVyZTogZGF0YSwKICAgICAgICAgICAgdXNlckRhdGE6IGFyZ3MsCiAgICAgICAgICAgIGV2ZW50VHlwZTogZXZlbnRUeXBlLAogICAgICAgICAgICBwcm92ZW5hbmNlVGF4b25vbXk6IGRhdGEudGF4b25zCiAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKGRhdGEudGF4b25zKQogICAgICAgICAgICAgIDogdW5kZWZpbmVkLAogICAgICAgICAgfTsKICAgICAgICAgIGlmIChldmVudFR5cGUgPT09ICJjbGljayIpIHsKICAgICAgICAgICAgaWYgKHRoaXMudmlld2luZ01vZGUgPT09ICJOZXR3b3JrIERpc2NvdmVyeSIpIHsKICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodENvbm5lY3RlZFBhdGhzKFtkYXRhLm1vZGVsc10pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZSA9IGRhdGEubW9kZWxzID8gZGF0YS5tb2RlbHMgOiAiIjsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICJtb3VzZWVudGVyIiAmJiAKICAgICAgICAgICEodGhpcy52aWV3aW5nTW9kZSA9PT0gIk5ldHdvcmsgRGlzY292ZXJ5IikpIHsKICAgICAgICAgICAgdGhpcy5jdXJyZW50SG92ZXIgPSBkYXRhLm1vZGVscyA/IGRhdGEubW9kZWxzIDogIiI7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoCiAgICAgICAgICAgIGRhdGEgJiYKICAgICAgICAgICAgZGF0YS50eXBlICE9PSAibWFya2VyIiAmJgogICAgICAgICAgICBldmVudFR5cGUgPT09ICJjbGljayIgJiYKICAgICAgICAgICAgISh0aGlzLnZpZXdpbmdNb2RlID09PSAiTmV0d29yayBEaXNjb3ZlcnkiKQogICAgICAgICAgKSB7CiAgICAgICAgICAgIHRoaXMuY2hlY2tBbmRDcmVhdGVQb3B1cHMocGF5bG9hZCk7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLiRlbWl0KCJyZXNvdXJjZS1zZWxlY3RlZCIsIHBheWxvYWQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRlbWl0KCJwYW4tem9vbS1jYWxsYmFjayIsIGRhdGEpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0sCiAgICAvLyBjaGVja05ldXJvbkNsaWNrZWQgc2hvd3MgYSBuZXVyb24gcGF0aCBwb3AgdXAgaWYgYSBwYXRoIHdhcyByZWNlbnRseSBjbGlja2VkCiAgICBjaGVja0FuZENyZWF0ZVBvcHVwczogYXN5bmMgZnVuY3Rpb24gKGRhdGEpIHsKICAgICAgLy8gQ2FsbCBmbGF0bWFwIGRhdGFiYXNlIHRvIGdldCB0aGUgY29ubmVjdGlvbiBkYXRhCiAgICAgIGlmICh0aGlzLnZpZXdpbmdNb2RlICA9PT0gIkFubm90YXRpb24iKSB7CiAgICAgICAgaWYgKGRhdGEuZmVhdHVyZSAmJiBkYXRhLmZlYXR1cmUuZmVhdHVyZUlkICYmIGRhdGEuZmVhdHVyZS5tb2RlbHMpIHsKICAgICAgICAgIHRoaXMuYW5ub3RhdGlvbkVudHJ5ID0geyAuLi5kYXRhLmZlYXR1cmUsIHJlc291cmNlSWQ6IHRoaXMuc2VydmVyVVVJRCB9OwogICAgICAgICAgdGhpcy5kaXNwbGF5VG9vbHRpcChkYXRhLmZlYXR1cmUubW9kZWxzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5hbm5vdGF0aW9uID0ge307CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGxldCByZXN1bHRzID0KICAgICAgICAgIGF3YWl0IHRoaXMuZmxhdG1hcFF1ZXJpZXMucmV0cmlldmVGbGF0bWFwS25vd2xlZGdlRm9yRXZlbnQoZGF0YSk7CiAgICAgICAgLy8gVGhlIGxpbmUgYmVsb3cgb25seSBjcmVhdGVzIHRoZSB0b29sdGlwIGlmIHNvbWUgZGF0YSB3YXMgZm91bmQgb24gdGhlIHBhdGgKICAgICAgICAvLyByZXN1bHQgMCBpcyB0aGUgY29ubmVjdGlvbiwgcmVzdWx0IDEgaXMgdGhlIHB1Ym1lZCByZXN1bHRzIGZyb20gZmxhdG1hcAogICAgICAgIGlmICgKICAgICAgICAgIHJlc3VsdHNbMF0gfHwKICAgICAgICAgIHJlc3VsdHNbMV0gfHwKICAgICAgICAgIChkYXRhLmZlYXR1cmUuaHlwZXJsaW5rcyAmJiBkYXRhLmZlYXR1cmUuaHlwZXJsaW5rcy5sZW5ndGggPiAwKQogICAgICAgICkgewogICAgICAgICAgdGhpcy5yZXNvdXJjZUZvclRvb2x0aXAgPSBkYXRhLnJlc291cmNlWzBdOwogICAgICAgICAgZGF0YS5yZXNvdXJjZUZvclRvb2x0aXAgPSB0aGlzLnJlc291cmNlRm9yVG9vbHRpcDsKICAgICAgICAgIHRoaXMuY3JlYXRlVG9vbHRpcEZyb21OZXVyb25DdXJhdGlvbihkYXRhKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBwb3BVcENzc0hhY2tzOiBmdW5jdGlvbiAoKSB7CiAgICAgIC8vIEJlbG93IGlzIGEgaGFjayB0byByZW1vdmUgZmxhdG1hcCB0b29sdGlwcyB3aGlsZSBwb3B1cCBpcyBvcGVuCiAgICAgIGxldCBmdG9vbHRpcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5mbGF0bWFwLXRvb2x0aXAtcG9wdXAiKTsKICAgICAgaWYgKGZ0b29sdGlwKSBmdG9vbHRpcC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubWFwbGlicmVnbC1wb3B1cC1jbG9zZS1idXR0b24iKS5zdHlsZS5kaXNwbGF5ID0KICAgICAgICAiYmxvY2siOwogICAgICB0aGlzLiRyZWZzLnRvb2x0aXAuJGVsLnN0eWxlLmRpc3BsYXkgPSAiZmxleCI7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tYXBsaWJyZWdsLXBvcHVwLWNsb3NlLWJ1dHRvbiIpLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmZsYXRtYXAtdG9vbHRpcC1wb3B1cCIpLnN0eWxlLmRpc3BsYXkgPQogICAgICAgICAgImJsb2NrIjsKICAgICAgfTsKICAgIH0sCiAgICBjbG9zZVRvb2x0aXA6IGZ1bmN0aW9uICgpIHsKICAgICAgdGhpcy4kcmVmcy50b29sdGlwLiRlbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIubWFwbGlicmVnbC1wb3B1cCIpLmZvckVhY2goKGl0ZW0pID0+IHsKICAgICAgICBpdGVtLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgIH0pOwogICAgfSwKICAgIGNyZWF0ZVRvb2x0aXBGcm9tTmV1cm9uQ3VyYXRpb246IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgIHRoaXMudG9vbHRpcEVudHJ5ID0gYXdhaXQgdGhpcy5mbGF0bWFwUXVlcmllcy5jcmVhdGVUb29sdGlwRGF0YShkYXRhKTsKICAgICAgdGhpcy5kaXNwbGF5VG9vbHRpcChkYXRhLnJlc291cmNlWzBdKTsKICAgIH0sCiAgICAvLyBLZWVwaW5nIHRoaXMgYXMgYW4gQVBJCiAgICBzaG93UG9wdXA6IGZ1bmN0aW9uIChmZWF0dXJlSWQsIG5vZGUsIG9wdGlvbnMpIHsKICAgICAgbGV0IG15T3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIGlmIChteU9wdGlvbnMpIHsKICAgICAgICAgIGlmICghbXlPcHRpb25zLmNsYXNzTmFtZSkgbXlPcHRpb25zLmNsYXNzTmFtZSA9ICJjdXN0b20tcG9wdXAiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBteU9wdGlvbnMgPSB7IGNsYXNzTmFtZTogImN1c3RvbS1wb3B1cCIsIHBvc2l0aW9uQXRMYXN0Q2xpY2s6IHRydWUgfTsKICAgICAgICB9CiAgICAgICAgdGhpcy5tYXBJbXAuc2hvd1BvcHVwKGZlYXR1cmVJZCwgbm9kZSwgbXlPcHRpb25zKTsKICAgICAgfQogICAgfSwKICAgIHNob3dNYXJrZXJQb3B1cDogZnVuY3Rpb24gKGZlYXR1cmVJZCwgbm9kZSwgb3B0aW9ucykgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICB0aGlzLm1hcEltcC5zaG93TWFya2VyUG9wdXAoZmVhdHVyZUlkLCBub2RlLCBvcHRpb25zKTsKICAgICAgfQogICAgfSwKICAgIGNsb3NlTWluaW1hcDogZnVuY3Rpb24gKCkgewogICAgICBsZXQgbWluaW1hcEVsID0gdGhpcy4kcmVmcy5mbGF0bWFwQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoCiAgICAgICAgIi5tYXBsaWJyZWdsLWN0cmwtbWluaW1hcCIKICAgICAgKTsgLy8gZmluZCBtaW5pbWFwCiAgICAgIGlmICh0aGlzLm1pbmltYXBTbWFsbCkgewogICAgICAgIC8vc3dpdGNoIHRoZSBjbGFzc2VzIG9uIHRoZSBtaW5pbWFwCiAgICAgICAgbWluaW1hcEVsLmNsYXNzTGlzdC5hZGQoImVubGFyZ2UiKTsKICAgICAgICBtaW5pbWFwRWwuY2xhc3NMaXN0LnJlbW92ZSgic2hyaW5rIik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWluaW1hcEVsLmNsYXNzTGlzdC5hZGQoInNocmluayIpOwogICAgICAgIG1pbmltYXBFbC5jbGFzc0xpc3QucmVtb3ZlKCJlbmxhcmdlIik7CiAgICAgIH0KICAgICAgdGhpcy5taW5pbWFwU21hbGwgPSAhdGhpcy5taW5pbWFwU21hbGw7CiAgICB9LAogICAgYWRkUmVzaXplQnV0dG9uVG9NaW5pbWFwOiBmdW5jdGlvbiAoKSB7CiAgICAgIGxldCBtaW5pbWFwRWwgPSB0aGlzLiRyZWZzLmZsYXRtYXBDb250YWluZXIucXVlcnlTZWxlY3RvcigKICAgICAgICAiLm1hcGxpYnJlZ2wtY3RybC1taW5pbWFwIgogICAgICApOwogICAgICBpZiAobWluaW1hcEVsKSB7CiAgICAgICAgdGhpcy4kcmVmcy5taW5pbWFwUmVzaXplLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoCiAgICAgICAgICB0aGlzLiRyZWZzLm1pbmltYXBSZXNpemUKICAgICAgICApOwogICAgICAgIG1pbmltYXBFbC5hcHBlbmRDaGlsZCh0aGlzLiRyZWZzLm1pbmltYXBSZXNpemUpOwogICAgICAgIHRoaXMubWluaW1hcFJlc2l6ZVNob3cgPSB0cnVlOwogICAgICB9CiAgICB9LAogICAgc2V0SGVscE1vZGU6IGZ1bmN0aW9uIChoZWxwTW9kZSkgewogICAgICBpZiAoaGVscE1vZGUpIHsKICAgICAgICB0aGlzLmluSGVscCA9IHRydWU7CiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllcy5mb3JFYWNoKChpdGVtKSA9PiB7CiAgICAgICAgICBpdGVtLnZhbHVlID0gdHJ1ZTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLm9wZW5GbGF0bWFwSGVscFBvcHVwKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5pbkhlbHAgPSBmYWxzZTsKICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzLmZvckVhY2goKGl0ZW0pID0+IHsKICAgICAgICAgIGl0ZW0udmFsdWUgPSBmYWxzZTsKICAgICAgICB9KTsKICAgICAgICB0aGlzLmNsb3NlRmxhdG1hcEhlbHBQb3B1cCgpOwogICAgICB9CiAgICB9LAogICAgc2hvd1Rvb2xpdGlwOiBmdW5jdGlvbiAodG9vbHRpcE51bWJlcikgewogICAgICBpZiAoIXRoaXMuaW5IZWxwKSB7CiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudG9vbHRpcFdhaXRbdG9vbHRpcE51bWJlcl0pOwogICAgICAgIHRoaXMudG9vbHRpcFdhaXRbdG9vbHRpcE51bWJlcl0gPSBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXNbdG9vbHRpcE51bWJlcl0udmFsdWUgPSB0cnVlOwogICAgICAgIH0sIDUwMCk7CiAgICAgIH0KICAgIH0sCiAgICBoaWRlVG9vbGl0aXA6IGZ1bmN0aW9uICh0b29sdGlwTnVtYmVyKSB7CiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsKICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50b29sdGlwV2FpdFt0b29sdGlwTnVtYmVyXSk7CiAgICAgICAgdGhpcy50b29sdGlwV2FpdFt0b29sdGlwTnVtYmVyXSA9IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllc1t0b29sdGlwTnVtYmVyXS52YWx1ZSA9IGZhbHNlOwogICAgICAgIH0sIDUwMCk7CiAgICAgIH0KICAgIH0sCiAgICBkaXNwbGF5VG9vbHRpcDogZnVuY3Rpb24gKGZlYXR1cmUpIHsKICAgICAgdGhpcy5tYXBJbXAuc2hvd1BvcHVwKAogICAgICAgIHRoaXMubWFwSW1wLm1vZGVsRmVhdHVyZUlkcyhmZWF0dXJlKVswXSwKICAgICAgICB0aGlzLiRyZWZzLnRvb2x0aXAuJGVsLAogICAgICAgIHsgY2xhc3NOYW1lOiAiZmxhdG1hcHZ1ZXItcG9wb3ZlciIsIHBvc2l0aW9uQXRMYXN0Q2xpY2s6IHRydWUgfQogICAgICApOwogICAgICB0aGlzLnBvcFVwQ3NzSGFja3MoKTsKICAgIH0sCiAgICBvcGVuRmxhdG1hcEhlbHBQb3B1cDogZnVuY3Rpb24gKCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICBsZXQgaGVhcnRJZCA9IHRoaXMubWFwSW1wLmZlYXR1cmVJZHNGb3JNb2RlbCgiVUJFUk9OOjAwMDA5NDgiKVswXTsKICAgICAgICBjb25zdCBlbG0gPSAiQ2xpY2sgZm9yIG1vcmUgaW5mb3JtYXRpb24iOwogICAgICAgIHRoaXMubWFwSW1wLnNob3dQb3B1cChoZWFydElkLCBlbG0sIHsKICAgICAgICAgIGFuY2hvcjogInRvcCIsCiAgICAgICAgICBjbGFzc05hbWU6ICJmbGF0bWFwLXBvcHVwLXBvcHBlciIsCiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICBjbG9zZUZsYXRtYXBIZWxwUG9wdXA6IGZ1bmN0aW9uICgpIHsKICAgICAgdGhpcy4kZWwKICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgiLm1hcGxpYnJlZ2wtcG9wdXAtY2xvc2UtYnV0dG9uIikKICAgICAgICAuZm9yRWFjaCgoaXRlbSkgPT4gewogICAgICAgICAgaXRlbS5jbGljaygpOwogICAgICAgIH0pOwogICAgfSwKICAgIGdldExhYmVsczogZnVuY3Rpb24gKCkgewogICAgICBsZXQgbGFiZWxzID0gW107CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIGxldCBhbm5vdGF0aW9ucyA9IHRoaXMubWFwSW1wLmFubm90YXRpb25zOwogICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGFubm90YXRpb25zLnZhbHVlcygpKSB7CiAgICAgICAgICBpZiAodmFsdWUubGFiZWwpIGxhYmVscy5wdXNoKHZhbHVlLmxhYmVsKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChsYWJlbHMpKTsKICAgICAgfQogICAgfSwKICAgIGdldFN0YXRlOiBmdW5jdGlvbiAoKSB7CiAgICAgIGlmICh0aGlzLm1hcEltcCkgewogICAgICAgIGxldCBzdGF0ZSA9IHsKICAgICAgICAgIGVudHJ5OiB0aGlzLmVudHJ5LAogICAgICAgICAgdmlld3BvcnQ6IHRoaXMubWFwSW1wLmdldFN0YXRlKCksCiAgICAgICAgfTsKICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy5tYXBJbXAuZ2V0SWRlbnRpZmllcigpOwogICAgICAgIGlmICh0aGlzLmJpb2xvZ2ljYWxTZXgpIHN0YXRlWyJiaW9sb2dpY2FsU2V4Il0gPSB0aGlzLmJpb2xvZ2ljYWxTZXg7CiAgICAgICAgZWxzZSBpZiAoaWRlbnRpZmllciAmJiBpZGVudGlmaWVyLmJpb2xvZ2ljYWxTZXgpCiAgICAgICAgICBzdGF0ZVsiYmlvbG9naWNhbFNleCJdID0gaWRlbnRpZmllci5iaW9sb2dpY2FsU2V4OwogICAgICAgIGlmIChpZGVudGlmaWVyICYmIGlkZW50aWZpZXIudXVpZCkgc3RhdGVbInV1aWQiXSA9IGlkZW50aWZpZXIudXVpZDsKICAgICAgICByZXR1cm4gc3RhdGU7CiAgICAgIH0KICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgIH0sCiAgICBzZXRTdGF0ZTogZnVuY3Rpb24gKHN0YXRlKSB7CiAgICAgIGlmIChzdGF0ZSkgewogICAgICAgIGlmICgKICAgICAgICAgIHRoaXMubWFwSW1wICYmCiAgICAgICAgICBzdGF0ZS5lbnRyeSAmJgogICAgICAgICAgdGhpcy5lbnRyeSA9PSBzdGF0ZS5lbnRyeSAmJgogICAgICAgICAgKCFzdGF0ZS5iaW9sb2dpY2FsU2V4IHx8IHN0YXRlLmJpb2xvZ2ljYWxTZXggPT09IHRoaXMuYmlvbG9naWNhbFNleCkKICAgICAgICApIHsKICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCkgewogICAgICAgICAgICB0aGlzLm1hcEltcC5zZXRTdGF0ZShzdGF0ZS52aWV3cG9ydCk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuY3JlYXRlRmxhdG1hcChzdGF0ZSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuc2V0U3RhdGVSZXF1aXJlZCA9IGZhbHNlOwogICAgICB9CiAgICB9LAogICAgcmVzdG9yZU1hcFN0YXRlOiBmdW5jdGlvbiAoc3RhdGUpIHsKICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgaWYgKHN0YXRlLnZpZXdwb3J0KSB0aGlzLm1hcEltcC5zZXRTdGF0ZShzdGF0ZS52aWV3cG9ydCk7CiAgICAgICAgaWYgKHN0YXRlLnNlYXJjaFRlcm0pIHRoaXMuc2VhcmNoQW5kU2hvd1Jlc3VsdChzdGF0ZS5zZWFyY2hUZXJtLCB0cnVlKTsKICAgICAgfQogICAgfSwKICAgIGNyZWF0ZUZsYXRtYXA6IGZ1bmN0aW9uIChzdGF0ZSkgewogICAgICBpZiAoIXRoaXMubWFwSW1wICYmICF0aGlzLmxvYWRpbmcpIHsKICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICAgIGxldCBtaW5pbWFwID0gZmFsc2U7CiAgICAgICAgaWYgKHRoaXMuZGlzcGxheU1pbmltYXApIHsKICAgICAgICAgIG1pbmltYXAgPSB7IHBvc2l0aW9uOiAidG9wLXJpZ2h0IiB9OwogICAgICAgIH0KCiAgICAgICAgLy9BcyBmb3IgZmxhdG1hcC12aWV3ZXJAMi4yLjcsIHNlZSBiZWxvdyBmb3IgdGhlIGRvY3VtZW50YXRpb24KICAgICAgICAvL2ZvciB0aGUgaWRlbnRpZmllcjoKCiAgICAgICAgLy9AYXJnIGlkZW50aWZpZXIge3N0cmluZ3xPYmplY3R9CiAgICAgICAgLy8gQSBzdHJpbmcgb3Igb2JqZWN0IGlkZW50aWZ5aW5nIHRoZSBtYXAgdG8gbG9hZC4gSWYgYSBzdHJpbmcgaXRzCiAgICAgICAgLy8gdmFsdWUgY2FuIGJlIGVpdGhlciB0aGUgbWFwJ3MgYGB1dWlkYGAsIGFzc2lnbmVkIGF0IGdlbmVyYXRpb24gdGltZSwKICAgICAgICAvLyBvciB0YXhvbiBhbmQgYmlvbG9naWNhbCBzZXggaWRlbnRpZmllcnMgb2YgdGhlIHNwZWNpZXMgdGhhdCB0aGUgbWFwCiAgICAgICAgLy8gcmVwcmVzZW50cy4gVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGEgbWFwIGlzIGxvYWRlZCB1bmxlc3MgaXQgaGFzIGJlZW4KICAgICAgICAvLyBpZGVudGlmaWVkIHVzaW5nIGEgYGB1dWlkYGAgKHNlZSBiZWxvdykuCiAgICAgICAgLy8gQGFyZyBpZGVudGlmaWVyLnRheG9uIHtzdHJpbmd9IFRoZSB0YXhvbiBpZGVudGlmaWVyIG9mIHRoZSBzcGVjaWVzCiAgICAgICAgLy8gIHJlcHJlc2VudGVkIGJ5IHRoZSBtYXAuIFRoaXMgaXMgc3BlY2lmaWVkIGFzIG1ldGFkYXRhIGluIHRoZSBtYXAncyBzb3VyY2UgZmlsZS4KICAgICAgICAvLyBAYXJnIGlkZW50aWZpZXIuYmlvbG9naWNhbFNleCB7c3RyaW5nfSBUaGUgYmlvbG9naWNhbCBzZXggb2YgdGhlIHNwZWNpZXMKICAgICAgICAvLyByZXByZXNlbnRlZCBieSB0aGUgbWFwLiBUaGlzIGlzIHNwZWNpZmllZCBhcyBtZXRhZGF0YWluIHRoZSBtYXAncyBzb3VyY2UgZmlsZS4KICAgICAgICAvLyBAYXJnIGlkZW50aWZpZXIudXVpZCB7c3RyaW5nfSBUaGUgdW5pcXVlIHV1aWQgdGhlIGZsYXRtYXAuIElmIGdpdmVuIHRoZW4gdGhpcyBleGFjdCBtYXAgd2lsbAogICAgICAgIC8vICBiZSBsb2FkZWQsIG92ZXJyaWRpbmcgYGB0YXhvbmBgIGFuZCBgYGJpb2xvZ2ljYWxTZXhgYC4KCiAgICAgICAgbGV0IGlkZW50aWZpZXIgPSB7IHRheG9uOiB0aGlzLmVudHJ5IH07CiAgICAgICAgaWYgKHRoaXMudXVpZCkgewogICAgICAgICAgaWRlbnRpZmllci51dWlkID0gdGhpcy51dWlkOwogICAgICAgIH0KICAgICAgICAvL1RoaXMgbm93IGhhbmRsZSB0aGUgdXNlcyBvZiB1dWlkIHdoZW4gcmVzdW1pbmcgc3RhdGVzCiAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICBpZiAoc3RhdGUudXVpZCkgewogICAgICAgICAgICBpZGVudGlmaWVyID0geyB1dWlkOiBzdGF0ZS51dWlkIH07CiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmVudHJ5KSB7CiAgICAgICAgICAgIGlkZW50aWZpZXIudGF4b24gPSBzdGF0ZS5lbnRyeTsKICAgICAgICAgICAgaWYgKHN0YXRlLmJpb2xvZ2ljYWxTZXgpIHsKICAgICAgICAgICAgICBpZGVudGlmaWVyWyJiaW9sb2dpY2FsU2V4Il0gPSBzdGF0ZS5iaW9sb2dpY2FsU2V4OwogICAgICAgICAgICB9IGVsc2UgaWYgKGlkZW50aWZpZXIudGF4b24gPT09ICJOQ0JJVGF4b246OTYwNiIpIHsKICAgICAgICAgICAgICAvL0ZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiAgICAgICAgICAgICAgaWRlbnRpZmllclsiYmlvbG9naWNhbFNleCJdID0gIlBBVE86MDAwMDM4NCI7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gU2V0IHRoZSBiaW9sb2ljYWxTZXggbm93IGlmIG1hcCBpcyBub3QgcmVzdW1lZCBmcm9tCiAgICAgICAgICAvLyBhIHNhdmVkIHN0YXRlCiAgICAgICAgICBpZiAodGhpcy5iaW9sb2dpY2FsU2V4KSB7CiAgICAgICAgICAgIGlkZW50aWZpZXJbImJpb2xvZ2ljYWxTZXgiXSA9IHRoaXMuYmlvbG9naWNhbFNleDsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGxldCBwcm9taXNlMSA9IHRoaXMubWFwTWFuYWdlci5sb2FkTWFwKAogICAgICAgICAgaWRlbnRpZmllciwKICAgICAgICAgIHRoaXMuJHJlZnMuZGlzcGxheSwKICAgICAgICAgIHRoaXMuZXZlbnRDYWxsYmFjaygpLAogICAgICAgICAgewogICAgICAgICAgICAvL2Z1bGxzY3JlZW5Db250cm9sOiBmYWxzZSwKICAgICAgICAgICAgLy9hbm5vdGF0YWJsZTogZmFsc2UsCiAgICAgICAgICAgIC8vZGVidWc6IHRydWUsCiAgICAgICAgICAgIGZlYXR1cmVJbmZvOiB0aGlzLmZlYXR1cmVJbmZvLAogICAgICAgICAgICAibWluLXpvb20iOiB0aGlzLm1pblpvb20sCiAgICAgICAgICAgIGxheWVyQ29udHJvbDogdHJ1ZSwKICAgICAgICAgICAgcGF0aENvbnRyb2xzOiB0cnVlLAogICAgICAgICAgICBzZWFyY2hhYmxlOiB0aGlzLnNlYXJjaGFibGUsCiAgICAgICAgICAgIHRvb2x0aXBzOiB0aGlzLnRvb2x0aXBzLAogICAgICAgICAgICBtaW5pbWFwOiBtaW5pbWFwLAogICAgICAgICAgfQogICAgICAgICk7CiAgICAgICAgcHJvbWlzZTEudGhlbigocmV0dXJuZWRPYmplY3QpID0+IHsKICAgICAgICAgIHRoaXMubWFwSW1wID0gcmV0dXJuZWRPYmplY3Q7CiAgICAgICAgICB0aGlzLnNlcnZlclVVSUQgPSB0aGlzLm1hcEltcC5nZXRJZGVudGlmaWVyKCkudXVpZDsKICAgICAgICAgIHRoaXMub25GbGF0bWFwUmVhZHkoKTsKICAgICAgICAgIGlmICh0aGlzLl9zdGF0ZVRvQmVTZXQpIHRoaXMucmVzdG9yZU1hcFN0YXRlKHRoaXMuX3N0YXRlVG9CZVNldCk7CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5yZXN0b3JlTWFwU3RhdGUoc3RhdGUpOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9IGVsc2UgaWYgKHN0YXRlKSB7CiAgICAgICAgdGhpcy5fc3RhdGVUb0JlU2V0ID0gewogICAgICAgICAgdmlld3BvcnQ6IHN0YXRlLnZpZXdwb3J0LAogICAgICAgICAgc2VhcmNoVGVybTogc3RhdGUuc2VhcmNoVGVybSwKICAgICAgICB9OwogICAgICAgIGlmICh0aGlzLm1hcEltcCAmJiAhdGhpcy5sb2FkaW5nKQogICAgICAgICAgdGhpcy5yZXN0b3JlTWFwU3RhdGUodGhpcy5fc3RhdGVUb0JlU2V0KTsKICAgICAgfQogICAgfSwKICAgIGNvbXB1dGVQYXRoQ29udHJvbHNNYXhpbXVtSGVpZ2h0KCkgewogICAgICBjb25zdCBlbGVtID0gdGhpcy4kcmVmcy5kaXNwbGF5OwogICAgICBpZiAoZWxlbSkgewogICAgICAgIGNvbnN0IGNvbXB1dGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKTsKICAgICAgICBjb25zdCBwYWRkaW5nID0KICAgICAgICAgIHBhcnNlSW50KGNvbXB1dGVkLnBhZGRpbmdUb3ApICsgcGFyc2VJbnQoY29tcHV0ZWQucGFkZGluZ0JvdHRvbSk7CiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZWxlbS5jbGllbnRIZWlnaHQgLSBwYWRkaW5nOwogICAgICAgIHRoaXMucGF0aHdheXNNYXhIZWlnaHQgPSBoZWlnaHQgLSAxNzA7CiAgICAgIH0KICAgIH0sCiAgICBtYXBSZXNpemU6IGZ1bmN0aW9uICgpIHsKICAgICAgdHJ5IHsKICAgICAgICB0aGlzLmNvbXB1dGVQYXRoQ29udHJvbHNNYXhpbXVtSGVpZ2h0KCk7CiAgICAgICAgaWYgKHRoaXMubWFwSW1wKSB7CiAgICAgICAgICB0aGlzLm1hcEltcC5yZXNpemUoKTsKICAgICAgICAgIHRoaXMuc2hvd01pbmltYXAodGhpcy5kaXNwbGF5TWluaW1hcCk7CiAgICAgICAgICBpZiAodGhpcy5tYXBJbXAuX21pbmltYXApIHsKICAgICAgICAgICAgdGhpcy5tYXBJbXAuX21pbmltYXAucmVzaXplKCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoIHsKICAgICAgICBjb25zb2xlLmVycm9yKCJNYXAgcmVzaXplIGVycm9yIik7CiAgICAgIH0KICAgIH0sCiAgICBvbkZsYXRtYXBSZWFkeTogZnVuY3Rpb24gKCkgewogICAgICAvLyBvbkZsYXRtYXBSZWFkeSBpcyB1c2VkIGZvciBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIHJ1biBpbW1lZGlhdGVseSBhZnRlciB0aGUgZmxhdG1hcCBpcyBsb2FkZWQKICAgICAgdGhpcy5zZW5zb3IgPSBuZXcgUmVzaXplU2Vuc29yKHRoaXMuJHJlZnMuZGlzcGxheSwgdGhpcy5tYXBSZXNpemUpOwogICAgICBpZiAodGhpcy5tYXBJbXAub3B0aW9ucyAmJiB0aGlzLm1hcEltcC5vcHRpb25zLnN0eWxlID09PSAiZnVuY3Rpb25hbCIpIHsKICAgICAgICB0aGlzLmlzRkMgPSB0cnVlOwogICAgICB9CiAgICAgIHRoaXMubWFwSW1wLnNldEJhY2tncm91bmRPcGFjaXR5KDEpOwogICAgICB0aGlzLmJhY2tncm91bmRDaGFuZ2VDYWxsYmFjayh0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kKTsKICAgICAgdGhpcy5wYXRod2F5cyA9IHRoaXMubWFwSW1wLnBhdGhUeXBlcygpOwogICAgICB0aGlzLm1hcEltcC5lbmFibGVDZW50cmVsaW5lcyhmYWxzZSk7CiAgICAgIC8vRGlzYWJsZSBsYXllcnMgZm9yIG5vdwogICAgICAvL3RoaXMubGF5ZXJzID0gdGhpcy5tYXBJbXAuZ2V0TGF5ZXJzKCk7CiAgICAgIHRoaXMuc3lzdGVtcyA9IHByb2Nlc3NTeXN0ZW1zKHRoaXMubWFwSW1wLmdldFN5c3RlbXMoKSk7CiAgICAgIHRoaXMudGF4b25Db25uZWN0aXZpdHkgPSBwcm9jZXNzVGF4b24oCiAgICAgICAgdGhpcy5mbGF0bWFwQVBJLAogICAgICAgIHRoaXMubWFwSW1wLnRheG9uSWRlbnRpZmllcnMKICAgICAgKTsKICAgICAgdGhpcy5hZGRSZXNpemVCdXR0b25Ub01pbmltYXAoKTsKICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIHRoaXMuY29tcHV0ZVBhdGhDb250cm9sc01heGltdW1IZWlnaHQoKTsKICAgICAgdGhpcy5kcmF3ZXJPcGVuID0gdHJ1ZTsKICAgICAgdGhpcy5tYXBSZXNpemUoKTsKICAgICAgdGhpcy4kZW1pdCgicmVhZHkiLCB0aGlzKTsKICAgIH0sCiAgICBzaG93TWluaW1hcDogZnVuY3Rpb24gKGZsYWcpIHsKICAgICAgaWYgKHRoaXMubWFwSW1wKSB0aGlzLm1hcEltcC5zaG93TWluaW1hcChmbGFnKTsKICAgIH0sCiAgICBzaG93UGF0aHdheXNEcmF3ZXI6IGZ1bmN0aW9uIChmbGFnKSB7CiAgICAgIHRoaXMuZHJhd2VyT3BlbiA9IGZsYWc7CiAgICB9LAogICAgLyoqCiAgICAgKiBGdW5jdGlvbiB0byBkaXNwbGF5IGZlYXR1cmVzIHdpdGggYW5ub3RhdGlvbiBtYXRjaGluZyB0aGUgcHJvdmlkZWQgdGVybSwKICAgICAqIHdpdGggdGhlIG9wdGlvbiB0byBkaXNwbGF5IHRoZSBsYWJlbCB1c2luZyBkaXNwbGF5TGFiZWwgZmxhZy4KICAgICAqLwogICAgc2VhcmNoQW5kU2hvd1Jlc3VsdDogZnVuY3Rpb24gKHRlcm0sIGRpc3BsYXlMYWJlbCkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHsKICAgICAgICBpZiAodGVybSA9PT0gdW5kZWZpbmVkIHx8IHRlcm0gPT09ICIiKSB7CiAgICAgICAgICB0aGlzLm1hcEltcC5jbGVhclNlYXJjaFJlc3VsdHMoKTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gdGhpcy5tYXBJbXAuc2VhcmNoKHRlcm0pOwogICAgICAgICAgaWYgKAogICAgICAgICAgICBzZWFyY2hSZXN1bHRzICYmCiAgICAgICAgICAgIHNlYXJjaFJlc3VsdHMucmVzdWx0cyAmJgogICAgICAgICAgICBzZWFyY2hSZXN1bHRzLnJlc3VsdHMubGVuZ3RoID4gMAogICAgICAgICAgKSB7CiAgICAgICAgICAgIHRoaXMubWFwSW1wLnNob3dTZWFyY2hSZXN1bHRzKHNlYXJjaFJlc3VsdHMpOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgZGlzcGxheUxhYmVsICYmCiAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0cy5yZXN1bHRzWzBdLmZlYXR1cmVJZCAmJgogICAgICAgICAgICAgIHNlYXJjaFJlc3VsdHMucmVzdWx0c1swXS50ZXh0CiAgICAgICAgICAgICkgewogICAgICAgICAgICAgIGNvbnN0IGFubm90YXRpb24gPSB0aGlzLm1hcEltcC5hbm5vdGF0aW9uKAogICAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0cy5yZXN1bHRzWzBdLmZlYXR1cmVJZAogICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgdGhpcy5tYXBJbXAuc2hvd1BvcHVwKAogICAgICAgICAgICAgICAgc2VhcmNoUmVzdWx0cy5yZXN1bHRzWzBdLmZlYXR1cmVJZCwKICAgICAgICAgICAgICAgIGFubm90YXRpb24ubGFiZWwsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImN1c3RvbS1wb3B1cCIsCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uQXRMYXN0Q2xpY2s6IGZhbHNlLAogICAgICAgICAgICAgICAgICBwcmVzZXJ2ZVNlbGVjdGlvbjogdHJ1ZSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfSBlbHNlIHRoaXMubWFwSW1wLmNsZWFyU2VhcmNoUmVzdWx0cygpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGVkIHRlcm1zCiAgICAgKi8KICAgIHNlYXJjaFN1Z2dlc3Rpb25zOiBmdW5jdGlvbiAodGVybSkgewogICAgICBpZiAodGhpcy5tYXBJbXApIHJldHVybiB0aGlzLm1hcEltcC5zZWFyY2godGVybSk7CiAgICAgIHJldHVybiBbXTsKICAgIH0sCiAgfSwKICBwcm9wczogewogICAgZW50cnk6IFN0cmluZywKICAgIHV1aWQ6IFN0cmluZywKICAgIGJpb2xvZ2ljYWxTZXg6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OiAiIiwKICAgIH0sCiAgICBmZWF0dXJlSW5mbzogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgIH0sCiAgICBtaW5ab29tOiB7CiAgICAgIHR5cGU6IE51bWJlciwKICAgICAgZGVmYXVsdDogNCwKICAgIH0sCiAgICBwYXRoQ29udHJvbHM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICB9LAogICAgc2VhcmNoYWJsZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgIH0sCiAgICBsYXllckNvbnRyb2w6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICB9LAogICAgdG9vbHRpcHM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZSwKICAgIH0sCiAgICBoZWxwTW9kZTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgIH0sCiAgICByZW5kZXJBdE1vdW50ZWQ6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogdHJ1ZSwKICAgIH0sCiAgICBkaXNwbGF5TWluaW1hcDogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgIH0sCiAgICBkaXNwbGF5V2FybmluZzogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgIH0sCiAgICAvKioKICAgICAqIEZsYWcgdG8gZGV0ZXJtaW5lIHJhdGhlciBvcGVuIG1hcCBVSSBzaG91bGQgYmUKICAgICAqIHByZXNlbnRlZCBvciBub3QuCiAgICAgKi8KICAgIGVuYWJsZU9wZW5NYXBVSTogewogICAgICB0eXBlOiBCb29sZWFuLAogICAgICBkZWZhdWx0OiBmYWxzZSwKICAgIH0sCiAgICBvcGVuTWFwT3B0aW9uczogewogICAgICB0eXBlOiBBcnJheSwKICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICB7CiAgICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIEFDIE1hcCIsCiAgICAgICAgICAgIGtleTogIkFDIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIEZDIE1hcCIsCiAgICAgICAgICAgIGtleTogIkZDIiwKICAgICAgICAgIH0sCiAgICAgICAgICB7CiAgICAgICAgICAgIGRpc3BsYXk6ICJPcGVuIDNEIEh1bWFuIE1hcCIsCiAgICAgICAgICAgIGtleTogIjNEIiwKICAgICAgICAgIH0sCiAgICAgICAgXTsKICAgICAgfSwKICAgIH0sCiAgICBzaG93U3RhckluTGVnZW5kOiB7CiAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgIGRlZmF1bHQ6IGZhbHNlCiAgICB9LAogICAgaXNMZWdhY3k6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICB9LAogICAgZGlzcGxheUxhdGVzdENoYW5nZXM6IHsKICAgICAgdHlwZTogQm9vbGVhbiwKICAgICAgZGVmYXVsdDogZmFsc2UsCiAgICB9LAogICAgbGF0ZXN0Q2hhbmdlc01lc3NhZ2U6IHsKICAgICAgdHlwZTogU3RyaW5nLAogICAgICBkZWZhdWx0OgogICAgICAgICInT2JzZXJ2ZWQgSW4nIGNvbnRyb2xzIGFuZCBpbmZvcm1hdGlvbiBhcmUgbm93IGluY2x1ZGVkIGluIEFDIG1hcHMuIFN5c3RlbSBjb250cm9sIHdpdGggRlRVIGluZm9ybWF0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBGQyBtYXAuIiwKICAgIH0sCiAgICAvKioKICAgICAqIFN0YXRlIGNvbnRhaW5pbmcgc3RhdGUgb2YgdGhlIGZsYXRtYXAuCiAgICAgKi8KICAgIHN0YXRlOiB7CiAgICAgIHR5cGU6IE9iamVjdCwKICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLAogICAgfSwKICAgIC8qKgogICAgICogU3BlY2lmeSB0aGUgZW5kcG9pbnQgb2YgdGhlIGZsYXRtYXAgc2VydmVyLgogICAgICovCiAgICBmbGF0bWFwQVBJOiB7CiAgICAgIHR5cGU6IFN0cmluZywKICAgICAgZGVmYXVsdDogImh0dHBzOi8vbWFwY29yZS1kZW1vLm9yZy9jdXJyZW50L2ZsYXRtYXAvdjMvIiwKICAgIH0sCiAgICBzcGFyY0FQSTogewogICAgICB0eXBlOiBTdHJpbmcsCiAgICAgIGRlZmF1bHQ6ICJodHRwczovL2FwaS5zcGFyYy5zY2llbmNlLyIsCiAgICB9LAogIH0sCiAgcHJvdmlkZSgpIHsKICAgIHJldHVybiB7CiAgICAgIGZsYXRtYXBBUEk6IHRoaXMuZmxhdG1hcEFQSSwKICAgICAgc3BhcmNBUEk6IHRoaXMuc3BhcmNBUEksCiAgICB9OwogIH0sCiAgZGF0YTogZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIHsKICAgICAgYW5ub3RhdGlvbkVudHJ5OiB7fSwKICAgICAgc2VydmVyVVVJRDogdW5kZWZpbmVkLAogICAgICBsYXllcnM6IFtdLAogICAgICBwYXRod2F5czogW10sCiAgICAgIHNja2FuRGlzcGxheTogWwogICAgICAgIHsKICAgICAgICAgIGxhYmVsOiAiRGlzcGxheSBQYXRoIHdpdGggU0NLQU4iLAogICAgICAgICAga2V5OiAiVkFMSUQiLAogICAgICAgIH0sCiAgICAgIF0sCiAgICAgIGNlbnRyZUxpbmVzOiBbCiAgICAgICAgewogICAgICAgICAgbGFiZWw6ICJEaXNwbGF5IE5lcnZlcyIsCiAgICAgICAgICBrZXk6ICJjZW50cmVsaW5lcyIsCiAgICAgICAgICBlbmFibGVkOiBmYWxzZSwKICAgICAgICB9LAogICAgICBdLAogICAgICBzeXN0ZW1zOiBbXSwKICAgICAgdGF4b25Db25uZWN0aXZpdHk6IFtdLAogICAgICBwYXRod2F5c01heEhlaWdodDogMTAwMCwKICAgICAgaG92ZXJWaXNpYmlsaXRpZXM6IFsKICAgICAgICB7IHZhbHVlOiBmYWxzZSB9LAogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwKICAgICAgICB7IHZhbHVlOiBmYWxzZSB9LAogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwKICAgICAgICB7IHZhbHVlOiBmYWxzZSB9LAogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sCiAgICAgICAgeyB2YWx1ZTogZmFsc2UgfSwKICAgICAgICB7IHZhbHVlOiBmYWxzZSB9LAogICAgICBdLAogICAgICB5ZWxsb3dzdGFyOiB5ZWxsb3dzdGFyLAogICAgICBpc0ZDOiBmYWxzZSwKICAgICAgaW5IZWxwOiBmYWxzZSwKICAgICAgY3VycmVudEJhY2tncm91bmQ6ICJ3aGl0ZSIsCiAgICAgIGF2YWlsYWJsZUJhY2tncm91bmQ6IFsid2hpdGUiLCAibGlnaHRza3libHVlIiwgImJsYWNrIl0sCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICBmbGF0bWFwTWFya2VyOiBmbGF0bWFwTWFya2VyLAogICAgICB0b29sdGlwRW50cnk6IGNyZWF0ZVVuZmlsbGVkVG9vbHRpcERhdGEoKSwKICAgICAgY29ubmVjdGl2aXR5VG9vbHRpcFZpc2libGU6IGZhbHNlLAogICAgICBkcmF3ZXJPcGVuOiBmYWxzZSwKICAgICAgYW5ub3RhdGlvblJhZGlvOiBmYWxzZSwKICAgICAgY29sb3VyUmFkaW86IHRydWUsCiAgICAgIG91dGxpbmVzUmFkaW86IHRydWUsCiAgICAgIG1pbmltYXBSZXNpemVTaG93OiBmYWxzZSwKICAgICAgbWluaW1hcFNtYWxsOiBmYWxzZSwKICAgICAgY3VycmVudEFjdGl2ZTogIiIsCiAgICAgIGN1cnJlbnRIb3ZlcjogIiIsCiAgICAgIHZpZXdpbmdNb2RlOiAiRXhwbG9yYXRpb24iLAogICAgICB2aWV3aW5nTW9kZXM6IFsiQW5ub3RhdGlvbiIsICJFeHBsb3JhdGlvbiIsICJOZXR3b3JrIERpc2NvdmVyeSJdLAogICAgfTsKICB9LAogIHdhdGNoOiB7CiAgICBlbnRyeTogZnVuY3Rpb24gKCkgewogICAgICBpZiAoIXRoaXMuc3RhdGUpIHRoaXMuY3JlYXRlRmxhdG1hcCgpOwogICAgfSwKICAgIGhlbHBNb2RlOiBmdW5jdGlvbiAodmFsKSB7CiAgICAgIHRoaXMuc2V0SGVscE1vZGUodmFsKTsKICAgIH0sCiAgICBzdGF0ZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiAoc3RhdGUpIHsKICAgICAgICBpZiAodGhpcy5tYXBNYW5hZ2VyKSB7CiAgICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy90aGlzIGNvbXBvbmVudCBoYXMgbm90IGJlZW4gbW91bnRlZCB5ZXQKICAgICAgICAgIHRoaXMuc2V0U3RhdGVSZXF1aXJlZCA9IHRydWU7CiAgICAgICAgfQogICAgICB9LAogICAgICBpbW1lZGlhdGU6IHRydWUsCiAgICAgIGRlZXA6IHRydWUsCiAgICB9LAogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gKCkgewogICAgY29uc3QgZmxhdG1hcCA9IHJlcXVpcmUoIkBhYmktc29mdHdhcmUvZmxhdG1hcC12aWV3ZXIiKTsKICAgIHRoaXMudG9vbHRpcFdhaXQgPSBbXTsKICAgIHRoaXMudG9vbHRpcFdhaXQubGVuZ3RoID0gdGhpcy5ob3ZlclZpc2liaWxpdGllcy5sZW5ndGg7CiAgICB0aGlzLm1hcE1hbmFnZXIgPSBuZXcgZmxhdG1hcC5NYXBNYW5hZ2VyKHRoaXMuZmxhdG1hcEFQSSk7CiAgICB0aGlzLmZsYXRtYXBRdWVyaWVzID0gbmV3IEZsYXRtYXBRdWVyaWVzKCk7CiAgICB0aGlzLmZsYXRtYXBRdWVyaWVzLmluaXRpYWxpc2UodGhpcy5mbGF0bWFwQVBJKTsKICAgIGlmICh0aGlzLnN0YXRlKSB7CiAgICAgIC8vU3RhdGUgaXMgc2V0IGFuZCByZXF1aXJlIHRvIHNldCB0aGUgc3RhdGUKICAgICAgaWYgKHRoaXMuc2V0U3RhdGVSZXF1aXJlZCkgewogICAgICAgIHRoaXMuc2V0U3RhdGUodGhpcy5zdGF0ZSk7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAodGhpcy5yZW5kZXJBdE1vdW50ZWQpIHsKICAgICAgdGhpcy5jcmVhdGVGbGF0bWFwKCk7CiAgICB9CiAgfSwKfTsK"},{"version":3,"sources":["FlatmapVuer.vue"],"names":[],"mappings":";AAybA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"FlatmapVuer.vue","sourceRoot":"node_modules/@abi-software/flatmapvuer/src/components","sourcesContent":["\n\n\n\n\n\n\n"]}]}