{"remainingRequest":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/node_modules/vue-loader/lib/index.js??vue-loader-options!/data/jenkins/workspace/badp-bcxin-web-5.x-staff/src/views/ApproveOrg/ApproveDetail.vue?vue&type=script&lang=js","dependencies":[{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/src/views/ApproveOrg/ApproveDetail.vue","mtime":1734085985340},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/node_modules/babel-loader/lib/index.js","mtime":456789000000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-staff/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CmltcG9ydCB7CiAgY2l0eU9wdGlvbnNMaXN0QXBpLAogIGRpY3RSZWdpc3Rlckxpc3RBcGksCiAgcGxhY2VPZlN1cGVydmlzZUNvZGVDaGFuZ2VEZXBhcnRJZEFwaSwKICBBcHByb3ZlU3VibWl0QXBpLAp9IGZyb20gIkAvYXBpL3N0YWZmQXBpLmpzIjsKaW1wb3J0IHsgQ29kZVRvVGV4dCB9IGZyb20gImVsZW1lbnQtY2hpbmEtYXJlYS1kYXRhIjsgLy/nnIHluILljLrogZTliqjmj5Lku7YKCmV4cG9ydCBkZWZhdWx0IHsKICBwcm9wczogWyJvcmdhbml6YXRpb25JZCIsICJmb3JtTGlzdCIsICJzdGF0dXMiLCAiaW5kdXN0cnlDb2RlIl0sCiAgZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIGZvcm06IHsKICAgICAgICBpbnN0aXR1dGlvbmFsQ29kZTogIiIsCiAgICAgICAgcGxhY2VPZlJlZ2lzdGVyOiB7CiAgICAgICAgICBwcm92aW5jZTogeyBjb2RlOiAiIiwgbmFtZTogIiIgfSwKICAgICAgICAgIGNpdHk6IHsgY29kZTogIiIsIG5hbWU6ICIiIH0sCiAgICAgICAgICBkaXN0cmljdDogeyBjb2RlOiAiIiwgbmFtZTogIiIgfSwKICAgICAgICAgIGFkZHJlc3M6ICIiLAogICAgICAgIH0sIC8v5rOo5YaM5Zyw5Yy6CiAgICAgICAgcGxhY2VPZmNvbXBldGVudFVuaXQ6IHsKICAgICAgICAgIHByb3ZpbmNlOiB7IGNvZGU6ICIiLCBuYW1lOiAiIiB9LAogICAgICAgICAgY2l0eTogeyBjb2RlOiAiIiwgbmFtZTogIiIgfSwKICAgICAgICAgIGRpc3RyaWN0OiB7IGNvZGU6ICIiLCBuYW1lOiAiIiB9LAogICAgICAgIH0sCiAgICAgICAgdW5pZnlTb2NpYWxDcmVkaXRDb2RlRmlsZWZpbGVMaXN0OiBbXSwKICAgICAgICB1bmlmeVNvY2lhbENyZWRpdENvZGVGaWxlOiAiIiwKICAgICAgICBzZXJ2aWNlUGVybWl0QXR0YWNobWVudExpc3Q6IFtdLAogICAgICAgIHNlcnZpY2VQZXJtaXRBdHRhY2htZW50OiAiIiwKICAgICAgICBwbGFjZU9mU3VwZXJ2aXNlQ29kZTogW10sCiAgICAgICAgcGxhY2VPZlN1cGVydmlzZTogewogICAgICAgICAgcHJvdmluY2U6IHsgY29kZTogIiIsIG5hbWU6ICIiIH0sCiAgICAgICAgICBjaXR5OiB7IGNvZGU6ICIiLCBuYW1lOiAiIiB9LAogICAgICAgICAgZGlzdHJpY3Q6IHsgY29kZTogIiIsIG5hbWU6ICIiIH0sCiAgICAgICAgICBhZGRyZXNzOiAiIiwKICAgICAgICB9LCAvL+ebkeeuoeWcsOWMugogICAgICAgIGFkbWluaXN0cmF0b3I6IHsKICAgICAgICAgIG5hbWU6ICIiLAogICAgICAgICAgdGVsZXBob25lOiAiIiwKICAgICAgICAgIGNyZWRlbnRpYWxUeXBlOiAwLCAvL+m7mOiupOWxheawkei6q+S7veivgS/miLflj6PnsL8KICAgICAgICAgIGNyZWRlbnRpYWxOdW1iZXI6ICIiLAogICAgICAgIH0sCiAgICAgIH0sCiAgICAgIGFyZWFDaXR5TGlzdEFycjogW10sIC8v55yB5biC5Yy6CiAgICAgIGRpY3RSZWdpc3Rlckxpc3RPYmo6IHt9LCAvL+Wtl+WFuOihqAogICAgICB1bmlmeVNvY2lhbENyZWRpdENvZGVGaWxlRGlhbG9nVmlzaWJsZTogZmFsc2UsCiAgICAgIHNlcnZpY2VQZXJtaXRBdHRhY2htZW50RGlhbG9nVmlzaWJsZTogZmFsc2UsCgogICAgICBydWxlczogewogICAgICAgIGluZHVzdHJ5Q29kZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBpbnN0aXR1dGlvbmFsQ29kZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBpbmR1c3RyeURldGFpbFR5cGU6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgbmFtZTogW3sgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiYmx1ciIgfV0sCiAgICAgICAgdHlwZTogW3sgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9XSwKICAgICAgICB0ZWxlcGhvbmU6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImJsdXIiIH1dLAogICAgICAgIGVjb25vbWljVHlwZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBuYXR1cmU6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfV0sCiAgICAgICAgcGxhY2VPZlJlZ2lzdGVyQ29kZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwgLy81NQogICAgICAgIHBsYWNlT2ZSZWdpc3RlcjogewogICAgICAgICAgYWRkcmVzczogW3sgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9XSwKICAgICAgICB9LAogICAgICAgIHBsYWNlT2ZCdXNpbmVzc0NvZGU6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sIC8vNTUKICAgICAgICBwbGFjZU9mQnVzaW5lc3M6IHsKICAgICAgICAgIGFkZHJlc3M6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImJsdXIiIH1dLAogICAgICAgIH0sCiAgICAgICAgcGFyZW50TmFtZTogW3sgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiYmx1ciIgfV0sCiAgICAgICAgcGFyZW50Q2VydGlmaWNhdGVUeXBlOiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIHBhcmVudENlcnRpZmljYXRlTnVtYmVyOiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIHBhcmVudExlZ2FsUGVyc29uTmFtZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBwYXJlbnRMZWdhbFBlcnNvblRlbGVwaG9uZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKCiAgICAgICAgbGVnYWxQZXJzb25OYW1lOiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImJsdXIiIH0sCiAgICAgICAgXSwKICAgICAgICBsZWdhbFBlcnNvblRlbGVwaG9uZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJibHVyIiB9LAogICAgICAgIF0sCiAgICAgICAgbGVnYWxQZXJzb25DcmVkZW50aWFsVHlwZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBsZWdhbFBlcnNvbkNyZWRlbnRpYWxOdW1iZXI6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiYmx1ciIgfSwKICAgICAgICBdLAogICAgICAgIGxlZ2FsUGVyc29uTmF0aW9uYWxpdHk6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCgogICAgICAgIHJlZ2lzdGVyZWRDYXBpdGFsOiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIGZpeGVkQ2FwaXRhbDogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBhbm51YWxTYWxlc1ZvbHVtZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBhbm51YWxQcm9maXRUYXg6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgY2VydGlmaWNhdGVUeXBlOiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIHVuaWZ5U29jaWFsQ3JlZGl0Q29kZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICB1bmlmeVNvY2lhbENyZWRpdENvZGVGaWxlOiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIHNlcnZpY2VQZXJtaXROdW1iZXI6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgc2VjdXJpdHlBcHByb3ZhbE51bWJlcjogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBuYW1lT2ZJc3N1aW5nQXV0aG9yaXR5OiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIGZpcnN0SXNzdWVTZXJ2aWNlUGVybWl0OiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIHNlcnZpY2VTY29wZUxpc3Q6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgc2VydmljZVBlcm1pdEF0dGFjaG1lbnQ6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgc2VjdXJpdHlQcmVwYXJlZG5lc3NSYXRpbmc6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgc2VjdXJpdHlBcm1lZFJhdGluZzogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBzZWN1cml0eVNhZmV0eURlZmVuc2VSYXRpbmc6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgaXNSaXNrQXNzZXNzbWVudDogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBwbGFjZU9mU3VwZXJ2aXNlQ29kZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBzdXBlcnZpc2VEZXBhcnRJZDogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBzdXBlcnZpc2VEZXBhcnRJZEFycjogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBhZG1pbmlzdHJhdG9ybmFtZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBhZG1pbmlzdHJhdG9ydGVsZXBob25lOiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIGFkbWluaXN0cmF0b3JjcmVkZW50aWFsVHlwZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBhZG1pbmlzdHJhdG9yY3JlZGVudGlhbE51bWJlcjogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICB1bmlmeVNvY2lhbENyZWRpdENvZGVGaWxlZmlsZUxpc3Q6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgc2VydmljZVBlcm1pdEF0dGFjaG1lbnRMaXN0OiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIGFkbWluaXN0cmF0b3I6IHsKICAgICAgICAgIG5hbWU6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfV0sCiAgICAgICAgICB0ZWxlcGhvbmU6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfV0sCiAgICAgICAgICBjcmVkZW50aWFsVHlwZTogWwogICAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICAgIF0sCiAgICAgICAgICBjcmVkZW50aWFsTnVtYmVyOiBbCiAgICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgICAgXSwKICAgICAgICB9LAoKICAgICAgICBzZWN1cml0eVBlcnNvbk5hbWU6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgc2VjdXJpdHlQZXJzb25UZWxlcGhvbmU6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgICAgc2VjdXJpdHlQZXJzb25DcmVkZW50aWFsVHlwZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBzZWN1cml0eVBlcnNvbkNyZWRlbnRpYWxOdW1iZXI6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCgogICAgICAgIHRyYWluQ29udGVudDogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBudW1iZXJPZlNlY3VyaXR5R3VhcmRzOiBbCiAgICAgICAgICB7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAi5b+F5aGr6aG5IiwgdHJpZ2dlcjogImNoYW5nZSIgfSwKICAgICAgICBdLAogICAgICAgIGlzUHVibGljU2VjdXJpdHlTZWN1cml0eTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKICAgICAgICBpc1Byb3BlcnR5RW50ZXJwcmlzZTogWwogICAgICAgICAgeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogIuW/heWhq+mhuSIsIHRyaWdnZXI6ICJjaGFuZ2UiIH0sCiAgICAgICAgXSwKCiAgICAgICAgbmF0dXJlT2ZTZWxmUmVjcnVpdGVkVW5pdHM6IFsKICAgICAgICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1lc3NhZ2U6ICLlv4XloavpobkiLCB0cmlnZ2VyOiAiY2hhbmdlIiB9LAogICAgICAgIF0sCiAgICAgIH0sCiAgICB9OwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIFNvY2lhbENyZWRpdENvZGVGaWxldXBsb2FkRGlzYWJsZWQoKSB7CiAgICAgIHJldHVybiB0aGlzLmZvcm0udW5pZnlTb2NpYWxDcmVkaXRDb2RlRmlsZWZpbGVMaXN0Lmxlbmd0aCA+IDA7CiAgICB9LAogICAgc2VydmljZVBlcm1pdEF0dGFjaG1lbnREaXNhYmxlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZm9ybS5zZXJ2aWNlUGVybWl0QXR0YWNobWVudExpc3QubGVuZ3RoID4gMDsKICAgIH0sCiAgfSwKICBhc3luYyBtb3VudGVkKCkgewogICAgYXdhaXQgdGhpcy5hcmVhQ2l0eUxpc3QoKTsgLy/nnIHluILljLrlsYLnuqcKICAgIGF3YWl0IHRoaXMuZGljdFJlZ2lzdGVyTGlzdCgpOyAvL+aJgOacieWtl+WFuOihqAogICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZm9ybUxpc3QpKSB7CiAgICAgIHRoaXMuQXBwcm92ZURldGFpbExpc3QoKTsgLy/lm57mmL7or6bmg4XliJfooagKICAgIH0KICAgIGNvbnNvbGUubG9nKDg4OCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBBcHByb3ZlRGV0YWlsTGlzdCgpIHsKICAgICAgbGV0IG9iaiA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUxpc3QpOwogICAgICBsZXQgb2JqMiA9IEpTT04ucGFyc2Uob2JqKTsKICAgICAgY29uc29sZS5pbmZvKCJhcHByb3ZlIGRldGFpbCIsIG9iajIpOwogICAgICB0aGlzLiRzZXQodGhpcywgImZvcm0iLCBvYmoyKTsKICAgICAgdGhpcy4kc2V0KHRoaXMuZm9ybSwgInVuaWZ5U29jaWFsQ3JlZGl0Q29kZUZpbGVmaWxlTGlzdCIsIFtdKTsKICAgICAgdGhpcy4kc2V0KHRoaXMuZm9ybSwgInNlcnZpY2VQZXJtaXRBdHRhY2htZW50TGlzdCIsIFtdKTsKICAgICAgLy8g5rOo5YaM5Zyw5Yy6CiAgICAgIGlmICghdGhpcy5mb3JtLnBsYWNlT2ZSZWdpc3RlcikgewogICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mUmVnaXN0ZXIgPSB7CiAgICAgICAgICBwcm92aW5jZTogeyBjb2RlOiAiIiwgbmFtZTogIiIgfSwKICAgICAgICAgIGNpdHk6IHsgY29kZTogIiIsIG5hbWU6ICIiIH0sCiAgICAgICAgICBkaXN0cmljdDogeyBjb2RlOiAiIiwgbmFtZTogIiIgfSwKICAgICAgICAgIGFkZHJlc3M6ICIiLAogICAgICAgIH07CiAgICAgIH0KICAgICAgLy8g5YaF5L+d6KGM5Lia5Li7566h5Y2V5L2N5L+h5oGvCiAgICAgIGlmICghdGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0KSB7CiAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0ID0gewogICAgICAgICAgcHJvdmluY2U6IHsgY29kZTogIiIsIG5hbWU6ICIiIH0sCiAgICAgICAgICBjaXR5OiB7IGNvZGU6ICIiLCBuYW1lOiAiIiB9LAogICAgICAgICAgZGlzdHJpY3Q6IHsgY29kZTogIiIsIG5hbWU6ICIiIH0sCiAgICAgICAgICBhZGRyZXNzOiAiIiwKICAgICAgICB9OwogICAgICB9CiAgICAgIC8vIOS/neWuieihjOS4muebkeeuoeacuuaehOS/oeaBrwogICAgICBpZiAoIXRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlKSB7CiAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZTdXBlcnZpc2UgPSB7CiAgICAgICAgICBwcm92aW5jZTogeyBjb2RlOiAiIiwgbmFtZTogIiIgfSwKICAgICAgICAgIGNpdHk6IHsgY29kZTogIiIsIG5hbWU6ICIiIH0sCiAgICAgICAgICBkaXN0cmljdDogeyBjb2RlOiAiIiwgbmFtZTogIiIgfSwKICAgICAgICAgIGFkZHJlc3M6ICIiLAogICAgICAgIH07CiAgICAgIH0KICAgICAgaWYgKCF0aGlzLmZvcm0uYWRtaW5pc3RyYXRvcikgewogICAgICAgIHRoaXMuZm9ybS5hZG1pbmlzdHJhdG9yID0gewogICAgICAgICAgbmFtZTogIiIsCiAgICAgICAgICB0ZWxlcGhvbmU6ICIiLAogICAgICAgIH07CiAgICAgIH0KICAgICAgLy8g5rOo5YaM5Zyw5Yy65pWw5o2u5aSE55CGCiAgICAgIGlmICh0aGlzLmZvcm0ucGxhY2VPZlJlZ2lzdGVyICYmIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5wbGFjZU9mUmVnaXN0ZXIpKSB7CiAgICAgICAgLy8gbGV0IGFyciA9IFt0aGlzLmZvcm0ucGxhY2VPZlJlZ2lzdGVyLnByb3ZpbmNlLmNvZGUsIHRoaXMuZm9ybS5wbGFjZU9mUmVnaXN0ZXIuY2l0eS5jb2RlLCB0aGlzLmZvcm0ucGxhY2VPZlJlZ2lzdGVyLmRpc3RyaWN0LmNvZGVdCiAgICAgICAgbGV0IGFyciA9IFtdOwogICAgICAgIGlmICgKICAgICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mUmVnaXN0ZXIucHJvdmluY2UgJiYKICAgICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mUmVnaXN0ZXIucHJvdmluY2UuY29kZQogICAgICAgICkgewogICAgICAgICAgYXJyLnB1c2godGhpcy5mb3JtLnBsYWNlT2ZSZWdpc3Rlci5wcm92aW5jZS5jb2RlKTsKICAgICAgICB9CiAgICAgICAgaWYgKAogICAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZSZWdpc3Rlci5jaXR5ICYmCiAgICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZlJlZ2lzdGVyLmNpdHkuY29kZQogICAgICAgICkgewogICAgICAgICAgYXJyLnB1c2godGhpcy5mb3JtLnBsYWNlT2ZSZWdpc3Rlci5jaXR5LmNvZGUpOwogICAgICAgIH0KICAgICAgICBpZiAoCiAgICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZlJlZ2lzdGVyLmRpc3RyaWN0ICYmCiAgICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZlJlZ2lzdGVyLmRpc3RyaWN0LmNvZGUKICAgICAgICApIHsKICAgICAgICAgIGFyci5wdXNoKHRoaXMuZm9ybS5wbGFjZU9mUmVnaXN0ZXIuZGlzdHJpY3QuY29kZSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuJHNldCh0aGlzLmZvcm0sICJwbGFjZU9mUmVnaXN0ZXJDb2RlIiwgYXJyKTsKICAgICAgfQogICAgICAvLyDlip7lhazlnLDljLrjgIHnu4/okKXlnLDljLrmlbDmja7lpITnkIYKICAgICAgaWYgKHRoaXMuZm9ybS5wbGFjZU9mQnVzaW5lc3MgJiYgT2JqZWN0LmtleXModGhpcy5mb3JtLnBsYWNlT2ZCdXNpbmVzcykpIHsKICAgICAgICBsZXQgYXJyID0gW107CiAgICAgICAgaWYgKAogICAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZCdXNpbmVzcy5wcm92aW5jZSAmJgogICAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZCdXNpbmVzcy5wcm92aW5jZS5jb2RlCiAgICAgICAgKSB7CiAgICAgICAgICBhcnIucHVzaCh0aGlzLmZvcm0ucGxhY2VPZkJ1c2luZXNzLnByb3ZpbmNlLmNvZGUpOwogICAgICAgIH0KICAgICAgICBpZiAoCiAgICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZkJ1c2luZXNzLmNpdHkgJiYKICAgICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mQnVzaW5lc3MuY2l0eS5jb2RlCiAgICAgICAgKSB7CiAgICAgICAgICBhcnIucHVzaCh0aGlzLmZvcm0ucGxhY2VPZkJ1c2luZXNzLmNpdHkuY29kZSk7CiAgICAgICAgfQogICAgICAgIGlmICgKICAgICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mQnVzaW5lc3MuZGlzdHJpY3QgJiYKICAgICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mQnVzaW5lc3MuZGlzdHJpY3QuY29kZQogICAgICAgICkgewogICAgICAgICAgYXJyLnB1c2godGhpcy5mb3JtLnBsYWNlT2ZCdXNpbmVzcy5kaXN0cmljdC5jb2RlKTsKICAgICAgICB9CiAgICAgICAgdGhpcy4kc2V0KHRoaXMuZm9ybSwgInBsYWNlT2ZCdXNpbmVzc0NvZGUiLCBhcnIpOwogICAgICB9CiAgICAgIC8vIOWGheS/neihjOS4muS4u+euoeWNleS9jeaJgOWcqOWcsOWMugogICAgICBpZiAoCiAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0ICYmCiAgICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0KQogICAgICApIHsKICAgICAgICBsZXQgYXJyID0gW107CiAgICAgICAgaWYgKAogICAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0LnByb3ZpbmNlICYmCiAgICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZkNvbXBldGVudFVuaXQucHJvdmluY2UuY29kZQogICAgICAgICkgewogICAgICAgICAgYXJyLnB1c2godGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0LnByb3ZpbmNlLmNvZGUpOwogICAgICAgIH0KICAgICAgICBpZiAoCiAgICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZkNvbXBldGVudFVuaXQuY2l0eSAmJgogICAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0LmNpdHkuY29kZQogICAgICAgICkgewogICAgICAgICAgYXJyLnB1c2godGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0LmNpdHkuY29kZSk7CiAgICAgICAgfQogICAgICAgIGlmICgKICAgICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mQ29tcGV0ZW50VW5pdC5kaXN0cmljdCAmJgogICAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0LmRpc3RyaWN0LmNvZGUKICAgICAgICApIHsKICAgICAgICAgIGFyci5wdXNoKHRoaXMuZm9ybS5wbGFjZU9mQ29tcGV0ZW50VW5pdC5kaXN0cmljdC5jb2RlKTsKICAgICAgICB9CiAgICAgICAgdGhpcy4kc2V0KHRoaXMuZm9ybSwgInBsYWNlT2ZDb21wZXRlbnRVbml0Q29kZSIsIGFycik7CiAgICAgIH0KICAgICAgLy8g5L+d5a6J6KGM5Lia55uR566h5Zyw5Yy6CiAgICAgIGlmICgKICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZlN1cGVydmlzZSAmJgogICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlKQogICAgICApIHsKICAgICAgICBjb25zb2xlLmxvZygia2V5czExIiwgT2JqZWN0LmtleXModGhpcy5mb3JtLnBsYWNlT2ZTdXBlcnZpc2UpKTsKICAgICAgICBsZXQgYXJyID0gW107CiAgICAgICAgLy8gbGV0IGFycj1bJzkwMDAwMCcsJzkwMDEwMSddCiAgICAgICAgaWYgKAogICAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZTdXBlcnZpc2UucHJvdmluY2UgJiYKICAgICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlLnByb3ZpbmNlLmNvZGUKICAgICAgICApIHsKICAgICAgICAgIGFyci5wdXNoKHRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlLnByb3ZpbmNlLmNvZGUpOwogICAgICAgIH0KICAgICAgICBpZiAoCiAgICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZlN1cGVydmlzZS5jaXR5ICYmCiAgICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZlN1cGVydmlzZS5jaXR5LmNvZGUKICAgICAgICApIHsKICAgICAgICAgIGFyci5wdXNoKHRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlLmNpdHkuY29kZSk7CiAgICAgICAgfQogICAgICAgIGlmICgKICAgICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlLmRpc3RyaWN0ICYmCiAgICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZlN1cGVydmlzZS5kaXN0cmljdC5jb2RlCiAgICAgICAgKSB7CiAgICAgICAgICBhcnIucHVzaCh0aGlzLmZvcm0ucGxhY2VPZlN1cGVydmlzZS5kaXN0cmljdC5jb2RlKTsKICAgICAgICB9CiAgICAgICAgdGhpcy4kc2V0KHRoaXMuZm9ybSwgInBsYWNlT2ZTdXBlcnZpc2VDb2RlIiwgYXJyKTsKCiAgICAgICAgY29uc29sZS5sb2coInRoaXMuZm9ybTExIiwgdGhpcy5mb3JtKTsKICAgICAgfQogICAgICAvLyBkZWJ1Z2dlcgogICAgICBpZiAodGhpcy5mb3JtLnBsYWNlT2ZTdXBlcnZpc2VDb2RlKSB7CiAgICAgICAgdGhpcy5wbGFjZU9mU3VwZXJ2aXNlQ29kZUNoYW5nZSh0aGlzLmZvcm0ucGxhY2VPZlN1cGVydmlzZUNvZGUpOwogICAgICB9CiAgICAgIGlmICh0aGlzLmZvcm0udW5pZnlTb2NpYWxDcmVkaXRDb2RlRmlsZSkgewogICAgICAgIHRoaXMuJHNldCh0aGlzLmZvcm0sICJ1bmlmeVNvY2lhbENyZWRpdENvZGVGaWxlZmlsZUxpc3QiLCBbCiAgICAgICAgICB7IHVybDogdGhpcy5mb3JtLnVuaWZ5U29jaWFsQ3JlZGl0Q29kZUZpbGUgfSwKICAgICAgICBdKTsKICAgICAgfQogICAgICBpZiAodGhpcy5mb3JtLnNlcnZpY2VQZXJtaXRBdHRhY2htZW50KSB7CiAgICAgICAgdGhpcy4kc2V0KHRoaXMuZm9ybSwgInNlcnZpY2VQZXJtaXRBdHRhY2htZW50TGlzdCIsIFsKICAgICAgICAgIHsgdXJsOiB0aGlzLmZvcm0uc2VydmljZVBlcm1pdEF0dGFjaG1lbnQgfSwKICAgICAgICBdKTsKICAgICAgfQogICAgfSwKCiAgICBhcmVhQ2l0eUxpc3QoKSB7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgICAgIGNpdHlPcHRpb25zTGlzdEFwaSgpLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7CiAgICAgICAgICBjb25zb2xlLmxvZyg1KTsKICAgICAgICAgIHRoaXMuYXJlYUNpdHlMaXN0QXJyID0gcmVzcG9uc2UuZGF0YTsKICAgICAgICAgIGNvbnNvbGUubG9nKCIyMiIsIHRoaXMuYXJlYUNpdHlMaXN0QXJyKTsKICAgICAgICAgIC8vIHRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlQ29kZSA9IFsnMTEwMDAwJywgJzExMDEwMCcsICcxMTAxMDEnXS8vWycxMDAwMDAnLCAnMTAxNTAwJywgJzEwMTUwMCddCiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgZGljdFJlZ2lzdGVyTGlzdCgpIHsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgICAgZGljdFJlZ2lzdGVyTGlzdEFwaSgpLnRoZW4oKHJlc3BvbnNlKSA9PiB7CiAgICAgICAgICBjb25zb2xlLmxvZyg2KTsKICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKICAgICAgICAgIHRoaXMuZGljdFJlZ2lzdGVyTGlzdE9iaiA9IHJlc3BvbnNlLmRhdGE7CiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgcGxhY2VPZlJlZ2lzdGVyQ29kZUNoYW5nZSh2YWx1ZSkgewogICAgICBjb25zb2xlLmxvZyh2YWx1ZSk7CiAgICAgIC8vIHRoaXMuZm9ybS5wbGFjZU9mUmVnaXN0ZXIgPSB7CiAgICAgIC8vICAgICBwcm92aW5jZTogeyBjb2RlOiB2YWx1ZVswXSwgbmFtZTogQ29kZVRvVGV4dFt2YWx1ZVswXV0gfSwKICAgICAgLy8gICAgIGNpdHk6IHsgY29kZTogdmFsdWVbMV0sIG5hbWU6IENvZGVUb1RleHRbdmFsdWVbMV1dIH0sCiAgICAgIC8vICAgICBkaXN0cmljdDogeyBjb2RlOiB2YWx1ZVsyXSwgbmFtZTogQ29kZVRvVGV4dFt2YWx1ZVsyXV0gfSwKICAgICAgLy8gfQogICAgfSwKICAgIHBsYWNlT2ZDb21wZXRlbnRVbml0Q29kZUNoYW5nZSh2YWx1ZSkgewogICAgICBjb25zb2xlLmxvZyh2YWx1ZSk7CiAgICAgIC8vIHRoaXMuZm9ybS5wbGFjZU9mUmVnaXN0ZXIgPSB7CiAgICAgIC8vICAgICBwcm92aW5jZTogeyBjb2RlOiB2YWx1ZVswXSwgbmFtZTogQ29kZVRvVGV4dFt2YWx1ZVswXV0gfSwKICAgICAgLy8gICAgIGNpdHk6IHsgY29kZTogdmFsdWVbMV0sIG5hbWU6IENvZGVUb1RleHRbdmFsdWVbMV1dIH0sCiAgICAgIC8vICAgICBkaXN0cmljdDogeyBjb2RlOiB2YWx1ZVsyXSwgbmFtZTogQ29kZVRvVGV4dFt2YWx1ZVsyXV0gfSwKICAgICAgLy8gfQogICAgfSwKICAgIC8v6JCl5Lia5omn54Wn5omr5o+P5Lu2LemihOiniAogICAgaGFuZGxlUGljdHVyZUNhcmRQcmV2aWV3VW5pZnlTb2NpYWxDcmVkaXRDb2RlRmlsZSgpIHsKICAgICAgdGhpcy51bmlmeVNvY2lhbENyZWRpdENvZGVGaWxlRGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgLy/okKXkuJrmiafnhafmiavmj4/ku7Yt5Yig6ZmkCiAgICBoYW5kbGVSZW1vdmVVbmlmeVNvY2lhbENyZWRpdENvZGVGaWxlKCkgewogICAgICB0aGlzLiRzZXQodGhpcy5mb3JtLCAidW5pZnlTb2NpYWxDcmVkaXRDb2RlRmlsZSIsICIiKTsKICAgICAgdGhpcy4kc2V0KHRoaXMuZm9ybSwgInVuaWZ5U29jaWFsQ3JlZGl0Q29kZUZpbGVmaWxlTGlzdCIsIFtdKTsKICAgICAgY29uc29sZS5sb2coInRoaXMuZm9ybSIsIHRoaXMuZm9ybSk7CiAgICB9LAogICAgLy/okKXkuJrmiafnhafmiavmj4/ku7Yt5LiK5LygCiAgICB1cGxvYWRJbWdVbmlmeVNvY2lhbENyZWRpdENvZGVGaWxlKGUpIHsKICAgICAgY29uc29sZS5sb2coImUiLCBlKTsKICAgICAgdmFyIHRoYXQgPSB0aGlzOwogICAgICB2YXIgZG9tYWluSWQgPSAiZGVmYXVsdCI7IC8v5L+d5a2Y5pys5Zyw5LyB5LiaaWQKICAgICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7CiAgICAgIGxldCB5ID0gbm93LmdldEZ1bGxZZWFyKCk7CiAgICAgIGxldCBtID0KICAgICAgICBub3cuZ2V0TW9udGgoKSArIDEgPCAxMAogICAgICAgICAgPyAiMCIgKyAobm93LmdldE1vbnRoKCkgKyAxKQogICAgICAgICAgOiBub3cuZ2V0TW9udGgoKSArIDE7CiAgICAgIGxldCBkID0gbm93LmdldERhdGUoKTsKICAgICAgbGV0IG1kID0gbSArICItIiArIGQ7CiAgICAgIHZhciBvYmplY3RLZXkgPSBgdXBsb2Fkcy8ke3l9LyR7bWR9LyR7ZG9tYWluSWR9LyR7bm93LmdldFRpbWUoKX0vJHsKICAgICAgICBlLmZpbGUubmFtZQogICAgICB9YDsKICAgICAgdmFyIG9icyA9IG5ldyBPYnNDbGllbnQoewogICAgICAgIGFjY2Vzc19rZXlfaWQ6IGFrLAogICAgICAgIHNlY3JldF9hY2Nlc3Nfa2V5OiBzaywKICAgICAgICBzZXJ2ZXI6IHVybHNlcnZlciwKICAgICAgICB0aW1lb3V0OiA2MCAqIDUsCiAgICAgIH0pOwogICAgICBvYnMKICAgICAgICAucHV0T2JqZWN0KHsKICAgICAgICAgIEJ1Y2tldDogQnVja2V0TmFtZSwKICAgICAgICAgIEtleTogb2JqZWN0S2V5LAogICAgICAgICAgU291cmNlRmlsZTogZS5maWxlLCAvL+iOt+WPlmZpbGXmlofku7YKICAgICAgICB9KQogICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdCk7CgogICAgICAgICAgaWYgKHJlc3VsdC5Db21tb25Nc2cuU3RhdHVzIDwgMzAwKSB7CiAgICAgICAgICAgIHRoYXQuJG1lc3NhZ2UoeyB0eXBlOiAic3VjY2VzcyIsIG1lc3NhZ2U6ICLkuIrkvKDmiJDlip8iIH0pOwogICAgICAgICAgICBjb25zb2xlLmxvZygiQ3JlYXRlIG9iamVjdDoiICsgb2JqZWN0S2V5ICsgIiBzdWNjZXNzZnVsbHkhXG4iKTsKICAgICAgICAgICAgdmFyIGh0dHB1cmwgPSBgaHR0cHM6Ly8ke0J1Y2tldE5hbWV9LiR7dXJsc2VydmVyfS8ke29iamVjdEtleX1gOwogICAgICAgICAgICBodHRwdXJsID0gY29udmVydENkblBhdGgoaHR0cHVybCk7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCLmlofku7bkuIrkvKAiLCBodHRwdXJsKTsKICAgICAgICAgICAgdGhhdC5mb3JtLnVuaWZ5U29jaWFsQ3JlZGl0Q29kZUZpbGVmaWxlTGlzdCA9IFt7IHVybDogaHR0cHVybCB9XTsKICAgICAgICAgICAgY29uc29sZS5sb2codGhhdC5mb3JtKTsKICAgICAgICAgICAgdGhhdC5mb3JtLnVuaWZ5U29jaWFsQ3JlZGl0Q29kZUZpbGUgPSBodHRwdXJsOwogICAgICAgICAgICB0aGF0LiRyZWZzLnVuaWZ5U29jaWFsQ3JlZGl0Q29kZUZpbGVmaWxlTGlzdFJlZi5jbGVhclZhbGlkYXRlKCk7IC8v5LiK5Lyg5a6M5riF6Zmk5qCh6aqMCiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9LAoKICAgIC8v6K645Y+v6K+B5omr5o+P5Lu2LemihOiniAogICAgaGFuZGxlUGljdHVyZUNhcmRQcmV2aWV3c2VydmljZVBlcm1pdEF0dGFjaG1lbnQoKSB7CiAgICAgIHRoaXMuc2VydmljZVBlcm1pdEF0dGFjaG1lbnREaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICAvL+iuuOWPr+ivgeaJq+aPj+S7ti3liKDpmaQKICAgIGhhbmRsZVJlbW92ZXNlcnZpY2VQZXJtaXRBdHRhY2htZW50KCkgewogICAgICB0aGlzLiRzZXQodGhpcy5mb3JtLCAic2VydmljZVBlcm1pdEF0dGFjaG1lbnQiLCAiIik7CiAgICAgIHRoaXMuJHNldCh0aGlzLmZvcm0sICJzZXJ2aWNlUGVybWl0QXR0YWNobWVudExpc3QiLCBbXSk7CiAgICAgIGNvbnNvbGUubG9nKCJ0aGlzLmZvcm0iLCB0aGlzLmZvcm0pOwogICAgfSwKICAgIC8v6K645Y+v6K+B5omr5o+P5Lu2LeS4iuS8oAogICAgdXBsb2FkSW1nc2VydmljZVBlcm1pdEF0dGFjaG1lbnQoZSkgewogICAgICBjb25zb2xlLmxvZygiZSIsIGUpOwogICAgICB2YXIgdGhhdCA9IHRoaXM7CiAgICAgIHZhciBkb21haW5JZCA9ICJkZWZhdWx0IjsgLy/kv53lrZjmnKzlnLDkvIHkuJppZAogICAgICBsZXQgbm93ID0gbmV3IERhdGUoKTsKICAgICAgbGV0IHkgPSBub3cuZ2V0RnVsbFllYXIoKTsKICAgICAgbGV0IG0gPQogICAgICAgIG5vdy5nZXRNb250aCgpICsgMSA8IDEwCiAgICAgICAgICA/ICIwIiArIChub3cuZ2V0TW9udGgoKSArIDEpCiAgICAgICAgICA6IG5vdy5nZXRNb250aCgpICsgMTsKICAgICAgbGV0IGQgPSBub3cuZ2V0RGF0ZSgpOwogICAgICBsZXQgbWQgPSBtICsgIi0iICsgZDsKICAgICAgdmFyIG9iamVjdEtleSA9IGB1cGxvYWRzLyR7eX0vJHttZH0vJHtkb21haW5JZH0vJHtub3cuZ2V0VGltZSgpfS8kewogICAgICAgIGUuZmlsZS5uYW1lCiAgICAgIH1gOwogICAgICB2YXIgb2JzID0gbmV3IE9ic0NsaWVudCh7CiAgICAgICAgYWNjZXNzX2tleV9pZDogYWssCiAgICAgICAgc2VjcmV0X2FjY2Vzc19rZXk6IHNrLAogICAgICAgIHNlcnZlcjogdXJsc2VydmVyLAogICAgICAgIHRpbWVvdXQ6IDYwICogNSwKICAgICAgfSk7CiAgICAgIG9icwogICAgICAgIC5wdXRPYmplY3QoewogICAgICAgICAgQnVja2V0OiBCdWNrZXROYW1lLAogICAgICAgICAgS2V5OiBvYmplY3RLZXksCiAgICAgICAgICBTb3VyY2VGaWxlOiBlLmZpbGUsIC8v6I635Y+WZmlsZeaWh+S7tgogICAgICAgIH0pCiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewogICAgICAgICAgY29uc29sZS5sb2cocmVzdWx0KTsKCiAgICAgICAgICBpZiAocmVzdWx0LkNvbW1vbk1zZy5TdGF0dXMgPCAzMDApIHsKICAgICAgICAgICAgdGhhdC4kbWVzc2FnZSh7IHR5cGU6ICJzdWNjZXNzIiwgbWVzc2FnZTogIuS4iuS8oOaIkOWKnyIgfSk7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJDcmVhdGUgb2JqZWN0OiIgKyBvYmplY3RLZXkgKyAiIHN1Y2Nlc3NmdWxseSFcbiIpOwogICAgICAgICAgICB2YXIgaHR0cHVybCA9IGBodHRwczovLyR7QnVja2V0TmFtZX0uJHt1cmxzZXJ2ZXJ9LyR7b2JqZWN0S2V5fWA7CiAgICAgICAgICAgIGh0dHB1cmwgPSBjb252ZXJ0Q2RuUGF0aChodHRwdXJsKTsKICAgICAgICAgICAgY29uc29sZS5sb2coIuaWh+S7tuS4iuS8oCIsIGh0dHB1cmwpOwogICAgICAgICAgICB0aGF0LmZvcm0uc2VydmljZVBlcm1pdEF0dGFjaG1lbnRMaXN0ID0gW3sgdXJsOiBodHRwdXJsIH1dOwogICAgICAgICAgICBjb25zb2xlLmxvZyh0aGF0LmZvcm0pOwogICAgICAgICAgICB0aGF0LmZvcm0uc2VydmljZVBlcm1pdEF0dGFjaG1lbnQgPSBodHRwdXJsOwogICAgICAgICAgICB0aGF0LiRyZWZzLnVuaWZ5U29jaWFsQ3JlZGl0Q29kZUZpbGVmaWxlTGlzdFJlZi5jbGVhclZhbGlkYXRlKCk7IC8v5LiK5Lyg5a6M5riF6Zmk5qCh6aqMCiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9LAogICAgc2VydmljZVNjb3BlTGlzdENoYW5nZSgpIHt9LAogICAgLy/moLnmja7nm5HnrqHlnLDljLrmlLnlj5jmn6Xor6Lnm5HnrqHmnLrmnoTmjqXlj6MKICAgIHBsYWNlT2ZTdXBlcnZpc2VDb2RlQ2hhbmdlKHZhbHVlKSB7CiAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTsKICAgICAgY29uc29sZS5sb2coCiAgICAgICAgInRoaXMuZm9ybS5zdXBlcnZpc2VEZXBhcnRJZEFyciIsCiAgICAgICAgdGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkQXJyCiAgICAgICk7CiAgICAgIHRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlID0gewogICAgICAgIHByb3ZpbmNlOiB7IGNvZGU6IHZhbHVlWzBdLCBuYW1lOiBDb2RlVG9UZXh0W3ZhbHVlWzBdXSB9LAogICAgICAgIGNpdHk6IHsgY29kZTogdmFsdWVbMV0sIG5hbWU6IENvZGVUb1RleHRbdmFsdWVbMV1dIH0sCiAgICAgICAgZGlzdHJpY3Q6IHsgY29kZTogdmFsdWVbMl0sIG5hbWU6IENvZGVUb1RleHRbdmFsdWVbMl1dIH0sCiAgICAgIH07CiAgICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlQ29kZSk7CiAgICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybSk7CiAgICAgIGlmICh0aGlzLmZvcm0ucGxhY2VPZlN1cGVydmlzZUNvZGUpIHsKICAgICAgICAvL+ebkeeuoeWcsOWMui0t55yB5biC5Yy657yW56CBCiAgICAgICAgbGV0IHByb3ZpZGVDb2RlID0gdGhpcy5mb3JtLnBsYWNlT2ZTdXBlcnZpc2VDb2RlWzBdOyAvL+iOt+WPluecge+8jOagueaNruecgeiOt+WPluebkeeuoeacuuaehOWIl+ihqAogICAgICAgIHBsYWNlT2ZTdXBlcnZpc2VDb2RlQ2hhbmdlRGVwYXJ0SWRBcGkoCiAgICAgICAgICBwcm92aWRlQ29kZSwKICAgICAgICAgIHRoaXMuaW5kdXN0cnlDb2RlCiAgICAgICAgKS50aGVuKChyZXNwb25zZSkgPT4gewogICAgICAgICAgY29uc29sZS5sb2coIuebkeeuoeacuuaehCIsIHJlc3BvbnNlKTsKICAgICAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB7CiAgICAgICAgICAgIHRoaXMuJHNldCh0aGlzLmZvcm0sICJzdXBlcnZpc2VEZXBhcnRJZG9wdGlvbnMiLCBbcmVzcG9uc2UuZGF0YV0pOyAvL+aVsOe7hAogICAgICAgICAgICBjb25zb2xlLmxvZygKICAgICAgICAgICAgICAidGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkb3B0aW9ucyIsCiAgICAgICAgICAgICAgdGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkb3B0aW9ucwogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtTGlzdCkgJiYKICAgICAgICAgICAgICB0aGlzLmZvcm0uc3VwZXJ2aXNlRGVwYXJ0SWRvcHRpb25zICYmCiAgICAgICAgICAgICAgdGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgIGxldCBhcnIgPSB0aGlzLmdldFBhcmVudHNCeUlkc3VwZXJ2aXNlRGVwYXJ0SWRBcnIoCiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc3VwZXJ2aXNlRGVwYXJ0SWRvcHRpb25zLAogICAgICAgICAgICAgICAgdGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkCiAgICAgICAgICAgICAgKTsgLy/lm57mmL7nm5HnrqHmnLrmnoTvvIzmi7zmjqVzdXBlcnZpc2VEZXBhcnRJZEFycuaVsOe7hAogICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJhcnIiLCBhcnIpOwogICAgICAgICAgICAgIC8vIHRoaXMuZm9ybS5zdXBlcnZpc2VEZXBhcnRJZEFyciA9IGFycgogICAgICAgICAgICAgIHRoaXMuJHNldCh0aGlzLmZvcm0sICJzdXBlcnZpc2VEZXBhcnRJZEFyciIsIGFycik7CiAgICAgICAgICAgICAgY29uc29sZS5sb2coInRoaXMuZm9ybTg4IiwgdGhpcy5mb3JtKTsKICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygndGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkQXJyMicsIHRoaXMuZm9ybS5zdXBlcnZpc2VEZXBhcnRJZEFycikKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMuZm9ybSwgInN1cGVydmlzZURlcGFydElkb3B0aW9ucyIsIFtdKTsKICAgICAgICAgICAgdGhpcy4kc2V0KHRoaXMuZm9ybSwgInN1cGVydmlzZURlcGFydElkQXJyIiwgW10pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgLy/kuIvmi4npgInmi6nnm5HnrqHmnLrmnoTojrflj5blkI3np7AKICAgIHN1cGVydmlzZURlcGFydElkQ2hhbmdlKHZhbHVlKSB7CiAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTsKICAgICAgbGV0IGxhYmVsTmFtZSA9IHRoaXMuJHJlZnMubXlDYXNjYWRlci5nZXRDaGVja2VkTm9kZXMoKVswXS5wYXRoTGFiZWxzOyAvL+iOt+WPlmVsLWNhc2NhZGVy6YCJ5Lit55qE5Lit5paHbGFiZWwKICAgICAgY29uc29sZS5sb2cobGFiZWxOYW1lKTsKICAgICAgdGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkID0gdmFsdWUgJiYgdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV07CiAgICAgIHRoaXMuZm9ybS5zdXBlcnZpc2VEZXBhcnROYW1lID0gbGFiZWxOYW1lW2xhYmVsTmFtZS5sZW5ndGggLSAxXTsKICAgICAgY29uc29sZS5sb2codGhpcy5mb3JtKTsKICAgICAgY29uc29sZS5sb2coCiAgICAgICAgInRoaXMuZm9ybS5zdXBlcnZpc2VEZXBhcnRJZEFycjExIiwKICAgICAgICB0aGlzLmZvcm0uc3VwZXJ2aXNlRGVwYXJ0SWRBcnIKICAgICAgKTsKICAgIH0sCiAgICBnZXRQYXJlbnRzQnlJZHN1cGVydmlzZURlcGFydElkQXJyKGxpc3QsIGlkKSB7CiAgICAgIC8vIGRlYnVnZ2VyCiAgICAgIGZvciAobGV0IGkgaW4gbGlzdCkgewogICAgICAgIGlmIChsaXN0W2ldICYmIGxpc3RbaV0uaWQgPT0gaWQpIHsKICAgICAgICAgIC8v5p+l6K+i5Yiw5bCx6L+U5Zue6K+l5pWw57uE5a+56LGh55qEdmFsdWUKICAgICAgICAgIHJldHVybiBbbGlzdFtpXS5pZF07CiAgICAgICAgfQogICAgICAgIGlmIChsaXN0W2ldLmNoaWxkcmVuKSB7CiAgICAgICAgICBsZXQgbm9kZSA9IHRoaXMuZ2V0UGFyZW50c0J5SWRzdXBlcnZpc2VEZXBhcnRJZEFycigKICAgICAgICAgICAgbGlzdFtpXS5jaGlsZHJlbiwKICAgICAgICAgICAgaWQKICAgICAgICAgICk7CiAgICAgICAgICAvLyBkZWJ1Z2dlcgogICAgICAgICAgaWYgKG5vZGUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAvL+afpeivouWIsOaKiueItuiKguaKiueItuiKgueCueWKoOWIsOaVsOe7hOWJjemdogogICAgICAgICAgICBub2RlLnVuc2hpZnQobGlzdFtpXS5pZCk7CiAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIC8v5qC55o2u55uR566h5Zyw5Yy677yM5Lyg6YCS55yB57yW56CB77yM6I635Y+W55uR566h5py65p6E5YiX6KGo77yM5Zyo5qC55o2u55uR566h5py65p6E57yW56CB5om+5Ye655uR566h5py65p6E5ZCN56ewCiAgICBhc3luYyBzdXBlcnZpc2VEZXBhcnRDb2RlTmFtZSgpIHsKICAgICAgbGV0IHByb3ZpZGVDb2RlID0gdGhpcy5mb3JtLnBsYWNlT2ZTdXBlcnZpc2VDb2RlWzBdOwogICAgICBhd2FpdCBwbGFjZU9mU3VwZXJ2aXNlQ29kZUNoYW5nZURlcGFydElkQXBpKAogICAgICAgIHByb3ZpZGVDb2RlLAogICAgICAgIHRoaXMuaW5kdXN0cnlDb2RlCiAgICAgICkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkgewogICAgICAgICAgdGhpcy5nZXREZXBhcnROYW1lRm9yRGVwYXJ0Q29kZShbcmVzcG9uc2UuZGF0YV0pOyAvL+mAkuW9kumBjeWOhuiOt+WPluebkeeuoeWQjeensAogICAgICAgICAgY29uc29sZS5sb2coInRoaXMuZm9ybTEyIHh4IiwgdGhpcy5mb3JtKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIC8v6YCS5b2S6YGN5Y6G6I635Y+W55uR566h5ZCN56ewCiAgICBnZXREZXBhcnROYW1lRm9yRGVwYXJ0Q29kZShsaXN0KSB7CiAgICAgIGZvciAobGV0IGkgaW4gbGlzdCkgewogICAgICAgIGlmIChsaXN0W2ldICYmIGxpc3RbaV0uaWQgPT0gdGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy4kc2V0KHRoaXMuZm9ybSwgInN1cGVydmlzZURlcGFydE5hbWUiLCBsaXN0W2ldLm5hbWUpOwogICAgICAgIH0KICAgICAgICBpZiAobGlzdFtpXS5jaGlsZHJlbikgewogICAgICAgICAgdGhpcy5nZXREZXBhcnROYW1lRm9yRGVwYXJ0Q29kZShsaXN0W2ldLmNoaWxkcmVuKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICAvL+S/neWtmAogICAgYXN5bmMgc3VibWl0Rm9ybSgpIHsKICAgICAgaWYgKHRoaXMuc3RhdHVzID09ICLlrqHmibnpgJrov4ciKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7IHR5cGU6ICJlcnJvciIsIG1lc3NhZ2U6ICLlrqHmibnpgJrov4fkuI3lj6/ku6Xkv67mlLkiIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBjb25zb2xlLmxvZyh0aGlzLmZvcm0pOwogICAgICAvLyDms6jlhozlnLDljLoKICAgICAgaWYgKHRoaXMuZm9ybS5wbGFjZU9mUmVnaXN0ZXJDb2RlKSB7CiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtLnBsYWNlT2ZSZWdpc3RlckNvZGU7CiAgICAgICAgdGhpcy5mb3JtLnBsYWNlT2ZSZWdpc3RlciA9IHsKICAgICAgICAgIHByb3ZpbmNlOiB7IGNvZGU6IHZhbHVlWzBdLCBuYW1lOiBDb2RlVG9UZXh0W3ZhbHVlWzBdXSB9LAogICAgICAgICAgY2l0eTogeyBjb2RlOiB2YWx1ZVsxXSwgbmFtZTogQ29kZVRvVGV4dFt2YWx1ZVsxXV0gfSwKICAgICAgICAgIGRpc3RyaWN0OiB7IGNvZGU6IHZhbHVlWzJdLCBuYW1lOiBDb2RlVG9UZXh0W3ZhbHVlWzJdXSB9LAogICAgICAgICAgYWRkcmVzczogdGhpcy5mb3JtLnBsYWNlT2ZSZWdpc3Rlci5hZGRyZXNzLAogICAgICAgIH07CiAgICAgIH0KCiAgICAgIC8vIOWKnuWFrOWcsOWMuuOAgee7j+iQpeWcsOWMuuaVsOaNruWkhOeQhgogICAgICBpZiAodGhpcy5mb3JtLnBsYWNlT2ZCdXNpbmVzc0NvZGUpIHsKICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmZvcm0ucGxhY2VPZkJ1c2luZXNzQ29kZTsKICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZkJ1c2luZXNzID0gewogICAgICAgICAgcHJvdmluY2U6IHsgY29kZTogdmFsdWVbMF0sIG5hbWU6IENvZGVUb1RleHRbdmFsdWVbMF1dIH0sCiAgICAgICAgICBjaXR5OiB7IGNvZGU6IHZhbHVlWzFdLCBuYW1lOiBDb2RlVG9UZXh0W3ZhbHVlWzFdXSB9LAogICAgICAgICAgZGlzdHJpY3Q6IHsgY29kZTogdmFsdWVbMl0sIG5hbWU6IENvZGVUb1RleHRbdmFsdWVbMl1dIH0sCiAgICAgICAgICBhZGRyZXNzOiB0aGlzLmZvcm0ucGxhY2VPZkJ1c2luZXNzLmFkZHJlc3MsCiAgICAgICAgfTsKICAgICAgfQoKICAgICAgLy8g5YaF5L+d6KGM5Lia5Li7566h5Y2V5L2N5omA5Zyo5Zyw5Yy6CiAgICAgIGlmICh0aGlzLmZvcm0ucGxhY2VPZkNvbXBldGVudFVuaXRDb2RlKSB7CiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtLnBsYWNlT2ZDb21wZXRlbnRVbml0Q29kZTsKICAgICAgICB0aGlzLmZvcm0ucGxhY2VPZkNvbXBldGVudFVuaXQgPSB7CiAgICAgICAgICBwcm92aW5jZTogeyBjb2RlOiB2YWx1ZVswXSwgbmFtZTogQ29kZVRvVGV4dFt2YWx1ZVswXV0gfSwKICAgICAgICAgIGNpdHk6IHsgY29kZTogdmFsdWVbMV0sIG5hbWU6IENvZGVUb1RleHRbdmFsdWVbMV1dIH0sCiAgICAgICAgICBkaXN0cmljdDogeyBjb2RlOiB2YWx1ZVsyXSwgbmFtZTogQ29kZVRvVGV4dFt2YWx1ZVsyXV0gfSwKICAgICAgICAgIGFkZHJlc3M6IHRoaXMuZm9ybS5wbGFjZU9mQ29tcGV0ZW50VW5pdC5hZGRyZXNzLAogICAgICAgIH07CiAgICAgIH0KCiAgICAgIC8vIOS/neWuieihjOS4muebkeeuoeWcsOWMugogICAgICBpZiAodGhpcy5mb3JtLnBsYWNlT2ZTdXBlcnZpc2VDb2RlKSB7CiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5mb3JtLnBsYWNlT2ZTdXBlcnZpc2VDb2RlOwogICAgICAgIHRoaXMuZm9ybS5wbGFjZU9mU3VwZXJ2aXNlID0gewogICAgICAgICAgcHJvdmluY2U6IHsgY29kZTogdmFsdWVbMF0sIG5hbWU6IENvZGVUb1RleHRbdmFsdWVbMF1dIH0sCiAgICAgICAgICBjaXR5OiB7IGNvZGU6IHZhbHVlWzFdLCBuYW1lOiBDb2RlVG9UZXh0W3ZhbHVlWzFdXSB9LAogICAgICAgICAgZGlzdHJpY3Q6IHsgY29kZTogdmFsdWVbMl0sIG5hbWU6IENvZGVUb1RleHRbdmFsdWVbMl1dIH0sCiAgICAgICAgfTsKICAgICAgfQogICAgICBpZiAodGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkQXJyKSB7CiAgICAgICAgdGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkID0KICAgICAgICAgIHRoaXMuZm9ybS5zdXBlcnZpc2VEZXBhcnRJZEFyclsKICAgICAgICAgICAgdGhpcy5mb3JtLnN1cGVydmlzZURlcGFydElkQXJyLmxlbmd0aCAtIDEKICAgICAgICAgIF07CiAgICAgIH0KICAgICAgdGhpcy4kcmVmc1sicnVsZUZvcm0iXS52YWxpZGF0ZShhc3luYyAodmFsaWQpID0+IHsKICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgIGlmICghdGhpcy5mb3JtLnN1cGVydmlzZURlcGFydE5hbWUpIHsKICAgICAgICAgICAgYXdhaXQgdGhpcy5zdXBlcnZpc2VEZXBhcnRDb2RlTmFtZSgpOyAvLyDmoLnmja7nm5HnrqHlnLDljLrvvIzkvKDpgJLnnIHnvJbnoIHvvIzojrflj5bnm5HnrqHmnLrmnoTliJfooajvvIzlnKjmoLnmja7nm5HnrqHmnLrmnoTnvJbnoIHmib7lh7rnm5HnrqHmnLrmnoTlkI3np7AKICAgICAgICAgIH0KICAgICAgICAgIGNvbnNvbGUubG9nKCJ0aGlzLmZvcm0xMSIsIHRoaXMuZm9ybSk7CiAgICAgICAgICBsZXQgb2JqID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtKTsKICAgICAgICAgIGxldCBvYmoyID0gSlNPTi5wYXJzZShvYmopOwogICAgICAgICAgZGVsZXRlIG9iajIudW5pZnlTb2NpYWxDcmVkaXRDb2RlRmlsZWZpbGVMaXN0OwogICAgICAgICAgZGVsZXRlIG9iajIuc2VydmljZVBlcm1pdEF0dGFjaG1lbnRMaXN0OwogICAgICAgICAgZGVsZXRlIG9iajIuc3VwZXJ2aXNlRGVwYXJ0SWRvcHRpb25zOwogICAgICAgICAgZGVsZXRlIG9iajIucGxhY2VPZlN1cGVydmlzZUNvZGU7CiAgICAgICAgICBkZWxldGUgb2JqMi5zdXBlcnZpc2VEZXBhcnRJZEFycjsKICAgICAgICAgIGF3YWl0IEFwcHJvdmVTdWJtaXRBcGkob2JqMiwgdGhpcy5vcmdhbml6YXRpb25JZCkudGhlbigocmVzcG9uc2UpID0+IHsKICAgICAgICAgICAgY29uc29sZS5sb2coIuaPkOS6pCIsIHJlc3BvbnNlKTsKICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHsKICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsgdHlwZTogInN1Y2Nlc3MiLCBtZXNzYWdlOiAi5L+d5a2Y5oiQ5YqfIiB9KTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZygidGhpcyIsIHRoaXMpOwogICAgICAgICAgICAgIHRoaXMuJHBhcmVudC4kcGFyZW50LmRyYXdlciA9IGZhbHNlOwogICAgICAgICAgICAgIHRoaXMuJHBhcmVudC4kcGFyZW50LmFwcHJvdmVPcmdUYWJsZUxpc3QoKTsgLy/liLfmlrDliJfooagKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoeyB0eXBlOiAiZXJyb3IiLCBtZXNzYWdlOiAi6K+36L6T5YWl5b+F5aGr6aG5IiB9KTsKICAgICAgICAgIGNvbnNvbGUubG9nKCJlcnJvciBzdWJtaXQhISIpOwogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogIH0sCn07Cg=="},null]}