1 |
- {"remainingRequest":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\order\\manageO\\OrderAdd.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\order\\manageO\\OrderAdd.vue","mtime":1678954023624},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\babel.config.js","mtime":1681371897685},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1681371912860},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1681371925849}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IFJlZ2lvblNlbGVjdCBmcm9tICJAL2NvbXBvbmVudC9jb21tb24vUmVnaW9uU2VsZWN0SlNPTiI7CmltcG9ydCBDb25kaXRpb25TZWxHb29kcyBmcm9tICJAL2NvbXBvbmVudC9jb21tb24vQ29uZGl0aW9uU2VsR29vZHMiOwppbXBvcnQgeyBnZXRPcmRlckluZm9CeUlkLCBuZXdPcmRlckVkaXQsIG5ld0FkZE9yZGVyIH0gZnJvbSAiQC9hcGkvT3JkZXIiOwppbXBvcnQgeyBhZGRTaGlwcGluZ0FkZHJlc3MsIGdldEFsbFNoaXBwaW5nQWRkcmVzcyB9IGZyb20gIkAvYXBpL0N1c3RvbWVyIjsKaW1wb3J0IHsgZ2V0QWxsRGVsaXZlcnksIGdldEFsbFNlbGZFeHByZXNzUnVsZSB9IGZyb20gIkAvYXBpL1N5c3RlbSI7CmltcG9ydCB7IGFkZFBhdXNlU2F2ZSwgZ2V0UGF1c2VTYXZlLCBkZWxQYXVzZVNhdmUgfSBmcm9tICJAL2FwaS9jb21tb24iOwppbXBvcnQgQWNjb3VudFR5cGUgZnJvbSAiQC92aWV3cy9GaW5hbmNlL0FjY291bnRUeXBlIjsKaW1wb3J0IFNlbGVjdEN1c3RvbWVyIGZyb20gIkAvY29tcG9uZW50L2NvbW1vbi9TZWxlY3RDdXN0b21lci52dWUiOwpjb25zdCBnb29kc0l0ZW0gPSB7CiAgc2t1SWQ6IDAsCiAgY29kZTogIiIsCiAgZ29vZHNJZDogMCwKICBidXlOdW06IDEsCiAgc2hvcElkOiAwLAogIGJhc2ljR29vZHNJZDogMCwKICBnb29kc05hbWU6ICIiLAogIHVuaXROYW1lOiAiIiwKICBzcGVjR3JvdXA6ICIiLAogIGludmVudG9yeTogMCwKICBzYWxlUHJpY2U6IDAsCiAgc3ViTW9uZXk6IDAsCiAgc2hvcE5hbWU6ICIiLAogIGdvb2RzSW1hZ2VzOiAiIiwKICBicmFuZElkOiAwLAogIGJyYW5kTmFtZTogIiIsCiAgY2F0ZWdvcnlQYXRoOiAiIiwKICBjYXRlZ29yeU5hbWU6ICIiLAogIGNvbnZlcnNpb246ICIiLAogIGJhckNvZGU6ICIiLAogIHN0b3JhZ2VDb2RlOiAiIiwKICB3YXJlaG91c2VJZDogMCwKICBvcmlnaW5QcmljZTogIiIsCiAgc3BlY1R5cGU6ICIiCn07CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiT3JkZXJBZGQiLAogIGNvbXBvbmVudHM6IHsKICAgIFNlbGVjdEN1c3RvbWVyLAogICAgUmVnaW9uU2VsZWN0LAogICAgQ29uZGl0aW9uU2VsR29vZHMsCiAgICBBY2NvdW50VHlwZQogIH0sCgogIGRhdGEoKSB7CiAgICBjb25zdCB2YWxpZGF0ZU1vYmlsZSA9IChydWxlLCB2YWx1ZSwgY2FsbGJhY2spID0+IHsKICAgICAgY29uc3QgcmUgPSAvXjFbMzQ1Njc4OV1cZHs5fSQvOyAvLyDmraPliJnooajovr7lvI8KCiAgICAgIGlmICh2YWx1ZSA9PT0gIiIpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoKSk7CiAgICAgIH0gZWxzZSBpZiAoIXJlLnRlc3QodmFsdWUpKSB7CiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCLmiYvmnLrlj7fmoLzlvI/mnInor6/vvIzor7fph43mlrDovpPlhaUhIikpOwogICAgICB9IGVsc2UgewogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH07CgogICAgY29uc3QgdmFsaWRhdGVBZGRyZXNzSWQgPSAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSA9PiB7CiAgICAgIGlmICh0aGlzLmFkZF9mb3JtLmRlbGl2ZXJ5VHlwZSAhPT0gMikgewogICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcigi6K+36YCJ5oup5pS26LSn5L+h5oGvIikpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9OwoKICAgIHJldHVybiB7CiAgICAgIGFkZHJlc3NfbmFtZTogIiIsCiAgICAgIHdhcmVob3VzZTogIiIsCiAgICAgIHdhcmVob3VzZV9zaG93OiBmYWxzZSwKICAgICAgYWNjb3VudF9zaG9wSWQ6IDAsCiAgICAgIGFjY291bnRfc2hvdzogZmFsc2UsCiAgICAgIC8vIOe7k+eul+i0puaItwogICAgICAvLyDmlrDlop7lnLDlnYAKICAgICAgQWRkQWRkcmVzczogZmFsc2UsCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICB1c2VyQ2VudGVySWQ6ICIiLAogICAgICBkZWxpdmVyeVR5cGVfbGlzdDogW10sCiAgICAgIHNhbGVPcmRlckdvb2RzOiBbXSwKICAgICAgLy/llYblk4HmuIXljZUKICAgICAgZ2l2ZWF3YXlHb29kczogW10sCiAgICAgIC8v6LWg5ZOB5ZOB5riF5Y2VCiAgICAgIGFkZF9ydWxlczogewogICAgICAgIGN1c3RvbWVySWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fpgInmi6notK3kubDlrqLmiLciLAogICAgICAgICAgdHJpZ2dlcjogImNoYW5nZSIKICAgICAgICB9XSwKICAgICAgICBhZGRyZXNzSWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIHZhbGlkYXRvcjogdmFsaWRhdGVBZGRyZXNzSWQsCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dLAogICAgICAgIGRlbGl2ZXJ5VHlwZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+mAieaLqemFjemAgeaWueW8jyIsCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIGZvcm1fcnVsZXM6IHsKICAgICAgICBuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+35aGr5YaZ5pS26LSn5Lq6IiwKICAgICAgICAgIHRyaWdnZXI6ICJjaGFuZ2UiCiAgICAgICAgfV0sCiAgICAgICAgYWRkcmVzczogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+i+k+WFpeivpue7huWcsOWdgCIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSwKICAgICAgICBtb2JpbGU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7floavlhpnogZTns7vmlrnlvI8iLAogICAgICAgICAgdHJpZ2dlcjogImJsdXIiCiAgICAgICAgfSwgewogICAgICAgICAgdmFsaWRhdG9yOiB2YWxpZGF0ZU1vYmlsZSwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIHByb3ZpbmNlQ29kZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+mAieaLqeaUtui0p+WcsOWdgCIsCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIG1vYmlsZTogIiIsCiAgICAgIGFkZHJlc3M6ICIiLAoKICAgICAgLyoKICAgICAgKgogICAgICAqICdpb3MnICAgICAgICAgPT4gMSwgLy9pb3MKICAgICAgICAnYW5kcm9pZCcgICAgID0+IDIsLy/lronljZMKICAgICAgICAnbWluaVByb2dyYW0nID0+IDMsLy/lsI/nqIvluo8KICAgICAgICAnbWFuYWdlJyAgICAgID0+IDQsIC8v5ZCO5Y+w5Yib5bu6CiAgICAgICAgJ0g1JyAgICAgICAgICA9PiA1LCAvL0g16aG16Z2iCiAgICAgICAgJ1BjJyAgICAgICAgICA9PiA2LCAvL1Bj6aG16Z2iCiAgICAgICogKi8KICAgICAgYWRkcmVzc19saXN0OiBbXSwKICAgICAgLy/mlLbotKflnLDlnYDliJfooagKICAgICAgYWNjb3VudE5hbWU6ICIiLAogICAgICBhZGRfZm9ybTogewogICAgICAgIGN1cnJlbnRBY2NvdW50TmFtZTogIiIsCiAgICAgICAgcmVjZWl2ZWRNb25leTogMCwKICAgICAgICBhY2NvdW50TGlzdDogW10sCiAgICAgICAgZGVsaXZlcnlUeXBlOiAiIiwKICAgICAgICAvL+mFjemAgeaWueW8jwogICAgICAgIGN1c3RvbWVyTmFtZTogIiIsCiAgICAgICAgLy/lrqLmiLflkI3np7AKICAgICAgICBjdXN0b21lcklkOiAiIiwKICAgICAgICByZW1hcms6ICIiLAogICAgICAgIC8vIOWkh+azqAogICAgICAgIGFkZHJlc3NJZDogIiIsCiAgICAgICAgLy8g5pS26LSn5Zyw5Z2ACiAgICAgICAgc2VsZlJ1bGVJZDogW10sCiAgICAgICAgc2VsZlJ1bGVEYXRhOiB7fSwKICAgICAgICBwYXlUeXBlOiAzLAogICAgICAgIC8v5pSv5LuY5pa55byPCiAgICAgICAgcGFydGljdWxhcnNUeXBlOiAiIiAvL+eJqea1geivpuaDhQoKICAgICAgfSwKICAgICAgdG90YWxSZWR1Y2VNb25leTogMCwKICAgICAgLy8g5LyY5oOg6YeR6aKdCiAgICAgIC8vIOaWsOWinuWcsOWdgAogICAgICByZWdpb25OYW1lOiBbXSwKICAgICAgLy/mlrDlop7mlLbotKflnLDlnYAKICAgICAgZm9ybTogewogICAgICAgIG5hbWU6ICIiLAogICAgICAgIHByb3ZpbmNlQ29kZTogIiIsCiAgICAgICAgY2l0eUNvZGU6ICIiLAogICAgICAgIGRpc3RyaWN0Q29kZTogIiIsCiAgICAgICAgYWRkcmVzczogIiIsCiAgICAgICAgbW9iaWxlOiAiIiwKICAgICAgICBkZWZhdWx0U3RhdHVzOiA1CiAgICAgIH0sCiAgICAgIHBhZ2VOYW1lOiAiIiwKICAgICAgb3JkZXJJZDogIiIsCiAgICAgIGdvb2RzX2luZGV4OiAwLAogICAgICBnaXZlX2dvb2RzX2luZGV4OiAwLAogICAgICAvLyDotaDlk4HkuIvmoIcKICAgICAgc3BlY19jaGVjazogW10sCiAgICAgIC8vIOWxnuaApwogICAgICBzZWxmX2V4cHJlc3NfbGlzdDogW10sCiAgICAgIC8v6Ieq5o+Q54K5CiAgICAgIG9yZGVyX2RldGFpbDoge30sCiAgICAgIC8v6K6i5Y2V6K+m5oOFCiAgICAgIGNoYW5nZV9udW06IDAsCiAgICAgIHBheVdheTogMywKICAgICAgLy/mlK/ku5jmlrnlvI8KICAgICAgb3BlcmF0b3JOYW1lOiAiIiwKICAgICAgc2hvcF9pZDogIiIsCiAgICAgIHBheVR5cGVfbGlzdDogW3sKICAgICAgICBsYWJlbDogIui0p+WIsOS7mOasviIsCiAgICAgICAgdmFsdWU6IDMKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAi5YWI5qy+5ZCO6LSnIiwKICAgICAgICB2YWx1ZTogOQogICAgICB9XSwKICAgICAgcGFydGljdWxhcnNUeXBlX2xpc3Q6IFt7CiAgICAgICAgbGFiZWw6ICLnianmtYHkuJPnur8iLAogICAgICAgIHZhbHVlOiA0CiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogIueJqea1geS4k+i9piIsCiAgICAgICAgdmFsdWU6IDUKICAgICAgfV0KICAgIH07CiAgfSwKCiAgY29tcHV0ZWQ6IHsKICAgIC8vIOWVhuWTgeaAu+minQogICAgb3JkZXJBbW91bnQoKSB7CiAgICAgIGlmICghdGhpcy5zYWxlT3JkZXJHb29kcy5sZW5ndGgpIHsKICAgICAgICByZXR1cm4gMDsKICAgICAgfSBlbHNlIGlmICh0aGlzLnNhbGVPcmRlckdvb2RzLmxlbmd0aCA9PT0gMSkgewogICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5zYWxlT3JkZXJHb29kc1swXS5zdWJNb25leSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbGV0IHN1bSA9IDA7CiAgICAgICAgdGhpcy5zYWxlT3JkZXJHb29kcy5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgICAgc3VtID0gdGhpcy4kTlAucGx1cyhzdW0sIE51bWJlcihpdGVtLnN1Yk1vbmV5KSB8fCAwKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gc3VtOwogICAgICB9CiAgICB9LAoKICAgIHBheU1vbmV5KCkgewogICAgICByZXR1cm4gdGhpcy4kTlAubWludXModGhpcy5vcmRlckFtb3VudCB8fCAwLCB0aGlzLnRvdGFsUmVkdWNlTW9uZXkgfHwgMCk7CiAgICB9CgogIH0sCgogIGFzeW5jIGNyZWF0ZWQoKSB7CiAgICAvLyDphY3pgIHmlrnlvI8KICAgIGF3YWl0IHRoaXMuZ2V0QWxsRGVsaXZlcnkoKTsgLy8g6I635Y+W6Ieq5o+Q54K5CgogICAgYXdhaXQgdGhpcy5nZXRBbGxTZWxmRXhwcmVzc1J1bGUoKTsKICAgIHRoaXMucGFnZU5hbWUgPSB0aGlzLiRyb3V0ZS5uYW1lOwogICAgdGhpcy5vcmRlcklkID0gdGhpcy4kcm91dGUucGFyYW1zLmlkOwogICAgdGhpcy51c2VyQ2VudGVySWQgPSB0aGlzLiRyb3V0ZS5wYXJhbXMudXNlckNlbnRlcklkOwogICAgdGhpcy5hZGRfZm9ybS5jdXJyZW50QWNjb3VudE5hbWUgPSB0aGlzLnVzZXJOYW1lOwoKICAgIGlmICh0aGlzLm9yZGVySWQpIHsKICAgICAgLy8g6I635Y+W6K6i5Y2V6K+m5oOFCiAgICAgIGF3YWl0IHRoaXMuZ2V0T3JkZXJJbmZvQnlJZCgpOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5wdXNoR29vZHMoKTsgLy8g6I635Y+W5pqC5a2Y5L+h5oGvCgogICAgICBhd2FpdCB0aGlzLmdldFBhdXNlU2F2ZSgpOwogICAgfQogIH0sCgogIG1ldGhvZHM6IHsKICAgIHB1c2hHb29kcygpIHsKICAgICAgdGhpcy5zYWxlT3JkZXJHb29kcyA9IFtdOwoKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxOyBpKyspIHsKICAgICAgICB0aGlzLnNhbGVPcmRlckdvb2RzLnB1c2godGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUoZ29vZHNJdGVtKSk7CiAgICAgIH0KICAgIH0sCgogICAgLy8g5ou86Z+z5ZWG5ZOB5ZCN56ewCiAgICBnb29kc1Zpc2libGVDaGFuZ2UodmlzaWJsZSwgaW5kZXgpIHsKICAgICAgaWYgKHZpc2libGUpIHsKICAgICAgICB0aGlzLmdvb2RzX2luZGV4ID0gaW5kZXg7CiAgICAgIH0KICAgIH0sCgogICAgZ2l2ZWF3YXlWaXNpYmxlQ2hhbmdlKHZpc2libGUsIGluZGV4KSB7CiAgICAgIGlmICh2aXNpYmxlKSB7CiAgICAgICAgdGhpcy5naXZlX2dvb2RzX2luZGV4ID0gaW5kZXg7CiAgICAgIH0KICAgIH0sCgogICAgc3BlY1NlbENvbmZpcm0ocGFyYW1zKSB7CiAgICAgIGNvbnNvbGUubG9nKHBhcmFtcy5nb29kc0QpOwoKICAgICAgaWYgKHBhcmFtcy5ub3dfZ29vZHNfZGF0YS5pc0VxID09PSA1KSB7CiAgICAgICAgY29uc3QgZ29vZHMgPSB0aGlzLnNhbGVPcmRlckdvb2RzLmZpbmQoaXRlbSA9PiB7CiAgICAgICAgICByZXR1cm4gaXRlbS5nb29kc0lkID09PSBwYXJhbXMubm93X2dvb2RzX2RhdGEuaWQ7CiAgICAgICAgfSk7CgogICAgICAgIGlmIChnb29kcykgewogICAgICAgICAgY29uc3QgcmVwZWF0R29vZHMgPSBwYXJhbXMuZ29vZHNELmZpbmQoZ2YgPT4gZ2Yuc3BlYy51bml0TmFtZSAhPT0gZ29vZHMudW5pdE5hbWUpOwoKICAgICAgICAgIGlmIChyZXBlYXRHb29kcykgewogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoYOOAkCR7cGFyYW1zLm5vd19nb29kc19kYXRhLnRpdGxlfeOAkeS4uuaKhOeggeWVhuWTge+8jOWPquiDvemAieaLqeS4gOS4quWNleS9jei/m+ihjOS4i+WNlWApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGxldCB1bml0SWQgPSBwYXJhbXMuZ29vZHNEWzBdLnNwZWMudW5pdElkOwogICAgICAgICAgbGV0IGlzUmVwZWF0ID0gcGFyYW1zLmdvb2RzRC5ldmVyeShpdGVtID0+IGl0ZW0uc3BlYy51bml0SWQgPT09IHVuaXRJZCk7CgogICAgICAgICAgaWYgKCFpc1JlcGVhdCkgewogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoYOOAkCR7cGFyYW1zLm5vd19nb29kc19kYXRhLnRpdGxlfeOAkeS4uuaKhOeggeWVhuWTge+8jOWPquiDvemAieaLqeS4gOS4quWNleS9jei/m+ihjOS4i+WNlWApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICBjb25zdCBnb29kc0RhdGEgPSBwYXJhbXMuZ29vZHNELm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgc2t1SWQ6IGl0ZW0uc2t1SWQsCiAgICAgICAgICBjb2RlOiBwYXJhbXMubm93X2dvb2RzX2RhdGEuY29kZSwKICAgICAgICAgIGdvb2RzSWQ6IHBhcmFtcy5ub3dfZ29vZHNfZGF0YS5pZCwKICAgICAgICAgIGJ1eU51bTogMSwKICAgICAgICAgIHNob3BJZDogcGFyYW1zLm5vd19nb29kc19kYXRhLnNob3BJZCwKICAgICAgICAgIGJhc2ljR29vZHNJZDogcGFyYW1zLm5vd19nb29kc19kYXRhLmJhc2ljR29vZHNJZCwKICAgICAgICAgIGdvb2RzTmFtZTogcGFyYW1zLm5vd19nb29kc19kYXRhLnRpdGxlLAogICAgICAgICAgdW5pdE5hbWU6IGl0ZW0uc3BlYy51bml0TmFtZSwKICAgICAgICAgIHNwZWNHcm91cDogaXRlbS5zcGVjLnNwZWNHcm91cCwKICAgICAgICAgIGludmVudG9yeTogaXRlbS5zcGVjLmludmVudG9yeSwKICAgICAgICAgIHNhbGVQcmljZTogaXRlbS5zcGVjLnNhbGVQcmljZSwKICAgICAgICAgIHN1Yk1vbmV5OiBpdGVtLnNwZWMuc2FsZVByaWNlLAogICAgICAgICAgc2hvcE5hbWU6IHBhcmFtcy5ub3dfZ29vZHNfZGF0YS5zaG9wTmFtZSwKICAgICAgICAgIGdvb2RzSW1hZ2VzOiBpdGVtLnNwZWMuc3BlY0ltYWdlIHx8IHBhcmFtcy5ub3dfZ29vZHNfZGF0YS5pbWFnZXNbMF0sCiAgICAgICAgICBicmFuZElkOiBwYXJhbXMubm93X2dvb2RzX2RhdGEuYnJhbmRJZCwKICAgICAgICAgIGJyYW5kTmFtZTogcGFyYW1zLm5vd19nb29kc19kYXRhLmJyYW5kTmFtZSwKICAgICAgICAgIGNhdGVnb3J5UGF0aDogcGFyYW1zLm5vd19nb29kc19kYXRhLmNhdGVnb3J5UGF0aCwKICAgICAgICAgIGNhdGVnb3J5TmFtZTogcGFyYW1zLm5vd19nb29kc19kYXRhLmNhdGVnb3J5TmFtZSwKICAgICAgICAgIGNvbnZlcnNpb246IGl0ZW0uc3BlYy5jb252ZXJzaW9uLAogICAgICAgICAgYmFyQ29kZTogaXRlbS5zcGVjLmJhckNvZGUsCiAgICAgICAgICBzdG9yYWdlQ29kZTogcGFyYW1zLm5vd19nb29kc19kYXRhLnN0b3JhZ2UsCiAgICAgICAgICB3YXJlaG91c2VJZDogcGFyYW1zLm5vd19nb29kc19kYXRhLndhcmVob3VzZUlkLAogICAgICAgICAgb3JpZ2luUHJpY2U6IGl0ZW0uc3BlYy5vcmlnaW5QcmljZSwKICAgICAgICAgIHNwZWNUeXBlOiBpdGVtLnNwZWMuc3BlY1R5cGUsCiAgICAgICAgICBzdXBwbGllcklkOiBpdGVtLnN1cHBsaWVySWQsCiAgICAgICAgICBzdXBwbGllck5hbWU6IGl0ZW0uc3VwcGxpZXJOYW1lLAogICAgICAgICAgaXNFcTogaXRlbS5pc0VxLAogICAgICAgICAgaXNNYXN0ZXI6IGl0ZW0uc3BlYy5pc01hc3RlciwKICAgICAgICAgIGlzRGlzdHJpYnV0aW9uOiBpdGVtLmlzRGlzdHJpYnV0aW9uLAogICAgICAgICAgbWVyY2hhbnRJZDogaXRlbS5tZXJjaGFudElkCiAgICAgICAgfTsKICAgICAgfSk7IC8vIHRoaXMuc2FsZU9yZGVyR29vZHMgPSB0aGlzLiRfY29tbW9uLnVuaXF1ZSgKICAgICAgLy8gICBnb29kc0RhdGEuY29uY2F0KHRoaXMuc2FsZU9yZGVyR29vZHMpLAogICAgICAvLyAgIFsiZ29vZHNJZCIsICJza3VJZCJdCiAgICAgIC8vICk7CgogICAgICB0aGlzLnNhbGVPcmRlckdvb2RzID0gZ29vZHNEYXRhLmNvbmNhdCh0aGlzLnNhbGVPcmRlckdvb2RzKTsKICAgIH0sCgogICAgLy8g6LWg5ZOBCiAgICBnaXZlYXdheVNwZWNTZWxDb25maXJtKHBhcmFtcykgewogICAgICBjb25zdCBnb29kc0RhdGEgPSBwYXJhbXMuZ29vZHNELm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgc2t1SWQ6IGl0ZW0uc2t1SWQsCiAgICAgICAgICBjb2RlOiBwYXJhbXMubm93X2dvb2RzX2RhdGEuY29kZSwKICAgICAgICAgIGdvb2RzSWQ6IHBhcmFtcy5ub3dfZ29vZHNfZGF0YS5pZCwKICAgICAgICAgIGJ1eU51bTogMSwKICAgICAgICAgIHNob3BJZDogcGFyYW1zLm5vd19nb29kc19kYXRhLnNob3BJZCwKICAgICAgICAgIGJhc2ljR29vZHNJZDogcGFyYW1zLm5vd19nb29kc19kYXRhLmJhc2ljR29vZHNJZCwKICAgICAgICAgIGdvb2RzTmFtZTogcGFyYW1zLm5vd19nb29kc19kYXRhLnRpdGxlLAogICAgICAgICAgdW5pdE5hbWU6IGl0ZW0uc3BlYy51bml0TmFtZSwKICAgICAgICAgIHNwZWNHcm91cDogaXRlbS5zcGVjLnNwZWNHcm91cCwKICAgICAgICAgIGludmVudG9yeTogaXRlbS5zcGVjLmludmVudG9yeSwKICAgICAgICAgIHNhbGVQcmljZTogaXRlbS5zcGVjLnNhbGVQcmljZSwKICAgICAgICAgIHN1Yk1vbmV5OiBpdGVtLnNwZWMuc2FsZVByaWNlLAogICAgICAgICAgc2hvcE5hbWU6IHBhcmFtcy5ub3dfZ29vZHNfZGF0YS5zaG9wTmFtZSwKICAgICAgICAgIGdvb2RzSW1hZ2VzOiBpdGVtLnNwZWMuc3BlY0ltYWdlIHx8IHBhcmFtcy5ub3dfZ29vZHNfZGF0YS5pbWFnZXNbMF0sCiAgICAgICAgICBicmFuZElkOiBwYXJhbXMubm93X2dvb2RzX2RhdGEuYnJhbmRJZCwKICAgICAgICAgIGJyYW5kTmFtZTogcGFyYW1zLm5vd19nb29kc19kYXRhLmJyYW5kTmFtZSwKICAgICAgICAgIGNhdGVnb3J5UGF0aDogcGFyYW1zLm5vd19nb29kc19kYXRhLmNhdGVnb3J5UGF0aCwKICAgICAgICAgIGNhdGVnb3J5TmFtZTogcGFyYW1zLm5vd19nb29kc19kYXRhLmNhdGVnb3J5TmFtZSwKICAgICAgICAgIGNvbnZlcnNpb246IGl0ZW0uc3BlYy5jb252ZXJzaW9uLAogICAgICAgICAgYmFyQ29kZTogaXRlbS5zcGVjLmJhckNvZGUsCiAgICAgICAgICBzdG9yYWdlQ29kZTogcGFyYW1zLm5vd19nb29kc19kYXRhLnN0b3JhZ2UsCiAgICAgICAgICB3YXJlaG91c2VJZDogcGFyYW1zLm5vd19nb29kc19kYXRhLndhcmVob3VzZUlkLAogICAgICAgICAgb3JpZ2luUHJpY2U6IGl0ZW0uc3BlYy5vcmlnaW5QcmljZSwKICAgICAgICAgIHNwZWNUeXBlOiBpdGVtLnNwZWMuc3BlY1R5cGUsCiAgICAgICAgICBzdXBwbGllcklkOiBpdGVtLnN1cHBsaWVySWQsCiAgICAgICAgICBzdXBwbGllck5hbWU6IGl0ZW0uc3VwcGxpZXJOYW1lLAogICAgICAgICAgaXNFcTogaXRlbS5pc0VxLAogICAgICAgICAgaXNNYXN0ZXI6IGl0ZW0uc3BlYy5pc01hc3RlciwKICAgICAgICAgIGlzRGlzdHJpYnV0aW9uOiBpdGVtLmlzRGlzdHJpYnV0aW9uLAogICAgICAgICAgbWVyY2hhbnRJZDogaXRlbS5tZXJjaGFudElkCiAgICAgICAgfTsKICAgICAgfSk7CiAgICAgIHRoaXMuZ2l2ZWF3YXlHb29kcyA9IGdvb2RzRGF0YS5jb25jYXQodGhpcy5naXZlYXdheUdvb2RzKTsKICAgIH0sCgogICAgc2VsZWN0U2VsR29vZHMoaWQpIHsKICAgICAgdGhpcy5zcGVjX2NoZWNrID0gdGhpcy5zYWxlT3JkZXJHb29kcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmdvb2RzSWQgPT09IGlkKS5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIGl0ZW0uc2t1SWQ7CiAgICAgIH0pOwogICAgfSwKCiAgICBnaXZlYXdheVNlbGVjdFNlbEdvb2RzKGlkKSB7CiAgICAgIHRoaXMuc3BlY19jaGVjayA9IHRoaXMuZ2l2ZWF3YXlHb29kcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmdvb2RzSWQgPT09IGlkKS5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIGl0ZW0uc2t1SWQ7CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDmlrDlop7kuIDmnaHllYblk4EKICAgIGFkZExpc3RHb29kcygpIHsKICAgICAgdGhpcy5zYWxlT3JkZXJHb29kcy5wdXNoKHRoaXMuJF9jb21tb24uZGVlcENsb25lKGdvb2RzSXRlbSkpOwogICAgfSwKCiAgICAvLyDmlrDlop7kuIDmnaHotaDlk4EKICAgIGdpdmVhd2F5QWRkTGlzdEdvb2RzKCkgewogICAgICB0aGlzLmdpdmVhd2F5R29vZHMucHVzaCh0aGlzLiRfY29tbW9uLmRlZXBDbG9uZShnb29kc0l0ZW0pKTsKICAgIH0sCgogICAgLy8g5paw5aKe5Zyw5Z2ACiAgICBhc3luYyBhZGRTaGlwcGluZ0FkZHJlc3MoKSB7CiAgICAgIGlmICghdGhpcy5mb3JtLm5hbWUudHJpbSgpIHx8ICF0aGlzLnJlZ2lvbk5hbWUgfHwgIXRoaXMuZm9ybS5tb2JpbGUudHJpbSgpIHx8ICF0aGlzLmZvcm0uYWRkcmVzcy50cmltKCkpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIumDveaYr+W/heWhq+mhueS4jeiDveS4uuepuiIpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGFkZFNoaXBwaW5nQWRkcmVzcyh7IC4uLnRoaXMuZm9ybSwKICAgICAgICBjdXN0b21lcklkOiB0aGlzLmFkZF9mb3JtLmN1c3RvbWVySWQKICAgICAgfSk7CiAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgIHR5cGU6ICJzdWNjZXNzIiwKICAgICAgICBtZXNzYWdlOiAi5re75Yqg5oiQ5YqfIgogICAgICB9KTsKICAgICAgdGhpcy5BZGRBZGRyZXNzID0gZmFsc2U7CiAgICAgIGF3YWl0IHRoaXMuZ2V0QWxsU2hpcHBpbmdBZGRyZXNzKHRoaXMuYWRkX2Zvcm0uY3VzdG9tZXJJZCk7CiAgICB9LAoKICAgIHJlZ2lvbkNoYW5nZSh2YWwsIHBhcmFtcykgewogICAgICB0aGlzLmZvcm0ucHJvdmluY2VDb2RlID0gdmFsWzBdOwogICAgICB0aGlzLmZvcm0uY2l0eUNvZGUgPSB2YWxbMV07CiAgICAgIHRoaXMuZm9ybS5kaXN0cmljdENvZGUgPSB2YWxbMl07CiAgICB9LAoKICAgIC8vIOWFs+mXreW8ueeqlwogICAgaGFuZGxlQ2xvc2UoKSB7CiAgICAgIHRoaXMuZm9ybSA9IHt9OwogICAgfSwKCiAgICAvLyDojrflj5borqLljZXor6bmg4UKICAgIGFzeW5jIGdldE9yZGVySW5mb0J5SWQoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRPcmRlckluZm9CeUlkKHRoaXMuJHJvdXRlLnBhcmFtcy51c2VyQ2VudGVySWQsIHsKICAgICAgICBvcmRlcklkOiB0aGlzLm9yZGVySWQKICAgICAgfSk7CiAgICAgIHRoaXMub3JkZXJfZGV0YWlsID0gZGF0YTsKICAgICAgdGhpcy5hZGRfZm9ybSA9IHsKICAgICAgICBhY2NvdW50TGlzdDogZGF0YS5hY2NvdW50TGlzdCB8fCBbXSwKICAgICAgICBkZWxpdmVyeVR5cGU6IGRhdGEuZGVsaXZlcnlUeXBlLAogICAgICAgIC8v6YWN6YCB5pa55byPCiAgICAgICAgY3VzdG9tZXJOYW1lOiBkYXRhLmN1c3RvbWVyTmFtZSwKICAgICAgICAvL+WuouaIt+WQjeensAogICAgICAgIGN1c3RvbWVySWQ6IGRhdGEuY3VzdG9tZXJJZCwKICAgICAgICByZW1hcms6IGRhdGEucmVtYXJrLAogICAgICAgIC8vIOWkh+azqAogICAgICAgIGFkZHJlc3NJZDogZGF0YS5yZWNlaXZlRGF0YS5pZCwKICAgICAgICAvLyDmlLbotKflnLDlnYAKICAgICAgICBzZWxmUnVsZUlkOiBkYXRhLnNlbGZSdWxlSWQsCiAgICAgICAgc2VsZlJ1bGVEYXRhOiBkYXRhLnNlbGZSdWxlRGF0YSwKICAgICAgICByZWNlaXZlZE1vbmV5OiBkYXRhLnJlY2VpdmVkTW9uZXksCiAgICAgICAgcGF5VHlwZTogTnVtYmVyKGRhdGEucGF5VHlwZSkKICAgICAgfTsKCiAgICAgIGlmICh0aGlzLmFkZF9mb3JtLmRlbGl2ZXJ5VHlwZSA9PT0gNCkgewogICAgICAgIHRoaXMuYWRkX2Zvcm0uZGVsaXZlcnlUeXBlID0gMzsKICAgICAgICB0aGlzLmFkZF9mb3JtLnBhcnRpY3VsYXJzVHlwZSA9IDQ7CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLmFkZF9mb3JtLmRlbGl2ZXJ5VHlwZSA9PT0gNSkgewogICAgICAgIHRoaXMuYWRkX2Zvcm0uZGVsaXZlcnlUeXBlID0gMzsKICAgICAgICB0aGlzLmFkZF9mb3JtLnBhcnRpY3VsYXJzVHlwZSA9IDU7CiAgICAgIH0KCiAgICAgIGlmIChkYXRhLnJlY2VpdmVEYXRhLmFyZWEpIHsKICAgICAgICB0aGlzLmFkZHJlc3NfbmFtZSA9IGRhdGEucmVjZWl2ZURhdGEucmVhbE5hbWUgKyAiICIgKyBkYXRhLnJlY2VpdmVEYXRhLm1vYmlsZSArICIgIiArIGRhdGEucmVjZWl2ZURhdGEuYXJlYS5wcm92aW5jZU5hbWUgKyAiLSIgKyBkYXRhLnJlY2VpdmVEYXRhLmFyZWEuY2l0eU5hbWUgKyAiLSIgKyBkYXRhLnJlY2VpdmVEYXRhLmFyZWEuZGlzdHJpY3ROYW1lICsgIi0iICsgZGF0YS5yZWNlaXZlRGF0YS5hZGRyZXNzOwogICAgICB9CgogICAgICBpZiAoZGF0YS5hY2NvdW50TGlzdCAmJiBkYXRhLmFjY291bnRMaXN0Lmxlbmd0aCkgewogICAgICAgIHRoaXMuYWNjb3VudE5hbWUgPSBkYXRhLmFjY291bnRMaXN0WzBdLmFjY291bnROYW1lOwogICAgICB9CgogICAgICB0aGlzLmFkZF9mb3JtLmN1cnJlbnRBY2NvdW50TmFtZSA9IGRhdGEuY3VycmVudEFjY291bnROYW1lOwogICAgICB0aGlzLnRvdGFsUmVkdWNlTW9uZXkgPSBkYXRhLnRvdGFsUmVkdWNlTW9uZXkgfHwgMDsKICAgICAgdGhpcy51c2VyQ2VudGVySWQgPSBkYXRhLnVzZXJDZW50ZXJJZDsKICAgICAgdGhpcy5zYWxlT3JkZXJHb29kcyA9IGRhdGEuZ29vZHNEYXRhLm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4geyAuLi5pdGVtLAogICAgICAgICAgc3ViTW9uZXk6IGl0ZW0udG90YWxNb25leSwKICAgICAgICAgIHNhbGVQcmljZTogaXRlbS5wcmljZSwKICAgICAgICAgIGNvZGU6IGl0ZW0uZ29vZHNDb2RlLAogICAgICAgICAgZ29vZHNJbWFnZXM6IGl0ZW0uaW1hZ2VzWzBdCiAgICAgICAgfTsKICAgICAgfSk7CgogICAgICBpZiAoZGF0YS5jdXN0b21lcklkKSB7CiAgICAgICAgLy8g6I635Y+W5a6i5oi35pS26LSn5Zyw5Z2A5YiX6KGoCiAgICAgICAgYXdhaXQgdGhpcy5nZXRBbGxTaGlwcGluZ0FkZHJlc3MoZGF0YS5jdXN0b21lcklkKTsKICAgICAgfSAvL+eUseS6juiuouWNleaYr+aMieeFp+W6l+mTuuaLhuWNleeahAogICAgICAvLyDmiYDku6XlnKjnvJbovpHorqLljZXml7bvvIzlop7liqDmraTorqLljZXnmoTllYblk4Hml7blupTor6Xlj6rog73pgInmi6nmnKzlupfpk7rkuIvnmoTllYblk4EKCgogICAgICB0aGlzLnNob3BfaWQgPSBkYXRhLnNob3BJZDsKICAgICAgdGhpcy5hY2NvdW50X3Nob3BJZCA9IGRhdGEuc2hvcElkOwoKICAgICAgaWYgKHRoaXMuYWRkX2Zvcm0uZGVsaXZlcnlUeXBlID09PSAyKSB7CiAgICAgICAgY29uc3Qgc2VsZlJ1bGVEYXRhID0gSlNPTi5wYXJzZShkYXRhLnNlbGZSdWxlRGF0YSk7CiAgICAgICAgdGhpcy5tb2JpbGUgPSBzZWxmUnVsZURhdGEubW9iaWxlOwogICAgICAgIHRoaXMuYWRkcmVzcyA9IHNlbGZSdWxlRGF0YS5wcm92aW5jZU5hbWUgKyAiICIgKyBzZWxmUnVsZURhdGEuY2l0eU5hbWUgKyAiICIgKyBzZWxmUnVsZURhdGEuZGlzdHJpY3ROYW1lICsgIiAiICsgc2VsZlJ1bGVEYXRhLmFkZHJlc3M7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY29uc3QgcmVjZWl2ZURhdGEgPSBkYXRhLnJlY2VpdmVEYXRhOwogICAgICAgIHRoaXMubW9iaWxlID0gcmVjZWl2ZURhdGEubW9iaWxlOwogICAgICAgIHRoaXMuYWRkcmVzcyA9IHJlY2VpdmVEYXRhLmFyZWEucHJvdmluY2VOYW1lICsgIiAiICsgcmVjZWl2ZURhdGEuYXJlYS5jaXR5TmFtZSArICIgIiArIHJlY2VpdmVEYXRhLmFyZWEuZGlzdHJpY3ROYW1lICsgIiAiICsgcmVjZWl2ZURhdGEuYWRkcmVzczsKICAgICAgfQogICAgfSwKCiAgICAvLyDmt7vliqDmmoLlrZgKICAgIGFzeW5jIGFkZFBhdXNlU2F2ZSgpIHsKICAgICAgY29uc3QgcGFyYW1zID0gewogICAgICAgIGFkZF9mb3JtOiB0aGlzLmFkZF9mb3JtLAogICAgICAgIHRvdGFsUmVkdWNlTW9uZXk6IHRoaXMudG90YWxSZWR1Y2VNb25leSwKICAgICAgICBzYWxlT3JkZXJHb29kczogdGhpcy5zYWxlT3JkZXJHb29kcywKICAgICAgICB1c2VyQ2VudGVySWQ6IHRoaXMudXNlckNlbnRlcklkCiAgICAgIH07CiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhZGRQYXVzZVNhdmUoewogICAgICAgIGtleTogdGhpcy5wYWdlTmFtZSwKICAgICAgICBkYXRhOiBwYXJhbXMKICAgICAgfSk7CiAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgIHR5cGU6ICJzdWNjZXNzIiwKICAgICAgICBtZXNzYWdlOiAi5pqC5a2Y5oiQ5YqfIgogICAgICB9KTsKCiAgICAgIGlmICh0aGlzLnN5c3RlbVR5cGUgPT09IDIpIHsKICAgICAgICB0aGlzLiRjbG9zZUN1cnJlbnRHb0VkaXQoIi9TaW5nbGVTdG9yZS9vcmRlci9PcmRlckxpc3Qvd2FpdEF1ZGl0Iik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvb3JkZXIvbWFuYWdlTy9vcmRlclF1ZXJ5Iik7CiAgICAgIH0KICAgIH0sCgogICAgLy8g6I635Y+W5pqC5a2Y5L+h5oGvCiAgICBhc3luYyBnZXRQYXVzZVNhdmUoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRQYXVzZVNhdmUoewogICAgICAgIGtleTogdGhpcy5wYWdlTmFtZQogICAgICB9KTsKICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGRhdGEpID09PSAie30iKSByZXR1cm47CgogICAgICBpZiAoZGF0YS5hZGRfZm9ybSkgewogICAgICAgIHRoaXMuYWRkX2Zvcm0gPSBkYXRhLmFkZF9mb3JtOwoKICAgICAgICBpZiAoZGF0YS5hZGRfZm9ybS5jdXN0b21lcklkKSB7CiAgICAgICAgICBhd2FpdCB0aGlzLmdldEFsbFNoaXBwaW5nQWRkcmVzcyhkYXRhLmFkZF9mb3JtLmN1c3RvbWVySWQpOwogICAgICAgIH0KCiAgICAgICAgdGhpcy50b3RhbFJlZHVjZU1vbmV5ID0gZGF0YS50b3RhbFJlZHVjZU1vbmV5IHx8IDA7CiAgICAgICAgdGhpcy5zYWxlT3JkZXJHb29kcyA9IGRhdGEuc2FsZU9yZGVyR29vZHMgfHwgW2dvb2RzSXRlbV07CiAgICAgICAgdGhpcy51c2VyQ2VudGVySWQgPSBkYXRhLnVzZXJDZW50ZXJJZCB8fCAwOwogICAgICB9CiAgICB9LAoKICAgIC8vIOiOt+WPlumFjemAgeaWueW8jwogICAgYXN5bmMgZ2V0QWxsRGVsaXZlcnkoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRBbGxEZWxpdmVyeSh7CiAgICAgICAgcGFnZTogMSwKICAgICAgICBwYWdlU2l6ZTogMTAwCiAgICAgIH0pOwogICAgICB0aGlzLmRlbGl2ZXJ5VHlwZV9saXN0ID0gZGF0YTsKICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPSBkYXRhLmZpbmQoaXRlbSA9PiBpdGVtLmRlZmF1bHRTdGF0dXMgPT09IDUpOwoKICAgICAgaWYgKGRlZmF1bHRUeXBlICYmICF0aGlzLmFkZF9mb3JtLmRlbGl2ZXJ5VHlwZSkgewogICAgICAgIHRoaXMuYWRkX2Zvcm0uZGVsaXZlcnlUeXBlID0gZGVmYXVsdFR5cGUuZGVsaXZlcnlUeXBlOwogICAgICB9CiAgICB9LAoKICAgIC8vIOWIoOmZpOaaguWtmOS/oeaBrwogICAgYXN5bmMgZGVsUGF1c2VTYXZlKHR5cGUpIHsKICAgICAgY29uc3QgZGF0YSA9IGRlbFBhdXNlU2F2ZSh7CiAgICAgICAga2V5OiB0aGlzLnBhZ2VOYW1lCiAgICAgIH0pOwoKICAgICAgaWYgKHR5cGUpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICJzdWNjZXNzIiwKICAgICAgICAgIG1lc3NhZ2U6ICLmuIXpmaTmmoLlrZjmiJDlip8iCiAgICAgICAgfSk7CgogICAgICAgIGlmICh0aGlzLnN5c3RlbVR5cGUgPT09IDIpIHsKICAgICAgICAgIHRoaXMuJGNsb3NlQ3VycmVudEdvRWRpdCgiL1NpbmdsZVN0b3JlL29yZGVyL09yZGVyTGlzdC93YWl0QXVkaXQiKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvb3JkZXIvbWFuYWdlTy9vcmRlclF1ZXJ5Iik7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIC8vIOaPkOS6pAogICAgc3ViRGF0YSgpIHsKICAgICAgaWYgKHRoaXMuYWRkX2Zvcm0uZGVsaXZlcnlUeXBlID09PSAyICYmICF0aGlzLmFkZF9mb3JtLnNlbGZSdWxlSWQpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuivt+mAieaLqeiHquaPkOeCuSIpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdGhpcy4kcmVmcy5hZGRfZm9ybS52YWxpZGF0ZShhc3luYyB2YWxpZCA9PiB7CiAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5zYWxlT3JkZXJHb29kcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnNrdUlkKTsgLy8g6aqM6K+B5oqE56CB5ZWG5ZOB5pWw6YePCgogICAgICAgICAgY29uc3QgaXNFcU51bSA9IGxpc3QuZXZlcnkoaXRlbSA9PiB7CiAgICAgICAgICAgIGlmIChpdGVtLmlzRXEgPT09IDUgJiYgaXRlbS5pc01hc3RlciA9PT0gNSkgewogICAgICAgICAgICAgIHJldHVybiBpdGVtLm90aGVyTnVtID4gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CgogICAgICAgICAgaWYgKCFpc0VxTnVtKSB7CiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi5oqE56CB5ZWG5ZOB5YW25LuW5Y2V5L2N5pWw6YeP5LiN6IO95Li6MCIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9IC8vIOmqjOivgeWVhuWTgeaVsOmHjwoKCiAgICAgICAgICBjb25zdCBpc0J1eU51bSA9IGxpc3QuZXZlcnkoaXRlbSA9PiBpdGVtLmJ1eU51bSA+IDApOwoKICAgICAgICAgIGlmICghaXNCdXlOdW0pIHsKICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLor7fovpPlhaXlpKfkuo4w55qE5ZWG5ZOB5pWw6YePIik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0gLy8g6aqM6K+B5ZWG5ZOB5Y2V5Lu3CgoKICAgICAgICAgIGNvbnN0IGlzU2FsZVByaWNlID0gbGlzdC5ldmVyeShpdGVtID0+IGl0ZW0uc2FsZVByaWNlID4gMCk7IC8vIGlmICghaXNTYWxlUHJpY2UpIHsKICAgICAgICAgIC8vICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLllYblk4HljZXku7fkuI3og73kuLowIik7CiAgICAgICAgICAvLyAgIHJldHVybjsKICAgICAgICAgIC8vIH0KICAgICAgICAgIC8vIOmqjOivgeWVhuWTgemHkeminQoKICAgICAgICAgIGNvbnN0IGlzU3ViTW9uZXkgPSBsaXN0LmV2ZXJ5KGl0ZW0gPT4gaXRlbS5zdWJNb25leSA+IDApOyAvLyBpZiAoIWlzU3ViTW9uZXkpIHsKICAgICAgICAgIC8vICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLllYblk4Hph5Hpop3kuI3og73kuLowIik7CiAgICAgICAgICAvLyAgIHJldHVybjsKICAgICAgICAgIC8vIH0KCiAgICAgICAgICBjb25zdCBzYWxlT3JkZXJHb29kcyA9IGxpc3QubWFwKGl0ZW0gPT4gewogICAgICAgICAgICBpZiAoIXRoaXMub3JkZXJJZCkgewogICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLmludmVudG9yeTsKICAgICAgICAgICAgICBkZWxldGUgaXRlbS5lbmFibGVkTGFkZGVyOwogICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLmxhZGRlclByaWNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgICAgIH0pOwoKICAgICAgICAgIGlmICghc2FsZU9yZGVyR29vZHMubGVuZ3RoKSB7CiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup5ZWG5ZOBIik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAodGhpcy5hZGRfZm9ybS5yZWNlaXZlZE1vbmV5ID4gMCAmJiAhdGhpcy5hZGRfZm9ybS5hY2NvdW50TGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLor7fpgInmi6nnu5PnrpfotKbmiLciKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQoKICAgICAgICAgIGlmICh0aGlzLm9yZGVySWQpIHsKICAgICAgICAgICAgYXdhaXQgdGhpcy5lZGl0T3JkZXIoc2FsZU9yZGVyR29vZHMpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYXdhaXQgdGhpcy5hZGRPcmRlcihzYWxlT3JkZXJHb29kcyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCgogICAgLy8g57yW6L6R6K6i5Y2VCiAgICBhc3luYyBlZGl0T3JkZXIoc2FsZU9yZGVyR29vZHMpIHsKICAgICAgaWYgKHRoaXMuYWRkX2Zvcm0ucGFydGljdWxhcnNUeXBlKSB7CiAgICAgICAgdGhpcy5hZGRfZm9ybS5kZWxpdmVyeVR5cGUgPSB0aGlzLmFkZF9mb3JtLnBhcnRpY3VsYXJzVHlwZTsKICAgICAgfQoKICAgICAgY29uc3QgZ29vZHNEYXRhID0gc2FsZU9yZGVyR29vZHMubWFwKGl0ZW0gPT4gewogICAgICAgIHJldHVybiB7IC4uLml0ZW0sCiAgICAgICAgICB0b3RhbE1vbmV5OiBpdGVtLnN1Yk1vbmV5LAogICAgICAgICAgcHJpY2U6IGl0ZW0uc2FsZVByaWNlLAogICAgICAgICAgZ29vZHNDb2RlOiBpdGVtLmNvZGUsCiAgICAgICAgICBpbWFnZXM6IFtpdGVtLmdvb2RzSW1hZ2VzXQogICAgICAgIH07CiAgICAgIH0pOyAvLyBjb25zb2xlLmxvZyhnb29kc0RhdGEpOwogICAgICAvLyByZXR1cm47CgogICAgICB0aGlzLnN1Yl9sb2FkaW5nID0gdHJ1ZTsKCiAgICAgIHRyeSB7CiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ld09yZGVyRWRpdCh0aGlzLm9yZGVySWQsIHsgLi4udGhpcy5vcmRlcl9kZXRhaWwsCiAgICAgICAgICBkZWxpdmVyeVR5cGU6IHRoaXMuYWRkX2Zvcm0uZGVsaXZlcnlUeXBlLAogICAgICAgICAgY3VzdG9tZXJOYW1lOiB0aGlzLmFkZF9mb3JtLmN1c3RvbWVyTmFtZSwKICAgICAgICAgIGFkZHJlc3NJZDogdGhpcy5hZGRfZm9ybS5hZGRyZXNzSWQsCiAgICAgICAgICByZW1hcms6IHRoaXMuYWRkX2Zvcm0ucmVtYXJrLAogICAgICAgICAgYWNjb3VudExpc3Q6IHRoaXMuYWRkX2Zvcm0uYWNjb3VudExpc3QsCiAgICAgICAgICB0b3RhbE1vbmV5OiB0aGlzLm9yZGVyQW1vdW50LAogICAgICAgICAgcGF5TW9uZXk6IHRoaXMucGF5TW9uZXksCiAgICAgICAgICB0b3RhbFJlZHVjZU1vbmV5OiB0aGlzLnRvdGFsUmVkdWNlTW9uZXkgfHwgMCwKICAgICAgICAgIHJlY2VpdmVkTW9uZXk6IHRoaXMuYWRkX2Zvcm0ucmVjZWl2ZWRNb25leSwKICAgICAgICAgIGN1cnJlbnRBY2NvdW50TmFtZTogdGhpcy5hZGRfZm9ybS5jdXJyZW50QWNjb3VudE5hbWUsCiAgICAgICAgICB1c2VyQ2VudGVySWQ6IHRoaXMudXNlckNlbnRlcklkLAogICAgICAgICAgY3VzdG9tZXJJZDogdGhpcy5hZGRfZm9ybS5jdXN0b21lcklkLAogICAgICAgICAgc2VsZlJ1bGVJZDogdGhpcy5hZGRfZm9ybS5zZWxmUnVsZUlkLAogICAgICAgICAgc2VsZlJ1bGVEYXRhOiB0aGlzLmFkZF9mb3JtLnNlbGZSdWxlRGF0YSwKICAgICAgICAgIGdvb2RzRGF0YTogZ29vZHNEYXRhLAogICAgICAgICAgcGF5VHlwZTogdGhpcy5hZGRfZm9ybS5wYXlUeXBlCiAgICAgICAgfSk7CiAgICAgICAgdGhpcy5zdWJfbG9hZGluZyA9IGZhbHNlOwogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLAogICAgICAgICAgbWVzc2FnZTogIuaPkOS6pOaIkOWKnyIKICAgICAgICB9KTsKCiAgICAgICAgaWYgKHRoaXMuc3lzdGVtVHlwZSA9PT0gMikgewogICAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvU2luZ2xlU3RvcmUvb3JkZXIvT3JkZXJMaXN0L3dhaXRBdWRpdCIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLiRjbG9zZUN1cnJlbnRHb0VkaXQoIi9vcmRlci9tYW5hZ2VPL29yZGVyUXVlcnkiKTsKICAgICAgICB9CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgdGhpcy5zdWJfbG9hZGluZyA9IGZhbHNlOwogICAgICB9CiAgICB9LAoKICAgIC8vIOaWsOWinuiuouWNlQogICAgYXN5bmMgYWRkT3JkZXIoc2FsZU9yZGVyR29vZHMpIHsKICAgICAgaWYgKHRoaXMudG90YWxSZWR1Y2VNb25leSA9PT0gIiIpIHsKICAgICAgICB0aGlzLnRvdGFsUmVkdWNlTW9uZXkgPSAwOwogICAgICB9CgogICAgICBpZiAodGhpcy5hZGRfZm9ybS5wYXJ0aWN1bGFyc1R5cGUpIHsKICAgICAgICB0aGlzLmFkZF9mb3JtLmRlbGl2ZXJ5VHlwZSA9IHRoaXMuYWRkX2Zvcm0ucGFydGljdWxhcnNUeXBlOwogICAgICB9CgogICAgICBsZXQgcGFyYW1zID0gewogICAgICAgIGRlbGl2ZXJ5VHlwZTogdGhpcy5hZGRfZm9ybS5kZWxpdmVyeVR5cGUsCiAgICAgICAgY3VzdG9tZXJOYW1lOiB0aGlzLmFkZF9mb3JtLmN1c3RvbWVyTmFtZSwKICAgICAgICBhZGRyZXNzSWQ6IHRoaXMuYWRkX2Zvcm0uYWRkcmVzc0lkLAogICAgICAgIHJlbWFyazogdGhpcy5hZGRfZm9ybS5yZW1hcmssCiAgICAgICAgYWNjb3VudExpc3Q6IHRoaXMuYWRkX2Zvcm0uYWNjb3VudExpc3QsCiAgICAgICAgY3VycmVudEFjY291bnROYW1lOiB0aGlzLmFkZF9mb3JtLmN1cnJlbnRBY2NvdW50TmFtZSwKICAgICAgICByZWNlaXZlZE1vbmV5OiB0aGlzLmFkZF9mb3JtLnJlY2VpdmVkTW9uZXksCiAgICAgICAgbGlzdHM6IHNhbGVPcmRlckdvb2RzLAogICAgICAgIHRvdGFsTW9uZXk6IHRoaXMub3JkZXJBbW91bnQsCiAgICAgICAgcGF5TW9uZXk6IHRoaXMucGF5TW9uZXksCiAgICAgICAgdG90YWxSZWR1Y2VNb25leTogdGhpcy50b3RhbFJlZHVjZU1vbmV5IHx8IDAsCiAgICAgICAgdXNlckNlbnRlcklkOiB0aGlzLnVzZXJDZW50ZXJJZCwKICAgICAgICBjdXN0b21lcklkOiB0aGlzLmFkZF9mb3JtLmN1c3RvbWVySWQsCiAgICAgICAgc2VsZlJ1bGVJZDogdGhpcy5hZGRfZm9ybS5zZWxmUnVsZUlkLAogICAgICAgIHNlbGZSdWxlRGF0YTogdGhpcy5hZGRfZm9ybS5zZWxmUnVsZURhdGEsCiAgICAgICAgb3BlcmF0b3JOYW1lOiB0aGlzLnVzZXJOYW1lLAogICAgICAgIHBheVR5cGU6IHRoaXMuYWRkX2Zvcm0ucGF5VHlwZQogICAgICB9OwogICAgICB0aGlzLnN1Yl9sb2FkaW5nID0gdHJ1ZTsKCiAgICAgIHRyeSB7CiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ld0FkZE9yZGVyKHBhcmFtcyk7CiAgICAgICAgdGhpcy5zdWJfbG9hZGluZyA9IGZhbHNlOwogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLAogICAgICAgICAgbWVzc2FnZTogIuaPkOS6pOaIkOWKnyIKICAgICAgICB9KTsKICAgICAgICBhd2FpdCB0aGlzLmRlbFBhdXNlU2F2ZSgpOwoKICAgICAgICBpZiAodGhpcy5zeXN0ZW1UeXBlID09PSAyKSB7CiAgICAgICAgICB0aGlzLiRjbG9zZUN1cnJlbnRHb0VkaXQoIi9TaW5nbGVTdG9yZS9vcmRlci9PcmRlckxpc3Qvd2FpdEF1ZGl0Iik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMuJGNsb3NlQ3VycmVudEdvRWRpdCgiL29yZGVyL21hbmFnZU8vb3JkZXJRdWVyeSIpOwogICAgICAgIH0KICAgICAgfSBmaW5hbGx5IHsKICAgICAgICB0aGlzLnN1Yl9sb2FkaW5nID0gZmFsc2U7CiAgICAgIH0KICAgIH0sCgogICAgLy8g6YCJ5oup5ZWG5ZOBCiAgICBhc3luYyBzZWxHb29kcyh2YWwpIHsKICAgICAgaWYgKHZhbC5sZW5ndGgpIHsKICAgICAgICAvL+aKhOeggeWVhuWTgeWPquiDvemAieaLqeS4gOS4quWNleS9jei/m+ihjOS4i+WNlQogICAgICAgIGxldCBhcnIgPSBbXTsKICAgICAgICBsZXQgaXNFcU1vcmUgPSBmYWxzZTsKCiAgICAgICAgZm9yIChsZXQgaSBpbiB2YWwpIHsKICAgICAgICAgIGNvbnN0IGl0ZW0gPSB2YWxbaV07CgogICAgICAgICAgaWYgKGl0ZW0uaXNFcSA9PT0gNSkgewogICAgICAgICAgICBpZiAoYXJyLmZpbmQoZmluID0+IGZpbi5pZCA9PT0gaXRlbS5pZCAmJiBmaW4udW5pdElkICE9PSBpdGVtLnVuaXRJZCkpIHsKICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuaKhOeggeWVhuWTgeWPquiDvemAieaLqeS4gOS4quWNleS9jei/m+ihjOS4i+WNle+8jOivt+mHjeaWsOWLvumAiSIpOwogICAgICAgICAgICAgIGlzRXFNb3JlID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBhcnIucHVzaChpdGVtKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzRXFNb3JlKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBsZXQgZ29vZHNEYXRhID0gdmFsLm1hcChpdGVtID0+IHsKICAgICAgICAgIGxldCBzYWxlUHJpY2UgPSAwOwoKICAgICAgICAgIGlmIChpdGVtLmVuYWJsZWRMYWRkZXIpIHsKICAgICAgICAgICAgc2FsZVByaWNlID0gaXRlbS5sYWRkZXJQcmljZVswXS5wcmljZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNhbGVQcmljZSA9IGl0ZW0uc2FsZVByaWNlOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGdvb2RzTmFtZTogaXRlbS50aXRsZSwKICAgICAgICAgICAgc2t1SWQ6IGl0ZW0uc2t1SWQsCiAgICAgICAgICAgIGNvZGU6IGl0ZW0uY29kZSwKICAgICAgICAgICAgZ29vZHNJZDogaXRlbS5pZCwKICAgICAgICAgICAgYnV5TnVtOiAxLAogICAgICAgICAgICBvdGhlck51bTogIiIsCiAgICAgICAgICAgIHNob3BJZDogaXRlbS5zaG9wSWQsCiAgICAgICAgICAgIGJhc2ljR29vZHNJZDogaXRlbS5iYXNpY0dvb2RzSWQsCiAgICAgICAgICAgIHVuaXROYW1lOiBpdGVtLnVuaXROYW1lLAogICAgICAgICAgICB1bml0SWQ6IGl0ZW0udW5pdElkLAogICAgICAgICAgICBzcGVjR3JvdXA6IGl0ZW0uc3BlY0dyb3VwLAogICAgICAgICAgICBpbnZlbnRvcnk6IGl0ZW0uaW52ZW50b3J5LAogICAgICAgICAgICBzYWxlUHJpY2U6IHNhbGVQcmljZSwKICAgICAgICAgICAgc3ViTW9uZXk6IGl0ZW0uc2FsZVByaWNlLAogICAgICAgICAgICBzaG9wTmFtZTogaXRlbS5zaG9wTmFtZSwKICAgICAgICAgICAgZ29vZHNJbWFnZXM6IGl0ZW0uaW1hZ2VzWzBdLAogICAgICAgICAgICBicmFuZElkOiBpdGVtLmJyYW5kSWQsCiAgICAgICAgICAgIGJyYW5kTmFtZTogIiIsCiAgICAgICAgICAgIGNhdGVnb3J5UGF0aDogaXRlbS5jYXRlZ29yeVBhdGgsCiAgICAgICAgICAgIGNhdGVnb3J5TmFtZTogaXRlbS5jYXRlZ29yeU5hbWUsCiAgICAgICAgICAgIGNvbnZlcnNpb246IGl0ZW0uY29udmVyc2lvbiwKICAgICAgICAgICAgYmFyQ29kZTogIiIsCiAgICAgICAgICAgIHN0b3JhZ2VDb2RlOiAiIiwKICAgICAgICAgICAgd2FyZWhvdXNlSWQ6IGl0ZW0ud2FyZWhvdXNlSWQsCiAgICAgICAgICAgIG9yaWdpblByaWNlOiBpdGVtLm9yaWdpblByaWNlLAogICAgICAgICAgICBzcGVjVHlwZTogaXRlbS5zcGVjVHlwZSwKICAgICAgICAgICAgZW5hYmxlZExhZGRlcjogaXRlbS5lbmFibGVkTGFkZGVyLAogICAgICAgICAgICBsYWRkZXJQcmljZTogaXRlbS5sYWRkZXJQcmljZSwKICAgICAgICAgICAgc3VwcGxpZXJJZDogaXRlbS5zdXBwbGllcklkLAogICAgICAgICAgICBzdXBwbGllck5hbWU6IGl0ZW0uc3VwcGxpZXJOYW1lLAogICAgICAgICAgICBpc0VxOiBpdGVtLmlzRXEsCiAgICAgICAgICAgIGlzTWFzdGVyOiBpdGVtLmlzTWFzdGVyLAogICAgICAgICAgICBpc0Rpc3RyaWJ1dGlvbjogaXRlbS5pc0Rpc3RyaWJ1dGlvbiwKICAgICAgICAgICAgbWVyY2hhbnRJZDogaXRlbS5tZXJjaGFudElkCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIGNvbnN0IHNhbGVPcmRlckdvb2RzID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy5zYWxlT3JkZXJHb29kcyk7CiAgICAgICAgZ29vZHNEYXRhID0gZ29vZHNEYXRhLmZpbHRlcihpdGVtID0+IHsKICAgICAgICAgIC8vIOaKhOeggeWVhuWTgeWPquiDvemAieaLqeS4gOS4quWNleS9jei/m+ihjOS4i+WNlQogICAgICAgICAgbGV0IGluZGV4RiA9IC0xOwoKICAgICAgICAgIGlmIChpdGVtLmlzRXEgPT09IDUpIHsKICAgICAgICAgICAgaW5kZXhGID0gc2FsZU9yZGVyR29vZHMuZmluZEluZGV4KGl0ZW1GID0+IGl0ZW1GLmdvb2RzSWQgPT09IGl0ZW0uZ29vZHNJZCAmJiBpdGVtRi51bml0SWQgIT09IGl0ZW0udW5pdElkKTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gaW5kZXhGID09PSAtMTsKICAgICAgICB9KTsKICAgICAgICBjb25zdCBnb29kc0FyciA9IHNhbGVPcmRlckdvb2RzLmZpbHRlcihpdGVtID0+IGl0ZW0uc2t1SWQpOwogICAgICAgIGNvbnN0IG5vU2t1QXJyID0gc2FsZU9yZGVyR29vZHMuZmlsdGVyKGl0ZW0gPT4gIWl0ZW0uc2t1SWQpOwogICAgICAgIHRoaXMuc2FsZU9yZGVyR29vZHMgPSBbLi4uZ29vZHNBcnIsIC4uLmdvb2RzRGF0YV0uY29uY2F0KG5vU2t1QXJyKTsKICAgICAgfQogICAgfSwKCiAgICAvLyDpgInmi6notaDlk4HllYblk4EKICAgIGFzeW5jIGdpdmVhd2F5U2VsR29vZHModmFsKSB7CiAgICAgIGlmICh2YWwubGVuZ3RoKSB7CiAgICAgICAgY29uc3QgZ29vZHNEYXRhID0gdmFsLm1hcChpdGVtID0+IHsKICAgICAgICAgIGxldCBzYWxlUHJpY2UgPSAwOwoKICAgICAgICAgIGlmIChpdGVtLmVuYWJsZWRMYWRkZXIpIHsKICAgICAgICAgICAgc2FsZVByaWNlID0gaXRlbS5sYWRkZXJQcmljZVswXS5wcmljZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNhbGVQcmljZSA9IGl0ZW0uc2FsZVByaWNlOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGdvb2RzTmFtZTogaXRlbS50aXRsZSwKICAgICAgICAgICAgc2t1SWQ6IGl0ZW0uc2t1SWQsCiAgICAgICAgICAgIGNvZGU6IGl0ZW0uY29kZSwKICAgICAgICAgICAgZ29vZHNJZDogaXRlbS5pZCwKICAgICAgICAgICAgYnV5TnVtOiAxLAogICAgICAgICAgICBvdGhlck51bTogIiIsCiAgICAgICAgICAgIHNob3BJZDogaXRlbS5zaG9wSWQsCiAgICAgICAgICAgIGJhc2ljR29vZHNJZDogaXRlbS5iYXNpY0dvb2RzSWQsCiAgICAgICAgICAgIHVuaXROYW1lOiBpdGVtLnVuaXROYW1lLAogICAgICAgICAgICBzcGVjR3JvdXA6IGl0ZW0uc3BlY0dyb3VwLAogICAgICAgICAgICBpbnZlbnRvcnk6IGl0ZW0uaW52ZW50b3J5LAogICAgICAgICAgICBzYWxlUHJpY2U6IHNhbGVQcmljZSwKICAgICAgICAgICAgc3ViTW9uZXk6IGl0ZW0uc2FsZVByaWNlLAogICAgICAgICAgICBzaG9wTmFtZTogaXRlbS5zaG9wTmFtZSwKICAgICAgICAgICAgZ29vZHNJbWFnZXM6IGl0ZW0uaW1hZ2VzWzBdLAogICAgICAgICAgICBicmFuZElkOiBpdGVtLmJyYW5kSWQsCiAgICAgICAgICAgIGJyYW5kTmFtZTogIiIsCiAgICAgICAgICAgIGNhdGVnb3J5UGF0aDogaXRlbS5jYXRlZ29yeVBhdGgsCiAgICAgICAgICAgIGNhdGVnb3J5TmFtZTogaXRlbS5jYXRlZ29yeU5hbWUsCiAgICAgICAgICAgIGNvbnZlcnNpb246IGl0ZW0uY29udmVyc2lvbiwKICAgICAgICAgICAgYmFyQ29kZTogIiIsCiAgICAgICAgICAgIHN0b3JhZ2VDb2RlOiAiIiwKICAgICAgICAgICAgd2FyZWhvdXNlSWQ6IGl0ZW0ud2FyZWhvdXNlSWQsCiAgICAgICAgICAgIG9yaWdpblByaWNlOiBpdGVtLm9yaWdpblByaWNlLAogICAgICAgICAgICBzcGVjVHlwZTogaXRlbS5zcGVjVHlwZSwKICAgICAgICAgICAgZW5hYmxlZExhZGRlcjogaXRlbS5lbmFibGVkTGFkZGVyLAogICAgICAgICAgICBsYWRkZXJQcmljZTogaXRlbS5sYWRkZXJQcmljZSwKICAgICAgICAgICAgc3VwcGxpZXJJZDogaXRlbS5zdXBwbGllcklkLAogICAgICAgICAgICBzdXBwbGllck5hbWU6IGl0ZW0uc3VwcGxpZXJOYW1lLAogICAgICAgICAgICBpc0VxOiBpdGVtLmlzRXEsCiAgICAgICAgICAgIGlzRGlzdHJpYnV0aW9uOiBpdGVtLmlzRGlzdHJpYnV0aW9uLAogICAgICAgICAgICBtZXJjaGFudElkOiBpdGVtLm1lcmNoYW50SWQKICAgICAgICAgIH07CiAgICAgICAgfSk7IC8vIHRoaXMuc2FsZU9yZGVyR29vZHMgPSB0aGlzLiRfY29tbW9uLnVuaXF1ZSgKICAgICAgICAvLyAgIGdvb2RzRGF0YS5jb25jYXQodGhpcy5zYWxlT3JkZXJHb29kcyksCiAgICAgICAgLy8gICBbImdvb2RzSWQiLCAic2t1SWQiXQogICAgICAgIC8vICk7CgogICAgICAgIGNvbnN0IGdvb2RzQXJyID0gdGhpcy5naXZlYXdheUdvb2RzLmZpbHRlcihpdGVtID0+IGl0ZW0uc2t1SWQpOwogICAgICAgIGNvbnN0IG5vU2t1QXJyID0gdGhpcy5naXZlYXdheUdvb2RzLmZpbHRlcihpdGVtID0+ICFpdGVtLnNrdUlkKTsgLy8gdGhpcy5zYWxlT3JkZXJHb29kcyA9IHRoaXMuJF9jb21tb24KICAgICAgICAvLyAgIC51bmlxdWUoWy4uLmdvb2RzQXJyLCAuLi5nb29kc0RhdGFdLCBbImdvb2RzSWQiLCAic2t1SWQiXSkKICAgICAgICAvLyAgIC5jb25jYXQobm9Ta3VBcnIpOwoKICAgICAgICB0aGlzLmdpdmVhd2F5R29vZHMgPSBbLi4uZ29vZHNBcnIsIC4uLmdvb2RzRGF0YV0uY29uY2F0KG5vU2t1QXJyKTsKICAgICAgfQogICAgfSwKCiAgICAvLyDkv67mlLnotK3nianovabmlbDph48KICAgIGFzeW5jIHVwZGF0ZUJ1eU51bShpbmRleCkgewogICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLnNhbGVPcmRlckdvb2RzKTsKICAgICAgbGV0IHNhbGVQcmljZSA9IHRhcmdldFtpbmRleF0uc2FsZVByaWNlOwogICAgICBsZXQgaW52ZW50b3J5ID0gdGFyZ2V0W2luZGV4XS5pbnZlbnRvcnk7CiAgICAgIGxldCBpc0Rpc3RyaWJ1dGlvbiA9IHRhcmdldFtpbmRleF0uaXNEaXN0cmlidXRpb247CgogICAgICBpZiAoaXNEaXN0cmlidXRpb24gPT09IDQpIHsKICAgICAgICBpZiAodGFyZ2V0W2luZGV4XS5idXlOdW0gPiBpbnZlbnRvcnkpIHsKICAgICAgICAgIHRhcmdldFtpbmRleF0uYnV5TnVtID0gdGFyZ2V0W2luZGV4XS5pbnZlbnRvcnk7CiAgICAgICAgfQogICAgICB9IC8vIOagueaNrumYtuair+S7t+WIpOaWremUgOWUruS7twoKCiAgICAgIGlmICh0YXJnZXRbaW5kZXhdLmVuYWJsZWRMYWRkZXIpIHsKICAgICAgICBsZXQgcHJpY2VPYmogPSB0YXJnZXRbaW5kZXhdLmxhZGRlclByaWNlLmZpbmQoaXRlbSA9PiB0YXJnZXRbaW5kZXhdLmJ1eU51bSA+PSBpdGVtLmZyb20gJiYgdGFyZ2V0W2luZGV4XS5idXlOdW0gPD0gaXRlbS50byk7CiAgICAgICAgc2FsZVByaWNlID0gcHJpY2VPYmogPyBwcmljZU9iai5wcmljZSA6IHRhcmdldFtpbmRleF0uc2FsZVByaWNlOwogICAgICB9CgogICAgICB0YXJnZXRbaW5kZXhdLnN1Yk1vbmV5ID0gdGhpcy4kTlAudGltZXMoc2FsZVByaWNlLCB0YXJnZXRbaW5kZXhdLmJ1eU51bSk7CiAgICAgIHRhcmdldFtpbmRleF0uc2FsZVByaWNlID0gc2FsZVByaWNlOwogICAgICBjb25zb2xlLmxvZyh0YXJnZXQpOwogICAgICB0aGlzLnNhbGVPcmRlckdvb2RzID0gdGFyZ2V0OwogICAgfSwKCiAgICAvLyDkv67mlLnotK3nianovabmlbDph48KICAgIGFzeW5jIGdpdmVhd2F5VXBkYXRlQnV5TnVtKGluZGV4KSB7CiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuJF9jb21tb24uZGVlcENsb25lKHRoaXMuZ2l2ZWF3YXlHb29kcyk7CiAgICAgIGxldCBzYWxlUHJpY2UgPSB0YXJnZXRbaW5kZXhdLnNhbGVQcmljZTsKICAgICAgbGV0IGJ1eU51bSA9IHRhcmdldFtpbmRleF0uYnV5TnVtOwogICAgICBsZXQgaW52ZW50b3J5ID0gdGFyZ2V0W2luZGV4XS5pbnZlbnRvcnk7CiAgICAgIGxldCBpc0Rpc3RyaWJ1dGlvbiA9IHRhcmdldFtpbmRleF0uaXNEaXN0cmlidXRpb247CgogICAgICBpZiAoaXNEaXN0cmlidXRpb24gPT09IDQpIHsKICAgICAgICBpZiAoYnV5TnVtID4gaW52ZW50b3J5KSB7CiAgICAgICAgICB0YXJnZXRbaW5kZXhdLmJ1eU51bSA9IHRhcmdldFtpbmRleF0uaW52ZW50b3J5OwogICAgICAgIH0KICAgICAgfSAvLyDmoLnmja7pmLbmoq/ku7fliKTmlq3plIDllK7ku7cKCgogICAgICBpZiAodGFyZ2V0W2luZGV4XS5lbmFibGVkTGFkZGVyKSB7CiAgICAgICAgbGV0IHByaWNlT2JqID0gdGFyZ2V0W2luZGV4XS5sYWRkZXJQcmljZS5maW5kKGl0ZW0gPT4gYnV5TnVtID49IGl0ZW0uZnJvbSAmJiBidXlOdW0gPD0gaXRlbS50byk7CiAgICAgICAgc2FsZVByaWNlID0gcHJpY2VPYmogPyBwcmljZU9iai5wcmljZSA6IHRhcmdldFtpbmRleF0uc2FsZVByaWNlOwogICAgICB9CgogICAgICB0YXJnZXRbaW5kZXhdLnN1Yk1vbmV5ID0gdGhpcy4kTlAudGltZXMoc2FsZVByaWNlLCBidXlOdW0pOwogICAgICB0YXJnZXRbaW5kZXhdLnNhbGVQcmljZSA9IHNhbGVQcmljZTsKICAgICAgdGhpcy5naXZlYXdheUdvb2RzID0gdGFyZ2V0OwogICAgfSwKCiAgICAvLyDpgInmi6nlrqLmiLcKICAgIGN1c3RvbWVyU2VsKHZhbCwgbGlzdCkgewogICAgICBjb25zdCByb3cgPSBsaXN0WzBdOwogICAgICB0aGlzLmFkZF9mb3JtLmN1c3RvbWVySWQgPSByb3cuaWQ7CiAgICAgIHRoaXMuYWNjb3VudF9zaG9wSWQgPSByb3cuc2hvcElkOwogICAgICB0aGlzLnVzZXJDZW50ZXJJZCA9IHJvdy51c2VyQ2VudGVySWQ7CiAgICAgIHRoaXMuYWRkX2Zvcm0uYWRkcmVzc0lkID0gIiI7CiAgICAgIHRoaXMuYWRkcmVzc19uYW1lID0gIiI7CiAgICAgIHRoaXMuc2FsZU9yZGVyR29vZHMgPSBbdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUoZ29vZHNJdGVtKV07CgogICAgICBpZiAodGhpcy5hZGRfZm9ybS5kZWxpdmVyeVR5cGUgIT09IDIpIHsKICAgICAgICB0aGlzLmdldEFsbFNoaXBwaW5nQWRkcmVzcyh0aGlzLmFkZF9mb3JtLmN1c3RvbWVySWQpOwogICAgICB9CiAgICB9LAoKICAgIC8vIOmAieaLqee7k+eul+i0puaItwogICAgYWNjb3VudHNlbChyb3cpIHsKICAgICAgdGhpcy5hY2NvdW50TmFtZSA9IHJvd1swXS5uYW1lOwogICAgICB0aGlzLmFkZF9mb3JtLmFjY291bnRMaXN0ID0gW3sKICAgICAgICBhY2NvdW50SWQ6IHJvd1swXS5pZCwKICAgICAgICBhY2NvdW50TnVtYmVyOiByb3dbMF0uYWNjb3VudE51bWJlciwKICAgICAgICBhY2NvdW50TmFtZTogcm93WzBdLm5hbWUsCiAgICAgICAgbW9uZXk6IHRoaXMuYWRkX2Zvcm0ucmVjZWl2ZWRNb25leSwKICAgICAgICBkaXNjb3VudE1vbmV5OiAwLAogICAgICAgIGZpbmFsTW9uZXk6IHRoaXMuYWRkX2Zvcm0ucmVjZWl2ZWRNb25leSwKICAgICAgICBwYXlXYXk6IHRoaXMucGF5V2F5LAogICAgICAgIHJlbWFyazogcm93WzBdLnJlbWFyawogICAgICB9XTsKICAgIH0sCgogICAgLy8g6I635Y+W5a6i5oi35pS26LSn5Zyw5Z2A5YiX6KGoCiAgICBhc3luYyBnZXRBbGxTaGlwcGluZ0FkZHJlc3MoaWQpIHsKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IGdldEFsbFNoaXBwaW5nQWRkcmVzcyhpZCk7CgogICAgICBpZiAoZGF0YS5sZW5ndGgpIHsKICAgICAgICB0aGlzLmFkZF9mb3JtLmFkZHJlc3NJZCA9IGRhdGFbMF0uaWQ7CiAgICAgICAgdGhpcy5hZGRyZXNzX2xpc3QgPSBkYXRhLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0sCiAgICAgICAgICAgIGFkZHJlc3NOYW1lOiBpdGVtLm5hbWUgKyAiICIgKyBpdGVtLm1vYmlsZSArICIgIiArIGl0ZW0uYXJlYS5wcm92aW5jZU5hbWUgKyAiLSIgKyBpdGVtLmFyZWEuY2l0eU5hbWUgKyAiLSIgKyBpdGVtLmFyZWEuZGlzdHJpY3ROYW1lICsgIi0iICsgaXRlbS5hZGRyZXNzCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIHRoaXMuYWRkcmVzc19uYW1lID0gdGhpcy5hZGRyZXNzX2xpc3RbMF0uYWRkcmVzc05hbWU7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5hZGRyZXNzX2xpc3QgPSBbXTsKICAgICAgfQogICAgfSwKCiAgICAvLyDnp7vlh7rotK3nianovaYKICAgIGFzeW5jIGRlbGV0ZVJvd0dvb2RzKGluZGV4KSB7CiAgICAgIGlmICh0aGlzLnNhbGVPcmRlckdvb2RzLmxlbmd0aCA+IDEpIHsKICAgICAgICB0aGlzLnNhbGVPcmRlckdvb2RzLnNwbGljZShpbmRleCwgMSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLoh7PlsJHkv53nlZnkuIDmnaHllYblk4EiKTsKICAgICAgfQogICAgfSwKCiAgICAvLyDnp7vlh7rotaDlk4HotK3nianovaYKICAgIGFzeW5jIGdpdmVhd2F5RGVsZXRlUm93R29vZHMoaW5kZXgpIHsKICAgICAgdGhpcy5naXZlYXdheUdvb2RzLnNwbGljZShpbmRleCwgMSk7CiAgICB9LAoKICAgIC8vIOiOt+WPluiHquaPkOeCuQogICAgYXN5bmMgZ2V0QWxsU2VsZkV4cHJlc3NSdWxlKCkgewogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgZ2V0QWxsU2VsZkV4cHJlc3NSdWxlKCk7CiAgICAgIHRoaXMuc2VsZl9leHByZXNzX2xpc3QgPSBkYXRhLm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4geyAuLi5pdGVtLAogICAgICAgICAgYWRkcmVzc05hbWU6IGl0ZW0uc2V0RGF0YS5uYW1lICsgIiAiICsgaXRlbS5zZXREYXRhLm1vYmlsZSArICIgIiArIGl0ZW0uc2V0RGF0YS5wcm92aW5jZU5hbWUgKyAiLSIgKyBpdGVtLnNldERhdGEuY2l0eU5hbWUgKyAiLSIgKyBpdGVtLnNldERhdGEuZGlzdHJpY3ROYW1lICsgIi0iICsgaXRlbS5zZXREYXRhLmFkZHJlc3MKICAgICAgICB9OwogICAgICB9KTsKCiAgICAgIGlmIChkYXRhLmxlbmd0aCkgewogICAgICAgIHRoaXMuYWRkX2Zvcm0uc2VsZlJ1bGVJZCA9IGRhdGFbMF0uaWQ7CiAgICAgICAgdGhpcy5hZGRfZm9ybS5zZWxmUnVsZURhdGEgPSBkYXRhWzBdLnNldERhdGE7CiAgICAgIH0KICAgIH0sCgogICAgLy8g6YWN6YCB5pa55byPCiAgICBkZWxpdmVyeVR5cGVDaGFuZ2UodmFsKSB7CiAgICAgIHRoaXMucGF5VHlwZV9saXN0LmZvckVhY2goaXRlbSA9PiB7CiAgICAgICAgaWYgKHZhbCA9PT0gaXRlbS52YWx1ZSkgewogICAgICAgICAgdGhpcy5vcmRlcl9kZXRhaWwucGF5VHlwZU1zZyA9IGl0ZW0ubGFiZWw7CiAgICAgICAgfQogICAgICB9KTsKCiAgICAgIGlmICh2YWwgPT09IDEpIHsKICAgICAgICAvLyBjb25zdCB0YXJnZXQgPSB0aGlzLmFkZHJlc3NfbGlzdFswXTsKICAgICAgICAvLyB0aGlzLmFkZF9mb3JtLmFkZHJlc3NJZCA9IHRhcmdldC5pZDsKICAgICAgICB0aGlzLmdldEFsbFNoaXBwaW5nQWRkcmVzcyh0aGlzLmFkZF9mb3JtLmN1c3RvbWVySWQpOwogICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gMikgewogICAgICAgIGlmICh0aGlzLnNlbGZfZXhwcmVzc19saXN0Lmxlbmd0aCkgewogICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5zZWxmX2V4cHJlc3NfbGlzdFswXTsKICAgICAgICAgIHRoaXMuYWRkX2Zvcm0uc2VsZlJ1bGVJZCA9IHRhcmdldC5pZDsKICAgICAgICAgIHRoaXMuYWRkX2Zvcm0uc2VsZlJ1bGVEYXRhID0gdGFyZ2V0LnNldERhdGE7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIGFkZHJlc3NDaGFuZ2UoY29tbWFuZCkgewogICAgICB0aGlzLmFkZF9mb3JtLmFkZHJlc3NJZCA9IGNvbW1hbmQ7CiAgICAgIHRoaXMuYWRkcmVzc19uYW1lID0gdGhpcy5hZGRyZXNzX2xpc3QuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGNvbW1hbmQpLmFkZHJlc3NOYW1lOwogICAgfSwKCiAgICBjbG9zZURpYWxvZyhmb3JtTmFtZSkgewogICAgICB0aGlzLnJlZ2lvbk5hbWUgPSBbXTsKICAgICAgdGhpcy4kcmVmc1tmb3JtTmFtZV0ucmVzZXRGaWVsZHMoKTsKICAgIH0sCgogICAgLy8g6YCJ5oup6Ieq5o+Q54K5CiAgICBzZWxmUnVsZUlkQ2hhbmdlKHZhbCkgewogICAgICBjb25zdCBkYXRhID0gdGhpcy5zZWxmX2V4cHJlc3NfbGlzdC5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gdmFsKTsKICAgICAgdGhpcy5hZGRfZm9ybS5zZWxmUnVsZURhdGEgPSBkYXRhID8gZGF0YS5zZXREYXRhIDoge307CiAgICB9CgogIH0KfTs="},{"version":3,"mappings":"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;MAOA,CARA;;MASA;QACA;QACA;MACA,CA7DA,CA8DA;MACA;;;MACA;MACA;;MACA;QACA;QACA;QACA,eACAmD,4BACA,GADA,GAEAA,qBAFA,GAGA,GAHA,GAIAA,yBAJA,GAKA,GALA,GAMAA,oBAPA;MAQA,CAXA,MAWA;QACA;QACA;QACA,eACAoD,gCACA,GADA,GAEAA,yBAFA,GAGA,GAHA,GAIAA,6BAJA,GAKA,GALA,GAMAA,mBAPA;MAQA;IACA,CA7QA;;IA8QA;IACA;MACA;QACA3D,uBADA;QAEAU,uCAFA;QAGA1B,mCAHA;QAIAF;MAJA;MAMA;QACA8E,kBADA;QAEAvF;MAFA;MAIA;QACAmF,eADA;QAEAnE;MAFA;;MAIA;QACA;MACA,CAFA,MAEA;QACA;MACA;IACA,CAnSA;;IAoSA;IACA;MACA;QAAAhB;MAAA;QACAuF;MADA;MAIA;;MACA;QACA;;QACA;UACA;QACA;;QACA;QACA;QACA;MACA;IACA,CApTA;;IAqTA;IACA;MACA;QAAAvF;MAAA;QACAwF,OADA;QAEAC;MAFA;MAKA;MACA;;MACA;QACA;MACA;IACA,CAjUA;;IAkUA;IACA;MACA;QACAF;MADA;;MAIA;QACA;UACAJ,eADA;UAEAnE;QAFA;;QAIA;UACA;QACA,CAFA,MAEA;UACA;QACA;MACA;IACA,CAnVA;;IAoVA;IACA0E;MACA;QACA;QACA;MACA;;MACA;QACA;UACA,4DADA,CAEA;;UACA;YACA;cACA;YACA,CAFA,MAEA;cACA;YACA;UACA,CANA;;UAOA;YACA;YACA;UACA,CAbA,CAcA;;;UACA;;UACA;YACA;YACA;UACA,CAnBA,CAoBA;;;UACA,2DArBA,CAsBA;UACA;UACA;UACA;UACA;;UACA,yDA3BA,CA4BA;UACA;UACA;UACA;;UACA;YACA;cACA;cACA;cACA;YACA;;YACA;UACA,CAPA;;UAQA;YACA;YACA;UACA;;UAEA,IACA,mCACA,iCAFA,EAGA;YACA;YACA;UACA;;UACA;YACA;UACA,CAFA,MAEA;YACA;UACA;QACA;MACA,CA3DA;IA4DA,CAtZA;;IAuZA;IACA;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ACA;MACA;MACA;MACA;MACA;MACA;;MACA;QACA;UACAuC;QACA;MACA,CAVA,CAWA;;;MACA;QACA,8CACArC,gDADA;QAGAzF;MACA;;MACA8H;MACAA;MACA;IACA,CAhsBA;;IAisBA;IACAC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MACA;QACA;MACA;IACA,CA7sBA;;IA8sBA;IACAC;MACA;MACA,6BACA;QACAC,oBADA;QAEAC,mCAFA;QAGApF,wBAHA;QAIAqF,kCAJA;QAKAC,gBALA;QAMAC,uCANA;QAOA9D,mBAPA;QAQAnB;MARA,CADA;IAYA,CA7tBA;;IA8tBA;IACA;MACA;QAAAhC;MAAA;;MACA;QACA;QACA;UACA,SACA,OADA;YAEAkH,aACA7C,YACA,GADA,GAEAA,WAFA,GAGA,GAHA,GAIAA,sBAJA,GAKA,GALA,GAMAA,kBANA,GAOA,GAPA,GAQAA,sBARA,GASA,GATA,GAUAA;UAbA;QAeA,CAhBA;QAiBA;MACA,CApBA,MAoBA;QACA;MACA;IACA,CAxvBA;;IAyvBA;IACA;MACA;QACA;MACA,CAFA,MAEA;QACA;MACA;IACA,CAhwBA;;IAiwBA;IACA;MACA;IACA,CApwBA;;IAqwBA;IACA;MACA;QAAArE;MAAA;MACA;QACA,SACA,OADA;UAEAkH,aACA7C,oBACA,GADA,GAEAA,mBAFA,GAGA,GAHA,GAIAA,yBAJA,GAKA,GALA,GAMAA,qBANA,GAOA,GAPA,GAQAA,yBARA,GASA,GATA,GAUAA;QAbA;MAeA,CAhBA;;MAkBA;QACA;QACA;MACA;IACA,CA9xBA;;IA+xBA;IACA8C;MACA;QACA;UACA;QACA;MACA,CAJA;;MAKA;QACA;QACA;QACA;MACA,CAJA,MAIA;QACA;UACA;UACA;UACA;QACA;MACA;IACA,CAjzBA;;IAkzBAC;MACA;MACA,2CACA/C,2BADA,EAEA6C,WAFA;IAGA,CAvzBA;;IAwzBAG;MACA;MACA;IACA,CA3zBA;;IA4zBA;IACAC;MACA;MACA;IACA;;EAh0BA;AA7KA","names":["skuId","code","goodsId","buyNum","shopId","basicGoodsId","goodsName","unitName","specGroup","inventory","salePrice","subMoney","shopName","goodsImages","brandId","brandName","categoryPath","categoryName","conversion","barCode","storageCode","warehouseId","originPrice","specType","name","components","SelectCustomer","RegionSelect","ConditionSelGoods","AccountType","data","callback","address_name","warehouse","warehouse_show","account_shopId","account_show","AddAddress","loading","userCenterId","deliveryType_list","saleOrderGoods","giveawayGoods","add_rules","customerId","required","message","trigger","addressId","validator","deliveryType","form_rules","address","mobile","provinceCode","address_list","accountName","add_form","currentAccountName","receivedMoney","accountList","customerName","remark","selfRuleId","selfRuleData","payType","particularsType","totalReduceMoney","regionName","form","cityCode","districtCode","defaultStatus","pageName","orderId","goods_index","give_goods_index","spec_check","self_express_list","order_detail","change_num","payWay","operatorName","shop_id","payType_list","label","value","particularsType_list","computed","orderAmount","sum","payMoney","methods","pushGoods","goodsVisibleChange","giveawayVisibleChange","specSelConfirm","console","gf","item","supplierId","supplierName","isEq","isMaster","isDistribution","merchantId","giveawaySpecSelConfirm","selectSelGoods","filter","map","giveawaySelectSelGoods","addListGoods","giveawayAddListGoods","type","regionChange","handleClose","receiveData","key","page","pageSize","subData","totalMoney","price","goodsCode","images","goodsData","lists","arr","fin","isEqMore","otherNum","unitId","enabledLadder","ladderPrice","indexF","itemF","target","customerSel","accountsel","accountId","accountNumber","money","discountMoney","finalMoney","addressName","deliveryTypeChange","addressChange","closeDialog","selfRuleIdChange"],"sourceRoot":"src/views/order/manageO","sources":["OrderAdd.vue"],"sourcesContent":["<template>\n <ContainerTit>\n <div slot=\"headr\">\n <el-button v-if=\"!orderId\" @click=\"delPauseSave(1)\">清除暂存</el-button>\n <el-button v-if=\"!orderId\" @click=\"addPauseSave\">暂存</el-button>\n <el-button :loading=\"sub_loading\" type=\"primary\" @click=\"subData\">\n 提交保存\n </el-button>\n </div>\n <div class=\"page-tip-div\">\n <i class=\"el-icon-info\"></i>\n 抄码商品只能选择一个单位进行下单,重复选择则不能勾选\n </div>\n <el-form\n ref=\"add_form\"\n :rules=\"add_rules\"\n :model=\"add_form\"\n size=\"small\"\n inline\n >\n <div class=\"detail-tab-item\">\n <p class=\"detail-tab-title\">基本信息</p>\n <div class=\"detail-tab-main\">\n <el-form-item label=\"客户\" prop=\"customerId\">\n <SelectCustomer\n v-model=\"add_form.customerName\"\n :clearable=\"false\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n @change=\"customerSel\"\n />\n <el-button\n v-if=\"parseInt(order_detail.payStatus) !== 5\"\n size=\"mini\"\n type=\"text\"\n @click=\"$router.push('/Customer/CustomerAdmin/AddCustomer')\"\n >\n 【新建客户】\n </el-button>\n </el-form-item>\n <el-form-item label=\"配送方式\" prop=\"deliveryType\">\n <el-select\n v-model=\"add_form.deliveryType\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n placeholder=\"请选择\"\n @change=\"deliveryTypeChange\"\n >\n <el-option\n v-for=\"item in deliveryType_list\"\n :key=\"item.id\"\n :label=\"item.title\"\n :value=\"item.deliveryType\"\n ></el-option>\n </el-select>\n </el-form-item>\n <el-form-item\n v-if=\"add_form.deliveryType !== 2 && add_form.customerName\"\n label=\"收货信息\"\n prop=\"addressId\"\n >\n <!-- 因为保存订单后,地址ID在数据库里面存的是个新的ID,所以把下拉框选择器改为下拉菜单 -->\n <el-dropdown @command=\"addressChange\">\n <div\n style=\"\n min-width: 300px;\n cursor: pointer;\n border: 1px solid #dcdfe6;\n border-radius: 4px;\n padding: 0 10px;\n font-size: 13px;\n vertical-align: middle;\n height: 32px;\n line-height: 32px;\n \"\n class=\"clearfix\"\n >\n <span class=\"float_left\">{{ address_name || \"请选择\" }}</span>\n <span class=\"float_right\">\n <i class=\"el-icon-arrow-down el-icon--right\"></i>\n </span>\n </div>\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item\n v-for=\"(item, index) in address_list\"\n :key=\"index\"\n :command=\"item.id\"\n >\n {{ item.addressName }}\n </el-dropdown-item>\n <el-dropdown-item v-if=\"!address_list.length\">\n 当前客户未设置地址\n </el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n <el-button\n v-if=\"!!add_form.customerId\"\n type=\"text\"\n size=\"small\"\n plain\n style=\"margin-left: 5px; transform: translateY(-10px)\"\n @click=\"AddAddress = true\"\n >\n 新增地址\n </el-button>\n </el-form-item>\n <el-form-item\n v-if=\"add_form.deliveryType === 3 && add_form.customerName\"\n label=\"物流类型\"\n >\n <el-select\n v-model=\"add_form.particularsType\"\n placeholder=\"请选择\"\n @change=\"deliveryTypeChange\"\n >\n <el-option\n v-for=\"item in particularsType_list\"\n :key=\"item.id\"\n :label=\"item.label\"\n :value=\"item.value\"\n ></el-option>\n </el-select>\n </el-form-item>\n <el-form-item v-if=\"add_form.deliveryType === 2\" label=\"自提点\">\n <el-select\n v-model=\"add_form.selfRuleId\"\n placeholder=\"请选择\"\n style=\"width: 400px\"\n @change=\"selfRuleIdChange\"\n >\n <el-option\n v-for=\"(item, index) in self_express_list\"\n :key=\"index\"\n :label=\"item.addressName\"\n :value=\"item.id\"\n ></el-option>\n </el-select>\n </el-form-item>\n <el-form-item label=\"支付方式\">\n <el-select\n v-model=\"add_form.payType\"\n placeholder=\"请选择\"\n @change=\"deliveryTypeChange\"\n >\n <el-option\n v-for=\"item in payType_list\"\n :key=\"item.id\"\n :label=\"item.label\"\n :value=\"item.value\"\n ></el-option>\n </el-select>\n </el-form-item>\n </div>\n </div>\n <div class=\"detail-tab-item\">\n <p class=\"detail-tab-title\">商品清单</p>\n <el-table\n :data=\"saleOrderGoods\"\n :height=\"saleOrderGoods.length >= 10 ? 500 : ''\"\n >\n <el-table-column type=\"index\" width=\"50\" label=\"#\"></el-table-column>\n <el-table-column min-width=\"200\" prop=\"goodsName\" label=\"商品名称\">\n <template slot-scope=\"scope\">\n <!-- 由于订单是按照店铺拆单的\n所以在编辑订单时,增加此订单的商品时应该只能选择本店铺下的商品-->\n <!-- -->\n <ConditionSelGoods\n v-model=\"scope.row.goodsName\"\n :disabled=\"\n parseInt(order_detail.payStatus) === 5 || !userCenterId\n \"\n :user-center-id=\"userCenterId\"\n :spec-check=\"spec_check\"\n :enable-status=\"5\"\n :shop-id=\"shop_id\"\n @goodsVisibleChange=\"goodsVisibleChange($event, scope.$index)\"\n @specSelConfirm=\"specSelConfirm\"\n @selectSelGoods=\"selectSelGoods\"\n @selGoods=\"selGoods\"\n />\n </template>\n </el-table-column>\n <el-table-column prop=\"specGroup\" min-width=\"130\" label=\"规格\">\n <template slot-scope=\"scope\">\n <span>{{ scope.row.unitName || \"--\" }};</span>\n <span v-for=\"(item, index) in scope.row.specGroup\" :key=\"index\">\n {{ item.specValueName }};\n </span>\n </template>\n </el-table-column>\n <el-table-column prop=\"inventory\" min-width=\"120\" label=\"可用库存\">\n <template slot-scope=\"scope\">\n <div\n class=\"inventory-text\"\n :class=\"[\n scope.row.inventory <= 0 ? 'danger-color' : 'success-color',\n ]\"\n >\n {{ $_common.formatNub(scope.row.inventory) }}\n </div>\n </template>\n </el-table-column>\n <el-table-column prop=\"buyNum\" label=\"数量\" min-width=\"100\">\n <template slot-scope=\"scope\">\n <!-- 未开启负库存 有最大值验证-->\n <vxe-input\n v-if=\"scope.row.isDistribution === 4\"\n v-model=\"scope.row.buyNum\"\n style=\"width: 100%\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n :min=\"0\"\n :max=\"scope.row.inventory\"\n size=\"mini\"\n placeholder=\"数值类型\"\n type=\"number\"\n @change=\"updateBuyNum(scope.$index)\"\n ></vxe-input>\n <!-- 开启负库存 无最大值验证-->\n <vxe-input\n v-else\n v-model=\"scope.row.buyNum\"\n style=\"width: 100%\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n :min=\"0\"\n size=\"mini\"\n placeholder=\"数值类型\"\n type=\"number\"\n @change=\"updateBuyNum(scope.$index)\"\n ></vxe-input>\n <br />\n <!-- 其他单位数量 -->\n <vxe-input\n v-if=\"scope.row.isEq === 5 && scope.row.isMaster === 5\"\n v-model=\"scope.row.otherNum\"\n style=\"width: 100%; margin-top: 5px\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n size=\"mini\"\n placeholder=\"其他单位数量\"\n type=\"integer\"\n ></vxe-input>\n </template>\n </el-table-column>\n\n <el-table-column min-width=\"100\" prop=\"price\" label=\"单价\">\n <template slot-scope=\"scope\">\n <vxe-input\n v-if=\"$accessCheck($Access.OrderAddeditGoodsPrice)\"\n v-model=\"scope.row.salePrice\"\n size=\"mini\"\n style=\"width: 100%\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n :min=\"0\"\n @change=\"updateBuyNum(scope.$index)\"\n ></vxe-input>\n <span v-else>\n {{ scope.row.salePrice }}\n </span>\n </template>\n </el-table-column>\n <el-table-column min-width=\"100\" prop=\"totalMoney\" label=\"小计\">\n <template slot-scope=\"scope\">\n <vxe-input\n v-if=\"$accessCheck($Access.OrderAddeditGoodsPrice)\"\n v-model=\"scope.row.subMoney\"\n size=\"mini\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n style=\"width: 100%\"\n ></vxe-input>\n <span v-else>\n {{ scope.row.subMoney }}\n </span>\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" prop=\"tag\" label=\"管理\" width=\"120\">\n <template slot-scope=\"scope\">\n <el-button\n size=\"mini\"\n type=\"text\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n @click=\"deleteRowGoods(scope.$index)\"\n >\n 删除\n </el-button>\n <el-button\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n size=\"mini\"\n type=\"text\"\n @click=\"addListGoods\"\n >\n 新增\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"price-div\">\n <span class=\"de_label\">商品总额:</span>\n <span class=\"de_val\">\n {{ $_common.formattedNumber(orderAmount) }}\n </span>\n\n <span class=\"de_label\">优惠金额:</span>\n <span class=\"de_val\">\n ¥\n <el-input-number\n v-if=\"$accessCheck($Access.OrderAddeditGoodsPrice)\"\n v-model=\"totalReduceMoney\"\n :controls=\"false\"\n size=\"small\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n :min=\"0\"\n :max=\"orderAmount\"\n ></el-input-number>\n <span v-else>{{ totalReduceMoney }}</span>\n </span>\n <span class=\"de_label\">应收:</span>\n <span class=\"de_val\">{{ $_common.formattedNumber(payMoney) }}</span>\n <span class=\"de_label\">实收:</span>\n <span class=\"de_val\">\n ¥\n <el-input-number\n v-if=\"$accessCheck($Access.OrderAddeditGoodsPrice)\"\n v-model=\"add_form.receivedMoney\"\n :controls=\"false\"\n size=\"small\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n :min=\"0\"\n :max=\"payMoney\"\n ></el-input-number>\n <span v-else>{{ add_form.receivedMoney }}</span>\n </span>\n\n <span class=\"de_label\">结算账户:</span>\n <span class=\"de_val\">\n <el-input\n v-model=\"accountName\"\n readonly\n :disabled=\"\n !add_form.customerId || parseInt(order_detail.payStatus) === 5\n \"\n style=\"width: 200px\"\n size=\"small\"\n placeholder=\"结算账户\"\n >\n <i\n slot=\"suffix\"\n class=\"el-input__icon el-icon-search\"\n @click=\"account_show = true\"\n ></i>\n </el-input>\n </span>\n </div>\n </div>\n <div v-if=\"false\" class=\"detail-tab-item\">\n <div class=\"detail-tab-title clearfix\">\n <span class=\"float_left\">赠品清单</span>\n <span class=\"float_right\">\n <el-button size=\"mini\" type=\"primary\" @click=\"giveawayAddListGoods\">\n 新增\n </el-button>\n </span>\n </div>\n <el-table\n :height=\"giveawayGoods.length >= 10 ? '500' : ''\"\n :data=\"giveawayGoods\"\n >\n <el-table-column type=\"index\" width=\"50\" label=\"#\"></el-table-column>\n <el-table-column min-width=\"200\" prop=\"goodsName\" label=\"商品名称\">\n <template slot-scope=\"scope\">\n <!-- 由于订单是按照店铺拆单的\n所以在编辑订单时,增加此订单的商品时应该只能选择本店铺下的商品-->\n <!-- -->\n <ConditionSelGoods\n v-model=\"scope.row.goodsName\"\n :disabled=\"\n parseInt(order_detail.payStatus) === 5 || !userCenterId\n \"\n :user-center-id=\"userCenterId\"\n :spec-check=\"spec_check\"\n :enable-status=\"5\"\n :shop-id=\"shop_id\"\n @goodsVisibleChange=\"\n giveawayVisibleChange($event, scope.$index)\n \"\n @specSelConfirm=\"giveawaySpecSelConfirm\"\n @selectSelGoods=\"giveawaySelectSelGoods\"\n @selGoods=\"giveawaySelGoods\"\n />\n </template>\n </el-table-column>\n <el-table-column prop=\"specGroup\" min-width=\"130\" label=\"规格\">\n <template slot-scope=\"scope\">\n <span>{{ scope.row.unitName || \"--\" }};</span>\n <span v-for=\"(item, index) in scope.row.specGroup\" :key=\"index\">\n {{ item.specValueName }};\n </span>\n </template>\n </el-table-column>\n <el-table-column prop=\"inventory\" min-width=\"120\" label=\"可用库存\">\n <template slot-scope=\"scope\">\n <div\n class=\"inventory-text\"\n :class=\"[\n scope.row.inventory <= 0 ? 'danger-color' : 'success-color',\n ]\"\n >\n {{ $_common.formatNub(scope.row.inventory) }}\n </div>\n </template>\n </el-table-column>\n <el-table-column prop=\"buyNum\" label=\"数量\" min-width=\"100\">\n <template slot-scope=\"scope\">\n <!-- 未开启负库存 有最大值验证-->\n <el-input-number\n v-if=\"scope.row.isDistribution === 4\"\n v-model=\"scope.row.buyNum\"\n size=\"mini\"\n :controls=\"false\"\n style=\"width: 100%\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n :min=\"0\"\n :max=\"scope.row.inventory\"\n @change=\"giveawayUpdateBuyNum(scope.$index)\"\n ></el-input-number>\n <!-- 开启负库存 无最大值验证-->\n <el-input-number\n v-else\n v-model=\"scope.row.buyNum\"\n size=\"mini\"\n :controls=\"false\"\n style=\"width: 100%\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n :min=\"0\"\n @change=\"giveawayUpdateBuyNum(scope.$index)\"\n ></el-input-number>\n </template>\n </el-table-column>\n <el-table-column fixed=\"right\" prop=\"tag\" label=\"管理\" width=\"120\">\n <template slot-scope=\"scope\">\n <el-button\n size=\"mini\"\n type=\"text\"\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n @click=\"giveawayDeleteRowGoods(scope.$index)\"\n >\n 删除\n </el-button>\n <el-button\n :disabled=\"parseInt(order_detail.payStatus) === 5\"\n size=\"mini\"\n type=\"text\"\n @click=\"giveawayAddListGoods\"\n >\n 新增\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n </div>\n <div class=\"detail-tab-item\">\n <p class=\"detail-tab-title\">备注说明</p>\n <!-- 备注-->\n <div class=\"detail-tab-main\">\n <el-input\n v-model=\"add_form.remark\"\n type=\"textarea\"\n :rows=\"2\"\n style=\"width: 100%\"\n placeholder=\"请输入一些说明吧\"\n ></el-input>\n </div>\n </div>\n </el-form>\n <!-- 新增收货地址-->\n <el-dialog\n title=\"新增地址\"\n :visible.sync=\"AddAddress\"\n :show-close=\"false\"\n width=\"50%\"\n :before-close=\"handleClose\"\n :close-on-press-escape=\"false\"\n :close-on-click-modal=\"false\"\n @close=\"closeDialog('form')\"\n >\n <el-form\n ref=\"form\"\n :model=\"form\"\n size=\"medium\"\n label-width=\"100px\"\n :rules=\"form_rules\"\n >\n <el-form-item label=\"收货人\" prop=\"name\">\n <el-input\n v-model=\"form.name\"\n placeholder=\"收货人名称\"\n autocomplete=\"off\"\n style=\"width: 350px\"\n ></el-input>\n </el-form-item>\n <el-form-item label=\"收货地址\" prop=\"provinceCode\">\n <RegionSelect\n v-model=\"regionName\"\n size=\"medium\"\n style=\"margin-bottom: 10px\"\n @change=\"regionChange\"\n />\n </el-form-item>\n <el-form-item label=\"详细地址\" prop=\"address\">\n <el-input\n v-model=\"form.address\"\n placeholder=\"详细地址,例如楼牌,门号\"\n autocomplete=\"off\"\n style=\"width: 350px\"\n ></el-input>\n </el-form-item>\n <el-form-item label=\"联系方式\" prop=\"mobile\">\n <el-input\n v-model=\"form.mobile\"\n placeholder=\"填写收货人联系方式\"\n style=\"width: 350px\"\n ></el-input>\n </el-form-item>\n <el-form-item label=\"是否默认\">\n <el-switch\n v-model=\"form.defaultStatus\"\n active-color=\"#ff4949\"\n inactive-color=\"#36B365\"\n ></el-switch>\n </el-form-item>\n </el-form>\n <div slot=\"footer\" class=\"dialog-footer\">\n <el-button @click=\"AddAddress = false\">取 消</el-button>\n <el-button type=\"primary\" @click=\"addShippingAddress\">确 定</el-button>\n </div>\n </el-dialog>\n <AccountType\n v-if=\"account_show\"\n :id=\"account_shopId\"\n :is-check=\"false\"\n :is-show=\"account_show\"\n @cancel=\"account_show = false\"\n @confirm=\"accountsel\"\n />\n </ContainerTit>\n</template>\n\n<script>\n import RegionSelect from \"@/component/common/RegionSelectJSON\";\n import ConditionSelGoods from \"@/component/common/ConditionSelGoods\";\n import { getOrderInfoById, newOrderEdit, newAddOrder } from \"@/api/Order\";\n import { addShippingAddress, getAllShippingAddress } from \"@/api/Customer\";\n import { getAllDelivery, getAllSelfExpressRule } from \"@/api/System\";\n import { addPauseSave, getPauseSave, delPauseSave } from \"@/api/common\";\n import AccountType from \"@/views/Finance/AccountType\";\n import SelectCustomer from \"@/component/common/SelectCustomer.vue\";\n const goodsItem = {\n skuId: 0,\n code: \"\",\n goodsId: 0,\n buyNum: 1,\n shopId: 0,\n basicGoodsId: 0,\n goodsName: \"\",\n unitName: \"\",\n specGroup: \"\",\n inventory: 0,\n salePrice: 0,\n subMoney: 0,\n shopName: \"\",\n goodsImages: \"\",\n brandId: 0,\n brandName: \"\",\n categoryPath: \"\",\n categoryName: \"\",\n conversion: \"\",\n barCode: \"\",\n storageCode: \"\",\n warehouseId: 0,\n originPrice: \"\",\n specType: \"\",\n };\n export default {\n name: \"OrderAdd\",\n components: {\n SelectCustomer,\n RegionSelect,\n ConditionSelGoods,\n AccountType,\n },\n\n data() {\n const validateMobile = (rule, value, callback) => {\n const re = /^1[3456789]\\d{9}$/; // 正则表达式\n if (value === \"\") {\n callback(new Error());\n } else if (!re.test(value)) {\n callback(new Error(\"手机号格式有误,请重新输入!\"));\n } else {\n callback();\n }\n };\n const validateAddressId = (rule, value, callback) => {\n if (this.add_form.deliveryType !== 2) {\n if (!value) {\n callback(new Error(\"请选择收货信息\"));\n } else {\n callback();\n }\n } else {\n callback();\n }\n };\n return {\n address_name: \"\",\n warehouse: \"\",\n warehouse_show: false,\n account_shopId: 0,\n account_show: false, // 结算账户\n // 新增地址\n AddAddress: false,\n loading: false,\n userCenterId: \"\",\n deliveryType_list: [],\n\n saleOrderGoods: [], //商品清单\n giveawayGoods: [], //赠品品清单\n add_rules: {\n customerId: [\n { required: true, message: \"请选择购买客户\", trigger: \"change\" },\n ],\n addressId: [\n { required: true, validator: validateAddressId, trigger: \"change\" },\n ],\n deliveryType: [\n { required: true, message: \"请选择配送方式\", trigger: \"change\" },\n ],\n },\n form_rules: {\n name: [\n { required: true, message: \"请填写收货人\", trigger: \"change\" },\n ],\n address: [\n { required: true, message: \"请输入详细地址\", trigger: \"blur\" },\n ],\n mobile: [\n { required: true, message: \"请填写联系方式\", trigger: \"blur\" },\n { validator: validateMobile, trigger: \"blur\" },\n ],\n provinceCode: [\n { required: true, message: \"请选择收货地址\", trigger: \"change\" },\n ],\n },\n mobile: \"\",\n address: \"\",\n /*\n *\n * 'ios' => 1, //ios\n 'android' => 2,//安卓\n 'miniProgram' => 3,//小程序\n 'manage' => 4, //后台创建\n 'H5' => 5, //H5页面\n 'Pc' => 6, //Pc页面\n * */\n address_list: [], //收货地址列表\n accountName: \"\",\n add_form: {\n currentAccountName: \"\",\n receivedMoney: 0,\n accountList: [],\n deliveryType: \"\", //配送方式\n customerName: \"\", //客户名称\n customerId: \"\",\n remark: \"\", // 备注\n addressId: \"\", // 收货地址\n selfRuleId: [],\n selfRuleData: {},\n payType: 3, //支付方式\n particularsType: \"\", //物流详情\n },\n totalReduceMoney: 0, // 优惠金额\n // 新增地址\n regionName: [],\n //新增收货地址\n form: {\n name: \"\",\n provinceCode: \"\",\n cityCode: \"\",\n districtCode: \"\",\n address: \"\",\n mobile: \"\",\n defaultStatus: 5,\n },\n pageName: \"\",\n orderId: \"\",\n goods_index: 0,\n give_goods_index: 0, // 赠品下标\n spec_check: [], // 属性\n self_express_list: [], //自提点\n order_detail: {}, //订单详情\n change_num: 0,\n payWay: 3, //支付方式\n operatorName: \"\",\n shop_id: \"\",\n payType_list: [\n { label: \"货到付款\", value: 3 },\n { label: \"先款后货\", value: 9 },\n ],\n particularsType_list: [\n { label: \"物流专线\", value: 4 },\n { label: \"物流专车\", value: 5 },\n ],\n };\n },\n computed: {\n // 商品总额\n orderAmount() {\n if (!this.saleOrderGoods.length) {\n return 0;\n } else if (this.saleOrderGoods.length === 1) {\n return Number(this.saleOrderGoods[0].subMoney);\n } else {\n let sum = 0;\n this.saleOrderGoods.forEach((item) => {\n sum = this.$NP.plus(sum, Number(item.subMoney) || 0);\n });\n return sum;\n }\n },\n payMoney() {\n return this.$NP.minus(\n this.orderAmount || 0,\n this.totalReduceMoney || 0\n );\n },\n },\n async created() {\n // 配送方式\n await this.getAllDelivery();\n // 获取自提点\n await this.getAllSelfExpressRule();\n this.pageName = this.$route.name;\n this.orderId = this.$route.params.id;\n this.userCenterId = this.$route.params.userCenterId;\n this.add_form.currentAccountName = this.userName;\n\n if (this.orderId) {\n // 获取订单详情\n await this.getOrderInfoById();\n } else {\n this.pushGoods();\n // 获取暂存信息\n await this.getPauseSave();\n }\n },\n methods: {\n pushGoods() {\n this.saleOrderGoods = [];\n for (let i = 0; i < 1; i++) {\n this.saleOrderGoods.push(this.$_common.deepClone(goodsItem));\n }\n },\n // 拼音商品名称\n goodsVisibleChange(visible, index) {\n if (visible) {\n this.goods_index = index;\n }\n },\n giveawayVisibleChange(visible, index) {\n if (visible) {\n this.give_goods_index = index;\n }\n },\n specSelConfirm(params) {\n console.log(params.goodsD);\n if (params.now_goods_data.isEq === 5) {\n const goods = this.saleOrderGoods.find((item) => {\n return item.goodsId === params.now_goods_data.id;\n });\n if (goods) {\n const repeatGoods = params.goodsD.find(\n (gf) => gf.spec.unitName !== goods.unitName\n );\n if (repeatGoods) {\n this.$message.warning(\n `【${params.now_goods_data.title}】为抄码商品,只能选择一个单位进行下单`\n );\n return;\n }\n } else {\n let unitId = params.goodsD[0].spec.unitId;\n let isRepeat = params.goodsD.every(\n (item) => item.spec.unitId === unitId\n );\n if (!isRepeat) {\n this.$message.warning(\n `【${params.now_goods_data.title}】为抄码商品,只能选择一个单位进行下单`\n );\n return;\n }\n }\n }\n const goodsData = params.goodsD.map((item) => {\n return {\n skuId: item.skuId,\n code: params.now_goods_data.code,\n goodsId: params.now_goods_data.id,\n buyNum: 1,\n shopId: params.now_goods_data.shopId,\n basicGoodsId: params.now_goods_data.basicGoodsId,\n goodsName: params.now_goods_data.title,\n unitName: item.spec.unitName,\n specGroup: item.spec.specGroup,\n inventory: item.spec.inventory,\n salePrice: item.spec.salePrice,\n subMoney: item.spec.salePrice,\n shopName: params.now_goods_data.shopName,\n goodsImages: item.spec.specImage || params.now_goods_data.images[0],\n brandId: params.now_goods_data.brandId,\n brandName: params.now_goods_data.brandName,\n categoryPath: params.now_goods_data.categoryPath,\n categoryName: params.now_goods_data.categoryName,\n conversion: item.spec.conversion,\n barCode: item.spec.barCode,\n storageCode: params.now_goods_data.storage,\n warehouseId: params.now_goods_data.warehouseId,\n originPrice: item.spec.originPrice,\n specType: item.spec.specType,\n supplierId: item.supplierId,\n supplierName: item.supplierName,\n isEq: item.isEq,\n isMaster: item.spec.isMaster,\n isDistribution: item.isDistribution,\n merchantId: item.merchantId,\n };\n });\n // this.saleOrderGoods = this.$_common.unique(\n // goodsData.concat(this.saleOrderGoods),\n // [\"goodsId\", \"skuId\"]\n // );\n this.saleOrderGoods = goodsData.concat(this.saleOrderGoods);\n },\n // 赠品\n giveawaySpecSelConfirm(params) {\n const goodsData = params.goodsD.map((item) => {\n return {\n skuId: item.skuId,\n code: params.now_goods_data.code,\n goodsId: params.now_goods_data.id,\n buyNum: 1,\n shopId: params.now_goods_data.shopId,\n basicGoodsId: params.now_goods_data.basicGoodsId,\n goodsName: params.now_goods_data.title,\n unitName: item.spec.unitName,\n specGroup: item.spec.specGroup,\n inventory: item.spec.inventory,\n salePrice: item.spec.salePrice,\n subMoney: item.spec.salePrice,\n shopName: params.now_goods_data.shopName,\n goodsImages: item.spec.specImage || params.now_goods_data.images[0],\n brandId: params.now_goods_data.brandId,\n brandName: params.now_goods_data.brandName,\n categoryPath: params.now_goods_data.categoryPath,\n categoryName: params.now_goods_data.categoryName,\n conversion: item.spec.conversion,\n barCode: item.spec.barCode,\n storageCode: params.now_goods_data.storage,\n warehouseId: params.now_goods_data.warehouseId,\n originPrice: item.spec.originPrice,\n specType: item.spec.specType,\n supplierId: item.supplierId,\n supplierName: item.supplierName,\n isEq: item.isEq,\n isMaster: item.spec.isMaster,\n isDistribution: item.isDistribution,\n merchantId: item.merchantId,\n };\n });\n this.giveawayGoods = goodsData.concat(this.giveawayGoods);\n },\n selectSelGoods(id) {\n this.spec_check = this.saleOrderGoods\n .filter((item) => item.goodsId === id)\n .map((item) => {\n return item.skuId;\n });\n },\n giveawaySelectSelGoods(id) {\n this.spec_check = this.giveawayGoods\n .filter((item) => item.goodsId === id)\n .map((item) => {\n return item.skuId;\n });\n },\n // 新增一条商品\n addListGoods() {\n this.saleOrderGoods.push(this.$_common.deepClone(goodsItem));\n },\n // 新增一条赠品\n giveawayAddListGoods() {\n this.giveawayGoods.push(this.$_common.deepClone(goodsItem));\n },\n // 新增地址\n async addShippingAddress() {\n if (\n !this.form.name.trim() ||\n !this.regionName ||\n !this.form.mobile.trim() ||\n !this.form.address.trim()\n ) {\n this.$message.warning(\"都是必填项不能为空\");\n return;\n }\n const data = await addShippingAddress({\n ...this.form,\n customerId: this.add_form.customerId,\n });\n\n this.$message({\n type: \"success\",\n message: \"添加成功\",\n });\n this.AddAddress = false;\n await this.getAllShippingAddress(this.add_form.customerId);\n },\n regionChange(val, params) {\n this.form.provinceCode = val[0];\n this.form.cityCode = val[1];\n this.form.districtCode = val[2];\n },\n // 关闭弹窗\n handleClose() {\n this.form = {};\n },\n // 获取订单详情\n async getOrderInfoById() {\n const { data } = await getOrderInfoById(\n this.$route.params.userCenterId,\n {\n orderId: this.orderId,\n }\n );\n this.order_detail = data;\n this.add_form = {\n accountList: data.accountList || [],\n deliveryType: data.deliveryType, //配送方式\n customerName: data.customerName, //客户名称\n customerId: data.customerId,\n remark: data.remark, // 备注\n addressId: data.receiveData.id, // 收货地址\n selfRuleId: data.selfRuleId,\n selfRuleData: data.selfRuleData,\n receivedMoney: data.receivedMoney,\n payType: Number(data.payType),\n };\n if (this.add_form.deliveryType === 4) {\n this.add_form.deliveryType = 3;\n this.add_form.particularsType = 4;\n }\n if (this.add_form.deliveryType === 5) {\n this.add_form.deliveryType = 3;\n this.add_form.particularsType = 5;\n }\n if (data.receiveData.area) {\n this.address_name =\n data.receiveData.realName +\n \" \" +\n data.receiveData.mobile +\n \" \" +\n data.receiveData.area.provinceName +\n \"-\" +\n data.receiveData.area.cityName +\n \"-\" +\n data.receiveData.area.districtName +\n \"-\" +\n data.receiveData.address;\n }\n\n if (data.accountList && data.accountList.length) {\n this.accountName = data.accountList[0].accountName;\n }\n this.add_form.currentAccountName = data.currentAccountName;\n this.totalReduceMoney = data.totalReduceMoney || 0;\n this.userCenterId = data.userCenterId;\n this.saleOrderGoods = data.goodsData.map((item) => {\n return {\n ...item,\n subMoney: item.totalMoney,\n salePrice: item.price,\n code: item.goodsCode,\n goodsImages: item.images[0],\n };\n });\n if (data.customerId) {\n // 获取客户收货地址列表\n await this.getAllShippingAddress(data.customerId);\n }\n //由于订单是按照店铺拆单的\n // 所以在编辑订单时,增加此订单的商品时应该只能选择本店铺下的商品\n this.shop_id = data.shopId;\n this.account_shopId = data.shopId;\n if (this.add_form.deliveryType === 2) {\n const selfRuleData = JSON.parse(data.selfRuleData);\n this.mobile = selfRuleData.mobile;\n this.address =\n selfRuleData.provinceName +\n \" \" +\n selfRuleData.cityName +\n \" \" +\n selfRuleData.districtName +\n \" \" +\n selfRuleData.address;\n } else {\n const receiveData = data.receiveData;\n this.mobile = receiveData.mobile;\n this.address =\n receiveData.area.provinceName +\n \" \" +\n receiveData.area.cityName +\n \" \" +\n receiveData.area.districtName +\n \" \" +\n receiveData.address;\n }\n },\n // 添加暂存\n async addPauseSave() {\n const params = {\n add_form: this.add_form,\n totalReduceMoney: this.totalReduceMoney,\n saleOrderGoods: this.saleOrderGoods,\n userCenterId: this.userCenterId,\n };\n const data = await addPauseSave({\n key: this.pageName,\n data: params,\n });\n this.$message({\n type: \"success\",\n message: \"暂存成功\",\n });\n if (this.systemType === 2) {\n this.$closeCurrentGoEdit(\"/SingleStore/order/OrderList/waitAudit\");\n } else {\n this.$closeCurrentGoEdit(\"/order/manageO/orderQuery\");\n }\n },\n // 获取暂存信息\n async getPauseSave() {\n const { data } = await getPauseSave({\n key: this.pageName,\n });\n\n if (JSON.stringify(data) === \"{}\") return;\n if (data.add_form) {\n this.add_form = data.add_form;\n if (data.add_form.customerId) {\n await this.getAllShippingAddress(data.add_form.customerId);\n }\n this.totalReduceMoney = data.totalReduceMoney || 0;\n this.saleOrderGoods = data.saleOrderGoods || [goodsItem];\n this.userCenterId = data.userCenterId || 0;\n }\n },\n // 获取配送方式\n async getAllDelivery() {\n const { data } = await getAllDelivery({\n page: 1,\n pageSize: 100,\n });\n\n this.deliveryType_list = data;\n const defaultType = data.find((item) => item.defaultStatus === 5);\n if (defaultType && !this.add_form.deliveryType) {\n this.add_form.deliveryType = defaultType.deliveryType;\n }\n },\n // 删除暂存信息\n async delPauseSave(type) {\n const data = delPauseSave({\n key: this.pageName,\n });\n\n if (type) {\n this.$message({\n type: \"success\",\n message: \"清除暂存成功\",\n });\n if (this.systemType === 2) {\n this.$closeCurrentGoEdit(\"/SingleStore/order/OrderList/waitAudit\");\n } else {\n this.$closeCurrentGoEdit(\"/order/manageO/orderQuery\");\n }\n }\n },\n // 提交\n subData() {\n if (this.add_form.deliveryType === 2 && !this.add_form.selfRuleId) {\n this.$message.warning(\"请选择自提点\");\n return;\n }\n this.$refs.add_form.validate(async (valid) => {\n if (valid) {\n const list = this.saleOrderGoods.filter((item) => item.skuId);\n // 验证抄码商品数量\n const isEqNum = list.every((item) => {\n if (item.isEq === 5 && item.isMaster === 5) {\n return item.otherNum > 0;\n } else {\n return true;\n }\n });\n if (!isEqNum) {\n this.$message.warning(\"抄码商品其他单位数量不能为0\");\n return;\n }\n // 验证商品数量\n const isBuyNum = list.every((item) => item.buyNum > 0);\n if (!isBuyNum) {\n this.$message.warning(\"请输入大于0的商品数量\");\n return;\n }\n // 验证商品单价\n const isSalePrice = list.every((item) => item.salePrice > 0);\n // if (!isSalePrice) {\n // this.$message.warning(\"商品单价不能为0\");\n // return;\n // }\n // 验证商品金额\n const isSubMoney = list.every((item) => item.subMoney > 0);\n // if (!isSubMoney) {\n // this.$message.warning(\"商品金额不能为0\");\n // return;\n // }\n const saleOrderGoods = list.map((item) => {\n if (!this.orderId) {\n delete item.inventory;\n delete item.enabledLadder;\n delete item.ladderPrice;\n }\n return item;\n });\n if (!saleOrderGoods.length) {\n this.$message.warning(\"请选择商品\");\n return;\n }\n\n if (\n this.add_form.receivedMoney > 0 &&\n !this.add_form.accountList.length\n ) {\n this.$message.warning(\"请选择结算账户\");\n return;\n }\n if (this.orderId) {\n await this.editOrder(saleOrderGoods);\n } else {\n await this.addOrder(saleOrderGoods);\n }\n }\n });\n },\n // 编辑订单\n async editOrder(saleOrderGoods) {\n if (this.add_form.particularsType) {\n this.add_form.deliveryType = this.add_form.particularsType;\n }\n const goodsData = saleOrderGoods.map((item) => {\n return {\n ...item,\n totalMoney: item.subMoney,\n price: item.salePrice,\n goodsCode: item.code,\n images: [item.goodsImages],\n };\n });\n // console.log(goodsData);\n // return;\n this.sub_loading = true;\n try {\n const data = await newOrderEdit(this.orderId, {\n ...this.order_detail,\n deliveryType: this.add_form.deliveryType,\n customerName: this.add_form.customerName,\n addressId: this.add_form.addressId,\n remark: this.add_form.remark,\n accountList: this.add_form.accountList,\n totalMoney: this.orderAmount,\n payMoney: this.payMoney,\n totalReduceMoney: this.totalReduceMoney || 0,\n receivedMoney: this.add_form.receivedMoney,\n currentAccountName: this.add_form.currentAccountName,\n userCenterId: this.userCenterId,\n customerId: this.add_form.customerId,\n selfRuleId: this.add_form.selfRuleId,\n selfRuleData: this.add_form.selfRuleData,\n goodsData: goodsData,\n payType: this.add_form.payType,\n });\n this.sub_loading = false;\n this.$message({\n type: \"success\",\n message: \"提交成功\",\n });\n if (this.systemType === 2) {\n this.$closeCurrentGoEdit(\"/SingleStore/order/OrderList/waitAudit\");\n } else {\n this.$closeCurrentGoEdit(\"/order/manageO/orderQuery\");\n }\n } finally {\n this.sub_loading = false;\n }\n },\n // 新增订单\n async addOrder(saleOrderGoods) {\n if (this.totalReduceMoney === \"\") {\n this.totalReduceMoney = 0;\n }\n if (this.add_form.particularsType) {\n this.add_form.deliveryType = this.add_form.particularsType;\n }\n let params = {\n deliveryType: this.add_form.deliveryType,\n customerName: this.add_form.customerName,\n addressId: this.add_form.addressId,\n remark: this.add_form.remark,\n accountList: this.add_form.accountList,\n currentAccountName: this.add_form.currentAccountName,\n receivedMoney: this.add_form.receivedMoney,\n lists: saleOrderGoods,\n totalMoney: this.orderAmount,\n payMoney: this.payMoney,\n totalReduceMoney: this.totalReduceMoney || 0,\n userCenterId: this.userCenterId,\n customerId: this.add_form.customerId,\n selfRuleId: this.add_form.selfRuleId,\n selfRuleData: this.add_form.selfRuleData,\n operatorName: this.userName,\n payType: this.add_form.payType,\n };\n this.sub_loading = true;\n try {\n const data = await newAddOrder(params);\n this.sub_loading = false;\n this.$message({\n type: \"success\",\n message: \"提交成功\",\n });\n await this.delPauseSave();\n\n if (this.systemType === 2) {\n this.$closeCurrentGoEdit(\"/SingleStore/order/OrderList/waitAudit\");\n } else {\n this.$closeCurrentGoEdit(\"/order/manageO/orderQuery\");\n }\n } finally {\n this.sub_loading = false;\n }\n },\n // 选择商品\n async selGoods(val) {\n if (val.length) {\n //抄码商品只能选择一个单位进行下单\n let arr = [];\n let isEqMore = false;\n\n for (let i in val) {\n const item = val[i];\n if (item.isEq === 5) {\n if (\n arr.find(\n (fin) => fin.id === item.id && fin.unitId !== item.unitId\n )\n ) {\n this.$message.warning(\n \"抄码商品只能选择一个单位进行下单,请重新勾选\"\n );\n isEqMore = true;\n break;\n } else {\n arr.push(item);\n }\n }\n }\n if (isEqMore) {\n return;\n }\n\n let goodsData = val.map((item) => {\n let salePrice = 0;\n if (item.enabledLadder) {\n salePrice = item.ladderPrice[0].price;\n } else {\n salePrice = item.salePrice;\n }\n return {\n goodsName: item.title,\n skuId: item.skuId,\n code: item.code,\n goodsId: item.id,\n buyNum: 1,\n otherNum: \"\",\n shopId: item.shopId,\n basicGoodsId: item.basicGoodsId,\n unitName: item.unitName,\n unitId: item.unitId,\n specGroup: item.specGroup,\n inventory: item.inventory,\n salePrice: salePrice,\n subMoney: item.salePrice,\n shopName: item.shopName,\n goodsImages: item.images[0],\n brandId: item.brandId,\n brandName: \"\",\n categoryPath: item.categoryPath,\n categoryName: item.categoryName,\n conversion: item.conversion,\n barCode: \"\",\n storageCode: \"\",\n warehouseId: item.warehouseId,\n originPrice: item.originPrice,\n specType: item.specType,\n enabledLadder: item.enabledLadder,\n ladderPrice: item.ladderPrice,\n supplierId: item.supplierId,\n supplierName: item.supplierName,\n isEq: item.isEq,\n isMaster: item.isMaster,\n isDistribution: item.isDistribution,\n merchantId: item.merchantId,\n };\n });\n const saleOrderGoods = this.$_common.deepClone(this.saleOrderGoods);\n goodsData = goodsData.filter((item) => {\n // 抄码商品只能选择一个单位进行下单\n let indexF = -1;\n if (item.isEq === 5) {\n indexF = saleOrderGoods.findIndex(\n (itemF) =>\n itemF.goodsId === item.goodsId && itemF.unitId !== item.unitId\n );\n }\n return indexF === -1;\n });\n\n const goodsArr = saleOrderGoods.filter((item) => item.skuId);\n const noSkuArr = saleOrderGoods.filter((item) => !item.skuId);\n this.saleOrderGoods = [...goodsArr, ...goodsData].concat(noSkuArr);\n }\n },\n // 选择赠品商品\n async giveawaySelGoods(val) {\n if (val.length) {\n const goodsData = val.map((item) => {\n let salePrice = 0;\n if (item.enabledLadder) {\n salePrice = item.ladderPrice[0].price;\n } else {\n salePrice = item.salePrice;\n }\n return {\n goodsName: item.title,\n skuId: item.skuId,\n code: item.code,\n goodsId: item.id,\n buyNum: 1,\n otherNum: \"\",\n shopId: item.shopId,\n basicGoodsId: item.basicGoodsId,\n unitName: item.unitName,\n specGroup: item.specGroup,\n inventory: item.inventory,\n salePrice: salePrice,\n subMoney: item.salePrice,\n shopName: item.shopName,\n goodsImages: item.images[0],\n brandId: item.brandId,\n brandName: \"\",\n categoryPath: item.categoryPath,\n categoryName: item.categoryName,\n conversion: item.conversion,\n barCode: \"\",\n storageCode: \"\",\n warehouseId: item.warehouseId,\n originPrice: item.originPrice,\n specType: item.specType,\n enabledLadder: item.enabledLadder,\n ladderPrice: item.ladderPrice,\n supplierId: item.supplierId,\n supplierName: item.supplierName,\n isEq: item.isEq,\n isDistribution: item.isDistribution,\n merchantId: item.merchantId,\n };\n });\n\n // this.saleOrderGoods = this.$_common.unique(\n // goodsData.concat(this.saleOrderGoods),\n // [\"goodsId\", \"skuId\"]\n // );\n const goodsArr = this.giveawayGoods.filter((item) => item.skuId);\n const noSkuArr = this.giveawayGoods.filter((item) => !item.skuId);\n // this.saleOrderGoods = this.$_common\n // .unique([...goodsArr, ...goodsData], [\"goodsId\", \"skuId\"])\n // .concat(noSkuArr);\n this.giveawayGoods = [...goodsArr, ...goodsData].concat(noSkuArr);\n }\n },\n\n // 修改购物车数量\n async updateBuyNum(index) {\n const target = this.$_common.deepClone(this.saleOrderGoods);\n let salePrice = target[index].salePrice;\n let inventory = target[index].inventory;\n let isDistribution = target[index].isDistribution;\n if (isDistribution === 4) {\n if (target[index].buyNum > inventory) {\n target[index].buyNum = target[index].inventory;\n }\n }\n // 根据阶梯价判断销售价\n if (target[index].enabledLadder) {\n let priceObj = target[index].ladderPrice.find(\n (item) =>\n target[index].buyNum >= item.from &&\n target[index].buyNum <= item.to\n );\n salePrice = priceObj ? priceObj.price : target[index].salePrice;\n }\n target[index].subMoney = this.$NP.times(\n salePrice,\n target[index].buyNum\n );\n target[index].salePrice = salePrice;\n console.log(target);\n this.saleOrderGoods = target;\n },\n // 修改购物车数量\n async giveawayUpdateBuyNum(index) {\n const target = this.$_common.deepClone(this.giveawayGoods);\n let salePrice = target[index].salePrice;\n let buyNum = target[index].buyNum;\n let inventory = target[index].inventory;\n let isDistribution = target[index].isDistribution;\n if (isDistribution === 4) {\n if (buyNum > inventory) {\n target[index].buyNum = target[index].inventory;\n }\n }\n // 根据阶梯价判断销售价\n if (target[index].enabledLadder) {\n let priceObj = target[index].ladderPrice.find(\n (item) => buyNum >= item.from && buyNum <= item.to\n );\n salePrice = priceObj ? priceObj.price : target[index].salePrice;\n }\n target[index].subMoney = this.$NP.times(salePrice, buyNum);\n target[index].salePrice = salePrice;\n this.giveawayGoods = target;\n },\n // 选择客户\n customerSel(val, list) {\n const row = list[0];\n this.add_form.customerId = row.id;\n this.account_shopId = row.shopId;\n this.userCenterId = row.userCenterId;\n this.add_form.addressId = \"\";\n this.address_name = \"\";\n this.saleOrderGoods = [this.$_common.deepClone(goodsItem)];\n if (this.add_form.deliveryType !== 2) {\n this.getAllShippingAddress(this.add_form.customerId);\n }\n },\n // 选择结算账户\n accountsel(row) {\n this.accountName = row[0].name;\n this.add_form.accountList = [\n {\n accountId: row[0].id,\n accountNumber: row[0].accountNumber,\n accountName: row[0].name,\n money: this.add_form.receivedMoney,\n discountMoney: 0,\n finalMoney: this.add_form.receivedMoney,\n payWay: this.payWay,\n remark: row[0].remark,\n },\n ];\n },\n // 获取客户收货地址列表\n async getAllShippingAddress(id) {\n const { data } = await getAllShippingAddress(id);\n if (data.length) {\n this.add_form.addressId = data[0].id;\n this.address_list = data.map((item) => {\n return {\n ...item,\n addressName:\n item.name +\n \" \" +\n item.mobile +\n \" \" +\n item.area.provinceName +\n \"-\" +\n item.area.cityName +\n \"-\" +\n item.area.districtName +\n \"-\" +\n item.address,\n };\n });\n this.address_name = this.address_list[0].addressName;\n } else {\n this.address_list = [];\n }\n },\n // 移出购物车\n async deleteRowGoods(index) {\n if (this.saleOrderGoods.length > 1) {\n this.saleOrderGoods.splice(index, 1);\n } else {\n this.$message.warning(\"至少保留一条商品\");\n }\n },\n // 移出赠品购物车\n async giveawayDeleteRowGoods(index) {\n this.giveawayGoods.splice(index, 1);\n },\n // 获取自提点\n async getAllSelfExpressRule() {\n const { data } = await getAllSelfExpressRule();\n this.self_express_list = data.map((item) => {\n return {\n ...item,\n addressName:\n item.setData.name +\n \" \" +\n item.setData.mobile +\n \" \" +\n item.setData.provinceName +\n \"-\" +\n item.setData.cityName +\n \"-\" +\n item.setData.districtName +\n \"-\" +\n item.setData.address,\n };\n });\n\n if (data.length) {\n this.add_form.selfRuleId = data[0].id;\n this.add_form.selfRuleData = data[0].setData;\n }\n },\n // 配送方式\n deliveryTypeChange(val) {\n this.payType_list.forEach((item) => {\n if (val === item.value) {\n this.order_detail.payTypeMsg = item.label;\n }\n });\n if (val === 1) {\n // const target = this.address_list[0];\n // this.add_form.addressId = target.id;\n this.getAllShippingAddress(this.add_form.customerId);\n } else if (val === 2) {\n if (this.self_express_list.length) {\n const target = this.self_express_list[0];\n this.add_form.selfRuleId = target.id;\n this.add_form.selfRuleData = target.setData;\n }\n }\n },\n addressChange(command) {\n this.add_form.addressId = command;\n this.address_name = this.address_list.find(\n (item) => item.id === command\n ).addressName;\n },\n closeDialog(formName) {\n this.regionName = [];\n this.$refs[formName].resetFields();\n },\n // 选择自提点\n selfRuleIdChange(val) {\n const data = this.self_express_list.find((item) => item.id === val);\n this.add_form.selfRuleData = data ? data.setData : {};\n },\n },\n };\n</script>\n<style scoped lang=\"scss\">\n .add-div {\n text-align: center;\n padding-top: 10px;\n }\n .price-div {\n padding-top: 10px;\n text-align: right;\n .de_val {\n color: $base-color-red;\n padding-right: 20px;\n }\n }\n</style>\n"]}]}
|