You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
96 KiB
1 line
96 KiB
{"remainingRequest":"D:\\mywork\\buycode\\code1\\springboot301400\\306\\分离\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\mywork\\buycode\\code1\\springboot301400\\306\\分离\\admin\\src\\views\\modules\\forum\\list.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\mywork\\buycode\\code1\\springboot301400\\306\\分离\\admin\\src\\views\\modules\\forum\\list.vue","mtime":1649818275869},{"path":"D:\\mywork\\buycode\\code1\\springboot301400\\306\\分离\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1720078528573},{"path":"D:\\mywork\\buycode\\code1\\springboot301400\\306\\分离\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":1720078529261},{"path":"D:\\mywork\\buycode\\code1\\springboot301400\\306\\分离\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1720078528573},{"path":"D:\\mywork\\buycode\\code1\\springboot301400\\306\\分离\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":1720078529317}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBBZGRPclVwZGF0ZSBmcm9tICIuL2FkZC1vci11cGRhdGUiOwppbXBvcnQgc3R5bGVKcyBmcm9tICIuLi8uLi8uLi91dGlscy9zdHlsZS5qcyI7CmltcG9ydCB1dGlsc0pzIGZyb20gIi4uLy4uLy4uL3V0aWxzL3V0aWxzLmpzIjsKCmV4cG9ydCBkZWZhdWx0IHsKICAgIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICAgIHNlYXJjaEZvcm06IHsKICAgICAgICAgICAga2V5OiAiIgogICAgICAgIH0sCiAgICAgICAgc2Vzc2lvblRhYmxlIDogIiIsLy/nmbvlvZXotKbmiLfmiYDlnKjooajlkI0KICAgICAgICByb2xlIDogIiIsLy/mnYPpmZAKICAgICAgICB1c2VySWQ6IiIsLy/lvZPliY3nmbvlvZXkurrnmoRpZAovL+e6p+iBlOihqOS4i+aLieahhuaQnOe0ouadoeS7tgovL+W9k+WJjeihqOS4i+aLieahhuaQnOe0ouadoeS7tgogICAgICAgIGZvcm06ewogICAgICAgICAgICBpZCA6IG51bGwsCiAgICAgICAgICAgIGZvcnVtTmFtZSA6IG51bGwsCiAgICAgICAgICAgIHlvbmdodUlkIDogbnVsbCwKICAgICAgICAgICAgdXNlcnNJZCA6IG51bGwsCiAgICAgICAgICAgIGZvcnVtQ29udGVudCA6IG51bGwsCiAgICAgICAgICAgIHN1cGVySWRzIDogbnVsbCwKICAgICAgICAgICAgZm9ydW1TdGF0ZVR5cGVzIDogbnVsbCwKICAgICAgICAgICAgaW5zZXJ0VGltZSA6IG51bGwsCiAgICAgICAgICAgIHVwZGF0ZVRpbWUgOiBudWxsLAogICAgICAgICAgICBjcmVhdGVUaW1lIDogbnVsbCwKICAgICAgICB9LAogICAgICAgIGRhdGFMaXN0OiBbXSwKICAgICAgICBwYWdlSW5kZXg6IDEsCiAgICAgICAgcGFnZVNpemU6IDEwLAogICAgICAgIHRvdGFsUGFnZTogMCwKICAgICAgICBkYXRhTGlzdExvYWRpbmc6IGZhbHNlLAogICAgICAgIGRhdGFMaXN0U2VsZWN0aW9uczogW10sCiAgICAgICAgc2hvd0ZsYWc6IHRydWUsCiAgICAgICAgc2ZzaFZpc2lhYmxlOiBmYWxzZSwKICAgICAgICBzaEZvcm06IHt9LAogICAgICAgIGNoYXJ0VmlzaWFibGU6IGZhbHNlLAogICAgICAgIGVjaGFydHNEYXRlOiBuZXcgRGF0ZSgpLC8vZWNoYXJ0c+eahOaXtumXtOafpeivouWtl+autQogICAgICAgIGFkZE9yVXBkYXRlRmxhZzpmYWxzZSwKICAgICAgICBjb250ZW50czpudWxsLAogICAgICAgIGxheW91dHM6ICcnLAoKICAgICAgICBmb3J1bVJlcGx5RGlhbG9nVmlzaWJsZSA6IGZhbHNlLC8v6K665Z2b5Zue5aSN5qih5oCB5qGGCiAgICAgICAgZm9ydW1SZXBseUluZm9EaWFsb2dWaXNpYmxlIDogZmFsc2UsLy/orrrlnZvlm57lpI3or6bmg4XmqKHmgIHmoYYKICAgICAgICBzdXBlcklkcyA6ICIiLC8v5biW5a2QaWQKICAgICAgICBmb3J1bVRpdGxlIDogIiIsLy/luJblrZDmoIfpopgKICAgICAgICBmb3J1bUNvbnRlbnQgOiAiIiwvL+W4luWtkOWGheWuuQogICAgICAgIGZvcnVtUmVwbHlDb250ZW50IDogIiIsLy/luJblrZDlm57lpI3lhoXlrrkKICAgICAgICBmb3J1bVJlcGx5SW5mb0NvbnRlbnQgOiAiIiwvL+W4luWtkOafkOS4quWbnuWkjeivpuaDhSDlhagKICAgICAgICBmb3J1bURhdGEgOiBbXSwvL+iuuuWdm+WbnuWkjeaVsOaNrumbhuWQiAoKICAgICAgICAvL+WvvOWHumV4Y2VsCiAgICAgICAganNvbl9maWVsZHM6IHsKICAgICAgICAgICAgLy/nuqfogZTooajlrZfmrrUKICAgICAgICAgICAgICAgICAn55So5oi35aeT5ZCNJzogJ3lvbmdodU5hbWUnLAogICAgICAgICAgICAgICAgICflpLTlg48nOiAneW9uZ2h1UGhvdG8nLAogICAgICAgICAgICAgICAgICfmiYvmnLrlj7cnOiAneW9uZ2h1UGhvbmUnLAogICAgICAgICAgICAgICAgICfnlLXlrZDpgq7nrrEnOiAneW9uZ2h1RW1haWwnLAogICAgICAgICAgICAgICAgICfkvZnpop0nOiAnbmV3TW9uZXknLAogICAgICAgICAgICAgICAgICfnlKjmiLflkI0nOiAndXNlcm5hbWUnLAogICAgICAgICAgICAgICAgICfop5LoibInOiAncm9sZScsCiAgICAgICAgICAgICAgICAgJ+aWsOWinuaXtumXtCc6ICdhZGR0aW1lJywKICAgICAgICAgICAgLy/mnKzooajlrZfmrrUKICAgICAgICAgICAgICAgICAn5biW5a2Q5qCH6aKYJzogImZvcnVtTmFtZSIsCiAgICAgICAgICAgICAgICAgJ+eItmlkJzogInN1cGVySWRzIiwKICAgICAgICAgICAgICAgICAn5biW5a2Q54q25oCBJzogImZvcnVtU3RhdGVUeXBlcyIsCiAgICAgICAgICAgICAgICAgJ+WPkeW4luaXtumXtCc6ICJpbnNlcnRUaW1lIiwKICAgICAgICAgICAgICAgICAn5L+u5pS55pe26Ze0JzogInVwZGF0ZVRpbWUiLAogICAgICAgIH0sCgogICAgICAgIH07CiAgICB9LAogICAgY3JlYXRlZCgpIHsKICAgICAgICB0aGlzLmNvbnRlbnRzID0gc3R5bGVKcy5saXN0U3R5bGUoKTsKICAgICAgICB0aGlzLmluaXQoKTsKICAgICAgICB0aGlzLmdldERhdGFMaXN0KCk7CiAgICAgICAgdGhpcy5jb250ZW50U3R5bGVDaGFuZ2UoKQogICAgfSwKICAgIG1vdW50ZWQoKSB7CiAgICAgICAgLy/ojrflj5blvZPliY3nmbvlvZXnlKjmiLfnmoTkv6Hmga8KICAgICAgICB0aGlzLnNlc3Npb25UYWJsZSA9IHRoaXMuJHN0b3JhZ2UuZ2V0KCJzZXNzaW9uVGFibGUiKTsKICAgICAgICB0aGlzLnJvbGUgPSB0aGlzLiRzdG9yYWdlLmdldCgicm9sZSIpOwogICAgICAgIHRoaXMudXNlcklkID0gdGhpcy4kc3RvcmFnZS5nZXQoInVzZXJJZCIpOwoKICAgIH0sCiAgICBmaWx0ZXJzOiB7CiAgICAgICAgaHRtbGZpbHRlcjogZnVuY3Rpb24gKHZhbCkgewogICAgICAgICAgICByZXR1cm4gdmFsLnJlcGxhY2UoLzxbXj5dKj4vZykucmVwbGFjZSgvdW5kZWZpbmVkL2csJycpOwogICAgICAgIH0KICAgIH0sCiAgICBjb21wb25lbnRzOiB7CiAgICAgICAgQWRkT3JVcGRhdGUsCiAgICB9LAogICAgY29tcHV0ZWQ6IHsKICAgIH0sCiAgICBtZXRob2RzOiB7CiAgICAgICAgY2hhcnREaWFsb2coKSB7CiAgICAgICAgICAgIGxldCBfdGhpcyA9IHRoaXM7CiAgICAgICAgICAgIGxldCBwYXJhbXMgPSB7CiAgICAgICAgICAgICAgICBkYXRlRm9ybWF0IDoiJVkiLCAvLyVZLSVtCiAgICAgICAgICAgICAgICByaXFpIDpfdGhpcy5lY2hhcnRzRGF0ZS5nZXRGdWxsWWVhcigpLAogICAgICAgICAgICAgICAgLy8gcmlxaSA6X3RoaXMuZWNoYXJ0c0RhdGUuZ2V0RnVsbFllYXIoKSsiLSIrKF90aGlzLmVjaGFydHNEYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoX3RoaXMuZWNoYXJ0c0RhdGUuZ2V0TW9udGgoKSArIDEpIDogX3RoaXMuZWNoYXJ0c0RhdGUuZ2V0TW9udGgoKSArIDEpLAogICAgICAgICAgICAgICAgdGhpc1RhYmxlIDogey8v5b2T5YmN6KGoCiAgICAgICAgICAgICAgICAgICAgdGFibGVOYW1lIDonZm9ydW0nLC8v5b2T5YmN6KGo6KGo5ZCNLAogICAgICAgICAgICAgICAgICAgIHN1bUNvbHVtIDogJ2ZvcnVtX251bWJlcicsIC8v5rGC5ZKM5a2X5q61CiAgICAgICAgICAgICAgICAgICAgZGF0ZSA6ICdpbnNlcnRfdGltZScsLy/liIbnu4Tml6XmnJ/lrZfmrrUKICAgICAgICAgICAgICAgICAgICAvLyBzdHJpbmcgOiAnZm9ydW1fbmFtZScsLy/liIbnu4TlrZfnrKbkuLLlrZfmrrUKICAgICAgICAgICAgICAgICAgICAvLyB0eXBlcyA6ICdmb3J1bV90eXBlcycsLy/liIbnu4TkuIvmi4nmoYblrZfmrrUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAvLyBqb2luVGFibGUgOiB7Ly/nuqfogZTooajvvIjlj6/ku6XkuI3lrZjlnKjvvIkKICAgICAgICAgICAgICAgIC8vICAgICB0YWJsZU5hbWUgOid5b25naHUnLC8v57qn6IGU6KGo6KGo5ZCNCiAgICAgICAgICAgICAgICAvLyAgICAgLy8gZGF0ZSA6ICdpbnNlcnRfdGltZScsLy/liIbnu4Tml6XmnJ/lrZfmrrUKICAgICAgICAgICAgICAgIC8vICAgICBzdHJpbmcgOiAneW9uZ2h1X25hbWUnLC8v5YiG57uE5a2X56ym5Liy5a2X5q61CiAgICAgICAgICAgICAgICAvLyAgICAgLy8gdHlwZXMgOiAneW9uZ2h1X3R5cGVzJywvL+WIhue7hOS4i+aLieahhuWtl+autQogICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICB9CiAgICAgICAgICAgIF90aGlzLmNoYXJ0VmlzaWFibGUgPSB0cnVlOwogICAgICAgICAgICBfdGhpcy4kbmV4dFRpY2soKCkgPT4gewogICAgICAgICAgICAgICAgdmFyIHN0YXRpc3RpYyA9IHRoaXMuJGVjaGFydHMuaW5pdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhdGlzdGljIiksICdtYWNhcm9ucycpOwogICAgICAgICAgICAgICAgdGhpcy4kaHR0cCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiAiYmFyU3VtIiwKICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICJnZXQiLAogICAgICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zCiAgICAgICAgICAgICAgICB9KS50aGVuKCh7ZGF0YX0pID0+IHsKICAgICAgICAgICAgICAgICAgICBpZihkYXRhICYmIGRhdGEuY29kZSA9PT0gMCl7CgogICAgICAgICAgICAgICAgICAgICAgICAvL+afseeKtuWbviDmsYLlkowg5bey5oiQ5Yqf5L2/55SoCiAgICAgICAgICAgICAgICAgICAgICAgIC8vc3RhcnQKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHlBeGlzTmFtZSA9ICLmlbDlgLwiOy8v5qC55o2u5p+l6K+i5pWw5o2u5YW35L2T5pS5KOWNleWIl+imgeaUuSzlpJrliJfkuI3mlLkpCiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4QXhpc05hbWUgPSAi5pyI5Lu9IjsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlcmllcyA9IFtdOy8v5YW35L2T5pWw5o2u5YC8CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZGF0YS55QXhpcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcE1hcCA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVtcE1hcC5uYW1lPSBbIuaVsOWAvCJdOy8v5qC55o2u5p+l6K+i5pWw5o2u5YW35L2T5pS5KOWNleWIl+imgeaUuSzlpJrliJfkuI3mlLkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wTWFwLm5hbWU9ZGF0YS5kYXRhLmxlZ2VuZFtpbmRleF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wTWFwLnR5cGU9J2Jhcic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wTWFwLmRhdGE9aXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllcy5wdXNoKHRlbXBNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgfSkKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcHRpb24gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcjogJ2F4aXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4aXNQb2ludGVyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdjcm9zcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzU3R5bGU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzk5OScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYm94OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkYXRhVmlldzogeyBzaG93OiB0cnVlLCByZWFkT25seTogZmFsc2UgfSwgIC8vIOaVsOaNruafpeeciwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdpY1R5cGU6IHsgc2hvdzogdHJ1ZSwgdHlwZTogWydsaW5lJywgJ2JhciddIH0sLy/liIfmjaLlm77lvaLlsZXnpLrmlrnlvI8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdG9yZTogeyBzaG93OiB0cnVlIH0sIC8vIOWIt+aWsAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlQXNJbWFnZTogeyBzaG93OiB0cnVlIH0vL+S/neWtmAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLmRhdGEubGVnZW5kLy/moIfpopggIOWPr+S7peeCueWHu+WvvOiHtOafkOS4gOWIl+aVsOaNrua2iOWksQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhBeGlzOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnY2F0ZWdvcnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB4QXhpc05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEuZGF0YS54QXhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhpc1BvaW50ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzaGFkb3cnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeUF4aXM6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd2YWx1ZScsLy/kuI3og73mlLkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogeUF4aXNOYW1lLC8veei9tOWNleS9jQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGlzTGFiZWw6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcjogJ3t2YWx1ZX0nIC8vIOWQjue8gAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmllczpzZXJpZXMvL+WFt+S9k+aVsOaNrgogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAvLyDkvb/nlKjliJrmjIflrprnmoTphY3nva7pobnlkozmlbDmja7mmL7npLrlm77ooajjgIIKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljLnNldE9wdGlvbihvcHRpb24sdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8v5qC55o2u56qX5Y+j55qE5aSn5bCP5Y+Y5Yqo5Zu+6KGoCiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYy5yZXNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9lbmQKICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuaKpeihqOacquafpeivouWIsOaVsOaNriIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMTUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vLy/ppbznirblm74KICAgICAgICAgICAgLy9fdGhpcy5jaGFydFZpc2lhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgLy8gdGhpcy4kbmV4dFRpY2soKCk9PnsKICAgICAgICAgICAgLy8gICAgIHZhciBzdGF0aXN0aWMgPSB0aGlzLiRlY2hhcnRzLmluaXQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXRpc3RpYyIpLCdtYWNhcm9ucycpOwogICAgICAgICAgICAvLyAgICAgbGV0IHBhcmFtcyA9IHsKICAgICAgICAgICAgLy8gICAgICAgICB0YWJsZU5hbWU6ICJmb3J1bSIsCiAgICAgICAgICAgIC8vICAgICAgICAgZ3JvdXBDb2x1bW46ICJmb3J1bV90eXBlcyIsCiAgICAgICAgICAgIC8vICAgICB9CiAgICAgICAgICAgIC8vICAgICB0aGlzLiRodHRwKHsKICAgICAgICAgICAgLy8gICAgICAgICB1cmw6ICJuZXdTZWxlY3RHcm91cENvdW50IiwKICAgICAgICAgICAgLy8gICAgICAgICBtZXRob2Q6ICJnZXQiLAogICAgICAgICAgICAvLyAgICAgICAgIHBhcmFtczogcGFyYW1zCiAgICAgICAgICAgIC8vICAgICB9KS50aGVuKCh7ZGF0YX0pID0+IHsKICAgICAgICAgICAgLy8gICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNvZGUgPT09IDApIHsKICAgICAgICAgICAgLy8gICAgICAgICAgICAgbGV0IHJlcyA9IGRhdGEuZGF0YTsKICAgICAgICAgICAgLy8gICAgICAgICAgICAgbGV0IHhBeGlzID0gW107CiAgICAgICAgICAgIC8vICAgICAgICAgICAgIGxldCB5QXhpcyA9IFtdOwogICAgICAgICAgICAvLyAgICAgICAgICAgICBsZXQgcEFycmF5ID0gW10KICAgICAgICAgICAgLy8gICAgICAgICAgICAgdmFyIG9wdGlvbiA9IHt9OwogICAgICAgICAgICAvLyAgICAgICAgICAgICBmb3IobGV0IGk9MDtpPHJlcy5sZW5ndGg7aSsrKXsKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIHhBeGlzLnB1c2gocmVzW2ldLm5hbWUpOwogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgeUF4aXMucHVzaChyZXNbaV0udmFsdWUpOwogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgcEFycmF5LnB1c2goewogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZXNbaV0udmFsdWUsCiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgbmFtZTogcmVzW2ldLm5hbWUKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICBvcHRpb24gPSB7CiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHsKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ+S/nemZqeWQiOWQjOexu+Wei+e7n+iuoScsCiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICdjZW50ZXInCiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXI6ICdpdGVtJywKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyOiAne2J9IDoge2N9ICh7ZH0lKScKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHNlcmllczogWwogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAncGllJywKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGl1czogJzU1JScsCiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IFsnNTAlJywgJzYwJSddLAogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcEFycmF5LAogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1waGFzaXM6IHsKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU3R5bGU6IHsKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Qmx1cjogMTAsCiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd09mZnNldFg6IDAsCiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd0NvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjUpJwogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIC8vICAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIHN0YXRpc3RpYy5zZXRPcHRpb24ob3B0aW9uKTsKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYy5yZXNpemUoKTsKICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIC8vICAgICAgICAgfQogICAgICAgICAgICAvLyAgICAgfSk7CiAgICAgICAgICAgIC8vIH0pCiAgICAgICAgfSwKICAgICAgICBjb250ZW50U3R5bGVDaGFuZ2UoKSB7CiAgICAgICAgICAgIHRoaXMuY29udGVudFNlYXJjaFN0eWxlQ2hhbmdlKCkKICAgICAgICAgICAgdGhpcy5jb250ZW50QnRuQWRBbGxTdHlsZUNoYW5nZSgpCiAgICAgICAgICAgIHRoaXMuY29udGVudFNlYXJjaEJ0blN0eWxlQ2hhbmdlKCkKICAgICAgICAgICAgdGhpcy5jb250ZW50VGFibGVCdG5TdHlsZUNoYW5nZSgpCiAgICAgICAgICAgIHRoaXMuY29udGVudFBhZ2VTdHlsZUNoYW5nZSgpCiAgICAgICAgfSwKICAgICAgICBjb250ZW50U2VhcmNoU3R5bGVDaGFuZ2UoKSB7CiAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtLWNvbnRlbnQgLnNsdCAuZWwtaW5wdXRfX2lubmVyJykuZm9yRWFjaChlbCA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRBbGlnbiA9ICdsZWZ0JwogICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuY29udGVudHMuaW5wdXRGb250UG9zaXRpb24gPT0gMikKICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduID0gJ2NlbnRlcicKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudHMuaW5wdXRGb250UG9zaXRpb24gPT0gMykgdGV4dEFsaWduID0gJ3JpZ2h0JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUudGV4dEFsaWduID0gdGV4dEFsaWduCiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmhlaWdodCA9IHRoaXMuY29udGVudHMuaW5wdXRIZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUubGluZUhlaWdodCA9IHRoaXMuY29udGVudHMuaW5wdXRIZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuY29sb3IgPSB0aGlzLmNvbnRlbnRzLmlucHV0Rm9udENvbG9yCiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmZvbnRTaXplID0gdGhpcy5jb250ZW50cy5pbnB1dEZvbnRTaXplCiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlcldpZHRoID0gdGhpcy5jb250ZW50cy5pbnB1dEJvcmRlcldpZHRoCiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlclN0eWxlID0gdGhpcy5jb250ZW50cy5pbnB1dEJvcmRlclN0eWxlCiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlckNvbG9yID0gdGhpcy5jb250ZW50cy5pbnB1dEJvcmRlckNvbG9yCiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlclJhZGl1cyA9IHRoaXMuY29udGVudHMuaW5wdXRCb3JkZXJSYWRpdXMKICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb250ZW50cy5pbnB1dEJnQ29sb3IKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50cy5pbnB1dFRpdGxlKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZvcm0tY29udGVudCAuc2x0IC5lbC1mb3JtLWl0ZW1fX2xhYmVsJykuZm9yRWFjaChlbCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmNvbG9yID0gdGhpcy5jb250ZW50cy5pbnB1dFRpdGxlQ29sb3IKICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuZm9udFNpemUgPSB0aGlzLmNvbnRlbnRzLmlucHV0VGl0bGVTaXplCiAgICAgICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmxpbmVIZWlnaHQgPSB0aGlzLmNvbnRlbnRzLmlucHV0SGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtLWNvbnRlbnQgLnNsdCAuZWwtaW5wdXRfX3ByZWZpeCcpLmZvckVhY2goZWwgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5jb2xvciA9IHRoaXMuY29udGVudHMuaW5wdXRJY29uQ29sb3IKICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUubGluZUhlaWdodCA9IHRoaXMuY29udGVudHMuaW5wdXRIZWlnaHQKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtLWNvbnRlbnQgLnNsdCAuZWwtaW5wdXRfX3N1ZmZpeCcpLmZvckVhY2goZWwgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5jb2xvciA9IHRoaXMuY29udGVudHMuaW5wdXRJY29uQ29sb3IKICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUubGluZUhlaWdodCA9IHRoaXMuY29udGVudHMuaW5wdXRIZWlnaHQKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtLWNvbnRlbnQgLnNsdCAuZWwtaW5wdXRfX2ljb24nKS5mb3JFYWNoKGVsID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUubGluZUhlaWdodCA9IHRoaXMuY29udGVudHMuaW5wdXRIZWlnaHQKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSwgMTAgKQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgLy8g5pCc57Si5oyJ6ZKuCiAgICAgICAgY29udGVudFNlYXJjaEJ0blN0eWxlQ2hhbmdlKCkgewogICAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZm9ybS1jb250ZW50IC5zbHQgLmVsLWJ1dHRvbi0tc3VjY2VzcycpLmZvckVhY2goZWwgPT4gewogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmhlaWdodCA9IHRoaXMuY29udGVudHMuc2VhcmNoQnRuSGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuY29sb3IgPSB0aGlzLmNvbnRlbnRzLnNlYXJjaEJ0bkZvbnRDb2xvcgogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmZvbnRTaXplID0gdGhpcy5jb250ZW50cy5zZWFyY2hCdG5Gb250U2l6ZQogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlcldpZHRoID0gdGhpcy5jb250ZW50cy5zZWFyY2hCdG5Cb3JkZXJXaWR0aAogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlclN0eWxlID0gdGhpcy5jb250ZW50cy5zZWFyY2hCdG5Cb3JkZXJTdHlsZQogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlckNvbG9yID0gdGhpcy5jb250ZW50cy5zZWFyY2hCdG5Cb3JkZXJDb2xvcgogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlclJhZGl1cyA9IHRoaXMuY29udGVudHMuc2VhcmNoQnRuQm9yZGVyUmFkaXVzCiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb250ZW50cy5zZWFyY2hCdG5CZ0NvbG9yCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9KQogICAgICAgIH0sCiAgICAgICAgLy8g5paw5aKe44CB5om56YeP5Yig6ZmkCiAgICAgICAgY29udGVudEJ0bkFkQWxsU3R5bGVDaGFuZ2UoKSB7CiAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mb3JtLWNvbnRlbnQgLmFkIC5lbC1idXR0b24tLXN1Y2Nlc3MnKS5mb3JFYWNoKGVsID0+IHsKICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsSGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuY29sb3IgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsQWRkRm9udENvbG9yCiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuZm9udFNpemUgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsRm9udFNpemUKICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5ib3JkZXJXaWR0aCA9IHRoaXMuY29udGVudHMuYnRuQWRBbGxCb3JkZXJXaWR0aAogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlclN0eWxlID0gdGhpcy5jb250ZW50cy5idG5BZEFsbEJvcmRlclN0eWxlCiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuYm9yZGVyQ29sb3IgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsQm9yZGVyQ29sb3IKICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5ib3JkZXJSYWRpdXMgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsQm9yZGVyUmFkaXVzCiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb250ZW50cy5idG5BZEFsbEFkZEJnQ29sb3IKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZm9ybS1jb250ZW50IC5hZCAuZWwtYnV0dG9uLS1kYW5nZXInKS5mb3JFYWNoKGVsID0+IHsKICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsSGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuY29sb3IgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsRGVsRm9udENvbG9yCiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuZm9udFNpemUgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsRm9udFNpemUKICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5ib3JkZXJXaWR0aCA9IHRoaXMuY29udGVudHMuYnRuQWRBbGxCb3JkZXJXaWR0aAogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlclN0eWxlID0gdGhpcy5jb250ZW50cy5idG5BZEFsbEJvcmRlclN0eWxlCiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuYm9yZGVyQ29sb3IgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsQm9yZGVyQ29sb3IKICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5ib3JkZXJSYWRpdXMgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsQm9yZGVyUmFkaXVzCiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb250ZW50cy5idG5BZEFsbERlbEJnQ29sb3IKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZm9ybS1jb250ZW50IC5hZCAuZWwtYnV0dG9uLS13YXJuaW5nJykuZm9yRWFjaChlbCA9PiB7CiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gdGhpcy5jb250ZW50cy5idG5BZEFsbEhlaWdodAogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmNvbG9yID0gdGhpcy5jb250ZW50cy5idG5BZEFsbFdhcm5Gb250Q29sb3IKICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5mb250U2l6ZSA9IHRoaXMuY29udGVudHMuYnRuQWRBbGxGb250U2l6ZQogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlcldpZHRoID0gdGhpcy5jb250ZW50cy5idG5BZEFsbEJvcmRlcldpZHRoCiAgICAgICAgICAgICAgICAgICAgZWwuc3R5bGUuYm9yZGVyU3R5bGUgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsQm9yZGVyU3R5bGUKICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5ib3JkZXJDb2xvciA9IHRoaXMuY29udGVudHMuYnRuQWRBbGxCb3JkZXJDb2xvcgogICAgICAgICAgICAgICAgICAgIGVsLnN0eWxlLmJvcmRlclJhZGl1cyA9IHRoaXMuY29udGVudHMuYnRuQWRBbGxCb3JkZXJSYWRpdXMKICAgICAgICAgICAgICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbnRlbnRzLmJ0bkFkQWxsV2FybkJnQ29sb3IKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfSwKICAgICAgICAvLyDooajmoLwKICAgICAgICByb3dTdHlsZSh7cm93LCByb3dJbmRleH0pIHsKICAgICAgICAgICAgaWYgKHJvd0luZGV4ICUgMiA9PSAxKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50cy50YWJsZVN0cmlwZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB7Y29sb3I6IHRoaXMuY29udGVudHMudGFibGVTdHJpcGVGb250Q29sb3J9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJycKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgY2VsbFN0eWxlKHtyb3csIHJvd0luZGV4fSkgewogICAgICAgICAgICBpZiAocm93SW5kZXggJSAyID09IDEpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRzLnRhYmxlU3RyaXBlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtiYWNrZ3JvdW5kQ29sb3I6IHRoaXMuY29udGVudHMudGFibGVTdHJpcGVCZ0NvbG9yfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICcnCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGhlYWRlclJvd1N0eWxlKHtyb3csIHJvd0luZGV4fSkgewogICAgICAgICAgICByZXR1cm4ge2NvbG9yOiB0aGlzLmNvbnRlbnRzLnRhYmxlSGVhZGVyRm9udENvbG9yfQogICAgICAgIH0sCiAgICAgICAgaGVhZGVyQ2VsbFN0eWxlKHtyb3csIHJvd0luZGV4fSkgewogICAgICAgICAgICByZXR1cm4ge2JhY2tncm91bmRDb2xvcjogdGhpcy5jb250ZW50cy50YWJsZUhlYWRlckJnQ29sb3J9CiAgICAgICAgfSwKICAgICAgICAvLyDooajmoLzmjInpkq4KICAgICAgICBjb250ZW50VGFibGVCdG5TdHlsZUNoYW5nZSgpIHsKICAgICAgICAgICAgLy8gdGhpcy4kbmV4dFRpY2soKCk9PnsKICAgICAgICAgICAgLy8gICBzZXRUaW1lb3V0KCgpPT57CiAgICAgICAgICAgIC8vICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGFibGUtY29udGVudCAudGFibGVzIC5lbC10YWJsZV9fYm9keSAuZWwtYnV0dG9uLS1zdWNjZXNzJykuZm9yRWFjaChlbD0+ewogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNvbnRlbnRzLnRhYmxlQnRuSGVpZ2h0CiAgICAgICAgICAgIC8vICAgICAgIGVsLnN0eWxlLmNvbG9yID0gdGhpcy5jb250ZW50cy50YWJsZUJ0bkRldGFpbEZvbnRDb2xvcgogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5mb250U2l6ZSA9IHRoaXMuY29udGVudHMudGFibGVCdG5Gb250U2l6ZQogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5ib3JkZXJXaWR0aCA9IHRoaXMuY29udGVudHMudGFibGVCdG5Cb3JkZXJXaWR0aAogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5ib3JkZXJTdHlsZSA9IHRoaXMuY29udGVudHMudGFibGVCdG5Cb3JkZXJTdHlsZQogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5ib3JkZXJDb2xvciA9IHRoaXMuY29udGVudHMudGFibGVCdG5Cb3JkZXJDb2xvcgogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5ib3JkZXJSYWRpdXMgPSB0aGlzLmNvbnRlbnRzLnRhYmxlQnRuQm9yZGVyUmFkaXVzCiAgICAgICAgICAgIC8vICAgICAgIGVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29udGVudHMudGFibGVCdG5EZXRhaWxCZ0NvbG9yCiAgICAgICAgICAgIC8vICAgICB9KQogICAgICAgICAgICAvLyAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRhYmxlLWNvbnRlbnQgLnRhYmxlcyAuZWwtdGFibGVfX2JvZHkgLmVsLWJ1dHRvbi0tcHJpbWFyeScpLmZvckVhY2goZWw9PnsKICAgICAgICAgICAgLy8gICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gdGhpcy5jb250ZW50cy50YWJsZUJ0bkhlaWdodAogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5jb2xvciA9IHRoaXMuY29udGVudHMudGFibGVCdG5FZGl0Rm9udENvbG9yCiAgICAgICAgICAgIC8vICAgICAgIGVsLnN0eWxlLmZvbnRTaXplID0gdGhpcy5jb250ZW50cy50YWJsZUJ0bkZvbnRTaXplCiAgICAgICAgICAgIC8vICAgICAgIGVsLnN0eWxlLmJvcmRlcldpZHRoID0gdGhpcy5jb250ZW50cy50YWJsZUJ0bkJvcmRlcldpZHRoCiAgICAgICAgICAgIC8vICAgICAgIGVsLnN0eWxlLmJvcmRlclN0eWxlID0gdGhpcy5jb250ZW50cy50YWJsZUJ0bkJvcmRlclN0eWxlCiAgICAgICAgICAgIC8vICAgICAgIGVsLnN0eWxlLmJvcmRlckNvbG9yID0gdGhpcy5jb250ZW50cy50YWJsZUJ0bkJvcmRlckNvbG9yCiAgICAgICAgICAgIC8vICAgICAgIGVsLnN0eWxlLmJvcmRlclJhZGl1cyA9IHRoaXMuY29udGVudHMudGFibGVCdG5Cb3JkZXJSYWRpdXMKICAgICAgICAgICAgLy8gICAgICAgZWwuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb250ZW50cy50YWJsZUJ0bkVkaXRCZ0NvbG9yCiAgICAgICAgICAgIC8vICAgICB9KQogICAgICAgICAgICAvLyAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRhYmxlLWNvbnRlbnQgLnRhYmxlcyAuZWwtdGFibGVfX2JvZHkgLmVsLWJ1dHRvbi0tZGFuZ2VyJykuZm9yRWFjaChlbD0+ewogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSB0aGlzLmNvbnRlbnRzLnRhYmxlQnRuSGVpZ2h0CiAgICAgICAgICAgIC8vICAgICAgIGVsLnN0eWxlLmNvbG9yID0gdGhpcy5jb250ZW50cy50YWJsZUJ0bkRlbEZvbnRDb2xvcgogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5mb250U2l6ZSA9IHRoaXMuY29udGVudHMudGFibGVCdG5Gb250U2l6ZQogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5ib3JkZXJXaWR0aCA9IHRoaXMuY29udGVudHMudGFibGVCdG5Cb3JkZXJXaWR0aAogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5ib3JkZXJTdHlsZSA9IHRoaXMuY29udGVudHMudGFibGVCdG5Cb3JkZXJTdHlsZQogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5ib3JkZXJDb2xvciA9IHRoaXMuY29udGVudHMudGFibGVCdG5Cb3JkZXJDb2xvcgogICAgICAgICAgICAvLyAgICAgICBlbC5zdHlsZS5ib3JkZXJSYWRpdXMgPSB0aGlzLmNvbnRlbnRzLnRhYmxlQnRuQm9yZGVyUmFkaXVzCiAgICAgICAgICAgIC8vICAgICAgIGVsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29udGVudHMudGFibGVCdG5EZWxCZ0NvbG9yCiAgICAgICAgICAgIC8vICAgICB9KQoKICAgICAgICAgICAgLy8gICB9LCA1MCkKICAgICAgICAgICAgLy8gfSkKICAgICAgICB9LAogICAgICAgIC8vIOWIhumhtQogICAgICAgIGNvbnRlbnRQYWdlU3R5bGVDaGFuZ2UoKSB7CiAgICAgICAgICAgIGxldCBhcnIgPSBbXQogICAgICAgICAgICBpZiAodGhpcy5jb250ZW50cy5wYWdlVG90YWwpIGFyci5wdXNoKCd0b3RhbCcpCiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRzLnBhZ2VTaXplcykgYXJyLnB1c2goJ3NpemVzJykKICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudHMucGFnZVByZXZOZXh0KSB7CiAgICAgICAgICAgICAgICBhcnIucHVzaCgncHJldicpCiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50cy5wYWdlUGFnZXIpIGFyci5wdXNoKCdwYWdlcicpCiAgICAgICAgICAgICAgICBhcnIucHVzaCgnbmV4dCcpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudHMucGFnZUp1bXBlcikgYXJyLnB1c2goJ2p1bXBlcicpCiAgICAgICAgICAgIHRoaXMubGF5b3V0cyA9IGFyci5qb2luKCkKICAgICAgICAgICAgdGhpcy5jb250ZW50cy5wYWdlRWFjaE51bSA9IDEwCiAgICAgICAgfSwKCiAgICAgICAgaW5pdCgpIHsKICAgICAgICB9LAogICAgICAgIHNlYXJjaCgpIHsKICAgICAgICAgICAgdGhpcy5wYWdlSW5kZXggPSAxOwogICAgICAgICAgICB0aGlzLmdldERhdGFMaXN0KCk7CiAgICAgICAgfSwKICAgICAgICAvLyDojrflj5bmlbDmja7liJfooagKICAgICAgICBnZXREYXRhTGlzdCgpIHsKICAgICAgICAgICAgdGhpcy5kYXRhTGlzdExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICBsZXQgcGFyYW1zID0gewogICAgICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlSW5kZXgsCiAgICAgICAgICAgICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSwKICAgICAgICAgICAgICAgIHNvcnQ6ICdpZCcsCiAgICAgICAgICAgICAgICBmb3J1bVN0YXRlVHlwZXM6MQogICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaEZvcm0ueW9uZ2h1TmFtZSE9ICcnICYmIHRoaXMuc2VhcmNoRm9ybS55b25naHVOYW1lIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBwYXJhbXNbJ3lvbmdodU5hbWUnXSA9ICclJyArIHRoaXMuc2VhcmNoRm9ybS55b25naHVOYW1lICsgJyUnCiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoRm9ybS5mb3J1bU5hbWUhPSAnJyAmJiB0aGlzLnNlYXJjaEZvcm0uZm9ydW1OYW1lIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBwYXJhbXNbJ2ZvcnVtTmFtZSddID0gJyUnICsgdGhpcy5zZWFyY2hGb3JtLmZvcnVtTmFtZSArICclJwogICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICBwYXJhbXNbJ2ZvcnVtRGVsZXRlJ10gPSAxLy8g6YC76L6R5Yig6Zmk5a2X5q61IDEg5pyq5Yig6ZmkIDIg5Yig6ZmkCgoKICAgICAgICAgICAgdGhpcy4kaHR0cCh7CiAgICAgICAgICAgICAgICB1cmw6ICJmb3J1bS9saXN0IiwKICAgICAgICAgICAgICAgIG1ldGhvZDogImdldCIsCiAgICAgICAgICAgICAgICBwYXJhbXM6IHBhcmFtcwogICAgICAgICAgICB9KS50aGVuKCh7ZGF0YX0pID0+IHsKICAgICAgICAgICAgICAgIGlmKGRhdGEgJiYgZGF0YS5jb2RlID09PSAwKXsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFMaXN0ID0gZGF0YS5kYXRhLmxpc3Q7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFBhZ2UgPSBkYXRhLmRhdGEudG90YWw7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFMaXN0ID0gW107CiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3RhbFBhZ2UgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5kYXRhTGlzdExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvL+afpeivoue6p+iBlOihqOaQnOe0ouadoeS7tuaJgOacieWIl+ihqAogICAgICAgICAgICAvL+afpeivouW9k+WJjeihqOaQnOe0ouadoeS7tuaJgOacieWIl+ihqAogICAgICAgIH0sCiAgICAgICAgLy/mr4/pobXmlbAKICAgICAgICBzaXplQ2hhbmdlSGFuZGxlKHZhbCkgewogICAgICAgICAgICB0aGlzLnBhZ2VTaXplID0gdmFsOwogICAgICAgICAgICB0aGlzLnBhZ2VJbmRleCA9IDE7CiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YUxpc3QoKTsKICAgICAgICB9LAogICAgICAgIC8vIOW9k+WJjemhtQogICAgICAgIGN1cnJlbnRDaGFuZ2VIYW5kbGUodmFsKSB7CiAgICAgICAgICAgIHRoaXMucGFnZUluZGV4ID0gdmFsOwogICAgICAgICAgICB0aGlzLmdldERhdGFMaXN0KCk7CiAgICAgICAgfSwKICAgICAgICAvLyDlpJrpgIkKICAgICAgICBzZWxlY3Rpb25DaGFuZ2VIYW5kbGVyKHZhbCkgewogICAgICAgICAgICB0aGlzLmRhdGFMaXN0U2VsZWN0aW9ucyA9IHZhbDsKICAgICAgICB9LAogICAgICAgIC8vIOa3u+WKoC/kv67mlLkKICAgICAgICBhZGRPclVwZGF0ZUhhbmRsZXIoaWQsIHR5cGUpIHsKICAgICAgICAgICAgdGhpcy5zaG93RmxhZyA9IGZhbHNlOwogICAgICAgICAgICB0aGlzLmFkZE9yVXBkYXRlRmxhZyA9IHRydWU7CiAgICAgICAgICAgIHRoaXMuY3Jvc3NBZGRPclVwZGF0ZUZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKHR5cGUgIT0gJ2luZm8nKSB7CiAgICAgICAgICAgICAgICB0eXBlID0gJ2Vsc2UnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMuJHJlZnMuYWRkT3JVcGRhdGUuaW5pdChpZCwgdHlwZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgLy8g5LiL6L29CiAgICAgICAgZG93bmxvYWQoZmlsZSkgewogICAgICAgICAgICB3aW5kb3cub3BlbigiICR7ZmlsZX0gIikKICAgICAgICB9LAogICAgICAgIC8vIOWIoOmZpAogICAgICAgIGRlbGV0ZUhhbmRsZXIoaWQpIHsKICAgICAgICAgICAgdmFyIGlkcyA9IGlkID8gW051bWJlcihpZCldIDogdGhpcy5kYXRhTGlzdFNlbGVjdGlvbnMubWFwKGl0ZW0gPT4gewogICAgICAgICAgICAgICAgcmV0dXJuIE51bWJlcihpdGVtLmlkKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICB0aGlzLiRjb25maXJtKGDnoa7lrprov5vooYxbJHtpZCA/ICLliKDpmaQiIDogIuaJuemHj+WIoOmZpCJ9XeaTjeS9nD9gLCAi5o+Q56S6IiwgewogICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICLnoa7lrpoiLAogICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogIuWPlua2iCIsCiAgICAgICAgICAgICAgICB0eXBlOiAid2FybmluZyIKICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICB0aGlzLiRodHRwKHsKICAgICAgICAgICAgICAgICAgICB1cmw6ICJmb3J1bS9kZWxldGUiLAogICAgICAgICAgICAgICAgICAgIG1ldGhvZDogInBvc3QiLAogICAgICAgICAgICAgICAgICAgIGRhdGE6IGlkcwogICAgICAgICAgICAgICAgfSkudGhlbigoe2RhdGF9KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YSAmJiBkYXRhLmNvZGUgPT09IDApewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLmk43kvZzmiJDlip8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDE1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3J1bVJlcGx5RGlhbG9nVmlzaWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGRhdGEubXNnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICAvLyDlr7zlhaXlip/og73kuIrkvKDmlofku7bmiJDlip/lkI7osIPnlKjlr7zlhaXmlrnms5UKICAgICAgICBmb3J1bVVwbG9hZFN1Y2Nlc3MoZGF0YSl7CiAgICAgICAgICAgIGxldCBfdGhpcyA9IHRoaXM7CiAgICAgICAgICAgIF90aGlzLiRodHRwKHsKICAgICAgICAgICAgICAgIHVybDogImZvcnVtL2JhdGNoSW5zZXJ0P2ZpbGVOYW1lPSIgKyBkYXRhLmZpbGUsCiAgICAgICAgICAgICAgICBtZXRob2Q6ICJnZXQiCiAgICAgICAgICAgIH0pLnRoZW4oKHtkYXRhfSkgPT4gewogICAgICAgICAgICAgICAgaWYoZGF0YSAmJiBkYXRhLmNvZGUgPT09IDApewogICAgICAgICAgICAgICAgICAgIF90aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuWvvOWFpeiuuuWdm+aVsOaNruaIkOWKnyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJzdWNjZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDE1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnNlYXJjaCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICBfdGhpcy4kbWVzc2FnZS5lcnJvcihkYXRhLm1zZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICB9LAogICAgICAgIC8vIOWvvOWFpeWKn+iDveS4iuS8oOaWh+S7tuWksei0peWQjuiwg+eUqOWvvOWFpeaWueazlQogICAgICAgIGZvcnVtVXBsb2FkRXJyb3IoZGF0YSl7CiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+S4iuS8oOWksei0pScpOwogICAgICAgIH0sCiAgICAgICAgLy8g5omT5byA5Zue5biW5qih5oCB5qGGCiAgICAgICAgb3BlblJlcGx5Rm9ydW0oaWQsZm9ydW1OYW1lLGZvcnVtQ29udGVudCkgewogICAgICAgICAgICBsZXQgX3RoaXMgPSB0aGlzOwogICAgICAgIC8vIOW9k+WJjeW4luWtkOebuOWFsyBzdGFydAogICAgICAgICAgICBfdGhpcy5zdXBlcklkcyA9IGlkOwogICAgICAgICAgICBfdGhpcy5mb3J1bVRpdGxlID0gZm9ydW1OYW1lOwogICAgICAgICAgICBfdGhpcy5mb3J1bUNvbnRlbnQgPSBmb3J1bUNvbnRlbnQ7CiAgICAgICAgLy8g5b2T5YmN5biW5a2Q55u45YWzIGVuZAogICAgICAgICAgICBfdGhpcy5mb3J1bVJlcGx5Q29udGVudCA9ICIiOy8v5biW5a2Q5Zue5aSNCiAgICAgICAgICAgIF90aGlzLmZvcnVtUmVwbHlEaWFsb2dWaXNpYmxlID0gdHJ1ZTsvL+iuuuWdm+WbnuWkjeaooeaAgeahhgogICAgICAgICAgICBfdGhpcy5mb3J1bVJlcGx5SW5mb0RpYWxvZ1Zpc2libGUgPSBmYWxzZTsvL+iuuuWdm+WbnuWkjeivpuaDheaooeaAgeahhgoKCiAgICAgICAgICAgIC8vIOafpeeci+W9k+WJjeW4luWtkOeahOWbnuWkjeWIl+ihqAogICAgICAgICAgICBsZXQgcGFyYW1zID0gewogICAgICAgICAgICAgICAgcGFnZTogMSwKICAgICAgICAgICAgICAgIGxpbWl0OiAxMDAwMCwKICAgICAgICAgICAgICAgIHNvcnQ6ICdpZCcsCiAgICAgICAgICAgICAgICBmb3J1bVN0YXRlVHlwZXM6MiwKICAgICAgICAgICAgICAgIHN1cGVySWRzOl90aGlzLnN1cGVySWRzCiAgICAgICAgICAgIH0KICAgICAgICAgICAgX3RoaXMuJGh0dHAoewogICAgICAgICAgICAgICAgdXJsOiAiZm9ydW0vbGlzdCIsCiAgICAgICAgICAgICAgICBtZXRob2Q6ICJnZXQiLAogICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMKICAgICAgICAgICAgfSkudGhlbigoe2RhdGF9KSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNvZGUgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICBfdGhpcy5mb3J1bURhdGEgPSBbXTsKICAgICAgICAgICAgICAgICAgICBkYXRhLmRhdGEubGlzdC5mb3JFYWNoKGVsPT57CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3J1bSAgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ydW0uaWQgPSBlbC5pZDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ydW0uZm9ydW1OYW1lID0gZWwuZm9ydW1OYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS55b25naHVJZCA9IGVsLnlvbmdodUlkOy8vLS0tCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcnVtLnlvbmdodU5hbWUgPSBlbC55b25naHVOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS55b25naHVQaG90byA9IGVsLnlvbmdodVBob3RvOwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS55b25naHVQaG9uZSA9IGVsLnlvbmdodVBob25lOwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS55b25naHVFbWFpbCA9IGVsLnlvbmdodUVtYWlsOwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS5uZXdNb25leSA9IGVsLm5ld01vbmV5OwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS55b25naHVEZWxldGUgPSBlbC55b25naHVEZWxldGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcnVtLmNyZWF0ZVRpbWUgPSBlbC5jcmVhdGVUaW1lOwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS51c2Vyc0lkID0gZWwudXNlcnNJZDsvLy0tLQogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS51c2VybmFtZSA9IGVsLnVzZXJuYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS5wYXNzd29yZCA9IGVsLnBhc3N3b3JkOwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS5yb2xlID0gZWwucm9sZTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ydW0uYWRkdGltZSA9IGVsLmFkZHRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcnVtLmZvcnVtQ29udGVudCA9IGVsLmZvcnVtQ29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ydW0uc3VwZXJJZHMgPSBlbC5zdXBlcklkczsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ydW0uZm9ydW1TdGF0ZVR5cGVzID0gZWwuZm9ydW1TdGF0ZVR5cGVzOwogICAgICAgICAgICAgICAgICAgICAgICBmb3J1bS5pbnNlcnRUaW1lID0gZWwuaW5zZXJ0VGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9ydW0udXBkYXRlVGltZSA9IGVsLnVwZGF0ZVRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcnVtLmNyZWF0ZVRpbWUgPSBlbC5jcmVhdGVUaW1lOwogICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5mb3J1bURhdGEucHVzaChmb3J1bSk7CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgLy8g5p+l55yL5p+Q5Liq5Zue5aSN5biW5a2Q55qE5biW5a2Q5YaF5a655YWo6YOoCiAgICAgICAgc2VlRm9ydW1Db250ZW50KGZvcnVtQ29udGVudCkgewogICAgICAgICAgICBsZXQgX3RoaXMgPSB0aGlzOwogICAgICAgICAgICBfdGhpcy5mb3J1bVJlcGx5SW5mb0NvbnRlbnQgPSBmb3J1bUNvbnRlbnQ7Ly/luJblrZDmn5DkuKrlm57lpI3or6bmg4Ug5YWoCiAgICAgICAgICAgIF90aGlzLmZvcnVtUmVwbHlJbmZvRGlhbG9nVmlzaWJsZSA9IHRydWU7Ly/orrrlnZvlm57lpI3or6bmg4XmqKHmgIHmoYYKICAgICAgICB9LAogICAgICAgIC8vIOWIoOmZpOaVsOaNrgogICAgICAgIGRlbGV0ZUZvcnVtRGF0YShpZCl7CiAgICAgICAgICAgIGxldCBfdGhpcyA9IHRoaXM7CiAgICAgICAgICAgIGxldCBpZHMgPSBbXTsKICAgICAgICAgICAgaWRzLnB1c2goTnVtYmVyKGlkKSk7CiAgICAgICAgICAgIF90aGlzLiRodHRwKHsKICAgICAgICAgICAgICAgIHVybDogImZvcnVtL2RlbGV0ZSIsCiAgICAgICAgICAgICAgICBtZXRob2Q6ICJwb3N0IiwKICAgICAgICAgICAgICAgIGRhdGE6IGlkcwogICAgICAgICAgICB9KS50aGVuKCh7ZGF0YX0pID0+IHsKICAgICAgICAgICAgICAgIGlmKGRhdGEgJiYgZGF0YS5jb2RlID09PSAwKXsKICAgICAgICAgICAgICAgICAgICBfdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLliKDpmaTlm57luJbmiJDlip8iLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAxNTAwLAogICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5vcGVuUmVwbHlGb3J1bShfdGhpcy5zdXBlcklkcyxfdGhpcy5mb3J1bVRpdGxlLF90aGlzLmZvcnVtQ29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgIF90aGlzLiRtZXNzYWdlLmVycm9yKGRhdGEubXNnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgLy8g5Zue5biWCiAgICAgICAgZm9ydW1SZXBseSgpIHsKICAgICAgICAgICAgbGV0IF90aGlzID0gdGhpczsKICAgICAgICAgICAgaWYoX3RoaXMuZm9ydW1SZXBseUNvbnRlbnQgPT0gIiIpewogICAgICAgICAgICAgICAgYWxlcnQoIuivt+i+k+WFpeWbnuW4luWGheWuuSIpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBkYXRhID0geyJzdXBlcklkcyI6X3RoaXMuc3VwZXJJZHMsImZvcnVtU3RhdGVUeXBlcyI6MiwiZm9ydW1Db250ZW50IjpfdGhpcy5mb3J1bVJlcGx5Q29udGVudH07CiAgICAgICAgICAgIF90aGlzLiRodHRwKHsKICAgICAgICAgICAgICAgIHVybDpgZm9ydW0vc2F2ZWAsCiAgICAgICAgICAgICAgICBtZXRob2Q6ICJwb3N0IiwKICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEKICAgICAgICAgICAgfSkudGhlbigoeyBkYXRhIH0pID0+IHsKICAgICAgICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY29kZSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgIF90aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogIuWbnuW4luaIkOWKnyIsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJzdWNjZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDE1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLm9wZW5SZXBseUZvcnVtKF90aGlzLnN1cGVySWRzLF90aGlzLmZvcnVtVGl0bGUsX3RoaXMuZm9ydW1Db250ZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBfdGhpcy4kbWVzc2FnZS5lcnJvcihkYXRhLm1zZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0sICAgICAgICB9Cn07Cg=="},{"version":3,"sources":["list.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwRA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;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","file":"list.vue","sourceRoot":"src/views/modules/forum","sourcesContent":["<template>\r\n <div class=\"main-content\">\r\n <el-dialog title=\"帖子回复详情\" :visible.sync=\"forumReplyDialogVisible\">\r\n <el-dialog\r\n width=\"30%\"\r\n :title=\"forumReplyInfoContent\"\r\n :visible.sync=\"forumReplyInfoDialogVisible\"\r\n append-to-body>\r\n </el-dialog>\r\n <div class=\"demo-input-suffix\">\r\n <span style=\"width: 20%\">帖子标题:</span><el-input v-model=\"forumTitle\" :disabled=\"true\" placeholder=\"帖子标题\" style=\"width: 80%\"></el-input>\r\n </div>\r\n <div class=\"demo-input-suffix\">\r\n <span style=\"width: 20%\">帖子内容:</span><el-input v-model=\"forumContent\" :disabled=\"true\" placeholder=\"帖子内容\" style=\"width: 80%\" type=\"textarea\"></el-input>\r\n </div>\r\n <el-table :data=\"forumData\" height=\"250\">\r\n <!--<el-table-column label=\"id\" width=\"40\"></el-table-column>-->\r\n <el-table-column label=\"身份\">\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"scope.row.yonghuId\">\r\n 用户\r\n </span>\r\n <span v-if=\"scope.row.usersId\">\r\n 管理员\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"姓名\">\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"scope.row.yonghuId\">\r\n {{scope.row.yonghuName}}\r\n </span>\r\n <span v-if=\"scope.row.usersId\">\r\n 管理员\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"手机号\">\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"scope.row.yonghuId\">\r\n {{scope.row.yonghuPhone}}\r\n </span>\r\n <span v-if=\"scope.row.usersId\">\r\n 管理员\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"回复内容\">\r\n <template slot-scope=\"scope\">\r\n {{scope.row.forumContent.length>20?(scope.row.forumContent.substring(0,20)+'...'):scope.row.forumContent}}\r\n </template>\r\n </el-table-column>\r\n <el-table-column property=\"insertTime\" label=\"回帖时间\"></el-table-column>\r\n <el-table-column property=\"caozuo\" label=\"操作\">\r\n <template slot-scope=\"scope\">\r\n <el-button type=\"info\" @click=\"seeForumContent(scope.row.forumContent)\">回帖详情</el-button>\r\n <el-button v-if=\"true &&( false|| (sessionTable == 'yonghu' && scope.row.yonghuId ==userId)\r\n|| sessionTable == 'users')\" type=\"danger\" icon=\"el-icon-delete\" size=\"mini\" @click=\"deleteHandler(scope.row.id)\">删除帖子</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"demo-input-suffix\">\r\n <span style=\"width: 20%\">回帖内容:</span>\r\n <el-input v-model=\"forumReplyContent\" placeholder=\"回帖内容\" style=\"width:80%\" type=\"textarea\"></el-input>\r\n </div>\r\n\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"forumReplyDialogVisible = false\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"forumReply\">回 帖</el-button>\r\n </div>\r\n </el-dialog>\r\n <!-- 条件查询 -->\r\n <div v-if=\"showFlag\">\r\n <el-form :inline=\"true\" :model=\"searchForm\" class=\"form-content\">\r\n <el-row :gutter=\"20\" class=\"slt\" :style=\"{justifyContent:contents.searchBoxPosition=='1'?'flex-start':contents.searchBoxPosition=='2'?'center':'flex-end'}\">\r\n \r\n <el-form-item :label=\"contents.inputTitle == 1 ? '帖子标题' : ''\">\r\n <el-input prefix-icon=\"el-icon-search\" v-model=\"searchForm.forumName\" placeholder=\"帖子标题\" clearable></el-input>\r\n </el-form-item>\r\n \r\n \r\n <el-form-item :label=\"contents.inputTitle == 1 ? '用户姓名' : ''\">\r\n <el-input prefix-icon=\"el-icon-search\" v-model=\"searchForm.yonghuName\" placeholder=\"用户姓名\" clearable></el-input>\r\n </el-form-item>\r\n \r\n\r\n <el-form-item>\r\n <el-button type=\"success\" @click=\"search()\">查询<i class=\"el-icon-search el-icon--right\"/></el-button>\r\n </el-form-item>\r\n </el-row>\r\n <el-row class=\"ad\" :style=\"{justifyContent:contents.btnAdAllBoxPosition=='1'?'flex-start':contents.btnAdAllBoxPosition=='2'?'center':'flex-end'}\">\r\n <el-form-item>\r\n <el-button\r\n v-if=\"isAuth('forum','新增')\"\r\n type=\"success\"\r\n icon=\"el-icon-plus\"\r\n @click=\"addOrUpdateHandler()\"\r\n >新增</el-button>\r\n \r\n <el-button\r\n v-if=\"isAuth('forum','报表')\"\r\n type=\"success\"\r\n icon=\"el-icon-pie-chart\"\r\n @click=\"chartDialog()\"\r\n >报表</el-button>\r\n \r\n <a style=\"text-decoration:none\" class=\"el-button el-button--success\"\r\n v-if=\"isAuth('forum','导入导出')\"\r\n icon=\"el-icon-download\"\r\n href=\"http://localhost:8080/minsuguanliw/upload/forumMuBan.xls\"\r\n >批量导入论坛数据模板</a>\r\n \r\n <el-upload\r\n v-if=\"isAuth('forum','导入导出')\"\r\n style=\"display: inline-block\"\r\n action=\"minsuguanliw/file/upload\"\r\n :on-success=\"forumUploadSuccess\"\r\n :on-error=\"forumUploadError\"\r\n :show-file-list = false>\r\n <el-button\r\n v-if=\"isAuth('forum','导入导出')\"\r\n type=\"success\"\r\n icon=\"el-icon-upload2\"\r\n >批量导入论坛数据</el-button>\r\n </el-upload>\r\n \r\n <!-- 导出excel -->\r\n <download-excel v-if=\"isAuth('forum','导入导出')\" style=\"display: inline-block\" class = \"export-excel-wrapper\" :data = \"dataList\" :fields = \"json_fields\" name = \"forum.xls\">\r\n <!-- 导出excel -->\r\n <el-button\r\n type=\"success\"\r\n icon=\"el-icon-download\"\r\n >导出</el-button>\r\n </download-excel>\r\n \r\n </el-form-item>\r\n </el-row>\r\n </el-form>\r\n <div class=\"table-content\">\r\n <el-table class=\"tables\" :size=\"contents.tableSize\" :show-header=\"contents.tableShowHeader\"\r\n :header-row-style=\"headerRowStyle\" :header-cell-style=\"headerCellStyle\"\r\n :border=\"contents.tableBorder\"\r\n :fit=\"contents.tableFit\"\r\n :stripe=\"contents.tableStripe\"\r\n :row-style=\"rowStyle\"\r\n :cell-style=\"cellStyle\"\r\n :style=\"{width: '100%',fontSize:contents.tableContentFontSize,color:contents.tableContentFontColor}\"\r\n v-if=\"isAuth('forum','查看')\"\r\n :data=\"dataList\"\r\n v-loading=\"dataListLoading\"\r\n @selection-change=\"selectionChangeHandler\">\r\n <el-table-column label=\"索引\" v-if=\"contents.tableIndex\" type=\"index\" width=\"50\" />\r\n <el-table-column :sortable=\"contents.tableSortable\" :align=\"contents.tableAlign\"\r\n header-align=\"center\"\r\n label=\"身份\">\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"scope.row.yonghuId\">\r\n 用户\r\n </span>\r\n <span v-if=\"scope.row.usersId\">\r\n 管理员\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column :sortable=\"contents.tableSortable\" :align=\"contents.tableAlign\"\r\n header-align=\"center\"\r\n label=\"姓名\">\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"scope.row.yonghuId\">\r\n {{scope.row.yonghuName}}\r\n </span>\r\n <span v-if=\"scope.row.usersId\">\r\n 管理员\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column :sortable=\"contents.tableSortable\" :align=\"contents.tableAlign\"\r\n header-align=\"center\"\r\n label=\"手机号\">\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"scope.row.yonghuId\">\r\n {{scope.row.yonghuPhone}}\r\n </span>\r\n <span v-if=\"scope.row.usersId\">\r\n 管理员\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column :sortable=\"contents.tableSortable\" :align=\"contents.tableAlign\"\r\n header-align=\"center\"\r\n label=\"头像\">\r\n <template slot-scope=\"scope\">\r\n <span v-if=\"scope.row.yonghuId\">\r\n <div v-if=\"scope.row.yonghuPhoto\">\r\n <img :src=\"scope.row.yonghuPhoto\" width=\"100\" height=\"100\">\r\n </div>\r\n <div v-else>无图片</div>\r\n </span>\r\n <span v-if=\"scope.row.usersId\">\r\n 管理员\r\n </span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column :sortable=\"contents.tableSortable\" :align=\"contents.tableAlign\"\r\n prop=\"forumName\"\r\n header-align=\"center\"\r\n label=\"帖子标题\">\r\n <template slot-scope=\"scope\">\r\n {{scope.row.forumName}}\r\n </template>\r\n </el-table-column>\r\n <el-table-column :sortable=\"contents.tableSortable\" :align=\"contents.tableAlign\"\r\n prop=\"forumContent\"\r\n header-align=\"center\"\r\n label=\"帖子内容\">\r\n <template slot-scope=\"scope\">\r\n {{scope.row.forumContent.length>20?(scope.row.forumContent.substring(0,20)+'...'):scope.row.forumContent}}\r\n </template>\r\n </el-table-column>\r\n <el-table-column :sortable=\"contents.tableSortable\" :align=\"contents.tableAlign\"\r\n prop=\"insertTime\"\r\n header-align=\"center\"\r\n label=\"发帖时间\">\r\n <template slot-scope=\"scope\">\r\n {{scope.row.insertTime}}\r\n </template>\r\n </el-table-column>\r\n\r\n <el-table-column width=\"300\" :align=\"contents.tableAlign\"\r\n header-align=\"center\"\r\n label=\"操作\">\r\n <template slot-scope=\"scope\">\r\n <el-button v-if=\"isAuth('forum','查看')\" type=\"success\" icon=\"el-icon-tickets\" size=\"mini\" @click=\"addOrUpdateHandler(scope.row.id,'info')\">详情</el-button>\r\n <el-button v-if=\"isAuth('forum','查看')\" type=\"primary\" icon=\"el-icon-edit\" size=\"mini\" @click=\"openReplyForum(scope.row.id,scope.row.forumName,scope.row.forumContent)\">查看论坛回复</el-button>\r\n <el-button v-if=\"isAuth('forum','修改')\" type=\"primary\" icon=\"el-icon-edit\" size=\"mini\" @click=\"addOrUpdateHandler(scope.row.id)\">修改</el-button>\r\n\r\n\r\n <el-button v-if=\"true &&( false|| (sessionTable == 'yonghu' && scope.row.yonghuId ==userId)\r\n|| sessionTable == 'users')\" type=\"danger\" icon=\"el-icon-delete\" size=\"mini\" @click=\"deleteHandler(scope.row.id)\">删除帖子</el-button>\r\n\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <el-pagination\r\n clsss=\"pages\"\r\n :layout=\"layouts\"\r\n @size-change=\"sizeChangeHandle\"\r\n @current-change=\"currentChangeHandle\"\r\n :current-page=\"pageIndex\"\r\n :page-sizes=\"[10, 20, 50, 100]\"\r\n :page-size=\"Number(contents.pageEachNum)\"\r\n :total=\"totalPage\"\r\n :small=\"contents.pageStyle\"\r\n class=\"pagination-content\"\r\n :background=\"contents.pageBtnBG\"\r\n :style=\"{textAlign:contents.pagePosition==1?'left':contents.pagePosition==2?'center':'right'}\"\r\n ></el-pagination>\r\n </div>\r\n </div>\r\n <!-- 添加/修改页面 将父组件的search方法传递给子组件-->\r\n <add-or-update v-if=\"addOrUpdateFlag\" :parent=\"this\" ref=\"addOrUpdate\"></add-or-update>\r\n\r\n\r\n\r\n <el-dialog title=\"统计报表\" :visible.sync=\"chartVisiable\" width=\"800\">\r\n <el-date-picker\r\n v-model=\"echartsDate\"\r\n type=\"year\"\r\n placeholder=\"选择年\">\r\n </el-date-picker>\r\n <el-button @click=\"chartDialog()\">查询</el-button>\r\n <div id=\"statistic\" style=\"width:100%;height:600px;\"></div>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n\t\t\t\t<el-button @click=\"chartVisiable = false\">关闭</el-button>\r\n\t\t\t</span>\r\n </el-dialog>\r\n\r\n </div>\r\n</template>\r\n<script>\r\n import AddOrUpdate from \"./add-or-update\";\r\n import styleJs from \"../../../utils/style.js\";\r\n import utilsJs from \"../../../utils/utils.js\";\r\n\r\n export default {\r\n data() {\r\n return {\r\n searchForm: {\r\n key: \"\"\r\n },\r\n sessionTable : \"\",//登录账户所在表名\r\n role : \"\",//权限\r\n userId:\"\",//当前登录人的id\r\n //级联表下拉框搜索条件\r\n //当前表下拉框搜索条件\r\n form:{\r\n id : null,\r\n forumName : null,\r\n yonghuId : null,\r\n usersId : null,\r\n forumContent : null,\r\n superIds : null,\r\n forumStateTypes : null,\r\n insertTime : null,\r\n updateTime : null,\r\n createTime : null,\r\n },\r\n dataList: [],\r\n pageIndex: 1,\r\n pageSize: 10,\r\n totalPage: 0,\r\n dataListLoading: false,\r\n dataListSelections: [],\r\n showFlag: true,\r\n sfshVisiable: false,\r\n shForm: {},\r\n chartVisiable: false,\r\n echartsDate: new Date(),//echarts的时间查询字段\r\n addOrUpdateFlag:false,\r\n contents:null,\r\n layouts: '',\r\n\r\n forumReplyDialogVisible : false,//论坛回复模态框\r\n forumReplyInfoDialogVisible : false,//论坛回复详情模态框\r\n superIds : \"\",//帖子id\r\n forumTitle : \"\",//帖子标题\r\n forumContent : \"\",//帖子内容\r\n forumReplyContent : \"\",//帖子回复内容\r\n forumReplyInfoContent : \"\",//帖子某个回复详情 全\r\n forumData : [],//论坛回复数据集合\r\n\r\n //导出excel\r\n json_fields: {\r\n //级联表字段\r\n '用户姓名': 'yonghuName',\r\n '头像': 'yonghuPhoto',\r\n '手机号': 'yonghuPhone',\r\n '电子邮箱': 'yonghuEmail',\r\n '余额': 'newMoney',\r\n '用户名': 'username',\r\n '角色': 'role',\r\n '新增时间': 'addtime',\r\n //本表字段\r\n '帖子标题': \"forumName\",\r\n '父id': \"superIds\",\r\n '帖子状态': \"forumStateTypes\",\r\n '发帖时间': \"insertTime\",\r\n '修改时间': \"updateTime\",\r\n },\r\n\r\n };\r\n },\r\n created() {\r\n this.contents = styleJs.listStyle();\r\n this.init();\r\n this.getDataList();\r\n this.contentStyleChange()\r\n },\r\n mounted() {\r\n //获取当前登录用户的信息\r\n this.sessionTable = this.$storage.get(\"sessionTable\");\r\n this.role = this.$storage.get(\"role\");\r\n this.userId = this.$storage.get(\"userId\");\r\n\r\n },\r\n filters: {\r\n htmlfilter: function (val) {\r\n return val.replace(/<[^>]*>/g).replace(/undefined/g,'');\r\n }\r\n },\r\n components: {\r\n AddOrUpdate,\r\n },\r\n computed: {\r\n },\r\n methods: {\r\n chartDialog() {\r\n let _this = this;\r\n let params = {\r\n dateFormat :\"%Y\", //%Y-%m\r\n riqi :_this.echartsDate.getFullYear(),\r\n // riqi :_this.echartsDate.getFullYear()+\"-\"+(_this.echartsDate.getMonth() + 1 < 10 ? '0' + (_this.echartsDate.getMonth() + 1) : _this.echartsDate.getMonth() + 1),\r\n thisTable : {//当前表\r\n tableName :'forum',//当前表表名,\r\n sumColum : 'forum_number', //求和字段\r\n date : 'insert_time',//分组日期字段\r\n // string : 'forum_name',//分组字符串字段\r\n // types : 'forum_types',//分组下拉框字段\r\n },\r\n // joinTable : {//级联表(可以不存在)\r\n // tableName :'yonghu',//级联表表名\r\n // // date : 'insert_time',//分组日期字段\r\n // string : 'yonghu_name',//分组字符串字段\r\n // // types : 'yonghu_types',//分组下拉框字段\r\n // }\r\n }\r\n _this.chartVisiable = true;\r\n _this.$nextTick(() => {\r\n var statistic = this.$echarts.init(document.getElementById(\"statistic\"), 'macarons');\r\n this.$http({\r\n url: \"barSum\",\r\n method: \"get\",\r\n params: params\r\n }).then(({data}) => {\r\n if(data && data.code === 0){\r\n\r\n //柱状图 求和 已成功使用\r\n //start\r\n let yAxisName = \"数值\";//根据查询数据具体改(单列要改,多列不改)\r\n let xAxisName = \"月份\";\r\n let series = [];//具体数据值\r\n data.data.yAxis.forEach(function (item,index) {\r\n let tempMap = {};\r\n // tempMap.name= [\"数值\"];//根据查询数据具体改(单列要改,多列不改)\r\n tempMap.name=data.data.legend[index];\r\n tempMap.type='bar';\r\n tempMap.data=item;\r\n series.push(tempMap);\r\n\r\n })\r\n\r\n var option = {\r\n tooltip: {\r\n trigger: 'axis',\r\n axisPointer: {\r\n type: 'cross',\r\n crossStyle: {\r\n color: '#999'\r\n }\r\n }\r\n },\r\n toolbox: {\r\n feature: {\r\n // dataView: { show: true, readOnly: false }, // 数据查看\r\n magicType: { show: true, type: ['line', 'bar'] },//切换图形展示方式\r\n // restore: { show: true }, // 刷新\r\n saveAsImage: { show: true }//保存\r\n }\r\n },\r\n legend: {\r\n data: data.data.legend//标题 可以点击导致某一列数据消失\r\n },\r\n xAxis: [\r\n {\r\n type: 'category',\r\n name: xAxisName,\r\n data: data.data.xAxis,\r\n axisPointer: {\r\n type: 'shadow'\r\n }\r\n }\r\n ],\r\n yAxis: [\r\n {\r\n type: 'value',//不能改\r\n name: yAxisName,//y轴单位\r\n axisLabel: {\r\n formatter: '{value}' // 后缀\r\n }\r\n }\r\n ],\r\n series:series//具体数据\r\n };\r\n // 使用刚指定的配置项和数据显示图表。\r\n statistic.setOption(option,true);\r\n //根据窗口的大小变动图表\r\n window.onresize = function () {\r\n statistic.resize();\r\n };\r\n //end\r\n }else {\r\n this.$message({\r\n message: \"报表未查询到数据\",\r\n type: \"success\",\r\n duration: 1500,\r\n onClose: () => {\r\n this.search();\r\n }\r\n });\r\n }\r\n });\r\n });\r\n ////饼状图\r\n //_this.chartVisiable = true;\r\n // this.$nextTick(()=>{\r\n // var statistic = this.$echarts.init(document.getElementById(\"statistic\"),'macarons');\r\n // let params = {\r\n // tableName: \"forum\",\r\n // groupColumn: \"forum_types\",\r\n // }\r\n // this.$http({\r\n // url: \"newSelectGroupCount\",\r\n // method: \"get\",\r\n // params: params\r\n // }).then(({data}) => {\r\n // if (data && data.code === 0) {\r\n // let res = data.data;\r\n // let xAxis = [];\r\n // let yAxis = [];\r\n // let pArray = []\r\n // var option = {};\r\n // for(let i=0;i<res.length;i++){\r\n // xAxis.push(res[i].name);\r\n // yAxis.push(res[i].value);\r\n // pArray.push({\r\n // value: res[i].value,\r\n // name: res[i].name\r\n // })\r\n // option = {\r\n // title: {\r\n // text: '保险合同类型统计',\r\n // left: 'center'\r\n // },\r\n // tooltip: {\r\n // trigger: 'item',\r\n // formatter: '{b} : {c} ({d}%)'\r\n // },\r\n // series: [\r\n // {\r\n // type: 'pie',\r\n // radius: '55%',\r\n // center: ['50%', '60%'],\r\n // data: pArray,\r\n // emphasis: {\r\n // itemStyle: {\r\n // shadowBlur: 10,\r\n // shadowOffsetX: 0,\r\n // shadowColor: 'rgba(0, 0, 0, 0.5)'\r\n // }\r\n // }\r\n // }\r\n // ]\r\n // };\r\n // }\r\n // statistic.setOption(option);\r\n // window.onresize = function() {\r\n // statistic.resize();\r\n // };\r\n // }\r\n // });\r\n // })\r\n },\r\n contentStyleChange() {\r\n this.contentSearchStyleChange()\r\n this.contentBtnAdAllStyleChange()\r\n this.contentSearchBtnStyleChange()\r\n this.contentTableBtnStyleChange()\r\n this.contentPageStyleChange()\r\n },\r\n contentSearchStyleChange() {\r\n this.$nextTick(() => {\r\n document.querySelectorAll('.form-content .slt .el-input__inner').forEach(el => {\r\n let textAlign = 'left'\r\n if(this.contents.inputFontPosition == 2)\r\n textAlign = 'center'\r\n if (this.contents.inputFontPosition == 3) textAlign = 'right'\r\n el.style.textAlign = textAlign\r\n el.style.height = this.contents.inputHeight\r\n el.style.lineHeight = this.contents.inputHeight\r\n el.style.color = this.contents.inputFontColor\r\n el.style.fontSize = this.contents.inputFontSize\r\n el.style.borderWidth = this.contents.inputBorderWidth\r\n el.style.borderStyle = this.contents.inputBorderStyle\r\n el.style.borderColor = this.contents.inputBorderColor\r\n el.style.borderRadius = this.contents.inputBorderRadius\r\n el.style.backgroundColor = this.contents.inputBgColor\r\n })\r\n if (this.contents.inputTitle) {\r\n document.querySelectorAll('.form-content .slt .el-form-item__label').forEach(el => {\r\n el.style.color = this.contents.inputTitleColor\r\n el.style.fontSize = this.contents.inputTitleSize\r\n el.style.lineHeight = this.contents.inputHeight\r\n })\r\n }\r\n setTimeout(() => {\r\n document.querySelectorAll('.form-content .slt .el-input__prefix').forEach(el => {\r\n el.style.color = this.contents.inputIconColor\r\n el.style.lineHeight = this.contents.inputHeight\r\n })\r\n document.querySelectorAll('.form-content .slt .el-input__suffix').forEach(el => {\r\n el.style.color = this.contents.inputIconColor\r\n el.style.lineHeight = this.contents.inputHeight\r\n })\r\n document.querySelectorAll('.form-content .slt .el-input__icon').forEach(el => {\r\n el.style.lineHeight = this.contents.inputHeight\r\n })\r\n }, 10 )\r\n })\r\n },\r\n // 搜索按钮\r\n contentSearchBtnStyleChange() {\r\n this.$nextTick(() => {\r\n document.querySelectorAll('.form-content .slt .el-button--success').forEach(el => {\r\n el.style.height = this.contents.searchBtnHeight\r\n el.style.color = this.contents.searchBtnFontColor\r\n el.style.fontSize = this.contents.searchBtnFontSize\r\n el.style.borderWidth = this.contents.searchBtnBorderWidth\r\n el.style.borderStyle = this.contents.searchBtnBorderStyle\r\n el.style.borderColor = this.contents.searchBtnBorderColor\r\n el.style.borderRadius = this.contents.searchBtnBorderRadius\r\n el.style.backgroundColor = this.contents.searchBtnBgColor\r\n })\r\n })\r\n },\r\n // 新增、批量删除\r\n contentBtnAdAllStyleChange() {\r\n this.$nextTick(() => {\r\n document.querySelectorAll('.form-content .ad .el-button--success').forEach(el => {\r\n el.style.height = this.contents.btnAdAllHeight\r\n el.style.color = this.contents.btnAdAllAddFontColor\r\n el.style.fontSize = this.contents.btnAdAllFontSize\r\n el.style.borderWidth = this.contents.btnAdAllBorderWidth\r\n el.style.borderStyle = this.contents.btnAdAllBorderStyle\r\n el.style.borderColor = this.contents.btnAdAllBorderColor\r\n el.style.borderRadius = this.contents.btnAdAllBorderRadius\r\n el.style.backgroundColor = this.contents.btnAdAllAddBgColor\r\n })\r\n document.querySelectorAll('.form-content .ad .el-button--danger').forEach(el => {\r\n el.style.height = this.contents.btnAdAllHeight\r\n el.style.color = this.contents.btnAdAllDelFontColor\r\n el.style.fontSize = this.contents.btnAdAllFontSize\r\n el.style.borderWidth = this.contents.btnAdAllBorderWidth\r\n el.style.borderStyle = this.contents.btnAdAllBorderStyle\r\n el.style.borderColor = this.contents.btnAdAllBorderColor\r\n el.style.borderRadius = this.contents.btnAdAllBorderRadius\r\n el.style.backgroundColor = this.contents.btnAdAllDelBgColor\r\n })\r\n document.querySelectorAll('.form-content .ad .el-button--warning').forEach(el => {\r\n el.style.height = this.contents.btnAdAllHeight\r\n el.style.color = this.contents.btnAdAllWarnFontColor\r\n el.style.fontSize = this.contents.btnAdAllFontSize\r\n el.style.borderWidth = this.contents.btnAdAllBorderWidth\r\n el.style.borderStyle = this.contents.btnAdAllBorderStyle\r\n el.style.borderColor = this.contents.btnAdAllBorderColor\r\n el.style.borderRadius = this.contents.btnAdAllBorderRadius\r\n el.style.backgroundColor = this.contents.btnAdAllWarnBgColor\r\n })\r\n })\r\n },\r\n // 表格\r\n rowStyle({row, rowIndex}) {\r\n if (rowIndex % 2 == 1) {\r\n if (this.contents.tableStripe) {\r\n return {color: this.contents.tableStripeFontColor}\r\n }\r\n } else {\r\n return ''\r\n }\r\n },\r\n cellStyle({row, rowIndex}) {\r\n if (rowIndex % 2 == 1) {\r\n if (this.contents.tableStripe) {\r\n return {backgroundColor: this.contents.tableStripeBgColor}\r\n }\r\n } else {\r\n return ''\r\n }\r\n },\r\n headerRowStyle({row, rowIndex}) {\r\n return {color: this.contents.tableHeaderFontColor}\r\n },\r\n headerCellStyle({row, rowIndex}) {\r\n return {backgroundColor: this.contents.tableHeaderBgColor}\r\n },\r\n // 表格按钮\r\n contentTableBtnStyleChange() {\r\n // this.$nextTick(()=>{\r\n // setTimeout(()=>{\r\n // document.querySelectorAll('.table-content .tables .el-table__body .el-button--success').forEach(el=>{\r\n // el.style.height = this.contents.tableBtnHeight\r\n // el.style.color = this.contents.tableBtnDetailFontColor\r\n // el.style.fontSize = this.contents.tableBtnFontSize\r\n // el.style.borderWidth = this.contents.tableBtnBorderWidth\r\n // el.style.borderStyle = this.contents.tableBtnBorderStyle\r\n // el.style.borderColor = this.contents.tableBtnBorderColor\r\n // el.style.borderRadius = this.contents.tableBtnBorderRadius\r\n // el.style.backgroundColor = this.contents.tableBtnDetailBgColor\r\n // })\r\n // document.querySelectorAll('.table-content .tables .el-table__body .el-button--primary').forEach(el=>{\r\n // el.style.height = this.contents.tableBtnHeight\r\n // el.style.color = this.contents.tableBtnEditFontColor\r\n // el.style.fontSize = this.contents.tableBtnFontSize\r\n // el.style.borderWidth = this.contents.tableBtnBorderWidth\r\n // el.style.borderStyle = this.contents.tableBtnBorderStyle\r\n // el.style.borderColor = this.contents.tableBtnBorderColor\r\n // el.style.borderRadius = this.contents.tableBtnBorderRadius\r\n // el.style.backgroundColor = this.contents.tableBtnEditBgColor\r\n // })\r\n // document.querySelectorAll('.table-content .tables .el-table__body .el-button--danger').forEach(el=>{\r\n // el.style.height = this.contents.tableBtnHeight\r\n // el.style.color = this.contents.tableBtnDelFontColor\r\n // el.style.fontSize = this.contents.tableBtnFontSize\r\n // el.style.borderWidth = this.contents.tableBtnBorderWidth\r\n // el.style.borderStyle = this.contents.tableBtnBorderStyle\r\n // el.style.borderColor = this.contents.tableBtnBorderColor\r\n // el.style.borderRadius = this.contents.tableBtnBorderRadius\r\n // el.style.backgroundColor = this.contents.tableBtnDelBgColor\r\n // })\r\n\r\n // }, 50)\r\n // })\r\n },\r\n // 分页\r\n contentPageStyleChange() {\r\n let arr = []\r\n if (this.contents.pageTotal) arr.push('total')\r\n if (this.contents.pageSizes) arr.push('sizes')\r\n if (this.contents.pagePrevNext) {\r\n arr.push('prev')\r\n if (this.contents.pagePager) arr.push('pager')\r\n arr.push('next')\r\n }\r\n if (this.contents.pageJumper) arr.push('jumper')\r\n this.layouts = arr.join()\r\n this.contents.pageEachNum = 10\r\n },\r\n\r\n init() {\r\n },\r\n search() {\r\n this.pageIndex = 1;\r\n this.getDataList();\r\n },\r\n // 获取数据列表\r\n getDataList() {\r\n this.dataListLoading = true;\r\n let params = {\r\n page: this.pageIndex,\r\n limit: this.pageSize,\r\n sort: 'id',\r\n forumStateTypes:1\r\n }\r\n\r\n \r\n if (this.searchForm.yonghuName!= '' && this.searchForm.yonghuName!= undefined) {\r\n params['yonghuName'] = '%' + this.searchForm.yonghuName + '%'\r\n }\r\n \r\n if (this.searchForm.forumName!= '' && this.searchForm.forumName!= undefined) {\r\n params['forumName'] = '%' + this.searchForm.forumName + '%'\r\n }\r\n \r\n params['forumDelete'] = 1// 逻辑删除字段 1 未删除 2 删除\r\n\r\n\r\n this.$http({\r\n url: \"forum/list\",\r\n method: \"get\",\r\n params: params\r\n }).then(({data}) => {\r\n if(data && data.code === 0){\r\n this.dataList = data.data.list;\r\n this.totalPage = data.data.total;\r\n }else{\r\n this.dataList = [];\r\n this.totalPage = 0;\r\n }\r\n this.dataListLoading = false;\r\n });\r\n\r\n //查询级联表搜索条件所有列表\r\n //查询当前表搜索条件所有列表\r\n },\r\n //每页数\r\n sizeChangeHandle(val) {\r\n this.pageSize = val;\r\n this.pageIndex = 1;\r\n this.getDataList();\r\n },\r\n // 当前页\r\n currentChangeHandle(val) {\r\n this.pageIndex = val;\r\n this.getDataList();\r\n },\r\n // 多选\r\n selectionChangeHandler(val) {\r\n this.dataListSelections = val;\r\n },\r\n // 添加/修改\r\n addOrUpdateHandler(id, type) {\r\n this.showFlag = false;\r\n this.addOrUpdateFlag = true;\r\n this.crossAddOrUpdateFlag = false;\r\n if (type != 'info') {\r\n type = 'else';\r\n }\r\n this.$nextTick(() => {\r\n this.$refs.addOrUpdate.init(id, type);\r\n });\r\n },\r\n // 下载\r\n download(file) {\r\n window.open(\" ${file} \")\r\n },\r\n // 删除\r\n deleteHandler(id) {\r\n var ids = id ? [Number(id)] : this.dataListSelections.map(item => {\r\n return Number(item.id);\r\n });\r\n\r\n this.$confirm(`确定进行[${id ? \"删除\" : \"批量删除\"}]操作?`, \"提示\", {\r\n confirmButtonText: \"确定\",\r\n cancelButtonText: \"取消\",\r\n type: \"warning\"\r\n }).then(() => {\r\n this.$http({\r\n url: \"forum/delete\",\r\n method: \"post\",\r\n data: ids\r\n }).then(({data}) => {\r\n if(data && data.code === 0){\r\n this.$message({\r\n message: \"操作成功\",\r\n type: \"success\",\r\n duration: 1500,\r\n onClose: () => {\r\n this.forumReplyDialogVisible = false;\r\n this.search();\r\n }\r\n });\r\n }else{\r\n this.$message.error(data.msg);\r\n }\r\n });\r\n });\r\n },\r\n // 导入功能上传文件成功后调用导入方法\r\n forumUploadSuccess(data){\r\n let _this = this;\r\n _this.$http({\r\n url: \"forum/batchInsert?fileName=\" + data.file,\r\n method: \"get\"\r\n }).then(({data}) => {\r\n if(data && data.code === 0){\r\n _this.$message({\r\n message: \"导入论坛数据成功\",\r\n type: \"success\",\r\n duration: 1500,\r\n onClose: () => {\r\n _this.search();\r\n }\r\n });\r\n }else{\r\n _this.$message.error(data.msg);\r\n }\r\n });\r\n\r\n },\r\n // 导入功能上传文件失败后调用导入方法\r\n forumUploadError(data){\r\n this.$message.error('上传失败');\r\n },\r\n // 打开回帖模态框\r\n openReplyForum(id,forumName,forumContent) {\r\n let _this = this;\r\n // 当前帖子相关 start\r\n _this.superIds = id;\r\n _this.forumTitle = forumName;\r\n _this.forumContent = forumContent;\r\n // 当前帖子相关 end\r\n _this.forumReplyContent = \"\";//帖子回复\r\n _this.forumReplyDialogVisible = true;//论坛回复模态框\r\n _this.forumReplyInfoDialogVisible = false;//论坛回复详情模态框\r\n\r\n\r\n // 查看当前帖子的回复列表\r\n let params = {\r\n page: 1,\r\n limit: 10000,\r\n sort: 'id',\r\n forumStateTypes:2,\r\n superIds:_this.superIds\r\n }\r\n _this.$http({\r\n url: \"forum/list\",\r\n method: \"get\",\r\n params: params\r\n }).then(({data}) => {\r\n if (data && data.code === 0) {\r\n _this.forumData = [];\r\n data.data.list.forEach(el=>{\r\n let forum = {};\r\n forum.id = el.id;\r\n forum.forumName = el.forumName;\r\n forum.yonghuId = el.yonghuId;//---\r\n forum.yonghuName = el.yonghuName;\r\n forum.yonghuPhoto = el.yonghuPhoto;\r\n forum.yonghuPhone = el.yonghuPhone;\r\n forum.yonghuEmail = el.yonghuEmail;\r\n forum.newMoney = el.newMoney;\r\n forum.yonghuDelete = el.yonghuDelete;\r\n forum.createTime = el.createTime;\r\n forum.usersId = el.usersId;//---\r\n forum.username = el.username;\r\n forum.password = el.password;\r\n forum.role = el.role;\r\n forum.addtime = el.addtime;\r\n forum.forumContent = el.forumContent;\r\n forum.superIds = el.superIds;\r\n forum.forumStateTypes = el.forumStateTypes;\r\n forum.insertTime = el.insertTime;\r\n forum.updateTime = el.updateTime;\r\n forum.createTime = el.createTime;\r\n _this.forumData.push(forum);\r\n })\r\n }\r\n });\r\n },\r\n\r\n // 查看某个回复帖子的帖子内容全部\r\n seeForumContent(forumContent) {\r\n let _this = this;\r\n _this.forumReplyInfoContent = forumContent;//帖子某个回复详情 全\r\n _this.forumReplyInfoDialogVisible = true;//论坛回复详情模态框\r\n },\r\n // 删除数据\r\n deleteForumData(id){\r\n let _this = this;\r\n let ids = [];\r\n ids.push(Number(id));\r\n _this.$http({\r\n url: \"forum/delete\",\r\n method: \"post\",\r\n data: ids\r\n }).then(({data}) => {\r\n if(data && data.code === 0){\r\n _this.$message({\r\n message: \"删除回帖成功\",\r\n type: \"success\",\r\n duration: 1500,\r\n onClose: () => {\r\n _this.openReplyForum(_this.superIds,_this.forumTitle,_this.forumContent);\r\n }\r\n });\r\n }else{\r\n _this.$message.error(data.msg);\r\n }\r\n });\r\n },\r\n\r\n // 回帖\r\n forumReply() {\r\n let _this = this;\r\n if(_this.forumReplyContent == \"\"){\r\n alert(\"请输入回帖内容\");\r\n return false;\r\n }\r\n let data = {\"superIds\":_this.superIds,\"forumStateTypes\":2,\"forumContent\":_this.forumReplyContent};\r\n _this.$http({\r\n url:`forum/save`,\r\n method: \"post\",\r\n data: data\r\n }).then(({ data }) => {\r\n if (data && data.code === 0) {\r\n _this.$message({\r\n message: \"回帖成功\",\r\n type: \"success\",\r\n duration: 1500,\r\n onClose: () => {\r\n _this.openReplyForum(_this.superIds,_this.forumTitle,_this.forumContent);\r\n }\r\n });\r\n } else {\r\n _this.$message.error(data.msg);\r\n }\r\n });\r\n }, }\r\n };\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.slt {\r\n margin: 0 !important;\r\n display: flex;\r\n }\r\n\r\n .ad {\r\n margin: 0 !important;\r\n display: flex;\r\n }\r\n\r\n .pages {\r\n & /deep/ el-pagination__sizes{\r\n & /deep/ el-input__inner {\r\n height: 22px;\r\n line-height: 22px;\r\n }\r\n }\r\n }\r\n \r\n\r\n .el-button+.el-button {\r\n margin:0;\r\n } \r\n\r\n .tables {\r\n\t& /deep/ .el-button--success {\r\n\t\theight: 40px;\r\n\t\tcolor: #333;\r\n\t\tfont-size: 14px;\r\n\t\tborder-width: 1px;\r\n\t\tborder-style: solid;\r\n\t\tborder-color: #DCDFE6;\r\n\t\tborder-radius: 4px;\r\n\t\tbackground-color: rgba(117, 113, 249, 1);\r\n\t}\r\n\t\r\n\t& /deep/ .el-button--primary {\r\n\t\theight: 40px;\r\n\t\tcolor: #333;\r\n\t\tfont-size: 14px;\r\n\t\tborder-width: 1px;\r\n\t\tborder-style: solid;\r\n\t\tborder-color: #DCDFE6;\r\n\t\tborder-radius: 4px;\r\n\t\tbackground-color: rgba(102, 204, 255, 1);\r\n\t}\r\n\t\r\n\t& /deep/ .el-button--danger {\r\n\t\theight: 40px;\r\n\t\tcolor: #333;\r\n\t\tfont-size: 14px;\r\n\t\tborder-width: 1px;\r\n\t\tborder-style: solid;\r\n\t\tborder-color: #DCDFE6;\r\n\t\tborder-radius: 4px;\r\n\t\tbackground-color: rgba(204, 255, 102, 1);\r\n\t}\r\n\r\n & /deep/ .el-button {\r\n margin: 4px;\r\n }\r\n }\r\n</style>\r\n\r\n\r\n"]}]} |