{"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/scaffoldvuer/src/components/ScaffoldVuer.vue?vue&type=script&lang=js&","dependencies":[{"path":"/home/cmiss/Jenkins/workspace/mapintegratedvuer/node_modules/@abi-software/scaffoldvuer/src/components/ScaffoldVuer.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:DQovKiBlc2xpbnQtZGlzYWJsZSBuby1hbGVydCwgbm8tY29uc29sZSAqLw0KaW1wb3J0IFZ1ZSBmcm9tICJ2dWUiOw0KaW1wb3J0IE9wYWNpdHlDb250cm9scyBmcm9tICIuL09wYWNpdHlDb250cm9scyI7DQppbXBvcnQgU2NhZmZvbGRUb29sdGlwIGZyb20gIi4vU2NhZmZvbGRUb29sdGlwIjsNCmltcG9ydCBUcmVlQ29udHJvbHMgZnJvbSAiLi9UcmVlQ29udHJvbHMiOw0KaW1wb3J0IHsgTWFwU3ZnSWNvbiwgTWFwU3ZnU3ByaXRlQ29sb3IgfSBmcm9tICJAYWJpLXNvZnR3YXJlL3N2Zy1zcHJpdGUiOw0KaW1wb3J0IHsgZmluZE9iamVjdHNXaXRoTmFtZXMsIGdldE9iamVjdHNGcm9tQW5ub3RhdGlvbnMgfSBmcm9tICIuLi9zY3JpcHRzL3V0aWxpdGllcy5qcyI7DQppbXBvcnQgeyBTZWFyY2hJbmRleCB9IGZyb20gIi4uL3NjcmlwdHMvc2VhcmNoLmpzIjsNCmltcG9ydCB7DQogIEJ1dHRvbiwNCiAgQ29sLA0KICBMb2FkaW5nLA0KICBPcHRpb24sDQogIFBvcG92ZXIsDQogIFJvdywNCiAgU2VsZWN0LA0KICBTbGlkZXIsDQogIFRhYlBhbmUsDQogIFRhYnMsDQp9IGZyb20gImVsZW1lbnQtdWkiOw0KaW1wb3J0IGxhbmcgZnJvbSAiZWxlbWVudC11aS9saWIvbG9jYWxlL2xhbmcvZW4iOw0KaW1wb3J0IGxvY2FsZSBmcm9tICJlbGVtZW50LXVpL2xpYi9sb2NhbGUiOw0KDQpsb2NhbGUudXNlKGxhbmcpOw0KVnVlLnVzZShCdXR0b24pOw0KVnVlLnVzZShDb2wpOw0KVnVlLnVzZShMb2FkaW5nLmRpcmVjdGl2ZSk7DQpWdWUudXNlKE9wdGlvbik7DQpWdWUudXNlKFBvcG92ZXIpOw0KVnVlLnVzZShSb3cpOw0KVnVlLnVzZShTZWxlY3QpOw0KVnVlLnVzZShTbGlkZXIpOw0KVnVlLnVzZShUYWJQYW5lKTsNClZ1ZS51c2UoVGFicyk7DQoNCmNvbnN0IE9yZ2Fuc1ZpZXdlciA9IHJlcXVpcmUoIi4uL3NjcmlwdHMvb3JnYW5zUmVuZGVyZXIiKS5PcmdhbnNWaWV3ZXI7DQpjb25zdCBFdmVudE5vdGlmaWVyID0gcmVxdWlyZSgiLi4vc2NyaXB0cy9ldmVudE5vdGlmaWVyIikuRXZlbnROb3RpZmllcjsNCg0KLyoqDQogKiBBIHZ1ZSBjb21wb25lbnQgb2YgdGhlIHNjYWZmb2xkIHZpZXdlci4NCiAqDQogKiBAcmVxdWlyZXMgLi9PcGFjaXR5Q29udHJvbHMudnVlDQogKiBAcmVxdWlyZXMgLi9UcmVlQ29udHJvbHMudnVlDQogKi8NCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogIlNjYWZmb2xkVnVlciIsDQogIGNvbXBvbmVudHM6IHsNCiAgICBNYXBTdmdJY29uLA0KICAgIE1hcFN2Z1Nwcml0ZUNvbG9yLA0KICAgIE9wYWNpdHlDb250cm9scywNCiAgICBTY2FmZm9sZFRvb2x0aXAsDQogICAgVHJlZUNvbnRyb2xzLA0KICB9LA0KICBwcm9wczogew0KICAgIC8qKg0KICAgICAqIFVSTCBvZiB0aGUgemluY2pzIG1ldGFkYXRhLiBUaGlzIHZhbHVlIHdpbGwgYmUgaWdub3JlZCBpZiBhIHZhbGlkDQogICAgICogc3RhdGUgcHJvcCBpcyBhbHNvIHByb3ZpZGVkLg0KICAgICAqIElmIHRoZSB1cmwgbmVlZHMgdG8gYmUgdXBkYXRlZCB3aXRoIHN0YXRlIHByZXNlbnQsIHBsZWFzZSB1c2UNCiAgICAgKiB0aGUgc2V0VVJMIG1ldGhvZC4NCiAgICAgKi8NCiAgICB1cmw6IHsNCiAgICAgIHR5cGU6IFN0cmluZywNCiAgICAgIGRlZmF1bHQ6ICIiLA0KICAgIH0sDQogICAgLyoqDQogICAgICogU2hvdyB0aGUgY29sb3VyIGNvbnRyb2wgb2Ygc2V0IHRvIHRydWUuDQogICAgICovDQogICAgc2hvd0NvbG91clBpY2tlcjogew0KICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgIGRlZmF1bHQ6IGZhbHNlLA0KICAgIH0sDQogICAgLyoqDQogICAgICogRmxhZyB0byBzaG93L2hpZGUgdGhlIFVJLg0KICAgICAqLw0KICAgIGRpc3BsYXlVSTogew0KICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgIGRlZmF1bHQ6IHRydWUsDQogICAgfSwNCiAgICAvKioNCiAgICAgKiBEaXNwbGF5IGFsbCBncmFwaGljcyBhdCBzdGFydC4NCiAgICAgKg0KICAgICAqIFRoaXMgc2V0dGluZyBvbmx5IHdvcmtzIHdoZW4gdHJhZGl0aW9uYWwgaXMgc2V0IHRvIGZhbHNlLg0KICAgICAqLw0KICAgIGRpc3BsYXlBdFN0YXJ0VXA6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICBkZWZhdWx0OiB0cnVlLA0KICAgIH0sDQogICAgLyoqDQogICAgICogVXNlIGZvciB0b2dnbGluZyB0aGUgaGVscCB0b29sdGlwcy4NCiAgICAgKi8NCiAgICBoZWxwTW9kZTogew0KICAgICAgdHlwZTogQm9vbGVhbiwNCiAgICAgIGRlZmF1bHQ6IGZhbHNlLA0KICAgIH0sDQogICAgLyoqDQogICAgICogVXNlIGZvciBzaG93L2Rpc3BsYXkgYmV0YSB3YXJuaW5nIGljb24uDQogICAgICovDQogICAgZGlzcGxheVdhcm5pbmc6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICBkZWZhdWx0OiB0cnVlLA0KICAgIH0sDQogICAgLyoqDQogICAgICogV2FybmluZyBtZXNzYWdlIGZvciB0aGUgaG92ZXJlZCBvdmVyIHRleHQNCiAgICAgKiBvbiB0aGUgd2FybmluZyBpY29uLg0KICAgICAqLw0KICAgIHdhcm5pbmdNZXNzYWdlOiB7DQogICAgICB0eXBlOiBTdHJpbmcsDQogICAgICBkZWZhdWx0OiAiQmV0YSBmZWF0dXJlIC0gdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50IiwNCiAgICB9LA0KICAgIGRpc3BsYXlMYXRlc3RDaGFuZ2VzOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgfSwNCiAgICBsYXRlc3RDaGFuZ2VzTWVzc2FnZTogew0KICAgICAgdHlwZTogU3RyaW5nLA0KICAgICAgZGVmYXVsdDogIk5ldyBmZWF0dXJlIC0gTG9jYWwgc2VhcmNoIGlzIG5vdyBhdmFpbGFibGUiLA0KICAgIH0sDQogICAgLyoqDQogICAgICogU2hvdy9oaWRlIHBpY2thYmxlIG1hcmtlcnMgZm9yIHJlZ2lvbnMuDQogICAgICovDQogICAgZGlzcGxheU1hcmtlcnM6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICBkZWZhdWx0OiBmYWxzZSwNCiAgICB9LA0KICAgIG1hcmtlckxhYmVscyA6IHsNCiAgICAgIHR5cGU6IEFycmF5LA0KICAgICAgZGVmYXVsdDogZnVuY3Rpb24gKCkgew0KICAgICAgICByZXR1cm4gW10NCiAgICAgIH0NCiAgICB9LA0KICAgIC8qKg0KICAgICAqIFNob3cvaGlkZSBtaW5pbWFwLg0KICAgICAqLw0KICAgIGRpc3BsYXlNaW5pbWFwOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgZGVmYXVsdDogZmFsc2UsDQogICAgfSwNCiAgICAvKioNCiAgICAgKiBGb3JtYXQgb2YgdGhlIGlucHV0IFVSTA0KICAgICAqLw0KICAgIGZvcm1hdDogew0KICAgICAgdHlwZTogU3RyaW5nLA0KICAgICAgZGVmYXVsdDogIm1ldGFkYXRhIiwNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIFNldHRpbmdzIGZvciBtaW5pbWFwIHBvc2l0aW9uLCBzaXplIGFuZCBhbGlnbm1lbnQuDQogICAgICovDQogICAgbWluaW1hcFNldHRpbmdzOiB7DQogICAgICB0eXBlOiBPYmplY3QsDQogICAgICBkZWZhdWx0OiBmdW5jdGlvbiAoKSB7DQogICAgICAgIHJldHVybiB7DQogICAgICAgICAgeF9vZmZzZXQ6IDE2LA0KICAgICAgICAgIHlfb2Zmc2V0OiAxNiwNCiAgICAgICAgICB3aWR0aDogMTI4LA0KICAgICAgICAgIGhlaWdodDogMTI4LA0KICAgICAgICAgIGFsaWduOiAidG9wLXJpZ2h0IiwNCiAgICAgICAgfTsNCiAgICAgIH0sDQogICAgfSwNCiAgICAvKioNCiAgICAgKiBGbGFnIHRvIGRldGVybWluZSByYXRoZXIgb3BlbiBtYXAgVUkgc2hvdWxkIGJlDQogICAgICogcHJlc2VudGVkIG9yIG5vdC4NCiAgICAgKi8NCiAgICBlbmFibGVPcGVuTWFwVUk6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICBkZWZhdWx0OiBmYWxzZSwNCiAgICB9LA0KICAgIG9wZW5NYXBPcHRpb25zOiB7DQogICAgICB0eXBlOiBBcnJheSwNCiAgICAgIGRlZmF1bHQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgcmV0dXJuIFsNCiAgICAgICAgICB7DQogICAgICAgICAgICBkaXNwbGF5OiAiT3BlbiBBQyBNYXAiLA0KICAgICAgICAgICAga2V5OiAiQUMiDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBkaXNwbGF5OiAiT3BlbiBGQyBNYXAiLA0KICAgICAgICAgICAga2V5OiAiRkMiDQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBkaXNwbGF5OiAiT3BlbiAzRCBIdW1hbiBNYXAiLA0KICAgICAgICAgICAga2V5OiAiM0QiDQogICAgICAgICAgfSwNCiAgICAgICAgXQ0KICAgICAgfSwNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIFN0YXRlIGNvbnRhaW5pbmcgc3RhdGUgb2YgdGhlIHNjYWZmb2xkLg0KICAgICAqLw0KICAgIHN0YXRlOiB7DQogICAgICB0eXBlOiBPYmplY3QsDQogICAgICBkZWZhdWx0OiB1bmRlZmluZWQsDQogICAgfSwNCiAgICAvKioNCiAgICAgKiBPcHRpb25hbCBwcm9wIGZvciB0aGUgbmFtZSBvZiB0aGUgcmVnaW9uIHRvIGZvY3VzIG9uLA0KICAgICAqIHRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgaWYgc3RhdGUgb3Igdmlld1VSTCBpcyBhbHNvIHByb3ZpZGVkLg0KICAgICAqLw0KICAgIHJlZ2lvbjogew0KICAgICAgdHlwZTogU3RyaW5nLA0KICAgICAgZGVmYXVsdDogIiIsDQogICAgfSwNCiAgICAvKioNCiAgICAgKiBPcHRpb25hbCBwcm9wIGZvciBhbiBVUkwgb2YgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvZiBhIHZpZXdwb3J0Lg0KICAgICAqIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgaWYgc3RhdGUgaXMgYWxzbyBwcm92aWRlZC4NCiAgICAgKiBJdCB3aWxsIHVzZSB0aGUgcHJvdmlkZWQgVVJMIGFzIGJhc2UgaWYgYSByZWxhdGl2ZSBwYXJ0aCBpcyBwcm92aWRlZC4NCiAgICAgKi8NCiAgICB2aWV3VVJMOiB7DQogICAgICB0eXBlOiBTdHJpbmcsDQogICAgICBkZWZhdWx0OiAiIiwNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIFNldHRpbmdzIGZvciB0dXJuaW5nIG9uL29mZiByZW5kZXJpbmcNCiAgICAgKi8NCiAgICByZW5kZXI6IHsNCiAgICAgIHR5cGU6IEJvb2xlYW4sDQogICAgICBkZWZhdWx0OiB0cnVlLA0KICAgIH0sDQogIH0sDQogIGRhdGE6IGZ1bmN0aW9uICgpIHsNCiAgICByZXR1cm4gew0KICAgICAgc2NlbmVEYXRhOiB0aGlzLiRtb2R1bGUuc2NlbmVEYXRhLA0KICAgICAgaXNQbGF5aW5nOiBmYWxzZSwNCiAgICAgIGlzUmVhZHk6IGZhbHNlLA0KICAgICAgLyoqDQogICAgICAgKiBUaGlzIGlzIHNldCB3aGVuIHNjZW5lIGlzIHRyYW5zaXRpb25pbmcuDQogICAgICAgKi8NCiAgICAgIGlzVHJhbnNpdGlvbmluZzogZmFsc2UsDQogICAgICB0b29sdGlwQXBwZW5kVG9Cb2R5OiBmYWxzZSwNCiAgICAgIGhvdmVyVmlzaWJpbGl0aWVzOiBbDQogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sDQogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sDQogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sDQogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sDQogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sDQogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sDQogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sDQogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sDQogICAgICAgIHsgdmFsdWU6IGZhbHNlIH0sDQogICAgICBdLA0KICAgICAgaW5IZWxwOiBmYWxzZSwNCiAgICAgIGxvYWRpbmc6IGZhbHNlLA0KICAgICAgZHVyYXRpb246IDMwMDAsDQogICAgICBkcmF3ZXJPcGVuOiB0cnVlLA0KICAgICAgY3VycmVudEJhY2tncm91bmQ6ICJ3aGl0ZSIsDQogICAgICBhdmFpbGFibGVCYWNrZ3JvdW5kOiBbIndoaXRlIiwgImxpZ2h0c2t5Ymx1ZSIsICJibGFjayJdLA0KICAgICAgbWluaW1pc2VkU2xpZGVyOiBmYWxzZSwNCiAgICAgIHNsaWRlclBvc2l0aW9uOiAiIiwNCiAgICAgIHRpbWVNYXg6IDEwMCwNCiAgICAgIG9yZ2luYWxEdXJhdGlvbjogIiIsDQogICAgICBhbmltYXRlRHVyYXRpb246ICI2c2VjcyIsDQogICAgICBwbGF5U3BlZWQ6IFsNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAwLjEsDQogICAgICAgICAgbGFiZWw6ICIwLjF4IiwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAwLjUsDQogICAgICAgICAgbGFiZWw6ICIwLjV4IiwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAxLA0KICAgICAgICAgIGxhYmVsOiAiMXgiLA0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgdmFsdWU6IDIsDQogICAgICAgICAgbGFiZWw6ICIyeCIsDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICB2YWx1ZTogNSwNCiAgICAgICAgICBsYWJlbDogIjV4IiwNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIHZhbHVlOiAxMCwNCiAgICAgICAgICBsYWJlbDogIjEweCIsDQogICAgICAgIH0sDQogICAgICBdLA0KICAgICAgY3VycmVudFNwZWVkOiAxLA0KICAgICAgdGltZVN0YW1wczoge30sDQogICAgICBkZWZhdWx0Q2hlY2tlZEtleXM6IFtdLA0KICAgICAgdERhdGE6IHsNCiAgICAgICAgbGFiZWw6ICIiLA0KICAgICAgICByZWdpb246ICIiLA0KICAgICAgICB2aXNpYmxlOiBmYWxzZSwNCiAgICAgICAgeDogMjAwLA0KICAgICAgICB5OiAyMDAsDQogICAgICB9LA0KICAgICAgZmlsZUZvcm1hdDogIm1ldGFkYXRhIiwNCiAgICAgIHByZXZpb3VzTWFya2VyTGFiZWxzOiBbXSwNCiAgICB9Ow0KICB9LA0KICB3YXRjaDogew0KICAgIGZvcm1hdDogew0KICAgICAgaGFuZGxlcjogZnVuY3Rpb24gKHZhbHVlKSB7DQogICAgICAgIHRoaXMuZmlsZUZvcm1hdCA9IHZhbHVlOw0KICAgICAgfSwNCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwNCiAgICB9LA0KICAgIHVybDogew0KICAgICAgaGFuZGxlcjogZnVuY3Rpb24gKG5ld1ZhbHVlKSB7DQogICAgICAgIGlmICh0aGlzLnN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5zdGF0ZS51cmwgPT09IHVuZGVmaW5lZCkNCiAgICAgICAgICB0aGlzLnNldFVSTChuZXdWYWx1ZSk7DQogICAgICB9LA0KICAgICAgaW1tZWRpYXRlOiB0cnVlLA0KICAgIH0sDQogICAgcmVnaW9uOiB7DQogICAgICBoYW5kbGVyOiBmdW5jdGlvbiAocmVnaW9uKSB7DQogICAgICAgIGlmICghKHRoaXMuc3RhdGUgfHwgdGhpcy52aWV3VVJMKSkgdGhpcy5zZXRGb2N1c2VkUmVnaW9uKHJlZ2lvbik7DQogICAgICB9LA0KICAgICAgaW1tZWRpYXRlOiB0cnVlLA0KICAgIH0sDQogICAgc3RhdGU6IHsNCiAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uIChzdGF0ZSkgew0KICAgICAgICB0aGlzLnNldFN0YXRlKHN0YXRlKTsNCiAgICAgIH0sDQogICAgICBpbW1lZGlhdGU6IHRydWUsDQogICAgICBkZWVwOiB0cnVlLA0KICAgIH0sDQogICAgdmlld1VSTDogew0KICAgICAgaGFuZGxlcjogZnVuY3Rpb24gKHZpZXdVUkwpIHsNCiAgICAgICAgdGhpcy51cGRhdGVWaWV3VVJMKHZpZXdVUkwpOw0KICAgICAgfSwNCiAgICAgIGltbWVkaWF0ZTogdHJ1ZSwNCiAgICB9LA0KICAgIGhlbHBNb2RlOiBmdW5jdGlvbiAodmFsKSB7DQogICAgICB0aGlzLnNldEhlbHBNb2RlKHZhbCk7DQogICAgfSwNCiAgICBkaXNwbGF5TWFya2VyczogZnVuY3Rpb24gKHZhbCkgew0KICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmRpc3BsYXlNYXJrZXJzID0gdmFsOw0KICAgICAgLy9VcGRhdGUgcGlja2FibGUgb2JqZWN0cw0KICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmZvcmNlUGlja2FibGVPYmplY3RzVXBkYXRlID0gdHJ1ZTsNCiAgICB9LA0KICAgIGRpc3BsYXlNaW5pbWFwOiBmdW5jdGlvbiAodmFsKSB7DQogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuZGlzcGxheU1pbmltYXAgPSB2YWw7DQogICAgfSwNCiAgICAic2NlbmVEYXRhLmN1cnJlbnRUaW1lIjogZnVuY3Rpb24gKCkgew0KICAgICAgLyoqDQogICAgICAgKiBUcmlnZ2VycyB3aGVuIHNjZW5lIHRpbWUgY2hhbmdlcy4NCiAgICAgICAqDQogICAgICAgKiBAcHJvcGVydHkge251bWJlcn0gdGltZSBDdXJyZW50IGJ1aWxkLWluIHRpbWUgb2Ygc2NlbmUuDQogICAgICAgKiBvZiBzZWxlY3RlZCBvYmplY3QuDQogICAgICAgKi8NCiAgICAgIHRoaXMuJGVtaXQoInRpbWVDaGFuZ2VkIiwgdGhpcy5zY2VuZURhdGEuY3VycmVudFRpbWUpOw0KICAgIH0sDQogICAgZHVyYXRpb246IGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5zZXREdXJhdGlvbih0aGlzLmR1cmF0aW9uKTsNCiAgICB9LA0KICAgIG1pbmltYXBTZXR0aW5nczogew0KICAgICAgZGVlcDogdHJ1ZSwNCiAgICAgIGhhbmRsZXI6ICJ1cGRhdGVNaW5pbWFwU2Npc3NvciIsDQogICAgfSwNCiAgICByZW5kZXI6IGZ1bmN0aW9uICh2YWwpIHsNCiAgICAgIHRoaXMudG9nZ2xlUmVuZGVyaW5nKHZhbCk7DQogICAgfSwNCiAgICBtYXJrZXJMYWJlbHM6IGZ1bmN0aW9uKGxhYmVscykgew0KICAgICAgY29uc29sZS5sb2coIm1hcmtlciBsYWJlbHMgY2hhbmdlZCIsIGxhYmVscykNCiAgICAgIHRoaXMucHJldmlvdXNNYXJrZXJMYWJlbHMuZm9yRWFjaCgocG1sKT0+ew0KICAgICAgICB0aGlzLnNldE1hcmtlck1vZGVGb3JPYmplY3RzV2l0aE5hbWUocG1sLCAib2ZmIik7DQogICAgICB9KQ0KICAgICAgbGFiZWxzLmZvckVhY2goKGwpPT57DQogICAgICAgIHRoaXMuc2V0TWFya2VyTW9kZUZvck9iamVjdHNXaXRoTmFtZShsLCAib24iKTsNCiAgICAgIH0pDQogICAgICB0aGlzLnByZXZpb3VzTWFya2VyTGFiZWxzID0gbGFiZWxzDQogICAgfQ0KICB9LA0KICBiZWZvcmVDcmVhdGU6IGZ1bmN0aW9uICgpIHsNCiAgICB0aGlzLiRtb2R1bGUgPSBuZXcgT3JnYW5zVmlld2VyKCk7DQogICAgdGhpcy5zZWxlY3RlZE9iamVjdHMgPSBbXTsNCiAgICB0aGlzLmhvdmVyZWRPYmplY3RzID0gW107DQogICAgdGhpcy5jdXJyZW50QmFja2dyb3VuZCA9ICJ3aGl0ZSI7DQogICAgdGhpcy5fY3VycmVudFVSTCA9IHVuZGVmaW5lZDsNCiAgICB0aGlzLmF2YWlsYWJsZUJhY2tncm91bmQgPSBbIndoaXRlIiwgImJsYWNrIiwgImxpZ2h0c2t5Ymx1ZSJdOw0KICAgIHRoaXMuJF9zZWFyY2hJbmRleCA9IG5ldyBTZWFyY2hJbmRleCgpOw0KICB9LA0KICBtb3VudGVkOiBmdW5jdGlvbiAoKSB7DQogICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuc2V0TW9kdWxlKHRoaXMuJG1vZHVsZSk7DQogICAgbGV0IGV2ZW50Tm90aWZpZXIgPSBuZXcgRXZlbnROb3RpZmllcigpOw0KICAgIGV2ZW50Tm90aWZpZXIuc3Vic2NyaWJlKHRoaXMsIHRoaXMuZXZlbnROb3RpZmllckNhbGxiYWNrKTsNCiAgICB0aGlzLiRtb2R1bGUuYWRkTm90aWZpZXIoZXZlbnROb3RpZmllcik7DQogICAgdGhpcy4kbW9kdWxlLmFkZE9yZ2FuUGFydEFkZGVkQ2FsbGJhY2sodGhpcy56aW5jT2JqZWN0QWRkZWQpOw0KICAgIHRoaXMuJG1vZHVsZS5pbml0aWFsaXNlUmVuZGVyZXIodGhpcy4kcmVmcy5kaXNwbGF5KTsNCiAgICB0aGlzLnRvZ2dsZVJlbmRlcmluZyh0aGlzLnJlbmRlcik7DQogICAgdGhpcy5ybyA9IG5ldyBSZXNpemVPYnNlcnZlcih0aGlzLmFkanVzdExheW91dCkub2JzZXJ2ZSgNCiAgICAgIHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXINCiAgICApOw0KICAgIHRoaXMuZGVmYXVsdFJhdGUgPSB0aGlzLiRtb2R1bGUuZ2V0UGxheVJhdGUoKTsNCiAgfSwNCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gKCkgew0KICAgIGlmICh0aGlzLnJvKSB0aGlzLnJvLmRpc2Nvbm5lY3QoKTsNCiAgICB0aGlzLiRtb2R1bGUuZGVzdHJveSgpOw0KICAgIHRoaXMuJG1vZHVsZSA9IHVuZGVmaW5lZDsNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIGFkZFppbmNPYmplY3Q6IGZ1bmN0aW9uICh6aW5jT2JqZWN0KSB7DQogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7DQogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5hZGRaaW5jT2JqZWN0KHppbmNPYmplY3QpOw0KICAgICAgICB0aGlzLnppbmNPYmplY3RBZGRlZCh6aW5jT2JqZWN0KTsNCiAgICAgICAgaWYgKHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzKSB0aGlzLiRyZWZzLnRyZWVDb250cm9scy56aW5jT2JqZWN0QWRkZWQoemluY09iamVjdCk7DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIGEgbmV3IHppbmMgb2JqZWN0IGlzIHJlYWQgaW50byB0aGUgc2NlbmUuDQogICAgICovDQogICAgemluY09iamVjdEFkZGVkOiBmdW5jdGlvbiAoemluY09iamVjdCkgew0KICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7DQogICAgICB0aGlzLiRfc2VhcmNoSW5kZXguYWRkWmluY09iamVjdCh6aW5jT2JqZWN0LCB6aW5jT2JqZWN0LnV1aWQpOw0KICAgICAgdGhpcy4kZW1pdCgiemluYy1vYmplY3QtYWRkZWQiLCB6aW5jT2JqZWN0KTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIA0KICAgICAqLw0KICAgIGFkZFJlZ2lvbnNUb1NlYXJjaEluZGV4OiBmdW5jdGlvbiAoKSB7DQogICAgICBjb25zdCByb290UmVnaW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFJvb3RSZWdpb24oKTsNCiAgICAgIGNvbnN0IHJlZ2lvbnMgPSByb290UmVnaW9uLmdldENoaWxkUmVnaW9ucyh0cnVlKTsNCiAgICAgIHJlZ2lvbnMuZm9yRWFjaChyZWdpb24gPT4gew0KICAgICAgICB0aGlzLiRfc2VhcmNoSW5kZXguYWRkUmVnaW9uKHJlZ2lvbiwgcmVnaW9uLnV1aWQpOw0KICAgICAgfSk7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIENoYW5nZSBiYWNrZ3NwZWVkcm91bmQgY29sb3VyIGJ1dHRvbg0KICAgICAqIGlzIHByZXNzZWQgYW4gY2F1c2VzIHRoZSBiYWNrZ3JvdUNvbG9ybmQgY29sb3VyIHRvIGJlIGNoYW5nZWQNCiAgICAgKiB0byBvbmUgb2YgdGhlIHRocmVlIHByZXNldCBjb2xvdXI6IHdoaXRlLCBibGFjayBhbmQNCiAgICAgKiBsaWdodHNreWJsdWUuDQogICAgICovDQogICAgYmFja2dyb3VuZENoYW5nZUNhbGxiYWNrOiBmdW5jdGlvbiAoY29sb3VyKSB7DQogICAgICB0aGlzLmN1cnJlbnRCYWNrZ3JvdW5kID0gY29sb3VyOw0KICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcg0KICAgICAgICAuZ2V0VGhyZWVKU1JlbmRlcmVyKCkNCiAgICAgICAgLnNldENsZWFyQ29sb3IodGhpcy5jdXJyZW50QmFja2dyb3VuZCwgMSk7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBUaGlzIGlzIGNhbGxlZCBieSBjYXB0dWVlU2NyZWVuc2hvdCBhbmQgYWZ0ZXIgdGhlIGxhc3QgcmVuZGVyDQogICAgICogbG9vcCwgaXQgZG93bmxvYWQgYSBzY3JlZW5zaG90IG9mIHRoZSBjdXJyZW50IHNjZW5lIHdpdGggbm8gVUkuDQogICAgICovDQogICAgY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjazogZnVuY3Rpb24gKCkgew0KICAgICAgLy9SZW1vdmUgdGhlIGNhbGxiYWNrLCBvbmx5IG5lZWRzIHRvIGhhcHBlbiBvbmNlDQogICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKA0KICAgICAgICB0aGlzLmNhcHR1cmVJRA0KICAgICAgKTsNCiAgICAgIGxldCBzY3JlZW5zaG90ID0gdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcg0KICAgICAgICAuZ2V0VGhyZWVKU1JlbmRlcmVyKCkNCiAgICAgICAgLmRvbUVsZW1lbnQudG9EYXRhVVJMKCJpbWFnZS9wbmciKTsNCiAgICAgIGxldCBocmVmRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsNCiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGhyZWZFbGVtZW50KTsNCiAgICAgIGlmICghdGhpcy5jYXB0dXJlRmlsZW5hbWUpIGhyZWZFbGVtZW50LmRvd25sb2FkID0gYHNjcmVlbnNob3QucG5nYDsNCiAgICAgIGVsc2UgaHJlZkVsZW1lbnQuZG93bmxvYWQgPSB0aGlzLmNhcHR1cmVGaWxlbmFtZTsNCiAgICAgIGhyZWZFbGVtZW50LmhyZWYgPSBzY3JlZW5zaG90Ow0KICAgICAgaHJlZkVsZW1lbnQuY2xpY2soKTsNCiAgICAgIGhyZWZFbGVtZW50LnJlbW92ZSgpOw0KICAgIH0sDQogICAgLyoqDQogICAgICogRnVuY3Rpb24gZm9yIGNhcHR1cmluZyBhIHNjcmVlbnNob3Qgb2YgdGhlIGN1cnJlbnQgcmVuZGVyaW5nLg0KICAgICAqDQogICAgICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lIGZpbGVuYW1lIGdpdmVuIHRvIHRoZSBzY3JlZW5zaG90Lg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLw0KICAgIGNhcHR1cmVTY3JlZW5zaG90OiBmdW5jdGlvbiAoZmlsZW5hbWUpIHsNCiAgICAgIHRoaXMuY2FwdHVyZUZpbGVuYW1lID0gZmlsZW5hbWU7DQogICAgICB0aGlzLmNhcHR1cmVJRCA9IHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYWRkUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24oDQogICAgICAgIHRoaXMuY2FwdHVyZVNjcmVlbnNob3RDYWxsYmFjaw0KICAgICAgKTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHRvIGNsZWFyIGN1cnJlbnQgc2NlbmUsIHRoZSB0cmVlIGNvbnRyb2xzIGFuZCB0aGUgc2VhcmNoIGluZGV4Lg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLw0KICAgIGNsZWFyU2NlbmU6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2xlYXIoKTsNCiAgICAgIGlmICh0aGlzLiRfc2VhcmNoSW5kZXgpIHRoaXMuJF9zZWFyY2hJbmRleC5yZW1vdmVBbGwoKTsNCiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHRoaXMuJG1vZHVsZS5zY2VuZS5jbGVhckFsbCgpOw0KICAgIH0sDQogICAgZm9ybWF0VG9vbHRpcCh2YWwpIHsNCiAgICAgIGlmICh0aGlzLnRpbWVNYXggPj0gMTAwMCkgew0KICAgICAgICBpZiAodmFsKSB7DQogICAgICAgICAgbGV0IHNlYyA9ICgodmFsICUgNjAwMDApIC8gMTAwMCkudG9GaXhlZCgyKSArICJzIjsNCiAgICAgICAgICBsZXQgbWluID0gdmFsID4gNjAwMDAgPyAodmFsIC8gNjAwMDApLnRvRml4ZWQoMCkgKyAibSAiIDogIiI7DQogICAgICAgICAgcmV0dXJuIG1pbiArIHNlYzsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcmV0dXJuIHZhbCA/IHZhbC50b0ZpeGVkKDIpICsgIiBtcyIgOiAiMCBtcyI7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiB0byByZXNldCB0aGUgdmlldyB0byBkZWZhdWx0Lg0KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovDQogICAgZml0V2luZG93OiBmdW5jdGlvbiAoKSB7DQogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7DQogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS52aWV3QWxsKCk7DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIGluLg0KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovDQogICAgem9vbUluOiBmdW5jdGlvbiAoKSB7DQogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7DQogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5jaGFuZ2Vab29tQnlTY3JvbGxSYXRlVW5pdCgtMSk7DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiB0byB6b29tIG91dC4NCiAgICAgKiBBbHNvIGNhbGxlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGJ1dHRvbiBpcyBwcmVzc2VkLg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLw0KICAgIHpvb21PdXQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsNCiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmNoYW5nZVpvb21CeVNjcm9sbFJhdGVVbml0KDEpOw0KICAgICAgfQ0KICAgIH0sDQogICAgLyoqDQogICAgICogRnVuY3Rpb24gdG8gY2hhbmdlIHRoZSBjdXJyZW50IHBsYXkgc3BlZWQuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovDQogICAgc3BlZWRDaGFuZ2VkOiBmdW5jdGlvbiAoc3BlZWQpIHsNCiAgICAgIHRoaXMuY3VycmVudFNwZWVkID0gc3BlZWQ7DQogICAgICB0aGlzLiRtb2R1bGUuc2V0UGxheVJhdGUodGhpcy5kZWZhdWx0UmF0ZSAqIHRoaXMuY3VycmVudFNwZWVkKTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHVzZWQgdG8gc3RvcCB0aGUgZnJlZSBzcGluDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovDQogICAgc3RvcEZyZWVTcGluOiBmdW5jdGlvbiAoKSB7DQogICAgICBsZXQgY2FtZXJhY29udHJvbCA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKTsNCiAgICAgIGNhbWVyYWNvbnRyb2wuc3RvcEF1dG9UdW1ibGUoKTsNCiAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7DQogICAgfSwNCiAgICBmaW5kT2JqZWN0c1dpdGhHcm91cE5hbWU6IGZ1bmN0aW9uIChuYW1lKSB7DQogICAgICBsZXQgb2JqZWN0cyA9IFtdOw0KICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSAiIiAmJiB0aGlzLiRtb2R1bGUuc2NlbmUpIHsNCiAgICAgICAgb2JqZWN0cyA9IHRoaXMuJG1vZHVsZS5zY2VuZS5maW5kT2JqZWN0c1dpdGhHcm91cE5hbWUobmFtZSk7DQogICAgICB9DQogICAgICByZXR1cm4gb2JqZWN0czsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEZvY3VzIG9uIG5hbWVkIHJlZ2lvbg0KICAgICAqLw0KICAgIHZpZXdSZWdpb246IGZ1bmN0aW9uIChuYW1lcykgew0KICAgICAgY29uc3Qgcm9vdFJlZ2lvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRSb290UmVnaW9uKCk7DQogICAgICBjb25zdCBncm91cHMgPSBBcnJheS5pc0FycmF5KG5hbWVzKSA/IG5hbWVzIDogW25hbWVzXTsNCiAgICAgIGNvbnN0IG9iamVjdHMgPSBmaW5kT2JqZWN0c1dpdGhOYW1lcyhyb290UmVnaW9uLCBncm91cHMsICIiLCB0cnVlKTsNCiAgICAgIGxldCBib3ggPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0Qm91bmRpbmdCb3hPZlppbmNPYmplY3RzKG9iamVjdHMpOw0KICAgICAgaWYgKGJveCkgew0KICAgICAgICBpZiAodGhpcy4kbW9kdWxlLmlzU3luY0NvbnRyb2woKSkgew0KICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRTeW5jQ29udHJvbFpvb21Ub0JveChib3gpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIGNvbnN0IGRpc3QgPQ0KICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS5mYXIgLSB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLm5lYXI7DQogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLnZpZXdBbGxXaXRoQm91bmRpbmdCb3goYm94KTsNCiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUuY2FtZXJhLmZhciA9IHRoaXMuJG1vZHVsZS5zY2VuZS5jYW1lcmEubmVhciArIGRpc3Q7DQogICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICB9DQogICAgICByZXR1cm4gZmFsc2U7DQogICAgfSwNCiAgICBzZXRGb2N1c2VkUmVnaW9uOiBmdW5jdGlvbiAobmFtZSkgew0KICAgICAgaWYgKG5hbWUpIHsNCiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkgew0KICAgICAgICAgIHRoaXMudmlld1JlZ2lvbihuYW1lKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjaygNCiAgICAgICAgICAgIHRoaXMuc2V0VVJMRmluaXNoQ2FsbGJhY2soeyByZWdpb246IG5hbWUgfSkNCiAgICAgICAgICApOw0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgICB1cGRhdGVWaWV3VVJMOiBmdW5jdGlvbiAodmlld1VSTCkgew0KICAgICAgaWYgKHZpZXdVUkwpIHsNCiAgICAgICAgaWYgKHRoaXMuaXNSZWFkeSkgew0KICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwodmlld1VSTCwgdGhpcy51cmwpOw0KICAgICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5sb2FkVmlld1VSTCh1cmwpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJG1vZHVsZS5zZXRGaW5pc2hEb3dubG9hZENhbGxiYWNrKA0KICAgICAgICAgICAgdGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7IHZpZXdVUkw6IHZpZXdVUkwgfSkNCiAgICAgICAgICApOw0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgICBnZXRSZW5kZXJlckluZm86IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7DQogICAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmdldFRocmVlSlNSZW5kZXJlcigpLmluZm87DQogICAgICB9DQogICAgICByZXR1cm4gdW5kZWZpbmVkOw0KICAgIH0sDQogICAgLyoqDQogICAgICogRnVuY3Rpb24gdXNlZCB0byByb3RhdGUgdGhlIHNjZW5lLg0KICAgICAqIEFsc28gY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYnV0dG9uIGlzIHByZXNzZWQuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovDQogICAgZnJlZVNwaW46IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2NlbmUpIHsNCiAgICAgICAgbGV0IGNhbWVyYWNvbnRyb2wgPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0WmluY0NhbWVyYUNvbnRyb2xzKCk7DQogICAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTsNCiAgICAgICAgY2FtZXJhY29udHJvbC5lbmFibGVBdXRvVHVtYmxlKCk7DQogICAgICAgIGNhbWVyYWNvbnRyb2wuYXV0b1R1bWJsZShbMS4wLCAwLjBdLCBNYXRoLlBJLCB0cnVlKTsNCiAgICAgICAgc2V0VGltZW91dCh0aGlzLnN0b3BGcmVlU3BpbiwgNDAwMCk7DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBDYWxsYmFjayB3aGVuIGEgcmVnaW9uIGlzIHNlbGVjdGVkL2hpZ2hsaWdodGVkLg0KICAgICAqIEl0IHdpbGwgYWxzbyB1cGRhdGUgb3RoZXIgY29udHJvbHMuDQogICAgICoNCiAgICAgKi8NCiAgICBldmVudE5vdGlmaWVyQ2FsbGJhY2s6IGZ1bmN0aW9uIChldmVudCkgew0KICAgICAgY29uc3QgbmFtZXMgPSBbXTsNCiAgICAgIGxldCB6aW5jT2JqZWN0cyA9IFtdOw0KICAgICAgY29uc3QgcmVnaW9uID0gdW5kZWZpbmVkOw0KICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAxIHx8IGV2ZW50LmV2ZW50VHlwZSA9PSAyKSB7DQogICAgICAgIGV2ZW50LmlkZW50aWZpZXJzLmZvckVhY2goKGlkZW50aWZpZXIpID0+IHsNCiAgICAgICAgICBpZiAoaWRlbnRpZmllcikgew0KICAgICAgICAgICAgbGV0IGlkID0gaWRlbnRpZmllci5kYXRhLmlkDQogICAgICAgICAgICAgID8gaWRlbnRpZmllci5kYXRhLmlkDQogICAgICAgICAgICAgIDogaWRlbnRpZmllci5kYXRhLmdyb3VwOw0KICAgICAgICAgICAgbmFtZXMucHVzaChpZCk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgICAgemluY09iamVjdHMgPSBldmVudC56aW5jT2JqZWN0czsNCiAgICAgIH0NCiAgICAgIC8qDQogICAgICAgKiBFdmVudCBUeXBlIDE6IFNlbGVjdGVkDQogICAgICAgKiBFdmVudCBUeXBlIDI6IEhpZ2hsaWdodGVkDQogICAgICAgKiBFdmVudCBUeXBlIDE6IE1vdmUNCiAgICAgICAqLw0KICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PSAxKSB7DQogICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgew0KICAgICAgICAgIGlmIChuYW1lcy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAvL3RoaXMuJHJlZnMudHJlZUNvbnRyb2xzLmNoYW5nZUFjdGl2ZUJ5TmFtZXMobmFtZXMsIHJlZ2lvbiwgZmFsc2UpOw0KICAgICAgICAgICAgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMudXBkYXRlQWN0aXZlVUkoemluY09iamVjdHMpOw0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7DQogICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVBY3RpdmUodHJ1ZSk7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIC8vIFRyaWdnZXJzIHdoZW4gYW4gb2JqZWN0IGhhcyBiZWVuIHNlbGVjdGVkDQogICAgICAgIHRoaXMuJGVtaXQoInNjYWZmb2xkLXNlbGVjdGVkIiwgZXZlbnQuaWRlbnRpZmllcnMpOw0KICAgICAgfSBlbHNlIGlmIChldmVudC5ldmVudFR5cGUgPT0gMikgew0KICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoID09PSAwKSB7DQogICAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOw0KICAgICAgICAgIC8vIGNvbnN0IG9mZnNldHMgPSB0aGlzLiRyZWZzLnNjYWZmb2xkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOw0KICAgICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgew0KICAgICAgICAgICAgaWYgKG5hbWVzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgLy90aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VIb3ZlckJ5TmFtZXMobmFtZXMsIHJlZ2lvbiwgZmFsc2UpOw0KICAgICAgICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy51cGRhdGVIb3ZlclVJKHppbmNPYmplY3RzKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUhvdmVyKHRydWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgICBpZiAoZXZlbnQuaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJiBldmVudC5pZGVudGlmaWVyc1swXSkgew0KICAgICAgICAgICAgbGV0IGlkID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uZGF0YS5pZA0KICAgICAgICAgICAgICA/IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEuaWQNCiAgICAgICAgICAgICAgOiBldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLmdyb3VwOw0KICAgICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcykgew0KICAgICAgICAgICAgICB0aGlzLnREYXRhLnZpc2libGUgPSB0cnVlOw0KICAgICAgICAgICAgICB0aGlzLnREYXRhLmxhYmVsID0gaWQ7DQogICAgICAgICAgICAgIGlmIChldmVudC5pZGVudGlmaWVyc1swXS5kYXRhLnJlZ2lvbikNCiAgICAgICAgICAgICAgICB0aGlzLnREYXRhLnJlZ2lvbiA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmRhdGEucmVnaW9uOw0KICAgICAgICAgICAgICBlbHNlIHRoaXMudERhdGEucmVnaW9uID0gdW5kZWZpbmVkOw0KICAgICAgICAgICAgICB0aGlzLnREYXRhLnggPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueDsNCiAgICAgICAgICAgICAgdGhpcy50RGF0YS55ID0gZXZlbnQuaWRlbnRpZmllcnNbMF0uY29vcmRzLnk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIC8vIFRyaWdnZXJzIHdoZW4gYW4gb2JqZWN0IGhhcyBiZWVuIGhpZ2hsaWdodGVkDQogICAgICAgICAgdGhpcy4kZW1pdCgic2NhZmZvbGQtaGlnaGxpZ2h0ZWQiLCBldmVudC5pZGVudGlmaWVycyk7DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZXZlbnRUeXBlID09IDMpIHsNCiAgICAgICAgLy9NT1ZFDQogICAgICAgIGlmIChldmVudC5pZGVudGlmaWVycy5sZW5ndGggPiAwICYmIGV2ZW50LmlkZW50aWZpZXJzWzBdKSB7DQogICAgICAgICAgaWYgKGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcykgew0KICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9DQogICAgICAgICAgICAgIHRoaXMuJHJlZnMuc2NhZmZvbGRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7DQogICAgICAgICAgICB0aGlzLnREYXRhLnggPSBldmVudC5pZGVudGlmaWVyc1swXS5jb29yZHMueCAtIG9mZnNldHMubGVmdDsNCiAgICAgICAgICAgIHRoaXMudERhdGEueSA9IGV2ZW50LmlkZW50aWZpZXJzWzBdLmNvb3Jkcy55IC0gb2Zmc2V0cy50b3A7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBHZXQgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBjdXJyZW50IHNlbGVjdGVkIHJlZ2lvbi4NCiAgICAgKg0KICAgICAqIEBwdWJsaWMNCiAgICAgKi8NCiAgICBnZXRDb29yZGluYXRlc09mU2VsZWN0ZWQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cyAmJiB0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKSB7DQogICAgICAgIHJldHVybiB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0T2JqZWN0c1NjcmVlblhZKHRoaXMuc2VsZWN0ZWRPYmplY3RzKTsNCiAgICAgIH0NCiAgICAgIHJldHVybiB1bmRlZmluZWQ7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBSZXR1cm4gYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHdpbmRvdyBjb29yZGluYXRlcyBvZiB0aGUNCiAgICAgKiBjdXJyZW50IHNlbGVjdGVkIHJlZ2lvbiB3aGljaCB3aWxsIGJlIHVwZGF0ZWQgYWZ0ZXIgZWFjaCByZW5kZXINCiAgICAgKiBsb29wLg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLw0KICAgIGdldER5bmFtaWNTZWxlY3RlZENvb3JkaW5hdGVzOiBmdW5jdGlvbiAoKSB7DQogICAgICByZXR1cm4gdGhpcy4kbW9kdWxlLnNlbGVjdGVkU2NyZWVuQ29vcmRpbmF0ZXM7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBDYWxsYmFjayB3aGVuIHRpbWUgaXMgY2hhbmdlZCB0aHJvdWdoIHRoZSBVSS4NCiAgICAgKi8NCiAgICB0aW1lQ2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQpIHsNCiAgICAgIGxldCBub3JtYWxpemVkVGltZSA9IChldmVudCAvIHRoaXMudGltZU1heCkgKiAxMDA7DQogICAgICBpZiAobm9ybWFsaXplZFRpbWUgIT0gdGhpcy5zY2VuZURhdGEuY3VycmVudFRpbWUpDQogICAgICAgIHRoaXMuJG1vZHVsZS51cGRhdGVUaW1lKG5vcm1hbGl6ZWRUaW1lKTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEEgY2FsbGJhY2sgdXNlZCBieSBjaGlsZHJlbiBjb21wb25lbnRzLiBTZXQgdGhlIHNlbGVjdGVkIHppbmMgb2JqZWN0DQogICAgICoNCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0DQogICAgICovDQogICAgb2JqZWN0U2VsZWN0ZWQ6IGZ1bmN0aW9uIChvYmplY3RzLCBwcm9wYWdhdGUpIHsNCiAgICAgIHRoaXMuc2VsZWN0ZWRPYmplY3RzID0gb2JqZWN0czsNCiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT2JqZWN0cyAmJiB0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKQ0KICAgICAgICB0aGlzLiRyZWZzLm9wYWNpdHlDb250cm9sLnNldE9iamVjdCh0aGlzLnNlbGVjdGVkT2JqZWN0c1swXSk7DQogICAgICB0aGlzLiRtb2R1bGUuc2V0U2VsZWN0ZWRCeVppbmNPYmplY3RzKG9iamVjdHMsIHVuZGVmaW5lZCwgcHJvcGFnYXRlKTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEEgY2FsbGJhY2sgdXNlZCBieSBjaGlsZHJlbiBjb21wb25lbnRzLiBTZXQgdGhlIGhpZ2hsaWdodGVkIHppbmMgb2JqZWN0DQogICAgICoNCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0DQogICAgICovDQogICAgb2JqZWN0SG92ZXJlZDogZnVuY3Rpb24gKG9iamVjdHMsIHByb3BhZ2F0ZSkgew0KICAgICAgdGhpcy5ob3ZlcmVkT2JqZWN0cyA9IG9iamVjdHM7DQogICAgICB0aGlzLiRtb2R1bGUuc2V0SGlnaGxpZ2h0ZWRCeVppbmNPYmplY3RzKG9iamVjdHMsIHVuZGVmaW5lZCwgcHJvcGFnYXRlKTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIFNldCB0aGUgc2VsZWN0ZWQgYnkgbmFtZS4NCiAgICAgKg0KICAgICAqIEBwYXJhbSB7fSBuYW1lIE5hbWUgb2YgdGhlIGdyb3VwDQogICAgICovDQogICAgY2hhbmdlQWN0aXZlQnlOYW1lOiBmdW5jdGlvbiAobmFtZXMsIHJlZ2lvbiwgcHJvcGFnYXRlKSB7DQogICAgICBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShuYW1lcyk7DQogICAgICBpZiAobmFtZXMgPT09IHVuZGVmaW5lZCB8fCAoaXNBcnJheSAmJiBuYW1lcy5sZW5ndGggPT09IDApKSB7DQogICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnJlbW92ZUFjdGl2ZShwcm9wYWdhdGUpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgbGV0IGFycmF5ID0gbmFtZXM7DQogICAgICAgIGlmICghaXNBcnJheSkgYXJyYXkgPSBbYXJyYXldOw0KICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VBY3RpdmVCeU5hbWVzKGFycmF5LCByZWdpb24sIHByb3BhZ2F0ZSk7DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBTZXQgdGhlIGhpZ2hsaWdodGVkIGJ5IG5hbWUuDQogICAgICoNCiAgICAgKiBAcGFyYW0ge25hbWV9IG5hbWUgTmFtZSBvZiB0aGUgZ3JvdXANCiAgICAgKi8NCiAgICBjaGFuZ2VIaWdobGlnaHRlZEJ5TmFtZTogZnVuY3Rpb24gKG5hbWVzLCByZWdpb24sIHByb3BhZ2F0ZSkgew0KICAgICAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkobmFtZXMpOw0KICAgICAgaWYgKG5hbWVzID09PSB1bmRlZmluZWQgfHwgKGlzQXJyYXkgJiYgbmFtZXMubGVuZ3RoID09PSAwKSkgew0KICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5yZW1vdmVIb3Zlcihwcm9wYWdhdGUpOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgbGV0IGFycmF5ID0gbmFtZXM7DQogICAgICAgIGlmICghaXNBcnJheSkgYXJyYXkgPSBbYXJyYXldOw0KICAgICAgICB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5jaGFuZ2VIb3ZlckJ5TmFtZXMoYXJyYXksIHJlZ2lvbiwgcHJvcGFnYXRlKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8qKg0KICAgICAqIFN0YXJ0IHRoZSBhbmltYXRpb24uDQogICAgICoNCiAgICAgKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0IFppbmMgb2JqZWN0DQogICAgICovDQogICAgcGxheTogZnVuY3Rpb24gKGZsYWcpIHsNCiAgICAgIHRoaXMuJG1vZHVsZS5wbGF5QW5pbWF0aW9uKGZsYWcpOw0KICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmbGFnOw0KICAgICAgLy9IaWRlIHRvb2x0aXAgYXMgbG9jYXRpb24gbWF5DQogICAgICAvL3RoaXMuaGlkZVJlZ2lvblRvb2x0aXAoKTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHRvIHRvZ2dsZSBvbi9vZmYgb3ZlcmxheSBoZWxwLg0KICAgICAqLw0KICAgIHNldEhlbHBNb2RlOiBmdW5jdGlvbiAoaGVscE1vZGUpIHsNCiAgICAgIGlmIChoZWxwTW9kZSkgew0KICAgICAgICB0aGlzLmluSGVscCA9IHRydWU7DQogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXMuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICAgIGl0ZW0udmFsdWUgPSB0cnVlOw0KICAgICAgICB9KTsNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuaW5IZWxwID0gZmFsc2U7DQogICAgICAgIHRoaXMuaG92ZXJWaXNpYmlsaXRpZXMuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICAgIGl0ZW0udmFsdWUgPSBmYWxzZTsNCiAgICAgICAgfSk7DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBDYWxsYmFjayBmdW5jdGlvbiB1c2VkIGJ5IHNob3dSZWdpb25Ub29sdGlwIGluIHRoZSBjYXNlIHdoZW4gdGhlIHRvb2x0aXANCiAgICAgKiBpcyBvdXQgb2Ygdmlldy4NCiAgICAgKi8NCiAgICBkaXNwbGF5VG9vbHRpcE9mT2JqZWN0c0NhbGxiYWNrOiBmdW5jdGlvbiAoDQogICAgICBuYW1lLA0KICAgICAgb2JqZWN0cywNCiAgICAgIHJlZ2lvblBhdGgsDQogICAgICByZXNldFZpZXcsDQogICAgICBsaXZlVXBkYXRlcw0KICAgICkgew0KICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzOw0KICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaW5zdGFuY2UuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24oDQogICAgICAgICAgaW5zdGFuY2UuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2sNCiAgICAgICAgKTsNCiAgICAgICAgaW5zdGFuY2UuJF9yZWdpb25Ub29sdGlwQ2FsbGJhY2sgPSB1bmRlZmluZWQ7DQogICAgICAgIGluc3RhbmNlLmRpc3BsYXlUb29sdGlwT2ZPYmplY3RzKG5hbWUsIG9iamVjdHMsIHJlZ2lvblBhdGgsIHJlc2V0VmlldywgbGl2ZVVwZGF0ZXMpOw0KICAgICAgfTsNCiAgICB9LA0KICAgIGxpdmVVcGRhdGVUb29sdGlwUG9zaXRpb246IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLiRtb2R1bGUuc2VsZWN0ZWRDZW50ZXIpIHsNCiAgICAgICAgdGhpcy50RGF0YS54ID0gdGhpcy4kbW9kdWxlLnNlbGVjdGVkU2NyZWVuQ29vcmRpbmF0ZXMueDsNCiAgICAgICAgdGhpcy50RGF0YS55ID0gdGhpcy4kbW9kdWxlLnNlbGVjdGVkU2NyZWVuQ29vcmRpbmF0ZXMueTsNCiAgICAgIH0NCiAgICB9LA0KICAgIGRpc3BsYXlUb29sdGlwT2ZPYmplY3RzOiBmdW5jdGlvbiAobmFtZSwgb2JqZWN0cywgcmVnaW9uUGF0aCwgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgew0KICAgICAgaWYgKG9iamVjdHMubGVuZ3RoID4gMCkgew0KICAgICAgICBsZXQgY29vcmRzID0gb2JqZWN0c1swXS5nZXRDbG9zZXN0VmVydGV4RE9NRWxlbWVudENvb3JkcygNCiAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUNCiAgICAgICAgKTsNCiAgICAgICAgaWYgKGNvb3Jkcykgew0KICAgICAgICAgIC8vVGhlIGNvb3JkcyBpcyBub3QgaW4gdmlldywgdmlldyBhbGwgaWYgcmVzZXRWaWV3IGZsYWcgaXMgdHJ1ZQ0KICAgICAgICAgIGlmICghY29vcmRzLmluVmlldykgew0KICAgICAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOw0KICAgICAgICAgICAgaWYgKHJlc2V0Vmlldykgew0KICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUudmlld0FsbCgpOw0KICAgICAgICAgICAgICAvL1VzZSB0aGUgcG9zdCByZW5kZXIgY2FsbGJhY2sgdG8gbWFrZSBzdXJlIHRoZSBzY2VuZSBoYXMgYmVlbiB1cGRhdGVkDQogICAgICAgICAgICAgIC8vYmVmb3JlIGdldHRpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLg0KICAgICAgICAgICAgICBpZiAodGhpcy4kX3JlZ2lvblRvb2x0aXBDYWxsYmFjaykgew0KICAgICAgICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIucmVtb3ZlUG9zdFJlbmRlckNhbGxiYWNrRnVuY3Rpb24oDQogICAgICAgICAgICAgICAgICB0aGlzLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB0aGlzLiRfcmVnaW9uVG9vbHRpcENhbGxiYWNrID0NCiAgICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLmFkZFBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKA0KICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5VG9vbHRpcE9mT2JqZWN0c0NhbGxiYWNrKA0KICAgICAgICAgICAgICAgICAgICBuYW1lLA0KICAgICAgICAgICAgICAgICAgICBvYmplY3RzLA0KICAgICAgICAgICAgICAgICAgICByZWdpb25QYXRoLA0KICAgICAgICAgICAgICAgICAgICByZXNldFZpZXcsDQogICAgICAgICAgICAgICAgICAgIGxpdmVVcGRhdGVzDQogICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy50RGF0YS52aXNpYmxlID0gdHJ1ZTsNCiAgICAgICAgICAgIHRoaXMudERhdGEubGFiZWwgPSBuYW1lOw0KICAgICAgICAgICAgdGhpcy50RGF0YS54ID0gY29vcmRzLnBvc2l0aW9uLng7DQogICAgICAgICAgICB0aGlzLnREYXRhLnkgPSBjb29yZHMucG9zaXRpb24ueTsNCiAgICAgICAgICAgIHRoaXMudERhdGEucmVnaW9uID0gcmVnaW9uUGF0aDsNCiAgICAgICAgICAgIGlmICh0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCkgew0KICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKA0KICAgICAgICAgICAgICAgIHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkDQogICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAobGl2ZVVwZGF0ZXMpIHsNCiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNldHVwTGl2ZUNvb3JkaW5hdGVzKG9iamVjdHMpOw0KICAgICAgICAgICAgICB0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCA9DQogICAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlci5hZGRQb3N0UmVuZGVyQ2FsbGJhY2tGdW5jdGlvbigNCiAgICAgICAgICAgICAgICAgIHRoaXMubGl2ZVVwZGF0ZVRvb2x0aXBQb3NpdGlvbg0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICB9DQogICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7DQogICAgICByZXR1cm4gZmFsc2U7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBEaXNwbGF5IHRoZSB0b29sdGlwIHVzZWQgZm9yIGRpc3BsYXlpbmcgc2VhcmNoIHJlc3VsdC4NCiAgICAgKiBXaGVuIHJlc2V0VmlldyBpcyBzZXQgdG8gdHJ1ZSwgaXQgd2lsbA0KICAgICAqIHJlc2V0IHZpZXcgaWYgdGhlIHRvb2x0aXAgaXMgbm90IGluIHZpZXcuDQogICAgICogU2V0dGluZyBsaXZlVXBkYXRlcyB0byB0cnVlIHdpbGwgdXBkYXRlIHRoZSB0b29sdGlwIGxvY2F0aW9uDQogICAgICogYXQgZXZlcnkgcmVuZGVyaW5nIGxvb3AuDQogICAgICovDQogICAgc2hvd1JlZ2lvblRvb2x0aXBXaXRoT2JqZWN0czogZnVuY3Rpb24gKGxhYmVsLCB6aW5jT2JqZWN0cywgcmVnaW9uUGF0aCwgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgew0KICAgICAgaWYgKGxhYmVsICYmIHppbmNPYmplY3RzICYmIHppbmNPYmplY3RzLmxlbmd0aCA+IDAgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7DQogICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlUb29sdGlwT2ZPYmplY3RzKA0KICAgICAgICAgIGxhYmVsLA0KICAgICAgICAgIHppbmNPYmplY3RzLA0KICAgICAgICAgIHJlZ2lvblBhdGgsDQogICAgICAgICAgcmVzZXRWaWV3LA0KICAgICAgICAgIGxpdmVVcGRhdGVzDQogICAgICAgICk7DQogICAgICB9DQogICAgICB0aGlzLmhpZGVSZWdpb25Ub29sdGlwKCk7DQogICAgICByZXR1cm4gZmFsc2U7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBEaXNwbGF5IHRoZSB0b29sdGlwLiBXaGVuIHJlc2V0VmlldyBpcyBzZXQgdG8gdHJ1ZSwgaXQgd2lsbA0KICAgICAqIHJlc2V0IHZpZXcgaWYgdGhlIHRvb2x0aXAgaXMgbm90IGluIHZpZXcuDQogICAgICogU2V0dGluZyBsaXZlVXBkYXRlcyB0byB0cnVlIHdpbGwgdXBkYXRlIHRoZSB0b29sdGlwIGxvY2F0aW9uDQogICAgICogYXQgZXZlcnkgcmVuZGVyaW5nIGxvb3AuDQogICAgICovDQogICAgc2hvd1JlZ2lvblRvb2x0aXA6IGZ1bmN0aW9uIChuYW1lLCByZXNldFZpZXcsIGxpdmVVcGRhdGVzKSB7DQogICAgICBpZiAobmFtZSAmJiB0aGlzLiRtb2R1bGUuc2NlbmUpIHsNCiAgICAgICAgY29uc3Qgcm9vdFJlZ2lvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRSb290UmVnaW9uKCk7DQogICAgICAgIGNvbnN0IGdyb3VwcyA9IFtuYW1lXTsNCiAgICAgICAgY29uc3Qgb2JqZWN0cyA9IGZpbmRPYmplY3RzV2l0aE5hbWVzKHJvb3RSZWdpb24sIGdyb3VwcywgIiIsIHRydWUpOw0KICAgICAgICBsZXQgcmVnaW9uUGF0aCA9IHVuZGVmaW5lZDsNCiAgICAgICAgaWYgKG9iamVjdHMgJiYgb2JqZWN0cy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgcmVnaW9uUGF0aCA9IG9iamVjdHNbMF0uZ2V0UmVnaW9uKCkuZ2V0RnVsbFBhdGgoKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gdGhpcy5zaG93UmVnaW9uVG9vbHRpcFdpdGhPYmplY3RzKA0KICAgICAgICAgIG5hbWUsDQogICAgICAgICAgb2JqZWN0cywNCiAgICAgICAgICByZWdpb25QYXRoLA0KICAgICAgICAgIHJlc2V0VmlldywNCiAgICAgICAgICBsaXZlVXBkYXRlcw0KICAgICAgICApOw0KICAgICAgfQ0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOw0KICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0sDQogICAgLyoqDQogICAgICogRGlzcGxheSB0aGUgdG9vbHRpcCB1c2luZyB0aGUgbGlzdCBvZiBhbm5vdGF0aW9ucy4NCiAgICAgKiBXaGVuIHJlc2V0VmlldyBpcyBzZXQgdG8gdHJ1ZSwgaXQgd2lsbA0KICAgICAqIHJlc2V0IHZpZXcgaWYgdGhlIHRvb2x0aXAgaXMgbm90IGluIHZpZXcuDQogICAgICogU2V0dGluZyBsaXZlVXBkYXRlcyB0byB0cnVlIHdpbGwgdXBkYXRlIHRoZSB0b29sdGlwIGxvY2F0aW9uDQogICAgICogYXQgZXZlcnkgcmVuZGVyaW5nIGxvb3AuDQogICAgICovDQogICAgc2hvd1JlZ2lvblRvb2x0aXBXaXRoQW5ub3RhdGlvbnM6IGZ1bmN0aW9uIChhbm5vdGF0aW9ucywgcmVzZXRWaWV3LCBsaXZlVXBkYXRlcykgew0KICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgew0KICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRPYmplY3RzRnJvbUFubm90YXRpb25zKHRoaXMuJG1vZHVsZS5zY2VuZSwgYW5ub3RhdGlvbnMpOw0KICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5vYmplY3RzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICByZXR1cm4gdGhpcy5zaG93UmVnaW9uVG9vbHRpcFdpdGhPYmplY3RzKA0KICAgICAgICAgICAgcmVzdWx0LmxhYmVsLA0KICAgICAgICAgICAgcmVzdWx0Lm9iamVjdHMsDQogICAgICAgICAgICByZXN1bHQucmVnaW9uUGF0aCwNCiAgICAgICAgICAgIHJlc2V0VmlldywNCiAgICAgICAgICAgIGxpdmVVcGRhdGVzDQogICAgICAgICAgKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOw0KICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0sDQogICAgaGlkZVJlZ2lvblRvb2x0aXA6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLiRfbGl2ZUNvb3JkaW5hdGVzVXBkYXRlZCkgew0KICAgICAgICB0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyLnJlbW92ZVBvc3RSZW5kZXJDYWxsYmFja0Z1bmN0aW9uKA0KICAgICAgICAgIHRoaXMuJF9saXZlQ29vcmRpbmF0ZXNVcGRhdGVkDQogICAgICAgICk7DQogICAgICAgIC8vVW5zZXQgdGhlIHRyYWNraW5nDQogICAgICAgIHRoaXMuJG1vZHVsZS5zZXR1cExpdmVDb29yZGluYXRlcyh1bmRlZmluZWQpOw0KICAgICAgfQ0KICAgICAgdGhpcy50RGF0YS52aXNpYmxlID0gZmFsc2U7DQogICAgICB0aGlzLnREYXRhLnJlZ2lvbiA9IHVuZGVmaW5lZDsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIFNldCB0aGUgbWFya2VyIG1vZGVzIGZvciBvYmplY3RzIHdpdGggdGhlIHByb3ZpZGVkIG5hbWUsIG1vZGUgY2FuDQogICAgICogYmUgIm9uIiwgIm9mZiIgb3IgImluaGVyaXRlZCIuDQogICAgICovDQogICAgc2V0TWFya2VyTW9kZUZvck9iamVjdHNXaXRoTmFtZTogZnVuY3Rpb24gKG5hbWUsIG1vZGUpIHsNCiAgICAgIGlmIChuYW1lICYmIHRoaXMuJG1vZHVsZS5zY2VuZSkgew0KICAgICAgICBjb25zdCByb290UmVnaW9uID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFJvb3RSZWdpb24oKTsNCiAgICAgICAgY29uc3QgZ3JvdXBzID0gW25hbWVdOw0KICAgICAgICBjb25zdCBvYmplY3RzID0gZmluZE9iamVjdHNXaXRoTmFtZXMocm9vdFJlZ2lvbiwgZ3JvdXBzLCAiIiwgdHJ1ZSk7DQogICAgICAgIG9iamVjdHMuZm9yRWFjaChvYmplY3QgPT4gb2JqZWN0LnNldE1hcmtlck1vZGUobW9kZSkpOw0KICAgICAgfQ0KICAgIH0sDQogICAgLyoqDQogICAgICogU2V0IHRoZSBtYXJrZXIgbW9kZXMgZm9yIG9iamVjdHMgc3BlY2lmaWVkIGJ5IHRoZSBsaXN0IG9mIGFubm90YXRpb25zDQogICAgICovDQogICAgc2V0TWFya2VyTW9kZVdpdGhBbm5vdGF0aW9uczogZnVuY3Rpb24gKGFubm90YXRpb25zLCBtb2RlKSB7DQogICAgICBpZiAodGhpcy4kbW9kdWxlLnNjZW5lKSB7DQogICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldE9iamVjdHNGcm9tQW5ub3RhdGlvbnModGhpcy4kbW9kdWxlLnNjZW5lLCBhbm5vdGF0aW9ucyk7DQogICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lm9iamVjdHMubGVuZ3RoID4gMCkgew0KICAgICAgICAgIHJlc3VsdC5vYmplY3RzLmZvckVhY2gob2JqZWN0ID0+IG9iamVjdC5zZXRNYXJrZXJNb2RlKG1vZGUpKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgLyoqDQogICAgICogVGhpcyBpcyBjYWxsZWQgd2hlbiBtb3VzZSBjdXJzb3IgZW50ZXJzIHN1cHBvcnRlZCBlbGVtZW50cw0KICAgICAqIHdpdGggaGVscCB0b290bHRpcHMuDQogICAgICovDQogICAgc2hvd0hlbHBUZXh0OiBmdW5jdGlvbiAoaGVscFRleHROdW1iZXIpIHsNCiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsNCiAgICAgICAgdGhpcy5oZWxwVGV4dFdhaXQgPSBzZXRUaW1lb3V0KCgpID0+IHsNCiAgICAgICAgICB0aGlzLmhvdmVyVmlzaWJpbGl0aWVzW2hlbHBUZXh0TnVtYmVyXS52YWx1ZSA9IHRydWU7DQogICAgICAgIH0sIDUwMCk7DQogICAgICB9DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBUaGlzIGlzIGNhbGxlZCB3aGVuIG1vdXNlIGN1cnNvciBleGl0cyBzdXBwb3J0ZWQgZWxlbWVudC4uDQogICAgICovDQogICAgaGlkZUhlbHBUZXh0OiBmdW5jdGlvbiAoaGVscFRleHROdW1iZXIpIHsNCiAgICAgIGlmICghdGhpcy5pbkhlbHApIHsNCiAgICAgICAgdGhpcy5ob3ZlclZpc2liaWxpdGllc1toZWxwVGV4dE51bWJlcl0udmFsdWUgPSBmYWxzZTsNCiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGVscFRleHRXYWl0KTsNCiAgICAgIH0NCiAgICB9LA0KICAgIHNlYXJjaDogZnVuY3Rpb24gKHRleHQsIGRpc3BsYXlMYWJlbCkgew0KICAgICAgaWYgKHRoaXMuJF9zZWFyY2hJbmRleCkgew0KICAgICAgICBpZiAodGV4dCA9PT0gdW5kZWZpbmVkIHx8IHRleHQgPT09ICIiIHx8DQogICAgICAgICAgKChBcnJheS5pc0FycmF5KHRleHQpICYmIHRleHQubGVuZ3RoID09PSAwKSkNCiAgICAgICAgKSB7DQogICAgICAgICAgdGhpcy5vYmplY3RTZWxlY3RlZChbXSwgdHJ1ZSk7IA0KICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLiRfc2VhcmNoSW5kZXguc2VhcmNoQW5kUHJvY2Vzc1Jlc3VsdCh0ZXh0KTsNCiAgICAgICAgICBjb25zdCB6aW5jT2JqZWN0cyA9IHJlc3VsdC56aW5jT2JqZWN0czsNCiAgICAgICAgICBpZiAoemluY09iamVjdHMubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgdGhpcy5vYmplY3RTZWxlY3RlZCh6aW5jT2JqZWN0cywgdHJ1ZSk7DQogICAgICAgICAgICBpZiAoZGlzcGxheUxhYmVsKSB7DQogICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemluY09iamVjdHMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICBpZiAoemluY09iamVjdHNbaV0gJiYgemluY09iamVjdHNbaV0uZ3JvdXBOYW1lKSB7DQogICAgICAgICAgICAgICAgICB0aGlzLnNob3dSZWdpb25Ub29sdGlwV2l0aE9iamVjdHMoDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5sYWJlbCwNCiAgICAgICAgICAgICAgICAgICAgemluY09iamVjdHMsDQogICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZWdpb25QYXRoLA0KICAgICAgICAgICAgICAgICAgICB0cnVlLA0KICAgICAgICAgICAgICAgICAgICB0cnVlDQogICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMub2JqZWN0U2VsZWN0ZWQoW10sIHRydWUpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0sDQogICAgLyoqDQogICAgICogR2V0IHRoZSBsaXN0IG9mIHN1Z2dlc3RlZCB0ZXJtcw0KICAgICAqLw0KICAgIGZldGNoU3VnZ2VzdGlvbnM6IGZ1bmN0aW9uICh0ZXJtKSB7DQogICAgICBpZiAodGhpcy4kX3NlYXJjaEluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybiBbXTsNCiAgICAgIHJldHVybiB0aGlzLiRfc2VhcmNoSW5kZXguYXV0b19zdWdnZXN0KHRlcm0pOw0KICAgIH0sDQogICAgLyoqDQogICAgICogQ2FsbGVkIHdoZW4gbWluaW1hcCBzZXR0aW5ncyBoYXMgY2hhbmdlZC4gUGFzcyB0aGUNCiAgICAgKiBwYXJhbWV0ZXJzIHRvIFppbmNKUyBhbmQgbWFya2VkIGl0IGZvciB1cGRhdGUuDQogICAgICovDQogICAgdXBkYXRlTWluaW1hcFNjaXNzb3I6IGZ1bmN0aW9uICgpIHsNCiAgICAgIE9iamVjdC5rZXlzKHRoaXMubWluaW1hcFNldHRpbmdzKS5mb3JFYWNoKChrZXkpID0+IHsNCiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLm1pbmltYXBTY2lzc29yW2tleV0gPSB0aGlzLm1pbmltYXBTZXR0aW5nc1trZXldOw0KICAgICAgfSk7DQogICAgICB0aGlzLiRtb2R1bGUuc2NlbmUubWluaW1hcFNjaXNzb3IudXBkYXRlUmVxdWlyZWQgPSB0cnVlOw0KICAgIH0sDQogICAgdXBkYXRlU2V0dGluZ3Nmcm9tU2NlbmU6IGZ1bmN0aW9uICgpIHsNCiAgICAgIHRoaXMuY3VycmVudFNwZWVkID0gMTsNCiAgICAgIHRoaXMuJG1vZHVsZS5zZXRQbGF5UmF0ZSh0aGlzLmRlZmF1bHRSYXRlKTsNCiAgICAgIHRoaXMub3JnaW5hbER1cmF0aW9uID0NCiAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJPcmlnaW5hbER1cmF0aW9uIik7DQogICAgICB0aGlzLmFuaW1hdGVEdXJhdGlvbiA9IHRoaXMuJG1vZHVsZS5zY2VuZS5nZXRNZXRhZGF0YVRhZygiRHVyYXRpb24iKTsNCiAgICAgIGxldCB0aW1lU3RhbXBzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldE1ldGFkYXRhVGFnKCJUaW1lU3RhbXBzIik7DQogICAgICB0aGlzLnRpbWVTdGFtcHMgPSB7fTsNCiAgICAgIGZvciAoY29uc3Qga2V5IGluIHRpbWVTdGFtcHMpIHsNCiAgICAgICAgdGhpcy50aW1lU3RhbXBzW3RpbWVTdGFtcHNba2V5XV0gPSBrZXk7DQogICAgICB9DQogICAgICB0aGlzLnRpbWVNYXggPSB0aGlzLiRtb2R1bGUuc2NlbmUuZ2V0RHVyYXRpb24oKTsNCiAgICB9LA0KICAgIHNldFVSTEZpbmlzaENhbGxiYWNrOiBmdW5jdGlvbiAob3B0aW9ucykgew0KICAgICAgcmV0dXJuICgpID0+IHsNCiAgICAgICAgaWYgKG9wdGlvbnMpIHsNCiAgICAgICAgICBpZiAob3B0aW9ucy52aWV3cG9ydCkgew0KICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNjZW5lDQogICAgICAgICAgICAgIC5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKQ0KICAgICAgICAgICAgICAuc2V0Q3VycmVudENhbWVyYVNldHRpbmdzKG9wdGlvbnMudmlld3BvcnQpOw0KICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy52aWV3VVJMICYmIG9wdGlvbnMudmlld1VSTCAhPT0gIiIpIHsNCiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwob3B0aW9ucy52aWV3VVJMLCB0aGlzLnVybCk7DQogICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUubG9hZFZpZXdVUkwodXJsKTsNCiAgICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMucmVnaW9uICYmIG9wdGlvbnMucmVnaW9uICE9PSAiIikgew0KICAgICAgICAgICAgdGhpcy52aWV3UmVnaW9uKG9wdGlvbnMucmVnaW9uKTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKG9wdGlvbnMudmlzaWJpbGl0eSkgew0KICAgICAgICAgICAgLy8gU29tZSBVSXMgbWF5IG5vdCBiZSByZWFkeSBhdCB0aGlzIHRpbWUuDQogICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7DQogICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnNldFN0YXRlKG9wdGlvbnMudmlzaWJpbGl0eSk7DQogICAgICAgICAgICB9KTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgdGhpcy51cGRhdGVTZXR0aW5nc2Zyb21TY2VuZSgpOw0KICAgICAgICB0aGlzLiRtb2R1bGUudXBkYXRlVGltZSgwLjAxKTsNCiAgICAgICAgdGhpcy4kbW9kdWxlLnVwZGF0ZVRpbWUoMCk7DQogICAgICAgIHRoaXMuJG1vZHVsZS51bnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2soKTsNCiAgICAgICAgdGhpcy5hZGRSZWdpb25zVG9TZWFyY2hJbmRleCgpOw0KICAgICAgICB0aGlzLiRlbWl0KCJvbi1yZWFkeSIpOw0KICAgICAgICB0aGlzLnNldE1hcmtlcnMoKTsNCiAgICAgICAgdGhpcy5pc1JlYWR5ID0gdHJ1ZTsNCiAgICAgIH07DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBGdW5jdGlvbiB1c2VkIGZvciBnZXR0aW5nIHRoZSBjdXJyZW50IHN0YXRlcyBvZiB0aGUgc2NlbmUuIFRoaXMgZXhwb3J0ZWQgc3RhdGVzDQogICAgICogY2FuIGJlIGltcG9ydGVkIHVzaW5nIHRoZSBpbXBvcnRTdGF0ZXMgbWV0aG9kLg0KICAgICAqDQogICAgICogQHB1YmxpYw0KICAgICAqLw0KICAgIGdldFN0YXRlOiBmdW5jdGlvbiAoKSB7DQogICAgICBsZXQgc3RhdGUgPSB7DQogICAgICAgIGZvcm1hdDogdGhpcy5maWxlRm9ybWF0LA0KICAgICAgICB1cmw6IHRoaXMuX2N1cnJlbnRVUkwsDQogICAgICAgIHZpZXdwb3J0OiB1bmRlZmluZWQsDQogICAgICAgIHZpc2liaWxpdHk6IHVuZGVmaW5lZCwNCiAgICAgIH07DQogICAgICBpZiAodGhpcy4kcmVmcy50cmVlQ29udHJvbHMpDQogICAgICAgIHN0YXRlLnZpc2liaWxpdHkgPSB0aGlzLiRyZWZzLnRyZWVDb250cm9scy5nZXRTdGF0ZSgpOw0KICAgICAgaWYgKHRoaXMuJG1vZHVsZS5zY2VuZSkgew0KICAgICAgICBsZXQgemluY0NhbWVyYUNvbnRyb2xzID0gdGhpcy4kbW9kdWxlLnNjZW5lLmdldFppbmNDYW1lcmFDb250cm9scygpOw0KICAgICAgICBzdGF0ZS52aWV3cG9ydCA9IHppbmNDYW1lcmFDb250cm9scy5nZXRDdXJyZW50Vmlld3BvcnQoKTsNCiAgICAgIH0NCiAgICAgIHJldHVybiBzdGF0ZTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIGltcG9ydGluZyB0aGUgc3RhdGVzIG9mIHRoZSBzY2VuZS4gVGhpcyBleHBvcnRlZCBzdGF0ZXMNCiAgICAgKiBjYW4gYmUgaW1wb3J0ZWQgdXNpbmcgdGhlIHJlYWQgc3RhdGVzIG1ldGhvZC4NCiAgICAgKg0KICAgICAqIEBwdWJsaWMNCiAgICAgKi8NCiAgICBzZXRTdGF0ZTogZnVuY3Rpb24gKHN0YXRlKSB7DQogICAgICBpZiAoc3RhdGUpIHsNCiAgICAgICAgaWYgKHN0YXRlLnVybCAmJiBzdGF0ZS51cmwgIT09IHRoaXMuX2N1cnJlbnRVUkwpIHsNCiAgICAgICAgICB0aGlzLnNldFVSTEFuZFN0YXRlKHN0YXRlLnVybCwgew0KICAgICAgICAgICAgZmlsZUZvcm1hdDogc3RhdGUuZmlsZUZvcm1hdCwNCiAgICAgICAgICAgIHZpZXdwb3J0OiBzdGF0ZS52aWV3cG9ydCwNCiAgICAgICAgICAgIHZpc2liaWxpdHk6IHN0YXRlLnZpc2liaWxpdHksDQogICAgICAgICAgfSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgaWYgKHN0YXRlLnZpZXdwb3J0IHx8IHN0YXRlLnZpc2liaWxpdHkpIHsNCiAgICAgICAgICAgIGlmICh0aGlzLmlzUmVhZHkgJiYgdGhpcy4kbW9kdWxlLnNjZW5lKSB7DQogICAgICAgICAgICAgIGlmIChzdGF0ZS52aWV3cG9ydCkNCiAgICAgICAgICAgICAgICB0aGlzLiRtb2R1bGUuc2NlbmUNCiAgICAgICAgICAgICAgICAgIC5nZXRaaW5jQ2FtZXJhQ29udHJvbHMoKQ0KICAgICAgICAgICAgICAgICAgLnNldEN1cnJlbnRDYW1lcmFTZXR0aW5ncyhzdGF0ZS52aWV3cG9ydCk7DQogICAgICAgICAgICAgIGlmIChzdGF0ZS52aXNpYmlsaXR5KQ0KICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMudHJlZUNvbnRyb2xzLnNldFN0YXRlKHN0YXRlLnZpc2liaWxpdHkpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgdGhpcy4kbW9kdWxlLnNldEZpbmlzaERvd25sb2FkQ2FsbGJhY2soDQogICAgICAgICAgICAgICAgdGhpcy5zZXRVUkxGaW5pc2hDYWxsYmFjayh7DQogICAgICAgICAgICAgICAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnQsDQogICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBzdGF0ZS52aXNpYmlsaXR5LA0KICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgICBleHBvcnRHTFRGOiBmdW5jdGlvbiAoYmluYXJ5KSB7DQogICAgICByZXR1cm4gdGhpcy4kbW9kdWxlLnNjZW5lLmV4cG9ydEdMVEYoYmluYXJ5KTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIHJlYWRpbmcgaW4gbmV3IHNjYWZmb2xkIG1ldGFkYXRhIGFuZCBhIGN1c3RvbQ0KICAgICAqIHZpZXdwb3J0LiBUaGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlIHRoZSBzdGF0ZSBwcm9wIGFuZA0KICAgICAqIHJlYWQgaW4gdGhlIG5ldyB1cmwuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovDQogICAgc2V0VVJMQW5kU3RhdGU6IGZ1bmN0aW9uIChuZXdWYWx1ZSwgc3RhdGUpIHsNCiAgICAgIGlmIChuZXdWYWx1ZSAhPSB0aGlzLl9jdXJyZW50VVJMKSB7DQogICAgICAgIGlmIChzdGF0ZSAmJiBzdGF0ZS5mb3JtYXQpIHRoaXMuZmlsZUZvcm1hdCA9IHN0YXRlLmZvcm1hdDsNCiAgICAgICAgbGV0IHZpZXdwb3J0ID0gc3RhdGUgJiYgc3RhdGUudmlld3BvcnQgPyBzdGF0ZS52aWV3cG9ydCA6IHVuZGVmaW5lZDsNCiAgICAgICAgbGV0IHZpc2liaWxpdHkgPQ0KICAgICAgICAgIHN0YXRlICYmIHN0YXRlLnZpc2liaWxpdHkgPyBzdGF0ZS52aXNpYmlsaXR5IDogdW5kZWZpbmVkOw0KICAgICAgICB0aGlzLl9jdXJyZW50VVJMID0gbmV3VmFsdWU7DQogICAgICAgIGlmICh0aGlzLiRyZWZzLnRyZWVDb250cm9scykgdGhpcy4kcmVmcy50cmVlQ29udHJvbHMuY2xlYXIoKTsNCiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsNCiAgICAgICAgdGhpcy5pc1JlYWR5ID0gZmFsc2U7DQogICAgICAgIHRoaXMuJF9zZWFyY2hJbmRleC5yZW1vdmVBbGwoKTsNCiAgICAgICAgdGhpcy5oaWRlUmVnaW9uVG9vbHRpcCgpOw0KICAgICAgICB0aGlzLiRtb2R1bGUuc2V0RmluaXNoRG93bmxvYWRDYWxsYmFjaygNCiAgICAgICAgICB0aGlzLnNldFVSTEZpbmlzaENhbGxiYWNrKHsNCiAgICAgICAgICAgIHZpZXdwb3J0OiB2aWV3cG9ydCwNCiAgICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sDQogICAgICAgICAgICB2aWV3VVJMOiB0aGlzLnZpZXdVUkwsDQogICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmlsaXR5LA0KICAgICAgICAgIH0pDQogICAgICAgICk7DQogICAgICAgIGlmICh0aGlzLmZpbGVGb3JtYXQgPT09ICJnbHRmIikgew0KICAgICAgICAgIHRoaXMuJG1vZHVsZS5sb2FkR0xURkZyb21VUkwobmV3VmFsdWUsICJzY2VuZSIsIHRydWUpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJG1vZHVsZS5sb2FkT3JnYW5zRnJvbVVSTCgNCiAgICAgICAgICAgIG5ld1ZhbHVlLA0KICAgICAgICAgICAgdW5kZWZpbmVkLA0KICAgICAgICAgICAgdW5kZWZpbmVkLA0KICAgICAgICAgICAgInNjZW5lIiwNCiAgICAgICAgICAgIHVuZGVmaW5lZCwNCiAgICAgICAgICAgIHRydWUNCiAgICAgICAgICApOw0KICAgICAgICB9DQogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWFya2VycyA9IHRoaXMuZGlzcGxheU1hcmtlcnM7DQogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5mb3JjZVBpY2thYmxlT2JqZWN0c1VwZGF0ZSA9IHRydWU7DQogICAgICAgIHRoaXMuJG1vZHVsZS5zY2VuZS5kaXNwbGF5TWluaW1hcCA9IHRoaXMuZGlzcGxheU1pbmltYXA7DQogICAgICAgIHRoaXMudXBkYXRlTWluaW1hcFNjaXNzb3IoKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIC8qKg0KICAgICAqIEZ1bmN0aW9uIHVzZWQgZm9yIHJlYWRpbmcgaW4gbmV3IHNjYWZmb2xkIG1ldGFkYXRhLiBUaGlzIGZ1bmN0aW9uIHdpbGwgaWdub3JlDQogICAgICogdGhlIHN0YXRlIHByb3AgYW5kIHJlYWQgaW4gdGhlIG5ldyB1cmwuDQogICAgICoNCiAgICAgKiBAcHVibGljDQogICAgICovDQogICAgc2V0VVJMOiBmdW5jdGlvbiAobmV3VmFsdWUpIHsNCiAgICAgIHRoaXMuc2V0VVJMQW5kU3RhdGUobmV3VmFsdWUsIHVuZGVmaW5lZCk7DQogICAgfSwNCiAgICAvKioNCiAgICAgKiBDYWxsYmFjayB3aGVuIGRyYXdlciBpcyB0b2dnbGVkLg0KICAgICAqLw0KICAgIGRyYXdlclRvZ2dsZWQ6IGZ1bmN0aW9uIChmbGFnKSB7DQogICAgICB0aGlzLmRyYXdlck9wZW4gPSBmbGFnOw0KICAgICAgdGhpcy5hZGp1c3RMYXlvdXQoKTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIENhbGxiYWNrIHVzaW5nIFJlc2l6ZU9ic2VydmVyLg0KICAgICAqLw0KICAgIGFkanVzdExheW91dDogZnVuY3Rpb24gKCkgew0KICAgICAgbGV0IHdpZHRoID0gdGhpcy4kcmVmcy5zY2FmZm9sZENvbnRhaW5lci5jbGllbnRXaWR0aDsNCiAgICAgIHRoaXMubWluaW1pc2VkU2xpZGVyID0gd2lkdGggPCA4MTI7DQogICAgICBpZiAodGhpcy5taW5pbWlzZWRTbGlkZXIpIHsNCiAgICAgICAgdGhpcy5zbGlkZXJQb3NpdGlvbiA9IHRoaXMuZHJhd2VyT3BlbiA/ICJyaWdodCIgOiAibGVmdCI7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLnNsaWRlclBvc2l0aW9uID0gIiI7DQogICAgICB9DQogICAgfSwNCiAgICB0b2dnbGVSZW5kZXJpbmc6IGZ1bmN0aW9uIChmbGFnKSB7DQogICAgICBpZiAodGhpcy4kbW9kdWxlLnppbmNSZW5kZXJlcikgew0KICAgICAgICBpZiAoZmxhZykgew0KICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuYW5pbWF0ZSgpOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIuc3RvcEFuaW1hdGUoKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgZm9yY2VSZXNpemU6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGlmICh0aGlzLiRtb2R1bGUuemluY1JlbmRlcmVyKSB7DQogICAgICAgIHRoaXMuJG1vZHVsZS56aW5jUmVuZGVyZXIub25XaW5kb3dSZXNpemUoKTsNCiAgICAgIH0NCiAgICB9LA0KICAgIHN5bmNDb250cm9sQ2FsbGJhY2s6IGZ1bmN0aW9uICgpIHsNCiAgICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLiRtb2R1bGUuTkRDQ2FtZXJhQ29udHJvbC5nZXRQYW5ab29tKCk7DQogICAgICBpZiAodGhpcy50RGF0YS52aXNpYmxlKSB7DQogICAgICAgIHRoaXMuc2hvd1JlZ2lvblRvb2x0aXAodGhpcy50RGF0YS5sYWJlbCwgdHJ1ZSwgdHJ1ZSk7DQogICAgICB9DQogICAgICB0aGlzLiRlbWl0KCJzY2FmZm9sZC1uYXZpZ2F0ZWQiLCBwYXlsb2FkKTsNCiAgICB9LA0KICAgIC8qKg0KICAgICAqIFJvdGF0ZSBtb2RlIC0gIm5vbmUiLCAiaG9yaXpvbnRhbCIsICJ2ZXJ0aWNhbCIsICJmcmVlIiBidXQNCiAgICAgKiBpdCB3aWxsIGJlIGlnbm9yZWQgaWYgZmxhZyBpcyBzZXQgdG8gZmFsc2UuDQogICAgICovDQogICAgdG9nZ2xlU3luY0NvbnRyb2w6IGZ1bmN0aW9uIChmbGFnLCByb3RhdGVNb2RlKSB7DQogICAgICB0aGlzLiRtb2R1bGUudG9nZ2xlU3luY0NvbnRyb2woZmxhZywgcm90YXRlTW9kZSk7DQogICAgICB0aGlzLiRtb2R1bGUuc2V0U3luY0NvbnRyb2xDYWxsYmFjayh0aGlzLnN5bmNDb250cm9sQ2FsbGJhY2spOw0KICAgIH0sDQoNCiAgICAvKioNCiAgICAgKiBTZXQgdGhlIG1hcmtlcnMgZm9yIHRoZSBzY2VuZS4NCiAgICAgKi8NCiAgICBzZXRNYXJrZXJzOiBmdW5jdGlvbiAoKSB7DQogICAgICB0aGlzLm1hcmtlckxhYmVscy5mb3JFYWNoKChsKT0+ew0KICAgICAgICB0aGlzLnNldE1hcmtlck1vZGVGb3JPYmplY3RzV2l0aE5hbWUobCwgIm9uIik7DQogICAgICB9KQ0KICAgIH0sDQogIH0sDQp9Ow0K"},{"version":3,"sources":["ScaffoldVuer.vue"],"names":[],"mappings":";AAuTA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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","file":"ScaffoldVuer.vue","sourceRoot":"node_modules/@abi-software/scaffoldvuer/src/components","sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"]}]}